#ifdef        GLOBALS_TP_DIAGNO
#define   EXTERN_TP_DIAGNO
#else
#define   EXTERN_TP_DIAGNO     extern
#endif

#ifndef _TP_DIAGNO_H_
#define _TP_DIAGNO_H_

#include "g_VarType.h"

#define     SingleFrame           0x00
#define     FirstFrame            0x10
#define     ConsecutiveFrame      0x20
#define     FlowControlFrame      0x30
#define     FC_WAIT               0x31

EXTERN_TP_DIAGNO  volatile    _SendCanMsg             g_txCanMsg;
extern     volatile       _N_USData             N_US_R_MultiData;
extern     volatile       _N_USData             N_US_S_MultiData;
extern     volatile       _N_RSPData            N_RSPData;
extern     volatile       _N_US_Data_FF         N_US_R_Data_FF;
extern     volatile       _N_US_Data_FF         N_US_S_Data_FF;
extern     volatile       _N_USSFData           N_USSFData[2];
extern     volatile       INT16U                N_RecLen;

EXTERN_TP_DIAGNO     INT8U          TP_CalMsgLen(INT16U BIT_DATA, INT8U SnLoop);
EXTERN_TP_DIAGNO     void           TP_AbnormalInResSF_handle(void);
EXTERN_TP_DIAGNO     void           TP_AbnormalInResFC_handle(void);
EXTERN_TP_DIAGNO     void           TP_AbnormalInResCF_handle(void);
EXTERN_TP_DIAGNO     void           TP_AbnormalInReqFC_handle(void);
EXTERN_TP_DIAGNO     void           TP_NormalRecFC_handle(void);
EXTERN_TP_DIAGNO     void           TP_Buffer_handle(void);
EXTERN_TP_DIAGNO     void           TP_UnknownlPDU_handle(void);
EXTERN_TP_DIAGNO     void           TP_ReciveSF_handle(void);
EXTERN_TP_DIAGNO     void           TP_ReciveMultiF_handle(void);
EXTERN_TP_DIAGNO     void           TP_AbnormalInReqFF_handle(void);
EXTERN_TP_DIAGNO     void           TP_NormalSendFC_Fun(void);
EXTERN_TP_DIAGNO     void           TP_TooShortDLC_handle(_LinkData *LK_Data);
EXTERN_TP_DIAGNO     void           TP_TransmitPDU(void);
EXTERN_TP_DIAGNO     void           TP_TransmitNegatePDU(_ErrorFrame *Err);

EXTERN_TP_DIAGNO     void           TP_SetSTminTimer(INT32U Second, _DiagClock *T);
EXTERN_TP_DIAGNO     INT8U          TP_STminTimerOver(_DiagClock *T);

EXTERN_TP_DIAGNO     void           TP_SetBsTimer(INT32U Second, _DiagClock *T);
EXTERN_TP_DIAGNO     INT8U          TP_BsTimerOver(_DiagClock *T);

EXTERN_TP_DIAGNO     void           TP_SetCrTimer(INT32U Second, _DiagClock *T);
EXTERN_TP_DIAGNO     INT8U          TP_CrTimerOver(_DiagClock *T);

#endif /* _TP_DIAGNO_H_ */