#ifndef _PDA_H_DEF
#define _PDA_H_DEF


#define KEY_WIRELESS_A  0x40   // D0 PTH.6
#define KEY_WIRELESS_B  0x20   // D1 PTH.7
#define KEY_WIRELESS_C  0x10   // D2 PTH.0
#define KEY_WIRELESS_D  0x08  // D3 PTH.1

enum
{
	SET_CLASS_OUTSIDE = 0,		//外部定值
	SET_CLASS_INSIDE,			//内部定值
	SET_CLASS_PARAMETER,		//参数设置
	SET_CLASS_MEASURE ,		//测量
	SET_CLASS_SIGNAL,			//遥信
	BANK_VER_INFO				//板卡资源信息
	
};



  //记录类型
enum
{
	REC_CLASS_EVENT = 0,	//事件记录
	REC_CLASS_OPERATION	//操作记录
};
//状态类型
enum
{
	STATUS_CLASS_MEASURE = 0,	//测量
	STATUS_CLASS_SIGNAL		//遥信
};

// 逐条发送类型
enum
{
	SEND_MODE_SET=0,
	SEND_MODE_MEA,
	SEND_MODE_YX,
	SEND_EQU
};



/*pda发来的命令*/
#define PDA_CMD_POLL  		  0x40 /*查询命令*/
#define DRV_CMD_DATA             0x50 /*pda驱动板上电报文*/
#define LOG_BUF_NUMBER 120
#define MAX_OPERATE_LOG_NUMBER     120  //最大操作记录数

typedef struct PDA_APP_DEF
{
	u8     bSearch;			// 发送搜索设备标识
	u8	bySendNo;		//当前发送定值序号
	u8    byItemNo;	//需发送定值序号  两者不相等，启动发送
	u8    bySetType;
	u8    bySendMode;
	u8	bySetNum;
	u8     bPDAHz;
	u8    bPDATz;
	u8     bMsgHz;
	u8     bMsgTz;	
	u32 dEchoT;
}PDA_DEF;

#define UART_FRAME_LEN	256  //组can包时要不要分包处理?????????
typedef struct PDA_COMM
{
	u8		cRecvLenth; //通道A 接收到数据计数器
	u8		cRecvCnt;			//有效数据记数
	u8		cSendLenth;
	u8		cSendCnt;
	u8          sum;
	u8		bData;			   //有报文数据 
	u8          bSend;
	u8		arrAppBuf[UART_FRAME_LEN]; 	//应用程序中，没有大数据
	u8		s_head;
	u8		s_tail;
	u8		s_buf[UART_FRAME_MAXCNT][UART_FRAME_LEN];	
	u8		r_head;
	u8		r_tail;
	u8		r_buf[UART_FRAME_MAXCNT][UART_FRAME_LEN];
}PDA_COMM;

struct PDA_Log
{
	s32	file_index;
	u8	file_type;
	u16	file_type_key;
	u16  file_nFrameSum;
	u16  file_nFrame;
	u32	file_length;
	u16  file_crc;
	u32  file_offset;
	u8 pda_id_buf[9];
};

typedef struct PDA_Record
{
	char *strName;  //开入量名称
}PDA_Record;

typedef struct PDA_LOG_STRUCT
{
        char            log_name[20];
	char            pda_id[20];          //pda编号       
}PDA_LOG_STRUCT;

typedef struct pda_set_item
{
	u16  wType;	//定值类型
	u16  wUnit;   	//定值单位
	u16  wList;   	//列表索引
	char  szName[PARA_NAME_LEN];	//定值名称
	float fMin;			//最小值
	float fMax;			//最大值
	float fDef;			//缺省值
	float fDev;			//目前设备上的定值
	float fNew;			//用户修改后的值
}PDA_SETITEM;

extern PDA_DEF g_tPDA;
extern PDA_COMM g_tUarPDA;
void PDA_Comm_Init(void);
void PDA_app(void);
void PDA_Board_Recv(int len,BYTE *para);
void pda_data_echo(BYTE cmd,BYTE sum,BYTE *para);

#endif
