#ifndef __TEMPCTRL_UNIT_H__
#define __TEMPCTRL_UNIT_H__


#include "apt32f102_types_local.h"

/*温控相关宏定义开始*/
#define TEM_MIN_SET        0x10   //最低温度
#define TEM_MAX_SET        0x20   //最高温度

#define TEM_VALVE_OPEN     0x01   //阀开
#define TEM_VALVE_CLOSE    0x00   //阀关


#define FAN_LOW            0x00   //低风速
#define FAN_MID            0x01   //中风速
#define FAN_HIGH           0x02   //高风速
#define FAN_AUTO           0x03   //自动风
#define FAN_STOP		   0x04	  //停

#define MODEL_COLD         0x00   //制冷模式
#define MODEL_HOT          0x02   //制热模式
#define MODEL_WIND         0x04   //送风模式
#define MODEL_AUTO         0x06   //自动模式

#define TEMP_ON            0x01   //开机
#define TEMP_OFF           0x00   //关机

#define CARDIN             0x01   //插卡
#define CARDOUT            0x00   //拔卡

#define TEM_DEPARTTURE     0x09   //偏差温度标准


#define uint5_t(data)			(data&0x1f)

#define TEMSTATECONVER(data)	(*(U16_T *)&data)  //实际u16的值
#define TEMTEMPCONVER(data)		((0x00 == data)?TEM_MAX_SET:data)  //温控器温度转换为0，就输出32度


/*温控相关宏定义结束*/


typedef struct 
{
	U32_T indoor_t : 8;			//0~50(°C)，室温
	U32_T set_t : 8;			//5~40（°C），设定温度
	U32_T valve : 1;			//阀门状态
	U32_T fan : 3;				//风速
	U32_T mode : 3;				//工作模式
	U32_T on_off : 1;			//开关机状态
	U32_T reserved : 8;		
}TemState_Struct;


typedef struct
{
	TemState_Struct TemState_Now;
	TemState_Struct TemStateLast;   	//温控器的上一个状态 用于输出屏幕
	TemState_Struct TemState_Ctrller;   //中宏网关读取到的温控状态
	
	U8_T Temp_dirwind;			//风向值,不做控制，值只记录，默认0
	
//	U16_T IndoorTem;
//	U16_T IndoorTemLast;  		//用于显示
//	
//	U16_T ReportTem; 			//用于上报
//	U16_T ReportTemLast;
	
	U8_T CardState;     		//插卡状态
	U8_T CardFlag;      		//插卡状态改变标记
	U8_T CardEn;        		//插卡状态功能启用标记
	U8_T SceneNo;       		//场景编号
	U8_T SceneFlag;     		//场景改变标记

	U8_T TempChange_Flag;		//状态改变标记
	
	U8_T TempCtrller_Cnt;		//发送次数
	U8_T TempCtrllerChange_Flag;//状态改变下发网关标记

	U32_T SceneNoTick;
	U32_T Temp_SendTick;		//温度定时上报间隔时间戳
	U32_T TempChange_Tick;
	U32_T TemQuery_1S_tick;		//查询网关温控状态时间戳
}TempCtrl_Unit;


extern TempCtrl_Unit TempCtrl;


void Debug_Init(void);
void DisPlay_Task(void);

/*相关函数声明开始*/
void TemCtrl_Init(void);             //初始化函数
void TemCtrl_Pro(void);
U8_T Ctrller_RecData_Processing(U8_T *RecData, U16_T Len);

void Ctrller_Query_AirFun(void);
void Ctrller_Query_AirState(void);
void Ctrller_Ctrl_AirState(void);

/*相关函数声明结束*/

#endif
