| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 | #ifndef __LOG_H#define __LOG_H#include "at32f403a_407.h"#include <stdbool.h>#ifdef __cplusplusextern "C" {#endif    #define LOG_ENTRY_VERSION               1#define ARCHIV_ENTRY_VERSION            1#define LOG_FLASH_SECTOR_OFFSET         4#define LOG_FLASH_SECTOR_COUNT          51#define ARCHIVE_FLASH_SECTOR_OFFSET     60#define ARCHIVE_FLASH_SECTOR_COUNT      30 //38#define ARCHIVE_CHANNEL_OFFSET          (ARCHIVE_FLASH_SECTOR_COUNT + 4)  #define SECTOR_COUNT (spi_flash_desc.sector_count/2 - LOG_FLASH_SECTOR_OFFSET)      #define MB_ARCHIVE_ENTRY                0x06  #define MB_LOG_ENTRY                    0x07  // -------------------------------------------------------------------------- //    // События архивовtypedef enum{    ARCH_CH_1 = 1 << 0,    ARCH_CH_2 = 1 << 1,    ARCH_CH_3 = 1 << 2,    ARCH_CH_4 = 1 << 3,    ARCH_CH_5 = 1 << 4,    ARCH_CH_6 = 1 << 5,    ARCH_CH_7 = 1 << 6,    ARCH_CH_8 = 1 << 7,    ARCH_CH_9 = 1 << 8,    ARCH_CH_10 = 1 << 9,    ARCH_CH_11 = 1 << 10,    ARCH_CH_12 = 1 << 11,    } arch_event_t;  //typedef enum {    LOG_SYSTEM_BOOT = 1,    // включение питания/перезагрузка    LOG_CLOCK_CHANGE,       // перевод времени    LOG_UPDATE_FW,          // обновление FW    LOG_SYSTEM_ERR,         // самодиагностика/системная ошибка    LOG_CHANGE_CONFIG,      // изменение конфигурации    LOG_OUPUTS,             // диагностика выходов    LOG_SETPOINT,           // срабатывание уставок    LOG_SAVE_MODE,          // переход в безопасный режим    LOG_CLEAR,              // очистка журнала/архива        LOG_NONE,} log_event_type_t;typedef enum{    LOG_EVENT_STATE_ERR = 0,    LOG_EVENT_STATE_OK,    } log_event_state_t;typedef enum{    LOG_ENTRY = 0,    ARCHIVE_ENTRY,    } entry_type_t;//typedef __packed struct {    uint64_t timestamp;    } common_entry_t;// Структура записи жураналаtypedef __packed struct {	uint64_t timestamp;    uint8_t code_type;  // код типа события    uint8_t code_state; // код состояния    uint8_t channel_number; // номер канала    float value;        // значение    uint8_t crc;    } log_entry_t;// Структура архивной записиtypedef __packed struct{    uint64_t timestamp;    uint8_t input_value;    uint8_t crc;    } archive_entry_t;//void log_init(bool format);//void log_init_archive_tim(void);//int log_fetch(void *entry, entry_type_t entry_type, uint8_t ch, uint32_t timeout);//int log_discard(void *entry, entry_type_t entry_type, uint8_t ch, uint32_t timeout);// int log_append(void *entry, entry_type_t entry_type, uint8_t ch);//uint16_t log_capacity(void);//uint16_t log_arch_capacity(uint8_t ch);// -------------------------------------------------------------------------- //// miscuint8_t crc_8(uint8_t *data, int length);// -------------------------------------------------------------------------- //// Tests//void log_info(uint8_t val, uint8_t ch);//void log_format(uint8_t val, uint8_t ch);//int log_add_random_entry(uint8_t val, uint32_t cnt_entry, uint8_t ch);//int log_add_entry(log_event_type_t type, log_event_state_t state,                   uint8_t channel_number, float value);//void test_fetch(void);//void log_archive_state(bool state);//void log_log_state(bool state);//void test_archive_format(void);//void log_check_archive_cnt(void);// -------------------------------------------------------------------------- //extern uint16_t log_entries_capacity;extern uint16_t archive_entries_capacity;#ifdef __cplusplus}#endif#endif /* __LOG_H */
 |