functions for the communication between SOLID slow control modules and Cprograms
sscm_comm.h
- Committer:
- wbeaumont
- Date:
- 2014-09-24
- Revision:
- 3:e9053e5e7175
- Parent:
- 2:1f9887337a1b
- Child:
- 4:66d1a4200f67
File content as of revision 3:e9053e5e7175:
#ifndef SSCM_COMM_H #define SSCM_COMM_H /* * v 1.01 inital published , tested * v 1.20 added devnr, added range checking * v 1.30 added \0 to cmd field */ #define SSCM_COMM_LIB_HDR_VERSION "1.30" #define MAXCMDLLENGTH 256 namespace sscm_comm { //public : enum ssc_dev{ ADC=1, DAC=2, TEMP=3}; typedef unsigned char u8; typedef unsigned int u32; 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]; // 5 char + \0 u8 ch; // 2 char 00 -- FF or register nr u32 datain; // 2 char 0000 -- FFFF u32 dataout;// 2 char 00 -- FF } 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); // 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 ); // check if ranges are correct // v 1.20 only check ADC devnr range broadcast not supported int check_ranges( ssc_cmd* sc ); } #endif