Communication for solid slow control.

Fork of sscm_comm by wimbeaumont Project

sscm_comm.h

Committer:
wbeaumont
Date:
2014-10-02
Revision:
5:357fa8928d63
Parent:
4:66d1a4200f67
Child:
6:d9a96735d0fb

File content as of revision 5:357fa8928d63:

#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
 *  v 1.40 added status in cmd , added SSCM as device 
 *  v 2.00 corrected the type for data in data out
 */

#define SSCM_COMM_LIB_HDR_VERSION "2.00"


#define MAXCMDLLENGTH 256
namespace sscm_comm {
//public :    

enum ssc_dev{ ADC=1, DAC=2, TEMP=3,SSCCM=4};
typedef  unsigned char u8;
typedef  unsigned short u16;
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 
        u16 datain; // 2 char 0000 -- FFFF
        u16 dataout;// 2 char 00 -- FF
        u8 status;
    } 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