Communication for solid slow control.

Fork of sscm_comm by wimbeaumont Project

sscm_comm.h

Committer:
wbeaumont
Date:
2014-09-24
Revision:
2:1f9887337a1b
Parent:
1:288db0531b1f
Child:
3:e9053e5e7175

File content as of revision 2:1f9887337a1b:

#ifndef SSCM_COMM_H
#define SSCM_COMM_H
/*
 *   v 1.01 inital published , tested
 8   v 1.20 added devnr,  added range checking 
 */

#define SSCM_COMM_LIB_HDR_VERSION "1.20"


#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[4]; // 3 char 
        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