#ifndef _KWP2000_INTERFACE_H
#define _KWP2000_INTERFACE_H

/*
*********************************************************************
* defines
*********************************************************************
*/
/* Defined for ComStatus */
#define KWP2000_DEFAULT_BAUDRATE_KLINE_DU           10400ul
#define KWP2000_MID_BAUDRATE_KLINE_DU               57600ul
#define KWP2000_HIGH_BAUDRATE_KLINE_DU              249600ul

#define KWP2000_ADDR_IC             0x60u
#define KWP2000_ADDR_OBD            0x33u
#define KWP2000_ADDR_SERVER         0xF1u

#define KWP2000_P2_MIN             0
#define KWP2000_P3_MAX             5000

/*
*********************************************************************
* variable
*********************************************************************
*/
extern  unsigned char kwp2000_PhysicalAddress;
extern  unsigned char kwp2000_FunctionalAddress;
extern  unsigned char kwp2000_ServerAddress;
extern  unsigned int  kwp2000_P3_MAX_LIMIT;

/*
*********************************************************************
* function
*********************************************************************
*/
extern void Kwp2000_AscInit( void );
extern void Kwp2000_AscSwitchBaudrate(unsigned long xBaudrate_u32);

extern  unsigned short Uart_GetData( void );
extern  unsigned char  Uart_GetRxLevel(void);

extern  void  Uart_SetData(  unsigned char xBuffer_pu8  );

extern  void  Uart_DisableReceiveIsrReq( void );
extern  void  Uart_EnableReceiveIsrReq( void );

extern  void  Uart_ClearAllErrorFlag( void );
extern  void  Uart_EnableRx( void );
extern  void  Uart_DisableRx( void );
extern  void  Uart_EnableTx( void );
extern  void  Uart_SetRxGpio( void );
extern  void  Uart_SetTxGpio( void );
extern  void  Uart_SetBaudrate( unsigned long xBaudrate_u32 );
extern  void  Uart_ClearRxFullFlag(void);
extern  void  Uart_DisableTxInterrupt( void );
extern  void  Uart_ConfigOperationMode(void);
extern  void  TJA1021_Enable( unsigned char state );
extern  void  Kwp2000_SetTiming( void );
extern  void  Kwp2000_SetAddress( void );
extern  void  Kwp2000_AscTx( unsigned char* xBuffer_pu8 );
extern  void  Kwp2000_AscEnableRx( void );

#endif
