#ifndef AM2301_H_
#define AM2301_H_

#include <stdint.h>
#include "common_config.h"
#include "stm32f4xx.h"

/* Настройки */
#define DHT_TIMEOUT 				10000	//Количество итераций, после которых функция вернёт пустые значения
#define DHT_POLLING_CONTROL			1		//Включение проверки частоты опроса датчика
#define DHT_POLLING_INTERVAL_DHT11	2000	//Интервал опроса DHT11 (0.5 Гц по даташиту). Можно поставить 1500, будет работать
#define DHT_POLLING_INTERVAL_DHT22	1000	//Интервал опроса DHT22 (1 Гц по даташиту)
//#define DHT_IRQ_CONTROL						//Выключать прерывания во время обмена данных с датчиком

typedef enum
{
    CONNECTION_ERR = 0,
	READ_ERR,
    PARITY_ERR,
    CONNECTION_OK,
    DATA_OK,
    
} AM2301_t;


/* Структура возвращаемых датчиком данных */
typedef struct {
	float hum;
	float temp;
    uint8_t ErrorCycle;   // Счетчик ошибок циклов преобразования температуры
    uint8_t SensorState;  // Состояние датчика (0 - датчик работает, 1 - неисправность)
} at2301_data_t;


/* Структура объекта датчика */
typedef struct {
	gpio_t ow_pin;
    IRQn_Type irq;
} at2301_sensor;

extern at2301_data_t sAM2301Sensorsdata[MAX_T_SENSORS];

void DHT_Task_Init(void);

#endif