#ifndef __SENSOR_H
#define __SENSOR_H

#include "main.h"
#include "fifo.h"
#include "usart_user.h"

#define BIT_0 (1 << 0)
#define BIT_1 (1 << 1)

#define BIT_ALL (BIT_0 | BIT_1 )

#define SENSOR_DATA_LENGTH 		64

#define CO_DATA_LENGTH 			9





#define CO_Threshold 30










enum DEVICE_TYPE
{
	NH3_TYPE = 0,
	H2S_TYPE,
	PM25_TYPE,
	CH2O_TYPE,
	CO2_TYPE,
	CO_TYPE,
};


typedef struct music_control_st{
	//osSemaphoreId recvBinarySemHandle;
	uint8_t MQ2;
	uint32_t CO;
}music_ctr_t;


typedef struct sensor_parse_control_st{
	//osSemaphoreId recvBinarySemHandle;
	uint8_t type;
	RingBuff_t recvRingBuff; 
	uint8_t sensorData[SENSOR_DATA_LENGTH];
	uint8_t data_length;
	
	void (*function) (RingBuff_t *ringBuff);
}sensor_parse_ctrl_t;

extern volatile uint8_t THRESHOLD_CTRL;
extern sensor_parse_ctrl_t co;

void InitSonsorCtrlData(sensor_parse_ctrl_t *sensor_parse_ctrl, uint8_t data_length, uint8_t type);
void SensorModeInitSet(void);
void GetSensorData(void);
uint8_t ReadSensorData(sensor_parse_ctrl_t *sensor_parse_ctrl);
void AnalysisSensorData(sensor_parse_ctrl_t *sensor_parse_ctrl);
void Mq2Data(void);
#endif /* __FIFO_H */