#ifndef _BLV_NOR_DEV_HVOUTFUN_
#define _BLV_NOR_DEV_HVOUTFUN_

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

#define  HVoutNumMAX  			32         	//强电继电器个数限制
#define  C1_HVOUTNUMMAX         0x18    	//C1为20路   


typedef struct 
{
	BLV_COMM_RECORD_G comm_record;		//通讯记录
	
	uint32_t DevChangeFlag;   //设备变化标志  为1表示有输入 读完标志后，需要清空
	
	uint8_t DevHVoutState[HVoutNumMAX];  //当前强电继电器的状态   结合设备状态变化标志，可以判断当前强电继电器是打开还是关闭
	uint8_t DevHVoutStateLast[HVoutNumMAX];  //当前强电继电器的上一个状态	
	uint8_t DevHVoutSaveState[HVoutNumMAX];  //状态保存   2022-12-29
	
	uint8_t A9Relay_ReadFlag;          //2023-07-29
	
	uint8_t HVoutLoopValidNum;    //强电继电器有效回路数
	uint8_t HVoutCtrlCnt;        //控制计数
	
	uint8_t HVSwitchFlag;         //强电开关标志  1，强电开关  0，普通开关   必须先配置继电器，再配置相应的开关，才算强电开关
	uint8_t HVSwitchCtrlFlag;     //强电开关控制标志 当强电开关反馈灯被控制时，但没有引起反馈灯状态变化，置此标志
		
	uint8_t DevSendCnt;     //设备发送计数   计数达到重发次数都没有回复，判为离线  占4位
	uint8_t DevOffline;       //设备离线标志 1，设备离线   0，设备在线             占2位
	uint8_t DevOfflineLast;       //设备离线标志 1，设备离线   0，设备在线         占2位	
	uint8_t RELAYSn;           //扩展板Sn号
	
	uint8_t init_flag;				//初始化标志位
	uint32_t DevC5IOAddr;         //C5IO的设备地址
	
	//Dev_Name_Struct DevNameStruct[DEVNAMENUMMAX]; //共480个字节 如果该类设备同时具备输入与输出，那么输入输出别名共用    

	//强电继电器别名 每个回路16个字节别名     //仅支持30个回路别名

}__attribute__ ((__packed__))NOR_HVOUT_INFO;						//强电继电器的结构体参数


void BLV_Nor_Dev_HVout_Init(uint16_t DataLen, uint8_t *Data);
uint8_t Get_BLV485_Expand_Online_Status(uint32_t devaddr);

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


#endif



