settings_api.h 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  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. // Очистка сектора настроек
  63. void settings_erase_flash_sector(void);
  64. #if 0
  65. // Общая структура настроек
  66. typedef struct
  67. {
  68. //uint32_t
  69. WEB_PARAMS_t sWebParams;
  70. WEB_PARAMS_t sWebTempParams;
  71. DEVICE_INFO_t sInfo;
  72. uint32_t CritSecCRC;
  73. /* WARNING! До поля CritSecCRC включительно структура настроек должна быть
  74. * идентичной между бутлоадером и основным ПО и не должна изменяться при обновлении ПО.
  75. * Контроль целостности настроек внутри IAP выполняется только для критической секции,
  76. * т.к. контроль целостности всей структуры не имеет смысла
  77. * (структура настроек всегда будет отличаться внутри основного ПО).
  78. * В случае повреждения критического сектора, загружаются параметры по умолчанию. */
  79. GSM_t sGSM[NUM_GSM];
  80. FLAGS_t sFlags;
  81. ETHERNET_t sEthernet; //настройка подключения Ethernet
  82. SERVER_t sServer;
  83. PROXY_t sProxy;
  84. AUTH_t sAuth[MAX_WEB_USERS];
  85. PORTGW_t sPortGw[NUM_PORTGW]; // Настройки прозрачного порта
  86. SNTP_t sSNTP;
  87. PSD_t sPSD;
  88. uint16_t settVer; // Версия структуры настроек
  89. uint32_t controlWorld; // Слово для контроля целостности структуры настроек
  90. } SETTINGS_t;
  91. /**
  92. * @brief Общая структура настроек
  93. */
  94. /**
  95. * @brief
  96. * @retval
  97. */
  98. uint32_t SETTINGS_GetCritSecCRC(void);
  99. /**
  100. * @brief Установить параметры сетевого подключения по умолчанию
  101. */
  102. void SETTINGS_SetWebParamsDef(void);
  103. /**
  104. * @brief Установить временные параметры сетевого подключения по умолчанию
  105. */
  106. void SETTINGS_SetTempWebParamsDef(void);
  107. /**
  108. * @brief Установить Информацию об устройстве по умолчанию
  109. */
  110. void SETTINGS_SetInfoDef(void);
  111. /**
  112. * @brief Установить параметры сетевого подключения по умолчанию
  113. */
  114. void SETTINGS_SetEthternetSwitchDef(void);
  115. /**
  116. * @brief Установить параметры GSM подключения по умолчанию
  117. */
  118. void SETTINGS_SetGSMDef(void);
  119. /**
  120. * @brief Установить параметры SNTP по умолчанию
  121. */
  122. void SETTINGS_SetSntpDef(void);
  123. /**
  124. * @brief Установить параметры подключения к серверу по умолчанию
  125. */
  126. void SETTINGS_SetServerParamsDef(void);
  127. /**
  128. * @brief Установить параметры PROXY по умолчанию
  129. */
  130. void SETTINGS_SetProxyParamsDef(void);
  131. /**
  132. * @brief Установить значение пароля по умолчанию
  133. */
  134. void SETTINGS_SetServiceDef(void);
  135. /**
  136. * @brief Установить значение настроек прозрачного порта по умолчанию
  137. */
  138. void SETTINGS_SetPortGwDef(void);
  139. /**
  140. * @brief Установить значение системы параллельной диспетчеризации по умолчанию
  141. */
  142. void SETTINGS_SetPDSDef(void);
  143. /**
  144. * @brief Сброс всех настроек в значения по умолчанию кроме сетевых настроек
  145. */
  146. void SETTINGS_SetPartDefault(void);
  147. /**
  148. * @brief Сброс всех настроек в значения по умолчанию
  149. */
  150. void SETTINGS_SetAllDefault(void);
  151. /**
  152. * @brief Запись структуры настроек во flesh
  153. */
  154. void SETTINGS_Save(void);
  155. /**
  156. * @brief
  157. */
  158. void SETTINGS_WriteToFlash(uint8_t *data, uint32_t size);
  159. /**
  160. * @brief
  161. */
  162. void SETTINGS_ReadFromFlash(uint8_t *data, uint32_t size);
  163. /**
  164. * @brief
  165. */
  166. uint32_t SETTINGS_GetCRC(void);
  167. /**
  168. * @brief Сброс флага boottry и сохранение структуры настроек
  169. */
  170. void SETTINGS_ResetBootTry(void);
  171. /**
  172. * @brief Преобразует mac адрес строкового формата в массив uint8_t
  173. * @param mac - буфер для вывода mac адреса
  174. */
  175. void SETTINGS_GetMac(uint8_t *mac);
  176. /**
  177. * @brief Установить дату производства
  178. */
  179. void SETTINGS_SetProDate(char *proDate, uint8_t len);
  180. /**
  181. * @brief Установить серийный номер
  182. */
  183. void SETTINGS_SetSerialNumber(char *sn, uint8_t len);
  184. /**
  185. * @brief Установить MAC
  186. */
  187. void SysSETTINGS_SetMAC(char *mac, uint8_t len);
  188. /**
  189. * @brief Установить статус тестирования
  190. */
  191. void SETTINGS_StatusTest(char *status, uint8_t len);
  192. /**
  193. * @brief Установить статус тестирования "T2OK"
  194. */
  195. void SETTINGS_SetT2OK(void);
  196. /**
  197. * @brief Сбросить статус тестирования "T2OK"
  198. */
  199. void SETTINGS_ResetT2OK(void);
  200. /**
  201. * @brief Устанавливает mac адрес исходя из unique id
  202. */
  203. void COM_SetTestMAC(void);
  204. /**
  205. * @brief Включить DHCP
  206. */
  207. void SETTINGS_SetDHCPOn(void);
  208. //
  209. void SETTINGS_Print(void);
  210. #endif
  211. // Системные настройки
  212. extern sys_settings_t sys_settings;
  213. //
  214. extern settings_t settings;
  215. #endif /* #ifndef SETTINGS_API_H */