#ifndef _WRC_SIZHU_V4_H_
|
#define _WRC_SIZHU_V4_H_
|
#include "define_all.h"
|
#include "wireless_remote_comm.h"
|
#include "system_general_para.h"
|
#include "extern_rtc.h"
|
|
#define SIZHU_PROTOCOL_VERSION 0x42
|
#define SIZHU_FRAME_HEAD 0x68
|
#define SIZHU_DATA_HEAD 0x55
|
#define SIZHU_FRAME_TAIL 0x16
|
|
#define FIRST_DATA_SHIFT_SIZHU sizeof(SIZHU_V4_PROTOCOL_HEAD_T)//26
|
|
#define ONCE_REPORT_MAX_NUM 360 //ÏÞÖÆÒ»´ÎÉϱ¨×î¶àÉϱ¨ÌõÊý£¬ 15Ìì*24Ìõ
|
#define FRAME_DATA_MAX 6 //Ò»Ö¡Êý¾Ý×î¶à°üº¬µÄÊý¾ÝÌõÊý
|
#define DATA_PACKET_HEAD_LENGTH sizeof(SIZHU_V4_PROTOCOL_NORMAL_DATA_HEAD_T)
|
#define DATA_PACKET_LENGTH sizeof(SIZHU_V4_PROTOCOL_NORMAL_DATA_PACK_T)
|
#define FRAME_TAIL_LENGTH sizeof(SIZHU_V4_PROTOCOL_TAIL_T)
|
|
///////////////ÐÒé¿ØÖÆÂë/////////////////////////////////////////////////////////////////////
|
//ÒµÎñ
|
#define SIZHU_CONTROL_CODE_DATAUP 0x0101
|
#define SIZHU_CONTROL_CODE_END 0x0102
|
#define SIZHU_CONTROL_CODE_MODIFY_KEY 0x0103
|
#define SIZHU_CONTROL_CODE_PUSH_SETTLEMENT_INFO 0x0104
|
|
//¹¦ÄÜ
|
#define SIZHU_CONTROL_CODE_ACCOUNT_STATUS 0x0201
|
#define SIZHU_CONTROL_CODE_SET_PARA_DEV 0x0202
|
#define SIZHU_CONTROL_CODE_READ_PARA_DEV 0x0203
|
#define SIZHU_CONTROL_CODE_SET_ALARM_CTRL_WORD 0x0204
|
#define SIZHU_CONTROL_CODE_READ_ALARM_CTRL_WORD 0x0205
|
#define SIZHU_CONTROL_CODE_SET_REPORT_PERIOD 0x0206
|
#define SIZHU_CONTROL_CODE_READ_REPORT_PERIOD 0x0207
|
#define SIZHU_CONTROL_CODE_SET_485_PARA 0x0208
|
#define SIZHU_CONTROL_CODE_READ_485_PARA 0x0209
|
#define SIZHU_CONTROL_CODE_READ_EQUIPMENT_INFO 0x0220
|
#define SIZHU_CONTROL_CODE_SET_TIME 0x0221
|
#define SIZHU_CONTROL_CODE_SET_IP_PORT 0x0222
|
#define SIZHU_CONTROL_CODE_READ_IP_PORT 0x0223
|
#define SIZHU_CONTROL_CODE_CLEAR_ABNORMAL 0x0224
|
#define SIZHU_CONTROL_CODE_SET_CUMULANT_0 0x0225
|
#define SIZHU_CONTROL_CODE_SET_DAY_MONTH_RECORD_STORAGE_TIME 0x0230
|
#define SIZHU_CONTROL_CODE_READ_DAY_MONTH_RECORD_STORAGE_TIME 0x0231
|
#define SIZHU_CONTROL_CODE_READ_HISTORY_RECORD 0x0232
|
#define SIZHU_CONTROL_CODE_READ_VALVE_RECORD 0x0233
|
#define SIZHU_CONTROL_CODE_READ_CUMULANT_MODIFY_RECORD 0x0234
|
|
//·§¿Ø
|
#define SIZHU_CONTROL_CODE_VALVE_CONTROL 0x0301
|
#define SIZHU_CONTROL_CODE_SET_BALANCE_INSUF_CLOSE_VALVE 0x0302
|
#define SIZHU_CONTROL_CODE_READ_BALANCE_INSUF_CLOSE_VALVE 0x0303
|
#define SIZHU_CONTROL_CODE_SET_VALVE_CLOSE_CTRL_WORD 0x0304
|
#define SIZHU_CONTROL_CODE_READ_VALVE_CLOSE_CTRL_WORD 0x0305
|
#define SIZHU_CONTROL_CODE_SET_NO_UP_CLOSE_DAY 0x0306
|
#define SIZHU_CONTROL_CODE_READ_NO_UP_CLOSE_DAY 0x0307
|
#define SIZHU_CONTROL_CODE_SET_NO_GAS_CLOSE_DAY 0x0308
|
#define SIZHU_CONTROL_CODE_READ_NO_GAS_CLOSE_DAY 0x0309
|
#define SIZHU_CONTROL_CODE_SET_CUMULANT_CLOSE 0x0310
|
#define SIZHU_CONTROL_CODE_READ_CUMULANT_CLOSE 0x0311
|
|
//±í¶Ë¼Æ·ÑÏà¹Ø²ÎÊý
|
#define SIZHU_CONTROL_CODE_RECHARGE 0x0401
|
#define SIZHU_CONTROL_CODE_SET_PRICE 0x0402
|
#define SIZHU_CONTROL_CODE_READ_PRICE 0x0403
|
|
#pragma pack(1)
|
|
|
typedef struct
|
{
|
uint8_t frame_start_code; // Ö¡Æðʼ·û
|
uint8_t device_num[8]; // ±í¾ß±àºÅ
|
uint8_t data_start_code; // Êý¾ÝÆðʼ·û
|
sClockBCD device_time; // ϵͳʱ¼ä
|
uint8_t protocol_ver; // ÐÒé°æ±¾
|
uint16_t cmd_code_u16; // ÃüÁî±êʶ
|
uint16_t frame_num; // Ö¡ÐòÁкÅ
|
uint16_t frame_sum; // ×ÜÖ¡Êý
|
uint8_t key_ver; // ÃÜÔ¿°æ±¾ºÅ
|
uint16_t data_length; // Êý¾ÝÄÚÈݳ¤¶È
|
}SIZHU_V4_PROTOCOL_HEAD_T; // ¹Ì¶¨µÄÖ¡Í·Êý¾Ý
|
|
typedef struct
|
{
|
uint16_t check_crc; // crcУÑé
|
uint8_t frame_end_code; // Ö¡½áÊø·û
|
} SIZHU_V4_PROTOCOL_TAIL_T; // ¹Ì¶¨µÄ֡βÊý¾Ý
|
|
|
typedef struct
|
{
|
uint8_t equipment_type; // É豸ÀàÐÍ£¬ÊÇÖ¸ÊÇ·ñ·ÖÌå»ú¡¢¼Æ·ÑģʽµÄÇø·ÖÀàÐÍ
|
DEVICE_TYPE device_type; // É豸ÐͺÅ,ÊÇÖ¸SZV103µÈÐͺÅ
|
uint8_t sys_send_type; // Éϸ淽ʽ
|
int8_t iccid[20]; // iccid
|
uint8_t signal_intensity; // ÐźÅÇ¿¶È
|
uint8_t signal_intensity_level; // ÐźÅÇ¿¶ÈµÈ¼¶
|
uint8_t net_info; // ÍøÂçÐÅÏ¢
|
uint8_t software_version[4]; // Èí¼þ°æ±¾ºÅ
|
uint8_t account_state; // ¿ª»§×´Ì¬
|
uint16_t alarm_word[7]; // ±¨¾¯×Ö
|
uint16_t valve_close_reason; // ¹Ø·§ÔÒò×Ö
|
uint8_t reserve[8]; // ±£Áô
|
uint8_t data_package_format; // Êý¾Ý°ü¸ñʽ
|
uint8_t data_pack_num; // Êý¾Ý°üÌõÊý
|
} SIZHU_V4_PROTOCOL_NORMAL_DATA_HEAD_T; // ÆÕͨÊý¾ÝµÄ¹Ì¶¨¸ñʽͷ
|
|
|
typedef struct
|
{
|
sClockBCD sample_time; // ¶³½áʱ¼ä
|
uint64_t sc_cumulate; // ÕýÏò±ê¿ö×ÜÁ¿£¬ÎÞ·ûºÅ
|
uint64_t wc_cumulate; // ÕýÏò¹¤¿ö×ÜÁ¿£¬ÎÞ·ûºÅ
|
int32_t sc_instant; // ±ê¿ö˲ʱÁ¿£¬ÓзûºÅ
|
int32_t wc_instant; // ¹¤¿ö˲ʱÁ¿£¬ÓзûºÅ
|
float pressure;
|
float temperature;
|
int64_t balance; // Ê£Óà½ð¶î£¬ÓзûºÅ
|
uint32_t uint_price; // µ¥¼Û
|
uint8_t lith_vcc; // ï®µç³Øµçѹ
|
int8_t lith_vcc_per; // ï®µç³Øµçѹ°Ù·Ö±È
|
uint8_t alka_vcc; // ¼îµç³Øµçѹ
|
int8_t alka_vcc_per; // ¼îµç³Øµçѹ°Ù·Ö±È
|
uint16_t status[6]; // ״̬×Ö
|
//uint8_t reserved[40];
|
} SIZHU_V4_PROTOCOL_NORMAL_DATA_PACK_T;
|
|
typedef struct
|
{
|
uint16_t current_report_data_num; //µ±Ç°Ô¶´«µÄ×ÜÌõÊý£¬²»ÊÇÒ»Ö¡µÄÌõÊý
|
uint16_t last_frame_data_num; //×îºóÒ»Ö¡ÌõÊý
|
uint32_t report_data_read_addr; //Êý¾Ý¶ÁÈ¡µØÖ·
|
|
}SIZHU_V4_REPORT_CTRL_PARA_T;
|
|
#pragma pack()
|
|
extern ErrorStatus wrc_sizhuV4_result_flag; //×îÖÕµÄͨѶ½á¹ûÅжϣ¬³õʼÖÃFAIL£¬×îÖÕ¸ù¾ÝÐÒéÈ·Èϱ¾´ÎͨѶÊÇ·ñ³É¹¦£¬±ÈÈç˼ÖþµÄÐÒéͨ¹ý½áÊøÖ¡ÅжÏÊÇ·ñ×îÖճɹ¦
|
extern ErrorStatus report_sizhuV4_result_flag; //Éϱ¨ÊÇ·ñ³É¹¦±êÖ¾£¬ÓÃÓÚÒ»ÌìÖ®ÄÚÓÐûÓÐÉÏ´«³É¹¦¹ý£¬¸úwrc_sizhuV4_result_flagͨѶÊÇ·ñ³É¹¦²»Ò»Ñù£¬¿íËÉÒ»µã£¬Ö»ÒªÊý¾ÝÉϱ¨ÏìÓ¦³É¹¦¼´´ú±íÉϱ¨³É¹¦£¬ÊÕµ½½áÊøÖ¡Ò²´ú±í³É¹¦¡£
|
|
void SizhuV4SendParaInit(void);
|
uint16_t SizhuV4SendNormalData2buf(uint8_t * send_buf);
|
WRC_STATUS SizhuV4ProtocolDataAnalysis(uint8_t *receive_buf,uint8_t *ack_buf,uint16_t *ack_buf_length);
|
|
#endif
|