123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 |
- #ifndef SETTINGS_API_H
- #define SETTINGS_API_H
- #include "at32f403a_407.h"
- #include <stdbool.h>
- #include "usart.h"
- #include "sys_api.h"
- // Изменить версию если поменялась структура настроек
- #define SETTINGS_VERSION 0x01
- // ------------------------------------------------------------------- //
- // Modbus
- // ------------------------------------------------------------------- //
- // Modbus
- typedef struct
- {
- rate_t baud; // Скорость порта
- parity_t parity; // Четность
- databits_t databits; // Число бит данных
- stopbits_t stopbits; // Число стоп-бит
- } modbus_t;
- // Общая структура настроек для IAP и FW
- typedef struct
- {
- uint16_t mb_port; // Настройки порта для modbus
-
- } com_settings_t;
- // Полная структура настроек
- typedef struct
- {
- com_settings_t com_settings;
- uint32_t critical_section_crc;
- /* WARNING! До поля CritSecCRC включительно структура настроек должна быть
- * идентичной между бутлоадером и основным ПО и не должна изменяться при обновлении ПО.
- * Контроль целостности настроек внутри IAP выполняется только для критической секции,
- * т.к. контроль целостности всей структуры не имеет смысла
- * (структура настроек всегда будет отличаться внутри основного ПО).
- * В случае повреждения критического сектора, загружаются параметры по умолчанию. */
- uint16_t settings_version; // Версия структуры настроек
- uint32_t control_word; // Слово для контроля целостности структуры настроек
- } settings_t;
- // Загрузка структуры настроек из flesh
- void settings_load(settings_t *settings);
- //
- void init_settings(void);
- //
- void settings_read_from_flash(uint8_t *data, uint32_t size);
- //
- uint32_t settings_get_crc(settings_t *settings);
- //
- uint32_t settings_get_crit_sec_crc(settings_t *settings);
- // Сброс всех настроек в значения по умолчанию
- void settings_set_all_default(void);
- // -------------------------------------------------------------------------- //
- // Настройки по умолчанию
- //
- void settings_set_modbus_def(uint16_t *mb_port);
- //
- void settings_conv_modbus_def(modbus_t *mb_settings, uint16_t *mb_port);
- // -------------------------------------------------------------------------- //
- // Запись структуры настроек во flash
- void settings_save(settings_t *settings);
- //
- void settings_write_to_flash(uint8_t *data, uint32_t size);
- // Очистка сектора настроек
- void settings_erase_flash_sector(void);
- #if 0
- // Общая структура настроек
- typedef struct
- {
- //uint32_t
- WEB_PARAMS_t sWebParams;
- WEB_PARAMS_t sWebTempParams;
- DEVICE_INFO_t sInfo;
- uint32_t CritSecCRC;
- /* WARNING! До поля CritSecCRC включительно структура настроек должна быть
- * идентичной между бутлоадером и основным ПО и не должна изменяться при обновлении ПО.
- * Контроль целостности настроек внутри IAP выполняется только для критической секции,
- * т.к. контроль целостности всей структуры не имеет смысла
- * (структура настроек всегда будет отличаться внутри основного ПО).
- * В случае повреждения критического сектора, загружаются параметры по умолчанию. */
- GSM_t sGSM[NUM_GSM];
- FLAGS_t sFlags;
- ETHERNET_t sEthernet; //настройка подключения Ethernet
- SERVER_t sServer;
- PROXY_t sProxy;
- AUTH_t sAuth[MAX_WEB_USERS];
- PORTGW_t sPortGw[NUM_PORTGW]; // Настройки прозрачного порта
- SNTP_t sSNTP;
- PSD_t sPSD;
- uint16_t settVer; // Версия структуры настроек
- uint32_t controlWorld; // Слово для контроля целостности структуры настроек
- } SETTINGS_t;
- /**
- * @brief Общая структура настроек
- */
- /**
- * @brief
- * @retval
- */
- uint32_t SETTINGS_GetCritSecCRC(void);
- /**
- * @brief Установить параметры сетевого подключения по умолчанию
- */
- void SETTINGS_SetWebParamsDef(void);
- /**
- * @brief Установить временные параметры сетевого подключения по умолчанию
- */
- void SETTINGS_SetTempWebParamsDef(void);
- /**
- * @brief Установить Информацию об устройстве по умолчанию
- */
- void SETTINGS_SetInfoDef(void);
- /**
- * @brief Установить параметры сетевого подключения по умолчанию
- */
- void SETTINGS_SetEthternetSwitchDef(void);
- /**
- * @brief Установить параметры GSM подключения по умолчанию
- */
- void SETTINGS_SetGSMDef(void);
- /**
- * @brief Установить параметры SNTP по умолчанию
- */
- void SETTINGS_SetSntpDef(void);
- /**
- * @brief Установить параметры подключения к серверу по умолчанию
- */
- void SETTINGS_SetServerParamsDef(void);
- /**
- * @brief Установить параметры PROXY по умолчанию
- */
- void SETTINGS_SetProxyParamsDef(void);
- /**
- * @brief Установить значение пароля по умолчанию
- */
- void SETTINGS_SetServiceDef(void);
- /**
- * @brief Установить значение настроек прозрачного порта по умолчанию
- */
- void SETTINGS_SetPortGwDef(void);
- /**
- * @brief Установить значение системы параллельной диспетчеризации по умолчанию
- */
- void SETTINGS_SetPDSDef(void);
- /**
- * @brief Сброс всех настроек в значения по умолчанию кроме сетевых настроек
- */
- void SETTINGS_SetPartDefault(void);
- /**
- * @brief Сброс всех настроек в значения по умолчанию
- */
- void SETTINGS_SetAllDefault(void);
- /**
- * @brief Запись структуры настроек во flesh
- */
- void SETTINGS_Save(void);
- /**
- * @brief
- */
- void SETTINGS_WriteToFlash(uint8_t *data, uint32_t size);
- /**
- * @brief
- */
- void SETTINGS_ReadFromFlash(uint8_t *data, uint32_t size);
- /**
- * @brief
- */
- uint32_t SETTINGS_GetCRC(void);
- /**
- * @brief Сброс флага boottry и сохранение структуры настроек
- */
- void SETTINGS_ResetBootTry(void);
- /**
- * @brief Преобразует mac адрес строкового формата в массив uint8_t
- * @param mac - буфер для вывода mac адреса
- */
- void SETTINGS_GetMac(uint8_t *mac);
- /**
- * @brief Установить дату производства
- */
- void SETTINGS_SetProDate(char *proDate, uint8_t len);
- /**
- * @brief Установить серийный номер
- */
- void SETTINGS_SetSerialNumber(char *sn, uint8_t len);
- /**
- * @brief Установить MAC
- */
- void SysSETTINGS_SetMAC(char *mac, uint8_t len);
- /**
- * @brief Установить статус тестирования
- */
- void SETTINGS_StatusTest(char *status, uint8_t len);
- /**
- * @brief Установить статус тестирования "T2OK"
- */
- void SETTINGS_SetT2OK(void);
- /**
- * @brief Сбросить статус тестирования "T2OK"
- */
- void SETTINGS_ResetT2OK(void);
- /**
- * @brief Устанавливает mac адрес исходя из unique id
- */
- void COM_SetTestMAC(void);
- /**
- * @brief Включить DHCP
- */
- void SETTINGS_SetDHCPOn(void);
- //
- void SETTINGS_Print(void);
- #endif
- // Системные настройки
- extern sys_settings_t sys_settings;
- //
- extern settings_t settings;
- #endif /* #ifndef SETTINGS_API_H */
|