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

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

/**
  * @brief  Инициализация параметров SNMP
  */
void SNMP_Init(void);  


void SNMP_SysUpTimeTask(void *arg);

/**
  * @brief  Тестовый таск для проверки отправки трапов
  */
void snmp_trap_tread(void *arg);


/**
  * @brief  Инициализация SNMP агента
  */
void SNMP_AgentInit(void);

/**
  * @brief  Пользовательская функция для отправки трапа из массива traps[] 
  *         Трап помещается в очередь. Работа с очередью происходит по принципу
  *         FIFO буфера. 
  *         Если в настройках трапа отправка отключена, то трап игнорируется.
  */
void SNMP_SendUserTrap(uint8_t trapName);

/**
  * @brief  Установить SNMP Descriptor
  */
void SNMP_SetObjDescr(void);

/**
  * @brief  Установить SNMP Community для чтения
  */
void SNMP_SetReadCommunity(char *comm);

/**
  * @brief  Установить SNMP Community для записи
  */
void SNMP_SetWriteCommunity(char *comm);

/**
  * @brief  Установить SNMP Community отправки трапов
  */
void SNMP_SetTrapCommunity(char *comm);

/**
  * @brief  Установить SNMP SysContact
  */
void SNMP_SetSysContact(char *con);

/**
  * @brief  Установить SNMP SysName
  */
void SNMP_SetSysName(char *name);

/**
  * @brief  Установить SNMP SysLocation
  */
void SNMP_SetSysLocation(char *loc);

/**
  * @brief  Установить SNMP SysManagerIP
  */
void SNMP_SetManagerIP(char *ip);

/**
  * @brief  Установить SNMP Object ID
  */
void SNMP_SetObjID(void);

/**
  * @brief  Вкл/выкл трапы
  */
void SNMP_SetTrapOnOff(uint8_t state);

/**
  * @brief  Установить IP адрес для отправки трапов
  */
void SNMP_SetTrapDestination(char *ip);

/**
  * @brief  Текущее TRAP community
  */
void SNMP_GetTrapCommunity(char *str, uint8_t *len);

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

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

/**
  * @brief  IP SNMP менеджера
  */
void SNMP_GetManagerIp(char *str, uint8_t *len);

#endif /* #ifndef SNMP_API_H */

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