234 lines
9.2 KiB
C
234 lines
9.2 KiB
C
|
|
|||
|
/******************************************************************************
|
|||
|
| File Name : Dcm_App.h
|
|||
|
| Description:
|
|||
|
******************************************************************************/
|
|||
|
#ifndef DCM_APP_H
|
|||
|
#define DCM_APP_H
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
* Description: : Include File Section
|
|||
|
******************************************************************************/
|
|||
|
|
|||
|
#include "Dcm_App_Cfg.h"
|
|||
|
/******************************************************************************
|
|||
|
* Description: : Macro Description Section
|
|||
|
******************************************************************************/
|
|||
|
#define SetMcu_SoftReset() do{WDTE = 0;}while(1)
|
|||
|
|
|||
|
|
|||
|
#define DCM_PHYSICAL_ADDRESS 0x01 /*<2A>궨Ѱַ<D1B0><D6B7>ʽ*/
|
|||
|
#define DCM_FUNCTIONAL_ADDRESS 0x02
|
|||
|
|
|||
|
#define DCM_DEFAULT_SESSION 0x01 /*Ĭ<><C4AC>ģʽ*/
|
|||
|
#define DCM_PROGRAMME_SESSION 0x02 /*<2A><><EFBFBD><EFBFBD>ģʽ*/
|
|||
|
#define DCM_EXTEND_SESSION 0x04 /*<2A><>չģʽ*/
|
|||
|
#define DCM_DIAGNOSTIC_SESSION_DEFAULT DCM_DEFAULT_SESSION /*<2A>ϵ<EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD>ϻỰģʽ*/
|
|||
|
|
|||
|
#define DCM_SECURITYACCESS_L2_UNLOCK 0x07 /*<2A><><EFBFBD><EFBFBD>״̬*/
|
|||
|
#define DCM_SECURITYACCESS_L1_UNLOCK 0x06 /*L1<4C><31><EFBFBD><EFBFBD>״̬*/
|
|||
|
#define DCM_SECURITYACCESS_DEFAULT 0x04 /*Ĭ<>ϰ<EFBFBD>ȫ״̬״̬*/
|
|||
|
|
|||
|
#define DCM_SECURITY_LEVEL_DEFAULT 0x07
|
|||
|
#define DCM_SECURITYACCESS_LEVEL_L1 0x03
|
|||
|
#define DCM_SECURITYACCESS_LEVEL_L2 0x01
|
|||
|
|
|||
|
#define DCM_19SUPMASK 0x09 /*19<31><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>*/
|
|||
|
#define DCM_15031_6_DTCFORMAT 0x00 /*DTC<54><43>ʽ*/
|
|||
|
|
|||
|
#define DCM_DTCSET_ENABLE 1U /*DTC<54><43><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
#define DCM_DTCSET_DISENABLE 0U /*DTC<54><43><EFBFBD>ùر<C3B9>*/
|
|||
|
|
|||
|
#define DCM_MSGTXRX_ENABLE 1U /*<2A><><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>״̬ ʹ<><CAB9>*/
|
|||
|
#define DCM_MSGTXRX_DISENABLE 0U /*<2A><><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>״̬ <20>ر<EFBFBD>*/
|
|||
|
|
|||
|
#define DCM_SASERVERSTS_DEFAULT 0U /*27<32><37><EFBFBD><EFBFBD>״̬<D7B4><CCAC> Ĭ<><C4AC>״̬ <20><>ʼ״̬*/
|
|||
|
#define DCM_SASERVERSTS_REQUESTKEY (0x80)//1U /*27<32><37><EFBFBD><EFBFBD>״̬<D7B4><CCAC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
#define DCM_SASERVERSTS_UNLOCK 2U /*27<32><37><EFBFBD><EFBFBD>״̬<D7B4><CCAC> <20>ѽ<EFBFBD><D1BD><EFBFBD>*/
|
|||
|
#define DCM_SASERVERSTS_ERROR 4U /*27<32><37><EFBFBD><EFBFBD>״̬<D7B4><CCAC> <20><>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ*/
|
|||
|
|
|||
|
|
|||
|
#define DCM_S3SEVERTIMER_STOP 0U /*S3ServerTime <20><>ʱֹͣ*/
|
|||
|
#define DCM_S3SEVERTIMER_CONTINUE 1U /*S3ServerTime <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>*/
|
|||
|
|
|||
|
#define DCM_DTCDATA_MAXLENGTH 36 /*DTC<54>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
|||
|
#define DCM_TXBUFFER_LENGTH 105U /*<2A><><EFBFBD><EFBFBD>buffer<65>ij<EFBFBD><C4B3><EFBFBD>*/
|
|||
|
|
|||
|
#define DCM_SASERVER_KEYLENGTH 4U /*<2A><>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD>*/
|
|||
|
#define DCM_SASERVER_KEYERRORCOUNT 3U /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
|||
|
#define DCM_RIDRESULT_SUCCESS 0x04 /*<2A><><EFBFBD>̴<EFBFBD><CCB4><EFBFBD><EFBFBD>ɹ<EFBFBD>*/
|
|||
|
#define DCM_RIDRESULT_FAILURE 0x05 /*<2A><><EFBFBD>̴<EFBFBD><CCB4><EFBFBD>ʧ<EFBFBD><CAA7>*/
|
|||
|
|
|||
|
#define DCM_RIDRUNSTS_FINISH 0x01
|
|||
|
#define DCM_RIDRUNSTS_IDLE 0x00
|
|||
|
|
|||
|
#define DCM_READDID_MAXNUMBER 5U /*22 һ<><D2BB><EFBFBD>Զ<EFBFBD>ȡ<EFBFBD><C8A1>DID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
#define DCM_WRITEDATA_MAXLENGTH 20U /*2E<32><45><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#define DCM_SASERVERSTS_ERRORDELAY_COUNT 10000U /*<2A><>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ*/
|
|||
|
#define DCM_SASERVERSTS_ERRORDELAY_COUNT_DEFAULT 10000U /*<2A><>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ <20>ϵ<EFBFBD>Ĭ<EFBFBD><C4AC>ֵ*/
|
|||
|
|
|||
|
#define DCM_S3SEVERTIMEOUT 5000U /*S3ServerTime<6D><65>ʱ<EFBFBD><CAB1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>궨*/
|
|||
|
|
|||
|
|
|||
|
#define DCM_DATAFOMATLDENTIFER 0x00 /*34 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ݸ<EFBFBD>ʽ*/
|
|||
|
#define DCM_ADDRESSANDLENGTHFOMATLDENTIFER 0x44 /*34 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3>ȸ<EFBFBD>ʽ*/
|
|||
|
#define DCM_DOWNLOAD_MINADDRESS 0x00000000 /*34 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>С<EFBFBD><D0A1>ַ*/
|
|||
|
#define DCM_DOWNLOAD_MAXADDRESS 0xFFFFFFFF /*34 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ*/
|
|||
|
#define DCM_DOWNLOAD_MAXDATALENGTH 0xFFF /*34 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EEB3A4><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>*/
|
|||
|
#define DCM_LENGTHFOMATLDENTIFER 0x20 /*34 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> <20><><EFBFBD>ݳ<EFBFBD><DDB3>ȸ<EFBFBD>ʽ*/
|
|||
|
#define DCM_DOWNLOAD_RECEIVEDATALENGTH 0x0400 /*36 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鳤<EFBFBD><E9B3A4>*/
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
* Description: : Structure Type Declaration Section
|
|||
|
******************************************************************************/
|
|||
|
/*@<40>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>typedef<65><66><EFBFBD><EFBFBD>*/
|
|||
|
/*34 36 37 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬*/
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
CeDcm_e_DownLoadRelax =0,
|
|||
|
CeDcm_e_DownLoadRequested,
|
|||
|
CeDcm_e_DownLoadDuringTransmit,
|
|||
|
CeDcm_e_DownLoadTransmited
|
|||
|
}TeDcm_e_DownLoadStsType;
|
|||
|
|
|||
|
/*<2A><><EFBFBD>̿<EFBFBD><CCBF><EFBFBD>״̬*/
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
CeDcm_e_RidStart =0,
|
|||
|
CeDcm_e_RidStop,
|
|||
|
CeDcm_e_RidGetResult
|
|||
|
}TeDcm_e_RidStsType;
|
|||
|
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
Rid_Idle,
|
|||
|
Rid_Finish
|
|||
|
}RidRunSts_T;
|
|||
|
|
|||
|
/*TP<54><50><EFBFBD>ݷּ<DDB7><D6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ*/
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
uint16 DL; /*<2A><>Ч<EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>*/
|
|||
|
uint8 Sid; /*SID*/
|
|||
|
uint8 RequstSty; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ*/
|
|||
|
uint8 Sub; /*<2A>ӷ<EFBFBD><D3B7><EFBFBD>*/
|
|||
|
uint8 DtcGroup[3]; /*DTC<54><43>*/
|
|||
|
uint8 StateMask; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ״̬<D7B4><CCAC><EFBFBD><EFBFBD>*/
|
|||
|
uint8 Key[DCM_SASERVER_KEYLENGTH]; /*<2A><>Կ<EFBFBD><D4BF>Ϣ*/
|
|||
|
uint8 CommType; /*ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>*/
|
|||
|
uint8 Did[DCM_READDID_MAXNUMBER*2]; /*<2A><><EFBFBD><EFBFBD>DID*/
|
|||
|
uint8 DidCount; /*DID<49><44><EFBFBD><EFBFBD>*/
|
|||
|
uint16 Rid; /*RID*/
|
|||
|
uint8 WriteData[DCM_WRITEDATA_MAXLENGTH]; /*д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
}TsDcm_h_RquestInfo;
|
|||
|
|
|||
|
typedef enum{
|
|||
|
DCM_RESET_NOTREADY,
|
|||
|
DCM_RESET_READY
|
|||
|
}DcmReset_T;
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
* Description: : Global Variable Declaration Section
|
|||
|
******************************************************************************/
|
|||
|
|
|||
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
extern uint8 TempTP[];
|
|||
|
|
|||
|
/*@ȫ<>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>extern*/
|
|||
|
extern uint8* VeDcm_P_DataAddress; /*TP<54><50><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ*/
|
|||
|
extern uint8 VeDcm_u_DL; /*TP<54><50><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>*/
|
|||
|
extern uint8 VeDcm_u_RequstSty; /*TP<54><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ*/
|
|||
|
extern uint8 VaDcm_u_NegRspTxBuffer[3];
|
|||
|
|
|||
|
extern TsDcm_h_RquestInfo VeDcm_h_RqustInfo;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern uint16 VeDcm_w_S3ServerTime; /*S3ServerTime<6D><65><EFBFBD><EFBFBD>*/
|
|||
|
extern uint8 VeDcm_u_S3ServerTimeSts;
|
|||
|
extern uint8 VeDcm_u_DiagnosticSession; /*<2A><><EFBFBD>ϻỰģʽ*/
|
|||
|
extern uint8 VeDcm_u_SecurityAccessState; /*<2A><>ȫȨ<C8AB><C8A8>״̬*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
* Description: : Global Function Prototype Declaration
|
|||
|
******************************************************************************/
|
|||
|
|
|||
|
|
|||
|
/*@<40>ӿں<D3BF><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>extern*/
|
|||
|
extern uint8 MngDcm_CollectRequstInfo(void);
|
|||
|
|
|||
|
extern TeDcm_h_ResultType MngDcm_DefaultSessionDeal(void);
|
|||
|
extern TeDcm_h_ResultType MngDcm_ProgramSessionDeal(void);
|
|||
|
extern TeDcm_h_ResultType MngDcm_ExtendedSessionDeal(void);
|
|||
|
|
|||
|
extern TeDcm_h_ResultType MngDcm_SoftResetDeal(void);
|
|||
|
|
|||
|
extern TeDcm_h_ResultType MngDcm_CleanDTC(uint32 Group);
|
|||
|
|
|||
|
extern TeDcm_h_ResultType MngDcm_DynamicaDefineNewDid(void);
|
|||
|
extern TeDcm_h_ResultType MngDcm_ClearDynamicaDid(void);
|
|||
|
|
|||
|
extern TeDcm_h_ResultType MngDcm_RequestSeekDeal(uint8 SecurityLevel);
|
|||
|
extern TeDcm_h_ResultType MngDcm_KeyCkeckDeal(uint8 dummy);
|
|||
|
|
|||
|
extern TeDcm_h_ResultType MngDcm_CtrlCommunication(uint8 CommunicationType);
|
|||
|
extern TeDcm_h_ResultType MngDcm_DisenableCommunication(void);
|
|||
|
|
|||
|
extern TeDcm_h_ResultType MngDcm_RoutineFF02Start(void);
|
|||
|
extern TeDcm_h_ResultType MngDcm_RoutineFF02Stop(void);
|
|||
|
extern TeDcm_h_ResultType MngDcm_RoutineFF02Result(void);
|
|||
|
|
|||
|
extern TeDcm_h_ResultType MngDcm_RoutineF001Start(void) ;
|
|||
|
extern TeDcm_h_ResultType MngDcm_RoutineF001Stop(void) ;
|
|||
|
extern TeDcm_h_ResultType MngDcm_RoutineF001Result(void);
|
|||
|
|
|||
|
|
|||
|
extern TeDcm_h_ResultType MngDcm_TesterPresentDeal(void);
|
|||
|
|
|||
|
extern TeDcm_h_ResultType MngDcm_DTCSettingEnable(void);
|
|||
|
extern TeDcm_h_ResultType MngDcm_DTCSettingDisenable(void);
|
|||
|
|
|||
|
extern void MngDcm_ChangeToDefaltSession(void);
|
|||
|
|
|||
|
extern void MngDcmS3ServerCountCutDown(void);
|
|||
|
|
|||
|
extern void MngDcmKeyErrorDelayCountCutDown(void);
|
|||
|
|
|||
|
extern void MngDcm_PrepareNegRsp(uint8 Sid,uint8 Nrc);
|
|||
|
|
|||
|
extern void MngDcm_DataMoveDeal(uint8* TargetAddress,uint8 TargetPost,uint8* SourceAddress,uint8 SourcePost,uint8 DataLength);
|
|||
|
|
|||
|
extern TeDcm_h_ResultType MngDcm_RequestDownloadService(void);
|
|||
|
extern TeDcm_h_ResultType MngDcm_TransmitDataService(void);
|
|||
|
extern TeDcm_h_ResultType MngDcm_TransmitExitService(void);
|
|||
|
|
|||
|
extern void InitDcm_Parameter (void);
|
|||
|
|
|||
|
extern uint16 MngDcm_GetS3serverTime(void);
|
|||
|
extern uint8 MngDcm_GetS3serverTimeSts(void);
|
|||
|
extern uint8 MngDcm_GetDiagnosticSession(void);
|
|||
|
extern uint8 MngDcm_GetSecurityAccessSts(void);
|
|||
|
|
|||
|
extern TeDcm_h_ResultType MngDcm_RoutineFF00Start(void);
|
|||
|
extern TeDcm_h_ResultType MngDcm_RoutineFF01Start(void);
|
|||
|
extern TeDcm_h_ResultType MngDcm_RoutineFF00Stop(void);
|
|||
|
extern TeDcm_h_ResultType MngDcm_RoutineFF01Stop(void);
|
|||
|
extern TeDcm_h_ResultType MngDcm_RoutineFF00Result(void);
|
|||
|
extern TeDcm_h_ResultType MngDcm_RoutineFF01Result(void);
|
|||
|
|
|||
|
extern uint8 GetDtcEnable(void);
|
|||
|
extern void CleanIoDid(void);
|
|||
|
|
|||
|
extern void MngDcm_ResetS3serverTime(void);
|
|||
|
|
|||
|
extern void resetS3Server(void);
|
|||
|
|
|||
|
#endif
|