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

128 lines
4.4 KiB
C

#ifndef __FILEDATA_H
#define __FILEDATA_H
#define DEBUG_FILEI2C
#define IIC_WATEPLUS_ADDR (1)
#define IIC_CUR_TIME_ADDR (1024)
#define IIC_WATERDATA_ADDR (10) //存放数据是否有效
#define IIC_DAYDATA_ADDR (2048) //每日数据存放空间
#define IIC_PAGE_NUM (128)
#define DATA_VALID_AA (0xAA)
#define DATA_DAY_MAX (30)
#define WATERDATA_LEN (31)
#define CUR_TIME_LEN (13)
#define VALID_DATA_LEN (7)
#define DEC_YEAR (2000-1900)
#define CUR_YEAR (121)
#define uint8_t u8
#define uint16_t u16
#define uint32_t u32
#define HT_PRINT printf
#define COLLECT_DENSITY_15 (1) //15分钟
#define COLLECT_DENSITY_30 (2) //30分钟
#define COLLECT_DENSITY_60 (3) //一小时
#pragma pack(1)
struct waterdata_struct
{
uint8_t invalid; //是否有效, 1
uint8_t current[5]; //取水口流量 5
uint8_t sum[5]; //取水口累计流量 5
uint8_t surplus[6]; //水表1剩余水量 6
u8 ala[4]; //遥测状态及报警信息 4
u8 vol[2]; //蓄电池电压 2
u8 csq; //信号强度CSQ 1
uint32_t year; // 4
uint8_t mon; // 1
uint8_t day; // 1
uint8_t hour; // 1
uint8_t min; // 1
uint8_t crc;
};
struct curtime_struct
{
uint32_t time; //当天时间 秒数
uint32_t year;
uint8_t mon;
uint8_t day;
uint8_t hour;
uint8_t min;
uint8_t sec;
uint8_t crc;
};
struct valid_struct
{
uint8_t valid; //当天数据是否有效
uint32_t year;
uint8_t mon;
uint8_t day;
uint8_t crc;
};
/* Exported types ------------------------------------------------------------*/
typedef struct
{
uint8_t Year; /*!<RTC 年*/
uint8_t Month; /*!<RTC 月*/
uint8_t Date; /*!<RTC 日*/
uint8_t Hour; /*!<RTC 时*/
uint8_t Minute; /*!<RTC 分*/
uint8_t Second; /*!<RTC 秒*/
uint8_t Week; /*!<RTC 周*/
}RTC_TimeDateTypeDef,RTC_StampTmieTypeDef;
#pragma pack()
void file_write_delay();
void file_i2c_write(uint32_t addr,uint8_t * buf,uint16_t len);
void file_i2c_read(uint32_t addr,uint8_t * buf,uint16_t len);
uint8_t get_ck(uint8_t *val, uint16_t len);
uint8_t get_period_day();
uint32_t get_curtime();
void file_curtime_write(uint8_t * buf,uint8_t len);
void file_curtime_read(uint8_t * buf,uint8_t len);
void file_validflag_write(uint8_t day,uint8_t * buf,uint8_t len);
void file_validflag_read(uint8_t day,uint8_t * buf,uint8_t len);
void validflag_read(uint8_t day);
void validflag_write(uint32_t year,uint8_t mon,uint8_t date,uint8_t day);
uint8_t get_validflag();
uint32_t get_validyear();
uint8_t get_validmon();
uint8_t get_validday();
uint8_t get_realday(uint8_t day);
void file_waterdata_write(uint8_t day,uint8_t hour,uint8_t min,uint8_t * buf,uint16_t len);
void file_waterdata_read(uint8_t day,uint8_t hour,uint8_t min,uint8_t * buf,uint16_t len);
void get_complete_curtime(uint32_t *curyear,uint8_t *curmon,uint8_t *curday,uint8_t *curhour,uint8_t *curmin);
uint8_t bcd_to_dec(uint8_t val);
uint8_t get_space_day(uint32_t oldtime,uint32_t newtime);
unsigned long mktime (unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec);
void waterdata_write(uint32_t year,uint8_t mon,uint8_t day,uint8_t hour,uint8_t min,uint8_t sec);
#define IIC_DATA_ADDR (4096*4)
#define WATERDATA_ONE_LEN (sizeof(struct waterdata_struct))
#endif