#ifndef WATERMETER_MANAGER_H__ #define WATERMETER_MANAGER_H__ #include "include.h" #define SHUANGJIA_MANAGERUNIT_VALID (0x12345679) #define ADDRESS_LENGTH (7) #define METER_DATA_MAX_SIZE (4) #define ADDR_LIST_LENGTH (0xFF) #define VALID_FLAG (0xAA) #define INVALID_FLAG (0x55) #pragma pack(1) typedef struct { u8 AddrValidFlag; u8 Address[ADDRESS_LENGTH]; }METER_ADDR_UNITTYPE,* LPMETER_ADDR_UNITTYPE; typedef struct { //u8 Data[METER_DATA_MAX_SIZE]; u8 DataValidFlag; u8 BCD_Decimal; u8 BCD_Integer_L; u8 BCD_Integer_M; u8 BCD_Integer_H; u8 FailCount;//抄表失败计数 u8 StateFlag0; u8 StateFlag1; u8 TSec; u8 TMin; u8 THour; u8 TDay; u8 TMonth; u8 TYaer; }METER_DATA_UNITTYPE,* LPMETER_DATA_UNITTYPE; typedef struct { u8 Index; METER_ADDR_UNITTYPE Addr; METER_DATA_UNITTYPE Data; u16 CRCV; }METER_STRUCT_UNITTYPE, * LPMETER_STRUCT_UNITTYPE; typedef enum { NKNOW = 0x00, //未知 EXIST_ADDR_DATA_INVALID, //存在地址但是数据无效 EXIST_ADDR_DATA_VALID, //存在地址但是数据有效 EXIST_ADDR_CRC_ERROR, //存在地址但数据CRC校验错误 ADDR_OVERFLOW, NO_EXIST_ADDR, //不存在地址 }RETURN_TYPE; //新天采集器地址档案数据管理单元 typedef struct { u32 ValidFlag; u8 AddrSum; //地址总长度 METER_STRUCT_UNITTYPE Info[ADDR_LIST_LENGTH]; //当前数据存储信息 }SJ_ADDRLIST_MANUNIT_TYPE,* SP_SJ_ADDRLIST_MANUNIT_TYPE; #pragma pack() void SJMeterInfoInit( void ); bool UpdateRFReceiveData(u8* addr,u8* data,u8* status); RETURN_TYPE ReadAddrListDataInfo( LPMETER_STRUCT_UNITTYPE Pload ,bool Save); void ClearMeterDataTimeOuttime( void ); bool UpdataWMRMFailCounterProcess(u8* addr); #endif //WATERMETER_MANAGER_H__