12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #ifndef __RECORDS_H_
- #define __RECORDS_H_
- #define VALID_FILE_MARD "Sz5028Td" //有效文件标识,放在文件开头
- #define RECORD_START_INDEX strlen(VALID_FILE_MARD)
- #define MAX_NUM_DEV_RECORD 1000 //最多同时存储设备消息记录个数
- #define MAX_NUM_GNSS_RECORD 1000 //最多同时存储GNSS消息记录个数
- #define MAX_NUM_NEAR_RECORD 200 //最多同时存储附近消息记录个数
- #define MARD_EMPTY "5a" //无记录,长度必须与MARK_TAIL一致
- #define MARK_TAIL "6c" //有记录尾标识
- #define MARDS_SIZE 2 //标识大小,需要与markTail大小一致
- #define EXT_SIZE_ACC 1 //因为#if条件里面不能使用sizeof来实现,因此这个值用于至少给dummy赋有一个元素,就不用#if了 本值没有太大意义
- #define REC_DEV_REAL_SIZE (MARDS_SIZE+sizeof(DEVICEINFO_DEF)-EXT_SIZE_ACC) //设备消息记录实际大小
- #define REC_DEV_DUMMY_SIZE (8-(REC_DEV_REAL_SIZE%8)-2) //为凑足8的倍数 -2 markTail 大小
- #define REC_GNSS_REAL_SIZE (MARDS_SIZE+sizeof(GNSSINFO_DEF)-EXT_SIZE_ACC) //GNSS消息记录实际大小
- #define REC_GNSS_DUMMY_SIZE (8-(REC_GNSS_REAL_SIZE%8)-2) //为凑足8的倍数 -2 markTail 大小
- #define REC_NEAR_REAL_SIZE (MARDS_SIZE+sizeof(NEARINFO_DEF)-EXT_SIZE_ACC) //NEAR消息记录实际大小
- #define REC_NEAR_DUMMY_SIZE (8-(REC_NEAR_REAL_SIZE%8)-2) //为凑足8的倍数 -2 markTail 大小
- //设备,GNSS,NEAR共占用 32*MAX_NUM_DEV_RECORD + 32*MAX_NUM_GNSS_RECORD + 152*MAX_NUM_NEAR_RECORD
- typedef struct{//保存设备信息单元
- DEVICEINFO_DEF record;
- unsigned char dummy[EXT_SIZE_ACC+REC_DEV_DUMMY_SIZE];
- unsigned char markTail[MARDS_SIZE];
- }__attribute__((packed)) DEV_SAVE_DEF;//32
- typedef struct{//保存GNSS信息单元
- GNSSINFO_DEF record;
- unsigned char dummy[EXT_SIZE_ACC+REC_GNSS_DUMMY_SIZE];
- unsigned char markTail[MARDS_SIZE];
- }__attribute__((packed)) GNSS_SAVE_DEF;//32
- typedef struct{//保存附近设备信息单元
- NEARINFO_DEF record;
- unsigned char dummy[EXT_SIZE_ACC+REC_NEAR_DUMMY_SIZE];
- unsigned char markTail[MARDS_SIZE];
- }__attribute__((packed)) NEAR_SAVE_DEF;//152
- extern DEV_SAVE_DEF sut_saveRecDev;
- extern GNSS_SAVE_DEF sut_saveRecGnss;
- extern NEAR_SAVE_DEF sut_saveRecNear;
- void recordsInit(void);
- char recordSave(unsigned char rectype, void *smsinfo);
- char recordRead(unsigned char rectype, void *smsinfo);
- void updateRecordTail(unsigned char rectype);
- #endif
|