217 lines
5.8 KiB
C
217 lines
5.8 KiB
C
/*!
|
||
* @file uds_interface.h
|
||
* @brief customized service sequence definition. Modify the file according to the requirements.
|
||
*
|
||
*/
|
||
|
||
|
||
#ifndef UDS_INTERFACE_H
|
||
#define UDS_INTERFACE_H
|
||
|
||
#include "uds_types.h"
|
||
|
||
|
||
|
||
#if BOOTLOADER_CODE_FLAG == 0
|
||
#define UDS_SERVICE_FOREACH(func)\
|
||
/*00*/ func(0x10,UDS_10_Service_Session_Control,0)\
|
||
/*01*/ func(0x11,UDS_11_Service_Ecu_Reset,0)\
|
||
/*02*/ func(0x14,UDS_14_Service_Clear_DTC,0)\
|
||
/*03*/ func(0x19,UDS_19_Service_Read_DTC,0) \
|
||
/*04*/ func(0x22,UDS_22_Service_Read_Data,0)\
|
||
/*05*/ func(0x2E,UDS_2E_Service_Write_Data,1) \
|
||
/*06*/ func(0x27,UDS_27_Service_Security_Access,0) \
|
||
/*07*/ func(0x3E,UDS_3E_Service_Tester_Present,0) \
|
||
/*08*/ func(0x31,UDS_31_Service_Routine_Ctrl,0) \
|
||
/*09*/ func(0x28,UDS_28_Service_Communication_Control,0) \
|
||
/*10*/ func(0x85,UDS_85_Service_Control_DTC,0) \
|
||
/*12*/ func(0x7F,UDS_Service_NRC,0)
|
||
|
||
#else
|
||
#define UDS_SERVICE_FOREACH(func)\
|
||
/*00*/ func(0x10,UDS_10_Service_Session_Control,0)\
|
||
/*01*/ func(0x11,UDS_11_Service_Ecu_Reset,0)\
|
||
/*02*/ func(0x22,UDS_22_Service_Read_Data,0)\
|
||
/*03*/ func(0x2E,UDS_2E_Service_Write_Data,1) \
|
||
/*04*/ func(0x27,UDS_27_Service_Security_Access,0) \
|
||
/*05*/ func(0x3E,UDS_3E_Service_Tester_Present,0) \
|
||
/*06*/ func(0x31,UDS_31_Service_Routine_Ctrl,0) \
|
||
/*07*/ func(0x28,UDS_28_Service_Communication_Control,0) \
|
||
/*08*/ func(0x85,UDS_85_Service_Control_DTC,0) \
|
||
/*09*/ func(0x34,UDS_34_Service_Request_Download,1) \
|
||
/*10*/ func(0x36,UDS_36_Service_Transfer_Data,1) \
|
||
/*11*/ func(0x37,UDS_37_Service_Transfer_Exit,0) \
|
||
/*12*/ func(0x7F,UDS_Service_NRC,0)
|
||
|
||
|
||
#endif
|
||
|
||
#define GENERATE_UDS_SERVICE_INDEX(sid,service,rx_end_flag) Index_Sid_##sid,
|
||
#define GENERATE_UDS_SERVICE_TABLE(sid,service,rx_end_flag) service,
|
||
#define GENERATE_UDS_SERVICE_ID(sid,name,rx_end_flag) sid ,
|
||
|
||
|
||
typedef enum _UDS_SERVICE_INDEX {
|
||
UDS_SERVICE_FOREACH(GENERATE_UDS_SERVICE_INDEX)
|
||
UDS_SERVICE_NUM,
|
||
}UDS_SERVICE_INDEX;
|
||
|
||
|
||
typedef enum{
|
||
_UDS_DEFAULT_SESSION=0x01,
|
||
_UDS_PROGRAM_SESSION=0x02,
|
||
_UDS_EXT_SESSION=0x03,
|
||
// _UDS_STD_DIAG_SESSION=0x81,
|
||
// _UDS_PRO_DIAG_SESSION=0x85,
|
||
// _UDS_EXT_DIAG_SESSION=0x90,
|
||
}UDS_SESSION;
|
||
|
||
typedef enum {
|
||
DOWNLOAD_SEQUENCE_IDLE,
|
||
DOWNLOAD_SEQUENCE_34,
|
||
DOWNLOAD_SEQUENCE_36,
|
||
DOWNLOAD_SEQUENCE_37,
|
||
}DownloadSequenceType;
|
||
|
||
#define UDS_UP_LEN (FMC_PAGE_SIZE)
|
||
|
||
typedef struct
|
||
{
|
||
bool start; /*!< Sequence start state */
|
||
uint8_t index; /*!< Sequence index to be serviced */
|
||
}UDS_Demo_Service_Ctrl_T;
|
||
|
||
typedef struct{
|
||
bool RxEraseFlg;
|
||
bool RxProgramFlag;
|
||
bool UpCompFlg;
|
||
bool UpChkProgIntegFlg;
|
||
bool UpModleFlg;
|
||
bool EraseMemoryFlg;
|
||
//bool SecureFlg;
|
||
//bool SecureSw;
|
||
uint8_t EraseMemorySts;
|
||
uint32_t OffSetAdd;
|
||
uint32_t EraseAddress;
|
||
uint32_t EraseLength;
|
||
uint16_t GetCrc;
|
||
uint16_t CalcCrc;
|
||
uint32_t dLen;
|
||
uint32_t StackTopAdr;
|
||
uint32_t checksum;
|
||
#if BOOTLOADER_CODE_FLAG
|
||
uint8_t Buf[UDS_UP_LEN];
|
||
#endif
|
||
|
||
bool RoutineEraseMemoryFlg;
|
||
bool RoutineChkProgIntegrityFlg;
|
||
bool RoutineChkProgIntegrityPass;
|
||
bool PrintFingerFlg;
|
||
bool RoutineEraseMemoryErr;
|
||
//uint16_t FlashDriverDlength;
|
||
uint8_t Sn;
|
||
uint32_t totalRecvLength;
|
||
DownloadSequenceType DownloadSeq;
|
||
}_UdsUpData;
|
||
|
||
typedef struct{
|
||
bool ResetMcuFlg;
|
||
bool UdsTxFlg;
|
||
bool UdsTxCompFlg;
|
||
bool KeyLockFlg;
|
||
bool PhyFlg;
|
||
bool TxCompFlg;
|
||
bool AlreadSendSeed;
|
||
bool StartFlg;
|
||
bool IsUdsFlg;
|
||
bool BattErrFlg;
|
||
bool HsCanErrFlg;
|
||
bool TypeVech;
|
||
bool UpDataFlg;
|
||
bool CanRxOkFlg;
|
||
bool BusOffNoSendFlg;
|
||
bool ChkProgPreconditionFlg;
|
||
bool Sid2FWaitResFlg;
|
||
uint8_t IOCP;
|
||
uint16_t IOCS;
|
||
uint8_t SwErrCnt;
|
||
uint8_t VersionMod;
|
||
uint8_t CheckDtc5S;
|
||
uint8_t DtcFlg;
|
||
uint8_t DtcErr;
|
||
uint8_t FrameType;
|
||
uint8_t RequestFlg;
|
||
uint8_t SessionDiagModel;
|
||
uint8_t RxSessionDiagModel;
|
||
uint8_t Id;
|
||
uint8_t RstTimer;
|
||
uint8_t MultFrameComp;
|
||
uint8_t SeedKeyIsOK;
|
||
uint8_t SeedKeyLevel;
|
||
uint8_t NcmDisRxAndTx;
|
||
uint8_t NmcmDisRxAndTx;
|
||
uint8_t EnRxAndTx0x29;
|
||
uint8_t DisDTCRecord;
|
||
uint8_t KeyErrCnt;
|
||
uint8_t KeyErrLockTimer;
|
||
uint8_t TxUdsChann;
|
||
uint8_t ReqCmdBuf[20];
|
||
uint16_t SessionTimer;//<2F><><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϻỰ<CFBB><E1BBB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><C2A3><EFBFBD>ʱ<EFBFBD><CAB1>תһ<D7AA><D2BB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>Ĭ<EFBFBD>ϻỰ<CFBB><E1BBB0>
|
||
uint16_t RxDlc;
|
||
uint16_t RxMulDlc;
|
||
uint16_t TxTimerOut;
|
||
uint16_t RxBlockCnt;
|
||
uint16_t SwImageErrTimer;
|
||
uint16_t BusOffNoSendTimer;
|
||
uint16_t CanID;
|
||
uint16_t IoDid;
|
||
uint16_t Nrc78Timer;
|
||
}__UDSService;
|
||
extern uint8_t UDS_SeedKeyBuf[8];
|
||
extern __UDSService UdsService;
|
||
extern _UdsUpData UdsUpData;
|
||
extern const uint8_t UDSsid[];
|
||
|
||
extern UDS_Demo_Service_Ctrl_T Service_Ctrl;
|
||
void GotoDefaultSession(void);
|
||
bool CheckIsBeyonSession(INT8U CurSession,INT8U SelfSession,INT8U Type);
|
||
bool CheckUdsDlcIsOk(INT16U RxDlc,INT16U rDlc);
|
||
bool CheckSubSidNeedPosResp(INT8U SubSID);
|
||
bool CheckIsKeyOk(void);
|
||
bool CanRxConStatus(void);
|
||
bool CheckIsSupportBootloaderRead_Sid22(uint16_t did);
|
||
bool CheckIsSupportSubFunc_Sid19(uint8_t sub);
|
||
bool CheckIsSupportSubFunc_Sid11(uint8_t sub);
|
||
|
||
|
||
/*!
|
||
* @brief Demo Service Function to start service sequencce
|
||
* This function is used to start service sequencce
|
||
*/
|
||
void UDS_Demo_Services_Start(void);
|
||
/*!
|
||
* @brief Demo Service Function to call the services in sequencce
|
||
* This function is used to call the services in sequencce
|
||
*/
|
||
void UDS_Demo_Services_Sequence(void);
|
||
/*!
|
||
* @brief Demo service function to calculate key according to seed.
|
||
* The function is used to calculate key according to seed.
|
||
*
|
||
* @param rsp_buf Response buf pointer
|
||
*/
|
||
void UDS_Demo_Calculate_Key(uint8_t* rsp_buf);
|
||
/*!
|
||
* @brief Demo Service Function for positive response callback
|
||
* This function is used for positive response callback
|
||
*/
|
||
void UDS_Pos_Response_Callback(void);
|
||
/*!
|
||
* @brief Demo Service Function for negtive response callback
|
||
* This function is used for negtive response callback
|
||
*/
|
||
void UDS_Neg_Response_Callback(void);
|
||
|
||
#endif
|
||
|