Communication for solid slow control.
Fork of sscm_comm by
Revision 3:e9053e5e7175, committed 2014-09-24
- Comitter:
- wbeaumont
- Date:
- Wed Sep 24 10:29:42 2014 +0000
- Parent:
- 2:1f9887337a1b
- Child:
- 4:66d1a4200f67
- Commit message:
- added /0 to cmd , check connector range
Changed in this revision
sscm_comm.cpp | Show annotated file Show diff for this revision Revisions of this file |
sscm_comm.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/sscm_comm.cpp Wed Sep 24 09:12:42 2014 +0000 +++ b/sscm_comm.cpp Wed Sep 24 10:29:42 2014 +0000 @@ -8,7 +8,7 @@ #include "sscm_comm.h" -#define SSCM_LIB_SRC_VERSION "1.20" +#define SSCM_LIB_SRC_VERSION "1.31" using namespace sscm_comm; @@ -30,7 +30,7 @@ if( input[ic++] != SEP ) rv= -9; else { - sc->cmd[0]=input[ic++];sc->cmd[1]=input[ic++];sc->cmd[2]=input[ic++];sc->cmd[3]=input[ic++]; + sc->cmd[0]=input[ic++];sc->cmd[1]=input[ic++];sc->cmd[2]=input[ic++];sc->cmd[3]=input[ic++];sc->cmd[4]='\0'; if( input[ic++] != SEP ) rv= -4; else { part[0]=input[ic++];part[1]=input[ic++];part[2]=0;sc->ch = (u8)strtol(part, NULL, 16); @@ -54,18 +54,19 @@ int rv =1; // no check done // devnr check + if ( sc->con <1 || sc->con >2 ){ rv= -43; goto RVOUT;} switch ( sc->dev) { case ADC : if(sc->devnr < 1 || sc->devnr > 2 ) rv=-23; break; default : rv=1; } - return rv; +RVOUT: return rv; } void sscm_comm::encode_cmd ( char *output , ssc_cmd *sc) { - sprintf(output,"%c%02X%c%02X%c%02X%c%02X%c%c%c%c%c%c%02X%c%04X%c%04X%c%c", + sprintf(output,"%c%02X%c%02X%c%02X%c%02X%c%c%c%c%c%c%02X%c%04X%c%04X%c%c\0", CMDSTART,sc->module,SEP,sc->con,SEP,sc->dev,SEP,sc->devnr,SEP,sc->cmd[0],sc->cmd[1],sc->cmd[2],sc->cmd[3], SEP,sc->ch,SEP,sc->datain,SEP,sc->dataout,SEP,CMDSTOP); }
--- a/sscm_comm.h Wed Sep 24 09:12:42 2014 +0000 +++ b/sscm_comm.h Wed Sep 24 10:29:42 2014 +0000 @@ -2,10 +2,11 @@ #define SSCM_COMM_H /* * v 1.01 inital published , tested - 8 v 1.20 added devnr, added range checking + * v 1.20 added devnr, added range checking + * v 1.30 added \0 to cmd field */ -#define SSCM_COMM_LIB_HDR_VERSION "1.20" +#define SSCM_COMM_LIB_HDR_VERSION "1.30" #define MAXCMDLLENGTH 256 @@ -20,7 +21,7 @@ u8 con; // 1 char 0--2 ssc_dev dev; // 2 char 01--03 u8 devnr; - char cmd[4]; // 3 char + 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