#ifndef __UART_COMM_H__
#define __UART_COMM_H__

#define MAIN_BOARD  0x00
#define HMI_BOARD    0x01
#define PDA_BOARD    0x02
#define GPRS_BOARD  0x03
#define MAINTAIN_BOARD  0x04

#define UART_FRAME_LEN 256
#define UART_MAX_INST_BUFS 32

extern bool hmi_status;

typedef struct UART_INST	
{
	BYTE flag;
	BYTE len;
	BYTE para[256];
}UART_INST_DEF;

typedef struct UART_INST_BUF
{
	BYTE tail;
	BYTE head;
	UART_INST_DEF tInst[UART_MAX_INST_BUFS];

}UART_INST_BUF_DEF;

typedef struct UART_COMM_STRUCT
{
	BYTE		type;
	BYTE 		cTypeCounter;	
	BYTE 		cRecvLenth; 
	BYTE 		cRecvCnt;			
	BYTE 		cSendLenth;
	BYTE 		cSendCnt;
	BYTE     		sum;
	bool			bData;			   
	bool      		bSend;
	BYTE     		src_addr;
	BYTE     		dst_addr;
	BYTE 		arrSendBuf[UART_FRAME_LEN];
	BYTE 		arrRecvBuf[UART_FRAME_LEN]; 	
	
}UART_COMM_STRUCT;

int Add_Uart_Frame(int prior,int len,BYTE *para) ;
void uart_comm_init(UART_COMM_STRUCT *pt,BYTE chnl);
void Reset_Uart_Link(UART_COMM_STRUCT *pt);
void Uart_Comm_Send(void);
void Uart_Comm_Recv(void);
void  Sub_Uart_Frame(int board )  ;

#endif
