settings_api.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. /********************************* (C) РОТЕК ***********************************
  2. * @module settings_api
  3. * @file settings_api.h
  4. * @version 1.0.0
  5. * @date XX.XX.XXXX
  6. * $brief settings_api
  7. *******************************************************************************
  8. * @history Version Author Comment
  9. * XX.XX.XXXX 1.0.0 Telenkov D.A. First release.
  10. *******************************************************************************
  11. */
  12. /* Define to prevent recursive ----------------------------------------------*/
  13. #ifndef SETTINGS_API_H
  14. #define SETTINGS_API_H
  15. #include "stm32f4xx.h"
  16. #include <stdbool.h>
  17. /**
  18. * @brief Параметры обновления ПО
  19. */
  20. typedef struct
  21. {
  22. uint8_t loadMode; // 0 - основная прошивка, 1 - режим обновления ПО
  23. uint8_t bootTry; // Признак
  24. } BOOT_PARAMS_t;
  25. /**
  26. * @brief Параметры сетевого подключения
  27. */
  28. typedef struct
  29. {
  30. char ip[15];
  31. char gate[15];
  32. char mask[15];
  33. uint8_t dhcpEnable; // 0 - DHCP отключен, 1 - включен
  34. } WEB_PARAMS_t;
  35. /**
  36. * @brief Параметры SNMP
  37. */
  38. typedef struct
  39. {
  40. char sysDescr[160];
  41. char readCommunity[20];
  42. char writeCommunity[20];
  43. char sysContact[50];
  44. char sysName[20];
  45. char sysLocation[110];
  46. char managerIP[20];
  47. char managerIP2[20];
  48. char managerIP3[20];
  49. } SNMP_t;
  50. /**
  51. * @brief Информация об устройстве
  52. */
  53. typedef struct
  54. {
  55. char productionData[40]; // Дата производства
  56. char mac[18]; // MAC адрес
  57. char serialNumber[16]; // Серийный номер
  58. char comments[110]; // Комментарии
  59. } DEVICE_INFO_t;
  60. /**
  61. * @brief Флаги, ключи и т.д.
  62. */
  63. typedef struct
  64. {
  65. bool netsettingsChanged; // Признак изменения сетевых настроек пользователем
  66. char testState[16]; // Статус производственного тестирования
  67. } FLAGS_t;
  68. /**
  69. * @brief Общая структура настроек
  70. */
  71. typedef struct
  72. {
  73. BOOT_PARAMS_t bootParams;
  74. WEB_PARAMS_t sWebParams;
  75. WEB_PARAMS_t sWebTempParams;
  76. SNMP_t sSnmp;
  77. DEVICE_INFO_t sInfo;
  78. FLAGS_t sFlags;
  79. uint32_t CritSecCRC;
  80. //uint32_t controlWorld; // Слово для контроля целостности структуры настроек
  81. } SETTINGS_t;
  82. /**
  83. * @brief
  84. * @retval
  85. */
  86. uint32_t SETTINGS_GetCritSecCRC(void);
  87. /**
  88. * @brief Установить параметры обновления ПО по умолчанию
  89. */
  90. void SETTINGS_SetBootParamsDef(void);
  91. /**
  92. * @brief Установить параметры сетевого подключения по умолчанию
  93. */
  94. void SETTINGS_SetWebParamsDef(void);
  95. /**
  96. * @brief Установить временные параметры сетевого подключения по умолчанию
  97. */
  98. void SETTINGS_SetTempWebParamsDef(void);
  99. /**
  100. * @brief Установить параметры SNMP по умолчанию
  101. */
  102. void SETTINGS_SetSnmpDef(void);
  103. /**
  104. * @brief Установить Информацию об устройстве по умолчанию
  105. */
  106. void SETTINGS_SetInfoDef(void);
  107. /**
  108. * @brief Установить флаги по умолчанию
  109. */
  110. void SETTINGS_SetFlagsDef(void);
  111. /**
  112. * @brief Очистка сектора настроек
  113. */
  114. void SETTINGS_EraseFlashSector(void);
  115. /**
  116. * @brief Сброс настроек в значения по умолчанию
  117. */
  118. void SETTINGS_SetDefault(void);
  119. /**
  120. * @brief Сброс всех настроек в значения по умолчанию кроме сетевых настроек
  121. */
  122. void SETTINGS_SetPartDefault(void);
  123. /**
  124. * @brief Сброс всех настроек в значения по умолчанию
  125. */
  126. void SETTINGS_SetAllDefault(void);
  127. /**
  128. * @brief Установка настроек для отладки
  129. */
  130. void SETTINGS_SetDefaultDebug(void);
  131. /**
  132. * @brief Запись структуры настроек во flesh
  133. */
  134. void SETTINGS_Save(void);
  135. /**
  136. * @brief Загрузка структуры настроек из flesh
  137. */
  138. void SETTINGS_Load(void);
  139. /**
  140. * @brief
  141. */
  142. void SETTINGS_WriteToFlash(uint8_t *data, uint32_t size);
  143. /**
  144. * @brief
  145. */
  146. void SETTINGS_ReadFromFlash(uint8_t *data, uint32_t size);
  147. /**
  148. * @brief
  149. */
  150. uint32_t SETTINGS_GetCRC(void);
  151. /**
  152. * @brief Сброс флага boottry и сохранение структуры настроек
  153. */
  154. void SETTINGS_ResetBootTry(void);
  155. /**
  156. * @brief Преобразует mac адрес строкового формата в массив uint8_t
  157. * @param mac - буфер для вывода mac адреса
  158. */
  159. void SETTINGS_GetMac(uint8_t *mac);
  160. /**
  161. * @brief Установить дату производства
  162. */
  163. void SETTINGS_SetProDate(char *proDate, uint8_t len);
  164. /**
  165. * @brief Установить статус тестирования "T2OK"
  166. */
  167. void SETTINGS_SetT2OK(void);
  168. /**
  169. * @brief Включить DHCP
  170. */
  171. void SETTINGS_SetDHCPOn(void);
  172. #endif /* #ifndef SETTINGS_API_H */
  173. /********************************* (C) РОТЕК **********************************/