| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 | 
							- #include "at32f403a_407.h"
 
- #include "log_ai.h"
 
- #include "settings_api.h"
 
- #include "ringfs.h"
 
- #include "ringfs_api.h"
 
- #if defined (MAI_12)
 
- #undef DBG
 
- #define DBG if(1)
 
- EventGroupHandle_t archive_event;
 
- uint32_t archive_cnt[ARCH_AI_CH_NUMBER] = {0};
 
- struct ringfs fs_ch_arch[ARCH_AI_CH_NUMBER];
 
- static struct ringfs_flash_partition fingfs_flash_ch_arch[ARCH_AI_CH_NUMBER] = 
 
- {
 
-     {
 
-         .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET,
 
-         .sector_erase = op_sector_erase,
 
-         .program = op_program,
 
-         .read = op_read,
 
-     },
 
-     {
 
-         .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*1,
 
-         .sector_erase = op_sector_erase,
 
-         .program = op_program,
 
-         .read = op_read,
 
-     },
 
-     {
 
-         .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*2,
 
-         .sector_erase = op_sector_erase,
 
-         .program = op_program,
 
-         .read = op_read,
 
-     },
 
-     {
 
-         .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*3,
 
-         .sector_erase = op_sector_erase,
 
-         .program = op_program,
 
-         .read = op_read,
 
-     },
 
-     {
 
-         .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*4,
 
-         .sector_erase = op_sector_erase,
 
-         .program = op_program,
 
-         .read = op_read,
 
-     },
 
-     {
 
-         .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*5,
 
-         .sector_erase = op_sector_erase,
 
-         .program = op_program,
 
-         .read = op_read,
 
-     },
 
-     {
 
-         .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*6,
 
-         .sector_erase = op_sector_erase,
 
-         .program = op_program,
 
-         .read = op_read,
 
-     },
 
-     {
 
-         .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*7,
 
-         .sector_erase = op_sector_erase,
 
-         .program = op_program,
 
-         .read = op_read,
 
-     },
 
-     {
 
-         .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*8,
 
-         .sector_erase = op_sector_erase,
 
-         .program = op_program,
 
-         .read = op_read,
 
-     },
 
-     {
 
-         .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*9,
 
-         .sector_erase = op_sector_erase,
 
-         .program = op_program,
 
-         .read = op_read,
 
-     },
 
-     {
 
-         .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*10,
 
-         .sector_erase = op_sector_erase,
 
-         .program = op_program,
 
-         .read = op_read,
 
-     },
 
-     {
 
-         .sector_offset = ARCHIVE_FLASH_SECTOR_OFFSET + ARCHIVE_CHANNEL_OFFSET*11,
 
-         .sector_erase = op_sector_erase,
 
-         .program = op_program,
 
-         .read = op_read,
 
-     }
 
- };
 
- // Архив. 12 буферов на каждый канал.
 
- void log_ai_archive_init(void)
 
- {
 
-     for (uint8_t i = 0; i < ARCH_AI_CH_NUMBER; i ++) 
 
-     {
 
-         fingfs_flash_ch_arch[i].sector_size = spi_flash_desc.sector_size;
 
-         
 
-         fingfs_flash_ch_arch[i].sector_count = ARCHIVE_FLASH_SECTOR_COUNT;
 
-         
 
-         ringfs_init(&fs_ch_arch[i], &fingfs_flash_ch_arch[i], 
 
-                     ARCHIV_ENTRY_VERSION + i, sizeof(archive_entry_t));
 
-         
 
-         if (ringfs_scan(&fs_ch_arch[i]) != 0) {
 
-             DBG printf("FAT for channel %u is false\r\n", i + 1);
 
-             ringfs_format(&fs_ch_arch[i]);
 
-         }
 
-         DBG printf("FAT for channel %u is true\r\n", i + 1);
 
-     }
 
- }
 
- //
 
- uint8_t log_get_arch_channel_number(void)
 
- {
 
-     return (uint8_t)ARCH_AI_CH_NUMBER;
 
- }
 
- //
 
- uint8_t log_is_channel_on(uint8_t channel)
 
- {
 
-     return settings.ai[channel].state;
 
- }
 
- //
 
- void log_archive_task_device(void)
 
- {
 
-     int ret = 0;
 
-     EventBits_t bits;
 
-     archive_entry_t entry = {0};
 
-     
 
-     bits = xEventGroupWaitBits(archive_event, 
 
-                                ARCH_CH_1 | ARCH_CH_2 | ARCH_CH_3 | ARCH_CH_4 | 
 
-                                ARCH_CH_5 | ARCH_CH_6 | ARCH_CH_7 | ARCH_CH_8 |
 
-                                ARCH_CH_9 | ARCH_CH_10 | ARCH_CH_11 | ARCH_CH_12,
 
-                                pdTRUE, pdFALSE, portMAX_DELAY);
 
-      
 
-     for (uint32_t i = 0; i < ARCH_AI_CH_NUMBER; i++)
 
-     {
 
-         if (bits & (1 << i))
 
-         {
 
-             DBG printf("Archive event: %u\r\n", (1 << i));
 
-                 
 
-             entry.timestamp = 0;
 
-             //entry.input_value = di_get(i - 1);
 
-             entry.input_value = 1;
 
-         
 
-             DBG printf("Append archive entry...");
 
-             ret = log_append((void*)&entry, ARCHIVE_ENTRY, i - 1);
 
-                 
 
-             if (ret != 0) {
 
-                 DBG printf("FAIL\r\n");
 
-             }
 
-             else {  
 
-                 DBG printf("OK\r\n");
 
-             }
 
-         }
 
-     }
 
- }
 
- #endif
 
 
  |