records.h 2.4 KB

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