settings_api.h 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. #ifndef SETTINGS_API_H
  2. #define SETTINGS_API_H
  3. #include "at32f403a_407.h"
  4. #include <stdbool.h>
  5. #include "usart.h"
  6. #include "sys_api.h"
  7. // Изменить версию если поменялась структура настроек
  8. #define SETTINGS_VERSION 0x01
  9. // ------------------------------------------------------------------- //
  10. // Modbus
  11. // ------------------------------------------------------------------- //
  12. // Modbus
  13. typedef struct
  14. {
  15. rate_t baud; // Скорость порта
  16. parity_t parity; // Четность
  17. databits_t databits; // Число бит данных
  18. stopbits_t stopbits; // Число стоп-бит
  19. } modbus_t;
  20. // Общая структура настроек для IAP и FW
  21. typedef struct
  22. {
  23. uint16_t mb_port; // Настройки порта для modbus
  24. } com_settings_t;
  25. // Полная структура настроек
  26. typedef struct
  27. {
  28. com_settings_t com_settings;
  29. uint32_t critical_section_crc;
  30. /* WARNING! До поля CritSecCRC включительно структура настроек должна быть
  31. * идентичной между бутлоадером и основным ПО и не должна изменяться при обновлении ПО.
  32. * Контроль целостности настроек внутри IAP выполняется только для критической секции,
  33. * т.к. контроль целостности всей структуры не имеет смысла
  34. * (структура настроек всегда будет отличаться внутри основного ПО).
  35. * В случае повреждения критического сектора, загружаются параметры по умолчанию. */
  36. uint16_t settings_version; // Версия структуры настроек
  37. uint32_t control_word; // Слово для контроля целостности структуры настроек
  38. } settings_t;
  39. // Загрузка структуры настроек из flesh
  40. void settings_load(settings_t *settings);
  41. //
  42. void init_settings(void);
  43. //
  44. void settings_read_from_flash(uint8_t *data, uint32_t size);
  45. //
  46. uint32_t settings_get_crc(settings_t *settings);
  47. //
  48. uint32_t settings_get_crit_sec_crc(settings_t *settings);
  49. // Сброс всех настроек в значения по умолчанию
  50. void settings_set_all_default(void);
  51. // -------------------------------------------------------------------------- //
  52. // Настройки по умолчанию
  53. //
  54. void settings_set_modbus_def(uint16_t *mb_port);
  55. //
  56. void settings_conv_modbus_def(modbus_t *mb_settings, uint16_t *mb_port);
  57. // -------------------------------------------------------------------------- //
  58. // Запись структуры настроек во flash
  59. void settings_save(settings_t *settings);
  60. //
  61. void settings_write_to_flash(uint8_t *data, uint32_t size);
  62. #if 0
  63. // Общая структура настроек
  64. typedef struct
  65. {
  66. //uint32_t
  67. WEB_PARAMS_t sWebParams;
  68. WEB_PARAMS_t sWebTempParams;
  69. DEVICE_INFO_t sInfo;
  70. uint32_t CritSecCRC;
  71. /* WARNING! До поля CritSecCRC включительно структура настроек должна быть
  72. * идентичной между бутлоадером и основным ПО и не должна изменяться при обновлении ПО.
  73. * Контроль целостности настроек внутри IAP выполняется только для критической секции,
  74. * т.к. контроль целостности всей структуры не имеет смысла
  75. * (структура настроек всегда будет отличаться внутри основного ПО).
  76. * В случае повреждения критического сектора, загружаются параметры по умолчанию. */
  77. GSM_t sGSM[NUM_GSM];
  78. FLAGS_t sFlags;
  79. ETHERNET_t sEthernet; //настройка подключения Ethernet
  80. SERVER_t sServer;
  81. PROXY_t sProxy;
  82. AUTH_t sAuth[MAX_WEB_USERS];
  83. PORTGW_t sPortGw[NUM_PORTGW]; // Настройки прозрачного порта
  84. SNTP_t sSNTP;
  85. PSD_t sPSD;
  86. uint16_t settVer; // Версия структуры настроек
  87. uint32_t controlWorld; // Слово для контроля целостности структуры настроек
  88. } SETTINGS_t;
  89. /**
  90. * @brief Общая структура настроек
  91. */
  92. /**
  93. * @brief
  94. * @retval
  95. */
  96. uint32_t SETTINGS_GetCritSecCRC(void);
  97. /**
  98. * @brief Установить параметры сетевого подключения по умолчанию
  99. */
  100. void SETTINGS_SetWebParamsDef(void);
  101. /**
  102. * @brief Установить временные параметры сетевого подключения по умолчанию
  103. */
  104. void SETTINGS_SetTempWebParamsDef(void);
  105. /**
  106. * @brief Установить Информацию об устройстве по умолчанию
  107. */
  108. void SETTINGS_SetInfoDef(void);
  109. /**
  110. * @brief Установить параметры сетевого подключения по умолчанию
  111. */
  112. void SETTINGS_SetEthternetSwitchDef(void);
  113. /**
  114. * @brief Установить параметры GSM подключения по умолчанию
  115. */
  116. void SETTINGS_SetGSMDef(void);
  117. /**
  118. * @brief Установить параметры SNTP по умолчанию
  119. */
  120. void SETTINGS_SetSntpDef(void);
  121. /**
  122. * @brief Установить параметры подключения к серверу по умолчанию
  123. */
  124. void SETTINGS_SetServerParamsDef(void);
  125. /**
  126. * @brief Установить параметры PROXY по умолчанию
  127. */
  128. void SETTINGS_SetProxyParamsDef(void);
  129. /**
  130. * @brief Очистка сектора настроек
  131. */
  132. void SETTINGS_EraseFlashSector(void);
  133. /**
  134. * @brief Установить значение пароля по умолчанию
  135. */
  136. void SETTINGS_SetServiceDef(void);
  137. /**
  138. * @brief Установить значение настроек прозрачного порта по умолчанию
  139. */
  140. void SETTINGS_SetPortGwDef(void);
  141. /**
  142. * @brief Установить значение системы параллельной диспетчеризации по умолчанию
  143. */
  144. void SETTINGS_SetPDSDef(void);
  145. /**
  146. * @brief Сброс всех настроек в значения по умолчанию кроме сетевых настроек
  147. */
  148. void SETTINGS_SetPartDefault(void);
  149. /**
  150. * @brief Сброс всех настроек в значения по умолчанию
  151. */
  152. void SETTINGS_SetAllDefault(void);
  153. /**
  154. * @brief Запись структуры настроек во flesh
  155. */
  156. void SETTINGS_Save(void);
  157. /**
  158. * @brief
  159. */
  160. void SETTINGS_WriteToFlash(uint8_t *data, uint32_t size);
  161. /**
  162. * @brief
  163. */
  164. void SETTINGS_ReadFromFlash(uint8_t *data, uint32_t size);
  165. /**
  166. * @brief
  167. */
  168. uint32_t SETTINGS_GetCRC(void);
  169. /**
  170. * @brief Сброс флага boottry и сохранение структуры настроек
  171. */
  172. void SETTINGS_ResetBootTry(void);
  173. /**
  174. * @brief Преобразует mac адрес строкового формата в массив uint8_t
  175. * @param mac - буфер для вывода mac адреса
  176. */
  177. void SETTINGS_GetMac(uint8_t *mac);
  178. /**
  179. * @brief Установить дату производства
  180. */
  181. void SETTINGS_SetProDate(char *proDate, uint8_t len);
  182. /**
  183. * @brief Установить серийный номер
  184. */
  185. void SETTINGS_SetSerialNumber(char *sn, uint8_t len);
  186. /**
  187. * @brief Установить MAC
  188. */
  189. void SysSETTINGS_SetMAC(char *mac, uint8_t len);
  190. /**
  191. * @brief Установить статус тестирования
  192. */
  193. void SETTINGS_StatusTest(char *status, uint8_t len);
  194. /**
  195. * @brief Установить статус тестирования "T2OK"
  196. */
  197. void SETTINGS_SetT2OK(void);
  198. /**
  199. * @brief Сбросить статус тестирования "T2OK"
  200. */
  201. void SETTINGS_ResetT2OK(void);
  202. /**
  203. * @brief Устанавливает mac адрес исходя из unique id
  204. */
  205. void COM_SetTestMAC(void);
  206. /**
  207. * @brief Включить DHCP
  208. */
  209. void SETTINGS_SetDHCPOn(void);
  210. //
  211. void SETTINGS_Print(void);
  212. #endif
  213. // Системные настройки
  214. extern sys_settings_t sys_settings;
  215. //
  216. extern settings_t settings;
  217. #endif /* #ifndef SETTINGS_API_H */