#ifndef _PTL_PWRM_H
#define _PTL_PWRM_H


#define PWRM_HEAD1	0xEB		/*起始符1*/
#define PWRM_HEAD2	0x90		/*起始符2*/


#define PWRM_NODE_MAX_COUNT		8 /*最大需要发送报文数量*/
#define PWRM_MAX_RECV_BUF			512	/*接收缓存区最大值*/

enum
{
	REQUEST_BATAC = 0,	/*采集电池电压*/
	REQUEST_BATSTS,		/*采集电池状态*/
	REQUEST_BATPARA,		/*采集电池参数*/
	REQUEST_NUM,
};

/*报文格式*/
enum
{
	PWRM_SYN_WRD1 = 0,			/*起始字符1*/
	PWRM_SYN_WRD2 = 1,			/*起始字符2*/
	PWRM_LEN      = 2,			/*本帧报文长度*/
	PWRM_M_CMD    = 3,			/*功能码类型*/			
	PWRM_S_CMD    = 4,			/*功能码子类型*/	
	PWRM_CRC      = 5,			/*校验码*/
};


typedef struct pwdmodlue_def  // 电源模块规约结构体
{	
	u8  chnl;			/*通道号*/

	bool  bcfg;			/*配置读取范围临时变量*/
	DWORD retrytime;			/*重发时间*/
	DWORD sendinteraltime;		/*发送间隔*/	
	DWORD ykhh_interaltime;		/*遥控活化定时周期*/
	u8  ykhh_en;				/*定时活化标志*/
	DWORD ykhh_time;
	
	DWORD f_time;				/*帧间隔计时器*/
	DWORD send_time;			/*发送报文发送时间*/
	DWORD f_sts;				/*是否等待应答*/
	

	u8	   rervok;				/*接收到完整一帧*/
	u8   recv[PWRM_MAX_RECV_BUF];			/*接收报文的缓存区*/
	DWORD  recv_l;				/* 当前已接收长度*/
	DWORD  recv_len;			/* 当前需要接收帧长度*/


	u8   *send;		/*发送报文缓存*/
	u8	 m_cmd_re;		/*已发送报文的主命令*/
	u8   s_cmd_re;		/*已发送报文的子命令*/
	u8 send_dp;		/*当前发送报文序号*/
	u8   yx_first;		/*遥信是否初始化标志*/

	u32  yk_sendflag;	/*遥控发送标志*/	
	u8	 yk_kk_no;		/*遥控开关号*/
	REMOTEYKSTATUS tyk;
}pwdmodlue_def;

void pwrm_recv_proc(pwdmodlue_def *pt);
void pwrm_Init(pwdmodlue_def *pt,u8 chnl);
void pwrm_Recv(pwdmodlue_def *pt,u8 byRevData);
void pwrm_send_entry(pwdmodlue_def *pt);
void set_ykhh_all_flag(void);
void set_ykstop_all_flag(void);


#endif

