200 lines
6.2 KiB
C
200 lines
6.2 KiB
C
#ifndef __WHYW_FRAME_H__
|
||
#define __WHYW_FRAME_H__
|
||
|
||
/******************************************************************************
|
||
* Include files
|
||
******************************************************************************/
|
||
#include "sys_config.h"
|
||
#if PRODUCT_WHYW
|
||
#include "UWater_frame_app.h"
|
||
#include "UWater_rtcc_driver.h"
|
||
/* C binding of definitions if building with C++ compiler */
|
||
#ifdef __cplusplus
|
||
extern "C"
|
||
{
|
||
#endif
|
||
|
||
/*******************************EEPROM存储地址划分****************************/
|
||
#define STORE_DATA_SIZE_CIRCLE 4 //周期数据单条长度
|
||
#define STORE_DATA_COUNT_CIRCLE 240
|
||
#define EEP_DATA_LEN_CIRCLE (STORE_DATA_SIZE_CIRCLE*STORE_DATA_COUNT_CIRCLE)//1200//周期数据存储空间
|
||
|
||
#define EEP_ADDR_WHYW_STORE_CIRCLE FRAME_SHENYANG_STORE_ADD //0x7300~0x7C00 周期数据存储地址
|
||
#define EEP_ADDR_WHYW_CIRCLE_INDEX_W (EEP_ADDR_WHYW_STORE_CIRCLE+EEP_DATA_LEN_CIRCLE)//周期数据存储指针
|
||
#define EEP_ADDR_WHYW_CIRCLE_INDEX_R (EEP_ADDR_WHYW_CIRCLE_INDEX_W+2)//周期数据读取指针
|
||
#define EEP_ADDR_WHYW_LAST_RTCC (EEP_ADDR_WHYW_CIRCLE_INDEX_R+2)//最后一条记录的时间7字节
|
||
//配置参数相关的存储
|
||
#define EEP_ADDR_WHYW_NB_ONLINE_KEEP (EEP_ADDR_WHYW_LAST_RTCC+7) //在线延时时间 1字节
|
||
#define EEP_ADDR_WHYW_STORE_INTERVAL (EEP_ADDR_WHYW_NB_ONLINE_KEEP+1)//表数据采集记录间隔时间 1字节
|
||
#define EEP_ADDR_WHYW_BATTERY_PRA (EEP_ADDR_WHYW_STORE_INTERVAL+1)//电池电压相关参数 4字节
|
||
#define EEP_ADDR_WHYW_UPLOAD_SUCCESS (EEP_ADDR_WHYW_BATTERY_PRA+4)//上报总次数
|
||
#define EEP_ADDR_WHYW_UPLOAD_FAIL (EEP_ADDR_WHYW_UPLOAD_SUCCESS+4)//上报成功总次数
|
||
|
||
#define UPLOAD_CIRCLE_MAX_COUNT 48 //单帧最多48条记录:48*4=192
|
||
#define UPLOAD_CIRCLE_MAX_LEN (STORE_DATA_SIZE_CIRCLE*UPLOAD_CIRCLE_MAX_COUNT)//单帧最大字节数
|
||
|
||
#define EE_PRA_SIZE_WHYW 21//EE存储参数总字节数
|
||
typedef union
|
||
{
|
||
struct
|
||
{
|
||
UNION_2U8TOU16 u_circle_store_index_w;//周期数据存储的位置
|
||
UNION_2U8TOU16 u_circle_store_index_r;//周期数据读取的位置
|
||
DateTime store_circle_rtcc_end;//最后一条记录的时间7字节
|
||
u8 ee_nb_online_keep_time;//在线延时时间 1字节
|
||
u8 ee_nb_acq_interval;//表数据采集记录间隔时间 1字节 采集间隔30分钟
|
||
u8 ee_battery_pra[4];//电池电压相关参数
|
||
UNION_2U8TOU16 ee_upload_count_success;//上报成功总次数
|
||
UNION_2U8TOU16 ee_upload_count_fail;//上报失败总次数
|
||
}Data;
|
||
u8 data_buf[EE_PRA_SIZE_WHYW];
|
||
}WHYW_UNION_EE_STORE;
|
||
/******************************规约解析相关参数*********************************/
|
||
#define FRAME_HEAD_MARK 0x68
|
||
#define FRAME_END_MARK 0x16
|
||
#define UP_BUF_SIZE 512
|
||
|
||
#define FRAME_LEN_MAX UP_BUF_SIZE
|
||
#define FRAME_LEN_MIN 10
|
||
|
||
#define FRAME_GUIDE 0xFE //引导
|
||
#define FRAME_HEAD 0x68 //帧头
|
||
#define FRAME_TAIL 0x16 //帧尾本号
|
||
|
||
#define W_METTYPE 0x10 //水表类型
|
||
#define LYBK_DATA_UP_NOW 0x55
|
||
#define LYBK_OFFSET_DATA_UP 0xFF
|
||
#define LYBK_DISCRETE_DATA_UP 0x99
|
||
|
||
|
||
#define READ_CTRL_DOWN 0x01 //读控制码下行
|
||
#define READ_CTRL_UP 0x81 //读控制码上行
|
||
#define WRITE_CTRL_DOWN 0x04 //写控制码下行
|
||
#define WRITE_CTRL_UP 0x84 //写控制码上行
|
||
|
||
//读、写水表在线延时等待时间
|
||
#define RW_ONLINE_TIME_D0 0x81
|
||
#define RW_ONLINE_TIME_D1 0x11
|
||
|
||
//读、写水表实时时间
|
||
#define RW_METER_TIME_D0 0xA0
|
||
#define RW_METER_TIME_D1 0x15
|
||
|
||
//读、写水表自动上传数据的时间参数
|
||
#define RW_UPLOAD_TIME_ID0 0x81
|
||
#define RW_UPLOAD_TIME_ID1 0x04
|
||
|
||
//读、写水表数据采集间隔时间
|
||
#define RW_INTERVAL_TIME_ID0 0x81
|
||
#define RW_INTERVAL_TIME_ID1 0x05
|
||
|
||
//读、写取电池电压相关参数
|
||
#define RW_BATTERY_D0 0x81
|
||
#define RW_BATTERY_D1 0x09
|
||
|
||
//读、写水表 NB 网络参数
|
||
#define RW_NB_PARA_D0 0x81
|
||
#define RW_NB_PARA_D1 0x10
|
||
|
||
|
||
//当前计量信息数据标识D0
|
||
#define UPLOAD_DATA_D0 0x90
|
||
#define UPLOAD_DATA_D1 0x20
|
||
//////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
typedef union //强制转化为浮点变量
|
||
{
|
||
u32 gp22_u32;
|
||
float gp22_float;
|
||
u8 buf[4];
|
||
}U32_To_Float;
|
||
|
||
typedef struct //存放表计收到的比较重要的数据
|
||
{
|
||
u8 head_site;
|
||
u8 frame_ctrl; //下行控制码
|
||
u8 ack_ctrl; //上行控制码
|
||
u8 mark_DI0; //数据标识DI0
|
||
u8 mark_DI1; //数据标识DI1
|
||
u8 serial_num; //序列号
|
||
mtype16_ len; //长度
|
||
u16 chkval; //校验和
|
||
u8 frame_sta; //规约状态
|
||
} STRUCT_FRAME_WHYW;
|
||
|
||
typedef struct
|
||
{
|
||
u16 send_len;
|
||
u8 send_sum_cs; //校验和
|
||
u8 send_buf[UP_BUF_SIZE];
|
||
}OTHER_FRAME_UP_SEND_PARA_;
|
||
|
||
|
||
typedef enum{
|
||
WHYW_STATE_S0 = 0,
|
||
WHYW_STATE_S1,
|
||
WHYW_STATE_S2,
|
||
WHYW_STATE_S3,
|
||
WHYW_STATE_S4,
|
||
WHYW_STATE_S5,
|
||
WHYW_STATE_S6,
|
||
WHYW_STATE_S7,
|
||
WHYW_STATE_S8,
|
||
WHYW_STATE_S9,
|
||
WHYW_STATE_S10,
|
||
WHYW_STATE_S11,
|
||
WHYW_STATE_S12,
|
||
WHYW_STATE_S13,
|
||
WHYW_STATE_S20,
|
||
WHYW_STATE_S21,
|
||
WHYW_STATE_S22,
|
||
WHYW_STATE_S30,
|
||
WHYW_STATE_S31,
|
||
WHYW_STATE_S32,
|
||
}TYP_STATE_WHYW;
|
||
|
||
|
||
u8 crack_frame_WHYW(u16 frame_lenth, u8 *frame_buffer);
|
||
u8 up_deal_code_WHYW(void);
|
||
void Frame_ack_WHYW(u8* p_send_buf, u16* p_send_len);
|
||
void Frame_ResetDealState_WHYW(void);
|
||
|
||
void GetUploadDataResetState_WHYW(void);
|
||
u8 GetUploadDataCheckIdle_WHYW(void);
|
||
u8 GetUploadDataCheckTask_WHYW(void);
|
||
void GetUploadDataMachine_WHYW(u8 data_step, u8* p_send_buf, u16* p_send_len);
|
||
|
||
/****************************规约数据存储部分*****************************/
|
||
void DataStoreInit(void);
|
||
void DataStoreMachine(void);
|
||
u8 DataStoreIfIdle(void);
|
||
/************************网络连接选择\延时等待时间设置********************/
|
||
#define MAIN_CONNECT_TYPE NBIOT_CONNECT_UDP1
|
||
#define MAIN_SEND_TYPE SEND_TYPE_UDP1
|
||
#define SLAVE_CONNECT_TYPE NBIOT_CONNECT_UDP2
|
||
#define SLAVE_SEND_TYPE SEND_TYPE_UDP2
|
||
|
||
#define COAP_UPLOAD_WAIT_ACK_TIME 150 //主上报15秒,副上报5秒
|
||
#define UDP_UPLOAD_WAIT_ACK_TIME 50
|
||
#define NB_ONLINE_KEEP_TIME 50
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif
|
||
|
||
#endif /* __LYBK_FRAME_H__ */
|
||
/******************************************************************************
|
||
* EOF (not truncated)
|
||
******************************************************************************/
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|