#ifndef _GPRS_PROTOCOL_API_H_ #define _GPRS_PROTOCOL_API_H_ #include "define_all.h" #include "gprs_sundry_api.h" #include "administrator.h" /*ЭÒéÖ¡¹Ì¶¨µÄ³¤¶È*/ #define PROTOCOL_HEAD_LENGTH sizeof(GPRS_PROTOCOL_HEAD_T) //ЭÒéÍ·¹Ì¶¨³¤¶È #define PROTOCOL_DATA_FIELD_HEAD_LENGTH sizeof(GPRS_PROTOCOL_DATA_FIELD_HEAD_T) //Êý¾ÝÓòÍ·¹Ì¶¨³¤¶È #define PROTOCOL_TAIL_LENGTH sizeof(GPRS_PROTOCOL_TAIL_T) //ЭÒéβ¹Ì¶¨³¤¶È /*ÆÕͨ·¢ËÍÊý¾ÝÄÚÈݹ̶¨³¤¶È*/ #define PROTOCOL_NORMAL_DATA_HEAD_LENGTH sizeof(GPRS_PROTOCOL_NORMAL_DATA_HEAD_T) //ÆÕͨ·¢ËÍÊý¾ÝÍ·¹Ì¶¨³¤¶È #define PROTOCOL_NORMAL_DATA_PACK_LENGTH sizeof(GPRS_PROTOCOL_NORMAL_DATA_PACK_T) //ÆÕͨ·¢ËÍÊý¾Ý°ü¹Ì¶¨³¤¶È /*ÉèÖÃÃüÁîÓ¦´ðÊý¾ÝÄÚÈݹ̶¨³¤¶È*/ #define PROTOCOL_SET_CMD_DATA_BACK_LENGTH 1 //ËùÓÐÆ½Ì¨Ï·¢µÄÉèÖÃÃüÁîµÄ·µ»ØÊý¾Ý³¤¶È #define PROTOCOL_START_CODE 0x68 //ЭÒéÆðʼ·û #define PROTOCOL_END_CODE 0x16 //ЭÒé½áÊø·û #define KEY_VERSION 0x80 //ЭÒéÃÜÔ¿°æ±¾ #define PROTOCOL_VERSION 0x20 //ЭÒé°æ±¾ /*ЭÒé¿ØÖÆÂëÓɸߵÍλ×éºÏ¶ø³É*/ #define PROTOCOL_CMD_DOWN_U8_H 0 #define PROTOCOL_CMD_UP_U8_H 0x80 #define PROTOCOL_CMD_READ_U8_L 0x01 #define PROTOCOL_CMD_WRITE_U8_L 0x04 #define PROTOCOL_CMD_INITIATIVE_SEND_U8_L (PROTOCOL_CMD_READ_U8_L | PROTOCOL_CMD_WRITE_U8_L) #define PROTOCOL_NORMAL_SEND_CMD_U16 0x8460 //ÆÕͨÉϱ¨ÃüÁî±êʶ #define PROTOCOL_SET_TIME_CMD_U16 0xA464 //ÉèÖÃʱ¼äÃüÁî±êʶ #define PROTOCOL_END_CMD_U16 0xA450 //½áÊøÖ¡ÃüÁî±êʶ #define PROTOCOL_ALARM_CMD_U16 0x8461 //±¨¾¯ÃüÁî±êʶ #define GPRS_PROTOCOL_SEND_FUNC_TABLE_NUM (sizeof(gprs_protocol_send_tab_func) / sizeof(GPRS_PROTOCOL_SEND_FUNC_TABLE_DRV_T)) #define GPRS_PROTOCOL_RECV_FUNC_TABLE_NUM (sizeof(gprs_protocol_recv_tab_func) / sizeof(GPRS_PROTOCOL_RECV_FUNC_TABLE_DRV_T)) typedef enum { PROTOCOL_UNKOWN_STATUS = 0U, PROTOCOL_END_STATUS, PROTOCOL_NORMAL_SEND_CMD, PROTOCOL_ALARM_SEND_CMD, PROTOCOL_SET_TIME_CMD_BACK, } GPRS_PROTOCOL_STATUS; /*¿ª±ÙÈáÐÔÊý×é*/ typedef struct { uint8_t send_len; uint8_t send_buffer[]; } GPRS_PROTOCOL_SEND_BUFFER_T; #pragma pack(1) // gprs_start_cnt = gprs_send_succ_cnt + gprs_start_defeat_cnt typedef struct { uint32_t gprs_start_cnt;//gprsÆô¶¯´ÎÊý uint32_t gprs_send_succ_cnt;//gprs·¢Ëͳɹ¦´ÎÊý uint32_t gprs_time_cnt;//gprs³¬Ê±´ÎÊý uint32_t gprs_recv_cnt; uint32_t gprs_iccid_cnt; uint32_t gprs_imei_cnt; uint32_t gprs_csq_cnt; uint32_t gprs_call_cnt; uint32_t gprs_tcp_cnt; uint32_t gprs_len_cnt; }GPRS_SUCC_TEST_T;//Ô¶´«³É¹¦ÂʲâÊÔ typedef struct { uint8_t frame_start_code; uint8_t device_num[8]; uint8_t data_start_code; uint8_t cmd_code_u8; uint16_t data_field_length; } GPRS_PROTOCOL_HEAD_T; //¹Ì¶¨µÄÖ¡Í·Êý¾Ý typedef struct { uint8_t device_time[6]; uint8_t protocol_ver; uint16_t cmd_code_u16; uint16_t frame_num; uint16_t frame_sum; uint8_t key_ver; } GPRS_PROTOCOL_DATA_FIELD_HEAD_T; //¹Ì¶¨µÄÊý¾ÝÓòÍ·Êý¾Ý typedef struct { uint8_t checksum; uint8_t frame_end_code; } GPRS_PROTOCOL_TAIL_T; //¹Ì¶¨µÄ֡βÊý¾Ý typedef struct { uint8_t signal_intensity; //ÐźÅÇ¿¶È uint8_t iccid[20]; uint8_t sys_send_type; uint8_t pwr_type; uint8_t data_get_type; uint8_t billing_type; uint8_t use_state; uint8_t net_info; uint8_t reserve[2]; uint8_t valve_state; uint8_t one_frame_num; //Ò»Ö¡Êý¾ÝµÄÊý¾Ý×éÊý } GPRS_PROTOCOL_NORMAL_DATA_HEAD_T; //ÆÕͨÊý¾ÝµÄ¹Ì¶¨¸ñʽͷ typedef struct { GPRS_PROTOCOL_HEAD_T gprs_protocol_head; GPRS_PROTOCOL_DATA_FIELD_HEAD_T gprs_protocol_data_field_head; GPRS_PROTOCOL_TAIL_T gprs_protocol_tail; GPRS_PROTOCOL_NORMAL_DATA_HEAD_T gprs_protocol_normal_data_head; } GPRS_PROTOCOL_HEAD_TAIL_T; typedef struct { GPRS_PROTOCOL_HEAD_T gprs_protocol_head; GPRS_PROTOCOL_DATA_FIELD_HEAD_T gprs_protocol_data_field_head; GPRS_PROTOCOL_TAIL_T gprs_protocol_tail; } GPRS_PROTOCOL_ALARM_HEAD_T; //230306 typedef struct { uint8_t sample_time[6]; uint16_t balance_dec; //Óà¶îСÊý²¿·Ö£¨Ð¡Êý²»¿ÉÄÜΪ¸ºÊýËùÒÔU16£© int32_t balance_int; //Óà¶îÕûÊý²¿·Ö£¨ÕûÊý²¿·Ö¿ÉÄÜΪ¸ºÓÃINT32£© uint16_t gas_use_total_dec; int32_t gas_use_total_int; uint16_t fee_use_total_dec; int32_t fee_use_total_int; uint16_t sc_cumulate_dec; int32_t sc_cumulate_int; uint16_t wc_cumulate_dec; int32_t wc_cumulate_int; uint16_t sc_instant_dec; int32_t sc_instant_int; uint16_t wc_instant_dec; int32_t wc_instant_int; float temperature; float pressure; uint8_t lith_vcc_dec; int8_t lith_vcc_int; uint8_t alka_vcc_dec; int8_t alka_vcc_int; uint8_t reserved[20]; } GPRS_PROTOCOL_NORMAL_DATA_PACK_T; typedef struct { uint8_t alarm_num; uint8_t alarm_time[6]; uint16_t alarm_id; } GPRS_PROTOCOL_ALARM_ID_PACK_T; //230306 typedef struct { __IO GPRS_PROTOCOL_STATUS gprs_protocol_type; } GPRS_PROTOCOL_PARA_T; typedef void (*pGprs_Protocol_Send_FuncHandler)(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail); typedef struct { const GPRS_PROTOCOL_STATUS gprs_protocol_cmd_table; pGprs_Protocol_Send_FuncHandler GprsProtocolSendFuncHandler; } GPRS_PROTOCOL_SEND_FUNC_TABLE_DRV_T; /*·¢ËÍЭÒé±íÇý¶¯*/ typedef GPRS_PROTOCOL_STATUS (*pGprs_Protocol_Recv_FuncHandler)(uint8_t *pData); typedef struct { const uint16_t gprs_protocol_cmd_table_u16; pGprs_Protocol_Recv_FuncHandler GprsProtocolRecvFuncHandler; } GPRS_PROTOCOL_RECV_FUNC_TABLE_DRV_T; /*½ÓÊÕЭÒé±íÇý¶¯*/ #pragma pack() extern GPRS_SUCC_TEST_T gprs_test_g; //230531 extern GPRS_PROTOCOL_HEAD_TAIL_T gprs_protocol_head_tail_g; extern GPRS_PROTOCOL_PARA_T gprs_protocol_para_g; extern GPRS_PROTOCOL_ALARM_HEAD_T gprs_protocol_alarm_head_tail_g; //230306 extern GPRS_PROTOCOL_ALARM_ID_PACK_T gprs_protocol_alarm_id_pack_g; //230306 uint16_t Gprs_Protocol_DataLength(uint8_t send_type, GPRS_PROTOCOL_ENCRYPT_PARA *gprs_protocol_encrypt_para_p); /************************************** Send Data **************************************************************/ void Gprs_Protocol_SendSetTimeResultHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p); void Gprs_Protocol_SendNormalDataHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p); void Gprs_Protocol_SendDataConfig(uint8_t send_type, uint8_t *pSendData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p); void Gprs_Protocol_SendAlarmPack(uint8_t *pSendData, GPRS_PROTOCOL_ALARM_HEAD_T *gprs_protocol_alarm_head_p); /************************************** Recv Data **************************************************************/ GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvSetTimeHandler(uint8_t *pData); GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvNormalDataHandler(uint8_t *pData); GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvEndHandler(uint8_t *pData); GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvDataConfig(uint8_t *pRecvData, uint16_t recv_data_length); #endif