#ifndef LOG_H #define LOG_H #include "main.h" #define FILE_BUF_MAX_LEN 10*STRING_SIZE_HISTORY // Размер временного буфера для отправки/копирования Лог файла #define FILE_BUF_MAX_LEN_LOG 10*STRING_SIZE // Размер временного буфера для отправки/копирования Лог файла #define STRING_SIZE 64 #define STRING_SIZE_HISTORY 100 extern char logFileBuf[FILE_BUF_MAX_LEN]; extern char name_login[50]; typedef __packed enum { LOG_SYSTEM_BOOT = 0x00, // device booted LOG_SYSTEM_DEFCONFIG, // default config applied LOG_UPDATE_SOFT, LOG_TURN_ON, // LOG_PSW_CHANGE, // LOG_SETTING_SAVE, // LOG_LOGIN, // LOG_TEST_UPS, // LOG_SHUTDOWN_UPS, LOG_ALARM_DIO, LOG_DO0_STATE, LOG_DO1_STATE, LOG_ALARM_TEMP, LOG_ALARM_LINE, LOG_ALARM_LOW_BAT, LOG_ALARM_POWER, LOG_ALARM_UPS, LOG_ALARM_AKB, LOG_VALUE, LOG_NONE, } log_type_t; typedef __packed struct { uint32_t timestamp; log_type_t type:8; char data[50]; } log_entry_t; #define LOG_ENTRY_VERSION 1 extern void log_init(bool format); extern int log_test(void); extern int log_append(log_entry_t *entry); extern int log_fetch(log_entry_t *entry, uint32_t timeout); extern int log_rewind(log_entry_t *entry, uint32_t timeout); extern int log_discard(log_entry_t *entry, uint32_t timeout); void log_add(char *log_data); void log_event_data(log_type_t type, char *data); /** * @brief Возвращает true если журнал проинициализирован */ bool LOG_IsInit(); /** * @brief Отключает журнал для безопасной перезагрузки */ bool LOG_Disable(void); /** * @brief Возвращает общее количество страниц */ uint32_t LOG_GetPageCount(void); uint32_t LOG_GetTotalSTRCount(void); void LOG_GetPage(char *str, uint32_t page); uint32_t LOG_GetData(int ptr, char *str, uint32_t size, bool start); uint32_t History_GetPageCount(void); uint32_t History_GetTotalSTRCount(void); void History_GetPage(char *str, uint32_t page); uint32_t History_GetData(int ptr, char *str, uint32_t size, bool start); #endif /* LOG_H */