/******************************* (C) LiteMesh **********************************
 * @module  commands_api
 * @file    commands_api.h
 * @version 1.0.0
 * @date    XX.XX.XXXX
 * $brief   commands_api
 *******************************************************************************
 * @history     Version  Author         Comment
 * XX.XX.XXXX   1.0.0    Telenkov D.A.  First release.
 *******************************************************************************
 */

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

#include <stdbool.h>
#include "common_config.h"
/**
  * @brief  Для нового теста добавляем имя
  */
typedef enum
{
    TEST_WAIT = 0,
    TEST_OW,
    TEST_DRY,
    TEST_U232,
    TEST_DEF,
    TEST_SET,
    TEST_RTC,
    TEST_SPIFLASH,
    TEST_ETHERNET,
    TEST_SERNO,

} TEST_t;

typedef enum
{
  TEST_IDLE = 0,
  T0READY,
  T0OK,
  T1OK,
  T2OK,
  T2READY,

} TESTING_STATE_t;

/**
  * @brief  
  */
void TestProcessing(void);

void Test_U232U485(void);
#ifdef DALLAS_SENSOR_ENABLE
void COM_TestOW(void);
#endif
#ifdef DINS_ENABLE || DOUTS_ENABLE
void Test_DRY(void);
#endif
void Test_U232F(void);
void vTest_DEF(void *params);
void vTest_SET(void *params);
void COM_TestRtc(void);
void COM_TestSPIflash(void);
void Test_Ethernet(void);
void Test_Serno(void);


/**
  * @brief  
  */
void vTestCommands(void *params);

/**
  * @brief  
  */
void TEST_SetTest(TEST_t state);
#ifdef PORTGW_ENABLE
/**
  * @brief  Отправка данных по интерфейсу RS485
  */
void COM_TestRS485(char *str, uint8_t len);
#endif

extern bool ifTest_DEF;
extern bool ifTest_SET;
extern bool macWaiting;
extern bool macIsInstalled;
extern bool fUpdatable;
extern bool fDefPressed;

/**
  * @brief  Считать статут тестирования (T0, T1, etc)
  */
void COM_ReadTestState(void);

/**
  * @brief  Сохранение Serno и отправка сообщения на сервер
  */
void COM_TestSerno(void);

/**
  * @brief  Устанавливает mac адрес исходя из unique id
  */
void COM_SetMAC(void);

/**
  * @brief  Установить статут тестирования (T0, T1, etc)
  */
void COM_SetTestState(TESTING_STATE_t status);

#endif /* #ifndef __COMMANDS_API_H */

/****************************** (C) LiteMesh ***************** end of file ****/