123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320 |
- /********************************* (C) РОТЕК ***********************************
- * @module parameters
- * @file parameters.c
- * @version 1.0.0
- * @date XX.XX.XXXX
- * $brief Template
- *******************************************************************************
- * @history Version Author Comment
- * XX.XX.XXXX 1.0.0 Telenkov D.A. First release.
- *******************************************************************************
- */
- #include "stm32f4xx.h"
- #include "parameters.h"
- #include "settings_api.h"
- #include "rtc.h"
- #ifndef BT6702_SERVICE
- #include "snmp_api.h"
- #include "snmp.h"
- #include "megatec.h"
- #ifdef HARDWARE_BT6706
- #include "telnet_server.h"
- #endif
- #endif
- #include "sntp.h"
- #include "lwip/snmp.h"
- #include "lwip/sys.h"
- #include "common_config.h"
- //#include "d_inouts.h"
- #include "gpio.h"
- //#if defined HARDWARE_BT6702
- #ifdef PRINTF_STDLIB
- #include <stdio.h>
- #endif
- #ifdef PRINTF_CUSTOM
- #include "tinystdio.h"
- #endif
- #include <string.h>
- #include <stdlib.h>
- #include <math.h>
- //#endif
- /**
- * @brief Структура для хранения состояний дискретных входов
- */
- //extern GPIO_INPUTS_t sGpioInputs;
- /**
- * @brief Общая структура настроек
- */
- extern SETTINGS_t sSettings;
- /**
- * @brief Структура для хранения временных сетевых настроек
- */
- extern WEB_PARAMS_t sTempWebParams;
- /**
- * @brief Флаг подтверждения новых сетевых параметров пользователем
- */
- extern bool fConfirmWebParams;
- #ifndef BT6702_SERVICE
- // ************************************************************************** //
- // Параметры UPS
- /**
- * @brief
- */
- void GetInputFreqStr(char *str, uint8_t *len)
- {
- sprintf(str, "%0.1f", UPS.Freq_in);
- *len = strlen(str);
- }
- /**
- * @brief
- */
- void GetOutputFreqStr(char *str, uint8_t *len)
- {
- sprintf(str, "%0.1f", UPS.Freq_in);
- *len = strlen(str);
- }
- /**
- * @brief
- */
- void GetInputVoltageStr(char *str, uint8_t *len)
- {
- sprintf(str, "%0.1f", UPS.VAC_in);
- *len = strlen(str);
- }
- /**
- * @brief
- */
- void GetOutputVoltageStr(char *str, uint8_t *len)
- {
- sprintf(str, "%0.1f", UPS.VAC_out);
- *len = strlen(str);
- }
- /**
- * @brief
- */
- void GetPowerStr(char *str, uint8_t *len)
- {
- sprintf(str, "%d", UPS.Load);
- *len = strlen(str);
- }
- /**
- * @brief
- */
- void GetBatCapacityStr(char *str, uint8_t *len)
- {
- sprintf(str, "%d", UPS.SOC);
- *len = strlen(str);
- }
- /**
- * @brief
- */
- void GetRuntimeStr(char *str, uint8_t *len)
- {
- sprintf(str, "%d", UPS.work_time);
- *len = strlen(str);
- }
- /**
- * @brief
- */
- void GetInternalTempStr(char *str, uint8_t *len)
- {
- sprintf(str, "%0.1f", UPS.Temp);
- *len = strlen(str);
- }
- /**
- * @brief
- */
- void GetAlarmMonitorStr(char *str, uint8_t *len)
- {
- sprintf(str, "%d", UPS.Alarm);
- *len = strlen(str);
- }
- /**
- * @brief
- */
- void GetConnectMonitorStr(char *str, uint8_t *len)
- {
- if(UPS.Present)
- strcpy(str, "0");
- else
- strcpy(str, "1");
- *len = strlen(str);
- }
- // ************************************************************************** //
- // Alarms
- /**
- * @brief Индикация аварийных ситуаций
- */
- void GetAlarmStr(char *str, uint8_t *len)
- {
- sprintf(str, "%d", UPS.Status);
- *len = strlen(str);
- }
- /**
- * @brief Индикация аварийных ситуаций
- */
- void GetUPSAlarmStr(char *str, uint8_t *len)
- {
- if(((UPS.Status>>7)&0x01) || ((UPS.Status>>4)&0x01) || (UPS.Alarm & 0x01))
- strcpy(str, "Авария");
- else if(!((UPS.Status>>7)&0x01) && !((UPS.Status>>4)&0x01) && !(UPS.Alarm & 0x01))
- strcpy(str, "Норма");
- else if(((UPS.Status>>1)&0x01))
- strcat(str, "/Отключение нагрузки");
- *len = strlen(str);
- }
- /**
- * @brief Индикация аварийных ситуаций
- */
- void GetAKBAlarmStr(char *str, uint8_t *len)
- {
- if(((UPS.Status>>6)&0x01) || ((UPS.Alarm>>1) & 0x01))
- strcpy(str, "Авария");
- else if(!((UPS.Status>>6)&0x01) && !((UPS.Alarm>>1) & 0x01))
- strcpy(str, "Норма");
- else if(((UPS.Status>>2)&0x01))
- strcat(str, "/Тестирование");
- *len = strlen(str);
- }
- /**
- * @brief Индикация аварийных ситуаций
- */
- void GetConnectUPSAlarmStr(char *str, uint8_t *len)
- {
- if(((UPS.Alarm>>2) & 0x01))
- strcpy(str, "Авария");
- else if(!((UPS.Alarm>>2) & 0x01))
- strcpy(str, "Норма");
- *len = strlen(str);
- }
- /**
- * @brief Индикация аварийных ситуаций
- */
- void GetUPSModeStr(char *str, uint8_t *len)
- {
- if((UPS.Status>>5)&0x01)
- sprintf(str, "Bypass");
- else
- sprintf(str, "Boost or Buck");
- *len = strlen(str);
- }
- #endif
- // ************************************************************************** //
- // Параметры даты и времени
- /**
- * @brief Дата (Ready for PRS!)
- */
- void GetDateStr(char *str, uint8_t *len)
- {
- TM_RTC_t data;
- uint16_t sys_year ;
- TM_RTC_GetDateTime(&data, TM_RTC_Format_BIN);
- sys_year = 2000 + data.year;
- sprintf(str, "%04i-%02i-%02i", sys_year, data.month, data.date);
- *len = strlen(str);
- }
- /**
- * @brief Время (Ready for PRS!)
- */
- void GetTimeStr(char *str, uint8_t *len)
- {
- TM_RTC_t data;
- TM_RTC_GetDateTime(&data, TM_RTC_Format_BIN);
- sprintf(str, "%02i:%02i", data.hours, data.minutes);
- *len = strlen(str);
- }
- /**
- * @brief Время (Ready for PRS!)
- */
- void GetUnixTimeStr(char *str, uint8_t *len)
- {
- TM_RTC_t data;
- TM_RTC_GetDateTime(&data, TM_RTC_Format_BIN);
- sprintf(str, "%d", data.unix);
- *len = strlen(str);
- }
- // ************************************************************************** //
- // Параметры SNTP
- /**
- * @brief Состояние SNTP (Ready for PRS!)
- */
- void GetSntpStateStr(char *str, uint8_t *len)
- {
- if (sSettings.sSNTP.sntpEnable)
- {
- sprintf(str, "%s", "1"); //авто
- *len = strlen(str);
- }
- else
- {
- sprintf(str, "%s", "0"); //ручной
- *len = strlen(str);
- }
- }
- /**
- * @brief Состояние SNTP (Ready for PRS!)
- */
- void GetSntpStateStrRU(char *str, uint8_t *len)
- {
- if (sSettings.sSNTP.sntpEnable)
- {
- sprintf(str, "%s", "авто"); //авто
- *len = strlen(str);
- }
- else
- {
- sprintf(str, "%s", "ручной"); //ручной
- *len = strlen(str);
- }
- }
- /**
- * @brief IP адрес SNTP сервера (Ready for PRS!)
- */
- void GetSntpServerIpStr(char *str, uint8_t *len)
- {
- sprintf(str, "%s", sSettings.sSNTP.ip);
- *len = strlen(str);
- }
- /**
- * @brief Часовой пояс контроллера (Ready for PRS!)
- */
- void GetSntpTimeZoneStr(char *str, uint8_t *len)
- {
- sprintf(str, "%0.1f", sSettings.sSNTP.timeZone);
- *len = strlen(str);
- }
- /**
- * @brief Дата последней синхронизации SNTP (Ready for PRS!)
- */
- void GetSntpLastDataStr(char *str, uint8_t *len)
- {
- sprintf(str, "%s", sSettings.sSNTP.data);
- *len = strlen(str);
- }
- // ************************************************************************** //
- // Параметры реле/сухих контактов
- /**
- * @brief Тип действий при срабатывание сухих контактов
- */
- void GetDINTypeActStr(char *str, uint8_t *len, uint8_t num)
- {
- sprintf(str, "%d", sSettings.sInOuts.din_type_act[num]);
- *len = strlen(str);
- }
- /**
- * @brief Состояние сухого контакта
- */
- void GetDINStatusStr(char *str, uint8_t *len, uint8_t num)
- {
- sprintf(str, "%d", (get_state_din_outs(DIN1+num)^1));
- *len = strlen(str);
- }
- /**
- * @brief Состояние сухого контакта
- */
- void GetDIN0StatusStr(char *str, uint8_t *len)
- {
- sprintf(str, "%d", (get_state_din_outs(DIN1)^1));
- *len = strlen(str);
- }
- /**
- * @brief Состояние сухого контакта
- */
- void GetDIN0StatusStrRU(char *str, uint8_t *len)
- {
- if(get_state_din_outs(DIN1)^1)
- sprintf(str, "Разомкнут" );
- else
- sprintf(str, "Замкнут" );
- *len = strlen(str);
- }
- /**
- * @brief Источник срабатывания реле
- */
- void GetROTypeActStr(char *str, uint8_t *len, uint8_t num)
- {
- sprintf(str, "%d", sSettings.sInOuts.ro_type_source[num]);
- *len = strlen(str);
- }
- /**
- * @brief Состояние релейного выхода
- */
- void GetDOUTStatusStr(char *str, uint8_t *len, uint8_t num)
- {
- #ifdef HARDWARE_BT6706
- sprintf(str, "%d", (get_state_din_outs(DOUT1+num)^1));
- #elif HARDWARE_BT6702
- sprintf(str, "%d", get_state_din_outs(DOUT1+num));
- #endif
- *len = strlen(str);
- }
- /**
- * @brief Состояние релейного выхода
- */
- void GetDOUTStatusStrRU(char *str, uint8_t *len, uint8_t num)
- {
- #ifdef HARDWARE_BT6706
- if (get_state_din_outs(DOUT1+num)^1)
- sprintf(str, "Замкнут");
- else
- sprintf(str, "Разомкнут");
- #elif HARDWARE_BT6702
- if(get_state_din_outs(DOUT1+num))
- sprintf(str, "Замкнут");
- else
- sprintf(str, "Разомкнут");
- #endif
- *len = strlen(str);
- }
- /**
- * @brief Состояние релейного выхода
- */
- void GetDOUT0StatusStr(char *str, uint8_t *len)
- {
- #ifdef HARDWARE_BT6706
- sprintf(str, "%d", (get_state_din_outs(DOUT1)^1));
- #elif HARDWARE_BT6702
- sprintf(str, "%d", get_state_din_outs(DOUT1));
- #endif
- *len = strlen(str);
- }
- /**
- * @brief Состояние релейного выхода
- */
- void GetDOUT1StatusStr(char *str, uint8_t *len)
- {
- #ifdef HARDWARE_BT6706
- sprintf(str, "%d", (get_state_din_outs(DOUT2)^1));
- #elif HARDWARE_BT6702
- sprintf(str, "%d", get_state_din_outs(DOUT2));
- #endif
- *len = strlen(str);
- }
- #ifdef HARDWARE_BT6706
- /**
- * @brief Состояние релейного выхода
- */
- void GetDOUT2StatusStr(char *str, uint8_t *len)
- {
- sprintf(str, "%d", (get_state_din_outs(DOUT3)^1));
- *len = strlen(str);
- }
- #endif
- // ************************************************************************** //
- // Информация
- #ifndef BT6702_SERVICE
- /**
- * @brief Время работы устройства
- */
- void GetWorkTimeStr(char *str, uint8_t *len)
- {
- u32_t tick;
- uint16_t day;
- uint8_t hour;
- uint8_t min;
- // TODO открыть с новым api для snmp
- //snmp_get_sysuptime(&tick);
- MIB2_COPY_SYSUPTIME_TO(&tick);
- day = tick/8640000;
-
- tick = tick%8640000;
- hour = tick/360000;
-
- tick = tick%360000;
- min = tick/6000;
- sprintf(str, "%d дн. %d ч. %d мин.", day, hour, min);
- *len = strlen(str);
- }
- #endif
- /**
- * @brief Модель устройства
- */
- void GetModelStr(char *str, uint8_t *len)
- {
- *len = strlen(sSettings.sSnmp.sysName);
- strncpy(str, sSettings.sSnmp.sysName, *len);
- }
- /**
- * @brief Дата производства
- */
- void GetProductionDataStr(char *str, uint8_t *len)
- {
- *len = strlen(sSettings.sInfo.productionData);
- strncpy(str, sSettings.sInfo.productionData, *len);
- }
- /**
- * @brief Версия ПО
- */
- void GetVersionStr(char *str, uint8_t *len) // +
- {
- *len = strlen(VERSION);
- strncpy(str, VERSION, *len);
- }
- /**
- * @brief MAC адрес устройства
- */
- void GetMacStr(char *str, uint8_t *len)
- {
- *len = strlen(sSettings.sInfo.mac);
- strncpy(str, sSettings.sInfo.mac, *len);
- }
- /**
- * @brief Серийный номер устройства
- */
- void GetSerialNumberStr(char *str, uint8_t *len)
- {
- *len = strlen(sSettings.sInfo.serialNumber);
- strncpy(str, sSettings.sInfo.serialNumber, *len);
- }
- /**
- * @brief Владелец устройства
- */
- void GetOwnerStr(char *str, uint8_t *len)
- {
- *len = strlen(sSettings.sSnmp.sysContact);
- strncpy(str, sSettings.sSnmp.sysContact, *len);
- }
- /**
- * @brief Местоположение устройства
- */
- void GetLocationStr(char *str, uint8_t *len)
- {
- *len = strlen(sSettings.sSnmp.sysLocation);
- strncpy(str, sSettings.sSnmp.sysLocation, *len);
- }
- /**
- * @brief Комментарии
- */
- void GetCommentsStr(char *str, uint8_t *len)
- {
- *len = strlen(sSettings.sInfo.comments);
- strncpy(str, sSettings.sInfo.comments, *len);
- }
- #ifndef BT6702_SERVICE
- /**
- * @brief Модель UPS
- */
- void GetUPSModelStr(char *str, uint8_t *len)
- {
- *len = strlen(UPS.model);
- strncpy(str, UPS.model, *len);
- }
- /**
- * @brief Версия UPS ПО
- */
- void GetUPSVersionStr(char *str, uint8_t *len) // +
- {
- *len = strlen(UPS.vertion);
- strncpy(str, UPS.vertion, *len);
- }
- #endif
- // ************************************************************************** //
- // Настройки аутентификации
- void GetUserLogin(uint8_t user_id, char *str, uint8_t *len)
- {
- sprintf(str, "%s", sSettings.sAuth[user_id].login);
- *len = strlen(str);
- }
- void GetUserPassword(uint8_t user_id, char *str, uint8_t *len)
- {
- sprintf(str, "%s", sSettings.sAuth[user_id].password);
- *len = strlen(str);
- }
- void GetUserLevel(uint8_t user_id, char *str, uint8_t *len)
- {
- sprintf(str, "%d", sSettings.sAuth[user_id].level);
- *len = strlen(str);
- }
- void GetUserLevelInt(uint8_t user_id, uint8_t *value)
- {
- *value = sSettings.sAuth[user_id].level;
- }
- // ************************************************************************** //
- // Параметры WEB
- /**
- * @brief Текущий IP адрес
- */
- void GetIpStr(char *str, uint8_t *len)
- {
- /* Если сейчас временные настройки */
- if (sSettings.sFlags.netsettingsChanged)
- sprintf(str, "%s", sSettings.sWebTempParams.ip);
- else
- sprintf(str, "%s", sSettings.sWebParams.ip);
-
- *len = strlen(str);
- }
- /**
- * @brief Текущий шлюз
- */
- void GetGatewayStr(char *str, uint8_t *len)
- {
- /* Если сейчас временные настройки */
- if (sSettings.sFlags.netsettingsChanged)
- sprintf(str, "%s", sSettings.sWebTempParams.gate);
- else
- sprintf(str, "%s", sSettings.sWebParams.gate);
-
- *len = strlen(str);
- }
- /**
- * @brief Текущая маска подсети
- */
- void GetMaskStr(char *str, uint8_t *len)
- {
- /* Если сейчас временные настройки */
- if (sSettings.sFlags.netsettingsChanged)
- sprintf(str, "%s", sSettings.sWebTempParams.mask);
- else
- sprintf(str, "%s", sSettings.sWebParams.mask);
-
- *len = strlen(str);
- }
- /**
- * @brief Настройка DHCP
- */
- void GetDhcpStateStr(char *str, uint8_t *len)
- {
- /* Если сейчас временные настройки */
- if (sSettings.sFlags.netsettingsChanged)
- {
- if (sSettings.sWebTempParams.dhcpEnable)
- *str = '1';
- else
- *str = '0';
- }
- else
- {
- if (sSettings.sWebParams.dhcpEnable)
- *str = '1';
- else
- *str = '0';
- }
-
- *len = 1;
- }
- /**
- * @brief Настройка DHCP
- */
- void GetDhcpStateUDP(char *str, uint8_t *len)
- {
- /* Если сейчас временные настройки или был загружен файл конфигурации */
- if (sSettings.sFlags.netsettingsChanged)
- {
- if (sSettings.sWebTempParams.dhcpEnable)
- sprintf(str, "%s", "True");
- else
- sprintf(str, "%s", "False");
- }
- else
- {
- if (sSettings.sWebParams.dhcpEnable)
- sprintf(str, "%s", "True");
- else
- sprintf(str, "%s", "False");
- }
- *len = strlen(str);
- }
- /**
- * @brief Настройка DHCP
- */
- void GetDhcpStateStrRu(char *str, uint8_t *len)
- {
- /* Если сейчас временные настройки или был загружен файл конфигурации */
- if (sSettings.sFlags.netsettingsChanged)
- {
- if (sSettings.sWebTempParams.dhcpEnable)
- sprintf(str, "%s", "Вкл");
- else
- sprintf(str, "%s", "Откл");
- }
- else
- {
- if (sSettings.sWebParams.dhcpEnable)
- sprintf(str, "%s", "Вкл");
- else
- sprintf(str, "%s", "Откл");
- }
- *len = strlen(str);
- }
- // ************************************************************************** //
- // Параметры SNMP
- /**
- * @brief Текущее community для чтения
- */
- void GetReadCommunity(char *str, uint8_t *len)
- {
- sprintf(str, "%s", sSettings.sSnmp.readCommunity);
- *len = strlen(str);
- }
- /**
- * @brief Текущее community для записи
- */
- void GetWriteCommunity(char *str, uint8_t *len)
- {
- sprintf(str, "%s", sSettings.sSnmp.writeCommunity);
- *len = strlen(str);
- }
- /**
- * @brief IP SNMP менеджера
- */
- void GetManagerIp(char *str, uint8_t *len)
- {
- sprintf(str, "%s", sSettings.sSnmp.managerIP);
- *len = strlen(str);
- }
- void GetManagerIp2(char *str, uint8_t *len)
- {
- sprintf(str, "%s", sSettings.sSnmp.managerIP2);
- *len = strlen(str);
- }
- void GetManagerIp3(char *str, uint8_t *len)
- {
- sprintf(str, "%s", sSettings.sSnmp.managerIP3);
- *len = strlen(str);
- }
- void GetManagerIp4(char *str, uint8_t *len)
- {
- sprintf(str, "%s", sSettings.sSnmp.managerIP4);
- *len = strlen(str);
- }
- void GetManagerIp5(char *str, uint8_t *len)
- {
- sprintf(str, "%s", sSettings.sSnmp.managerIP5);
- *len = strlen(str);
- }
- #ifdef HARDWARE_BT6702
- // ************************************************************************** //
- // Параметры RADIUS
- /**
- * @brief Текущий IP адрес
- */
- void GetRDSIpStr(char *str, uint8_t *len)
- {
- sprintf(str, "%s", sSettings.sRADIUS.ServerIP);
- *len = strlen(str);
- }
- /**
- * @brief Текущий Порт
- */
- void GetRDSPortStr(char *str, uint8_t *len)
- {
- sprintf(str, "%d", sSettings.sRADIUS.port);
- *len = strlen(str);
- }
- /**
- * @brief Текущий Код access
- */
- void GetRDSKeyAccesstStr(char *str, uint8_t *len)
- {
- sprintf(str, "%d", sSettings.sRADIUS.key_access);
- *len = strlen(str);
- }
- /**
- * @brief Текущая пароль RADIUS
- */
- void GetRDSPasswordkStr(char *str, uint8_t *len)
- {
- sprintf(str, "%s", sSettings.sRADIUS.rds_password);
- *len = strlen(str);
- }
- /**
- * @brief Настройка вкл/ выкл RADIUS сервера
- */
- void GetRDSEnableStateStr(char *str, uint8_t *len)
- {
- if (sSettings.sRADIUS.RDSEnable)
- *str = '1';
- else
- *str = '0';
- *len = 1;
- }
- /**
- * @brief Настройка вкл/ выкл авторизации
- */
- void GetAuthEnableStateStr(char *str, uint8_t *len)
- {
- if (sSettings.sRADIUS.Auth_enable)
- *str = '1';
- else
- *str = '0';
- *len = 1;
- }
- #endif
- #ifdef HARDWARE_BT6706
- // ************************************************************************** //
- // Параметры Telnet
- /**
- * @brief Текущий Порт
- */
- void GetTelnetPortStr(char *str, uint8_t *len)
- {
- sprintf(str, "%d", sSettings.sTelnet.port);
- *len = strlen(str);
- }
- /**
- * @brief Настройка вкл/ выкл Telnet сервера
- */
- void GetTelnetEnableStateStr(char *str, uint8_t *len)
- {
- if (sSettings.sTelnet.TelnetEnable)
- *str = '1';
- else
- *str = '0';
- *len = 1;
- }
- #endif
- // ************************************************************************** //
- // Флаги
- /**
- * @brief Вернуть признак изменения сетевых параметров
- */
- void GetWebReinitFlag(char *str, uint8_t *len)
- {
- if (sSettings.sFlags.netsettingsChanged)
- {
- sprintf(str, "%s", "true");
- *len = strlen(str);
- }
- else
- {
- sprintf(str, "%s", "false");
- *len = strlen(str);
- }
-
- }
- // ************************************************************************** //
- // Установка параметрв
- // ************************************************************************** //
- /**
- * @brief Установить признак обновления ПО.
- */
- void SetLoadMode(void)
- {
- /* Set loadMode = 1 */
- RTC_WriteBackupRegister(RTC_BKP_DR1, 1);
- /* Set bootTry = 0 */
- RTC_WriteBackupRegister(RTC_BKP_DR2, 0);
- }
- /**
- * @brief Установить признак изменения сетевых параметров
- */
- void SetWebReinitFlag(bool value)
- {
- sSettings.sFlags.netsettingsChanged = value;
- }
- /**
- * @brief Установить флаг подтверждения сетевых настроек пользователем
- */
- void SetConfirmWebParamsFlag(void)
- {
- fConfirmWebParams = true;
- }
- // ************************************************************************** //
- // Сетевые параметры
- /**
- * @brief IP адрес
- */
- void SetIPStr(char *str)
- {
- //strcpy(sSettings.sWebParams.ip, str);
- strcpy(sSettings.sWebTempParams.ip, str);
- }
- /**
- * @brief Шлюз
- */
- void SetGatewayStr(char *str)
- {
- //strcpy(sSettings.sWebParams.gate, str);
- strcpy(sSettings.sWebTempParams.gate, str);
- }
- /**
- * @brief Текущая маска подсети
- */
- void SetMaskStr(char *str)
- {
- //strcpy(sSettings.sWebParams.mask, str);
- strcpy(sSettings.sWebTempParams.mask, str);
- }
- /**
- * @brief Настройка DHCP
- */
- void SetDhcpStateStr(char *str)
- {
- if (strncmp(str, "on", 2) == 0)
- //sSettings.sWebParams.dhcpEnable = 1;
- sSettings.sWebTempParams.dhcpEnable = 1;
- else
- //sSettings.sWebParams.dhcpEnable = 0;
- sSettings.sWebTempParams.dhcpEnable = 0;
- }
- /**
- * @brief Настройка DHCP
- */
- void SetUDPDhcpStateStr(char *str)
- {
- if (strncmp(str, "True", 4) == 0)
- sSettings.sWebTempParams.dhcpEnable = 1;
- else if (strncmp(str, "False", 5) == 0)
- sSettings.sWebTempParams.dhcpEnable = 0;
- }
- // ************************************************************************** //
- // Параметры SNMP
- /**
- * @brief Community для чтения
- */
- void SetReadCommunity(char *str)
- {
- strcpy(sSettings.sSnmp.readCommunity, str);
- }
- /**
- * @brief Community для записи
- */
- void SetWriteCommunity(char *str)
- {
- strcpy(sSettings.sSnmp.writeCommunity, str);
- }
- #ifndef BT6702_SERVICE
- /**
- * @brief IP SNMP менеджера
- */
- void SetManagerIp(char *str)
- {
- strcpy(sSettings.sSnmp.managerIP, str);
- SNMP_SetManagerIP(sSettings.sSnmp.managerIP);
- }
- void SetManagerIp2(char *str)
- {
- strcpy(sSettings.sSnmp.managerIP2, str);
- SNMP_SetManagerIP(sSettings.sSnmp.managerIP2);
- }
- void SetManagerIp3(char *str)
- {
- strcpy(sSettings.sSnmp.managerIP3, str);
- SNMP_SetManagerIP(sSettings.sSnmp.managerIP3);
- }
- void SetManagerIp4(char *str)
- {
- strcpy(sSettings.sSnmp.managerIP4, str);
- SNMP_SetManagerIP(sSettings.sSnmp.managerIP4);
- }
- void SetManagerIp5(char *str)
- {
- strcpy(sSettings.sSnmp.managerIP5, str);
- SNMP_SetManagerIP(sSettings.sSnmp.managerIP5);
- }
- /**
- * @brief Установить владельца
- */
- void SetOwner(char *str)
- {
- strcpy(sSettings.sSnmp.sysContact, str);
- SNMP_SetSysContact(sSettings.sSnmp.sysContact);
- SNMP_SetObjDescr();
- }
- /**
- * @brief Установить местоположение
- */
- void SetLocation(char *str)
- {
- strcpy(sSettings.sSnmp.sysLocation, str);
- SNMP_SetSysLocation(sSettings.sSnmp.sysLocation);
- }
- #endif
- /**
- * @brief Установить комментарий
- */
- void SetComment(char *str)
- {
- strcpy(sSettings.sInfo.comments, str);
- }
- #ifdef HARDWARE_BT6702
- // ************************************************************************** //
- // Сетевые параметры RADIUS сервера
- /**
- * @brief IP адрес
- */
- void SetRDSIpStr(char *str)
- {
- strcpy(sSettings.sRADIUS.ServerIP, str);
- }
- /**
- * @brief Порт
- */
- void SetRDSPortStr(char *str)
- {
- sSettings.sRADIUS.port = atoi(str);
- }
- /**
- * @brief Код access
- */
- void SetRDSKeyAccesstStr(char *str)
- {
- sSettings.sRADIUS.key_access = atoi(str);
- }
- /**
- * @brief пароль RADIUS
- */
- void SetRDSPasswordkStr(char *str)
- {
- strcpy(sSettings.sRADIUS.rds_password, str);
- }
- /**
- * @brief Настройка вкл/ выкл RADIUS сервера
- */
- void SetRDSEnableStateStr(char *str)
- {
- if (strncmp(str, "on", 2) == 0)
- sSettings.sRADIUS.RDSEnable = 1;
- else
- sSettings.sRADIUS.RDSEnable = 0;
- }
- /**
- * @brief Настройка вкл/ выкл авторизации
- */
- void SetAuthEnableStateStr(char *str)
- {
- if (strncmp(str, "on", 2) == 0)
- sSettings.sRADIUS.Auth_enable = 1;
- else
- sSettings.sRADIUS.Auth_enable = 0;
- }
- #endif
- #ifdef HARDWARE_BT6706
- // ************************************************************************** //
- // Параметры Telnet
- #ifndef BT6702_SERVICE
- /**
- * @brief Текущий Порт
- */
- void SetTelnetPortStr(char *str)
- {
- sSettings.sTelnet.port = atoi(str);
- }
- /**
- * @brief Настройка вкл/ выкл Telnet сервера
- */
- void SetTelnetEnableStateStr(char *str)
- {
- if (strncmp(str, "on", 2) == 0)
- sSettings.sTelnet.TelnetEnable = 1;
- else
- sSettings.sTelnet.TelnetEnable = 0;
- }
- #endif
- #endif
- // ************************************************************************** //
- // Параметры даты и времени
- /**
- * @brief Дата
- */
- void SetDateStr(char *str)
- {
- TM_RTC_t tmp_data;
- char str_data[18];
- char str_time[9];
- uint8_t len;
- memset(str_data, 0, 18);
- memset(str_time, 0, 9);
- str += 2;
- strncpy(str_data, (str + 6), 2);
- strncat(str_data, (str + 2), 4);
- strncat(str_data, str, 2);
- TM_RTC_GetDateTime(&tmp_data, TM_RTC_Format_BIN);
- sprintf(str_time, "-01-%02i:%02i", tmp_data.hours, tmp_data.minutes);
- len = strlen(str_time);
- strncat(str_data, str_time, len);
- //TM_RTC_SetDateTimeString(&str_data);
- TM_RTC_SetDateTimeString(str_data);
- }
- /**
- * @brief Время
- */
- void SetTimeStr(char *str)
- {
- TM_RTC_t tmp_data;
- char str_data[18];
- char str_date[14];
- uint8_t len;
- memset(str_data, 0, 18);
- memset(str_date, 0, 14);
- TM_RTC_GetDateTime(&tmp_data, TM_RTC_Format_BIN);
- sprintf(str_date, "%02i-%02i-%02i-01-", tmp_data.date, tmp_data.month, tmp_data.year);
- len = strlen(str_date);
- strncat(str_data, str_date, len);
- strncat(str_data, str, 5);
- //TM_RTC_SetDateTimeString(&str_data);
- TM_RTC_SetDateTimeString(str_data);
- }
- // ************************************************************************** //
- // Параметры SNTP
- #ifndef BT6702_SERVICE
- /**
- * @brief Состояние SNTP
- */
- void SetSntpStateStr(char *str)
- {
- if (strncmp(str, "1", 1) == 0){
- sSettings.sSNTP.sntpEnable = true;
- }
- else{
- sSettings.sSNTP.sntpEnable = false;
- }
- }
- #endif
- /**
- * @brief IP адрес SNTP сервера
- */
- void SetSntpServerIpStr(char *str)
- {
- strcpy(sSettings.sSNTP.ip, str);
- }
- /**
- * @brief Часовой пояс контроллера
- */
- void SetSntpTimeZoneStr(char *str)
- {
- float newUtc;
- newUtc = atof(str);
- if (sSettings.sSNTP.timeZone > 0)
- {
- if (newUtc >= 0)
- {
- if (newUtc >= sSettings.sSNTP.timeZone)
- TM_RTC_Correction(newUtc - sSettings.sSNTP.timeZone);
- else
- TM_RTC_Correction(newUtc - sSettings.sSNTP.timeZone);
- }
- else
- {
- TM_RTC_Correction(newUtc - sSettings.sSNTP.timeZone);
- }
- }
- else if (sSettings.sSNTP.timeZone < 0)
- {
- if (newUtc >= 0)
- {
- TM_RTC_Correction(newUtc + fabs(sSettings.sSNTP.timeZone));
- }
- else
- {
- if (newUtc >= sSettings.sSNTP.timeZone)
- TM_RTC_Correction(fabs(sSettings.sSNTP.timeZone) - fabs(newUtc));
- else
- TM_RTC_Correction(newUtc - sSettings.sSNTP.timeZone);
- }
- }
- else if (sSettings.sSNTP.timeZone == 0)
- {
- TM_RTC_Correction(newUtc);
- }
- sSettings.sSNTP.timeZone = newUtc; // atof(str);
- //TM_RTC_Correction(sSettings.sSNTP.timeZone);
- }
- // ************************************************************************** //
- // Параметры реле/сухих контактов
- /**
- * @brief Тип действий при срабатывание сухих контактов
- */
- void SetDINTypeActStr(char *str, uint8_t num)
- {
- sSettings.sInOuts.din_type_act[num] = atoi(str);
- }
- /**
- * @brief Источник срабатывания реле
- */
- void SetROTypeActStr(char *str, uint8_t num)
- {
- static uint8_t OldROtype_Sourse[2] = {0};
- OldROtype_Sourse[num] = sSettings.sInOuts.ro_type_source[num];
- sSettings.sInOuts.ro_type_source[num] = atoi(str);
- if(OldROtype_Sourse[num] != sSettings.sInOuts.ro_type_source[num])
- SetROInt(0, num);
- }
- /**
- * @brief
- */
- void SetROStr(char *str, uint8_t num)
- {
- set_state_douts((DOUT1+num), atoi(str));
- }
- /**
- * @brief
- */
- void SetROInt(uint8_t val, uint8_t num)
- {
- set_state_douts((DOUT1+num), val);
- }
- /********************************* (C) РОТЕК **********************************/
|