Communication for solid slow control.
Fork of sscm_comm by
Diff: sscm_comm.cpp
- Revision:
- 0:2afae79ea9ca
- Child:
- 1:288db0531b1f
diff -r 000000000000 -r 2afae79ea9ca sscm_comm.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sscm_comm.cpp Tue Sep 23 19:21:20 2014 +0000 @@ -0,0 +1,50 @@ +#include sscm_comm.h + + +#define SSCM_LIB_SRC_VERSION "1.00" + +using namespace sscm_comm + +int sscm_comm::decode_cmd(char* input, ssc_cmd * sc){ +char part[6]; +int rv=0; + +part[0]=input[0];part[1]=input[1];part[2]=0;sc->module = (u8)strtol(part, NULL, 16); +if( input[3] != SEP ) rv =-1; +else { + part[0]=input[4];part[1]=input[5];part[2]=0;sc->con = (u8)strtol(part, NULL, 16); + if( input[6] != SEP ) rv= -2; + else { + part[0]=input[7];part[1]=input[8];part[2]=0;sc->dev = (ssc_dev)strtol(part, NULL, 16); + if( input[9] != SEP ) rv= -3; + else { + sc->cmd[0]=input[10];sc->cmd[1]=input[11];sc->cmd[2]=input[12];sc->cmd[3]=input[13]; + if( input[14] != SEP ) rv= -4; + else { + part[0]=input[15];part[1]=input[16];part[2]=0;sc->ch = (u8)strtol(part, NULL, 16); + if( input[17] != SEP ) rv= -5; + else{ + part[0]=input[18];part[1]=input[19];part[2]=input[20];part[3]=input[21];part[4]=0;sc->datain = (u32)strtol(part, NULL, 16); + if( input[22] != SEP ) rv= -6; + else { + part[0]=input[23];part[1]=input[24];part[2]=input[25];part[3]=input[26];part[4]=0;sc->dataout = (u32)strtol(part, NULL, 16); + if( input[26] != SEP ) rv= -7; + else rv=0; + + } } } } }} +for( int i=0;i<27;i++) input[i]=0; + +return rv; +} + +void sscm_comm::encode_cmd ( char *output , ssc_cmd *sc) { + sprintf(output,"%c%02X%c%02X%c%02X%c%c%c%c%c%c%02X%c%04X%c%04X%c%c", + CMDSTART,sc->module,SEP,sc->con,SEP,sc->dev,SEP,sc->cmd[0],sc->cmd[1],sc->cmd[2],sc->cmd[3], + SEP,sc->ch,SEP,sc->datain,SEP,sc->dataout,SEP,CMDSTOP); + } + + + void sscm_comm::getmodulecordinate(u8 plane, u8& modulenr, u8& connr ,u8& serialnr ){ + // to be implemented + +}