| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574 | 
							- /********************************* (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 <stdbool.h>
 
- #include "d_inouts.h"
 
- /* Предельные границы настроек */
 
- #define MAX_VOLT_CELL_RANGE				3.0
 
- #define MIN_VOLT_CELL_RANGE				0
 
- #define MAX_VAC_MAX_RANGE				250
 
- #define MAX_VAC_MIN_RANGE				220
 
- #define MIN_VAC_MAX_RANGE				200
 
- #define MIN_VAC_MIN_RANGE				110
 
- #define HIST_VAC_MAX_RANGE				30
 
- #define HIST_VAC_MIN_RANGE				10
 
- #define MAX_TEMP_MAX_RANGE				80
 
- #define MAX_TEMP_MIN_RANGE				40
 
- #define MIN_TEMP_MAX_RANGE				0
 
- #define MIN_TEMP_MIN_RANGE				-40
 
- #define HIST_TEMP_MAX_RANGE				2
 
- #define HIST_TEMP_MIN_RANGE				0.5
 
- #define MAX_LOAD_MAX_RANGE				120
 
- #define MAX_LOAD_MIN_RANGE				60
 
- #define HIST_LOAD_MAX_RANGE				2
 
- #define HIST_LOAD_MIN_RANGE				0.5
 
- #define LIFETIME_MIN_RANGE				1
 
- #define LIFETIME_MAX_RANGE				10
 
- #define CAPACITY_MIN_RANGE        1
 
- #define CAPACITY_MAX_RANGE        200
 
- #define AKB_VOLTAGE_MIN_RANGE     12
 
- #define AKB_VOLTAGE_MAX_RANGE     240
 
- #define UPS_POWER_MIN_RANGE       400
 
- #define UPS_POWER_MAX_RANGE       10000
 
- /* Максимальная длинна логина и пароля для входа в Web */
 
- #define MAX_WEB_LOGIN_LEN              11
 
- #define MAX_WEB_PASSWD_LEN             11
 
- #define MAX_WEB_COOKIE_LEN             16
 
- /* Максимальная длинна строки параметра, передаваемого в Web */
 
- #define MAX_WEB_PARAM_LEN              64
 
- /* Max WEB users in the system/
 
-  * First users are always ADMIN.
 
-  * Others are USER */
 
- #define MAX_WEB_USERS                 2
 
- #define MAX_WHITE_LIST                5
 
- /**
 
-   * @brief  Уровни пользователей Web.
 
-   */
 
- typedef enum
 
- {
 
-     ALL_DEFAULT = 0,
 
-     PART_DEFAULT_1,
 
-     PART_DEFAULT_2,
 
-     MAX_RESET_SETTINGS_TYPES
 
- } reset_settings_type_t;
 
- /**
 
- * @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  Параметры сетевого подключения
 
-   */
 
- typedef struct
 
- {
 
-   char    ip_range[19];
 
-   uint32_t ip;
 
-   uint32_t mask;
 
- } WHITE_LIST_t;
 
- /**
 
-   * @brief  Описание устройства системный параметр SNMP
 
-   */
 
- typedef struct
 
- {
 
-   char description[160];
 
-   uint16_t len;
 
- } SNMP_SYS_DESCR_t;
 
- /**
 
-   * @brief  Контактная информация системный параметр SNMP
 
-   */
 
- typedef struct
 
- {
 
-   char contact[50];
 
-   uint16_t len;
 
- } SNMP_SYS_CONTACT_t;
 
- /**
 
-   * @brief  Название устройства системный параметр SNMP
 
-   */
 
- typedef struct
 
- {
 
-   char name[20];
 
-   uint16_t len;
 
- } SNMP_SYS_NAME_t;
 
- /**
 
-   * @brief  Местоположение устройства системный параметр SNMP
 
-   */
 
- typedef struct
 
- {
 
-   char location[110];
 
-   uint16_t len;
 
- } SNMP_SYS_LOCATION_t;
 
- /**
 
-   * @brief  Параметры SNMP
 
-   */
 
- typedef struct
 
- {
 
-   SNMP_SYS_DESCR_t sysDesc;
 
-   char readCommunity[20];
 
-   char writeCommunity[20];
 
-   SNMP_SYS_CONTACT_t sysContact;
 
-   SNMP_SYS_NAME_t sysName;
 
-   SNMP_SYS_LOCATION_t sysLocation;
 
-   char managerIP[20];
 
-   char managerIP2[20];
 
-   char managerIP3[20];
 
-   char managerIP4[20];
 
-   char managerIP5[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  Уровни пользователей Web.
 
-   */
 
- typedef enum
 
- {
 
-     ADMIN = 0,
 
-     USER,
 
-     MAX_USER_LEVELS
 
- } user_level_t;
 
- /**
 
-   * @brief  Настройки аутентификации.
 
-   */
 
- typedef struct
 
- {
 
-     user_level_t level;
 
-     char login[MAX_WEB_LOGIN_LEN];
 
-     char password[MAX_WEB_PASSWD_LEN];
 
- } AUTH_t;
 
- /**
 
-   * @brief  Параметры SNTP
 
-   */
 
- typedef struct
 
- {
 
-   bool  sntpEnable;  // Вкл/выкл
 
-   char  ip[16];      // Адрес SNTP сервера
 
-   char  data[30];    // Дата последней синхронизации
 
-   float timeZone;    // Часовой пояс
 
- } SNTP_t;
 
- /**
 
-   * @brief  Типы источников срабатывания реле
 
-   */
 
- typedef enum
 
- {
 
- #if defined HARDWARE_BT6707
 
- 	AC_PRESENT = 1,
 
- 	DC_PRESENT,
 
- 	CHARGE_AKB,
 
- 	OFF_AKB,
 
- #elif HARDWARE_BT6703
 
- 	CRITICAL = 1,
 
- 	NON_CRITICAL,
 
- #endif
 
- 	SNMP_SET,
 
-     RO_MAX_SOURCE
 
- } ro_type_source_t;
 
- /**
 
-   * @brief  Типы источников срабатывания реле
 
-   */
 
- typedef enum
 
- {
 
- 	DI_DISCONN = 0,
 
-     DI_CONN,
 
-     DI_MAX_ACT
 
- } din_type_act_t;
 
- /**
 
-   * @brief  Настройки диапазона уровней Аварий.
 
-   */
 
- typedef struct
 
- {
 
-     float high;
 
-     float low;
 
-     float hyst;
 
- } ALARM_LEVEL_RANGE_t;
 
- /**
 
-   * @brief  Настройки Аварий.
 
-   */
 
- typedef struct
 
- {
 
-     ALARM_LEVEL_RANGE_t load_range;
 
-     ALARM_LEVEL_RANGE_t ac_output_range;
 
-     ALARM_LEVEL_RANGE_t Temprature_range;
 
- } ALARM_MNGR_t;
 
- typedef enum{
 
- 	ups_kestar,
 
- 	ups_voltronic,
 
-   ups_offline,
 
- 	type_ups_max
 
- } typeUPSEnums_t;
 
- /**
 
-   * @brief  Настройки ИБП.
 
-   */
 
- typedef struct
 
- {
 
- 	float Ucellmin;
 
- 	float Ucellmax;
 
-   float Uakb;
 
-   float ups_power;
 
-   uint32_t life_time;
 
-   uint32_t set_data;
 
-   uint32_t common_capacity;
 
- 	uint8_t type_ups;
 
- } UPS_Setting_t;
 
- #ifdef INOUTS_ENABLE
 
- /**
 
-   * @brief  Настройки входов/выходов.
 
-   */
 
- typedef struct
 
- {
 
- 	ro_type_source_t ro_type_source[OUTPUTS_TOTAL_COUNT];
 
- 	din_type_act_t din_type_act[INPUTS_TOTAL_COUNT];
 
- } INOUTS_t;
 
- #endif
 
- /**
 
-   * @brief  Параметры RADIUS
 
-   */
 
- typedef struct
 
- {
 
-   bool Auth_enable;
 
-   char    ServerIP[16];
 
-   char    rds_password[17];
 
-   bool RDSEnable;  // 0 - отключен, 1 - включен
 
-   uint32_t port;
 
-   uint32_t key_access;
 
- } RADIUS_t;
 
- /**
 
-   * @brief  Параметры Telnet
 
-   */
 
- typedef struct
 
- {
 
-   bool TelnetEnable;  // 0 - отключен, 1 - включен
 
-   uint32_t port;
 
- } TELNET_t;
 
- /**
 
-   * @brief  Параметры SSH
 
-   */
 
- typedef struct
 
- {
 
-   bool SSHEnable;  // 0 - отключен, 1 - включен
 
-   uint32_t port;
 
- } SSH_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  Четность прозрачного порта
 
-   */
 
- typedef enum
 
- {
 
-     GW_NO_PAR = 0,
 
-     GW_ODD_PAR,
 
-     GW_EVEN_PAR,
 
-     MAX_PARITY_TYPES
 
- } gwparity_t;
 
- /**
 
-   * @brief Настройки прозрачного порта
 
-   */
 
- typedef struct
 
- {
 
-     bool enabled;           /* Вкл/Откл */
 
-     gwtrans_t transtype;    /* Тип транспорта */
 
-     gwmode_t mode;          /* Режим: Клиент/Сервер */
 
-     char ip[16];            /* IP-адрес сервера (для клиента) */
 
-     uint16_t port;          /* Порт */
 
-     uint32_t baud;          /* Скорость порта */
 
-     gwparity_t parity;      /* Четность */
 
-     uint8_t databits;       /* Число бит данных */
 
-     uint8_t stopbits;       /* Число стоп-бит */
 
-     uint8_t timeout;        /* Таймаут ответа от устройства */
 
-     uint16_t quota;         /* Максимальное время занятия порта */
 
- } PORTGW_t;
 
- /**
 
-   * @brief  Общая структура настроек
 
-   */
 
- typedef struct
 
- {
 
-   BOOT_PARAMS_t bootParams;
 
-   WEB_PARAMS_t  sWebParams;
 
-   WEB_PARAMS_t  sWebTempParams;
 
-   DEVICE_INFO_t sInfo;
 
-   uint32_t      CritSecCRC;
 
- /* WARNING! До поля CritSecCRC включительно структура настроек должна быть
 
- * идентичной между бутлоадером и основным ПО и не должна изменяться при обновлении ПО.
 
- * Контроль целостности настроек внутри IAP выполняется только для критической секции,
 
- * т.к. контроль целостности всей структуры не имеет смысла
 
- * (структура настроек всегда будет отличаться внутри основного ПО).
 
- * В случае повреждения критического сектора, загружаются параметры по умолчанию. */
 
-   FLAGS_t  sFlags;
 
- #define XSETTING(type, name, setter, type_reset) type name;
 
- 	SETTINGS_TABLE
 
- #undef XSETTING
 
-   uint32_t      controlWorld;  // Слово для контроля целостности структуры настроек
 
-   
 
- } SETTINGS_t;
 
- extern SETTINGS_t sSettings;
 
- /**
 
-   * @brief
 
-   * @retval
 
-   */
 
- uint32_t SETTINGS_GetCritSecCRC(void);
 
- /**
 
-   * @brief  Установить параметры обновления ПО по умолчанию
 
-   */
 
- void SETTINGS_SetBootParamsDef(void);
 
- /**
 
-   * @brief  Установить параметры сетевого подключения по умолчанию
 
-   */
 
- void SETTINGS_SetWebParamsDef(void);
 
- /**
 
-   * @brief  Установить временные параметры сетевого подключения по умолчанию
 
-   */
 
- void SETTINGS_SetTempWebParamsDef(void);
 
- /**
 
-   * @brief  Установить параметры SNMP по умолчанию
 
-   */
 
- void SETTINGS_SetSnmpDef(void);
 
- /**
 
-   * @brief  Настройки ИБП по умолчанию
 
-   */
 
- void SETTINGS_SetUPSSettingsDef(void);
 
- /**
 
-   * @brief  Установить Информацию об устройстве по умолчанию
 
-   */
 
- void SETTINGS_SetInfoDef(void);
 
- /**
 
-   * @brief  Установить наcтройки менеджера Аварий по умолчанию
 
-   */
 
- void SETTINGS_SetAlarmManagerDef(void);
 
- /**
 
-   * @brief  Установить флаги по умолчанию
 
-   */
 
- void SETTINGS_SetFlagsDef(void);
 
- /**
 
-   * @brief  Установить параметры SNTP по умолчанию
 
-   */
 
- void SETTINGS_SetSntpDef(void);
 
- /**
 
-   * @brief  Установить параметры настроек сухих контактов / реле по умолчанию
 
-   */
 
- void SETTINGS_SetINOUTSDef(void);
 
- /**
 
-   * @brief  Установить значение настроек прозрачного порта по умолчанию
 
-   */
 
- void SETTINGS_SetPortGwDef(void);
 
- /**
 
-   * @brief  Установить параметры RADIUS по умолчанию
 
-   */
 
- void SETTINGS_SetRADIUSDef(void);
 
- /**
 
-   * @brief  Установить параметры сертификата сервера по умолчанию
 
-   */
 
- void SETTINGS_SetSSLcrtDef(void);
 
- /**
 
-   * @brief  Установить параметры Telnet
 
-   */
 
- void SETTINGS_SetTelnetDef(void);
 
- /**
 
-   * @brief  Установить параметры SSH
 
-   */
 
- void SETTINGS_SetSSHDef(void);
 
- /**
 
-   * @brief  Установить параметры списка доверительных хостов
 
-   */
 
- void SETTINGS_SetWhiteListDef(void);
 
- /**
 
-   * @brief  Установить параметры разрешения уведомлений по умолчанию
 
-   */
 
- void SETTINGS_SetFlagNotificationDef(void);
 
- /**
 
-   * @brief  Установить значение сервисных настроек по умолчанию
 
-   */
 
- void SETTINGS_SetServiceDef(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  Сброс флага 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  Установить статус тестирования "T2OK"
 
-   */
 
- void SETTINGS_SetT2OK(void);
 
- /**
 
-   * @brief  Включить DHCP
 
-   */
 
- void SETTINGS_SetDHCPOn(void);
 
- void init_settings(void);
 
- #endif /* #ifndef SETTINGS_API_H */
 
- /********************************* (C) РОТЕК **********************************/
 
 
  |