LYFJDB/ECU_APP/diagnose/Dcm_App.c

2195 lines
75 KiB
C
Raw Normal View History

2024-07-07 16:42:04 +08:00
/******************************************************************************
| 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;
}