void m_out(String s) { printf("%s\n",s.c_str()); } int sleep_command(String s) { int i=0; while (newcommand) { sleep_us(10); i++; if (i>20000) { m_out("Newcommand error "+s); return 1; } } return 0; } void set_newcommand(void) { spin_lock_unsafe_blocking(spinlock_count); newcommand=true; spin_unlock_unsafe(spinlock_count); } void interpretlast(void) { int i=0; int j; int manual_s; if (sleep_command("interpret")==1) return; command=lastp.param; parameter=lastp.paramdata; switch(lastp.param){ case SMANUAL: manual_s=0; if (lastp.paramdata==1) manual_s=1; if (manual_s==0) { started=1; lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" "); } parameter=lastp.paramdata; set_newcommand(); break; case SCURRENT: set_newcommand(); break; case SCURRENT_HALL: set_newcommand(); break; case SCLEAR_C: gpio_put(ZERO_Q, 0); sleep_ms(100); gpio_put(ZERO_Q, 1); sleep_ms(100); set_newcommand(); break; case SOFFSET: set_newcommand(); break; case SOFFSETZERO: set_newcommand(); break; case SFLUX_DATA: gpio_put(ZERO_Q, 0); sleep_ms(1000); gpio_put(ZERO_Q, 1); //sleep_ms(10); set_newcommand(); break; case SFLUX12: set_newcommand(); break; case SGETDATA: senddata(); break; case SSAVEPARAM: save_params(); break; case SDAGAIN_0: da_gain[0]=lastp.paramdata; break; case SDAZERO_0: da_zero[0]=lastp.paramdata; break; case SDA_0: r_da(0,lastp.paramdata); break; case SDAGAIN_1: da_gain[1]=lastp.paramdata; break; case SDAZERO_1: da_zero[1]=lastp.paramdata; break; case SDA_1: r_da(1,lastp.paramdata); break; case SDAGAIN_2: da_gain[2]=lastp.paramdata; break; case SDAZERO_2: da_zero[2]=lastp.paramdata; break; case SDA_2: r_da(2,lastp.paramdata); break; case SDAGAIN_3: da_gain[3]=lastp.paramdata; break; case SDAZERO_3: da_zero[3]=lastp.paramdata; break; case SDA_3: r_da(3,lastp.paramdata); break; case SADGAIN_0: ad_gain[0]=lastp.paramdata; break; case SADZERO_0: ad_zero[0]=lastp.paramdata; break; case SADGAIN_1: ad_gain[1]=lastp.paramdata; break; case SADZERO_1: ad_zero[1]=lastp.paramdata; break; case SADGAIN_2: ad_gain[2]=lastp.paramdata; break; case SADZERO_2: ad_zero[2]=lastp.paramdata; break; case SADGAIN_3: ad_gain[3]=lastp.paramdata; break; case SADZERO_3: ad_zero[3]=lastp.paramdata; break; case SCALIBRATION: calibration_b=1; calibration_phase=int(lastp.paramdata); if (calibration_phase!=0) calibration_manual=1; break; case SHELP: Serial.println("GETDATA: Get data"); Serial.println("MANUAL 1/0: Set manual/remote control"), Serial.println("CURRENT current, Set current"); Serial.println("CURRENT_HALL current_hall, Set current hall"); Serial.println("CLEAR_C , Clear Int. C"); break; case STEST: if (lastp.paramdata==1) testb=true; else testb=false; break; case SID: if (device==1) Serial.println("Suscept1"); else Serial.println("Suscept2"); break; case SHRESET: softReset(); break; case SDEVICE: if (lastp.paramdata==2) device=(int) lastp.paramdata; else device=1; save_params(); break; default: printf("%d ",lastp.param); //message_out(); lastp.param=SILLEGAL; break; } return; }