Communication for solid slow control.
Fork of sscm_comm by
Diff: sscm_comm.h
- Revision:
- 9:a68c382dea12
- Parent:
- 7:6d3c421026df
diff -r 6d3c421026df -r a68c382dea12 sscm_comm.h --- a/sscm_comm.h Sun Oct 05 17:11:51 2014 +0000 +++ b/sscm_comm.h Tue Oct 07 22:51:01 2014 +0000 @@ -18,66 +18,70 @@ namespace sscm_comm { -//public : - -enum ssc_dev{ ADC=1, DAC=2, TEMP=3,SSCM=4}; -typedef unsigned char u8; -typedef unsigned short u16; -typedef struct { - u8 module; // 1 char 0 --F - u8 con; // 1 char 0--2 - ssc_dev dev; // 2 char 01--03 - u8 devnr; - char cmd[5]; // 4 char + \0 - u8 ch; // identify the channel or register address for the firmware - u8 x; // char 00 -- 32 x coordinate MPPC not used for the firmware ,so not coded in the string - u8 y; // y coordinate MPPC not used for the communication to the SSCM y coordinate MPPC - u16 datain; // 2 char 0000 -- FFFF - u16 dataout;// 2 char 00 -- FF - u8 status; + //public : + + enum ssc_dev{ + ADC=1, + DAC=2, + TEMP=3, + SSCM=4 + }; + typedef unsigned char u8; + typedef unsigned short u16; + typedef struct { + u8 module; // 1 char 0 --F + u8 con; // 1 char 0--2 + ssc_dev dev; // 2 char 01--03 + u8 devnr; + char cmd[5]; // 4 char + \0 + u8 ch; // identify the channel or register address for the firmware + u8 x; // char 00 -- 32 x coordinate MPPC not used for the firmware ,so not coded in the string + u8 y; // y coordinate MPPC not used for the communication to the SSCM y coordinate MPPC + u16 datain; // 2 char 0000 -- FFFF + u16 dataout;// 2 char 00 -- FF + u8 status; } ssc_cmd; - -const char CMDSTART= '$'; -const char CMDSTOP= '#'; -const char SEP= ';'; - -// decode the string sent to the uP to the original cmd structure , for the moment the input string is cleared -// param input : input string at least char [30] -// param ssc_cmd the cmd structure to be filled -int decode_cmd(char* input, ssc_cmd * sc); - - -// param output the string to be sent to the SSCM -// param sc the cmd to be sent to the SSCM -void encode_cmd ( char *output , ssc_cmd *sc); + + const char CMDSTART= '$'; + const char CMDSTOP= '#'; + const char SEP= ';'; + + // decode the string sent to the uP to the original cmd structure , for the moment the input string is cleared + // param input : input string at least char [30] + // param ssc_cmd the cmd structure to be filled + int decode_cmd(char * input, ssc_cmd * sc); + + // param output the string to be sent to the SSCM + // param sc the cmd to be sent to the SSCM + void encode_cmd(char * output, ssc_cmd *sc); + + // to get info of the module nr , connector serial number for a given plane + // param plane plane nr for which the cmd coordinates has to be known + // param modulenr the module nr ( first nr in the cmd structure + // param connr connector number ( 1 or 2) + // param serailnr the serial nr of the board ( can be used for verification) . -// to get info of the module nr , connector serial number for a given plane -// param plane plane nr for which the cmd coordinates has to be known -// param modulenr the module nr ( first nr in the cmd structure -// param connr connector number ( 1 or 2) -// param serailnr the serial nr of the board ( can be used for verification) . - -void getmodulecordinate(u8 plane, u8& modulenr, u8& connr ,u8& serialnr ); -void get_mppc_dac_chnr(u8 plane, u8 x , u8 y, u8& ch,u8& modulenr, u8& connr ,u8&dacch, u8& serialnr ); -void get_mppc_adc_chnr(u8 plane, u8 x , u8 y, u8& ch,u8& modulenr, u8& connr , u8& adcdevnr, u8& adcchnr , u8& serialnr ); -// check if ranges are correct -// v 1.20 only check ADC devnr range broadcast not supported -int check_ranges( ssc_cmd* sc ); - -// returns the version and sub version nr. -// param hexversion : 16 bits MSB byt contains the version nr, LSB byte contains the subversion nr (hex) -// param version : will be set to the version -// param subversion : will be set to the subversion -void get_dec_version( u16 hexversion , u8& version, u8& subversion); - -// reuse vesion class - -class getsscmVersion: - public getVersion - - { - public: getsscmVersion() ; -}; + void getmodulecordinate(u8 plane, u8& modulenr, u8& connr, u8& serialnr); + void get_mppc_dac_chnr(u8 plane, u8 x, u8 y, u8& ch, u8& modulenr, + u8& connr, u8&dacch, u8& serialnr); + void get_mppc_adc_chnr(u8 plane, u8 x, u8 y, u8& ch, u8& modulenr, + u8& connr, u8& adcdevnr, u8& adcchnr, u8& serialnr); + // check if ranges are correct + // v 1.20 only check ADC devnr range broadcast not supported + int check_ranges(ssc_cmd* sc); + + // returns the version and sub version nr. + // param hexversion : 16 bits MSB byt contains the version nr, LSB byte contains the subversion nr (hex) + // param version : will be set to the version + // param subversion : will be set to the subversion + void get_dec_version(u16 hexversion, u8& version, u8& subversion); + + // reuse vesion class + + class getsscmVersion: public getVersion { + public: + getsscmVersion(); + }; }; #endif