2195 lines
75 KiB
C
2195 lines
75 KiB
C
|
|
|||
|
/******************************************************************************
|
|||
|
| File Name : Dcm_App.c
|
|||
|
| Description: <EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>崦<EFBFBD><EFBFBD>
|
|||
|
*****************************************************************************/
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
* Description: : Include File Section
|
|||
|
******************************************************************************/
|
|||
|
#include "r_cg_macrodriver.h"
|
|||
|
#include "Dcm_App.h"
|
|||
|
#include "Dcm_extern.h"
|
|||
|
#include "r_cg_userdefine.h"
|
|||
|
#include "pfdl.h"
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
* Description: : Global Variable Definition Section
|
|||
|
******************************************************************************/
|
|||
|
|
|||
|
TsDcm_h_RquestInfo VeDcm_h_RqustInfo; /*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>Ľṹ<C4BD><E1B9B9>*/
|
|||
|
uint8 VaDcm_u_NegRspTxBuffer[3]; /*<2A><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĻ<DDB5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
uint8* VeDcm_P_DataAddress ; /*TP<54><50><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ*/
|
|||
|
|
|||
|
//uint32_t ReprogmaValid = 0xAA5555AA;
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
* Description: : Static Variable Definition Section
|
|||
|
******************************************************************************/
|
|||
|
|
|||
|
|
|||
|
static uint16 SeDcm_u_DL; /*TP<54><50><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>*/
|
|||
|
static uint8 SeDcm_u_RequstSty; /*TP<54><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ*/
|
|||
|
|
|||
|
|
|||
|
static uint16 SeDcm_w_S3ServerTime; /*S3ServerTime<6D><65><EFBFBD><EFBFBD>*/
|
|||
|
static uint8 SeDcm_u_S3ServerTimeSts; /*S3<53><33><EFBFBD><EFBFBD>״̬ <20><><EFBFBD><EFBFBD> <20><> ֹͣ*/
|
|||
|
static uint8 SeDcm_u_DiagnosticSession ; /*<2A><><EFBFBD>ϻỰģʽ*/
|
|||
|
static uint8 SeDcm_u_SecurityAccessState; /*<2A><>ȫȨ<C8AB><C8A8>״̬*/
|
|||
|
static uint8 SeDcm_u_DtcSetSts; /*DTC<54><43><EFBFBD><EFBFBD>״̬*/
|
|||
|
static uint8 SeDcm_u_NetworkMsgSts; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>Ȩ<EFBFBD><C8A8>״̬*/
|
|||
|
//static
|
|||
|
uint8 SeDcm_u_NormalMsgSts; /*Ӧ<>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>շ<EFBFBD>Ȩ<EFBFBD><C8A8>״̬*/
|
|||
|
|
|||
|
static uint16 SeDcm_u_KeyErrorCount; /*27 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
static uint16 SeDcm_u_KeyErrorDelayCount; /*27 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>*/
|
|||
|
static uint8 SaDcm_u_RequestCounter; /*27 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
static uint16 SaDcm_u_RequestDelayCount;
|
|||
|
|
|||
|
static uint8 SeDcm_u_SecurityAccessServerSts; /*27 <20><><EFBFBD><EFBFBD>״̬*/
|
|||
|
|
|||
|
static uint16 CeDcm_u_P2serverTime = 0x0032; /* P2server ʱ<><CAB1> <20>궨<EFBFBD><EAB6A8>*/
|
|||
|
static uint16 CeDcm_u_P2ExtserverTime = 0x00C8; /* P2*server ʱ<><CAB1> <20>궨<EFBFBD><EAB6A8>*/
|
|||
|
|
|||
|
static uint32 SeDcm_w_SecurityAccessSeed = 0x12345678; /*27 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>*/
|
|||
|
static uint32 SeDcm_u_SecurityAccessKey; /*27 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ*/
|
|||
|
static uint32 CeDcm_w_SecurityAccessFBLMask = 0xAC856D89; /*27 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
|||
|
static TeDcm_e_DownLoadStsType SeDcm_u_DownLoadDataSts; /*34 36 37 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬*/
|
|||
|
static uint32 SeDcm_w_DownLoadDataLength; /*34 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>*/
|
|||
|
static uint32 SeDcm_w_TransmitDataCount; /*36 <20>Ѵ<EFBFBD><D1B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
static uint8 SeDcm_u_BlockSequenceCountSts; /*36 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
static uint16 CaDcm_w_SingleAllowDateLength = 0x03E8;
|
|||
|
|
|||
|
static TeDcm_e_RidStsType SeDcm_u_RidFF02Sts; /*<2A><><EFBFBD><EFBFBD> FF02 ״̬*/
|
|||
|
static TeDcm_e_RidStsType SeDcm_u_RidFF00Sts; /*<2A><><EFBFBD><EFBFBD> FF00 ״̬*/
|
|||
|
static TeDcm_e_RidStsType SeDcm_u_RidFF01Sts; /*<2A><><EFBFBD><EFBFBD> FF01 ״̬*/
|
|||
|
static TeDcm_e_RidStsType SeDcm_u_RidF001Sts; /*<2A><><EFBFBD><EFBFBD> F001 ״̬*/
|
|||
|
static RidRunSts_T RidFF02RunSts; /* <20><><EFBFBD><EFBFBD> FF02 ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
static DcmReset_T DcmResetReady;
|
|||
|
/******************************************************************************
|
|||
|
* Description: : Static Function Prototype Declaration
|
|||
|
*****************************************************************************/
|
|||
|
|
|||
|
static void MngDcm_CleanRequstInfo(void);
|
|||
|
|
|||
|
|
|||
|
unsigned char DF_Write(unsigned char* write_buf,unsigned char data_num,unsigned char len);
|
|||
|
RidRunSts_T GetRidFF02RunSts(void);
|
|||
|
void CleanIoDid(void);
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
* Description: : Write User Function Code
|
|||
|
*****************************************************************************/
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void MngDcm_CleanRequstInfo(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
void MngDcm_CleanRequstInfo(void)
|
|||
|
{
|
|||
|
uint8 i;
|
|||
|
VeDcm_h_RqustInfo.DL= 0x00; /*<2A><>Ч<EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>*/
|
|||
|
VeDcm_h_RqustInfo.Sid = 0x00; /*SID*/
|
|||
|
VeDcm_h_RqustInfo.RequstSty = 0x00; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ*/
|
|||
|
VeDcm_h_RqustInfo.Sub = 0x00; /*<2A>ӷ<EFBFBD><D3B7><EFBFBD>*/
|
|||
|
|
|||
|
for(i = 0;i < 3;i++)
|
|||
|
{
|
|||
|
VeDcm_h_RqustInfo.DtcGroup[i] = 0x00; /*DTC<54><43>*/
|
|||
|
}
|
|||
|
|
|||
|
VeDcm_h_RqustInfo.StateMask = 0x00; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ״̬<D7B4><CCAC><EFBFBD><EFBFBD>*/
|
|||
|
|
|||
|
for(i = 0;i < 4;i++)
|
|||
|
{
|
|||
|
VeDcm_h_RqustInfo.Key[i] = 0x00; /*<2A><>Կ<EFBFBD><D4BF>Ϣ*/
|
|||
|
}
|
|||
|
|
|||
|
VeDcm_h_RqustInfo.CommType = 0x00; /*ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>*/
|
|||
|
|
|||
|
for(i = 0;i < DCM_READDID_MAXNUMBER*2 ;i++)
|
|||
|
{
|
|||
|
VeDcm_h_RqustInfo.Did[i] = 0x00; /*<2A><><EFBFBD><EFBFBD>DID*/
|
|||
|
}
|
|||
|
|
|||
|
VeDcm_h_RqustInfo.DidCount = DCM_NULL; /*DID<49><44><EFBFBD><EFBFBD>*/
|
|||
|
VeDcm_h_RqustInfo.Rid = 0x00; /*д<><D0B4><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>DID*/
|
|||
|
|
|||
|
for(i = 0;i < DCM_WRITEDATA_MAXLENGTH;i++)
|
|||
|
{
|
|||
|
VeDcm_h_RqustInfo.WriteData[i] = 0x00; /*д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : uint8 MngDcm_CollectRequstInfo(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_TempResult <EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȡ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <EFBFBD><EFBFBD>TP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>DL <EFBFBD><EFBFBD>sid
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
uint8 MngDcm_CollectRequstInfo(void)
|
|||
|
{
|
|||
|
uint8 LeDcm_TempResult = DCM_CHECK_NOK;
|
|||
|
MngDcm_CleanRequstInfo(); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
|||
|
|
|||
|
if(CeCanTp_e_Full == GetCanTp_e_RxBufferSts(&SeDcm_u_RequstSty,&SeDcm_u_DL,&VeDcm_P_DataAddress))
|
|||
|
{
|
|||
|
LeDcm_TempResult = DCM_CHECK_OK;
|
|||
|
if(CeCanTp_e_Physical ==SeDcm_u_RequstSty)
|
|||
|
{
|
|||
|
VeDcm_h_RqustInfo.RequstSty = DCM_PHYSICAL_ADDRESS;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
VeDcm_h_RqustInfo.RequstSty = DCM_FUNCTIONAL_ADDRESS;
|
|||
|
}
|
|||
|
|
|||
|
VeDcm_h_RqustInfo.DL = SeDcm_u_DL;
|
|||
|
VeDcm_h_RqustInfo.Sid = VeDcm_P_DataAddress[0];
|
|||
|
}
|
|||
|
else
|
|||
|
{}
|
|||
|
|
|||
|
return LeDcm_TempResult;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : uint8 MngDcm_DtcAvailableCheck(uint8* LeDcm_u_Dtc,const TsDcm_h_DtcGroupType LeDcm_u_DtcTable[])
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : LeDcm_u_Dtc <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>DTC
|
|||
|
LeDcm_u_DtcTable[] ֧<EFBFBD>ֵ<EFBFBD>DTC<EFBFBD>б<EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_TempResult <EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȡ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>DTC<EFBFBD>Ƿ<EFBFBD>֧<EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-23
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
uint8 MngDcm_DtcAvailableCheck(uint8* LeDcm_u_Dtc,const TsDcm_h_DtcGroupType LeDcm_u_DtcTable[])
|
|||
|
{
|
|||
|
uint8 i;
|
|||
|
uint8 LeDcm_u_TempResult = DCM_NORESULT;
|
|||
|
for(i=0 ; i < DCM_SUPDTC_COUNT; i++)
|
|||
|
{
|
|||
|
if((LeDcm_u_Dtc[0] == LeDcm_u_DtcTable[i].DtcHigh)&&(LeDcm_u_Dtc[1] == LeDcm_u_DtcTable[i].DtcMiddle)&&(LeDcm_u_Dtc[2] == LeDcm_u_DtcTable[i].DtcLow))
|
|||
|
{
|
|||
|
LeDcm_u_TempResult = i;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_TempResult;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : uint8 MngDcm_ExtDataRecordAvailableCheck(uint8 LeDcm_u_ExtDataRecord,const DTCExtDataRecordType LeDcm_u_ExtDataRecordTable[])
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : LeDcm_u_ExtDataRecord <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ExtDataRecord
|
|||
|
ExtDataRecordTable[] ֧<EFBFBD>ֵ<EFBFBD>ExtDataRecord<EFBFBD><EFBFBD>Ϣ<EFBFBD>б<EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_TempResult <EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȡ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ExtDataRecord <EFBFBD>Ƿ<EFBFBD>֧<EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-23
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
uint8 MngDcm_ExtDataRecordAvailableCheck(uint8 LeDcm_u_ExtDataRecord,const DTCExtDataRecordType LeDcm_u_ExtDataRecordTable[])
|
|||
|
{
|
|||
|
uint8 i;
|
|||
|
uint8 LeDcm_u_TempResult = DCM_NORESULT;
|
|||
|
for(i=0 ; i < DCM_19SUPDTCEXTDATARECORD_COUNT; i++)
|
|||
|
{
|
|||
|
if(LeDcm_u_ExtDataRecord == LeDcm_u_ExtDataRecordTable[i].DTCExtDataRecordNumber)
|
|||
|
{
|
|||
|
LeDcm_u_TempResult = i;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_TempResult;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_DefaultSessionDeal(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ĭ<EFBFBD>ϻỰģʽ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_DefaultSessionDeal(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[6];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
uint32 DcmResetDelay;
|
|||
|
|
|||
|
SeDcm_u_S3ServerTimeSts = DCM_S3SEVERTIMER_STOP; /*S3server <20><>ʱֹͣ*/
|
|||
|
if( DCM_PROGRAMME_SESSION == SeDcm_u_DiagnosticSession)
|
|||
|
DcmResetReady = DCM_RESET_READY;
|
|||
|
SeDcm_u_DiagnosticSession = DCM_DEFAULT_SESSION; /*<2A>Ựģʽ Ĭ<><C4AC>ģʽ*/
|
|||
|
SeDcm_u_SecurityAccessState = DCM_SECURITYACCESS_DEFAULT; /*<2A><>ȫģʽ<C4A3><CABD><EFBFBD><EFBFBD>*/
|
|||
|
SeDcm_u_DtcSetSts = DCM_DTCSET_ENABLE; /*DTC<54><43><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
SeDcm_u_NetworkMsgSts = DCM_MSGTXRX_ENABLE; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
SeDcm_u_NormalMsgSts = DCM_MSGTXRX_ENABLE | (DCM_MSGTXRX_ENABLE<<1); /*Ӧ<>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>շ<EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
//CleanIoDid();
|
|||
|
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
LaDcm_u_TempBuffer[2] = (uint8)(CeDcm_u_P2serverTime>>8);
|
|||
|
LaDcm_u_TempBuffer[3] = (uint8)(CeDcm_u_P2serverTime&0xFF);
|
|||
|
LaDcm_u_TempBuffer[4] = (uint8)(CeDcm_u_P2ExtserverTime>>8);
|
|||
|
LaDcm_u_TempBuffer[5] = (uint8)(CeDcm_u_P2ExtserverTime&0xFF);
|
|||
|
|
|||
|
SetCanTp_TxBuffer(6U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp; /*<2A><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
}
|
|||
|
|
|||
|
if( DCM_RESET_READY == DcmResetReady)
|
|||
|
{
|
|||
|
while(++DcmResetDelay < 80000);
|
|||
|
SetMcu_SoftReset();
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_ProgramSessionDeal(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>̻Ựģʽ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_ProgramSessionDeal(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[6];
|
|||
|
uint32 ResetDelayCnt = 0;
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
|
|||
|
SeDcm_u_S3ServerTimeSts = DCM_S3SEVERTIMER_CONTINUE; /*S3server <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>*/
|
|||
|
SeDcm_w_S3ServerTime = DCM_S3SEVERTIMEOUT; /*S3server <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>װ<EFBFBD><D7B0>*/
|
|||
|
if( DCM_DEFAULT_SESSION != SeDcm_u_DiagnosticSession )
|
|||
|
{
|
|||
|
// 78
|
|||
|
//MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC78]);
|
|||
|
//SetCanTp_Tx_78Neg(3U,VaDcm_u_NegRspTxBuffer);
|
|||
|
|
|||
|
SeDcm_u_DiagnosticSession = DCM_PROGRAMME_SESSION; /*<2A>Ựģʽ<C4A3><CABD><EFBFBD><EFBFBD>ģʽ*/
|
|||
|
SeDcm_u_SecurityAccessState = DCM_SECURITYACCESS_DEFAULT; /*<2A><>ȫģʽ <20><><EFBFBD><EFBFBD>*/
|
|||
|
SeDcm_u_DtcSetSts = DCM_DTCSET_ENABLE; /*DTC<54><43><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
SeDcm_u_NetworkMsgSts = DCM_MSGTXRX_ENABLE; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
SeDcm_u_NormalMsgSts = DCM_MSGTXRX_DISENABLE; /*Ӧ<>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>շ<EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
//ReprogmaValid = 0xAA5555AA;
|
|||
|
//if( 0 == DF_Write((uint8*)(&ReprogmaValid),GetIndexNumber(INDEX_REPROGMA),sizeof(ReprogmaValid))) //R_FDL_OK => 0
|
|||
|
if(1)
|
|||
|
{
|
|||
|
KamData.boot_enable = RPRGRM_REQ_VALID;
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
KamData.AckReq = ACK_REQ;
|
|||
|
KamData.AckLenth = 7;
|
|||
|
KamData.RspData[0] = 0x06;
|
|||
|
KamData.RspData[1] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
KamData.RspData[2] = VeDcm_h_RqustInfo.Sub;
|
|||
|
KamData.RspData[3] = (uint8)(CeDcm_u_P2serverTime>>8);
|
|||
|
KamData.RspData[4] = (uint8)(CeDcm_u_P2serverTime&0xFF);
|
|||
|
KamData.RspData[5] = (uint8)(CeDcm_u_P2ExtserverTime>>8);
|
|||
|
KamData.RspData[6] = (uint8)(CeDcm_u_P2ExtserverTime&0xFF);
|
|||
|
KamData.RspData[7] = 0x55;
|
|||
|
#if 0
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
LaDcm_u_TempBuffer[2] = (uint8)(CeDcm_u_P2serverTime>>8);
|
|||
|
LaDcm_u_TempBuffer[3] = (uint8)(CeDcm_u_P2serverTime&0xFF);
|
|||
|
LaDcm_u_TempBuffer[4] = (uint8)(CeDcm_u_P2ExtserverTime>>8);
|
|||
|
LaDcm_u_TempBuffer[5] = (uint8)(CeDcm_u_P2ExtserverTime&0xFF);
|
|||
|
while(++ResetDelayCnt < 100000);
|
|||
|
SetCanTp_TxBuffer(6U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
#endif
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
KamData.AckReq = 0;
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp; /*<2A><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
}
|
|||
|
//ResetDelayCnt = 0;
|
|||
|
//while(++ResetDelayCnt < 10000);
|
|||
|
SetMcu_SoftReset();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
/*<2A><><EFBFBD><EFBFBD>NRC 22*/
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC22]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if(DCM_FUNCTIONAL_ADDRESS == VeDcm_h_RqustInfo.RequstSty)
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC7E]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
}
|
|||
|
}
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_ExtendedSessionDeal(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>չ<EFBFBD>Ựģʽ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_ExtendedSessionDeal(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[6];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
|
|||
|
SeDcm_u_S3ServerTimeSts = DCM_S3SEVERTIMER_CONTINUE; /*S3server <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>*/
|
|||
|
SeDcm_w_S3ServerTime = DCM_S3SEVERTIMEOUT; /*S3server <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>װ<EFBFBD><D7B0>*/
|
|||
|
if(SeDcm_u_DiagnosticSession != DCM_EXTEND_SESSION)
|
|||
|
{
|
|||
|
SeDcm_u_DtcSetSts = DCM_DTCSET_ENABLE; /*DTC<54><43><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
SeDcm_u_DiagnosticSession = DCM_EXTEND_SESSION; /*<2A>Ựģʽ <20><>չģʽ*/
|
|||
|
SeDcm_u_NetworkMsgSts = DCM_MSGTXRX_ENABLE; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
SeDcm_u_NormalMsgSts = DCM_MSGTXRX_ENABLE | (DCM_MSGTXRX_ENABLE<<1); /*Ӧ<>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>շ<EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
}
|
|||
|
|
|||
|
SeDcm_u_SecurityAccessState = DCM_SECURITYACCESS_DEFAULT; /*<2A><>ȫģʽ <20><><EFBFBD><EFBFBD>*/
|
|||
|
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
LaDcm_u_TempBuffer[2] = (uint8)(CeDcm_u_P2serverTime>>8);
|
|||
|
LaDcm_u_TempBuffer[3] = (uint8)(CeDcm_u_P2serverTime&0xFF);
|
|||
|
LaDcm_u_TempBuffer[4] = (uint8)(CeDcm_u_P2ExtserverTime>>8);
|
|||
|
LaDcm_u_TempBuffer[5] = (uint8)(CeDcm_u_P2ExtserverTime&0xFF);
|
|||
|
|
|||
|
//SeDcm_u_SecurityAccessState = DCM_SECURITYACCESS_L2_UNLOCK; /*<2A>ð<EFBFBD>ȫȨ<C8AB><C8A8>Ϊ <20><><EFBFBD><EFBFBD>״̬ */
|
|||
|
|
|||
|
SetCanTp_TxBuffer(6U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp; /*<2A><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_SoftResetDeal(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 11 03 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_SoftResetDeal(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[2];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
static uint32 ResetDelayCnt;
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>ECU<43>ӿ<EFBFBD>
|
|||
|
if(SeDcm_u_DiagnosticSession != DCM_DEFAULT_SESSION)
|
|||
|
{
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
KamData.AckReq = ACK_REQ;
|
|||
|
KamData.AckLenth = 3;
|
|||
|
KamData.RspData[0] = 0x02;
|
|||
|
KamData.RspData[1] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
KamData.RspData[2] = VeDcm_h_RqustInfo.Sub;
|
|||
|
KamData.RspData[3] = 0x55;
|
|||
|
KamData.RspData[4] = 0x55;
|
|||
|
KamData.RspData[5] = 0x55;
|
|||
|
KamData.RspData[6] = 0x55;
|
|||
|
KamData.RspData[7] = 0x55;
|
|||
|
#if 0
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
SetCanTp_TxBuffer(2U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
#endif
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
KamData.AckReq = 0;
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp; /*<2A><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
}
|
|||
|
if(LeDcm_u_Result == CeDcm_e_ResultPosRsp)
|
|||
|
{
|
|||
|
#if 0
|
|||
|
while(ResetDelayCnt < 0x80000)
|
|||
|
{
|
|||
|
ResetDelayCnt++;
|
|||
|
}
|
|||
|
#endif
|
|||
|
SetMcu_SoftReset();
|
|||
|
}
|
|||
|
else
|
|||
|
SetMcu_SoftReset();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if(DCM_FUNCTIONAL_ADDRESS == VeDcm_h_RqustInfo.RequstSty)
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC7F]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
}
|
|||
|
}
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_RequestSeekDeal( uint8 SecurityLevel)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 27 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_RequestSeekDeal( uint8 SecurityLevel)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[6],savebuf[4];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
//SeDcm_u_KeyErrorDelayCount = 0;
|
|||
|
|
|||
|
if(SaDcm_u_RequestCounter < 5)
|
|||
|
{
|
|||
|
SaDcm_u_RequestCounter++;
|
|||
|
KamData.SeedReqTimes = SaDcm_u_RequestCounter | 0x10;
|
|||
|
if(SaDcm_u_RequestCounter == 5)
|
|||
|
{
|
|||
|
SaDcm_u_RequestDelayCount = DCM_SASERVERSTS_ERRORDELAY_COUNT;
|
|||
|
SeDcm_u_KeyErrorCount = 3;
|
|||
|
KamData.KeyErrTimes = SeDcm_u_KeyErrorCount | 0x10;
|
|||
|
}
|
|||
|
|
|||
|
ReadFlashData(savebuf,0x000F1800,4);
|
|||
|
savebuf[0] = SaDcm_u_RequestCounter;
|
|||
|
savebuf[1] = SeDcm_u_KeyErrorCount;
|
|||
|
WriteDataflash(savebuf,0x000F1800,4);
|
|||
|
|
|||
|
}//fcb
|
|||
|
|
|||
|
if(0==SeDcm_u_KeyErrorDelayCount && 0==SaDcm_u_RequestDelayCount)
|
|||
|
{
|
|||
|
if(SaDcm_u_RequestCounter == 5)
|
|||
|
{
|
|||
|
SaDcm_u_RequestCounter=0;
|
|||
|
KamData.SeedReqTimes = 0;
|
|||
|
|
|||
|
ReadFlashData(savebuf,0x000F1800,4);
|
|||
|
savebuf[0] = SaDcm_u_RequestCounter;
|
|||
|
savebuf[1] = SeDcm_u_KeyErrorCount;
|
|||
|
WriteDataflash(savebuf,0x000F1800,4);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
if(MngDcm_GetSecurityAccessSts() != DCM_SECURITYACCESS_DEFAULT)
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[2] = 0;
|
|||
|
LaDcm_u_TempBuffer[3] = 0;
|
|||
|
LaDcm_u_TempBuffer[4] = 0;
|
|||
|
LaDcm_u_TempBuffer[5] = 0;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SeDcm_w_SecurityAccessSeed = GetSeed();
|
|||
|
LaDcm_u_TempBuffer[2] = (uint8)(SeDcm_w_SecurityAccessSeed>>24)&0xFF;
|
|||
|
LaDcm_u_TempBuffer[3] = (uint8)(SeDcm_w_SecurityAccessSeed>>16)&0xFF;
|
|||
|
LaDcm_u_TempBuffer[4] = (uint8)(SeDcm_w_SecurityAccessSeed>>8)&0xFF;
|
|||
|
LaDcm_u_TempBuffer[5] = (uint8)SeDcm_w_SecurityAccessSeed&0xFF;
|
|||
|
}
|
|||
|
SeDcm_u_SecurityAccessServerSts |= DCM_SASERVERSTS_REQUESTKEY; /*<2A><>27 <20><><EFBFBD><EFBFBD>Ϊ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
|||
|
SeDcm_u_SecurityAccessKey = GENERIC_ALGORITHM(SeDcm_w_SecurityAccessSeed,SecurityLevel);
|
|||
|
|
|||
|
SetCanTp_TxBuffer(6U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp; /*<2A><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
/*<2A><><EFBFBD><EFBFBD>NRC 37*/
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC37]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_KeyCkeckDeal(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 27 <EFBFBD><EFBFBD>ԿУ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_KeyCkeckDeal(uint8 dummy)
|
|||
|
{
|
|||
|
uint8 i;
|
|||
|
uint8 LaDcm_u_TempBuffer[2],savebuf[4];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
uint32 LeDcm_w_Key;
|
|||
|
|
|||
|
|
|||
|
if(DCM_SASERVERSTS_REQUESTKEY & SeDcm_u_SecurityAccessServerSts)
|
|||
|
{
|
|||
|
SaDcm_u_RequestCounter = 0;
|
|||
|
KamData.SeedReqTimes = SaDcm_u_RequestCounter;
|
|||
|
for(i = 0;i < DCM_SASERVER_KEYLENGTH;i++) /*<2A><>ȡ<EFBFBD>ͻ<EFBFBD><CDBB>˷<EFBFBD><CBB7><EFBFBD><CDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ*/
|
|||
|
{
|
|||
|
VeDcm_h_RqustInfo.Key[i] = VeDcm_P_DataAddress[i+2];
|
|||
|
}
|
|||
|
|
|||
|
LeDcm_w_Key = ((uint32)VeDcm_h_RqustInfo.Key[0]<<24) + ((uint32)VeDcm_h_RqustInfo.Key[1]<<16) + ((uint32)VeDcm_h_RqustInfo.Key[2]<<8) + VeDcm_h_RqustInfo.Key[3];
|
|||
|
|
|||
|
if(LeDcm_w_Key != SeDcm_u_SecurityAccessKey) /*<2A><>ԿУ<D4BF><D0A3>*/
|
|||
|
//if(LeDcm_w_Key != SeDcm_w_SecurityAccessSeed) /*<2A><>ԿУ<D4BF><D0A3>*/
|
|||
|
{
|
|||
|
SeDcm_u_KeyErrorCount++; /*<2A><>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1*/
|
|||
|
KamData.KeyErrTimes = SeDcm_u_KeyErrorCount | 0x10;
|
|||
|
|
|||
|
ReadFlashData(savebuf,0x000F1800,4);
|
|||
|
savebuf[0] = SaDcm_u_RequestCounter;
|
|||
|
savebuf[1] = SeDcm_u_KeyErrorCount;
|
|||
|
WriteDataflash(savebuf,0x000F1800,4);
|
|||
|
|
|||
|
}
|
|||
|
else /*<2A><>Կ<EFBFBD><D4BF>֤ͨ<D6A4><CDA8>*/
|
|||
|
{
|
|||
|
SeDcm_u_KeyErrorCount = 0U; /*<2A><>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
KamData.KeyErrTimes = SeDcm_u_KeyErrorCount;
|
|||
|
|
|||
|
ReadFlashData(savebuf,0x000F1800,4);
|
|||
|
savebuf[0] = SaDcm_u_RequestCounter;
|
|||
|
savebuf[1] = SeDcm_u_KeyErrorCount;
|
|||
|
WriteDataflash(savebuf,0x000F1800,4);
|
|||
|
|
|||
|
if(dummy == 0x02)
|
|||
|
SeDcm_u_SecurityAccessState = DCM_SECURITYACCESS_L1_UNLOCK; /*<2A>ð<EFBFBD>ȫȨ<C8AB><C8A8>Ϊ <20><><EFBFBD><EFBFBD>״̬ */
|
|||
|
else if(dummy == 0x12)
|
|||
|
SeDcm_u_SecurityAccessState = DCM_SECURITYACCESS_L2_UNLOCK; /*<2A>ð<EFBFBD>ȫȨ<C8AB><C8A8>Ϊ <20><><EFBFBD><EFBFBD>״̬ */
|
|||
|
}
|
|||
|
|
|||
|
if(0 == SeDcm_u_KeyErrorCount) /*<2A><>Կû<D4BF>д<EFBFBD><D0B4><EFBFBD>*/
|
|||
|
{
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80))
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
SeDcm_u_SecurityAccessServerSts = DCM_SECURITYACCESS_DEFAULT; /*<2A><>27 <20><><EFBFBD><EFBFBD>Ϊ Ĭ<><C4AC>״̬ */
|
|||
|
SetCanTp_TxBuffer(2U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
else if(SeDcm_u_KeyErrorCount>0&&SeDcm_u_KeyErrorCount<DCM_SASERVER_KEYERRORCOUNT) /*<2A><>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ*/
|
|||
|
{
|
|||
|
/*<2A><><EFBFBD><EFBFBD>NRC 35*/
|
|||
|
SeDcm_u_SecurityAccessServerSts = DCM_SECURITYACCESS_DEFAULT; /*<2A><>27 <20><><EFBFBD><EFBFBD>Ϊ Ĭ<><C4AC>״̬ */
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC35]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
/*<2A><>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ*/ /*<2A><><EFBFBD><EFBFBD>NRC 36*/
|
|||
|
SeDcm_u_SecurityAccessServerSts = DCM_SECURITYACCESS_DEFAULT; /*<2A><>27 <20><><EFBFBD><EFBFBD>Ϊ Ĭ<><C4AC>״̬ */
|
|||
|
SeDcm_u_KeyErrorDelayCount = DCM_SASERVERSTS_ERRORDELAY_COUNT; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 27<32><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ */
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC36]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
/*<2A><><EFBFBD><EFBFBD>NRC 24*/
|
|||
|
SeDcm_u_SecurityAccessServerSts = DCM_SECURITYACCESS_DEFAULT; /*<2A><>27 <20><><EFBFBD><EFBFBD>Ϊ Ĭ<><C4AC>״̬ */
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC24]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_RoutineFF02Start(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 31 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> FF02 <EFBFBD><EFBFBD>ʼ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_RoutineFF02Start(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[5];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
|
|||
|
|
|||
|
if(CeDcm_e_RidStop == SeDcm_u_RidFF02Sts)
|
|||
|
{
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
LaDcm_u_TempBuffer[3] = VeDcm_h_RqustInfo.Rid&0xFF;
|
|||
|
LaDcm_u_TempBuffer[2] = VeDcm_h_RqustInfo.Rid>>8;
|
|||
|
LaDcm_u_TempBuffer[4] = DCM_RIDRESULT_SUCCESS;
|
|||
|
|
|||
|
SeDcm_u_RidFF02Sts = CeDcm_e_RidStart; /*<2A><><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD>ǰ״̬*/
|
|||
|
|
|||
|
//<2F><>Ҫ<EFBFBD>Ļ<EFBFBD> <20><> 78
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
RidFF02RunSts = Rid_Finish;
|
|||
|
|
|||
|
SeDcm_u_RidFF02Sts = CeDcm_e_RidStop; /*<2A><><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD>ǰ״̬*/
|
|||
|
|
|||
|
SetCanTp_TxBuffer(5U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SeDcm_u_RidFF02Sts = CeDcm_e_RidStart; /*<2A><><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD>ǰ״̬*/
|
|||
|
|
|||
|
//<2F><>Ҫ<EFBFBD>Ļ<EFBFBD> <20><> 78
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
RidFF02RunSts = Rid_Finish;
|
|||
|
|
|||
|
SeDcm_u_RidFF02Sts = CeDcm_e_RidStop; /*<2A><><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD>ǰ״̬*/
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
/*<2A><><EFBFBD><EFBFBD>NRC 24*/
|
|||
|
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC24]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
RidRunSts_T GetRidFF02RunSts(void)
|
|||
|
{
|
|||
|
return RidFF02RunSts;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_RoutineFF00Start(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 31 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> FF00 <EFBFBD><EFBFBD>ʼ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-11-03
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_RoutineFF00Start(void)
|
|||
|
{
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
#if 0
|
|||
|
uint8 LaDcm_u_TempBuffer[5];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
|
|||
|
if(CeDcm_e_RidStop == SeDcm_u_RidFF00Sts)
|
|||
|
{
|
|||
|
// 78
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC78]);
|
|||
|
SetCanTp_Tx_78Neg(3U,VaDcm_u_NegRspTxBuffer);
|
|||
|
|
|||
|
if(CeFCC_Programing_e_Succeed == SetFCC_Programing_EraseFlash(FCC_PROGRAMING_APPCODE_SECTORONE))
|
|||
|
{
|
|||
|
SetWd_FeedWdg();
|
|||
|
// 78
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC78]);
|
|||
|
SetCanTp_Tx_78Neg(3U,VaDcm_u_NegRspTxBuffer);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
SetFCC_Programing_EraseFlash(FCC_PROGRAMING_APPCODE_SECTORTWO);
|
|||
|
SetWd_FeedWdg();
|
|||
|
// 78
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC78]);
|
|||
|
SetCanTp_Tx_78Neg(3U,VaDcm_u_NegRspTxBuffer);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
SetFCC_Programing_EraseFlash(FCC_PROGRAMING_APPCODE_SECTORTHR);
|
|||
|
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
LaDcm_u_TempBuffer[3] = VeDcm_h_RqustInfo.Rid&0xFF;
|
|||
|
LaDcm_u_TempBuffer[2] = VeDcm_h_RqustInfo.Rid>>8;
|
|||
|
LaDcm_u_TempBuffer[4] = DCM_RIDRESULT_SUCCESS;
|
|||
|
|
|||
|
SeDcm_u_RidFF00Sts = CeDcm_e_RidStart; /*<2A><><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD>ǰ״̬*/
|
|||
|
|
|||
|
|
|||
|
SeDcm_u_RidFF00Sts = CeDcm_e_RidStop; /*<2A><><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD>ǰ״̬*/
|
|||
|
|
|||
|
SetCanTp_TxBuffer(5U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC72]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
/*<2A><><EFBFBD><EFBFBD>NRC 24*/
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC24]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
}
|
|||
|
#endif
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_RoutineFF01Start(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 31 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> FF01 <EFBFBD><EFBFBD>ʼ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_RoutineFF01Start(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[5];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
#if 0
|
|||
|
if(CeDcm_e_RidStop == SeDcm_u_RidFF01Sts)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC78]);
|
|||
|
SetCanTp_Tx_78Neg(3U,VaDcm_u_NegRspTxBuffer);
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
|
|||
|
if(CeFCC_Programing_e_Succeed == SetFCC_Programing_Check())
|
|||
|
{
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
LaDcm_u_TempBuffer[3] = VeDcm_h_RqustInfo.Rid&0xFF;
|
|||
|
LaDcm_u_TempBuffer[2] = VeDcm_h_RqustInfo.Rid>>8;
|
|||
|
LaDcm_u_TempBuffer[4] = DCM_RIDRESULT_SUCCESS;
|
|||
|
|
|||
|
SeDcm_u_RidFF01Sts = CeDcm_e_RidStart; /*<2A><><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD>ǰ״̬*/
|
|||
|
|
|||
|
SeDcm_u_RidFF01Sts = CeDcm_e_RidStop; /*<2A><><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD>ǰ״̬*/
|
|||
|
|
|||
|
SetCanTp_TxBuffer(5U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC72]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
/*<2A><><EFBFBD><EFBFBD>NRC 24*/
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC24]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
}
|
|||
|
#endif
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_RoutineFF02Stop(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 31 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> FF02 ֹͣ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_RoutineFF02Stop(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[5];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
|
|||
|
|
|||
|
if(CeDcm_e_RidStart == SeDcm_u_RidFF02Sts)
|
|||
|
{
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
LaDcm_u_TempBuffer[3] = VeDcm_h_RqustInfo.Rid&0xFF;
|
|||
|
LaDcm_u_TempBuffer[2] = VeDcm_h_RqustInfo.Rid>>8;
|
|||
|
LaDcm_u_TempBuffer[4] = DCM_RIDRESULT_SUCCESS;
|
|||
|
|
|||
|
SetCanTp_TxBuffer(5U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
/*<2A><><EFBFBD><EFBFBD>NRC 24*/
|
|||
|
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC24]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_RoutineFF02Stop(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 31 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> FF00 ֹͣ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_RoutineFF00Stop(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[5];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
|
|||
|
if(CeDcm_e_RidStart == SeDcm_u_RidFF00Sts)
|
|||
|
{
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
LaDcm_u_TempBuffer[3] = VeDcm_h_RqustInfo.Rid&0xFF;
|
|||
|
LaDcm_u_TempBuffer[2] = VeDcm_h_RqustInfo.Rid>>8;
|
|||
|
LaDcm_u_TempBuffer[4] = DCM_RIDRESULT_SUCCESS;
|
|||
|
|
|||
|
SetCanTp_TxBuffer(5U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
/*<2A><><EFBFBD><EFBFBD>NRC 24*/
|
|||
|
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC24]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_RoutineFF02Result(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 31 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> FF01 ֹͣ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_RoutineFF01Stop(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[5];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
|
|||
|
if(CeDcm_e_RidStart == SeDcm_u_RidFF01Sts)
|
|||
|
{
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
LaDcm_u_TempBuffer[3] = VeDcm_h_RqustInfo.Rid&0xFF;
|
|||
|
LaDcm_u_TempBuffer[2] = VeDcm_h_RqustInfo.Rid>>8;
|
|||
|
LaDcm_u_TempBuffer[4] = DCM_RIDRESULT_SUCCESS;
|
|||
|
|
|||
|
SetCanTp_TxBuffer(5U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
/*<2A><><EFBFBD><EFBFBD>NRC 24*/
|
|||
|
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC24]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_RoutineFF02Result(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 31 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> FF02 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_RoutineFF02Result(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[5];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
|
|||
|
if(CeDcm_e_RidStop == SeDcm_u_RidFF02Sts)
|
|||
|
{
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
LaDcm_u_TempBuffer[3] = VeDcm_h_RqustInfo.Rid&0xFF;
|
|||
|
LaDcm_u_TempBuffer[2] = VeDcm_h_RqustInfo.Rid>>8;
|
|||
|
LaDcm_u_TempBuffer[4] = DCM_RIDRESULT_SUCCESS;
|
|||
|
|
|||
|
SetCanTp_TxBuffer(5U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
/*<2A><><EFBFBD><EFBFBD>NRC 24*/
|
|||
|
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC24]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_RoutineFF00Result(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 31 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> FF00 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_RoutineFF00Result(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[5];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
|
|||
|
if(CeDcm_e_RidStop == SeDcm_u_RidFF00Sts)
|
|||
|
{
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
LaDcm_u_TempBuffer[3] = VeDcm_h_RqustInfo.Rid&0xFF;
|
|||
|
LaDcm_u_TempBuffer[2] = VeDcm_h_RqustInfo.Rid>>8;
|
|||
|
LaDcm_u_TempBuffer[4] = DCM_RIDRESULT_SUCCESS;
|
|||
|
|
|||
|
SetCanTp_TxBuffer(5U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
/*<2A><><EFBFBD><EFBFBD>NRC 24*/
|
|||
|
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC24]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_RoutineFF01Result(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 31 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> FF01 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_RoutineFF01Result(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[5];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
|
|||
|
if(CeDcm_e_RidStop == SeDcm_u_RidFF01Sts)
|
|||
|
{
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
LaDcm_u_TempBuffer[3] = VeDcm_h_RqustInfo.Rid&0xFF;
|
|||
|
LaDcm_u_TempBuffer[2] = VeDcm_h_RqustInfo.Rid>>8;
|
|||
|
LaDcm_u_TempBuffer[4] = DCM_RIDRESULT_SUCCESS;
|
|||
|
|
|||
|
SetCanTp_TxBuffer(5U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
/*<2A><><EFBFBD><EFBFBD>NRC 24*/
|
|||
|
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC24]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
TeDcm_h_ResultType MngDcm_RoutineF001Start(void)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
TeDcm_h_ResultType MngDcm_RoutineF001Stop(void)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
TeDcm_h_ResultType MngDcm_RoutineF001Result(void)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_EnableCommunication(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 28 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_CtrlCommunication(uint8 CommunicationType)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[2];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
|
|||
|
|
|||
|
if(SeDcm_u_DiagnosticSession != DCM_EXTEND_SESSION)
|
|||
|
{
|
|||
|
if(DCM_FUNCTIONAL_ADDRESS == VeDcm_h_RqustInfo.RequstSty)
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
return CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC7F]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
return CeDcm_e_ResultNoRsp;
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if( (CommunicationType >= 1) && ( CommunicationType <= 3))
|
|||
|
{
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
if( CommunicationType == 3)
|
|||
|
{
|
|||
|
SeDcm_u_NetworkMsgSts = 3 - VeDcm_h_RqustInfo.Sub; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
SeDcm_u_NormalMsgSts = 3 - VeDcm_h_RqustInfo.Sub; /*Ӧ<>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>շ<EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
}
|
|||
|
else if(CommunicationType == 1)
|
|||
|
SeDcm_u_NormalMsgSts = 3 - VeDcm_h_RqustInfo.Sub; /*Ӧ<>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>շ<EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
else
|
|||
|
SeDcm_u_NetworkMsgSts = 3 - VeDcm_h_RqustInfo.Sub; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
|
|||
|
SetCanTp_TxBuffer(2U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
/*<2A><><EFBFBD><EFBFBD>NRC 31*/
|
|||
|
|
|||
|
if(DCM_FUNCTIONAL_ADDRESS == VeDcm_h_RqustInfo.RequstSty)
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_DisenableCommunication(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 28 <EFBFBD><EFBFBD>ֹͨѶ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_DisenableCommunication(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[2];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
SeDcm_u_NetworkMsgSts = DCM_MSGTXRX_DISENABLE; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><D5B7>ر<EFBFBD>*/
|
|||
|
SeDcm_u_NormalMsgSts = DCM_MSGTXRX_DISENABLE; /*Ӧ<>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>շ<EFBFBD><D5B7>ر<EFBFBD>*/
|
|||
|
|
|||
|
|
|||
|
SetCanTp_TxBuffer(2U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SeDcm_u_NetworkMsgSts = DCM_MSGTXRX_DISENABLE; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><D5B7>ر<EFBFBD>*/
|
|||
|
SeDcm_u_NormalMsgSts = DCM_MSGTXRX_DISENABLE; /*Ӧ<>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>շ<EFBFBD><D5B7>ر<EFBFBD>*/
|
|||
|
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
TeDcm_h_ResultType MngDcm_EnableCommunication(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[2];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
|
|||
|
if(0x02 != VeDcm_h_RqustInfo.Sub) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
SeDcm_u_NetworkMsgSts = DCM_MSGTXRX_ENABLE; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><D5B7>ر<EFBFBD>*/
|
|||
|
SeDcm_u_NormalMsgSts = DCM_MSGTXRX_ENABLE | (DCM_MSGTXRX_ENABLE<<1); /*Ӧ<>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>շ<EFBFBD><D5B7>ر<EFBFBD>*/
|
|||
|
|
|||
|
|
|||
|
SetCanTp_TxBuffer(2U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SeDcm_u_NetworkMsgSts = DCM_MSGTXRX_ENABLE; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><D5B7>ر<EFBFBD>*/
|
|||
|
SeDcm_u_NormalMsgSts = DCM_MSGTXRX_ENABLE | (DCM_MSGTXRX_ENABLE<<1); /*Ӧ<>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>շ<EFBFBD><D5B7>ر<EFBFBD>*/
|
|||
|
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
TeDcm_h_ResultType MngDcm_EnableCommunication_SID_0x29(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[2];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
|
|||
|
if(0x02 != VeDcm_h_RqustInfo.Sub) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
SeDcm_u_NetworkMsgSts = DCM_MSGTXRX_ENABLE; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><D5B7>ر<EFBFBD>*/
|
|||
|
SeDcm_u_NormalMsgSts = DCM_MSGTXRX_ENABLE | (DCM_MSGTXRX_ENABLE<<1); /*Ӧ<>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>շ<EFBFBD><D5B7>ر<EFBFBD>*/
|
|||
|
|
|||
|
|
|||
|
SetCanTp_TxBuffer(1U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SeDcm_u_NetworkMsgSts = DCM_MSGTXRX_ENABLE; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><D5B7>ر<EFBFBD>*/
|
|||
|
SeDcm_u_NormalMsgSts = DCM_MSGTXRX_ENABLE | (DCM_MSGTXRX_ENABLE<<1); /*Ӧ<>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>շ<EFBFBD><D5B7>ر<EFBFBD>*/
|
|||
|
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
uint8 GetNormalMsgSts(void)
|
|||
|
{
|
|||
|
return (SeDcm_u_NormalMsgSts);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
uint8 GetNetworkMsgSts(void)
|
|||
|
{
|
|||
|
return(SeDcm_u_NetworkMsgSts);
|
|||
|
}
|
|||
|
|
|||
|
unsigned char SX11GetNormalMsgSts(void)
|
|||
|
{
|
|||
|
return (3 - SeDcm_u_NormalMsgSts);
|
|||
|
}
|
|||
|
|
|||
|
unsigned char SX11GetNetworkMsgSts(void)
|
|||
|
{
|
|||
|
return(3 - SeDcm_u_NetworkMsgSts);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_TesterPresentDeal(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 3E <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_TesterPresentDeal(void)
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
uint8 LaDcm_u_TempBuffer[2];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
|
|||
|
SeDcm_w_S3ServerTime = DCM_S3SEVERTIMEOUT; /*<2A><><EFBFBD><EFBFBD>S3server<65><72>ʱ*/
|
|||
|
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
|
|||
|
SetCanTp_TxBuffer(2U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
void resetS3Server(void)
|
|||
|
{
|
|||
|
SeDcm_w_S3ServerTime = DCM_S3SEVERTIMEOUT; /*<2A><><EFBFBD><EFBFBD>S3server<65><72>ʱ*/
|
|||
|
}
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_DTCSettingEnable(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 85 DTC <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_DTCSettingEnable(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[2];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
uint8 temp;
|
|||
|
|
|||
|
if(DCM_FUNCTIONAL_ADDRESS == VeDcm_h_RqustInfo.RequstSty && (SeDcm_u_DiagnosticSession != DCM_EXTEND_SESSION))
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
return CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
|
|||
|
SeDcm_u_DtcSetSts = DCM_DTCSET_ENABLE;
|
|||
|
DtcStutasInit();
|
|||
|
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
SetCanTp_TxBuffer(2U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_DTCSettingDisenable(void)
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 85 DTC <EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD>ֹ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_DTCSettingDisenable(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[2];
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
|
|||
|
if(DCM_FUNCTIONAL_ADDRESS == VeDcm_h_RqustInfo.RequstSty && (SeDcm_u_DiagnosticSession != DCM_EXTEND_SESSION))
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
return CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
|
|||
|
SeDcm_u_DtcSetSts = DCM_DTCSET_DISENABLE;
|
|||
|
|
|||
|
if(DCM_FALSE == (VeDcm_h_RqustInfo.Sub&0x80)) /*<2A>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ*/
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = VeDcm_h_RqustInfo.Sub;
|
|||
|
|
|||
|
SetCanTp_TxBuffer(2U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetCanTp_TxBuffer(0U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNoRsp;
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
uint8 GetDtcEnable(void)
|
|||
|
{
|
|||
|
return SeDcm_u_DtcSetSts;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_DynamicaDefineNewDid(void)
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 2C <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>̬DID <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2016-12-25
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
|
|||
|
TeDcm_h_ResultType MngDcm_DynamicaDefineNewDid(void)
|
|||
|
{
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
/*<2A><><EFBFBD><EFBFBD>NRC22*/
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC22]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp; /*<2A><><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TeDcm_h_ResultType MngDcm_ClearDynamicaDid(void)
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_Result <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 2C <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>̬DID <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2016-12-25
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
|
|||
|
TeDcm_h_ResultType MngDcm_ClearDynamicaDid(void)
|
|||
|
{
|
|||
|
TeDcm_h_ResultType LeDcm_u_Result;
|
|||
|
/*<2A><><EFBFBD><EFBFBD>NRC22*/
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC22]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp; /*<2A><><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
return LeDcm_u_Result;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void MngDcm_ChangeToDefaltSession(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD> Ĭ<EFBFBD>ϻỰģʽ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
void MngDcm_ChangeToDefaltSession(void)
|
|||
|
{
|
|||
|
SeDcm_u_S3ServerTimeSts = DCM_S3SEVERTIMER_STOP; /*S3server <20><>ʱֹͣ*/
|
|||
|
SeDcm_u_DiagnosticSession = DCM_DEFAULT_SESSION; /*<2A>Ựģʽ Ĭ<><C4AC>ģʽ*/
|
|||
|
SeDcm_u_SecurityAccessState = DCM_SECURITYACCESS_DEFAULT; /*<2A><>ȫģʽ<C4A3><CABD><EFBFBD><EFBFBD>*/
|
|||
|
SeDcm_u_DtcSetSts = DCM_DTCSET_ENABLE; /*DTC<54><43><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
SeDcm_u_NetworkMsgSts = DCM_MSGTXRX_ENABLE; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
SeDcm_u_NormalMsgSts = DCM_MSGTXRX_ENABLE | (DCM_MSGTXRX_ENABLE<<1); /*Ӧ<>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>շ<EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
//CleanIoDid();
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void MngDcmS3ServerAndKeyErrorCountCutDown(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : S3ServerTime <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
void MngDcmS3ServerCountCutDown(void)
|
|||
|
{
|
|||
|
if(SeDcm_w_S3ServerTime > 0)
|
|||
|
{
|
|||
|
SeDcm_w_S3ServerTime--;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void MngDcmKeyErrorDelayCountCutDown(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ʱ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
void MngDcmKeyErrorDelayCountCutDown(void)
|
|||
|
{
|
|||
|
unsigned char savebuf[4];
|
|||
|
if(SeDcm_u_KeyErrorDelayCount > 0)
|
|||
|
{
|
|||
|
SeDcm_u_KeyErrorDelayCount--;
|
|||
|
if(SeDcm_u_KeyErrorDelayCount == 0)
|
|||
|
{
|
|||
|
SeDcm_u_KeyErrorCount = 0U;
|
|||
|
KamData.KeyErrTimes = SeDcm_u_KeyErrorCount;
|
|||
|
ReadFlashData(savebuf,0x000F1800,4);
|
|||
|
savebuf[0] = SaDcm_u_RequestCounter;
|
|||
|
savebuf[1] = SeDcm_u_KeyErrorCount;
|
|||
|
WriteDataflash(savebuf,0x000F1800,4);
|
|||
|
}
|
|||
|
}
|
|||
|
if(SaDcm_u_RequestDelayCount > 0)
|
|||
|
{
|
|||
|
SaDcm_u_RequestDelayCount--;
|
|||
|
if(SaDcm_u_RequestDelayCount == 0)
|
|||
|
{
|
|||
|
SaDcm_u_RequestCounter = 0U;
|
|||
|
KamData.SeedReqTimes = SaDcm_u_RequestCounter;
|
|||
|
ReadFlashData(savebuf,0x000F1800,4);
|
|||
|
savebuf[0] = SaDcm_u_RequestCounter;
|
|||
|
savebuf[1] = SeDcm_u_KeyErrorCount;
|
|||
|
WriteDataflash(savebuf,0x000F1800,4);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void MngDcm_PrepareNegRsp(uint8 LeDcm_u_Sid,uint8 LeDcm_u_Nrc)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : LeDcm_u_Sid <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sid Ҫ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>NRC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
void MngDcm_PrepareNegRsp(uint8 LeDcm_u_Sid,uint8 LeDcm_u_Nrc)
|
|||
|
{
|
|||
|
VaDcm_u_NegRspTxBuffer[0] = 0x7F; /*<2A><><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
VaDcm_u_NegRspTxBuffer[1] = LeDcm_u_Sid; /*sid*/
|
|||
|
VaDcm_u_NegRspTxBuffer[2] = LeDcm_u_Nrc; /*NRC*/
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void MngDcm_PrepareNegRsp(uint8 LeDcm_u_Sid,uint8 LeDcm_u_Nrc)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : TargetAddress Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬TargetPost Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<EFBFBD>ã<EFBFBD>SourceAddress Դ<EFBFBD><EFBFBD><EFBFBD>飬SourcePost Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD>
|
|||
|
DataLength <EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
void MngDcm_DataMoveDeal(uint8* TargetAddress,uint8 TargetPost,uint8* SourceAddress,uint8 SourcePost,uint8 DataLength)
|
|||
|
{
|
|||
|
|
|||
|
uint8 i;
|
|||
|
|
|||
|
for(i = 0;i < DataLength; i ++)
|
|||
|
{
|
|||
|
TargetAddress[TargetPost + i] = SourceAddress[SourcePost + i];
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> :TeDcm_h_ResultType MngDcm_RequestDownloadService(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_FinallyResult <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 34 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
TeDcm_h_ResultType MngDcm_RequestDownloadService(void)
|
|||
|
{
|
|||
|
uint8 LeDcm_u_dataFomatldentifier; /*<2A><><EFBFBD>ݸ<EFBFBD>ʽ*/
|
|||
|
uint8 LeDcm_u_addressAndLengthFomatldentifier; /*<2A><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3>ȸ<EFBFBD>ʽ*/
|
|||
|
uint32 LeDcm_w_Address; /*<2A><>ַ*/
|
|||
|
uint32 LeDcm_w_DataLength; /*<2A><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>*/
|
|||
|
uint8 LeDcm_u_SidIndex;
|
|||
|
uint8 LeDcm_u_SecurityAccessCheckResult;
|
|||
|
uint8 LaDcm_u_TempBuffer[6];
|
|||
|
TeDcm_h_ResultType LeDcm_u_FinallyResult;
|
|||
|
#if 0
|
|||
|
|
|||
|
LeDcm_u_dataFomatldentifier = VeDcm_P_DataAddress[1];
|
|||
|
LeDcm_u_addressAndLengthFomatldentifier = VeDcm_P_DataAddress[2];
|
|||
|
|
|||
|
/*<2A><>ȡ<EFBFBD><C8A1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_w_Address = (((uint32)VeDcm_P_DataAddress[3])<<24U) + (((uint32)VeDcm_P_DataAddress[4])<<16U) + (((uint32)VeDcm_P_DataAddress[5])<<8U) + VeDcm_P_DataAddress[6];
|
|||
|
/*<2A><>ȡ<EFBFBD><C8A1><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_w_DataLength = (((uint32)VeDcm_P_DataAddress[7])<<24U) + (((uint32)VeDcm_P_DataAddress[8])<<16U) + (((uint32)VeDcm_P_DataAddress[9])<<8U) + VeDcm_P_DataAddress[10];
|
|||
|
|
|||
|
if((DCM_DATAFOMATLDENTIFER == LeDcm_u_dataFomatldentifier)&&(LeDcm_u_addressAndLengthFomatldentifier == DCM_ADDRESSANDLENGTHFOMATLDENTIFER))
|
|||
|
{
|
|||
|
if(VeDcm_h_RqustInfo.DL == 11U)
|
|||
|
{
|
|||
|
if(CeFCC_Programing_e_Succeed == SetFCC_Programing_AddrSize(LeDcm_w_Address,LeDcm_w_DataLength))
|
|||
|
{
|
|||
|
LeDcm_u_SidIndex = MngDcm_SIDCheckAvailable(VeDcm_h_RqustInfo.Sid);
|
|||
|
LeDcm_u_SecurityAccessCheckResult = MngDcm_SIDCheckSecurityAccess(LeDcm_u_SidIndex);
|
|||
|
if(DCM_CHECK_OK == LeDcm_u_SecurityAccessCheckResult)
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = DCM_LENGTHFOMATLDENTIFER;
|
|||
|
LaDcm_u_TempBuffer[3] = CaDcm_w_SingleAllowDateLength&0xFF; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ֽ<EFBFBD>*/
|
|||
|
LaDcm_u_TempBuffer[2] = CaDcm_w_SingleAllowDateLength>>8; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ֽ<EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(4U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SeDcm_u_DownLoadDataSts = CeDcm_e_DownLoadRequested; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬Ϊ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
SeDcm_w_DownLoadDataLength = LeDcm_w_DataLength; /*<2A><>¼ 34 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>*/
|
|||
|
SeDcm_w_TransmitDataCount = 0U;
|
|||
|
LeDcm_u_FinallyResult = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC33]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_FinallyResult = CeDcm_e_ResultNegRsp; /*<2A><><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_FinallyResult = CeDcm_e_ResultNegRsp; /*<2A><><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC13]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_FinallyResult = CeDcm_e_ResultNegRsp; /*<2A><><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_FinallyResult = CeDcm_e_ResultNegRsp; /*<2A><><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
}
|
|||
|
#endif
|
|||
|
return LeDcm_u_FinallyResult;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> :
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_FinallyResult <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 36 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
|
|||
|
TeDcm_h_ResultType MngDcm_TransmitDataService(void)
|
|||
|
{
|
|||
|
uint16 LeDcm_w_SingleTransmitDataCount;
|
|||
|
uint8 LeDcm_u_BlockSequenceCount;
|
|||
|
uint8 LeDcm_u_BlockExpect;
|
|||
|
uint8 LaDcm_u_TempBuffer[6]; /*<2A><>Ӧ<EFBFBD><D3A6><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
TeDcm_h_ResultType LeDcm_u_FinallyResult;
|
|||
|
#if 0
|
|||
|
TeFCC_Programing_e_Result LeDcm_FCC_Ret;
|
|||
|
|
|||
|
if(CeDcm_e_DownLoadRequested==SeDcm_u_DownLoadDataSts||CeDcm_e_DownLoadDuringTransmit == SeDcm_u_DownLoadDataSts)
|
|||
|
{
|
|||
|
LeDcm_w_SingleTransmitDataCount = VeDcm_h_RqustInfo.DL - 2U; /*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>*/
|
|||
|
SeDcm_w_TransmitDataCount = SeDcm_w_TransmitDataCount + LeDcm_w_SingleTransmitDataCount; /*<2A><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
/*<2A>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD><DBBC>Ƿ<C7B7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>δ<EFBFBD><CEB4>䳤<EFBFBD><E4B3A4><EFBFBD>Ƿ<C7B7> 34<33><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
if(SeDcm_w_TransmitDataCount <= SeDcm_w_DownLoadDataLength)
|
|||
|
{
|
|||
|
LeDcm_u_BlockSequenceCount = VeDcm_P_DataAddress[1]; /*<2A><>ȡ 36 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BlockSequenceCount*/
|
|||
|
LeDcm_u_BlockExpect = (uint8)(((uint16)SeDcm_u_BlockSequenceCountSts + 1)&0x00ff);
|
|||
|
|
|||
|
if(((0x01 == LeDcm_u_BlockSequenceCount)&&(SeDcm_u_DownLoadDataSts == CeDcm_e_DownLoadRequested))
|
|||
|
|| ((LeDcm_u_BlockSequenceCount== LeDcm_u_BlockExpect)&&(SeDcm_u_DownLoadDataSts == CeDcm_e_DownLoadDuringTransmit)))
|
|||
|
{
|
|||
|
if(VeDcm_h_RqustInfo.DL <= CaDcm_w_SingleAllowDateLength)/*MaxNumberofBlockLength*/
|
|||
|
{
|
|||
|
SeDcm_u_BlockSequenceCountSts = LeDcm_u_BlockSequenceCount;
|
|||
|
SeDcm_u_DownLoadDataSts = CeDcm_e_DownLoadDuringTransmit; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬Ϊ <20><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>*/
|
|||
|
|
|||
|
if(SeDcm_w_TransmitDataCount == SeDcm_w_DownLoadDataLength)
|
|||
|
{
|
|||
|
SeDcm_u_DownLoadDataSts = CeDcm_e_DownLoadTransmited; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬Ϊ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
SeDcm_w_TransmitDataCount = 0U;
|
|||
|
}
|
|||
|
|
|||
|
//78<37><38>Ӧ
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC78]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_Tx_78Neg(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_FinallyResult = CeDcm_e_ResultNegRsp; /*<2A><><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
|
|||
|
//<2F><><EFBFBD>ýӿ<C3BD> <20><><EFBFBD><EFBFBD>
|
|||
|
LeDcm_FCC_Ret = SetFCC_Programing_Code(VeDcm_h_RqustInfo.DL-2,&VeDcm_P_DataAddress[2]);
|
|||
|
|
|||
|
if(LeDcm_FCC_Ret == CeFCC_Programing_e_Succeed)
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
LaDcm_u_TempBuffer[1] = LeDcm_u_BlockSequenceCount;
|
|||
|
SetCanTp_TxBuffer(2U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_FinallyResult = CeDcm_e_ResultPosRsp;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_FinallyResult = CeDcm_e_ResultNegRsp; /*<2A><><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_FinallyResult = CeDcm_e_ResultNegRsp; /*<2A><><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC73]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_FinallyResult = CeDcm_e_ResultNegRsp; /*<2A><><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC71]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_FinallyResult = CeDcm_e_ResultNegRsp; /*<2A><><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC24]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_FinallyResult = CeDcm_e_ResultNegRsp; /*<2A><><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
}
|
|||
|
#endif
|
|||
|
return LeDcm_u_FinallyResult;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> :
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : LeDcm_u_FinallyResult <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 37 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
|
|||
|
TeDcm_h_ResultType MngDcm_TransmitExitService(void)
|
|||
|
{
|
|||
|
uint8 LaDcm_u_TempBuffer[2];
|
|||
|
TeDcm_h_ResultType LeDcm_u_FinallyResult;
|
|||
|
if(SeDcm_u_DownLoadDataSts == CeDcm_e_DownLoadTransmited)
|
|||
|
{
|
|||
|
if(VeDcm_h_RqustInfo.DL == 1U)
|
|||
|
{
|
|||
|
LaDcm_u_TempBuffer[0] = LaDcm_u_TempBuffer[0] = VeDcm_h_RqustInfo.Sid + 0x40;
|
|||
|
SetCanTp_TxBuffer(1U,LaDcm_u_TempBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SeDcm_u_DownLoadDataSts = CeDcm_e_DownLoadRelax; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬Ϊ <20>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>״̬*/
|
|||
|
#if 0
|
|||
|
SetFCC_Programing_Finish();
|
|||
|
#endif
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC13]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_FinallyResult = CeDcm_e_ResultNegRsp; /*<2A><><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC24]); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*<2A><><EFBFBD>ýӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>*/
|
|||
|
LeDcm_u_FinallyResult = CeDcm_e_ResultNegRsp; /*<2A><><EFBFBD><EFBFBD>Ӧ*/
|
|||
|
}
|
|||
|
|
|||
|
return LeDcm_u_FinallyResult;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void InitDcm_Parameter (void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : DCM <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
void InitDcm_Parameter (void)
|
|||
|
{
|
|||
|
unsigned char readbuf[33];
|
|||
|
SeDcm_u_DiagnosticSession = DCM_DIAGNOSTIC_SESSION_DEFAULT; /*<2A>Ựģʽ Ĭ<>ϻỰ*/
|
|||
|
SeDcm_u_SecurityAccessState = DCM_SECURITYACCESS_DEFAULT; /*<2A><>ȫģʽ <20><><EFBFBD><EFBFBD>״̬*/
|
|||
|
SeDcm_u_DtcSetSts = DCM_DTCSET_ENABLE; /*DTC<54><43><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
SeDcm_u_NetworkMsgSts = DCM_MSGTXRX_ENABLE; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
SeDcm_u_NormalMsgSts = DCM_MSGTXRX_ENABLE |(DCM_MSGTXRX_ENABLE<<1); /*Ӧ<>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>շ<EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
SeDcm_u_KeyErrorDelayCount = 0;//DCM_SASERVERSTS_ERRORDELAY_COUNT_DEFAULT; /*Ĭ<><C4AC>27<32><37><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ʱ*/
|
|||
|
SeDcm_u_SecurityAccessServerSts = DCM_SECURITYACCESS_DEFAULT; /*<2A><>27 <20><><EFBFBD><EFBFBD>Ϊ Ĭ<><C4AC>״̬ */
|
|||
|
SeDcm_u_KeyErrorCount = 0U; /*<2A><>27 <20><>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼΪ0 */
|
|||
|
|
|||
|
//SaDcm_u_RequestCounter = KamData.SeedReqTimes;
|
|||
|
//SeDcm_u_KeyErrorCount = KamData.KeyErrTimes; /*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>*/
|
|||
|
ReadFlashData(readbuf,0x000F1800,4);
|
|||
|
|
|||
|
SaDcm_u_RequestCounter = readbuf[0];
|
|||
|
SeDcm_u_KeyErrorCount = readbuf[1]; /*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>*/
|
|||
|
|
|||
|
if(SaDcm_u_RequestCounter > 6)SaDcm_u_RequestCounter=0;
|
|||
|
if(SeDcm_u_KeyErrorCount > 4)SeDcm_u_KeyErrorCount=0;
|
|||
|
/*
|
|||
|
if((SaDcm_u_RequestCounter>>4)==0x01)SaDcm_u_RequestCounter &= 0x0F;
|
|||
|
else SaDcm_u_RequestCounter = 0;
|
|||
|
|
|||
|
if((SeDcm_u_KeyErrorCount>>4)==0x01)SeDcm_u_KeyErrorCount &= 0x0F;
|
|||
|
else SeDcm_u_KeyErrorCount = 0;
|
|||
|
*/
|
|||
|
if(SeDcm_u_KeyErrorCount >= 3 )
|
|||
|
{
|
|||
|
SeDcm_u_KeyErrorDelayCount = DCM_SASERVERSTS_ERRORDELAY_COUNT;
|
|||
|
//SaDcm_u_RequestCounter=5;
|
|||
|
}
|
|||
|
|
|||
|
SeDcm_u_DownLoadDataSts = CeDcm_e_DownLoadRelax; /*<2A><><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>״̬Ϊ <20><><EFBFBD><EFBFBD>*/
|
|||
|
|
|||
|
SeDcm_u_RidFF02Sts = CeDcm_e_RidStop; /*<2A><><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD>ʼ״̬*/
|
|||
|
SeDcm_u_RidFF00Sts = CeDcm_e_RidStop;
|
|||
|
SeDcm_u_RidFF01Sts = CeDcm_e_RidStop;
|
|||
|
|
|||
|
RidFF02RunSts = Rid_Idle;
|
|||
|
//DtcInit();
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : uint16 MngDcm_GetS3serverTime()
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : SeDcm_w_S3ServerTime S3ServerTime<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <EFBFBD><EFBFBD>ȡS3ServerTime<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
uint16 MngDcm_GetS3serverTime(void)
|
|||
|
{
|
|||
|
return SeDcm_w_S3ServerTime;
|
|||
|
}
|
|||
|
|
|||
|
void MngDcm_ResetS3serverTime(void)
|
|||
|
{
|
|||
|
SeDcm_w_S3ServerTime = DCM_S3SEVERTIMEOUT;
|
|||
|
}
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : uint8 MngDcm_GetS3serverTimeSts(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : SeDcm_u_S3ServerTimeSts S3ServerTime<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <EFBFBD><EFBFBD>ȡS3ServerTime<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
uint8 MngDcm_GetS3serverTimeSts(void)
|
|||
|
{
|
|||
|
return SeDcm_u_S3ServerTimeSts;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> :uint8 MngDcm_GetDiagnosticSession(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : SeDcm_u_DiagnosticSession <EFBFBD><EFBFBD>ǰ<EFBFBD>Ựģʽ
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰ<EFBFBD>Ựģʽ
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
uint8 MngDcm_GetDiagnosticSession(void)
|
|||
|
{
|
|||
|
return SeDcm_u_DiagnosticSession;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> :uint8 MngDcm_GetSecurityAccessSts(void)
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : void
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ : SeDcm_u_SecurityAccessState <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>ȫȨ<EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>ȫȨ<EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*<EFBFBD>༭ʱ<EFBFBD><EFBFBD> : 2015-10-10
|
|||
|
|
|||
|
*<EFBFBD><EFBFBD>ע :
|
|||
|
*****************************************************************************/
|
|||
|
uint8 MngDcm_GetSecurityAccessSts(void)
|
|||
|
{
|
|||
|
return SeDcm_u_SecurityAccessState;
|
|||
|
}
|
|||
|
|