P3UWaterGuangZhou/app/UWater_Frame/UWater_frame_func_ReplyWuHa...

200 lines
6.2 KiB
C
Raw Permalink Normal View History

2024-06-03 15:49:39 +08:00
#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<4F><EFBFBD><E6B4A2>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>****************************/
#define STORE_DATA_SIZE_CIRCLE 4 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define STORE_DATA_COUNT_CIRCLE 240
#define EEP_DATA_LEN_CIRCLE (STORE_DATA_SIZE_CIRCLE*STORE_DATA_COUNT_CIRCLE)//1200//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4>ռ<EFBFBD>
#define EEP_ADDR_WHYW_STORE_CIRCLE FRAME_SHENYANG_STORE_ADD //0x7300~0x7C00 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2>ַ
#define EEP_ADDR_WHYW_CIRCLE_INDEX_W (EEP_ADDR_WHYW_STORE_CIRCLE+EEP_DATA_LEN_CIRCLE)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢ָ<E6B4A2><D6B8>
#define EEP_ADDR_WHYW_CIRCLE_INDEX_R (EEP_ADDR_WHYW_CIRCLE_INDEX_W+2)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡָ<C8A1><D6B8>
#define EEP_ADDR_WHYW_LAST_RTCC (EEP_ADDR_WHYW_CIRCLE_INDEX_R+2)//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>ʱ<EFBFBD><CAB1>7<EFBFBD>ֽ<EFBFBD>
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صĴ洢
#define EEP_ADDR_WHYW_NB_ONLINE_KEEP (EEP_ADDR_WHYW_LAST_RTCC+7) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> 1<>ֽ<EFBFBD>
#define EEP_ADDR_WHYW_STORE_INTERVAL (EEP_ADDR_WHYW_NB_ONLINE_KEEP+1)//<2F><><EFBFBD><EFBFBD><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> 1<>ֽ<EFBFBD>
#define EEP_ADDR_WHYW_BATTERY_PRA (EEP_ADDR_WHYW_STORE_INTERVAL+1)//<2F><><EFBFBD>ص<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> 4<>ֽ<EFBFBD>
#define EEP_ADDR_WHYW_UPLOAD_SUCCESS (EEP_ADDR_WHYW_BATTERY_PRA+4)//<2F>ϱ<EFBFBD><CFB1>ܴ<EFBFBD><DCB4><EFBFBD>
#define EEP_ADDR_WHYW_UPLOAD_FAIL (EEP_ADDR_WHYW_UPLOAD_SUCCESS+4)//<2F>ϱ<EFBFBD><CFB1>ɹ<EFBFBD><C9B9>ܴ<EFBFBD><DCB4><EFBFBD>
#define UPLOAD_CIRCLE_MAX_COUNT 48 //<2F><>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>48<34><38><EFBFBD><EFBFBD>¼:48*4=192
#define UPLOAD_CIRCLE_MAX_LEN (STORE_DATA_SIZE_CIRCLE*UPLOAD_CIRCLE_MAX_COUNT)//<2F><>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
#define EE_PRA_SIZE_WHYW 21//EE<45><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
typedef union
{
struct
{
UNION_2U8TOU16 u_circle_store_index_w;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2>λ<EFBFBD><CEBB>
UNION_2U8TOU16 u_circle_store_index_r;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ<EFBFBD><C8A1>λ<EFBFBD><CEBB>
DateTime store_circle_rtcc_end;//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>ʱ<EFBFBD><CAB1>7<EFBFBD>ֽ<EFBFBD>
u8 ee_nb_online_keep_time;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> 1<>ֽ<EFBFBD>
u8 ee_nb_acq_interval;//<2F><><EFBFBD><EFBFBD><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> 1<>ֽ<EFBFBD> <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>30<33><30><EFBFBD><EFBFBD>
u8 ee_battery_pra[4];//<2F><><EFBFBD>ص<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
UNION_2U8TOU16 ee_upload_count_success;//<2F>ϱ<EFBFBD><CFB1>ɹ<EFBFBD><C9B9>ܴ<EFBFBD><DCB4><EFBFBD>
UNION_2U8TOU16 ee_upload_count_fail;//<2F>ϱ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
}Data;
u8 data_buf[EE_PRA_SIZE_WHYW];
}WHYW_UNION_EE_STORE;
/******************************<2A><>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>*********************************/
#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 //<2F><><EFBFBD><EFBFBD>
#define FRAME_HEAD 0x68 //֡ͷ
#define FRAME_TAIL 0x16 //֡β<D6A1><CEB2><EFBFBD><EFBFBD>
#define W_METTYPE 0x10 //ˮ<><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define LYBK_DATA_UP_NOW 0x55
#define LYBK_OFFSET_DATA_UP 0xFF
#define LYBK_DISCRETE_DATA_UP 0x99
#define READ_CTRL_DOWN 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define READ_CTRL_UP 0x81 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define WRITE_CTRL_DOWN 0x04 //д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define WRITE_CTRL_UP 0x84 //д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>дˮ<D0B4><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ȴ<EFBFBD>ʱ<EFBFBD><CAB1>
#define RW_ONLINE_TIME_D0 0x81
#define RW_ONLINE_TIME_D1 0x11
//<2F><><EFBFBD><EFBFBD>дˮ<D0B4><CBAE>ʵʱʱ<CAB1><CAB1>
#define RW_METER_TIME_D0 0xA0
#define RW_METER_TIME_D1 0x15
//<2F><><EFBFBD><EFBFBD>дˮ<D0B4><CBAE><EFBFBD>Զ<EFBFBD><D4B6>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD>ݵ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define RW_UPLOAD_TIME_ID0 0x81
#define RW_UPLOAD_TIME_ID1 0x04
//<2F><><EFBFBD><EFBFBD>дˮ<D0B4><CBAE><EFBFBD><EFBFBD><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
#define RW_INTERVAL_TIME_ID0 0x81
#define RW_INTERVAL_TIME_ID1 0x05
//<2F><><EFBFBD><EFBFBD>дȡ<D0B4><C8A1><EFBFBD>ص<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
#define RW_BATTERY_D0 0x81
#define RW_BATTERY_D1 0x09
//<2F><><EFBFBD><EFBFBD>дˮ<D0B4><CBAE> NB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define RW_NB_PARA_D0 0x81
#define RW_NB_PARA_D1 0x10
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ݱ<EFBFBD>ʶD0
#define UPLOAD_DATA_D0 0x90
#define UPLOAD_DATA_D1 0x20
//////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef union //ǿ<><C7BF>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
u32 gp22_u32;
float gp22_float;
u8 buf[4];
}U32_To_Float;
typedef struct //<2F><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>ıȽ<C4B1><C8BD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
u8 head_site;
u8 frame_ctrl; //<2F><><EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD>
u8 ack_ctrl; //<2F><><EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD>
u8 mark_DI0; //<2F><><EFBFBD>ݱ<EFBFBD>ʶDI0
u8 mark_DI1; //<2F><><EFBFBD>ݱ<EFBFBD>ʶDI1
u8 serial_num; //<2F><><EFBFBD>к<EFBFBD>
mtype16_ len; //<2F><><EFBFBD><EFBFBD>
u16 chkval; //У<><D0A3><EFBFBD><EFBFBD>
u8 frame_sta; //<2F><>Լ״̬
} STRUCT_FRAME_WHYW;
typedef struct
{
u16 send_len;
u8 send_sum_cs; //У<><D0A3><EFBFBD><EFBFBD>
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);
/****************************<2A><>Լ<EFBFBD><D4BC><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>*****************************/
void DataStoreInit(void);
void DataStoreMachine(void);
u8 DataStoreIfIdle(void);
/************************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>\<5C><>ʱ<EFBFBD>ȴ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>********************/
#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 //<2F><><EFBFBD>ϱ<EFBFBD>15<31><EFBFBD><EBA3AC><EFBFBD>ϱ<EFBFBD>5<EFBFBD><35>
#define UDP_UPLOAD_WAIT_ACK_TIME 50
#define NB_ONLINE_KEEP_TIME 50
#ifdef __cplusplus
}
#endif
#endif
#endif /* __LYBK_FRAME_H__ */
/******************************************************************************
* EOF (not truncated)
******************************************************************************/