/********************************* (C) РОТЕК ***********************************
 * @module  parameters
 * @file    parameters.h
 * @version 1.0.0
 * @date    XX.XX.XXXX
 * $brief   parameters
 *******************************************************************************
 * @history     Version  Author         Comment
 * XX.XX.XXXX   1.0.0    Telenkov D.A.  First release.
 *******************************************************************************
 */

/* Define to prevent recursive  ----------------------------------------------*/
#ifndef PARAMETERS_H
#define PARAMETERS_H

#include <stdbool.h>
#include "common_config.h"

/**
  * @brief 
  */
bool GetRebootStatus(void);

// ************************************************************************** //
//                        Параметры UPS

void GetInputFreqStr(char *str, uint8_t *len);
void GetInputFreqInt(float *value);
void GetOutputFreqStr(char *str, uint8_t *len);
void GetInputVoltageStr(char *str, uint8_t *len);
void GetInputVoltageInt(float *value);
void GetOutputVoltageStr(char *str, uint8_t *len);
void GetOutputVoltageInt(float *value);
void GetPowerStr(char *str, uint8_t *len);
void GetPowerInt(int32_t *value);
void GetBatCapacityStr(char *str, uint8_t *len);
void GetBatCapacityInt(int32_t *value);
void GetRuntimeStr(char *str, uint8_t *len);
void GetRuntimeInt(int32_t *value);
void GetAKBWorktimeStr(char *str, uint8_t *len);
void GetAKBWorktimeInt(int32_t *value);
void GetInternalTempStr(char *str, uint8_t *len);
void GetInternalTempInt(float *value);
/**
  * @brief
  */
void GetAlarmMonitorStr(char *str, uint8_t *len);
void GetConnectMonitorStr(char *str, uint8_t *len);

void GetModeStr(char *str, uint8_t *len);

/**
  * @brief
  */
void GetInputCurrentStr(char *str, uint8_t *len);

/**
  * @brief
  */
void GetInputCurrentInt(float *value);

/**
  * @brief
  */
void GetOutputCurrentStr(char *str, uint8_t *len);

/**
  * @brief
  */
void GetOutputCurrentInt(float *value);

/**
  * @brief
  */
void GetVoltageAKBtStr(char *str, uint8_t *len);

/**
  * @brief
  */
void GetVoltageAKBInt(float *value);

/**
  * @brief  Режим работы
  */
void GetModeStr(char *str, uint8_t *len);

/**
  * @brief  Режим работы
  */
void GetModeEn(char *str, uint8_t *len);

/**
  * @brief  Индикация аварийных ситуаций
  * TODO добавить реальный параметр
  */
void GetAlarmStr(char *str, uint8_t *len);

/**
  * @brief  Индикация аварийных ситуаций
  */
void GetUPSAlarmStr(char *str, uint8_t *len);

/**
  * @brief  Индикация аварийных ситуаций
  */
void GetAKBAlarmStr(char *str, uint8_t *len);

/**
  * @brief  Индикация аварийных ситуаций
  */
void GetConnectUPSAlarmStr(char *str, uint8_t *len);

/**
  * @brief  Индикация аварийных ситуаций
  */
void GetUPSModeStr(char *str, uint8_t *len);

/**
  * @brief  Текущее время ч/м/с
  */
void GetCurrentTimeStr(char *str, uint8_t *len);


// ************************************************************************** //
//                             Параметры даты и времени

/**
  * @brief  Дата (Ready for PRS!)
  */
void GetDateStr(char *str, uint8_t *len);

/**
  * @brief  Время (Ready for PRS!)
  */
void GetTimeStr(char *str, uint8_t *len);

/**
  * @brief  Время (Ready for PRS!)
  */
void GetUnixTimeStr(char *str, uint8_t *len);

// ************************************************************************** //
//                             Параметры SNTP

/**
  * @brief  Состояние SNTP (Ready for PRS!)
  */
void GetSntpStateStr(char *str, uint8_t *len);

/**
  * @brief  Состояние SNTP (Ready for PRS!)
  */
void GetSntpStateStrRU(char *str, uint8_t *len);

/**
  * @brief  IP адрес SNTP сервера (Ready for PRS!)
  */
void GetSntpServerIpStr(char *str, uint8_t *len);

/**
  * @brief  Часовой пояс контроллера (Ready for PRS!)
  */
void GetSntpTimeZoneStr(char *str, uint8_t *len);

/**
  * @brief  Дата последней синхронизации SNTP (Ready for PRS!)
  */
void GetSntpLastDataStr(char *str, uint8_t *len);

// ************************************************************************** //
//                             Информация

// ************************************************************************** //
//                          Настройки аутентификации

void GetUserLogin(uint8_t user_id, char *str, uint8_t *len);

void GetUserPassword(uint8_t user_id, char *str, uint8_t *len);

void GetUserLevel(uint8_t user_id, char *str, uint8_t *len);

void GetUserLevelInt(uint8_t user_id, uint8_t *value);
/**
  * @brief  Время работы устройства
  */
void GetWorkTimeStr(char *str, uint8_t *len);

/**
  * @brief  Модель устройства
  */
void GetModelStr(char *str, uint8_t *len);

/**
  * @brief  Название устройсва устройства
  */
void GetNameDeviceStr(char *str, uint8_t *len);

/**
  * @brief  Дата производства
  */
void GetProductionDataStr(char *str, uint8_t *len);

/**
  * @brief  Версия ПО
  */
void GetVersionStr(char *str, uint8_t *len);

/**
  * @brief  MAC адрес устройства
  */
void GetMacStr(char *str, uint8_t *len);

/**
  * @brief  Серийный номер устройства
  */
void GetSerialNumberStr(char *str, uint8_t *len);

/**
  * @brief  Владелец устройства
  */
void GetOwnerStr(char *str, uint8_t *len);

/**
  * @brief  Местоположение устройства
  */
void GetLocationStr(char *str, uint8_t *len);

/**
  * @brief  Комментарии
  */
void GetCommentsStr(char *str, uint8_t *len);

/**
  * @brief  Серийный номер UPS
  */
void GetUPSSerialStr(char *str, uint8_t *len);

/**
  * @brief  Модель UPS
  */
void GetUPSModelStr(char *str, uint8_t *len);

/**
  * @brief  Версия UPS ПО
  */
void GetUPSVersionStr(char *str, uint8_t *len);

#ifdef NOTIFICATION_CONTROL_ENABLE
// ************************************************************************** //
//                              Параметры уведомления

/**
  * @brief  Параметр разрешения отправки трапа
  */
void GetNotificationTrapsStateStr(char *str, uint8_t *len, uint8_t num);

/**
  * @brief  Параметр разрешения отправки трапа
  */
void GetNotificationTrapsStateStr2(char *str, uint8_t *len, uint8_t num);

/**
  * @brief Длинное имя трапа
  */
void GetTrapLongNameStr(char *str, uint8_t *len, uint8_t num);
#endif

// ************************************************************************** //
//                             Параметры WEB

/**
  * @brief  Текущий IP адрес
  */
void GetIpStr(char *str, uint8_t *len);

/**
  * @brief  Текущий шлюз
  */
void GetGatewayStr(char *str, uint8_t *len);

/**
  * @brief  Текущая маска подсети
  */
void GetMaskStr(char *str, uint8_t *len);

/**
  * @brief  Настройка DHCP
  */
void GetDhcpStateStr(char *str, uint8_t *len);

/**
  * @brief  Настройка DHCP
  */
void GetDhcpStateUDP(char *str, uint8_t *len);

/**
  * @brief  Настройка DHCP
  */
void GetDhcpStateStrRu(char *str, uint8_t *len);

#ifdef WHITELIST_ENABLE
// ************************************************************************** //
//                             Параметры довверительных хостов

/**
  * @brief  диапазон доверительных хостов
  */
void GetWhiteListSTR(char *str, uint8_t *len, uint8_t num);

/**
  * @brief первый диапазон доверительных хостов
  */
void GetWhiteList1STR(char *str, uint8_t *len);

/**
  * @brief второй диапазон доверительных хостов
  */
void GetWhiteList2STR(char *str, uint8_t *len);

/**
  * @brief третий диапазон доверительных хостов
  */
void GetWhiteList3STR(char *str, uint8_t *len);

/**
  * @brief четвертый диапазон доверительных хостов
  */
void GetWhiteList4STR(char *str, uint8_t *len);

/**
  * @brief пятый диапазон доверительных хостов
  */
void GetWhiteList5STR(char *str, uint8_t *len);

/**
  * @brief  маска диапазона доверительных хостов
  */
void GetWhiteListMask(uint32_t *value, uint8_t num);

/**
  * @brief  ip диапазона доверительных хостов
  */
void GetWhiteListIP(uint32_t *value, uint8_t num);

#endif

#ifdef PORTGW_ENABLE
// ************************************************************************** //
//                             Параметры прозрачного порта

/**
  * @brief  Включен/Выключен
  */
void GetPortGwEnabledStr(char *str, uint8_t *len);

/**
  * @brief  IP-адрес
  */
void GetPortGwIpStr(char *str, uint8_t *len);

/**
  * @brief  Сетевой порт
  */
void GetPortGwPortnumStr(char *str, uint8_t *len);

/**
  * @brief Скорость передачи данных
  */
void GetPortGwBaudStr(char *str, uint8_t *len);

/**
  * @brief Четность
  */
void GetPortGwParityStr(char *str, uint8_t *len);

/**
  * @brief Число бит данных
  */
void GetPortGwDatabitsStr(char *str, uint8_t *len);

/**
  * @brief Число стоп-бит
  */
void GetPortGwStopbitsStr(char *str, uint8_t *len);
#endif

#ifdef DALLAS_SENSOR_ENABLE
// ************************************************************************** //
//                             Параметры датчика температуры

/**
  * @brief  Размещение датчика температуры 1
  */
void GetTS1locationStr(char *str, uint8_t *len);

/**
  * @brief  Размещение датчика температуры 2
  */
void GetTS2locationStr(char *str, uint8_t *len);

#endif

// ************************************************************************** //
//                             Параметры SNMP
/**
  * @brief  Текущее TRAP community
  */
void GetTrapCommunity(char *str, uint8_t *len);

/**
  * @brief  Текущее community для чтения
  */
void GetReadCommunity(char *str, uint8_t *len);

/**
  * @brief  Текущее community для записи
  */
void GetWriteCommunity(char *str, uint8_t *len);

/**
  * @brief  IP SNMP менеджера
  */
void GetManagerIp(char *str, uint8_t *len);
void GetManagerIp2(char *str, uint8_t *len);
void GetManagerIp3(char *str, uint8_t *len);
void GetManagerIp4(char *str, uint8_t *len);
void GetManagerIp5(char *str, uint8_t *len);

#ifdef RADIUS_SERVER_ENABLE
// ************************************************************************** //
//                             Параметры RADIUS

/**
  * @brief  Текущий IP адрес
  */
void GetRDSIpStr(char *str, uint8_t *len);

/**
  * @brief Текущий Порт
  */
void GetRDSPortStr(char *str, uint8_t *len);

/**
  * @brief  Текущий Код access
  */
void GetRDSKeyAccesstStr(char *str, uint8_t *len);

/**
  * @brief  Текущая пароль RADIUS
  */
void GetRDSPasswordkStr(char *str, uint8_t *len);

/**
  * @brief  Настройка вкл/ выкл RADIUS сервера
  */
void GetRDSEnableStateStr(char *str, uint8_t *len);

/**
  * @brief  Настройка вкл/ выкл авторизации
  */
void GetAuthEnableStateStr(char *str, uint8_t *len);

#endif
#ifndef BT6702_SERVICE
// ************************************************************************** //
//                             Температура с внешних датчиков
#ifdef DALLAS_SENSOR_ENABLE
/**
  * @brief
  */
void GetTempCaseStr(char *str, uint8_t *len);

/**
  * @brief
  */
void GetTempCaseInt(float *value);
#endif
#endif
// ************************************************************************** //
//                             Параметры реле/сухих контактов
#ifdef DINS_ENABLE
/**
  * @brief  Тип действий при срабатывание сухих контактов
  */
void GetDINTypeActStr(char *str, uint8_t *len, uint8_t num);

/**
  * @brief  Тип действий при срабатывание сухих контактов
  */
void GetDIN0TypeActStr(char *str, uint8_t *len);

/**
  * @brief  Тип действий при срабатывание сухих контактов
  */
void GetDIN1TypeActStr(char *str, uint8_t *len);

/**
  * @brief  Имя сухого контакта
  */
void GetDINNameStr(char *str, uint8_t *len, uint8_t num);

/**
  * @brief  Имя сухого контакта
  */
void GetDIN0NameStr(char *str, uint8_t *len);

/**
  * @brief  Имя сухого контакта
  */
void GetDIN1NameStr(char *str, uint8_t *len);

/**
  * @brief  Состояние сухого контакта
  */
void GetDINStatusStr(char *str, uint8_t *len, uint8_t num);

/**
  * @brief  Состояние сухого контакта
  */
void GetDIN0StatusStr(char *str, uint8_t *len);

/**
  * @brief  Состояние сухого контакта
  */
void GetDIN1StatusStr(char *str, uint8_t *len);

/**
  * @brief  Состояние сухого контакта
  */
void GetDIN0StatusStrRU(char *str, uint8_t *len);
#endif
#ifdef DOUTS_ENABLE
/**
  * @brief  Источник срабатывания реле
  */
void GetROTypeActStr(char *str, uint8_t *len, uint8_t num);

/**
  * @brief  Источник срабатывания реле
  */
void GetRO0TypeActStr(char *str, uint8_t *len);

/**
  * @brief  Источник срабатывания реле
  */
void GetRO1TypeActStr(char *str, uint8_t *len);

/**
  * @brief  Источник срабатывания реле
  */
void GetRO2TypeActStr(char *str, uint8_t *len);

/**
  * @brief  Состояние релейного выхода
  */
void GetDOUTStatusStr(char *str, uint8_t *len, uint8_t num);

/**
  * @brief  Состояние релейного выхода
  */
void GetDOUTStatusStrRU(char *str, uint8_t *len, uint8_t num);

/**
  * @brief  Состояние релейного выхода
  */
void GetDOUT0StatusStr(char *str, uint8_t *len);

/**
  * @brief  Состояние релейного выхода
  */
void GetDOUT1StatusStr(char *str, uint8_t *len);

/**
  * @brief  Состояние релейного выхода
  */
void GetDOUT2StatusStr(char *str, uint8_t *len);
#endif

#ifdef TELNET_ENABLE
// ************************************************************************** //
//                             Параметры Telnet

/**
  * @brief Текущий Порт
  */
void GetTelnetPortStr(char *str, uint8_t *len);

/**
  * @brief  Настройка вкл/ выкл Telnet сервера
  */
void GetTelnetEnableStateStr(char *str, uint8_t *len);

// ************************************************************************** //
//                             Параметры SSH

/**
  * @brief Текущий Порт
  */
void GetSSHPortStr(char *str, uint8_t *len);

/**
  * @brief  Настройка вкл/ выкл SSH сервера
  */
void GetSSHEnableStateStr(char *str, uint8_t *len);
#endif


#ifdef FTP_ENABLE
// ************************************************************************** //
//                             Параметры FTP

void GetFTPServer(char *str, uint8_t *len);
void GetFTPPort(char *str, uint8_t *len);
void GetFTPPath(char *str, uint8_t *len);
void GetFTPLogin(char *str, uint8_t *len);
void GetFTPPassword(char *str, uint8_t *len);

// ************************************************************************** //
//                             Параметры Syslog

void GetSyslogEnable(char *str, uint8_t *len);
void GetSyslogServer(char *str, uint8_t *len);
void GetSyslogPort(char *str, uint8_t *len);
#endif // FTP_ENABLE

// ************************************************************************** //
//                                Флаги

/**
  * @brief  Установить признак изменения сетевых параметров
  */
void GetWebReinitFlag(char *str, uint8_t *len);

// ************************************************************************** //
//                             Параметры настройки ИБП

/**
  * @brief  Минимальное напряжение на ячейках АКБ
  */
void GetUPSVoltCellMinStr(char *str, uint8_t *len);

/**
  * @brief  Минимальное напряжение на ячейках АКБ
  */
void GetUPSVoltCellMinInt(float *value);

/**
  * @brief  Максимальное напряжение на ячейках АКБ
  */
void GetUPSVoltCellMaxStr(char *str, uint8_t *len);

/**
  * @brief  Максимальное напряжение на ячейках АКБ
  */
void GetUPSVoltCellMaxInt(float *value);


/**
  * @brief Дата замены АКБ
  */
void GetDataNextChangeAKBStrRU(char *str, uint8_t *len);

/**
  * @brief Дата замены АКБ
  */
void GetDataNextChangeAKBStr(char *str, uint8_t *len);

/**
  * @brief Дата установки АКБ
  */
void GetDataSetAKBStr(char *str, uint8_t *len);

/**
  * @brief Срок службы АКБ
  */
void GetLifeTimeAKBStr(char *str, uint8_t *len);

/**
  * @brief Номинальное напряжение АКБ
  */
void GetVoltageAKBNominalStr(char *str, uint8_t *len);

/**
  * @brief Полная мощность АКБ
  */
void GetUPSPowerStr(char *str, uint8_t *len);

/**
  * @brief Полная мощность АКБ
  */
void GetUPSPowerEnumStr(char *str, uint8_t *len);

/**
  * @brief КПД ИБП
  */
void GetUPSEfficiencyFactorInt(float *value);

/**
  * @brief Емкость АКБ
  */
void GetCapacityNominalAKBStr(char *str, uint8_t *len);

/**
  * @brief Емкость АКБ
  */
void GetCapacityNominalAKBInt(int32_t *value);

// ************************************************************************** //
//                             Параметры менеджера аварийных событий

/**
  * @brief Верхняя граница VAC
  */
void GetVACAlarmHighRangeStr(char *str, uint8_t *len);

/**
  * @brief Верхняя граница VAC
  */
void GetVACAlarmHighRangeInt(int32_t *value);

/**
  * @brief Нижняя граница VAC
  */
void GetVACAlarmLowRangeStr(char *str, uint8_t *len);

/**
  * @brief Нижняя граница VAC
  */
void GetVACAlarmLowRangeInt(int32_t *value);

/**
  * @brief Гистерезис (VAC)
  */
void GetVACAlarmHisteStr(char *str, uint8_t *len);

/**
  * @brief Гистерезис (VAC)
  */
void GetVACAlarmHisteInt(float *value);
#ifdef VAC_IN_MONITOR
/**
  * @brief Верхняя граница входящего напряжения
  */
void GetVACInputAlarmHighRangeStr(char *str, uint8_t *len);

/**
  * @brief Верхняя граница входящего напряжения
  */
void GetVACInputAlarmHighRangeInt(int32_t *value);

/**
  * @brief Нижняя граница входящего напряжения
  */
void GetVACInputAlarmLowRangeStr(char *str, uint8_t *len);

/**
  * @brief Нижняя граница входящего напряжения
  */
void GetVACInputAlarmLowRangeInt(int32_t *value);

/**
  * @brief Гистерезис входящего напряжения
  */
void GetVACinputAlarmHisteStr(char *str, uint8_t *len);

/**
  * @brief Гистерезис входящего напряжения
  */
void GetVACinputAlarmHisteInt(float *value);
#endif
/**
  * @brief Верхняя граница температуры
  */
void GetTemperatureAlarmHighRangeStr(char *str, uint8_t *len);

/**
  * @brief Верхняя граница температуры
  */
void GetTemperatureAlarmHighRangeInt(int32_t *value);

/**
  * @brief Нижняя граница температуры
  */
void GetTemperatureAlarmLowRangeStr(char *str, uint8_t *len);

/**
  * @brief Нижняя граница температуры
  */
void GetTemperatureAlarmLowRangeInt(int32_t *value);

/**
  * @brief Гистерезис (температура)
  */
void GetTemperatureAlarmHisteStr(char *str, uint8_t *len);

/**
  * @brief Гистерезис (температура)
  */
void GetTemperatureAlarmHisteInt(float *value);

#if !(HARDWARE_BT6709 || HARDWARE_BT6709_MTS)

/**
  * @brief Верхняя граница температуры
  */
void GetTemperatureCabinetAlarmHighRangeStr(char *str, uint8_t *len);

/**
  * @brief Верхняя граница температуры
  */
void GetTemperatureCabinetAlarmHighRangeInt(int32_t *value);

/**
  * @brief Нижняя граница температуры
  */
void GetTemperatureCabinetAlarmLowRangeStr(char *str, uint8_t *len);

/**
  * @brief Нижняя граница температуры
  */
void GetTemperatureCabinetAlarmLowRangeInt(int32_t *value);

/**
  * @brief Гистерезис (температура)
  */
void GetTemperatureCabinetAlarmHisteStr(char *str, uint8_t *len);

/**
  * @brief Гистерезис (температура)
  */
void GetTemperatureCabinetAlarmHisteInt(float *value);

#endif

/**
  * @brief Верхняя граница нагрузки
  */
void GetLoadAlarmHighRangeStr(char *str, uint8_t *len);

/**
  * @brief Верхняя граница нагрузки
  */
void GetLoadAlarmHighRangeInt(int32_t *value);

/**
  * @brief Гистерезис (нагрузки)
  */
void GetLoadAlarmHisteStr(char *str, uint8_t *len);

/**
  * @brief Гистерезис (нагрузки)
  */
void GetLoadAlarmHisteInt(float *value);

// ************************************************************************** //
//                             Установка параметрв
// ************************************************************************** //

/**
  * @brief  Установить признак обновления ПО. 
  */
void SetLoadMode(void);

/**
  * @brief  Установить признак изменения сетевых параметров
  */
void SetWebReinitFlag(bool value);

/**
  * @brief  Установить флаг подтверждения сетевых настроек пользователем
  */
void SetConfirmWebParamsFlag(void);

#ifdef NOTIFICATION_CONTROL_ENABLE
// ************************************************************************** //
//   							Параметры уведомления

/**
  * @brief  Параметр разрешения отправки 
  */
void SetNotificationFlagsStr(uint8_t *value, uint8_t num);
#endif

// ************************************************************************** //
//                             Сетевые параметры

/**
  * @brief  IP адрес
  */
void SetIPStr(char *str);

/**
  * @brief  Шлюз
  */
void SetGatewayStr(char *str);


/**
  * @brief  Текущая маска подсети
  */
void SetMaskStr(char *str);

/**
  * @brief  Настройка DHCP
  */
void SetDhcpStateStr(char *str);

/**
  * @brief  Настройка DHCP
  */
void SetUDPDhcpStateStr(char *str);

#ifdef WHITELIST_ENABLE
// ************************************************************************** //
//                             Параметры довверительных хостов

/**
  * @brief  диапазон доверительных хостов
  */
void SetWhiteListSTR(char *str, uint8_t num);

/**
  * @brief  Первый диапазон доверительных хостов
  */
void SetWhiteList1STR(char *str);

/**
  * @brief  Второй диапазон доверительных хостов
  */
void SetWhiteList2STR(char *str);

/**
  * @brief  Третий диапазон доверительных хостов
  */
void SetWhiteList3STR(char *str);

/**
  * @brief  Четвертый диапазон доверительных хостов
  */
void SetWhiteList4STR(char *str);

/**
  * @brief  Пятый диапазон доверительных хостов
  */
void SetWhiteList5STR(char *str);

#endif

#ifdef PORTGW_ENABLE
// ************************************************************************** //
//                             Параметры прозрачного порта

/**
  * @brief  Включен/Выключен
  */
void SetPortGwEnabledStr(char *str);

/**
  * @brief  Сетевой порт
  */
void SetPortGwPortnumStr(char *str);

/**
  * @brief Скорость передачи данных
  */
void SetPortGwBaudStr(char *str);

/**
  * @brief Четность
  */
void SetPortGwParityStr(char *str);

/**
  * @brief Число бит данных
  */
void SetPortGwDatabitsStr(char *str);

/**
  * @brief Число стоп-бит
  */
void SetPortGwStopbitsStr(char *str);
#endif

#ifdef DALLAS_SENSOR_ENABLE
// ************************************************************************** //
//                             Параметры датчика температуры

/**
  * @brief  Размещение датчика температуры 1
  */
void SetTS1locationStr(char *str);

/**
  * @brief  Размещение датчика температуры 2
  */
void SetTS2locationStr(char *str);

#endif

// ************************************************************************** //
//                             Параметры SNMP

/**
  * @brief  TRAP community
  */
void SetTrapCommunity(char *str);

/**
  * @brief  Community для чтения
  */
void SetReadCommunity(char *str);

/**
  * @brief  Community для записи
  */
void SetWriteCommunity(char *str);

/**
  * @brief  IP SNMP менеджера
  */
void SetManagerIp(char *str);
void SetManagerIp2(char *str);
void SetManagerIp3(char *str);
void SetManagerIp4(char *str);
void SetManagerIp5(char *str);

/**
  * @brief  Название устройсва устройства
  */
void SetNameDeviceStr(char *str);

/**
  * @brief  Установить владельца
  */
void SetOwner(char *str);

/**
  * @brief  Установить местоположение
  */
void SetLocation(char *str);

/**
  * @brief  Установить комментарий
  */
void SetComment(char *str);

#ifdef RADIUS_SERVER_ENABLE

// ************************************************************************** //
//                             Сетевые параметры RADIUS сервера
/**
  * @brief  IP адрес
  */
void SetRDSIpStr(char *str);

/**
  * @brief  Порт
  */
void SetRDSPortStr(char *str);

/**
  * @brief  Код access
  */
void SetRDSKeyAccesstStr(char *str);

/**
  * @brief  пароль RADIUS
  */
void SetRDSPasswordkStr(char *str);

/**
  * @brief  Настройка вкл/ выкл RADIUS сервера
  */
void SetRDSEnableStateStr(char *str);

/**
  * @brief  Настройка вкл/ выкл авторизации
  */
void SetAuthEnableStateStr(char *str);

#endif

#ifdef TELNET_ENABLE
// ************************************************************************** //
//                             Параметры Telnet

/**
  * @brief Текущий Порт
  */
void SetTelnetPortStr(char *str);

/**
  * @brief  Настройка вкл/ выкл Telnet сервера
  */
void SetTelnetEnableStateStr(char *str);

// ************************************************************************** //
//                             Параметры SSH

/**
  * @brief Текущий Порт
  */
void SetSSHPortStr(char *str);

/**
  * @brief  Настройка вкл/ выкл SSH сервера
  */
void SetSSHEnableStateStr(char *str);
#endif

#ifdef SYSLOG_ENABLE
// ************************************************************************** //
//                             Параметры Syslog

void SetSyslogEnable(char *str);
void SetSyslogServer(char *str);
void SetSyslogPort(char *str);
#endif // SYSLOG_ENABLE

// ************************************************************************** //
//                             Параметры даты и времени

/**
  * @brief  Дата
  */
void SetDateStr(char *str);

/**
  * @brief  Время
  */
void SetTimeStr(char *str);

/**
  * @brief  Время
  */
void SetTimeWebStr(char *str);

// ************************************************************************** //
//                             Параметры SNTP

/**
  * @brief  Состояние SNTP
  */
void SetSntpStateStr(char *str);

/**
  * @brief  IP адрес SNTP сервера
  */
void SetSntpServerIpStr(char *str);

/**
  * @brief  Часовой пояс контроллера
  */
void SetSntpTimeZoneStr(char *str);

// ************************************************************************** //
//                             Параметры реле/сухих контактов
#ifdef DINS_ENABLE
/**
  * @brief  Тип действий при срабатывание сухих контактов
  */
void SetDINTypeActStr(char *str, uint8_t num);

/**
  * @brief  Тип действий при срабатывание сухих контактов
  */
void SetDIN0TypeActStr(char *str);

/**
  * @brief  Тип действий при срабатывание сухих контактов
  */
void SetDIN1TypeActStr(char *str);

/**
  * @brief  Имя сухого контакта
  */
void SetDINNameStr(char *str, uint8_t num);

/**
  * @brief  Имя сухого контакта
  */
void SetDIN0NameStr(char *str);

/**
  * @brief  Имя сухого контакта
  */
void SetDIN1NameStr(char *str);
#endif

#ifdef DOUTS_ENABLE
/**
  * @brief  Источник срабатывания реле
  */
void SetROTypeActStr(char *str, uint8_t num);

/**
  * @brief  Источник срабатывания реле 1
  */
void SetRO1TypeActStr(char *str);

/**
  * @brief  Источник срабатывания реле 2
  */
void SetRO2TypeActStr(char *str);

/**
  * @brief  Источник срабатывания реле 3
  */
void SetRO3TypeActStr(char *str);

/**
  * @brief
  */
void SetROStr(char *str, uint8_t num);

/**
  * @brief
  */
void SetROInt(uint8_t val, uint8_t num);

#endif
// ************************************************************************** //
//                             Параметры настройки ИБП

/**
  * @brief  Минимальное напряжение на ячейках АКБ
  */
void SetUPSVoltCellMinStr(char *str);

/**
  * @brief  Минимальное напряжение на ячейках АКБ
  */
void SetUPSVoltCellMinInt(float value);

/**
  * @brief  Максимальное напряжение на ячейках АКБ
  */
void SetUPSVoltCellMaxStr(char *str);

/**
  * @brief  Максимальное напряжение на ячейках АКБ
  */
void SetUPSVoltCellMaxInt(float value);

/**
  * @brief Дата установки АКБ
  */
void SetDataSetAKBStr(char *str);

/**
  * @brief Срок службы АКБ
  */
void SetLifeTimeAKBStr(char *str);

/**
  * @brief Номинальное напряжение АКБ
  */
void SetVoltageAKBNominalStr(char *str);

/**
  * @brief Полная мощность АКБ
  */
void SetUPSPowerStr(char *str);

/**
  * @brief Полная мощность АКБ
  */
void SetUPSPowerEnumStr(char *str);

/**
  * @brief Емкость АКБ
  */
void SetCapacityNominalAKBStr(char *str);

/**
  * @brief  Серийный номер ИБП
  */
void SetUPSSerialStr(char *str);

// ************************************************************************** //
//                             Параметры менеджера аварий

/**
  * @brief  Верхняя граница VAC
  */
void SetVACAlarmHighRangeStr(char *str);

/**
  * @brief  Верхняя граница VAC
  */
void SetVACAlarmHighRangeInt(float value);

/**
  * @brief  Нижняя граница VAC
  */
void SetVACAlarmLowRangeStr(char *str);

/**
  * @brief  Нижняя граница VAC
  */
void SetVACAlarmLowRangeInt(float value);

/**
  * @brief  Гистерезис (VAC)
  */
void SetVACAlarmHisteStr(char *str);

/**
  * @brief  Гистерезис (VAC)
  */
void SetVACAlarmHisteInt(float value);

#ifdef VAC_IN_MONITOR
/**
  * @brief Верхняя граница входящего напряжения
  */
void SetVACInputAlarmHighRangeStr(char *str);

/**
  * @brief Верхняя граница входящего напряжения
  */
void SetVACInputAlarmHighRangeInt(float value);

/**
  * @brief Нижняя граница входящего напряжения
  */
void SetVACInputAlarmLowRangeStr(char *str);

/**
  * @brief Нижняя граница входящего напряжения
  */
void SetVACInputAlarmLowRangeInt(float value);

/**
  * @brief Гистерезис входящего напряжения
  */
void SetVACinputAlarmHisteStr(char *str);

/**
  * @brief Гистерезис входящего напряжения
  */
void SetVACinputAlarmHisteInt(float value);
#endif
/**
  * @brief  Верхняя граница температуры
  */
void SetTemperatureAlarmHighRangeStr(char *str);

/**
  * @brief  Верхняя граница температуры
  */
void SetTemperatureAlarmHighRangeInt(float value);

/**
  * @brief  Нижняя граница температуры
  */
void SetTemperatureAlarmLowRangeStr(char *str);

/**
  * @brief  Нижняя граница температуры
  */
void SetTemperatureAlarmLowRangeInt(float value);

/**
  * @brief  Гистерезис (температура)
  */
void SetTemperatureAlarmHisteStr(char *str);

/**
  * @brief  Гистерезис (температура)
  */
void SetTemperatureAlarmHisteInt(float value);

#if !(HARDWARE_BT6709 || HARDWARE_BT6709_MTS)
/**
  * @brief  Верхняя граница температуры
  */
void SetTemperatureCabinetAlarmHighRangeStr(char *str);

/**
  * @brief  Верхняя граница температуры
  */
void SetTemperatureCabinetAlarmHighRangeInt(float value);

/**
  * @brief  Нижняя граница температуры
  */
void SetTemperatureCabinetAlarmLowRangeStr(char *str);

/**
  * @brief  Нижняя граница температуры
  */
void SetTemperatureCabinetAlarmLowRangeInt(float value);

/**
  * @brief  Гистерезис (температура)
  */
void SetTemperatureCabinetAlarmHisteStr(char *str);

/**
  * @brief  Гистерезис (температура)
  */
void SetTemperatureCabinetAlarmHisteInt(float value);
#endif

/**
  * @brief  Верхняя граница нагрузки
  */
void SetLoadAlarmHighRangeStr(char *str);

/**
  * @brief  Верхняя граница нагрузки
  */
void SetLoadAlarmHighRangeInt(float value);

/**
  * @brief  Гистерезис (нагрузки)
  */
void SetLoadAlarmHistStr(char *str);

/**
  * @brief  Гистерезис (нагрузки)
  */
void SetLoadAlarmHistInt(float value);

void SetEmptyFuncStr(char *str);


#endif /* #ifndef PARAMETERS_H */

/********************************* (C) РОТЕК **********************************/
