#ifndef UWATER_FRAME_FUNC_REPLAY_BLE_H
#define	UWATER_FRAME_FUNC_REPLAY_BLE_H
#include "sys_config.h"
#include "type.h"
#if PRODUCT_BLE_SS
//----------------------------------------------蓝牙规约协议----------------------------------------/ 
/**
数据标识0不从0开始；
增加读取功能配置字
*/
//抄读表数
#define BLE_READ_DATA_DI0                 0x00
#define BLE_READ_DATA_DI1                 0x50
//阀控
#define BLE_VALVE_CTRL_DI0                0x01
#define BLE_VALVE_CTRL_DI1                0x50
//读取表地址
#define BLE_READ_MET_DI0                  0x02
#define BLE_READ_MET_DI1                  0x50
//设置表地址
#define BLE_SET_MET_DI0                   0x03
#define BLE_SET_MET_DI1                   0x50
//设置表底数
#define BLE_SET_DATA_DI0                  0x04
#define BLE_SET_DATA_DI1                  0x50
//升级
#define BLE_SET_BOOT_DI0                  0x05
#define BLE_SET_BOOT_DI1                  0x50
//读软件版本
#define BLE_READ_VERSION_DI0              0x06
#define BLE_READ_VERSION_DI1              0x50
//读表时间
#define BLE_READ_TIME_DI0                 0x07
#define BLE_READ_TIME_DI1                 0x50
//设置表时间
#define BLE_SET_TIME_DI0                  0x08
#define BLE_SET_TIME_DI1                  0x50
//启动自检
#define BLE_TEST_START_DI0                0x09
#define BLE_TEST_START_DI1                0x50
//查询自检
#define BLE_TEST_READ_DI0                 0x0A
#define BLE_TEST_READ_DI1                 0x50
//启动校准
#define BLE_ADJUST_START_DI0              0x0B
#define BLE_ADJUST_START_DI1              0x50
//查询校准
#define BLE_ADJUST_READ_DI0               0x0C
#define BLE_ADJUST_READ_DI1               0x50
//读SOE
#define BLE_READ_SOE_DI0                  0x0D
#define BLE_READ_SOE_DI1                  0x50
//读欠压阈值
#define BLE_READ_PWLOW_DI0                0x0E
#define BLE_READ_PWLOW_DI1                0x50
//设置欠压阈值
#define BLE_SET_PWLOW_DI0                 0x0F
#define BLE_SET_PWLOW_DI1                 0x50
//读EE数据
#define BLE_READ_EEPROM_DI0               0x10
#define BLE_READ_EEPROM_DI1               0x50
//擦除EEPROM
#define BLE_ERASE_EEPROM_DI0              0x11
#define BLE_ERASE_EEPROM_DI1              0x50
//读RAM区数据
#define BLE_READ_RAM_DI0                  0x12
#define BLE_READ_RAM_DI1                  0x50
//读取过流告警值与持续时间
#define BLE_READ_OVERFLOW_DI0             0x13
#define BLE_READ_OVERFLOW_DI1             0x50
//设置过流告警值与持续时间
#define BLE_SET_OVERFLOW_DI0              0x14
#define BLE_SET_OVERFLOW_DI1              0x50
//读取过流告警值与持续时间
#define BLE_READ_ROVERFLOW_DI0            0x15
#define BLE_READ_ROVERFLOW_DI1            0x50
//设置过流告警值与持续时间
#define BLE_SET_ROVERFLOW_DI0             0x16
#define BLE_SET_ROVERFLOW_DI1             0x50
//读日结数据
#define BLE_READ_DAILY_DI0                0x17
#define BLE_READ_DAILY_DI1                0x50
//读月结数据
#define BLE_READ_MONTH_DI0                0x18
#define BLE_READ_MONTH_DI1                0x50
//MCU重启
#define BLE_RESET_MCU_DI0                 0x19
#define BLE_RESET_MCU_DI1                 0x50
//设置功能配置字
#define BLE_SET_CONFIG_DI0                0x1A
#define BLE_SET_CONFIG_DI1                0x50
//读瞬时流量和温度
#define BLE_READ_FLOWTEMP_DI0             0x1B
#define BLE_READ_FLOWTEMP_DI1             0x50
//进入检定
#define BLE_ENTER_TEST_DI0                0x1C
#define BLE_ENTER_TEST_DI1                0x50
//读检定数据
#define BLE_READ_TEST_DI0                 0x1D
#define BLE_READ_TEST_DI1                 0x50
//退出检定
#define BLE_EXIT_TEST_DI0                 0x1E
#define BLE_EXIT_TEST_DI1                 0x50
//读某日历史数据
#define BLE_READ_HIS_DI0                  0x1F
#define BLE_READ_HIS_DI1                  0x50

//设置OTA升级标志
#define BLE_OTA_NOTIC_DI0                 0x80
#define BLE_OTA_NOTIC_DI1                 0x50

typedef enum{	
	BLE_STATE_S0 = 0,
	BLE_STATE_S1,
	BLE_STATE_S2,
	BLE_STATE_S3,
	BLE_STATE_S4
}TYP_STATE_BLE;

#define PACK_NUM_GPRS  155
//获取状态字
UNION_4U8TOU32 getBleWetState(void);
//规约数据存储部分初始化
void DataStoreInit(void);
//规约数据存储状态机
void DataStoreMachine(void);
//规约数据存储休眠判断
u8 DataStoreIfIdle(void);
	
u8 crack_frame_BLE(u16 frame_lenth,u8 *frame_buffer);
//深水规约处理
u8 up_deal_code_ble(void);
void Frame_ResetDealState_BLE(void);
//应答数据组帧
void Frame_ack_BLE(u8* p_send_buf, u16* p_send_len);

u32 sys_get_net_state(void);
void setBleReadAccessFlag(u8 data);

#endif
#endif	


