log_ai.c 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #include "at32f403a_407.h"
  2. #include "log_ai.h"
  3. #include "settings_api.h"
  4. #include "ringfs.h"
  5. #include "ringfs_api.h"
  6. #if defined (MAI_12)
  7. uint32_t archive_cnt[ARCH_AI_CH_NUMBER] = {0};
  8. struct ringfs fs_ch_arch[ARCH_AI_CH_NUMBER];
  9. static struct ringfs_flash_partition fingfs_flash_ch_arch[ARCH_AI_CH_NUMBER] =
  10. {
  11. {
  12. .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET,
  13. .sector_erase = op_sector_erase,
  14. .program = op_program,
  15. .read = op_read,
  16. },
  17. {
  18. .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*1,
  19. .sector_erase = op_sector_erase,
  20. .program = op_program,
  21. .read = op_read,
  22. },
  23. {
  24. .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*2,
  25. .sector_erase = op_sector_erase,
  26. .program = op_program,
  27. .read = op_read,
  28. },
  29. {
  30. .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*3,
  31. .sector_erase = op_sector_erase,
  32. .program = op_program,
  33. .read = op_read,
  34. },
  35. {
  36. .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*4,
  37. .sector_erase = op_sector_erase,
  38. .program = op_program,
  39. .read = op_read,
  40. },
  41. {
  42. .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*5,
  43. .sector_erase = op_sector_erase,
  44. .program = op_program,
  45. .read = op_read,
  46. },
  47. {
  48. .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*6,
  49. .sector_erase = op_sector_erase,
  50. .program = op_program,
  51. .read = op_read,
  52. },
  53. {
  54. .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*7,
  55. .sector_erase = op_sector_erase,
  56. .program = op_program,
  57. .read = op_read,
  58. },
  59. {
  60. .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*8,
  61. .sector_erase = op_sector_erase,
  62. .program = op_program,
  63. .read = op_read,
  64. },
  65. {
  66. .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*9,
  67. .sector_erase = op_sector_erase,
  68. .program = op_program,
  69. .read = op_read,
  70. },
  71. {
  72. .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*10,
  73. .sector_erase = op_sector_erase,
  74. .program = op_program,
  75. .read = op_read,
  76. },
  77. {
  78. .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*11,
  79. .sector_erase = op_sector_erase,
  80. .program = op_program,
  81. .read = op_read,
  82. }
  83. };
  84. #undef DBG
  85. #define DBG if(1)
  86. // Архив. 12 буферов на каждый канал.
  87. void log_ai_archive_init(void)
  88. {
  89. for (uint8_t i = 0; i < ARCH_AI_CH_NUMBER; i ++)
  90. {
  91. fingfs_flash_ch_arch[i].sector_size = spi_flash_desc.sector_size,
  92. fingfs_flash_ch_arch[i].sector_count = ARCHIVE_FLASH_SECTOR_COUNT,
  93. ringfs_init(&fs_ch_arch[i], &fingfs_flash_ch_arch[i],
  94. ARCHIV_ENTRY_VERSION + i, sizeof(archive_entry_t));
  95. if (ringfs_scan(&fs_ch_arch[i]) != 0) {
  96. DBG printf("FAT for channel %u is false\r\n", i + 1);
  97. ringfs_format(&fs_ch_arch[i]);
  98. }
  99. DBG printf("FAT for channel %u is true\r\n", i + 1);
  100. }
  101. }
  102. //
  103. uint8_t log_get_arch_channel_number(void)
  104. {
  105. return (uint8_t)ARCH_AI_CH_NUMBER;
  106. }
  107. #endif