#ifndef __BLV_485_DEV_FLOORHEATFUN_H
#define __BLV_485_DEV_FLOORHEATFUN_H
#include "BLV_Dev_Action.h"
#include "BLV_All_Dev_Init.h"

#define FLOORHEAT_ON_OFF_FUNCTION				0x01	//开关机功能
#define FLOORHEAT_SET_OC_FUNCTION				0x03	//设置温度功能
#define FLOORHEAT_READ_REGISTER_FUNCTION		0x06	//读寄存器功能
#define FLOORHEAT_WRITE_REGISTER_FUNCTION		0x07	//写寄存器功能

#define FLOORHEAT_ON							0x01	//地暖开机
#define FLOORHEAT_OFF							0x00	//地暖关机

#define FLOORHEAT_VALVE_ON						0x01	//地暖阀开
#define FLOORHEAT_VALVE_OFF						0x00	//地暖阀关

typedef struct 
{
	uint8_t on_off:			2;	//开关机标志或计数
	uint8_t set_oc:			2;	//设置温度标志或计数
	uint8_t :	4;	//暂无使用
}__attribute__ ((__packed__))FloorHeat_Ctrl_Struct;	//485地暖控制结构体（uint8_t不够可直接改类型）

typedef struct 
{
	uint8_t on_off;	//开关机
	uint8_t set_oc;	//设置温度
	uint8_t indoor_oc;	//室内温度
	uint8_t valve;	//阀门状态
	uint8_t read_register;	//要读寄存器的起始地址
	uint8_t write_register;	//要写寄存器的起始地址
	uint8_t register_num;	//要读或写的寄存器数量
	uint8_t write_data;	//要写入寄存器的数据
}__attribute__ ((__packed__))FloorHeat_Content_Struct;	//485地暖控制内容结构体

typedef struct 
{
	BLV_COMM_RECORD_G comm_record;	//通讯记录
	FloorHeat_Ctrl_Struct ctrl_flag;	//地暖控制标志位
	FloorHeat_Ctrl_Struct ctrl_cnt;	//地暖控制次数
	FloorHeat_Content_Struct ctrl_content;	//地暖控制内容
	FloorHeat_Content_Struct ctrl_content_last;	//地暖上一次控制内容
	FloorHeat_Content_Struct new_state;	//地暖当前状态
	FloorHeat_Content_Struct last_state;   //地暖上次状态
	uint8_t DevSendCnt;	//发送次数
	uint8_t DevOffline;	//设备离线状态
	uint8_t DevOfflineLast;	//上一次设备离线状态
	uint32_t inquire_tick;	//询问时间戳
}__attribute__ ((__packed__))RS485_FloorHeat_INFO;	//485地暖设备私有属性

void BLW_RS485_FloorHeatFun_Init(uint16_t len,uint8_t *data);	//初始化地暖设备数据
void BLW_RS485_FloorHeatFun_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len);	//配置文件初始化地暖设备数据
#endif
