

#ifndef _BLV_485_DEV_PWMFUN_H_
#define _BLV_485_DEV_PWMFUN_H_

#include "stdint.h"
#include "BLV_485_Dev_LEDFun.h"

//#define DEV_PWMTYPE			((uint8_t)24)    //PWM调光类型

//#define PWMLIGHTMAX     0x64   //最高亮度
//#define PWMLIGHTMIN     0x00   //最低亮度   

//typedef enum{
//	PWM_OUT_CH1,
//	PWM_OUT_CH2,
//	PWM_OUT_CH3,
//	PWM_OUT_CH4,
//	PWM_OUT_CH_MAX,
//}RS485_PWM_OUT_NUM_E;

//#define PWM_BUFF_Size			PWM_OUT_CH_MAX    //调光回路限制

////typedef void (*RS485_PWM_IndiCtrl_ptr)(RS485_PWM_INFOP, uint16_t Addr, uint16_t OnOff);			//定义传递参数为地址和状态，返回为空的函数类型指针，用于485开关指示灯赋值

//typedef struct
//{
//	BLV_COMM_RECORD_G comm_record;	//通讯记录
//	
//	uint8_t DevSendBuf[PWM_BUFF_Size]; 			  //发送数组，用来存储所有回路的状态
//	uint8_t DevSendBuf_last[PWM_BUFF_Size];   //发送数组，用来存储所有回路的上一个状态
//	uint8_t DevSendBufNext[PWM_BUFF_Size];    //对内服务器上报比较 用于场景反馈灯控制
////	uint8_t *DevSendBufRs485;    //
////	uint8_t *DevSendBufExUdp;    //
//	
//	 
//	uint8_t DevReadBuf[PWM_BUFF_Size];        //调光回路状态变化控制标志
////	uint8_t *PWMStateChangeFlag; //调光状态变化标志
//	
////	uint8_t *PWMKeepFlag;         //调光保存标志   1，已保存   0，已恢复
////	uint8_t *PWMKeepState;       //调光状态保存
//	
//	uint8_t PWMGradualTime;  //每次调光渐变时间
//	
//	uint8_t PWMSn;               //低四位表示Sn号
//	
//	uint8_t WayCtrli;            //方式控制的下标
//	
//	uint8_t DevSendCnt;     //设备发送计数   计数达到重发次数都没有回复，判为离线  占4位
//	uint8_t DevOffline;       //设备离线标志 1，设备离线   0，设备在线             占2位
//	uint8_t DevOfflineLast;       //设备离线标志 1，设备离线   0，设备在线         占2位
//	
//	
////	uint8_t PWMRangeSetFlag;   //调光上下限设置标志
////	uint8_t PWMRangeSetCnt;    //调光渐变时间设置计数
//	
//	uint8_t PWMUpLightLimit;        //调光上限
//	uint8_t PWMUpLightLimitLast;    //调光上限
//	uint8_t PWMDownLightLimit;      //调光下限
//	uint8_t PWMDownLightLimitLast;  //调光下限
//	
//	uint8_t PWMCtrlFlag;        //调光亮度控制标志
//	uint8_t PWMCtrlCnt;         //调光亮度控制计数
//	uint8_t PWMLoopValidNum;    //调光有效回路数
//	
//	uint8_t PWMLightRelease[PWM_BUFF_Size];     //按键松开亮度保存
//	
//	uint8_t PWMLightnessReadFlag;   //调光亮度读取标志
//	uint8_t PWMLightnessReadCnt;   //调光亮度读取标志
//	
//	uint8_t PWMCycleStep;       //调光状态机
////	uint8_t PWMUpFlag;          //调光上报标志位
//	
//	uint8_t DevCtrlWayBuf[PWM_BUFF_Size];        //调光控制方式
//	uint8_t DevCtrlWayBuf_last[PWM_BUFF_Size];   //调光方式控制上一个状态
//	uint8_t DevCtrlWayContect[PWM_BUFF_Size];    //调光方式控制内容 即步长
//	
//	uint8_t PWMWayCtrlFlag;    //调光方式控制标志
//	uint8_t PWMWayCtrlCnt;     //调光方式控制计数	

////	RS485_PWM_IndiCtrl_ptr RS485_PWM_IndiCtrl;        //指示灯赋值
//}__attribute__ ((__packed__))RS485_PWM_INFO;						//485温控器的数据与函数



//void BLW_RS485_PWM_Data_Init(uint8_t devaddr);
//uint8_t BLW_PWMCycleCtrl(uint32_t dev_addr);
//uint8_t BLW_Rs485_PWM_Check(uint32_t dev_addr,uint32_t data_addr,uint16_t len);
//void BLW_PWM_Control_State(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t devaddr,uint16_t loop,uint16_t start);
//uint16_t BLW_PWM_Read_State(uint32_t devaddr,uint16_t loop);
//uint8_t PWM_State_Change_Get(uint32_t devaddr);
////void BLW_PWM_Group_Control_State(uint32_t devaddr,uint16_t state);
//uint8_t Get_BLV485_PWM_Online_Status(uint32_t devaddr);
//void Pwm_State_Add(uint32_t devaddr);
//void Pwm_State_Dec(uint32_t devaddr);
void BLW_RS485_PWM_Data_Init(Device_Public_Information_G *BUS_Public, RS485_LED_INFO *Rs485PWM, uint16_t LoopNum);

#endif







