/********************************* (C) РОТЕК *********************************** * @module settings_api * @file settings_api.h * @version 1.0.0 * @date XX.XX.XXXX * $brief settings_api ******************************************************************************* * @history Version Author Comment * XX.XX.XXXX 1.0.0 Telenkov D.A. First release. ******************************************************************************* */ /* Define to prevent recursive ----------------------------------------------*/ #ifndef SETTINGS_API_H #define SETTINGS_API_H #include "stm32f4xx.h" #include #ifndef DEVICE_SERIAL #define DEVICE_SERIAL "7023000" #endif /** * @brief Параметры обновления ПО */ typedef struct { uint8_t loadMode; // 0 - основная прошивка, 1 - режим обновления ПО uint8_t bootTry; // Признак } BOOT_PARAMS_t; /** * @brief Параметры сетевого подключения */ typedef struct { char ip[16]; char gate[16]; char mask[16]; uint8_t dhcpEnable; // 0 - DHCP отключен, 1 - включен } WEB_PARAMS_t; /** * @brief Параметры SNMP */ typedef struct { char sysDescr[160]; char readCommunity[20]; char writeCommunity[20]; char sysContact[50]; char sysName[20]; char sysLocation[110]; char managerIP[20]; char managerIP2[20]; char managerIP3[20]; } SNMP_t; /** * @brief Информация об устройстве */ typedef struct { char productionData[40]; // Дата производства char mac[18]; // MAC адрес char serialNumber[16]; // Серийный номер char comments[110]; // Комментарии } DEVICE_INFO_t; /** * @brief Флаги, ключи и т.д. */ typedef struct { bool netsettingsChanged; // Признак изменения сетевых настроек пользователем char testState[16]; // Статус производственного тестирования } FLAGS_t; /** * @brief Общая структура настроек */ typedef struct { BOOT_PARAMS_t bootParams; WEB_PARAMS_t sWebParams; WEB_PARAMS_t sWebTempParams; DEVICE_INFO_t sInfo; uint32_t CritSecCRC; //uint32_t controlWorld; // Слово для контроля целостности структуры настроек } SETTINGS_t; /** * @brief * @retval */ uint32_t SETTINGS_GetCritSecCRC(void); /** * @brief Установить параметры обновления ПО по умолчанию */ void SETTINGS_SetBootParamsDef(void); /** * @brief Установить параметры сетевого подключения по умолчанию */ void SETTINGS_SetWebParamsDef(void); /** * @brief Установить временные параметры сетевого подключения по умолчанию */ void SETTINGS_SetTempWebParamsDef(void); /** * @brief Установить Информацию об устройстве по умолчанию */ void SETTINGS_SetInfoDef(void); /** * @brief Очистка сектора настроек */ void SETTINGS_EraseFlashSector(void); /** * @brief Сброс всех настроек в значения по умолчанию кроме сетевых настроек */ void SETTINGS_SetPartDefault(void); /** * @brief Сброс всех настроек в значения по умолчанию */ void SETTINGS_SetAllDefault(void); /** * @brief Установка настроек для отладки */ void SETTINGS_SetDefaultDebug(void); /** * @brief Запись структуры настроек во flesh */ void SETTINGS_Save(void); /** * @brief Загрузка структуры настроек из flesh */ void SETTINGS_Load(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 Преобразует mac адрес строкового формата в массив uint8_t * @param mac - буфер для вывода mac адреса */ void SETTINGS_GetMac(uint8_t *mac); /** * @brief Установить дату производства */ void SETTINGS_SetProDate(char *proDate, uint8_t len); /** * @brief Установить статус тестирования "T2OK" */ void SETTINGS_SetT2OK(void); /** * @brief Включить DHCP */ void SETTINGS_SetDHCPOn(void); #endif /* #ifndef SETTINGS_API_H */ /********************************* (C) РОТЕК **********************************/