ProtocolParser/app_source/include/protocol_data.h

335 lines
6.6 KiB
C

#ifndef PROTOCOL_DATA_H
#define PROTOCOL_DATA_H
#include <QTcpSocket>
#include "typedef.h"
typedef struct SM2_KEY
{
uint8_t pub_key[129]={0};
uint8_t pri_key[65]={0};
} SM2_key;
typedef struct SM2_KEY_EXCHANGE
{
uint8_t session_key[17]={0};
uint8_t peer_pub_key[65]={0};
} SM2_keyexc;
typedef struct data_frame
{
u16 head;
u8 type;
u8 use_crc;
u16 data_length;
u16 crc;
u8 data[1024];
} data_frame;
#define DATA_FRAME_PREFIX_LEN (sizeof(u16)*3+sizeof(u8)*2)
#define DATA_FRAME_HEAD 0xAAAA
#define new_data_frame(num) \
struct \
{ \
u16 head; \
u8 type; \
u8 use_crc; \
u16 data_length; \
u16 crc; \
u8 data[num]; \
}
typedef struct digi_env
{
u16 head;
u16 length;
u8 crypted_session_key[112];
u8 crypted_data[1024];
} digi_env;
#define SM4_PADDING_LEN sizeof(u8)*16
#define DIGI_ENV_PREFIX_LEN sizeof(u16)*2
#define DIGI_ENV_SESSION_KEY_LEN sizeof(u8)*112
#define DIGI_ENV_HEAD 0xAAAB
#define new_digi_env(num) \
struct \
{ \
u16 head; \
u16 length; \
u8 crypted_session_key[112]; \
u8 crypted_data[num]; \
}
typedef struct ssl_frame
{
u16 head;
u16 length;
u8 data[1024];
} ssl_frame;
#define SSL_FRAME_PREFIX_LEN sizeof(u16)*2
#define SSL_FRAME_HEAD 0xAAAC
#define new_ssl_frame(num) \
struct \
{ \
u16 head; \
u16 length; \
u8 data[num]; \
}
typedef struct base_frame
{
u16 head;
u16 ori_addr;
u16 des_addr;
u16 node_addr;
u16 id;
u16 length;
u8 reset_num;
u8 rand_num;
u8 data[2048];
} base_frame;
#define BASE_FRAME_PREFIX_LEN (sizeof(u8)*2+sizeof(u16)*6)
#define BASE_FRAME_HEAD 0xAAAD
#define BASE_FRAME_RESET_NUM 10000
#define new_base_frame(num) \
struct \
{ \
u16 head; \
u16 ori_addr; \
u16 des_addr; \
u16 node_addr; \
u16 id; \
u16 length; \
u8 reset_num; \
u8 rand_num; \
u8 data[num]; \
}
#define HMAC_FRAME_PREFIX_LEN (sizeof(u16)*2+sizeof(u8))
#define HMAC_FRAME_HEAD 0xAAAE
typedef struct hmac_frame
{
u16 head;
u16 length;
u8 value;
u8 hmac[33];
} hmac_frame;
#define CRYPTO_ZDATA_FRAME_HEAD 0xAAAF
typedef struct crypto_zdata_frame
{
u16 head;
u16 length;
u8 data[100];
}crypto_zdata_frame;
#define CRYPTO_ZDATA_FRAME_PREFIX_LEN sizeof(u16)*2
#define new_crypto_zdata_frame(num) \
struct \
{ \
u16 head; \
u16 length; \
u8 data[num]; \
}
#define RAND_DATA_PACK_PREFIX_LEN sizeof(u16)
typedef struct rand_data_pack
{
u16 rand_num;
u8 *data;
}rand_data_pack;
typedef struct device
{
u16 addr;
u16 id;
u8 rand_num;
u8 verified;
u8 online;
u8 logined;
u8 stage;
u8 chlg_buf[8];
u8 ip[30];
u16 port;
SM2_keyexc key_pair;
bool operator == (const device &e){
return this->addr == e.addr;
}
} device;
#define MQTT_CLIENT_OFFLINE_DATA_TYPE 0
#define MQTT_CLIENT_OFFLINE_DATA_LENGTH sizeof(u16)
typedef struct mqtt_client_offline_data
{
u16 addr;
}mqtt_client_offline_data;
#define LOGIN_DATA_TYPE 0
#define LOGIN_DATA_LENGTH (sizeof(int)+sizeof(u8)*32)
typedef struct login_data
{
int user_id;
unsigned char passwd_sm3[32];
}login_data;
#define LOGIN_RESP_LENGTH (sizeof(int)*3+sizeof(u8)*20)
typedef struct login_resp
{
int user_id;
int gate_addr;
int identity;
unsigned char user_name[20];
}login_resp;
#define SENSOR_DATA_TYPE 1
#define SENSOR_DATA_LENGTN sizeof(float)*4
typedef struct sensor_data
{
float ppm;
float temp;
float humi;
float flare;
}sensor_data;
#define THRESHOLD_DATA_TYPE 2
typedef struct threshold_data
{
int air[2];
int temp[2];
int humi[2];
int flare[2];
}threshold_data;
typedef struct thumb_member
{
int id;
int identity;
char name[20];
bool lock;
time_t time;
}thumb_member;
#define THUMB_MEMBERS_DATA_TYPE 3
#define THUMB_MEMBERS_DATA_PREFIX sizeof(int)*2
typedef struct thumb_members_data
{
int count;
thumb_member members[100];
}thumb_members_data;
typedef struct face_member
{
int id;
int identity;
char name[20];
time_t signin_time;
time_t signout_time;
}face_member;
#define FACE_MEMBERS_DATA_TYPE 4
#define FACE_MEMBERS_DATA_PREFIX sizeof(int)*2
typedef struct face_members_data
{
int count;
int online;
face_member members[100];
}face_members_data;
#define WARN_IMAGE_FIRE_TYPE 1
#define WARN_IMAGE_PEOPLE_TYPE 2
#define WARN_DATA_TYPE 5
typedef struct warn_data
{
time_t time;
int gate;
int alert_id;
struct alert
{
unsigned char type;
double threshold_data;
double now_data;
bool is_predict;
}alert;
}warn_data;
#define CLIENT_PHOTO_DATA_TYPE 7
#define CLIENT_PHOTO_DATA_PREFIX (sizeof(int)*3+sizeof(char)*30+sizeof(u8))
typedef struct client_photo_data
{
int data_length;
int gate;
int image_id;
char name[30];
u8 type;
u8 data[51200];
}client_photo_data;
#define new_client_photo_data(num) \
struct client_photo_data \
{ \
int gate; \
int image_id; \
int data_length; \
char name[30]; \
u8 type; \
u8 data[num]; \
}
#define ORI_FACE_MEMBER_DATA_TYPE 50
#define ORI_FACE_MEMBER_DATA_PREFIX 2
typedef struct ori_face_members_data
{
u8 count;
bool is_offline;
u8 members[256];
} ori_face_members_data;
#define new_ori_face_members_data(num) \
struct \
{ \
u8 count; \
bool is_offline; \
u8 members[num]; \
}
#define ORI_THUMB_MEMBER_DATA_TYPE 51
typedef struct ori_thumb_member_data
{
u8 id;
bool is_open;
}ori_thumb_member_data;
#define PHOTO_DATA_TYPE 52
#define PHOTO_DATA_PREFIX (sizeof(int)+sizeof(char)*30+sizeof(u8))
typedef struct photo_data
{
int data_length;
char name[30];
u8 type;
u8 data[51200];
}photo_data;
#define new_photo_data(num) \
struct photo_data \
{ \
int data_length; \
char name[30]; \
u8 type; \
u8 data[num]; \
}
#define FUNC_DATA_TYPE 99
typedef struct func_data
{
bool sensor;
bool threshold;
bool warns;
bool face_member;
bool thumb_member;
}func_data;
#endif // PROTOCOL_DATA_H