| 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(0)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);                            if (ret != 0) {                DBG printf("FAIL\r\n");            }            else {                  DBG printf("OK\r\n");            }        }    }}#endif
 |