#ifndef _BLV_485_DEV_CURTAINFUN_H_
#define _BLV_485_DEV_CURTAINFUN_H_

#include "stdint.h"
#include "BLV_Dev_Action.h"
#include "BLV_All_Dev_Init.h"


#define  COMMAND_Read        0x01;       //窗帘电机读命令
#define  COMMAND_Write       0x02;       //窗帘电机写命令
#define  COMMAND_Control     0x03;       //窗帘电机控制命令
#define  COMMAND_Request     0x04;       //窗帘电机请求命令

#define  COMMCON_LEN         0x07        //控制命令长度
#define  CUR_RECDATALENMAX   0x08        //接收数据最大长度

//窗帘电机控制命令内容定义开始
#define  CUR_OPEN      0x01      //打开
#define  CUR_CLOSE     0x02      //关闭   
#define  CUR_STOP      0x03      //停止
#define  CUR_PER       0x04      //百分比
//窗帘电机控制命令内容定义结束

#define  StartCode          0x55;       //起始码  固定
#define  DEVIDH             0x0D;       //上级设备地址     485窗帘设备类型

typedef struct DOOYACONTROL_DATE
{		
	uint8_t Start_Code;         //起始码              
	uint8_t Dev_ID_L;           //本设备地址           
	uint8_t Dev_ID_H;           //上级设备地址
	uint8_t COMMAND;            //功能码         
	uint8_t DATE;               //数据
	uint8_t DATE1;
	uint8_t CRC16_L;            //校验码低位
	uint8_t CRC16_H;            //校验码高位

}__attribute__ ((__packed__))DOOYACON_DATE;


typedef struct RS485_Curtain_INFO
{
	
	BLV_COMM_RECORD_G comm_record;		//通讯记录
	
	uint8_t DevSendCnt;               //设备发送计数   计数达到重发次数都没有回复，判为离线  占4位
	uint8_t DevOffline;               //设备离线标志 1，设备离线   0，设备在线              占2位
	uint8_t DevOfflineLast;           //设备离线标志 1，设备离线   0，设备在线              占2位
	
	uint8_t DYCurtainStateLast;       //窗帘最近一次状态
	uint8_t DYCurtainState;           //窗帘当前状态
	uint8_t DYCurtainNextState;       //窗帘下一个状态
	
	DOOYACON_DATE  DooYaCon_data;
	
	uint8_t read_flag;              //读标志
	uint8_t control_flag;           //控制标志
	uint8_t request_flag;           //请求标志
	uint8_t reverse_enable;			//电机控制输出反向使能
	
//	   uint8_t DevCurtainDelayFlag;	//窗帘控制标志位
//	   uint8_t DevCurtainDelayLastState;	//
//	
//	   uint8_t DevCurtainDelayState;	//窗帘延时控制状态
//	   uint32_t DevCurtainDelayTime;	//窗帘延时时间
//	   uint32_t DevCurtainDelayTick;	//窗帘延时时间戳
  
//	  Dev_Name_Struct DevNameStruct;//窗帘别名 每个回路16个字节别名     //仅支持30个回路别名
	
}__attribute__ ((__packed__))RS485_Cur_INFO;





void BLV_485_Dev_Curtain_Data_Init(uint16_t DataLen, uint8_t *Data);

void BLW_RS485_Curtain_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len);

#endif
