123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480 |
- #ifndef SETTINGS_API_H
- #define SETTINGS_API_H
- #include "at32f403a_407.h"
- #include <stdbool.h>
- //#include "units.h"
- #include "usart.h"
- #include "sys_api.h"
- /* Reference SETTINGS_t structure size value */
- /* Modify this value every time you change its size and increse SETTINGS_VERSION value */
- #define REF_SETTINGS_SIZE 0x56C
- /* Changing SETTINGS_VERSION causes loading default settings on start. */
- #define SETTINGS_VERSION 0
- #define NUM_GSM 2 // количество GSM каналов (количество SIM)
- #define NUM_PORTGW 3 // количество прозрачных портов
- /* Максимальная длинна логина и пароля для входа в Web */
- #define MAX_WEB_LOGIN_LEN 11
- #define MAX_WEB_COOKIE_LEN 16
- /* Максимальная длинна строки параметра, передаваемого в Web */
- #define MAX_WEB_PARAM_LEN 102//64
- /* Max WEB users in the system/
- *
- **/
- #define MAX_WEB_USERS 1
- /**
- * @brief Параметры сетевого подключения
- */
- typedef struct
- {
- char ip[16];
- char gate[16];
- char mask[16];
- char dns1[16];
- char dns2[16];
- uint8_t dhcpEnable; // 0 - DHCP отключен, 1 - включен
- } WEB_PARAMS_t;
- /**
- * @brief Настройки Ethernet подключения
- */
- typedef struct
- {
- bool Enabled; // Вкл/Выкл Ethernet
- uint8_t prior; // Приоритет (1/2/3)
- char ip_test[32]; // IP-адрес проверки связи
- }ETHERNET_t;
- /**
- * @brief Типы профиля GSM
- */
- typedef enum
- {
- BEELINE = 0,
- MTS,
- MEGAFON,
- TELE2,
- USER,
- MAX_GSM_TYPES_PROFILE
- } type_profile_gsm_t;
- /**
- * @brief Типы GSM модема
- */
- typedef enum
- {
- SIM800 = 0,
- SIM7500,
- } MODEM_TYPE_t;
- /**
- * @brief Режим работы GSM модема
- */
- typedef enum
- {
- AUTOMATIC = 2,
- GSM_3G = 48,
- LTE = 38,
- WCDMA = 14,
- GSM = 13,
- } MODEM_MODE_t;
- /**
- * @brief Настройки GSM модуля
- */
- typedef struct
- {
- bool Enabled; // Вкл/Выкл GSM модуля
- uint8_t prior; // Приоритет (1/2/3)
- type_profile_gsm_t type_profile; // Тип профиля
- char APNaddr[64]; // Адрес точки доступа APN
- char APNlogin[32]; // Логин APN
- char APNpass[32]; // Пароль APN
- char ip_test[32]; // IP-адрес проверки связи
- char msisdn[14]; // Номер SIM-карты (MSISDN)
- uint32_t timeout; // Таймаут ожидания ответа, сек
- uint32_t period_test; // Время между проверками доступности канала связи
- uint8_t num_bad_connect; // Количество неудачных попыток до переключения канала
- MODEM_MODE_t modem_mode; // Режим работы GSM модема
- } GSM_t;
- /**
- * @brief Параметры SNTP
- */
- typedef struct
- {
- bool sntpEnable; // Вкл/выкл
- char ip1[16]; // Адрес SNTP сервера 1
- char ip2[16]; // Адрес SNTP сервера 2
- char data[30]; // Дата последней синхронизации
- float timeZone; // Часовой пояс
- } SNTP_t;
- /**
- * @brief Параметры сервера
- */
- typedef struct
- {
- bool serverEnable; // Вкл/выкл
- char ip[16]; // Адрес сервера
- uint16_t port; // Номер порта
- bool controlConnect; // Контроль соединения (1 - да; 0 - нет)
- } SERVER_t;
- /**
- * @brief Параметры PROXY PROXY
- */
- typedef struct
- {
- char ip[16]; // IP-адрес подключения
- uint16_t port; // Порт подключения
- uint8_t local_port; // Локальный порт
- } PROXY_t;
- /**
- * @brief Информация об устройстве
- */
- typedef struct
- {
- uint32_t id; // Цифровой идентификатор
- char productionData[40]; // Дата производства
- char mac[18]; // MAC адрес
- char serialNumber[16]; // Серийный номер
- char owner[102]; // Владелец
- char location[102]; // Адрес
- char comments[102]; // Комментарии
- char incharge[62]; // Ответсвенное лицо
- } DEVICE_INFO_t;
- /**
- * @brief Уровни пользователей Web.
- */
- typedef enum
- {
- FACTORY = 0,
- ADMIN,
- MAX_USER_LEVELS
- } user_level_t;
- /**
- * @brief Настройки аутентификации.
- */
- typedef struct
- {
- user_level_t level;
- char login[MAX_WEB_LOGIN_LEN];
- uint8_t hash[16];
- } AUTH_t;
- /**
- * @brief Флаги, ключи и т.д.
- */
- typedef struct
- {
- bool netsettingsChanged; // Признак изменения сетевых настроек пользователем
- char testState[16]; // Статус производственного тестирования
- } FLAGS_t;
- /**
- * @brief Типы транспорта прозрачного порта
- */
- typedef enum
- {
- GW_UDP = 0,
- GW_TCP,
- MAX_TRANS_TYPES
- } gwtrans_t;
- /**
- * @brief Режим прозрачного порта
- */
- typedef enum
- {
- GW_SERVER = 0,
- GW_CLIENT,
- MAX_MODE_TYPES
- } gwmode_t;
- /**
- * @brief Режим (RS-232/RS-485)
- */
- typedef enum
- {
- RS_232_1 = 0,
- RS_232_2,
- RS_232_3,
- RS_485_1,
- RS_485_2,
- MAX_RS_PORTS
- } rsmode_t;
- /**
- * @brief Тип порта (Модем / Прибор учета)
- */
- typedef enum
- {
- MODEM = 0,
- ACCOUNT_METER,
- MAX_DISPATCH_MODES
- } dispatchport_t;
- /**
- * @brief Настройки прозрачного порта
- */
- typedef struct
- {
- bool enableDispatch; // Параллельная диспетчеризация (Вкл./Выкл.)
- bool enabled; // Вкл/Откл
- dispatchport_t type_port; // Тип порта (Модем / Прибор учета)
- uint8_t connect_port; // Связанный порт (#1-#3)
- char description[30]; // Описание
- gwtrans_t transtype; // Тип транспорта
- gwmode_t mode; // Режим: Клиент/Сервер
- char ip[16]; // IP-адрес сервера (для клиента)
- uint16_t port; // Порт
- rsmode_t rs_mode; // Режим (RS-232/RS-485)
- uart_settings_t uart_set; // Настройки UART прозрачного порта
- } PORTGW_t;
- /**
- * @brief Режимы параллельной диспетчеризации
- */
- typedef enum
- {
- PSD_MODE_1 = 0, // RS232#1 <-> RS232#2, USART6 <-> RS232#3
- PSD_MODE_2, // RS485#1 <-> RS232#2, USART6 <-> RS232#3
- PSD_MODE_3, // RS232#1 <-> RS485#2, USART6 <-> RS232#3
- PSD_MODE_4, // RS485#1 <-> RS485#2, USART6 <-> RS232#3
- PSD_MODE_5, // RS232#1 <-> RS232#3
- PSD_MODE_6, // RS485#1 <-> RS232#3
- PSD_MODE_7, // USART1 <-> RS485#1, USART3 <-> RS485#2, USART4 <-> RS232#1, USART5 <-> RS232#2, USART6 <-> RS232#3,
- MAX_PSD_MODES
- } PSD_MODE_t;
- /**
- * @brief Настройки системы параллельной диспетчеризации
- */
- typedef struct
- {
- bool enabled; // Вкл/Откл
- PSD_MODE_t mux_mode; // Режим (управление мультиплексором)
- rsmode_t rs_mode; // Режим (RS-232/RS-485)
- uint8_t web_port; // На каком из прозрачных портов работает PSD
- uint16_t assd_timeout; // Timeout
- } PSD_t;
- /**
- * @brief Общая структура настроек
- */
- typedef struct
- {
- 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 Общая структура настроек
- */
- extern SETTINGS_t sSettings;
- /**
- * @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_EraseFlashSector(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 Загрузка структуры настроек из 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 Сброс флага 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 init_settings(void);
- //
- void SETTINGS_Print(void);
- //
- bool SETTINGS_Check_9b(void);
- //
- void SETTINGS_Replace_9b(void);
- // Системные настройки
- extern SYS_t sSys;
- #endif /* #ifndef SETTINGS_API_H */
- /********************************* (C) РОТЕК **********************************/
|