/********************************* (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 #endif #ifdef PRINTF_CUSTOM #include "tinystdio.h" #endif #include #include #include #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) РОТЕК **********************************/