log_dio.c 2.7 KB

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