Files
HBshuiwuConcentrator/APP/WaterMetermanager.h
2025-12-15 16:07:49 +08:00

126 lines
2.2 KiB
C

#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__