#ifdef GLOBALS_SER_DIAGNO
#define EXTERN_SER_DIAGNO

#else
#define EXTERN_SER_DIAGNO extern
#endif

#ifndef SER_DIAGNO_H_
#define SER_DIAGNO_H_

#include "uds_includes.h"

#define DID0005 0x0005
#define DID0FA0 0x0FA0
#define DIDF195 0xF195
extern volatile _N_USData Exct_USData;
extern volatile _DiagnoCtl DiagnoCtl;
extern volatile _DiagClock DiagClock;
extern volatile _ErrorFrame Error;

extern volatile uint32_t CrcCheckSum;

extern void App_SetSequenceTimer(uint32_t Second, _DiagClock *T);
extern uint8_t App_SequenceTimerOver(_DiagClock *T);

extern void App_SetSessionTimer(uint32_t Second, _DiagClock *T);
extern uint8_t App_SessionTimerOver(_DiagClock *T);

extern void App_SetReUnlockTimer(uint32_t Second, _DiagClock *T);
extern uint8_t App_ReUnlockTimerOver(_DiagClock *T);

extern void App_10_service(_N_USData *AppUSData); //会话模式
extern void App_11_service(_N_USData *AppUSData); //复位模式
extern void App_14_service(_N_USData *AppUSData); //清除-故障码(DTC)
extern void App_59_service(_N_USData *AppUSData); //读-故障码(DTC)
extern void App_22_service(_N_USData *AppUSData); //读
extern void App_27_service(_N_USData *AppUSData); //解锁
extern void App_28_service(_N_USData *AppUSData); //RxTx
extern void App_2E_service(_N_USData *AppUSData); //写
extern void App_2F_service(_N_USData *AppUSData); //IO
extern void App_31_service(_N_USData *AppUSData); //Boot
extern void App_34_service(_N_USData *AppUSData); //Boot
extern void App_36_service(_N_USData *AppUSData); //Boot
extern void App_37_service(_N_USData *AppUSData); //Boot
extern void App_3E_service(_N_USData *AppUSData); //Boot
extern void App_85_service(_N_USData *AppUSData); //开关-故障码(DTC)
extern uint16_t Get_DiagnoCtl_CommCtl(void );

extern void App_01_service(_N_USData *AppUSData);

extern void DiagnosisInit_main(void);
extern void Diagnosis_main(void);

#endif /* SER_DIAGNO_H_ */
