Communication for solid slow control.

Fork of sscm_comm by wimbeaumont Project

Files at this revision

API Documentation at this revision

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