| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663 | /********************************* (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"#include "common_config.h"#include "lwip/opt.h"#include "lwip/ip.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{#ifdef RELAY_AC_PRESENT	AC_PRESENT = 1,#endif#ifdef RELAY_DC_PRESENT	DC_PRESENT,#endif#ifdef RELAY_ALARM_AKB	ALARM_AKB,#endif#ifdef RELAY_CHARGE_AKB	CHARGE_AKB,#endif#ifdef RELAY_OFF_AKB	OFF_AKB,#endif#ifdef TYPE_CRITICAL_ALARM_MONITOR	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{    char name[21];    din_type_act_t din_type_act;} DIN_Settings_t;/**  * @brief  Настройки диапазона уровней Аварий.  */typedef struct{    float high;    float low;    float hyst;} ALARM_LEVEL_RANGE_t;/**  * @brief  Настройки Аварий.  */typedef struct{    ALARM_LEVEL_RANGE_t load_range;#ifdef VAC_IN_MONITOR    ALARM_LEVEL_RANGE_t ac_input_range;#endif    ALARM_LEVEL_RANGE_t ac_output_range;    ALARM_LEVEL_RANGE_t Temprature_range;#ifndef HARDWARE_BT6709    ALARM_LEVEL_RANGE_t Temprature_cabinet_range;#endif} ALARM_MNGR_t;typedef enum{	ups_kestar,	ups_voltronic,  ups_offline,	type_ups_max} typeUPSEnums_t;typedef enum{	ups_1_0_power,	ups_1_5_power,	ups_2_0_power,	ups_3_0_power,	ups_6_0_power,	ups_10_0_power,	ups_power_num_max} upsPowerEnums_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;  uint32_t serial;} UPS_Setting_t;typedef struct {	ip_addr_t server_ip;	u16_t server_port;	char remote_path[100];#define SETTINGS_FIELD_MAX_LEN 100	char user[30];	char pass[30];} FTP_Update_t;typedef struct {	bool enabled;	ip_addr_t server_ip;	u16_t server_port;} Syslog_Settings_t;/**  * @brief  Настройки реле.  */ typedef struct{	ro_type_source_t ro_type_source;} RELAY_Settings_t;/**  * @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 enum{    TS_NONE = 0,    TS_CABINET,    TS_AKB} ts_location_type_t;/**  * @brief  Параметры контроля температуры  */typedef struct{    ts_location_type_t type_sensor; //размещение датчика температуры } TEMP_COTROL_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_SetUPSSerialSettingsDef(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_SetDINSDef(void);/**  * @brief  Установить параметры настроек реле по умолчанию  */void SETTINGS_SetRelaysDef(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_SetTempControlDef(void);/**  * @brief  Установить параметры разрешения уведомлений по умолчанию  */void SETTINGS_SetFlagNotificationDef(void);void SETTINGS_SetFTPUpdateDef(void);void SETTINGS_SetSyslogDef(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) РОТЕК **********************************/
 |