123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615 |
- /********************************* (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"
- #include "snmp_api.h"
- #include "settings_api.h"
- #include "snmp.h"
- #include "common_config.h"
- //#include "ups_params.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;
- // ************************************************************************** //
- // Параметры UPS
- /**
- * @brief
- */
- void GetLineFailBitStr(char *str, uint8_t *len)
- {
-
- /* if (upsParams.lineFailBit)
- *str = '1';
- else
- *str = '0';*/
-
- *len = 1;
- }
- /**
- * @brief
- */
- void GetLowBatteryBitStr(char *str, uint8_t *len)
- {
-
- /* if (upsParams.lowBatteryBit)
- *str = '1';
- else
- *str = '0';
-
- *len = 1;*/
- }
- /**
- * @brief
- */
- void GetInputFreqStr(char *str, uint8_t *len)
- {
- /* sprintf(str, "%0.1f", upsParams.inputFrequency);
- //strcpy(str, upsParamsStr.inputFrequency);*/
- *len = strlen(str);
- }
- /**
- * @brief
- */
- void GetOutputFreqStr(char *str, uint8_t *len)
- {
- // sprintf(str, "%0.1f", upsParams.outputFrequency);
- //strcpy(str, upsParamsStr.outputFrequency);
- *len = strlen(str);
- }
- /**
- * @brief
- */
- void GetInputVoltageStr(char *str, uint8_t *len)
- {
- // sprintf(str, "%0.1f", upsParams.inputVoltage);
- //strcpy(str, upsParamsStr.inputVoltage);
- *len = strlen(str);
- }
- /**
- * @brief
- */
- void GetOutputVoltageStr(char *str, uint8_t *len)
- {
- //sprintf(str, "%0.1f", upsParams.outputVoltage);
- //strcpy(str, upsParamsStr.outputVoltage);
- *len = strlen(str);
- }
- /**
- * @brief
- */
- void GetPowerStr(char *str, uint8_t *len)
- {
- // sprintf(str, "%0.1f", upsParams.power);
- //sprintf(str, upsParamsStr.power);
- *len = strlen(str);
- }
- /**
- * @brief
- */
- void GetBatCapacityStr(char *str, uint8_t *len)
- {
- // sprintf(str, "%0.1f", upsParams.batteryCapacity);
- //strcpy(str, upsParamsStr.batteryCapacity);
- *len = strlen(str);
- }
- /**
- * @brief
- */
- void GetRuntimeStr(char *str, uint8_t *len)
- {
- // sprintf(str, "%d", upsParams.runtime);
- //strcpy(str, upsParamsStr.runtime);
- *len = strlen(str);
- }
- /**
- * @brief
- */
- void GetInternalTempStr(char *str, uint8_t *len)
- {
- // sprintf(str, "%0.1f", upsParams.temperature);
- //strcpy(str, upsParamsStr.temperature);
- *len = strlen(str);
- }
- /**
- * @brief
- */
- void GetLoadMonitorStr(char *str, uint8_t *len)
- {
- /* // if (upsParams.monitor_power)
- *str = '1';
- else
- *str = '0';*/
-
- *len = 1;
- }
- /**
- * @brief
- */
- void GetTempMonitorStr(char *str, uint8_t *len)
- {
- /*// if (upsParams.monitor_temperature)
- *str = '1';
- else
- *str = '0';*/
-
- *len = 1;
- }
- /**
- * @brief
- */
- void GetConnectMonitorStr(char *str, uint8_t *len)
- {
- // В WEB флаг коннекта инвернысный!!!
- // 0 - коннект есть, 1 - нет
- /* if (upsParams.connect)
- *str = '0';
- else
- *str = '1';*/
-
- *len = 1;
- }
- // ************************************************************************** //
- // Alarms
- /**
- * @brief Индикация аварийных ситуаций
- */
- void GetAlarmStr(char *str, uint8_t *len)
- {
- strncpy(str, 0, 1);
- *len = 1;
-
- //strncpy(str, (char*)&sAlarm, sizeof(sAlarm));
- //*len = sizeof(sAlarm);
- }
- // ************************************************************************** //
- // Информация
- /**
- * @brief Время работы устройства
- */
- void GetWorkTimeStr(char *str, uint8_t *len)
- {
- u32_t tick;
- uint16_t day;
- uint8_t hour;
- uint8_t min;
-
- snmp_get_sysuptime(&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);
- }
- /**
- * @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);
- }
- // ************************************************************************** //
- // Параметры 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;
- }
- // ************************************************************************** //
- // Параметры 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);
- }
- // ************************************************************************** //
- // Сброс настроек и перезагрузка
- /**
- * @brief Произошел сброс настроек
- */
- void GetRestore(char *str, uint8_t *len) // +
- {
- sprintf(str, "%s", "1");
- *len = 1;
- }
- /**
- * @brief Произошла перезагрузка
- */
- void GetReboot(char *str, uint8_t *len) // +
- {
- sprintf(str, "%s", "1");
- *len = 1;
- }
- // ************************************************************************** //
- // Флаги
- /**
- * @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)
- {
- sSettings.bootParams.loadMode = 1;
- }
- /**
- * @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;
- }
- // ************************************************************************** //
- // Параметры SNMP
- /**
- * @brief Community для чтения
- */
- void SetReadCommunity(char *str)
- {
- strcpy(sSettings.sSnmp.readCommunity, str);
- }
- /**
- * @brief Community для записи
- */
- void SetWriteCommunity(char *str)
- {
- strcpy(sSettings.sSnmp.writeCommunity, str);
- }
- /**
- * @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);
- }
- /**
- * @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);
- }
- /**
- * @brief Установить комментарий
- */
- void SetComment(char *str)
- {
- strcpy(sSettings.sInfo.comments, str);
- }
- /********************************* (C) РОТЕК **********************************/
|