#ifndef SETTINGS_API_H #define SETTINGS_API_H #include "at32f403a_407.h" #include #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 */