Solid experiment slow control.

Dependencies:   AD5384 SWSPI S_SCTRL_SMlib T_adt7320 adc_ad9249 mbed sscm_comm

Fork of sscm by wimbeaumont Project

Revision:
4:4f7a57fac239
Parent:
3:badf265a8898
Child:
5:1be2795321e2
--- a/main.cpp	Sun Oct 05 17:13:02 2014 +0000
+++ b/main.cpp	Tue Oct 07 20:37:37 2014 +0000
@@ -34,138 +34,272 @@
 #include "sscm_comm.h"
 using namespace sscm_comm ;
 
-
-
 Serial pc(USBTX,USBRX);
 
-
 char cmdin[MAXCMDLLENGTH];
 u8 cmdready;
 bool cmdstart=false;
 
-
 void pc_callback() {
     // Note: you need to actually read from the serial to clear the RX interrupt  
     static unsigned char cnt;
-    
     char c;
-        c=pc.getc();
-     if( c== CMDSTART && !cmdready ) { cnt=0; cmdstart=true; cmdready=false; }
-     if ( cmdstart) { 
-        cmdin[cnt]=c; cnt++;             
-        if (c== CMDSTOP ) { cmdready=true;} 
-     }   
-        
-    
-        
+    c = pc.getc();
+    if (c == CMDSTART && !cmdready) {
+        cnt = 0;
+        cmdstart = true;
+        cmdready = false;
+    }
+    if (cmdstart) { 
+        cmdin[cnt] = c;
+        cnt++;             
+        if (c == CMDSTOP) {
+            cmdready = true;
+        } 
+    }           
     //printf("%c:",c );    
  }
 
-
-
-
 int main() {
     pc.attach(pc_callback);
     ssc_cmd cmd;
-    bool heartbeat=true;
+    bool heartbeat = true;
     int i = 0;
-     HWlines  hwl ;
-    assignports( &hwl );
-    setdefault(hwl );
+    HWlines hwl;
+    assignports(&hwl);
+    setdefault(hwl);
     // reuse getVesion 
-    getVersion gv( VERSION, VERSION , __TIME__, __DATE__ );
+    getVersion gv(VERSION, VERSION, __TIME__, __DATE__ );
     getVersion gvc;
     getsscmVersion gvsscm;
-    SWSPI spi(hwl.mosi[0],hwl.miso[0],hwl.sclk[0]); // mosi, miso, sclk
-    SWSPI spi2(hwl.mosi[1],hwl.miso[1],hwl.sclk[1]); // mosi, miso, sclk
+    SWSPI spi(hwl.mosi[0], hwl.miso[0], hwl.sclk[0]); // mosi, miso, sclk
+    SWSPI spi2(hwl.mosi[1], hwl.miso[1], hwl.sclk[1]); // mosi, miso, sclk
   
-    SWSPI_BI spi_adc(hwl.msio[0],hwl.direction[0],hwl.stio_mo[0] ,hwl.sclk[0]); // msio, dir , sclk 
-    SWSPI_BI spi_adc2(hwl.msio[1],hwl.direction[1],hwl.stio_mo[1],hwl.sclk[1]); // msio, dir , sclk 
+    SWSPI_BI spi_adc(hwl.msio[0], hwl.direction[0], hwl.stio_mo[0], 
+                     hwl.sclk[0]); // msio, dir , sclk 
+    SWSPI_BI spi_adc2(hwl.msio[1], hwl.direction[1], hwl.stio_mo[1],
+                      hwl.sclk[1]); // msio, dir , sclk 
     // initalize ADC classes 
-    AD9249 adc[2][2]={AD9249( &spi_adc,hwl.csb1[0]), AD9249( &spi_adc,hwl.csb2[0]),
-                          AD9249( &spi_adc2,hwl.csb1[1]),  AD9249  ( &spi_adc2,hwl.csb2[1])};
-    AD5384 dac[2][1]={AD5384(&spi,hwl.dac_cs[0]), AD5384(&spi2,hwl.dac_cs[1]) };
+    AD9249 adc[2][2] = {AD9249(&spi_adc, hwl.csb1[0]),
+                        AD9249(&spi_adc, hwl.csb2[0]),
+                        AD9249(&spi_adc2, hwl.csb1[1]),
+                        AD9249(&spi_adc2, hwl.csb2[1])};
+    AD5384 dac[2][1] = {AD5384(&spi, hwl.dac_cs[0]),
+                        AD5384(&spi2, hwl.dac_cs[1])};
       
-    adt7320 temp[2][3]= { adt7320(&spi, hwl.t_cs[0]),adt7320(&spi, hwl.tc_cs1[0]),adt7320(&spi, hwl.tc_cs2[0]),
-                            adt7320(&spi2, hwl.t_cs[1]),adt7320(&spi2, hwl.tc_cs1[1]),adt7320(&spi2, hwl.tc_cs2[1]) };
-  
-    
-    
-      pc.printf("\nSOLID SLOW CONTROL for SM1 version %s %s %s  \n\r",VERSION,__DATE__,__TIME__ );
-    cmdready=false;
+    adt7320 temp[2][3] = {adt7320(&spi, hwl.t_cs[0]),
+                          adt7320(&spi, hwl.tc_cs1[0]),
+                          adt7320(&spi, hwl.tc_cs2[0]),
+                          adt7320(&spi2, hwl.t_cs[1]),
+                          adt7320(&spi2, hwl.tc_cs1[1]),
+                          adt7320(&spi2, hwl.tc_cs2[1])};
+                          
+    pc.printf("\nSOLID SLOW CONTROL for SM1 version %s %s %s  \n\r", VERSION,
+              __DATE__, __TIME__);
+    cmdready = false;
     while (1) {
         wait(0.5);
         char cmdoutstr[100];  
         if (cmdready) {
-            cmdready=false;
-            int decresult=decode_cmd(cmdin,&cmd);
-            printf("decode result = %d \n\r" ,decresult);
-            if( decresult){ cmd.status=abs(decresult);  encode_cmd ( cmdoutstr, &cmd);   continue; }           
-            
-            
+            cmdready = false;
+            int decresult = decode_cmd(cmdin, &cmd);
+            printf("decode result = %d \n\r", decresult);
+            if (decresult) {
+                cmd.status = abs(decresult); 
+                encode_cmd(cmdoutstr, &cmd);
+                continue;
+            }           
             u8 do8; // dataout
             u16 do16;
-            cmd.status=1; // use it for the moment as error handling , 
-            switch ( cmd.dev) {
-                
-                case ADC :   
-                    cmd.status=2;
-                    pc.printf("ADC cmd = %s \n\r",cmd.cmd);
-                    pc.printf("check now ranges %d %d  \n\r",cmd.con, cmd.devnr);
-                    if (!strcmp( cmd.cmd, "spa1")) { adc[cmd.con-1][cmd.devnr-1].setPattern1(cmd.datain);cmd.dataout=cmd.datain;cmd.status=0;}
-                    if (!strcmp( cmd.cmd, "spa2")) { adc[cmd.con-1][cmd.devnr-1].setPattern2(cmd.datain);cmd.dataout=cmd.datain;cmd.status=0;}
-                    if (!strcmp( cmd.cmd, "rpa1")) { adc[cmd.con-1][cmd.devnr-1].readPattern1(do16 ); cmd.dataout=do16; cmd.status=0; }
-                    if (!strcmp( cmd.cmd, "rpa2")) { adc[cmd.con-1][cmd.devnr-1].readPattern2(do16 ); cmd.dataout=do16; cmd.status=0; }
-                    if (!strcmp( cmd.cmd, "rr08")) {adc[cmd.con-1][cmd.devnr-1].readReg8(cmd.ch,do8 ); cmd.dataout=(u16)do8; cmd.status=0; }
-                    if (!strcmp( cmd.cmd, "rr16")) {adc[cmd.con-1][cmd.devnr-1].readReg16(cmd.ch,do16 ); cmd.dataout=(u32)do16;cmd.status=0;  }
-                    if (!strcmp( cmd.cmd, "sr08")) { adc[cmd.con-1][cmd.devnr-1].setReg8(cmd.ch, (u8)cmd.datain ); cmd.dataout=cmd.datain; cmd.status=0; }
-                    if (!strcmp( cmd.cmd, "sr16")) { adc[cmd.con-1][cmd.devnr-1].setReg16(cmd.ch, (u16)cmd.datain ); cmd.dataout=cmd.datain; cmd.status=0; }
-                    if (!strcmp( cmd.cmd, "ghrv")) {do16=adc[cmd.con-1][cmd.devnr-1].getHdrVersion();cmd.dataout=do16; cmd.status=0;}
-                    if (!strcmp( cmd.cmd, "gscv")) {do16=adc[cmd.con-1][cmd.devnr-1].getSrcVersion();cmd.dataout=do16; cmd.status=0;}
-                    if (!strcmp( cmd.cmd, "ini1")) { adc[cmd.con-1][cmd.devnr-1].init1();cmd.dataout=cmd.datain;cmd.status=0;}
-                    if (!strcmp( cmd.cmd, "ini2")) { adc[cmd.con-1][cmd.devnr-1].init2();cmd.dataout=cmd.datain;cmd.status=0;}
-                break;
+            cmd.status = 1; // use it for the moment as error handling , 
+            switch (cmd.dev) {
+                case ADC:   
+                    cmd.status = 2;
+                    pc.printf("ADC cmd = %s \n\r", cmd.cmd);
+                    pc.printf("check now ranges %d %d  \n\r", cmd.con,
+                              cmd.devnr);
+                    if (!strcmp(cmd.cmd, "spa1")) {
+                        adc[cmd.con-1][cmd.devnr-1].setPattern1(cmd.datain);
+                        cmd.dataout = cmd.datain;
+                        cmd.status = 0;
+                    }
+                    if (!strcmp(cmd.cmd, "spa2")) {
+                        adc[cmd.con-1][cmd.devnr-1].setPattern2(cmd.datain);
+                        cmd.dataout = cmd.datain;
+                        cmd.status = 0;
+                    }
+                    if (!strcmp(cmd.cmd, "rpa1")) {
+                        adc[cmd.con-1][cmd.devnr-1].readPattern1(do16);
+                        cmd.dataout=do16;
+                        cmd.status=0;
+                    }
+                    if (!strcmp(cmd.cmd, "rpa2")) {
+                        adc[cmd.con-1][cmd.devnr-1].readPattern2(do16);
+                        cmd.dataout=do16;
+                        cmd.status=0;
+                    }
+                    if (!strcmp(cmd.cmd, "rr08")) {
+                        adc[cmd.con-1][cmd.devnr-1].readReg8(cmd.ch, do8);
+                        cmd.dataout = (u16) do8;
+                        cmd.status=0;
+                    }
+                    if (!strcmp(cmd.cmd, "rr16")) {
+                        adc[cmd.con-1][cmd.devnr-1].readReg16(cmd.ch, do16);
+                        cmd.dataout= (u32) do16;
+                        cmd.status=0;
+                    }
+                    if (!strcmp(cmd.cmd, "sr08")) {
+                        adc[cmd.con-1][cmd.devnr-1].setReg8(cmd.ch, (u8) cmd.datain);
+                        cmd.dataout = cmd.datain;
+                        cmd.status = 0;
+                    }
+                    if (!strcmp(cmd.cmd, "sr16")) {
+                        adc[cmd.con-1][cmd.devnr-1].setReg16(cmd.ch, (u16) cmd.datain);
+                        cmd.dataout = cmd.datain;
+                        cmd.status=0;
+                    }
+                    if (!strcmp(cmd.cmd, "ghrv")) {
+                        do16 = adc[cmd.con-1][cmd.devnr-1].getHdrVersion();
+                        cmd.dataout = do16;
+                        cmd.status=0;
+                    }
+                    if (!strcmp(cmd.cmd, "gscv")) {
+                        do16 = adc[cmd.con-1][cmd.devnr-1].getSrcVersion();
+                        cmd.dataout = do16;
+                        cmd.status=0;
+                    }
+                    if (!strcmp(cmd.cmd, "ini1")) {
+                        adc[cmd.con-1][cmd.devnr-1].init1();
+                        cmd.dataout = cmd.datain;
+                        cmd.status = 0;
+                    }
+                    if (!strcmp(cmd.cmd, "ini2")) {
+                        adc[cmd.con-1][cmd.devnr-1].init2();
+                        cmd.dataout = cmd.datain;
+                        cmd.status = 0;
+                    }
+                    break;
                 case DAC :
+                    cmd.status = 2;
+                    if (!strcmp(cmd.cmd, "sdac")) {
+                        dac[cmd.con-1][cmd.devnr-1].set_dac(cmd.ch, cmd.datain);
+                        cmd.dataout = cmd.datain;
+                        cmd.status = 0;
+                    }
+                    if (!strcmp(cmd.cmd, "rdac")) {
+                        do16=dac[cmd.con-1][cmd.devnr-1].get_dac(cmd.ch);
+                        cmd.dataout=do16;
+                        cmd.status=0;
+                    }
+                    if (!strcmp(cmd.cmd, "ini1")) {
+                        dac[cmd.con-1][cmd.devnr-1].init1();
+                        cmd.dataout = cmd.datain;
+                        cmd.status = 0;
+                    }
+                    if (!strcmp(cmd.cmd, "ini2")) {
+                        dac[cmd.con-1][cmd.devnr-1].init2();
+                        cmd.dataout = cmd.datain;
+                        cmd.status = 0;
+                    }
+                    if (!strcmp(cmd.cmd, "srst")) {
+                        dac[cmd.con-1][cmd.devnr-1].soft_rst();
+                        cmd.dataout = cmd.datain;
+                        cmd.status = 0;
+                    }
+                    if (!strcmp(cmd.cmd, "ghrv")) {
+                        do16 = dac[cmd.con-1][cmd.devnr-1].getHdrVersion();
+                        cmd.dataout = do16;
+                        cmd.status = 0;
+                    }
+                    if (!strcmp(cmd.cmd, "gscv")) {
+                        do16 = dac[cmd.con-1][cmd.devnr-1].getSrcVersion();
+                        cmd.dataout = do16;
+                        cmd.status = 0;
+                    }
+                    break; 
+                case TEMP:
                     cmd.status=2;
-                    if (!strcmp( cmd.cmd, "sdac")) { dac[cmd.con-1][cmd.devnr-1].set_dac(cmd.ch,cmd.datain);cmd.dataout=cmd.datain;cmd.status=0;}
-                    if (!strcmp( cmd.cmd, "rdac")) { do16=dac[cmd.con-1][cmd.devnr-1].get_dac(cmd.ch);cmd.dataout=do16;cmd.status=0;}
-                    if (!strcmp( cmd.cmd, "ini1")) { dac[cmd.con-1][cmd.devnr-1].init1();cmd.dataout=cmd.datain;cmd.status=0;}
-                    if (!strcmp( cmd.cmd, "ini2")) { dac[cmd.con-1][cmd.devnr-1].init2();cmd.dataout=cmd.datain;cmd.status=0;}
-                    if (!strcmp( cmd.cmd, "srst")) { dac[cmd.con-1][cmd.devnr-1].soft_rst();cmd.dataout=cmd.datain;cmd.status=0;}
-                    if (!strcmp( cmd.cmd, "ghrv")) {do16=dac[cmd.con-1][cmd.devnr-1].getHdrVersion();cmd.dataout=do16; cmd.status=0;}
-                    if (!strcmp( cmd.cmd, "gscv")) {do16=dac[cmd.con-1][cmd.devnr-1].getSrcVersion();cmd.dataout=do16; cmd.status=0;}
-                    
-                break; 
-                case TEMP : cmd.status=2;
-                        if (!strcmp( cmd.cmd, "rtpd")){ do16=temp[cmd.con-1][cmd.devnr-1].get_T();cmd.dataout=do16;cmd.status=0;}
-                        if (!strcmp( cmd.cmd, "gtid")){ do8=temp[cmd.con-1][cmd.devnr-1].getId();cmd.dataout=do8;cmd.status=0;}
-                        if (!strcmp( cmd.cmd, "rtcr")){ do16=temp[cmd.con-1][cmd.devnr-1].get_TcritSP();cmd.dataout=do16;cmd.status=0;}
-                        if (!strcmp( cmd.cmd, "stcr")){ temp[cmd.con-1][cmd.devnr-1].set_TcritSP(cmd.datain);cmd.dataout=cmd.datain;cmd.status=0;}
-                        if (!strcmp( cmd.cmd, "ghrv")) {do16=temp[cmd.con-1][cmd.devnr-1].getHdrVersion();cmd.dataout=do16; cmd.status=0;}
-                        if (!strcmp( cmd.cmd, "gscv")) {do16=temp[cmd.con-1][cmd.devnr-1].getSrcVersion();cmd.dataout=do16; cmd.status=0;}
-                        if (!strcmp( cmd.cmd, "ini1")) { temp[cmd.con-1][cmd.devnr-1].init1();cmd.dataout=cmd.datain;cmd.status=0;}
-                        if (!strcmp( cmd.cmd, "ini2")) { temp[cmd.con-1][cmd.devnr-1].init2();cmd.dataout=cmd.datain;cmd.status=0;}
-                break;
+                    if (!strcmp(cmd.cmd, "rtpd")) {
+                        do16 = temp[cmd.con-1][cmd.devnr-1].get_T();
+                        cmd.dataout = do16;
+                        cmd.status = 0;
+                    }
+                    if (!strcmp(cmd.cmd, "gtid")) {
+                        do8 = temp[cmd.con-1][cmd.devnr-1].getId();
+                        cmd.dataout = do8;
+                        cmd.status = 0;
+                    }
+                    if (!strcmp(cmd.cmd, "rtcr")) {
+                        do16 = temp[cmd.con-1][cmd.devnr-1].get_TcritSP();
+                        cmd.dataout = do16;
+                        cmd.status = 0;
+                    }
+                    if (!strcmp(cmd.cmd, "stcr")) {
+                        temp[cmd.con-1][cmd.devnr-1].set_TcritSP(cmd.datain);
+                        cmd.dataout = cmd.datain;
+                        cmd.status = 0;
+                    }
+                    if (!strcmp(cmd.cmd, "ghrv")) {
+                        do16 = temp[cmd.con-1][cmd.devnr-1].getHdrVersion();
+                        cmd.dataout = do16;
+                        cmd.status=0;
+                    }
+                    if (!strcmp( cmd.cmd, "gscv")) {
+                        do16 = temp[cmd.con-1][cmd.devnr-1].getSrcVersion();
+                        cmd.dataout = do16;
+                        cmd.status=0;
+                    }
+                    if (!strcmp(cmd.cmd, "ini1")) {
+                        temp[cmd.con-1][cmd.devnr-1].init1();
+                        cmd.dataout = cmd.datain;
+                        cmd.status = 0;
+                    }
+                    if (!strcmp(cmd.cmd, "ini2")) {
+                        temp[cmd.con-1][cmd.devnr-1].init2();
+                        cmd.dataout = cmd.datain;
+                        cmd.status = 0;
+                    }
+                    break;
                 case SSCM: 
+                    cmd.status = 2;
+                    if (!strcmp(cmd.cmd, "t_hb")) {
+                        heartbeat = !heartbeat;
                         cmd.status=2;
-                        if (!strcmp( cmd.cmd, "t_hb")) { heartbeat=!heartbeat;cmd.status=2;}
-                        if (!strcmp( cmd.cmd, "gmpv")) {do16=gv.getHdrVersion();cmd.dataout=do16; cmd.status=0;}
-                        
-                        if (!strcmp( cmd.cmd, "gvhv")) {do16=gvc.getHdrVersion();cmd.dataout=do16; cmd.status=0;}
-                        if (!strcmp( cmd.cmd, "msnr")) {do8=get_serialnr(&hwl);cmd.dataout=(u16)do8; cmd.status=0;}
-                        if (!strcmp( cmd.cmd, "gchv")) {do16=gvsscm.getHdrVersion();cmd.dataout=do16; cmd.status=0;}
-                        if (!strcmp( cmd.cmd, "gcsv")) {do16=gvsscm.getSrcVersion();cmd.dataout=do16; cmd.status=0;}
-                      
-                break;
-             default : cmd.status=1;
+                    }
+                    if (!strcmp(cmd.cmd, "gmpv")) {
+                        do16 = gv.getHdrVersion();
+                        cmd.dataout = do16;
+                        cmd.status=0;
+                    }        
+                    if (!strcmp(cmd.cmd, "gvhv")) {
+                        do16 = gvc.getHdrVersion();
+                        cmd.dataout = do16;
+                        cmd.status = 0;
+                    }
+                    if (!strcmp(cmd.cmd, "msnr")) {
+                        do8 = get_serialnr(&hwl);
+                        cmd.dataout = (u16) do8;
+                        cmd.status = 0;
+                    }
+                    if (!strcmp(cmd.cmd, "gchv")) {
+                        do16 = gvsscm.getHdrVersion();
+                        cmd.dataout = do16;
+                        cmd.status = 0;
+                    }
+                    if (!strcmp(cmd.cmd, "gcsv")) {
+                        do16 = gvsscm.getSrcVersion();
+                        cmd.dataout = do16;
+                        cmd.status = 0;
+                    }          
+                    break;
+             default:
+                cmd.status=1;
              break;
-        } // end switch 
-         encode_cmd ( cmdoutstr, &cmd);  
-         pc.printf( "%s", cmdoutstr);
-        }//end  if cmdready 
-        else {
-             if ( heartbeat) printf( "%03d>%s\n\r",(i++ % 1000),cmdin);
-            }
+            } // end switch 
+            encode_cmd(cmdoutstr, &cmd);  
+            pc.printf("%s", cmdoutstr);
+        } else {//end  if cmdready 
+             if (heartbeat) printf("%03d>%s\n\r", (i++ % 1000), cmdin);
+        }
     }// end while 
-   
 }