/********************************* (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>

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

void GetInputFreqStr(char *str, uint8_t *len);
void GetOutputFreqStr(char *str, uint8_t *len);
void GetInputVoltageStr(char *str, uint8_t *len);
void GetOutputVoltageStr(char *str, uint8_t *len);
void GetPowerStr(char *str, uint8_t *len);
void GetBatCapacityStr(char *str, uint8_t *len);
void GetRuntimeStr(char *str, uint8_t *len);
void GetInternalTempStr(char *str, uint8_t *len);
/**
  * @brief
  */
void GetAlarmMonitorStr(char *str, uint8_t *len);
void GetConnectMonitorStr(char *str, uint8_t *len);

/**
  * @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 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  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 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 GetUPSModelStr(char *str, uint8_t *len);

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

// ************************************************************************** //
//                             Параметры 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);

// ************************************************************************** //
//                             Параметры 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);

// ************************************************************************** //
//                             Параметры 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);

// ************************************************************************** //
//                             Параметры реле/сухих контактов

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

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

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

/**
  * @brief  Источник срабатывания реле
  */
void GetROTypeActStr(char *str, uint8_t *len, uint8_t num);
/**
  * @brief  Состояние релейного выхода
  */
void GetDOUTStatusStr(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 GetWebReinitFlag(char *str, uint8_t *len);


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

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

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

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

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

/**
  * @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);

// ************************************************************************** //
//                             Параметры 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 SetOwner(char *str);

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

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

// ************************************************************************** //
//                             Сетевые параметры 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);

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

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

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

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

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

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

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

// ************************************************************************** //
//                             Параметры реле/сухих контактов

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

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

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

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


#endif /* #ifndef PARAMETERS_H */

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