log.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. #ifndef __LOG_H
  2. #define __LOG_H
  3. #include "at32f403a_407.h"
  4. #include <stdbool.h>
  5. #define LOG_ENTRY_VERSION 1
  6. #define ARCHIV_ENTRY_VERSION 1
  7. #define LOG_FLASH_SECTOR_OFFSET 4
  8. #define LOG_FLASH_SECTOR_COUNT 252
  9. #define ARCHIVE_FLASH_SECTOR_OFFSET 260
  10. #define ARCHIVE_FLASH_SECTOR_COUNT 252
  11. #define SECTOR_COUNT (spi_flash_desc.sector_count/2 - LOG_FLASH_SECTOR_OFFSET)
  12. //
  13. typedef enum
  14. {
  15. LOG_SYSTEM_BOOT = 0, // device booted
  16. LOG_SYSTEM_DEFCONFIG, // default config applied
  17. LOG_UPDATE_SOFT,
  18. LOG_TURN_ON, //
  19. LOG_PSW_CHANGE, //
  20. LOG_SETTING_SAVE, //
  21. LOG_LOGIN_TELNET, //
  22. LOG_LOGIN_SSH,
  23. LOG_LOGIN, //
  24. LOG_TEST_UPS, //
  25. LOG_SHUTDOWN_UPS,
  26. LOG_ALARM_VAC_LOW_OUTPUT,
  27. LOG_ALARM_VAC_HIGH_OUTPUT,
  28. LOG_ALARM_HIGH_TEMP,
  29. LOG_ALARM_LOW_TEMP,
  30. LOG_ALARM_LINE,
  31. LOG_ALARM_LOW_BAT,
  32. LOG_ALARM_POWER,
  33. LOG_ALARM_UPS,
  34. LOG_ALARM_AKB,
  35. LOG_ALARM_CHANGE_AKB,
  36. LOG_PHASE_FAIL,
  37. LOG_EPO_FAIL,
  38. LOG_VALUE,
  39. LOG_NONE,
  40. } log_type_t;
  41. typedef enum
  42. {
  43. LOG_ENTRY = 0,
  44. ARCHIVE_ENTRY,
  45. } entry_type_t;
  46. typedef __packed struct
  47. {
  48. uint64_t timestamp;
  49. } common_entry_t;
  50. //
  51. typedef __packed struct
  52. {
  53. uint64_t timestamp;
  54. log_type_t type:8;
  55. char data[50];
  56. } log_entry_t;
  57. typedef __packed struct
  58. {
  59. uint64_t timestamp;
  60. uint8_t input_value;
  61. uint8_t crc;
  62. } archive_entry_t;
  63. void log_init(bool format);
  64. // -------------------------------------------------------------------------- //
  65. // Tests
  66. // fs_log
  67. int log_test(void);
  68. // fs_archive
  69. int test_archive(void);
  70. //
  71. int test_add_random_archive_entry(uint32_t cnt_entry);
  72. //
  73. void test_archive_info(void);
  74. //
  75. void test_fetch(void);
  76. //
  77. void test_archive_format(void);
  78. #if 0
  79. #include "main.h"
  80. #include "common_config.h"
  81. #define FILE_BUF_MAX_LEN 10*STRING_SIZE_HISTORY // Размер временного буфера для отправки/копирования Лог файла
  82. #define FILE_BUF_MAX_LEN_LOG 10*STRING_SIZE // Размер временного буфера для отправки/копирования Лог файла
  83. #define STRING_SIZE 64
  84. #define STRING_SIZE_HISTORY 100
  85. #define UPS_DATA_STRING_SIZE 47
  86. extern char logFileBuf[FILE_BUF_MAX_LEN];
  87. extern char name_login[50];
  88. #define LOG_ENTRY_VERSION 1
  89. extern void log_init(bool format);
  90. extern int log_test(void);
  91. extern int log_append(log_entry_t *entry);
  92. extern int log_fetch(log_entry_t *entry, uint32_t timeout);
  93. extern int log_rewind(log_entry_t *entry, uint32_t timeout);
  94. extern int log_discard(log_entry_t *entry, uint32_t timeout);
  95. void log_add(char *log_data);
  96. void log_event_data(log_type_t type, char *data);
  97. /**
  98. * @brief Возвращает true если журнал проинициализирован
  99. */
  100. bool LOG_IsInit();
  101. /**
  102. * @brief Отключает журнал для безопасной перезагрузки
  103. */
  104. bool LOG_Disable(void);
  105. /**
  106. * @brief Возвращает общее количество страниц
  107. */
  108. uint32_t LOG_GetPageCount(void);
  109. uint32_t LOG_GetTotalSTRCount(void);
  110. void LOG_GetPage(char *str, uint32_t page);
  111. void LOG_GetPage_tabs(char *str, uint32_t page);
  112. uint32_t LOG_GetData(int ptr, char *str, uint32_t size, bool start);
  113. uint32_t History_GetPageCount(void);
  114. uint32_t History_GetTotalSTRCount(void);
  115. void History_GetPage(char *str, uint32_t page);
  116. uint32_t History_GetData(int ptr, char *str, uint32_t size, bool start);
  117. void History_GetPage_tabs(char *str, uint32_t page);
  118. #endif
  119. #endif /* __LOG_H */