You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
2.5 KiB
C
138 lines
2.5 KiB
C
#ifndef _SHM_H
|
|
#define _SHM_H
|
|
|
|
|
|
#define TYPE_MX 1
|
|
#define TYPE_ST 2
|
|
#define TYPE_SE 3
|
|
#define TYPE_SG 4
|
|
#define TYPE_SGCB 5
|
|
#define TYPE_CO 6
|
|
#define TYPE_SP 7
|
|
#define TYPE_SV 8
|
|
|
|
#define CMD_WR_MX 1
|
|
#define CMD_WR_ST 2
|
|
#define CMD_WR_SE 3
|
|
#define CMD_WR_SG 4
|
|
#define CMD_WR_SGCB 5
|
|
#define CMD_WR_CO 6
|
|
#define CMD_WR_SP 7
|
|
#define CMD_WR_SV 8
|
|
|
|
typedef union
|
|
{
|
|
float f;
|
|
int i;
|
|
char stVal;
|
|
void *ptr;
|
|
}GEN_VAL;
|
|
|
|
typedef struct{
|
|
unsigned int secs;
|
|
unsigned int ms;
|
|
}TimeStamp;
|
|
|
|
|
|
typedef struct utc_time_tag
|
|
{
|
|
unsigned int secs; // Number of seconds since January 1, 1970
|
|
unsigned int fraction; // Fraction of a second
|
|
unsigned int qflags; // Quality flags, 8 least-significant bits only
|
|
} UTC_TIME;
|
|
|
|
|
|
typedef struct{
|
|
GEN_VAL v;
|
|
int q;
|
|
TimeStamp t;
|
|
//#ifdef SUB_ENABLE
|
|
int subEna;
|
|
GEN_VAL subVal;
|
|
int subQ;
|
|
//#endif
|
|
}SCL_MV; //
|
|
|
|
|
|
typedef struct{
|
|
GEN_VAL v;
|
|
int q;
|
|
TimeStamp t;
|
|
}USR_MV; //
|
|
|
|
|
|
typedef struct{
|
|
GEN_VAL ctlVal;
|
|
char ctlNum;
|
|
TimeStamp t;
|
|
char Test;
|
|
char Check;
|
|
int valType;
|
|
}SCL_CO;
|
|
|
|
typedef struct
|
|
{
|
|
unsigned char NumOfSG; //1-n
|
|
unsigned char ActSG; //1-n
|
|
unsigned char EditSG; //0-n,0
|
|
unsigned char CnfEdit;
|
|
UTC_TIME LActTm;// TimeStamp
|
|
}SGCB_CTRL;
|
|
|
|
|
|
typedef union
|
|
{
|
|
USR_MV ana_mv;
|
|
SCL_MV scl_mv;
|
|
SCL_CO scl_co;
|
|
SGCB_CTRL sgcb_ctrl;
|
|
}SCL_VAL;
|
|
|
|
|
|
typedef struct{
|
|
int type;
|
|
int grp;
|
|
int num;
|
|
int ofs;
|
|
GEN_VAL v;
|
|
}SCL_DATA_SPEC;
|
|
|
|
typedef struct{
|
|
int cmd;
|
|
union
|
|
{
|
|
SCL_DATA_SPEC data_spec;
|
|
}u;
|
|
}SCL_MSG_TYPE;
|
|
|
|
|
|
int start_scl_mem();
|
|
int stop_scl_mem();
|
|
void lock_scl_mem();
|
|
void unlock_scl_mem();
|
|
|
|
|
|
char *put_scl_data(int grp,int index,void *ptr,int num_bytes);
|
|
char *get_scl_data(int grp,int index,void *ptr,int num_bytes);
|
|
|
|
SCL_VAL* put_mv_data(int grp,int index,USR_MV *usr_mv,int num_do);
|
|
SCL_VAL* get_mv_data(int grp,int index,USR_MV *usr_data,int num_do);
|
|
SCL_VAL *put_do_data(int grp,int index,SCL_VAL *scl_do,int num_of_do);
|
|
SCL_VAL *get_do_data(int grp,int index,SCL_VAL *scl_do,int num_of_do);
|
|
|
|
SGCB_CTRL* get_sgcb_data(int index,SGCB_CTRL *sgcb);
|
|
SGCB_CTRL* put_sgcb_data(int index,SGCB_CTRL *sgcb);
|
|
char *get_sg_data(int grp,int index,char *ptr,int num_bytes);
|
|
char *put_sg_data(int grp,int index,char *ptr,int num_bytes);
|
|
char *get_se_data(int grp,int index,char *ptr,int num_bytes);
|
|
char *put_se_data(int grp,int index,char *ptr,int num_bytes);
|
|
|
|
int get_usr_data(int offs,void *ptr,int num_bytes);
|
|
int put_usr_data(int offs,void *ptr,int num_bytes);
|
|
|
|
int write_scl_msg(int cmd,SCL_DATA_SPEC *data_spec);
|
|
|
|
|
|
#endif
|
|
|