#ifndef _BLV_485_DEV_PB20_STRIP_FUN_H_
#define _BLV_485_DEV_PB20_STRIP_FUN_H_

#include "stdint.h"
#include "BLV_485_Protocol.h"
#include "BLV_All_Dev_Init.h"

#define PB20_Strip_Device_Type             0x32

#define PB20_Strip_LIGHT_OPEN              0x01
#define PB20_Strip_LIGHT_CLOSE             0x02

#define PB20_Strip_Ctrl_UpperLimit         0x05       //向上调光至上限
#define PB20_Strip_Ctrl_LowerLimit         0x06       //向下调光至下限
//#define PB20_Strip_Cycle_Ctrl              0x07       //循环调光
#define PB20_Strip_Cycle_Stop              0x08       //停止调光
#define PB20_Strip_DimTime_Set             0x09       //调光渐变时间设置

#define PB20_Strip_OnlySwitch              0x11       //只控制开关状态
#define PB20_Strip_OnlyBright              0x12       //只调节亮度
#define PB20_Strip_Dim_Up                  0x1C       //向上调光 - 相对调节
#define PB20_Strip_Dim_Down                0x1D       //向下调光 - 相对调节
#define PB20_Strip_Dim_Cir               0x22       //相对调节 - 反向
#define PB20_Strip_Dim_OnCir                 0x23       //相对调节-  反向    亮的灯

#define PB20_Strip_Dim_Up_Limit            0x1A       //唯有亮的灯 向上调光 至上限  -  相对调节
#define PB20_Strip_Dim_Down_Limit          0x1B       //唯有亮的灯 向下调光 至下限  -  相对调节

#define PB20_Strip_Cycle_Dim_Up            0x1E       //向上循环
#define PB20_Strip_Cycle_Dim_Down          0x1F       //向下循环
 
#define PB20_Strip_Cycle_Dim_Up_Limit      0x20       //唯有亮的灯 向上循环 至上限
#define PB20_Strip_Cycle_Dim_Down_Limit    0x21       //唯有亮的灯 向下循环 至下限



#define PB20_Strip_BUFF_SIZE         0x04

typedef struct
{
	BLV_COMM_RECORD_G comm_record;				      //通讯记录
	uint8_t DevSendCnt:4;     					      //设备发送计数   计数达到重发次数都没有回复，判为离线  占4位
	uint8_t DevOffline:2;       				      //设备离线标志 1，设备离线   0，设备在线             占2位
	uint8_t DevOfflineLast:2;                         //设备离线标志 1，设备离线   0，设备在线         占2位
	
//	uint8_t SendSn;
//	uint8_t CtrlCnt;
	
	uint16_t LoopValidNum;                            //有效输出回路
	
	uint8_t LightBuf[PB20_Strip_BUFF_SIZE]; 		  //回路当前亮度
	uint8_t LightBuf_Last[PB20_Strip_BUFF_SIZE];      //回路上次亮度
    uint8_t ReportLight[PB20_Strip_BUFF_SIZE];        //上报给服务器的亮度值
	
	uint8_t CtrlMode[PB20_Strip_BUFF_SIZE];           //递增/递减当前控制模式
	uint8_t CtrlMode_Last[PB20_Strip_BUFF_SIZE];
	
	uint8_t CtrlTime[PB20_Strip_BUFF_SIZE];           //递增/递减渐变时间
	uint8_t Strip_DimTime;                            //回路亮度控制渐变时间
	
	
	uint8_t PB20DevType;                              //父设备类型
	uint8_t PB20DevAddr;                              //父设备458地址
	uint8_t PB20DevPort;                              //父设备485端口
	
	uint32_t PB20Addr;                                //父设备链表地址
	
    
	uint8_t AG_Flag;                                  //非亮度控制
    uint8_t LSIC_Flag;                                   //LS非循环设置（相对调节）
    uint8_t LS_Flag;                                   //亮度控制
    uint8_t SW_Flag;                                   //开关控制
	
}__attribute__ ((__packed__))RS485_PB20_Strip_INFO;


void BLV_RS485_PB20_Strip_Data_Init(uint8_t devaddr);
void BLV_RS485_PB20_Strip_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len);

void BLV_PB20_Strip_Group_Control_State(uint32_t CfgDevAddIn, uint16_t DevInputAddr,uint32_t devaddr, uint32_t CtrlFlag, uint8_t CtrlNum,uint16_t *start);

#endif

