#ifndef BLV_485_DEV_TIMEFUN_H
#define BLV_485_DEV_TIMEFUN_H

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

#define DEV_TIME_TYPE	0x23     //时间同步设备

#define TIME_ISSUE_CMD    0x26    //主机下发时间命令
#define TIME_READ_CMD    0x23    //设备读取时间命令

typedef struct
{
	BLV_COMM_RECORD_G comm_record;		//通讯记录
	
	uint8_t DevAddr;          //设备地址
	
	uint8_t TimeCtrlFlag;     //时间控制标志
	uint8_t TimeCtrlCnt;      //时间控制计数

	uint8_t TimeGetFlag;     //时间获取标志
	
//	uint8_t DevCtrlFlag;      //控制标志（下发时间）
	uint32_t UpdateTime_Tick;  //同步时间间隔计数
	uint32_t Time_Count;       //UTC时间计数
	
	uint8_t DevSendCnt;     	//设备发送计数   计数达到重发次数都没有回复，判为离线
	uint8_t DevOffline;       	//设备离线标志 1，设备离线   0，设备在线
	uint8_t DevOfflineLast;   	//设备离线标志 1，设备离线   0，设备在线
	
	uint32_t inquire_tick;		//询问时间戳
	
}__attribute__ ((__packed__))RS485_TIME_INFO;						//时间同步信息


void BLV_485_Dev_Time_Init(uint8_t devaddr);
void BLV_485_Dev_Time_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len);
uint8_t BLV_Rs485_Dev_Time_CycleDis(uint32_t DevAdd);  
uint8_t BLV_Rs485_Dev_Time_Check(uint32_t DevAdd ,uint32_t Data_addr, uint16_t DataLen); 
void BLV_Time_Control_Update(uint32_t dev_addr);











#endif

