Commit 3763c3c0 authored by hu's avatar hu

debug

parent 3f892b4b
...@@ -1287,6 +1287,7 @@ void Key_Operation_ODOTrip(Key_Event_en_t enKeyEvent) ...@@ -1287,6 +1287,7 @@ void Key_Operation_ODOTrip(Key_Event_en_t enKeyEvent)
} }
else if (bCurMenuIDX == _MN_DSP_Menu_Test) else if (bCurMenuIDX == _MN_DSP_Menu_Test)
{ {
} }
else if (User_set_Num.Trip_Type == 0u) else if (User_set_Num.Trip_Type == 0u)
{ {
......
...@@ -18,7 +18,7 @@ unsigned int kwp2000_P3_MAX_LIMIT; ...@@ -18,7 +18,7 @@ unsigned int kwp2000_P3_MAX_LIMIT;
* Return : None * Return : None
* onther : * onther :
--------------------------------------------------------------------------*/ --------------------------------------------------------------------------*/
void Kwp2000_SetAddress( void ) void Kwp2000_SetAddress(void)
{ {
kwp2000_PhysicalAddress = KWP2000_ADDR_IC; kwp2000_PhysicalAddress = KWP2000_ADDR_IC;
kwp2000_FunctionalAddress = KWP2000_ADDR_OBD; kwp2000_FunctionalAddress = KWP2000_ADDR_OBD;
...@@ -33,20 +33,20 @@ void Kwp2000_SetAddress( void ) ...@@ -33,20 +33,20 @@ void Kwp2000_SetAddress( void )
* Return : None * Return : None
* onther : * onther :
--------------------------------------------------------------------------*/ --------------------------------------------------------------------------*/
void Kwp2000_SetTiming( void ) void Kwp2000_SetTiming(void)
{ {
kwp2000_P3_MAX_LIMIT = KWP2000_P3_MAX; kwp2000_P3_MAX_LIMIT = KWP2000_P3_MAX;
} }
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function Name : Kwp2000_AscDisableRx * Function Name : Kwp2000_AscDisableRx
* Description : 禁止收 使能发 * Description : 禁止收 使能发
* Input : * Input :
* Output : None * Output : None
* Return : None * Return : None
* onther : * onther :
--------------------------------------------------------------------------*/ --------------------------------------------------------------------------*/
void Kwp2000_AscDisableRx( void ) void Kwp2000_AscDisableRx(void)
{ {
Uart_DisableRx(); Uart_DisableRx();
Uart_EnableTx(); Uart_EnableTx();
...@@ -54,13 +54,13 @@ void Kwp2000_AscDisableRx( void ) ...@@ -54,13 +54,13 @@ void Kwp2000_AscDisableRx( void )
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function Name : Kwp2000_AscEnableRx * Function Name : Kwp2000_AscEnableRx
* Description : 使能接收功能 * Description : 使能接收功能
* Input : * Input :
* Output : None * Output : None
* Return : None * Return : None
* onther : * onther :
--------------------------------------------------------------------------*/ --------------------------------------------------------------------------*/
void Kwp2000_AscEnableRx( void ) void Kwp2000_AscEnableRx(void)
{ {
/* enable receiver, clear all error flags */ /* enable receiver, clear all error flags */
Uart_ClearAllErrorFlag(); Uart_ClearAllErrorFlag();
...@@ -69,13 +69,13 @@ void Kwp2000_AscEnableRx( void ) ...@@ -69,13 +69,13 @@ void Kwp2000_AscEnableRx( void )
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function Name : Kwp2000_AscTx * Function Name : Kwp2000_AscTx
* Description : 送数据字节 * Description : 发送数据字节
* Input : * Input :
* Output : None * Output : None
* Return : None * Return : None
* onther : * onther :
--------------------------------------------------------------------------*/ --------------------------------------------------------------------------*/
void Kwp2000_AscTx( unsigned char* xBuffer_pu8 ) void Kwp2000_AscTx(unsigned char *xBuffer_pu8)
{ {
Uart_SetData(*xBuffer_pu8); Uart_SetData(*xBuffer_pu8);
} }
...@@ -88,9 +88,8 @@ void Kwp2000_AscTx( unsigned char* xBuffer_pu8 ) ...@@ -88,9 +88,8 @@ void Kwp2000_AscTx( unsigned char* xBuffer_pu8 )
* Return : None * Return : None
* onther : * onther :
--------------------------------------------------------------------------*/ --------------------------------------------------------------------------*/
void Kwp2000_AscStart( void ) void Kwp2000_AscStart(void)
{ {
} }
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
...@@ -101,27 +100,24 @@ void Kwp2000_AscStart( void ) ...@@ -101,27 +100,24 @@ void Kwp2000_AscStart( void )
* Return : None * Return : None
* onther : * onther :
--------------------------------------------------------------------------*/ --------------------------------------------------------------------------*/
void Kwp2000_AscStop( void ) void Kwp2000_AscStop(void)
{ {
} }
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function Name : Kwp2000_AscInit * Function Name : Kwp2000_AscInit
* Description : 串口模块初始化 * Description : 串口模块初始化
* Input : * Input :
* Output : None * Output : None
* Return : None * Return : None
* onther : * onther :
--------------------------------------------------------------------------*/ --------------------------------------------------------------------------*/
void Kwp2000_AscInit( void ) void Kwp2000_AscInit(void)
{ {
Kwp2000_AscStop(); // disable ASC_A mode Kwp2000_AscStop(); // disable ASC_A mode
/* disable interrupt service request, clear service request flags */ /* disable interrupt service request, clear service request flags */
/*预留设置*/ /*预留设置*/
/* enable receiver and transmitter function*/ /* enable receiver and transmitter function*/
Uart_EnableRx(); Uart_EnableRx();
...@@ -139,13 +135,13 @@ void Kwp2000_AscInit( void ) ...@@ -139,13 +135,13 @@ void Kwp2000_AscInit( void )
/// ----------------------------------------------------------------------- /// -----------------------------------------------------------------------
/// Configuration of the used ASC0 Port Pins: /// Configuration of the used ASC0 Port Pins:
/// ----------------------------------------------------------------------- /// -----------------------------------------------------------------------
Uart_SetTxGpio(); //TX Uart_SetTxGpio(); // TX
Uart_SetRxGpio(); //RX Uart_SetRxGpio(); // RX
/// ----------------------------------------------------------------------- /// -----------------------------------------------------------------------
/// Configuration of priority of SCI_A interrupt: /// Configuration of priority of SCI_A interrupt:
/// ----------------------------------------------------------------------- /// -----------------------------------------------------------------------
/*预留优先级设置*/ /*预留优先级设置*/
/* Configuration of Baudrate , as 10400bps */ /* Configuration of Baudrate , as 10400bps */
Kwp2000_AscSwitchBaudrate(KWP2000_DEFAULT_BAUDRATE_KLINE_DU); Kwp2000_AscSwitchBaudrate(KWP2000_DEFAULT_BAUDRATE_KLINE_DU);
...@@ -158,8 +154,8 @@ void Kwp2000_AscInit( void ) ...@@ -158,8 +154,8 @@ void Kwp2000_AscInit( void )
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function Name : Kwp2000_AscSwitchBaudrate * Function Name : Kwp2000_AscSwitchBaudrate
* Description : 置波特率 * Description : 设置波特率
* Input : xBaudrate_u32 特率数值 * Input : xBaudrate_u32 波特率数值
* Output : None * Output : None
* Return : None * Return : None
* onther : * onther :
...@@ -167,7 +163,7 @@ void Kwp2000_AscInit( void ) ...@@ -167,7 +163,7 @@ void Kwp2000_AscInit( void )
void Kwp2000_AscSwitchBaudrate(unsigned long xBaudrate_u32) void Kwp2000_AscSwitchBaudrate(unsigned long xBaudrate_u32)
{ {
/* if configuration is valid, ... */ /* if configuration is valid, ... */
if ( xBaudrate_u32 != 0ul ) if (xBaudrate_u32 != 0ul)
{ {
Kwp2000_AscStop(); Kwp2000_AscStop();
......
...@@ -33,31 +33,31 @@ extern unsigned int kwp2000_P3_MAX_LIMIT; ...@@ -33,31 +33,31 @@ extern unsigned int kwp2000_P3_MAX_LIMIT;
* function * function
********************************************************************* *********************************************************************
*/ */
extern void Kwp2000_AscInit( void ); extern void Kwp2000_AscInit(void);
extern void Kwp2000_AscSwitchBaudrate(unsigned long xBaudrate_u32); extern void Kwp2000_AscSwitchBaudrate(unsigned long xBaudrate_u32);
extern unsigned short Uart_GetData( void ); extern unsigned short Uart_GetData(void);
extern unsigned char Uart_GetRxLevel(void); extern unsigned char Uart_GetRxLevel(void);
extern void Uart_SetData( unsigned char xBuffer_pu8 ); extern void Uart_SetData(unsigned char xBuffer_pu8);
extern void Uart_DisableReceiveIsrReq( void ); extern void Uart_DisableReceiveIsrReq(void);
extern void Uart_EnableReceiveIsrReq( void ); extern void Uart_EnableReceiveIsrReq(void);
extern void Uart_ClearAllErrorFlag( void ); extern void Uart_ClearAllErrorFlag(void);
extern void Uart_EnableRx( void ); extern void Uart_EnableRx(void);
extern void Uart_DisableRx( void ); extern void Uart_DisableRx(void);
extern void Uart_EnableTx( void ); extern void Uart_EnableTx(void);
extern void Uart_SetRxGpio( void ); extern void Uart_SetRxGpio(void);
extern void Uart_SetTxGpio( void ); extern void Uart_SetTxGpio(void);
extern void Uart_SetBaudrate( unsigned long xBaudrate_u32 ); extern void Uart_SetBaudrate(unsigned long xBaudrate_u32);
extern void Uart_ClearRxFullFlag(void); extern void Uart_ClearRxFullFlag(void);
extern void Uart_DisableTxInterrupt( void ); extern void Uart_DisableTxInterrupt(void);
extern void Uart_ConfigOperationMode(void); extern void Uart_ConfigOperationMode(void);
extern void TJA1021_Enable( unsigned char state ); extern void TJA1021_Enable(unsigned char state);
extern void Kwp2000_SetTiming( void ); extern void Kwp2000_SetTiming(void);
extern void Kwp2000_SetAddress( void ); extern void Kwp2000_SetAddress(void);
extern void Kwp2000_AscTx( unsigned char* xBuffer_pu8 ); extern void Kwp2000_AscTx(unsigned char *xBuffer_pu8);
extern void Kwp2000_AscEnableRx( void ); extern void Kwp2000_AscEnableRx(void);
#endif #endif
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
********************************************************************* *********************************************************************
*/ */
#include "kwp2000_tp.h" #include "kwp2000_tp.h"
#include "kwp2000_service.h" #include "kwp2000_service.h"
#include "kwp2000_protocol.h" #include "kwp2000_protocol.h"
...@@ -16,7 +15,6 @@ ...@@ -16,7 +15,6 @@
********************************************************************* *********************************************************************
*/ */
typedef unsigned char Kwp2000_Service_t(unsigned char *, unsigned char *); typedef unsigned char Kwp2000_Service_t(unsigned char *, unsigned char *);
typedef struct typedef struct
...@@ -25,7 +23,6 @@ typedef struct ...@@ -25,7 +23,6 @@ typedef struct
Kwp2000_Service_t *Kwp2000_Servie; Kwp2000_Service_t *Kwp2000_Servie;
} Kwp2000_ServiceTab_Entry_t; } Kwp2000_ServiceTab_Entry_t;
/* /*
********************************************************************* *********************************************************************
* variable * variable
...@@ -42,25 +39,23 @@ unsigned char Kwp2000_ComState_Flag; ...@@ -42,25 +39,23 @@ unsigned char Kwp2000_ComState_Flag;
void Kwp2000_CallService(unsigned char Sid_u8); void Kwp2000_CallService(unsigned char Sid_u8);
unsigned char kwp2000_CalcSeriveTabSize(void); unsigned char kwp2000_CalcSeriveTabSize(void);
/*-----------------------------------------------------------------------------------*/ /*-----------------------------------------------------------------------------------*/
const Kwp2000_ServiceTab_Entry_t Kwp2000_ServiceTab[] = const Kwp2000_ServiceTab_Entry_t Kwp2000_ServiceTab[] =
{ {
{KWP2000_ECURESET_REQUEST , kwp_EcuReset }, //0x11 {KWP2000_ECURESET_REQUEST, kwp_EcuReset }, /* 0x11 */
{KWP2000_TESTERPRESENT_REQUEST , kwp_TesterPresent }, //0x3E {KWP2000_TESTERPRESENT_REQUEST, kwp_TesterPresent }, /* 0x3E */
{KWP2000_STARTCOMMUNICATION_REQUEST , kwp_StartCommunication }, //0x81 {KWP2000_STARTCOMMUNICATION_REQUEST, kwp_StartCommunication }, /* 0x81 */
{KWP2000_STOPCOMMUNICATION_REQUEST , kwp_StopCommunication }, //0x82 {KWP2000_STOPCOMMUNICATION_REQUEST, kwp_StopCommunication }, /* 0x82 */
{KWP2000_READECUIDENTIFICATION_REQUEST , kwp_readEcuIdentification }, //0x1A {KWP2000_READECUIDENTIFICATION_REQUEST, kwp_readEcuIdentification }, /* 0x1A */
{KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST , kwp_writeDataByLocalIdentifier }, //0x3B {KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST, kwp_writeDataByLocalIdentifier }, /* 0x3B */
{KWP2000_READDATABYLOCALIDENTIFIER_REQUEST , kwp_readDataByLocalIdentifier }, //0x21 {KWP2000_READDATABYLOCALIDENTIFIER_REQUEST, kwp_readDataByLocalIdentifier }, /* 0x21 */
{KWP2000_READDATABYCOMMONIDENTIFIER_REQUEST , kwp_readDataByCommonIdentifier }, //0x22 {KWP2000_READDATABYCOMMONIDENTIFIER_REQUEST, kwp_readDataByCommonIdentifier }, /* 0x22 */
{KWP2000_READDIAGNOSTICTROUBLECODESBYSTATUS_REQUEST, kwp_readDataStatusofDTC }, //0x18 {KWP2000_READDIAGNOSTICTROUBLECODESBYSTATUS_REQUEST, kwp_readDataStatusofDTC }, /* 0x18 */
{KWP2000_CLEARDIAGNOSTICINFORMATION_REQUEST , kwp_ClearDiagnosticInformation }, //0x14 {KWP2000_CLEARDIAGNOSTICINFORMATION_REQUEST, kwp_ClearDiagnosticInformation }, /* 0x14 */
{KWP2000_SECURITYACCESS_REQUEST , kwp_readDataAccessMode }, //0x27 {KWP2000_SECURITYACCESS_REQUEST, kwp_readDataAccessMode }, /* 0x27 */
{KWP2000_STARTROUTINEBYLOCALIDENTIFIER_REQUEST , kwp_StartroutInebykocalIdentifier }, //0x31 {KWP2000_STARTROUTINEBYLOCALIDENTIFIER_REQUEST, kwp_StartroutInebykocalIdentifier }, /* 0x31 */
}; };
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function Name : Kwp2000_CallService * Function Name : Kwp2000_CallService
* Description : * Description :
...@@ -83,7 +78,7 @@ void Kwp2000_CallService(unsigned char Sid_u8) ...@@ -83,7 +78,7 @@ void Kwp2000_CallService(unsigned char Sid_u8)
{ {
serviceFound = 1; serviceFound = 1;
Kwp2000_ComState.Tx_len = Kwp2000_ServiceTab[index].Kwp2000_Servie((unsigned char *)&Kwp2000_ComState.TxBuffer[4], \ Kwp2000_ComState.Tx_len = Kwp2000_ServiceTab[index].Kwp2000_Servie((unsigned char *)&Kwp2000_ComState.TxBuffer[4],
(unsigned char *)&Kwp2000_ComState.Request_Datas[1]); (unsigned char *)&Kwp2000_ComState.Request_Datas[1]);
break; break;
} }
...@@ -93,7 +88,7 @@ void Kwp2000_CallService(unsigned char Sid_u8) ...@@ -93,7 +88,7 @@ void Kwp2000_CallService(unsigned char Sid_u8)
{ {
Kwp2000_ComState.Tx_len = kwp_NegativeResponse(Sid_u8, KWP2000_serviceNotSupported, (unsigned char *)&Kwp2000_ComState.TxBuffer[4]); Kwp2000_ComState.Tx_len = kwp_NegativeResponse(Sid_u8, KWP2000_serviceNotSupported, (unsigned char *)&Kwp2000_ComState.TxBuffer[4]);
} }
else if (Kwp2000_Negative.ResponseCode) /* 其他负反馈处理 后添加原来没有 */ else if (Kwp2000_Negative.ResponseCode) /*其他负反馈处理 后添加原来没有*/
{ {
Kwp2000_ComState.Tx_len = kwp_NegativeResponse(Sid_u8, Kwp2000_Negative.ResponseCode, (unsigned char *)&Kwp2000_ComState.TxBuffer[4]); Kwp2000_ComState.Tx_len = kwp_NegativeResponse(Sid_u8, Kwp2000_Negative.ResponseCode, (unsigned char *)&Kwp2000_ComState.TxBuffer[4]);
Kwp2000_Negative.ResponseCode = 0; Kwp2000_Negative.ResponseCode = 0;
...@@ -105,7 +100,7 @@ void Kwp2000_CallService(unsigned char Sid_u8) ...@@ -105,7 +100,7 @@ void Kwp2000_CallService(unsigned char Sid_u8)
*(Kwp2000_ComState.Response_Datas + Kwp2000_ComState.Tx_len) = Kwp2000_ChecksumCalculate(Kwp2000_ComState.Response_Datas, Kwp2000_ComState.Tx_len); *(Kwp2000_ComState.Response_Datas + Kwp2000_ComState.Tx_len) = Kwp2000_ChecksumCalculate(Kwp2000_ComState.Response_Datas, Kwp2000_ComState.Tx_len);
Kwp2000_ComState.Tx_len ++; Kwp2000_ComState.Tx_len++;
} }
} }
...@@ -121,10 +116,8 @@ void Kwp2000_Handle(void) ...@@ -121,10 +116,8 @@ void Kwp2000_Handle(void)
{ {
if ((Kwp2000_ComMode & PROTOCOL) == KWP2000) if ((Kwp2000_ComMode & PROTOCOL) == KWP2000)
{ {
/*在FAST_INIT之后,如果在RX中断中接收数据,在转为几首模式,在FAST_INIT后加一个超时时间
/*在FAST_INIT之后,如果在RX中断中接到数据,在转为接收模式,在FAST_INIT后加一个 如果FAST_INIT后10ms没有接到新到来得数据就会回到等待空闲模式避免来个wakeup后仪表无法接收数据*/
超时时间,如果FAST_INIT后10ms没有接到新到来的数据就回到等待空闲模式避免来个wakeup
后仪表无法接收数据*/
/* /*
if(Kwp2000_ComMode == KWP2000_FAST_INIT) if(Kwp2000_ComMode == KWP2000_FAST_INIT)
{ {
...@@ -133,14 +126,14 @@ void Kwp2000_Handle(void) ...@@ -133,14 +126,14 @@ void Kwp2000_Handle(void)
*/ */
switch (Kwp2000_ComMode) switch (Kwp2000_ComMode)
{ {
case KWP2000_WAIT_RECEPTION://0x22 case KWP2000_WAIT_RECEPTION: /* 0x22 */
if (Kwp2000_ComState.Rx_len >= 1) if (Kwp2000_ComState.Rx_len >= 1)
{ {
Kwp2000_ComState.headerSize = Kwp2000_FormatAnalyse(); Kwp2000_ComState.headerSize = Kwp2000_FormatAnalyse();
Kwp2000_ComMode = KWP2000_WAIT_HEADER; Kwp2000_ComMode = KWP2000_WAIT_HEADER;
} }
break; break;
case KWP2000_WAIT_HEADER: //0x23 case KWP2000_WAIT_HEADER: /* 0x23 */
if (Kwp2000_ComState.Rx_len >= Kwp2000_ComState.headerSize) if (Kwp2000_ComState.Rx_len >= Kwp2000_ComState.headerSize)
{ {
Kwp2000_HeaderAnalyse(); Kwp2000_HeaderAnalyse();
...@@ -158,8 +151,8 @@ void Kwp2000_Handle(void) ...@@ -158,8 +151,8 @@ void Kwp2000_Handle(void)
} }
} }
break; break;
case KWP2000_COMMUNICATION: //0x25 case KWP2000_COMMUNICATION: /* 0x25 */
case KWP2000_WAIT_DATAS: //0x24 case KWP2000_WAIT_DATAS: /* 0x24 */
if (Kwp2000_ComState.Rx_len > (Kwp2000_ComState.headerSize + Kwp2000_ComState.kwp2000_Len)) if (Kwp2000_ComState.Rx_len > (Kwp2000_ComState.headerSize + Kwp2000_ComState.kwp2000_Len))
{ {
Kwp2000_ComState.kwp2000_Checksum = Kwp2000_ComState.RxBuffer[Kwp2000_ComState.headerSize + Kwp2000_ComState.kwp2000_Len]; Kwp2000_ComState.kwp2000_Checksum = Kwp2000_ComState.RxBuffer[Kwp2000_ComState.headerSize + Kwp2000_ComState.kwp2000_Len];
...@@ -178,10 +171,9 @@ void Kwp2000_Handle(void) ...@@ -178,10 +171,9 @@ void Kwp2000_Handle(void)
} }
else else
{ {
} }
break; break;
case KWP2000_BUILD_RESPONSE: //0x26 case KWP2000_BUILD_RESPONSE: /* 0x26 */
if (!Kwp2000_ComState.ResponsePending) if (!Kwp2000_ComState.ResponsePending)
{ {
Kwp2000_ComState.SId = *(Kwp2000_ComState.Request_Datas); Kwp2000_ComState.SId = *(Kwp2000_ComState.Request_Datas);
...@@ -194,27 +186,27 @@ void Kwp2000_Handle(void) ...@@ -194,27 +186,27 @@ void Kwp2000_Handle(void)
Kwp2000_ComState_Flag++; Kwp2000_ComState_Flag++;
if (Kwp2000_ComState_Flag > 7) if (Kwp2000_ComState_Flag > 7)
{ {
/* #if 0
if() if ()
{ {
SeedKey =(unsigned long)RealTimeClock.RollingCounter; SeedKey = (unsigned long)RealTimeClock.RollingCounter;
SeedKey = SeedKey<<16; SeedKey = SeedKey << 16;
SeedKey |=(unsigned long)(~RealTimeClock.RollingCounter); SeedKey |= (unsigned long)(~RealTimeClock.RollingCounter);
Seed1 = (unsigned char)(SeedKey>>24); Seed1 = (unsigned char)(SeedKey >> 24);
Seed2 = (unsigned char)(SeedKey>>16); Seed2 = (unsigned char)(SeedKey >> 16);
Seed3 = (unsigned char)(SeedKey>>8); Seed3 = (unsigned char)(SeedKey >> 8);
Seed4 = (unsigned char)(SeedKey); Seed4 = (unsigned char)(SeedKey);
App_Uds_Calc_Key(); //----计算密钥等待应答 App_Uds_Calc_Key(); /*计算密钥等待应答*/
} }
*/ #endif
Kwp2000_ComState_Flag = 0; Kwp2000_ComState_Flag = 0;
Kwp2000_CallService(Kwp2000_ComState.SId); Kwp2000_CallService(Kwp2000_ComState.SId);
} }
if (Kwp2000_ComState.Tx_len != 0) if (Kwp2000_ComState.Tx_len != 0)
{ {
Kwp2000_AscTx(Kwp2000_ComState.Response_Datas); /* qitiancun */ Kwp2000_AscTx(Kwp2000_ComState.Response_Datas); /*qitiancun 数据发送----20220303----*/
Kwp2000_ComMode = KWP2000_SEND_RESPONSE; Kwp2000_ComMode = KWP2000_SEND_RESPONSE;
} }
else else
...@@ -222,18 +214,16 @@ void Kwp2000_Handle(void) ...@@ -222,18 +214,16 @@ void Kwp2000_Handle(void)
Kwp2000_ComMode = KWP2000_WAIT_RECEPTION; Kwp2000_ComMode = KWP2000_WAIT_RECEPTION;
} }
break; break;
case KWP2000_SEND_RESPONSE: //0x27 case KWP2000_SEND_RESPONSE: /* 0x27 */
/* Wait when sending response message */ /* Wait when sending response message */
if (Kwp2000_ComState.Tx_len) if (Kwp2000_ComState.Tx_len)
{ {
} }
else else
{ {
} }
break; break;
case KWP2000_MODIFY_CONFIG: //0x28 case KWP2000_MODIFY_CONFIG: /* 0x28 */
switch (Kwp2000_Modify.typeOfModif) switch (Kwp2000_Modify.typeOfModif)
{ {
case KWP2000_MODIFY_NULL: case KWP2000_MODIFY_NULL:
...@@ -253,10 +243,10 @@ void Kwp2000_Handle(void) ...@@ -253,10 +243,10 @@ void Kwp2000_Handle(void)
switch (Kwp2000_Modify.resetType) switch (Kwp2000_Modify.resetType)
{ {
case 0x01: case 0x01:
//Reset_SWResetRequest(SWRESET_GRP_POWERON_E, SWRESET_POWERON_E, 0x0); qitiancun // Reset_SWResetRequest(SWRESET_GRP_POWERON_E, SWRESET_POWERON_E, 0x0); qitiancun
break; break;
case 0x6A: case 0x6A:
//Reset_SWResetRequest(SWRESET_GRP_SB_E, SWRESET_RB_PROG_E, 0x0); qitiancun // Reset_SWResetRequest(SWRESET_GRP_SB_E, SWRESET_RB_PROG_E, 0x0); qitiancun
break; break;
default: default:
/*do nothing */ /*do nothing */
...@@ -281,7 +271,7 @@ void Kwp2000_Handle(void) ...@@ -281,7 +271,7 @@ void Kwp2000_Handle(void)
} }
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function Name : kwp_NegativeResponse * Function Name : kwp2000_CalcSeriveTabSize
* Description : kwp2000 Calculate Serive Table Size * Description : kwp2000 Calculate Serive Table Size
* Input : * Input :
* Output : None * Output : None
...@@ -292,4 +282,3 @@ unsigned char kwp2000_CalcSeriveTabSize(void) ...@@ -292,4 +282,3 @@ unsigned char kwp2000_CalcSeriveTabSize(void)
{ {
return (unsigned char)(sizeof(Kwp2000_ServiceTab) / sizeof(Kwp2000_ServiceTab_Entry_t)); return (unsigned char)(sizeof(Kwp2000_ServiceTab) / sizeof(Kwp2000_ServiceTab_Entry_t));
} }
...@@ -3,10 +3,6 @@ ...@@ -3,10 +3,6 @@
#ifndef _KWP2000_SERVICE_H #ifndef _KWP2000_SERVICE_H
#define _KWP2000_SERVICE_H #define _KWP2000_SERVICE_H
extern void Kwp2000_Handle(void);
extern void Kwp2000_Handle( void );
#endif #endif
...@@ -15,8 +15,6 @@ ...@@ -15,8 +15,6 @@
********************************************************************* *********************************************************************
*/ */
/* /*
********************************************************************* *********************************************************************
* variable * variable
...@@ -24,7 +22,6 @@ ...@@ -24,7 +22,6 @@
*/ */
Kwp2000_Negative_t Kwp2000_Negative; Kwp2000_Negative_t Kwp2000_Negative;
_K_LINE_SIGNAL_FLAG K_LINE_SIGNAL_FLAG; _K_LINE_SIGNAL_FLAG K_LINE_SIGNAL_FLAG;
unsigned char Sendseed1; unsigned char Sendseed1;
...@@ -42,7 +39,6 @@ unsigned char Seed1, Seed2, Seed3, Seed4; ...@@ -42,7 +39,6 @@ unsigned char Seed1, Seed2, Seed3, Seed4;
_NVMNODIGIT NVMNODIGIT; _NVMNODIGIT NVMNODIGIT;
_ECUStatus ECUStatusONE; _ECUStatus ECUStatusONE;
unsigned char DTCstatusCHGFFK_Line; unsigned char DTCstatusCHGFFK_Line;
unsigned char AccessMode2701KeyTimeFlag; unsigned char AccessMode2701KeyTimeFlag;
...@@ -85,21 +81,21 @@ unsigned char kwp_EcuReset(unsigned char *TxData, unsigned char *RequestData) ...@@ -85,21 +81,21 @@ unsigned char kwp_EcuReset(unsigned char *TxData, unsigned char *RequestData)
{ {
unsigned char Tx_Len = 0; unsigned char Tx_Len = 0;
switch (RequestData[ 0 ]) /* subFunction */ switch (RequestData[0]) /* subFunction */
{ {
case 1: /* hardReset */ case 1: /* hardReset */
(*TxData++) = KWP2000_ECURESET_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_ECURESET_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData) = RequestData[ 0 ]; (*TxData) = RequestData[0];
Tx_Len = 2; Tx_Len = 2;
break; break;
case 2: /* keyOffOnReset */ case 2: /* keyOffOnReset */
(*TxData++) = KWP2000_ECURESET_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_ECURESET_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData) = RequestData[ 0 ]; (*TxData) = RequestData[0];
Tx_Len = 2; Tx_Len = 2;
break; break;
case 3: /* softReset */ case 3: /* softReset */
(*TxData++) = KWP2000_ECURESET_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_ECURESET_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData) = RequestData[ 0 ]; (*TxData) = RequestData[0];
Tx_Len = 2; Tx_Len = 2;
break; break;
default: /* subFunctionNotSupported */ default: /* subFunctionNotSupported */
...@@ -138,8 +134,8 @@ unsigned char kwp_StartCommunication(unsigned char *TxData, unsigned char *Reque ...@@ -138,8 +134,8 @@ unsigned char kwp_StartCommunication(unsigned char *TxData, unsigned char *Reque
unsigned char Tx_Len = 0; unsigned char Tx_Len = 0;
K_LINE_SIGNAL_FLAG.RecvStart = 1; K_LINE_SIGNAL_FLAG.RecvStart = 1;
(*TxData ++) = KWP2000_STARTCOMMUNICATION_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_STARTCOMMUNICATION_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData ++) = KWP2000_KEYBYTE1; (*TxData++) = KWP2000_KEYBYTE1;
(*TxData) = KWP2000_KEYBYTE2; (*TxData) = KWP2000_KEYBYTE2;
Tx_Len = 3; Tx_Len = 3;
...@@ -152,15 +148,15 @@ unsigned char kwp_StartCommunication(unsigned char *TxData, unsigned char *Reque ...@@ -152,15 +148,15 @@ unsigned char kwp_StartCommunication(unsigned char *TxData, unsigned char *Reque
* Input : * Input :
* Output : None * Output : None
* Return : None * Return : None
* onther : 82 服务,没有否定应答 * onther : 82 服务,没有否定应答
--------------------------------------------------------------------------*/ --------------------------------------------------------------------------*/
unsigned char kwp_StopCommunication(unsigned char *TxData, unsigned char *RequestData) unsigned char kwp_StopCommunication(unsigned char *TxData, unsigned char *RequestData)
{ {
unsigned char Tx_Len = 0; unsigned char Tx_Len = 0;
if (K_LINE_SIGNAL_FLAG.RecvStart == 1) if (K_LINE_SIGNAL_FLAG.RecvStart == 1)
{ {
K_LINE_SIGNAL_FLAG.RecvStart = 0; //EOL诊断结束标识 K_LINE_SIGNAL_FLAG.RecvStart = 0; /*EOL诊断结束标识*/
K_LINE_SIGNAL_FLAG.SendSeedEQUSRecvSeed = 0; //清空密钥配对成功标识 K_LINE_SIGNAL_FLAG.SendSeedEQUSRecvSeed = 0; /*清空密钥配对成功标识*/
(*TxData) = KWP2000_STOPCOMMUNICATION_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData) = KWP2000_STOPCOMMUNICATION_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
Tx_Len = 1; Tx_Len = 1;
...@@ -183,29 +179,29 @@ unsigned char kwp_StopCommunication(unsigned char *TxData, unsigned char *Reques ...@@ -183,29 +179,29 @@ unsigned char kwp_StopCommunication(unsigned char *TxData, unsigned char *Reques
unsigned char kwp_readEcuIdentification(unsigned char *TxData, unsigned char *RequestData) unsigned char kwp_readEcuIdentification(unsigned char *TxData, unsigned char *RequestData)
{ {
unsigned char Tx_Len = 0; unsigned char Tx_Len = 0;
switch (RequestData[ 0 ]) /* subFunction */ switch (RequestData[0]) /* subFunction */
{ {
case 0x81: /* ECUIdentificationScalingTable */ case 0x81: /* ECUIdentificationScalingTable */
(*TxData++) = KWP2000_READECUIDENTIFICATION_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READECUIDENTIFICATION_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = RequestData[ 0 ]; (*TxData++) = RequestData[0];
(*TxData++) = 0x03; //Scaling Offset (*TxData++) = 0x03; /* Scaling Offset*/
(*TxData++) = 0x91; //汽车制造厂编号 (*TxData++) = 0x91; /* 汽车制造厂编号*/
(*TxData++) = 0x6A; //Ascii 10 byte (*TxData++) = 0x6A; /* Ascii 10 byte*/
(*TxData++) = 0xFF; (*TxData++) = 0xFF;
Tx_Len = 6; Tx_Len = 6;
break; break;
case 0x91: /* vehicleManufacturerECUHardwareNumber */ case 0x91: /* vehicleManufacturerECUHardwareNumber */
(*TxData++) = KWP2000_READECUIDENTIFICATION_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READECUIDENTIFICATION_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = RequestData[ 0 ]; //ISUZU Parts No. 8979683010 (*TxData++) = RequestData[0]; // ISUZU Parts No. 8979683010
(*TxData++) = NVMNODIGIT.No_Digit1 ; (*TxData++) = NVMNODIGIT.No_Digit1;
(*TxData++) = NVMNODIGIT.No_Digit2 ; (*TxData++) = NVMNODIGIT.No_Digit2;
(*TxData++) = NVMNODIGIT.No_Digit3 ; (*TxData++) = NVMNODIGIT.No_Digit3;
(*TxData++) = NVMNODIGIT.No_Digit4 ; (*TxData++) = NVMNODIGIT.No_Digit4;
(*TxData++) = NVMNODIGIT.No_Digit5 ; (*TxData++) = NVMNODIGIT.No_Digit5;
(*TxData++) = NVMNODIGIT.No_Digit6 ; (*TxData++) = NVMNODIGIT.No_Digit6;
(*TxData++) = NVMNODIGIT.No_Digit7 ; (*TxData++) = NVMNODIGIT.No_Digit7;
(*TxData++) = NVMNODIGIT.No_Digit8 ; (*TxData++) = NVMNODIGIT.No_Digit8;
(*TxData++) = NVMNODIGIT.No_Digit9 ; (*TxData++) = NVMNODIGIT.No_Digit9;
(*TxData++) = NVMNODIGIT.No_Digit10; (*TxData++) = NVMNODIGIT.No_Digit10;
Tx_Len = 12; Tx_Len = 12;
break; break;
...@@ -228,370 +224,370 @@ unsigned char kwp_writeDataByLocalIdentifier(unsigned char *TxData, unsigned cha ...@@ -228,370 +224,370 @@ unsigned char kwp_writeDataByLocalIdentifier(unsigned char *TxData, unsigned cha
{ {
unsigned char Tx_Len = 0; unsigned char Tx_Len = 0;
unsigned char CupFlag = 0; unsigned char CupFlag = 0;
//if ((NVMUserSettings.KLINE == 0) || ((NVMUserSettings.KLINE == 1) && (K_LINE_SIGNAL_FLAG.SendSeedEQUSRecvSeed == 1))) // if ((NVMUserSettings.KLINE == 0) || ((NVMUserSettings.KLINE == 1) && (K_LINE_SIGNAL_FLAG.SendSeedEQUSRecvSeed == 1)))
if (0) if (0)
{ {
switch (RequestData[ 0 ]) /* */ switch (RequestData[0]) /* */
{ {
case 0x20: /*应对ECE R13 0:非应对、1:应对*/ case 0x20: /*应对ECE R13 0:非应对、1:应对*/
K_Line_Set.K_Line_LID20 = RequestData[2]; K_Line_Set.K_Line_LID20 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x20; (*TxData++) = 0x20;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x21: /*EBS/ABS 0:无、1:EBS、2:ABS(CAN应对) 3:ABS (CAN非应对)*/ case 0x21: /*EBS/ABS 0:无、1:EBS、2:ABS(CAN应对) 3:ABS (CAN非应对)*/
K_Line_Set.K_Line_LID21 = RequestData[2]; K_Line_Set.K_Line_LID21 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x21; (*TxData++) = 0x21;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x22: /* EVSC 0:无、1:有 */ case 0x22: /* EVSC 0:无、1:有 */
K_Line_Set.K_Line_LID22 = RequestData[2]; K_Line_Set.K_Line_LID22 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x22; (*TxData++) = 0x22;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x23: /* 驻车锁定 0:无、1:有*/ case 0x23: /* 驻车锁定 0:无、1:有*/
K_Line_Set.K_Line_LID23 = RequestData[2]; K_Line_Set.K_Line_LID23 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x23; (*TxData++) = 0x23;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x24: /* HSA */ case 0x24: /* HSA */
K_Line_Set.K_Line_LID24 = RequestData[2]; K_Line_Set.K_Line_LID24 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x24; (*TxData++) = 0x24;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x25: /* AEBS */ case 0x25: /* AEBS */
K_Line_Set.K_Line_LID25 = RequestData[2]; K_Line_Set.K_Line_LID25 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x25; (*TxData++) = 0x25;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x26: /* ACC */ case 0x26: /* ACC */
K_Line_Set.K_Line_LID26 = RequestData[2]; K_Line_Set.K_Line_LID26 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x26; (*TxData++) = 0x26;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x27: /* LDWS */ case 0x27: /* LDWS */
K_Line_Set.K_Line_LID27 = RequestData[2]; K_Line_Set.K_Line_LID27 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x27; (*TxData++) = 0x27;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x28: /* 车辆间报警 */ case 0x28: /* 车辆间报警 */
K_Line_Set.K_Line_LID28 = RequestData[2]; K_Line_Set.K_Line_LID28 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x28; (*TxData++) = 0x28;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x29: /* 有无巡航 */ case 0x29: /* 有无巡航 */
K_Line_Set.K_Line_LID29 = RequestData[2]; K_Line_Set.K_Line_LID29 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x29; (*TxData++) = 0x29;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x2A: /* 气悬 */ case 0x2A: /* 气悬 */
K_Line_Set.K_Line_LID2A = RequestData[2]; K_Line_Set.K_Line_LID2A = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x2A; (*TxData++) = 0x2A;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x2B: /* ISS */ case 0x2B: /* ISS */
K_Line_Set.K_Line_LID2B = RequestData[2]; K_Line_Set.K_Line_LID2B = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x2B; (*TxData++) = 0x2B;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x2C: /* 装货台工作警报蜂鸣器 */ case 0x2C: /* 装货台工作警报蜂鸣器 */
K_Line_Set.K_Line_LID2C = RequestData[2]; K_Line_Set.K_Line_LID2C = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x2C; (*TxData++) = 0x2C;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x2D: /* ROWS */ case 0x2D: /* ROWS */
K_Line_Set.K_Line_LID2D = RequestData[2]; K_Line_Set.K_Line_LID2D = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x2D; (*TxData++) = 0x2D;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x2E: /* 行车记录仪 */ case 0x2E: /* 行车记录仪*/
K_Line_Set.K_Line_LID2E = RequestData[2]; K_Line_Set.K_Line_LID2E = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x2E; (*TxData++) = 0x2E;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x2F: /* 车型 */ case 0x2F: /* 车型 */
K_Line_Set.K_Line_LID2F = RequestData[2]; K_Line_Set.K_Line_LID2F = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x2F; (*TxData++) = 0x2F;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x30: /* 缓速器 */ case 0x30: /* 缓速器 */
K_Line_Set.K_Line_LID30 = RequestData[2]; K_Line_Set.K_Line_LID30 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x30; (*TxData++) = 0x30;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x31: /* 地图巡航 */ case 0x31: /* 地图巡航 */
K_Line_Set.K_Line_LID31 = RequestData[2]; K_Line_Set.K_Line_LID31 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x31; (*TxData++) = 0x31;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x32: /* 装货台种类 */ case 0x32: /* 装货台种类 */
K_Line_Set.K_Line_LID32 = RequestData[2]; K_Line_Set.K_Line_LID32 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x32; (*TxData++) = 0x32;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x33: /* SCR?DPD */ case 0x33: /* SCR?DPD */
K_Line_Set.K_Line_LID33 = RequestData[2]; K_Line_Set.K_Line_LID33 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x33; (*TxData++) = 0x33;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x34: /* 驻车种类 */ case 0x34: /* 驻车种类 */
K_Line_Set.K_Line_LID34 = RequestData[2]; K_Line_Set.K_Line_LID34 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x34; (*TxData++) = 0x34;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x35: /* 气压计 */ case 0x35: /* 气压计 */
K_Line_Set.K_Line_LID35 = RequestData[2]; K_Line_Set.K_Line_LID35 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x35; (*TxData++) = 0x35;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x36: /* 低压警报压 */ case 0x36: /* 低气压报警 */
K_Line_Set.K_Line_LID36 = RequestData[2]; K_Line_Set.K_Line_LID36 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x36; (*TxData++) = 0x36;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x37: /* 超限警报 */ case 0x37: /* 超限警报 */
K_Line_Set.K_Line_LID37 = RequestData[2]; K_Line_Set.K_Line_LID37 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x37; (*TxData++) = 0x37;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x38: /* 速度警报 */ case 0x38: /* 速度警报 */
K_Line_Set.K_Line_LID38 = RequestData[2]; K_Line_Set.K_Line_LID38 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x38; (*TxData++) = 0x38;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x39: /* 可变SLD */ case 0x39: /* 可变SLD */
K_Line_Set.K_Line_LID39 = RequestData[2]; K_Line_Set.K_Line_LID39 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x39; (*TxData++) = 0x39;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x3A: /* OEM */ case 0x3A: /* OEM */
K_Line_Set.K_Line_LID3A = RequestData[2]; K_Line_Set.K_Line_LID3A = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x3A; (*TxData++) = 0x3A;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x3B: /* 预留 */ case 0x3B: /*预留 */
K_Line_Set.K_Line_LID3B = RequestData[2]; K_Line_Set.K_Line_LID3B = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x3B; (*TxData++) = 0x3B;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x3C: /* 预留 */ case 0x3C: /* 预留 */
K_Line_Set.K_Line_LID3C = RequestData[2]; K_Line_Set.K_Line_LID3C = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x3C; (*TxData++) = 0x3C;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x3D: /* 预留 */ case 0x3D: /* 预留 */
K_Line_Set.K_Line_LID3D = RequestData[2]; K_Line_Set.K_Line_LID3D = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x3D; (*TxData++) = 0x3D;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x3E: /* 预留 */ case 0x3E: /* 预留 */
K_Line_Set.K_Line_LID3E = RequestData[2]; K_Line_Set.K_Line_LID3E = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x3E; (*TxData++) = 0x3E;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x3F: /* 预留 */ case 0x3F: /* 预留 */
K_Line_Set.K_Line_LID3F = RequestData[2]; K_Line_Set.K_Line_LID3F = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x3F; (*TxData++) = 0x3F;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x40: /* 发动机种类名称 */ case 0x40: /* 发动机种类名称 */
K_Line_Set.K_Line_LID40 = RequestData[2]; K_Line_Set.K_Line_LID40 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x40; (*TxData++) = 0x40;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x41: /* 变速器种类&控制 */ case 0x41: /* 变速器种类&控制 */
K_Line_Set.K_Line_LID41 = RequestData[2]; K_Line_Set.K_Line_LID41 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x41; (*TxData++) = 0x41;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x42: /* 驻车管道 */ case 0x42: /* 驻车管道 */
K_Line_Set.K_Line_LID42 = RequestData[2]; K_Line_Set.K_Line_LID42 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x42; (*TxData++) = 0x42;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x43: /* 车型 */ case 0x43: /* 车型 */
K_Line_Set.K_Line_LID43 = RequestData[2]; K_Line_Set.K_Line_LID43 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x43; (*TxData++) = 0x43;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x44: /* 速度警报 */ case 0x44: /* 速度警报 */
K_Line_Set.K_Line_LID44 = RequestData[2]; K_Line_Set.K_Line_LID44 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x44; (*TxData++) = 0x44;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x45: /* 发动机转速 */ case 0x45: /* 发动机转速 */
K_Line_Set.K_Line_LID45 = RequestData[2]; K_Line_Set.K_Line_LID45 = RequestData[2];
User_App.User_Speed = K_Line_Set.K_Line_LID45; User_App.User_Speed = K_Line_Set.K_Line_LID45;
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x45; (*TxData++) = 0x45;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x46: /* 急加速 */ case 0x46: /* 急加速 */
K_Line_Set.K_Line_LID46 = RequestData[2]; K_Line_Set.K_Line_LID46 = RequestData[2];
User_App.User_JADD = K_Line_Set.K_Line_LID46; User_App.User_JADD = K_Line_Set.K_Line_LID46;
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x46; (*TxData++) = 0x46;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x47: /* 急减速 */ case 0x47: /* 急减速 */
K_Line_Set.K_Line_LID47 = RequestData[2]; K_Line_Set.K_Line_LID47 = RequestData[2];
User_App.User_JSUB = K_Line_Set.K_Line_LID47; User_App.User_JSUB = K_Line_Set.K_Line_LID47;
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x47; (*TxData++) = 0x47;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x48: /* 长时间怠速 */ case 0x48: /* 长时间怠速 */
K_Line_Set.K_Line_LID48 = RequestData[2]; K_Line_Set.K_Line_LID48 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x48; (*TxData++) = 0x48;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x49: /* 辅助驻车 */ case 0x49: /* 辅助驻车 */
K_Line_Set.K_Line_LID49 = RequestData[2]; K_Line_Set.K_Line_LID49 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x49; (*TxData++) = 0x49;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x4A: /* 变速箱油 */ case 0x4A: /* 变速箱油 */
K_Line_Set.K_Line_LID4A = RequestData[2]; K_Line_Set.K_Line_LID4A = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x4A; (*TxData++) = 0x4A;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x4B: /* 差速器油 */ case 0x4B: /* 差速器油 */
K_Line_Set.K_Line_LID4B = RequestData[2]; K_Line_Set.K_Line_LID4B = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x4B; (*TxData++) = 0x4B;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x4C: /* 离合器油 */ case 0x4C: /* 离合器油 */
K_Line_Set.K_Line_LID4C = RequestData[2]; K_Line_Set.K_Line_LID4C = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x4C; (*TxData++) = 0x4C;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x4D: /* 动力转向油 */ case 0x4D: /* 动力转向油 */
K_Line_Set.K_Line_LID4D = RequestData[2]; K_Line_Set.K_Line_LID4D = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x4D; (*TxData++) = 0x4D;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x4E: /* 轮胎 */ case 0x4E: /* 轮胎 */
K_Line_Set.K_Line_LID4E = RequestData[2]; K_Line_Set.K_Line_LID4E = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x4E; (*TxData++) = 0x4E;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x4F: /* 机油&滤清器 */ case 0x4F: /* 机油&滤清器 */
K_Line_Set.K_Line_LID4F = RequestData[2]; K_Line_Set.K_Line_LID4F = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x4F; (*TxData++) = 0x4F;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x50: /* 预留 */ case 0x50: /* 预留 */
K_Line_Set.K_Line_LID50 = RequestData[2]; K_Line_Set.K_Line_LID50 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x50; (*TxData++) = 0x50;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x51: /* 工作模式 */ case 0x51: /* 工作模式 */
K_Line_Set.K_Line_LID51 = RequestData[2]; K_Line_Set.K_Line_LID51 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x51; (*TxData++) = 0x51;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x52: /* 电子部件设定 */ case 0x52: /* 电子部件设定 */
K_Line_Set.K_Line_LID52 = RequestData[2]; K_Line_Set.K_Line_LID52 = RequestData[2];
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x52; (*TxData++) = 0x52;
Tx_Len = 2; Tx_Len = 2;
DTCstatusCHGFFK_Line = 1 ; DTCstatusCHGFFK_Line = 1;
break; break;
case 0x91: /* */ case 0x91: /* */
...@@ -606,8 +602,8 @@ unsigned char kwp_writeDataByLocalIdentifier(unsigned char *TxData, unsigned cha ...@@ -606,8 +602,8 @@ unsigned char kwp_writeDataByLocalIdentifier(unsigned char *TxData, unsigned cha
NVMNODIGIT.No_Digit9 = RequestData[9]; NVMNODIGIT.No_Digit9 = RequestData[9];
NVMNODIGIT.No_Digit10 = RequestData[10]; NVMNODIGIT.No_Digit10 = RequestData[10];
/*写EEP*/ /*写EEP*/
//NVM_Data_Update(NVM_NO_DIGIT); //----ECU ID_ECU件号eep // NVM_Data_Update(NVM_NO_DIGIT); //----ECU ID_ECU件号 eep
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = RequestData[0]; (*TxData++) = RequestData[0];
...@@ -618,15 +614,15 @@ unsigned char kwp_writeDataByLocalIdentifier(unsigned char *TxData, unsigned cha ...@@ -618,15 +614,15 @@ unsigned char kwp_writeDataByLocalIdentifier(unsigned char *TxData, unsigned cha
if (NVMNODIGIT.METERCOUNT < 0xFF) if (NVMNODIGIT.METERCOUNT < 0xFF)
{ {
NVMNODIGIT.METERCOUNT ++ ; /*修正率次数增加*/ NVMNODIGIT.METERCOUNT++; /*修正率次数增加*/
/*写EEP*/ /*写EEP*/
//NVM_Data_Update(NVM_NO_DIGIT); // NVM_Data_Update(NVM_NO_DIGIT);
} }
else else
{ {
NVMNODIGIT.METERCOUNT = 0xFF; /*修正率次数增加*/ NVMNODIGIT.METERCOUNT = 0xFF; /*修正率次数增加*/
/*写EEP*/ /*写EEP*/
//NVM_Data_Update(NVM_NO_DIGIT); // NVM_Data_Update(NVM_NO_DIGIT);
} }
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
...@@ -638,15 +634,15 @@ unsigned char kwp_writeDataByLocalIdentifier(unsigned char *TxData, unsigned cha ...@@ -638,15 +634,15 @@ unsigned char kwp_writeDataByLocalIdentifier(unsigned char *TxData, unsigned cha
if (NVMNODIGIT.METERCOUNT < 0xFF) if (NVMNODIGIT.METERCOUNT < 0xFF)
{ {
NVMNODIGIT.METERCOUNT ++ ; /*修正率次数增加*/ NVMNODIGIT.METERCOUNT++; /*修正率次数增加*/
/*写EEP*/ /*写EEP*/
//NVM_Data_Update(NVM_NO_DIGIT); // NVM_Data_Update(NVM_NO_DIGIT);
} }
else else
{ {
NVMNODIGIT.METERCOUNT = 0xFF; /*修正率次数增加*/ NVMNODIGIT.METERCOUNT = 0xFF; /*修正率次数增加*/
/*写EEP*/ /*写EEP*/
//NVM_Data_Update(NVM_NO_DIGIT); // NVM_Data_Update(NVM_NO_DIGIT);
} }
(*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
...@@ -661,7 +657,7 @@ unsigned char kwp_writeDataByLocalIdentifier(unsigned char *TxData, unsigned cha ...@@ -661,7 +657,7 @@ unsigned char kwp_writeDataByLocalIdentifier(unsigned char *TxData, unsigned cha
} }
else else
{ {
//if ((NVMUserSettings.KLINE == 1u) && (K_LINE_SIGNAL_FLAG.SendSeedEQUSRecvSeed == 0u)) // if ((NVMUserSettings.KLINE == 1u) && (K_LINE_SIGNAL_FLAG.SendSeedEQUSRecvSeed == 0u))
if (1) if (1)
{ {
if (((RequestData[0] >= 0x20) && (RequestData[0] <= 0x52)) || (RequestData[0] == 0x91) || (RequestData[0] == 0xA0) || (RequestData[0] == 0xA3)) if (((RequestData[0] >= 0x20) && (RequestData[0] <= 0x52)) || (RequestData[0] == 0x91) || (RequestData[0] == 0xA0) || (RequestData[0] == 0xA3))
...@@ -686,363 +682,363 @@ unsigned char kwp_readDataByLocalIdentifier(unsigned char *TxData, unsigned char ...@@ -686,363 +682,363 @@ unsigned char kwp_readDataByLocalIdentifier(unsigned char *TxData, unsigned char
{ {
unsigned char Tx_Len = 0; unsigned char Tx_Len = 0;
unsigned int ECUStatusCup = 0; unsigned int ECUStatusCup = 0;
switch (RequestData[ 0 ]) /* subFunction */ switch (RequestData[0]) /* subFunction */
{ {
case 0x20: /* 应对ECE R13 */ case 0x20: /* 应对ECE R13 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x20; (*TxData++) = 0x20;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID20 ; (*TxData++) = K_Line_Set.K_Line_LID20;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x21: /* EBS/ABS */ case 0x21: /* EBS/ABS */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x21; (*TxData++) = 0x21;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID21 ; (*TxData++) = K_Line_Set.K_Line_LID21;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x22: /* EVSC */ case 0x22: /* EVSC */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x22; (*TxData++) = 0x22;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID22 ; (*TxData++) = K_Line_Set.K_Line_LID22;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x23: /* 驻车锁定 */ case 0x23: /* 驻车锁定 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x23; (*TxData++) = 0x23;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID23 ; (*TxData++) = K_Line_Set.K_Line_LID23;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x24: /* HSA */ case 0x24: /* HSA */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x24; (*TxData++) = 0x24;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID24 ; (*TxData++) = K_Line_Set.K_Line_LID24;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x25: /* AEBS */ case 0x25: /* AEBS */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x25; (*TxData++) = 0x25;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID25 ; (*TxData++) = K_Line_Set.K_Line_LID25;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x26: /* ACC */ case 0x26: /* ACC */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x26; (*TxData++) = 0x26;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID26 ; (*TxData++) = K_Line_Set.K_Line_LID26;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x27: /* LDWS */ case 0x27: /* LDWS */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x27; (*TxData++) = 0x27;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID27 ; (*TxData++) = K_Line_Set.K_Line_LID27;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x28: /* 车辆间报警 */ case 0x28: /* 车辆间报警 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x28; (*TxData++) = 0x28;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID28 ; (*TxData++) = K_Line_Set.K_Line_LID28;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x29: /* 有无巡航 */ case 0x29: /* 有无巡航 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x29; (*TxData++) = 0x29;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID29 ; (*TxData++) = K_Line_Set.K_Line_LID29;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x2A: /* 气悬 */ case 0x2A: /* 气悬 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x2A; (*TxData++) = 0x2A;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID2A ; (*TxData++) = K_Line_Set.K_Line_LID2A;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x2B: /* ISS */ case 0x2B: /* ISS */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x2B; (*TxData++) = 0x2B;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID2B ; (*TxData++) = K_Line_Set.K_Line_LID2B;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x2C: /* 装货台工作警报蜂鸣器 */ case 0x2C: /* װ装货台工作警报蜂鸣器 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x2C; (*TxData++) = 0x2C;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID2C ; (*TxData++) = K_Line_Set.K_Line_LID2C;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x2D: /* ROWS */ case 0x2D: /* ROWS */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x2D; (*TxData++) = 0x2D;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID2D ; (*TxData++) = K_Line_Set.K_Line_LID2D;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x2E: /* 行车记录仪 */ case 0x2E: /* 行车记录仪 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x2E; (*TxData++) = 0x2E;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID2E ; (*TxData++) = K_Line_Set.K_Line_LID2E;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x2F: /*  车型 */ case 0x2F: /* 车型 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x2F; (*TxData++) = 0x2F;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID2F ; (*TxData++) = K_Line_Set.K_Line_LID2F;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x30: /* 缓速器 */ case 0x30: /* 缓速器 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x30; (*TxData++) = 0x30;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID30 ; (*TxData++) = K_Line_Set.K_Line_LID30;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x31: /* 地图巡航 */ case 0x31: /* 地图巡航 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x31; (*TxData++) = 0x31;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID31 ; (*TxData++) = K_Line_Set.K_Line_LID31;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x32: /* 装货台种类 */ case 0x32: /* 装货台种类 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x32; (*TxData++) = 0x32;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID32 ; (*TxData++) = K_Line_Set.K_Line_LID32;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x33: /* SCR?DPD */ case 0x33: /* SCR?DPD */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x33; (*TxData++) = 0x33;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID33 ; (*TxData++) = K_Line_Set.K_Line_LID33;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x34: /* 驻车种类 */ case 0x34: /* 驻车种类 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x34; (*TxData++) = 0x34;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID34 ; (*TxData++) = K_Line_Set.K_Line_LID34;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x35: /* 气压计 */ case 0x35: /* 气压计 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x35; (*TxData++) = 0x35;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID35 ; (*TxData++) = K_Line_Set.K_Line_LID35;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x36: /* 低压警报压 */ case 0x36: /* 低压警报 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x36; (*TxData++) = 0x36;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID36 ; (*TxData++) = K_Line_Set.K_Line_LID36;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x37: /* 超限警报 */ case 0x37: /* 超限警报 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x37; (*TxData++) = 0x37;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID37 ; (*TxData++) = K_Line_Set.K_Line_LID37;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x38: /* 速度警报 */ case 0x38: /* 速度警报 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x38; (*TxData++) = 0x38;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID38 ; (*TxData++) = K_Line_Set.K_Line_LID38;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x39: /*  可变SLD */ case 0x39: /* 可变SLD */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x39; (*TxData++) = 0x39;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID39 ; (*TxData++) = K_Line_Set.K_Line_LID39;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x3A: /*  OEM */ case 0x3A: /* OEM */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x3A; (*TxData++) = 0x3A;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID3A ; (*TxData++) = K_Line_Set.K_Line_LID3A;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x3B: /* */ case 0x3B: /* */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x3B; (*TxData++) = 0x3B;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID3B ; (*TxData++) = K_Line_Set.K_Line_LID3B;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x3C: /* */ case 0x3C: /* */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x3C; (*TxData++) = 0x3C;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID3C ; (*TxData++) = K_Line_Set.K_Line_LID3C;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x3D: /* */ case 0x3D: /* */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x3D; (*TxData++) = 0x3D;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID3D ; (*TxData++) = K_Line_Set.K_Line_LID3D;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x3E: /* */ case 0x3E: /* */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x3E; (*TxData++) = 0x3E;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID3E ; (*TxData++) = K_Line_Set.K_Line_LID3E;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x3F: /* */ case 0x3F: /* */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x3F; (*TxData++) = 0x3F;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID3F ; (*TxData++) = K_Line_Set.K_Line_LID3F;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x40: /* 发动机种类 */ case 0x40: /* 发动机种类 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x40; (*TxData++) = 0x40;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID40 ; (*TxData++) = K_Line_Set.K_Line_LID40;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x41: /* 变速器种类&控制 */ case 0x41: /* 变速器种类&控制 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x41; (*TxData++) = 0x41;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID41 ; (*TxData++) = K_Line_Set.K_Line_LID41;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x42: /* 5.2.14.1.4. 驻车管道 */ case 0x42: /* 5.2.14.1.4. 驻车管道*/
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x42; (*TxData++) = 0x42;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID42 ; (*TxData++) = K_Line_Set.K_Line_LID42;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x43: /* 5.2.14.1.5. 车型 */ case 0x43: /* 5.2.14.1.5. 车型 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x43; (*TxData++) = 0x43;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID43 ; (*TxData++) = K_Line_Set.K_Line_LID43;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x44: /* 速度警报 */ case 0x44: /* 速度警报 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x44; (*TxData++) = 0x44;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID44 ; (*TxData++) = K_Line_Set.K_Line_LID44;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x45: /* 发动机转速 */ case 0x45: /* 发动机转速 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x45; (*TxData++) = 0x45;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID45 ; (*TxData++) = K_Line_Set.K_Line_LID45;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x46: /* 急加速 */ case 0x46: /* 急加速 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x46; (*TxData++) = 0x46;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID46 ; (*TxData++) = K_Line_Set.K_Line_LID46;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x47: /* 急减速 */ case 0x47: /* 急减速 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x47; (*TxData++) = 0x47;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID47 ; (*TxData++) = K_Line_Set.K_Line_LID47;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x48: /* 长时间怠速 */ case 0x48: /* 长时间怠速 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x48; (*TxData++) = 0x48;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID48 ; (*TxData++) = K_Line_Set.K_Line_LID48;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x49: /* 辅助驻车 */ case 0x49: /* 辅助驻车 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x49; (*TxData++) = 0x49;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID49 ; (*TxData++) = K_Line_Set.K_Line_LID49;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x4A: /* 变速箱油 */ case 0x4A: /* 变速箱油 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x4A; (*TxData++) = 0x4A;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID4A ; (*TxData++) = K_Line_Set.K_Line_LID4A;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x4B: /* 差速器油 */ case 0x4B: /* 差速器油 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x4B; (*TxData++) = 0x4B;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID4B ; (*TxData++) = K_Line_Set.K_Line_LID4B;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x4C: /* 离合器油 */ case 0x4C: /* 离合器油 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x4C; (*TxData++) = 0x4C;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID4C ; (*TxData++) = K_Line_Set.K_Line_LID4C;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x4D: /* 动力转向油 */ case 0x4D: /* 动力转向油 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x4D; (*TxData++) = 0x4D;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID4D ; (*TxData++) = K_Line_Set.K_Line_LID4D;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x4E: /* 轮胎 */ case 0x4E: /* 轮胎 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x4E; (*TxData++) = 0x4E;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID4E ; (*TxData++) = K_Line_Set.K_Line_LID4E;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x4F: /* 机油&滤清器 */ case 0x4F: /* 机油&滤清器 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x4F; (*TxData++) = 0x4F;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID4F ; (*TxData++) = K_Line_Set.K_Line_LID4F;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x50: /* 预留 */ case 0x50: /* 预留 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x50; (*TxData++) = 0x50;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID50 ; (*TxData++) = K_Line_Set.K_Line_LID50;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x51: /* 5.2.14.1.8. 工作模式*/ case 0x51: /* 5.2.14.1.8. 工作模式 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x51; (*TxData++) = 0x51;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID51 ; (*TxData++) = K_Line_Set.K_Line_LID51;
Tx_Len = 4; Tx_Len = 4;
break; break;
case 0x52: /* 5.2.14.1.9. 电子部件设定( */ case 0x52: /* 5.2.14.1.9. 电子部件设定 */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x52; (*TxData++) = 0x52;
(*TxData++) = 0x00; (*TxData++) = 0x00;
(*TxData++) = K_Line_Set.K_Line_LID52 ; (*TxData++) = K_Line_Set.K_Line_LID52;
Tx_Len = 4; Tx_Len = 4;
break; break;
...@@ -1086,7 +1082,7 @@ unsigned char kwp_readDataByLocalIdentifier(unsigned char *TxData, unsigned char ...@@ -1086,7 +1082,7 @@ unsigned char kwp_readDataByLocalIdentifier(unsigned char *TxData, unsigned char
case 0xA2: /* */ case 0xA2: /* */
(*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_READDATABYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0xA2; (*TxData++) = 0xA2;
(*TxData++) = NVMNODIGIT.METERCOUNT; //修正率替换次数 (*TxData++) = NVMNODIGIT.METERCOUNT; /*修正率替换次数*/
Tx_Len = 3; Tx_Len = 3;
break; break;
default: /* subFunctionNotSupported */ default: /* subFunctionNotSupported */
...@@ -1121,22 +1117,24 @@ unsigned char kwp_readDataAccessMode(unsigned char *TxData, unsigned char *Reque ...@@ -1121,22 +1117,24 @@ unsigned char kwp_readDataAccessMode(unsigned char *TxData, unsigned char *Reque
unsigned long SeedKey = 0; unsigned long SeedKey = 0;
unsigned char Tx_Len = 0; unsigned char Tx_Len = 0;
switch (RequestData[ 0 ]) /* subFunction */ switch (RequestData[0]) /* subFunction */
{ {
case 0x01: /* */ case 0x01: /* */
//if (NVMUserSettings.KLINE == 1)/*是否锁定标记*/ // if (NVMUserSettings.KLINE == 1)/*是否锁定标记*/
if (0) if (0)
{ {
/*密钥随机数生成*/ /*密钥随机数生成*/
//SeedKey = (unsigned long)RealTimeClock.RollingCounter; // SeedKey = (unsigned long)RealTimeClock.RollingCounter;
//SeedKey = SeedKey << 16; // SeedKey = SeedKey << 16;
//SeedKey |= (unsigned long)(~RealTimeClock.RollingCounter); // SeedKey |= (unsigned long)(~RealTimeClock.RollingCounter);
Seed1 = (unsigned char)(SeedKey >> 24); Seed1 = (unsigned char)(SeedKey >> 24);
Seed2 = (unsigned char)(SeedKey >> 16); Seed2 = (unsigned char)(SeedKey >> 16);
Seed3 = (unsigned char)(SeedKey >> 8); Seed3 = (unsigned char)(SeedKey >> 8);
Seed4 = (unsigned char)(SeedKey); Seed4 = (unsigned char)(SeedKey);
App_Uds_Calc_Key(); //----计算密钥等待应答
/*计算密钥等待应答*/
App_Uds_Calc_Key();
K_LINE_SIGNAL_FLAG.AccessMode2701 = 1; K_LINE_SIGNAL_FLAG.AccessMode2701 = 1;
AccessMode2701KeyTime = 0; AccessMode2701KeyTime = 0;
...@@ -1156,19 +1154,18 @@ unsigned char kwp_readDataAccessMode(unsigned char *TxData, unsigned char *Reque ...@@ -1156,19 +1154,18 @@ unsigned char kwp_readDataAccessMode(unsigned char *TxData, unsigned char *Reque
} }
break; break;
case 0x02: /* */ case 0x02: /* */
Recvseed1 = RequestData[ 1 ]; Recvseed1 = RequestData[1];
Recvseed2 = RequestData[ 2 ]; Recvseed2 = RequestData[2];
Recvseed3 = RequestData[ 3 ]; Recvseed3 = RequestData[3];
Recvseed4 = RequestData[ 4 ]; Recvseed4 = RequestData[4];
if ( if (
(Sendseed1 == Recvseed1) && \ (Sendseed1 == Recvseed1) &&
(Sendseed2 == Recvseed2) && \ (Sendseed2 == Recvseed2) &&
(Sendseed3 == Recvseed3) && \ (Sendseed3 == Recvseed3) &&
(Sendseed4 == Recvseed4) && \ (Sendseed4 == Recvseed4) &&
(AccessMode2701KeyTimeFlag == 1 ) (AccessMode2701KeyTimeFlag == 1))
)
{ {
K_LINE_SIGNAL_FLAG.AccessMode2701 = 0 ; K_LINE_SIGNAL_FLAG.AccessMode2701 = 0;
AccessMode2701KeyTimeFlag = 1; AccessMode2701KeyTimeFlag = 1;
K_LINE_SIGNAL_FLAG.SendSeedEQUSRecvSeed = 1; K_LINE_SIGNAL_FLAG.SendSeedEQUSRecvSeed = 1;
...@@ -1200,13 +1197,13 @@ unsigned char kwp_readDataAccessMode(unsigned char *TxData, unsigned char *Reque ...@@ -1200,13 +1197,13 @@ unsigned char kwp_readDataAccessMode(unsigned char *TxData, unsigned char *Reque
unsigned char kwp_StartroutInebykocalIdentifier(unsigned char *TxData, unsigned char *RequestData) unsigned char kwp_StartroutInebykocalIdentifier(unsigned char *TxData, unsigned char *RequestData)
{ {
unsigned char Tx_Len = 0; unsigned char Tx_Len = 0;
switch (RequestData[ 0 ]) /* */ switch (RequestData[0]) /* */
{ {
case 0x08: /* */ case 0x08: /* */
//K_LINE_SIGNAL_FLAG.S_Regist = 1; // K_LINE_SIGNAL_FLAG.S_Regist = 1;
//NVMUserSettings.KLINE = 1 ; // NVMUserSettings.KLINE = 1 ;
/*写EEP*/ /*写EEP*/
//NVM_Data_Update(NVM_USER_SETTINGS); // NVM_Data_Update(NVM_USER_SETTINGS);
(*TxData++) = KWP2000_STARTROUTINEBYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_STARTROUTINEBYLOCALIDENTIFIER_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0x08; (*TxData++) = 0x08;
Tx_Len = 2; Tx_Len = 2;
...@@ -1228,7 +1225,7 @@ unsigned char kwp_StartroutInebykocalIdentifier(unsigned char *TxData, unsigned ...@@ -1228,7 +1225,7 @@ unsigned char kwp_StartroutInebykocalIdentifier(unsigned char *TxData, unsigned
unsigned char kwp_readDataStatusofDTC(unsigned char *TxData, unsigned char *RequestData) unsigned char kwp_readDataStatusofDTC(unsigned char *TxData, unsigned char *RequestData)
{ {
unsigned char Tx_Len = 0; unsigned char Tx_Len = 0;
switch (RequestData[ 0 ]) /* subFunction */ switch (RequestData[0]) /* subFunction */
{ {
case 0x00: /* */ case 0x00: /* */
/* /*
...@@ -1326,7 +1323,7 @@ unsigned char kwp_ClearDiagnosticInformation(unsigned char *TxData, unsigned cha ...@@ -1326,7 +1323,7 @@ unsigned char kwp_ClearDiagnosticInformation(unsigned char *TxData, unsigned cha
{ {
unsigned char Tx_Len = 0; unsigned char Tx_Len = 0;
switch (RequestData[ 0 ]) /* subFunction */ switch (RequestData[0]) /* subFunction */
{ {
case 0xFF: /* */ case 0xFF: /* */
if (RequestData[1] == 0x00) if (RequestData[1] == 0x00)
...@@ -1334,7 +1331,7 @@ unsigned char kwp_ClearDiagnosticInformation(unsigned char *TxData, unsigned cha ...@@ -1334,7 +1331,7 @@ unsigned char kwp_ClearDiagnosticInformation(unsigned char *TxData, unsigned cha
(*TxData++) = KWP2000_CLEARDIAGNOSTICINFORMATION_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET; (*TxData++) = KWP2000_CLEARDIAGNOSTICINFORMATION_REQUEST + KWP2000_POSITIVE_RESPONSE_OFFSET;
(*TxData++) = 0xFF; (*TxData++) = 0xFF;
(*TxData++) = 0x00; (*TxData++) = 0x00;
//NVMNODIGIT.NoOfDTCFF00 == 0x00; // NVMNODIGIT.NoOfDTCFF00 == 0x00;
Tx_Len = 3; Tx_Len = 3;
} }
else else
...@@ -1347,7 +1344,6 @@ unsigned char kwp_ClearDiagnosticInformation(unsigned char *TxData, unsigned cha ...@@ -1347,7 +1344,6 @@ unsigned char kwp_ClearDiagnosticInformation(unsigned char *TxData, unsigned cha
break; break;
} }
return Tx_Len; return Tx_Len;
} }
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function Name : App_Uds_Calc_Key * Function Name : App_Uds_Calc_Key
...@@ -1374,25 +1370,25 @@ void App_Uds_Calc_Key(void) ...@@ -1374,25 +1370,25 @@ void App_Uds_Calc_Key(void)
unsigned char CupChar11 = 0; unsigned char CupChar11 = 0;
unsigned char CupChar12 = 0; unsigned char CupChar12 = 0;
CupChar1 = Cup_Key(Seed1 , 1, Seed1); CupChar1 = Cup_Key(Seed1, 1, Seed1);
CupChar2 = Cup_Key(Seed2 , 2, Seed2); CupChar2 = Cup_Key(Seed2, 2, Seed2);
CupChar3 = Cup_Key(Seed3 , 3, Seed3); CupChar3 = Cup_Key(Seed3, 3, Seed3);
CupChar4 = Cup_Key(Seed4 , 4, Seed4); CupChar4 = Cup_Key(Seed4, 4, Seed4);
CupChar5 = Cup_Key(CupChar4 , 1, Seed1); CupChar5 = Cup_Key(CupChar4, 1, Seed1);
CupChar6 = Cup_Key(CupChar3 , 2, Seed2); CupChar6 = Cup_Key(CupChar3, 2, Seed2);
CupChar7 = Cup_Key(CupChar2 , 3, Seed3); CupChar7 = Cup_Key(CupChar2, 3, Seed3);
CupChar8 = Cup_Key(CupChar1 , 4, Seed4); CupChar8 = Cup_Key(CupChar1, 4, Seed4);
CupChar9 = Cup_Key(CupChar8 , 1, Seed1); CupChar9 = Cup_Key(CupChar8, 1, Seed1);
CupChar10 = Cup_Key(CupChar7 , 2, Seed2); CupChar10 = Cup_Key(CupChar7, 2, Seed2);
CupChar11 = Cup_Key(CupChar6 , 3, Seed3); CupChar11 = Cup_Key(CupChar6, 3, Seed3);
CupChar12 = Cup_Key(CupChar5 , 4, Seed4); CupChar12 = Cup_Key(CupChar5, 4, Seed4);
Sendseed4 = Cup_Key(CupChar12 , 1, Seed1); Sendseed4 = Cup_Key(CupChar12, 1, Seed1);
Sendseed3 = Cup_Key(CupChar11 , 2, Seed2); Sendseed3 = Cup_Key(CupChar11, 2, Seed2);
Sendseed2 = Cup_Key(CupChar10 , 3, Seed3); Sendseed2 = Cup_Key(CupChar10, 3, Seed3);
Sendseed1 = Cup_Key(CupChar9 , 4, Seed4); Sendseed1 = Cup_Key(CupChar9, 4, Seed4);
} }
unsigned char Cup_Key(unsigned char KLineseed, unsigned char Num, unsigned char Seed) unsigned char Cup_Key(unsigned char KLineseed, unsigned char Num, unsigned char Seed)
...@@ -1400,10 +1396,10 @@ unsigned char Cup_Key(unsigned char KLineseed, unsigned char Num, unsigned char ...@@ -1400,10 +1396,10 @@ unsigned char Cup_Key(unsigned char KLineseed, unsigned char Num, unsigned char
unsigned char CupCharL = 0; unsigned char CupCharL = 0;
unsigned char CupCharR = 0; unsigned char CupCharR = 0;
CupCharL = KLineseed ; CupCharL = KLineseed;
CupCharR = KLineseed ; CupCharR = KLineseed;
CupCharL = (CupCharL << Num) ; CupCharL = (CupCharL << Num);
CupCharR = (CupCharR >> (8 - Num)); CupCharR = (CupCharR >> (8 - Num));
CupCharL = (CupCharL | CupCharR); CupCharL = (CupCharL | CupCharR);
...@@ -1416,12 +1412,12 @@ unsigned char Cup_Key(unsigned char KLineseed, unsigned char Num, unsigned char ...@@ -1416,12 +1412,12 @@ unsigned char Cup_Key(unsigned char KLineseed, unsigned char Num, unsigned char
return CupCharL; return CupCharL;
} }
unsigned char BitReplace (unsigned char Data) unsigned char BitReplace(unsigned char Data)
{ {
unsigned char i = 0; unsigned char i = 0;
unsigned char temp = 0; unsigned char temp = 0;
for (i = 0; i < 8; i ++) for (i = 0; i < 8; i++)
{ {
temp = temp << 1; temp = temp << 1;
temp |= (Data >> i) & 0x01; temp |= (Data >> i) & 0x01;
......
...@@ -125,28 +125,28 @@ extern unsigned char kwp_ClearDiagnosticInformation(unsigned char *TxData, unsig ...@@ -125,28 +125,28 @@ extern unsigned char kwp_ClearDiagnosticInformation(unsigned char *TxData, unsig
typedef union typedef union
{ {
unsigned char SendSeedEQUSRecvSeed; //密钥配对成功标识 0 失败,1 成功 unsigned char SendSeedEQUSRecvSeed; /*密钥配对成功标识 0-失败 1-成功*/
unsigned char RecvStart ; //通讯开始表示位 0 结束,1 开始 unsigned char RecvStart ; /*通讯开始标识 0-结束 1-开始*/
unsigned char S_Regist ; //是否注册标识 unsigned char S_Regist ; /*是否注册标识*/
unsigned char AccessMode2701 ; //27服务进入计时标志 unsigned char AccessMode2701 ; /*27服务进入计时标志*/
} _K_LINE_SIGNAL_FLAG; } _K_LINE_SIGNAL_FLAG;
extern _K_LINE_SIGNAL_FLAG K_LINE_SIGNAL_FLAG; extern _K_LINE_SIGNAL_FLAG K_LINE_SIGNAL_FLAG;
typedef union typedef union
{ {
unsigned char ActiveSecurityAccess ; /*修正值状态 0-未实施 1-实施后*/ unsigned char ActiveSecurityAccess ; /*修正值状态 0-未实施 1-实施后*/
unsigned char SensorStatus ; /*传感器输入状态 0-LOW 1-HIGH*/ unsigned char SensorStatus ; /*传感器输入状态 0-LOW 1-HIGH*/
unsigned char Security_Active ; /*锁定状态 0-未锁定 1-锁定*/ unsigned char Security_Active ; /*锁定状态 0-未锁定 1-锁定*/
unsigned char reserve ; unsigned char reserve ;
} _ECUStatus; } _ECUStatus;
extern _ECUStatus ECUStatusONE; extern _ECUStatus ECUStatusONE;
#define ECUSTATUST_F 00 /*修正系数 EOL系数*2048*/ #define ECUSTATUST_F 00 /*修正系数 EOL系数*2048*/
/****************************************************************************** /******************************************************************************
5.2.5. ECU ID_ECU件号写入(SID=$3B LID=$91) 5.2.5. ECU ID_ECU件号写入(SID=$3B LID=$91)
******************************************************************************/ ******************************************************************************/
typedef union typedef union
{ {
...@@ -166,21 +166,21 @@ typedef union ...@@ -166,21 +166,21 @@ typedef union
unsigned char ECUStatus3; //13 unsigned char ECUStatus3; //13
unsigned char ECUStatus4; //14 unsigned char ECUStatus4; //14
unsigned char ECUStatus5; //15 unsigned char ECUStatus5; //15
unsigned char METERCOUNT; //16 修正率次数 unsigned char METERCOUNT; //16 修正率次数
unsigned char NoOfDTCFF00; //17 unsigned char NoOfDTCFF00; //17
unsigned char NoOfDTC8000; //18 unsigned char NoOfDTC8000; //18
unsigned char TesterECU; //19 车速修正码 unsigned char TesterECU; //19 车速修正码
unsigned char TesterECUCAN; //20 CAN发送用修正码 unsigned char TesterECUCAN; //20 CAN发送用修正码
} _NVMNODIGIT; } _NVMNODIGIT;
extern _NVMNODIGIT NVMNODIGIT; extern _NVMNODIGIT NVMNODIGIT;
extern unsigned char Sendseed1; //仪表计算的 extern unsigned char Sendseed1; /*仪表计算*/
extern unsigned char Sendseed2; extern unsigned char Sendseed2;
extern unsigned char Sendseed3; extern unsigned char Sendseed3;
extern unsigned char Sendseed4; extern unsigned char Sendseed4;
extern unsigned char Recvseed1; //仪表接收的 extern unsigned char Recvseed1; /*仪表接收*/
extern unsigned char Recvseed2; extern unsigned char Recvseed2;
extern unsigned char Recvseed3; extern unsigned char Recvseed3;
extern unsigned char Recvseed4; extern unsigned char Recvseed4;
......
...@@ -14,10 +14,10 @@ ...@@ -14,10 +14,10 @@
********************************************************************* *********************************************************************
*/ */
/* Possible initialization formats */ /* Possible initialization formats */
#define KWP2000_FORMAT_NOADDRESS 0 /* 00 */ #define KWP2000_FORMAT_NOADDRESS 0u /* 00 */
#define KWP2000_FORMAT_CARB 1 /* 01 Exception mode */ #define KWP2000_FORMAT_CARB 1u /* 01 Exception mode */
#define KWP2000_FORMAT_PHYSICALADDRESSING 2 /* 10 */ #define KWP2000_FORMAT_PHYSICALADDRESSING 2u /* 10 */
#define KWP2000_FORMAT_FUNCTIONALADDRESSING 3 /* 11 */ #define KWP2000_FORMAT_FUNCTIONALADDRESSING 3u /* 11 */
#define KWP2000_WUP_TI_IDLE_DU 5ul /* idle time of RX pins [us] */ #define KWP2000_WUP_TI_IDLE_DU 5ul /* idle time of RX pins [us] */
...@@ -51,7 +51,6 @@ typedef struct ...@@ -51,7 +51,6 @@ typedef struct
unsigned long tiCom_u32; unsigned long tiCom_u32;
} Kwp2000_ScanWup_t; } Kwp2000_ScanWup_t;
/* /*
********************************************************************* *********************************************************************
* variable * variable
...@@ -64,7 +63,6 @@ unsigned char kwp2000_CARB_TgtRequest; ...@@ -64,7 +63,6 @@ unsigned char kwp2000_CARB_TgtRequest;
unsigned char kwp2000_CARB_TgtResponse; unsigned char kwp2000_CARB_TgtResponse;
unsigned char kwp2000_CARB_Fmt; unsigned char kwp2000_CARB_Fmt;
unsigned long Kwp2000_TimeCounter; unsigned long Kwp2000_TimeCounter;
unsigned long Kwp2000_P2_TimeCounter; unsigned long Kwp2000_P2_TimeCounter;
unsigned long Kwp2000_ComMode; unsigned long Kwp2000_ComMode;
...@@ -72,21 +70,17 @@ Kwp2000_ScanWup_t Kwp2000_ScanWup; ...@@ -72,21 +70,17 @@ Kwp2000_ScanWup_t Kwp2000_ScanWup;
Kwp2000_Modify_t Kwp2000_Modify; Kwp2000_Modify_t Kwp2000_Modify;
Kwp2000_ComState_t Kwp2000_ComState; Kwp2000_ComState_t Kwp2000_ComState;
/* /*
********************************************************************* *********************************************************************
* function * function
********************************************************************* *********************************************************************
*/ */
void Kwp2000_ProtocolInit(void);
void Kwp2000_ProtocolInit( void );
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function Name : Kwp2000_Init * Function Name : Kwp2000_Init
* Description : Kwp2000始化 * Description : Kwp2000初始化
* Input : * Input :
* Output : None * Output : None
* Return : None * Return : None
...@@ -94,29 +88,19 @@ void Kwp2000_ProtocolInit( void ); ...@@ -94,29 +88,19 @@ void Kwp2000_ProtocolInit( void );
--------------------------------------------------------------------------*/ --------------------------------------------------------------------------*/
void Kwp2000_Init(void) void Kwp2000_Init(void)
{ {
unsigned char PartID[2];
/*
PartID[ 0 ] = *((unsigned char *)0x001A);
PartID[ 1 ] = *((unsigned char *)0x001B);
if((PartID[ 0 ] != 0xE0) || (PartID[ 1 ] != 0x10))
{
return;
}
*/
Kwp2000_AscInit(); Kwp2000_AscInit();
Kwp2000_ProtocolInit(); Kwp2000_ProtocolInit();
} }
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function Name : Kwp2000_ProtocolInit * Function Name : Kwp2000_ProtocolInit
* Description : KWP2000协议初始化 * Description : KWP2000协议初始化
* Input : * Input :
* Output : None * Output : None
* Return : None * Return : None
* onther : * onther :
--------------------------------------------------------------------------*/ --------------------------------------------------------------------------*/
void Kwp2000_ProtocolInit( void ) void Kwp2000_ProtocolInit(void)
{ {
/* Initial time base */ /* Initial time base */
Kwp2000_TimeCounter = 0; Kwp2000_TimeCounter = 0;
...@@ -133,7 +117,6 @@ void Kwp2000_ProtocolInit( void ) ...@@ -133,7 +117,6 @@ void Kwp2000_ProtocolInit( void )
/*Set RX as GPIO-IN*/ /*Set RX as GPIO-IN*/
Uart_SetRxGpio(); Uart_SetRxGpio();
Kwp2000_Modify.typeOfModif = KWP2000_MODIFY_NULL; Kwp2000_Modify.typeOfModif = KWP2000_MODIFY_NULL;
Kwp2000_ComState.Rx_len = 0; Kwp2000_ComState.Rx_len = 0;
...@@ -170,7 +153,6 @@ void Kwp2000_Timeout(void) ...@@ -170,7 +153,6 @@ void Kwp2000_Timeout(void)
if ((tiSample_u32 - Kwp2000_ComState.tiCom_u32) >= 20u) if ((tiSample_u32 - Kwp2000_ComState.tiCom_u32) >= 20u)
{ {
Kwp2000_ProtocolInit(); Kwp2000_ProtocolInit();
} }
} }
else else
...@@ -194,13 +176,13 @@ void Kwp2000_Timeout(void) ...@@ -194,13 +176,13 @@ void Kwp2000_Timeout(void)
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function Name : Kwp2000_CommuniationDown * Function Name : Kwp2000_CommuniationDown
* Description : 通讯底层与协议层初始化 * Description : Í通讯底层与协议层初始化
* Input : * Input :
* Output : None * Output : None
* Return : None * Return : None
* onther : * onther :
--------------------------------------------------------------------------*/ --------------------------------------------------------------------------*/
void Kwp2000_CommuniationDown( void ) void Kwp2000_CommuniationDown(void)
{ {
Kwp2000_AscInit(); Kwp2000_AscInit();
Kwp2000_ProtocolInit(); Kwp2000_ProtocolInit();
...@@ -252,7 +234,7 @@ unsigned char Kwp2000_ChecksumCalculate(unsigned char *dataBuffer, unsigned shor ...@@ -252,7 +234,7 @@ unsigned char Kwp2000_ChecksumCalculate(unsigned char *dataBuffer, unsigned shor
/* Resets the sum */ /* Resets the sum */
sum = 0; sum = 0;
for (i = 0 ; i < numberOfBytes ; i++) for (i = 0; i < numberOfBytes; i++)
{ {
/* add each byte to the sum */ /* add each byte to the sum */
sum += dataBuffer[i]; sum += dataBuffer[i];
...@@ -291,20 +273,20 @@ unsigned char Kwp2000_PrepareHeader(unsigned char dataSize) ...@@ -291,20 +273,20 @@ unsigned char Kwp2000_PrepareHeader(unsigned char dataSize)
/* Test the format used */ /* Test the format used */
switch (Kwp2000_ComState.Format) switch (Kwp2000_ComState.Format)
{ {
case KWP2000_FORMAT_NOADDRESS : case KWP2000_FORMAT_NOADDRESS:
/* if no address then nothing to be added to the header */ /* if no address then nothing to be added to the header */
break; break;
case KWP2000_FORMAT_CARB : case KWP2000_FORMAT_CARB:
// /* CARB mode */ // /* CARB mode */
// fmt = kwp2000_CARB_Fmt; // fmt = kwp2000_CARB_Fmt;
// asc0_CommunicationBuf.b[4-(headerSize++)]= kwp2000_CARB_Address; // asc0_CommunicationBuf.b[4-(headerSize++)]= kwp2000_CARB_Address;
// asc0_CommunicationBuf.b[4-(headerSize++)]= kwp2000_CARB_TgtResponse; // asc0_CommunicationBuf.b[4-(headerSize++)]= kwp2000_CARB_TgtResponse;
break; break;
case KWP2000_FORMAT_FUNCTIONALADDRESSING : case KWP2000_FORMAT_FUNCTIONALADDRESSING:
case KWP2000_FORMAT_PHYSICALADDRESSING : case KWP2000_FORMAT_PHYSICALADDRESSING:
/* Physical addressing */ /* Physical addressing */
Kwp2000_ComState.TxBuffer[4 - (headerSize++)] = kwp2000_PhysicalAddress; Kwp2000_ComState.TxBuffer[4 - (headerSize++)] = kwp2000_PhysicalAddress;
Kwp2000_ComState.TxBuffer[4 - (headerSize++)] = Kwp2000_ComState.SrcAddr; //kwp2000_ServerAddress; Kwp2000_ComState.TxBuffer[4 - (headerSize++)] = Kwp2000_ComState.SrcAddr; // kwp2000_ServerAddress;
break; break;
} }
Kwp2000_ComState.TxBuffer[4 - headerSize] = fmt; Kwp2000_ComState.TxBuffer[4 - headerSize] = fmt;
...@@ -327,19 +309,19 @@ void Kwp2000_HeaderAnalyse(void) ...@@ -327,19 +309,19 @@ void Kwp2000_HeaderAnalyse(void)
/* Tests the header size */ /* Tests the header size */
switch (Kwp2000_ComState.headerSize) switch (Kwp2000_ComState.headerSize)
{ {
case 1 : case 1:
/* 1 byte -> FMT */ /* 1 byte -> FMT */
break; break;
case 2 : case 2:
/* 2 bytes -> FMT LEN */ /* 2 bytes -> FMT LEN */
Kwp2000_ComState.kwp2000_Len = Kwp2000_ComState.RxBuffer[1]; Kwp2000_ComState.kwp2000_Len = Kwp2000_ComState.RxBuffer[1];
break; break;
case 3 : case 3:
/* 3 bytes -> FMT TGT SRC */ /* 3 bytes -> FMT TGT SRC */
Kwp2000_ComState.TgtAddr = Kwp2000_ComState.RxBuffer[1]; Kwp2000_ComState.TgtAddr = Kwp2000_ComState.RxBuffer[1];
Kwp2000_ComState.SrcAddr = Kwp2000_ComState.RxBuffer[2]; Kwp2000_ComState.SrcAddr = Kwp2000_ComState.RxBuffer[2];
break; break;
case 4 : case 4:
/* 4 bytes -> FMT TGT SRC LEN */ /* 4 bytes -> FMT TGT SRC LEN */
Kwp2000_ComState.TgtAddr = Kwp2000_ComState.RxBuffer[1]; Kwp2000_ComState.TgtAddr = Kwp2000_ComState.RxBuffer[1];
Kwp2000_ComState.SrcAddr = Kwp2000_ComState.RxBuffer[2]; Kwp2000_ComState.SrcAddr = Kwp2000_ComState.RxBuffer[2];
...@@ -350,7 +332,7 @@ void Kwp2000_HeaderAnalyse(void) ...@@ -350,7 +332,7 @@ void Kwp2000_HeaderAnalyse(void)
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function Name : Kwp2000_FormatAnalyse * Function Name : Kwp2000_FormatAnalyse
* Description : 据帧解析 * Description : ����֡����
* Input : * Input :
* Output : None * Output : None
* Return : None * Return : None
...@@ -369,14 +351,14 @@ unsigned char Kwp2000_FormatAnalyse(void) ...@@ -369,14 +351,14 @@ unsigned char Kwp2000_FormatAnalyse(void)
/* Tests the format */ /* Tests the format */
switch (Kwp2000_ComState.Format) switch (Kwp2000_ComState.Format)
{ {
case KWP2000_FORMAT_NOADDRESS : case KWP2000_FORMAT_NOADDRESS:
/* There is no address */ /* There is no address */
break; break;
case KWP2000_FORMAT_CARB : case KWP2000_FORMAT_CARB:
/* There are source and target addresses */ /* There are source and target addresses */
Kwp2000_ComState.kwp2000_Len = 0; Kwp2000_ComState.kwp2000_Len = 0;
case KWP2000_FORMAT_PHYSICALADDRESSING : case KWP2000_FORMAT_PHYSICALADDRESSING:
case KWP2000_FORMAT_FUNCTIONALADDRESSING : case KWP2000_FORMAT_FUNCTIONALADDRESSING:
/* There are source and target addresses */ /* There are source and target addresses */
headerSize += 2; headerSize += 2;
break; break;
...@@ -389,10 +371,9 @@ unsigned char Kwp2000_FormatAnalyse(void) ...@@ -389,10 +371,9 @@ unsigned char Kwp2000_FormatAnalyse(void)
} }
else else
{ {
} }
/* Sets the pointer at the beginning of the datas */ /* Sets the pointer at the beginning of the datas */
Kwp2000_ComState.Request_Datas = (unsigned char *) & (Kwp2000_ComState.RxBuffer[ headerSize ]); Kwp2000_ComState.Request_Datas = (unsigned char *) & (Kwp2000_ComState.RxBuffer[headerSize]);
return (headerSize); return (headerSize);
} }
...@@ -420,7 +401,7 @@ unsigned char kwp2000_AddressTest(void) ...@@ -420,7 +401,7 @@ unsigned char kwp2000_AddressTest(void)
{ {
switch (Kwp2000_ComState.Format) switch (Kwp2000_ComState.Format)
{ {
case KWP2000_FORMAT_CARB : case KWP2000_FORMAT_CARB:
/* CARB addressing mode */ /* CARB addressing mode */
if (Kwp2000_ComState.TgtAddr == kwp2000_CARB_TgtRequest) if (Kwp2000_ComState.TgtAddr == kwp2000_CARB_TgtRequest)
{ {
...@@ -433,7 +414,7 @@ unsigned char kwp2000_AddressTest(void) ...@@ -433,7 +414,7 @@ unsigned char kwp2000_AddressTest(void)
answer = 0; answer = 0;
} }
break; break;
case KWP2000_FORMAT_PHYSICALADDRESSING : case KWP2000_FORMAT_PHYSICALADDRESSING:
/* Physical addressing mode */ /* Physical addressing mode */
if (Kwp2000_ComState.TgtAddr == kwp2000_PhysicalAddress) if (Kwp2000_ComState.TgtAddr == kwp2000_PhysicalAddress)
{ {
...@@ -446,7 +427,7 @@ unsigned char kwp2000_AddressTest(void) ...@@ -446,7 +427,7 @@ unsigned char kwp2000_AddressTest(void)
answer = 0; answer = 0;
} }
break; break;
case KWP2000_FORMAT_FUNCTIONALADDRESSING : case KWP2000_FORMAT_FUNCTIONALADDRESSING:
/* Functional addressing mode */ /* Functional addressing mode */
if ((Kwp2000_ComState.TgtAddr == kwp2000_FunctionalAddress) || (Kwp2000_ComState.TgtAddr == kwp2000_PhysicalAddress)) if ((Kwp2000_ComState.TgtAddr == kwp2000_FunctionalAddress) || (Kwp2000_ComState.TgtAddr == kwp2000_PhysicalAddress))
{ {
...@@ -469,7 +450,7 @@ unsigned char kwp2000_AddressTest(void) ...@@ -469,7 +450,7 @@ unsigned char kwp2000_AddressTest(void)
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function Name : Kwp2000_ComInit_Handle * Function Name : Kwp2000_ComInit_Handle
* Description : 量 Twup * Description : 测量Twup
* Input : * Input :
* Output : None * Output : None
* Return : None * Return : None
...@@ -508,7 +489,6 @@ void Kwp2000_ComInit_Handle(void) ...@@ -508,7 +489,6 @@ void Kwp2000_ComInit_Handle(void)
Kwp2000_ScanWup.xScanState_u32 = KWP2000_WUP_SCANLO_E; Kwp2000_ScanWup.xScanState_u32 = KWP2000_WUP_SCANLO_E;
Kwp2000_ScanWup.tiStartSample_u32 = Kwp2000_TimeCounter; Kwp2000_ScanWup.tiStartSample_u32 = Kwp2000_TimeCounter;
} }
} }
// measure low level time on RX-pin, if level changes to high during the first 25ms // measure low level time on RX-pin, if level changes to high during the first 25ms
// abort measurement // abort measurement
...@@ -516,8 +496,7 @@ void Kwp2000_ComInit_Handle(void) ...@@ -516,8 +496,7 @@ void Kwp2000_ComInit_Handle(void)
{ {
if (RxPortState != 0) if (RxPortState != 0)
{ {
if (((Kwp2000_TimeCounter - Kwp2000_ScanWup.tiStartSample_u32) >= KWP2000_WUP_TI_MIN_DU) if (((Kwp2000_TimeCounter - Kwp2000_ScanWup.tiStartSample_u32) >= KWP2000_WUP_TI_MIN_DU) && ((Kwp2000_TimeCounter - Kwp2000_ScanWup.tiStartSample_u32) <= KWP2000_WUP_TI_MAX_DU))
&& ((Kwp2000_TimeCounter - Kwp2000_ScanWup.tiStartSample_u32) <= KWP2000_WUP_TI_MAX_DU))
{ {
Kwp2000_ScanWup.tiStartSample_u32 = Kwp2000_TimeCounter; Kwp2000_ScanWup.tiStartSample_u32 = Kwp2000_TimeCounter;
Kwp2000_ScanWup.xScanState_u32 = KWP2000_WUP_WAIT4SCANHI_E; Kwp2000_ScanWup.xScanState_u32 = KWP2000_WUP_WAIT4SCANHI_E;
...@@ -539,7 +518,7 @@ void Kwp2000_ComInit_Handle(void) ...@@ -539,7 +518,7 @@ void Kwp2000_ComInit_Handle(void)
{ {
Kwp2000_ScanWup.xScanState_u32 = KWP2000_WUP_DETECTED_E; Kwp2000_ScanWup.xScanState_u32 = KWP2000_WUP_DETECTED_E;
Uart_SetRxGpio(); //RX Uart_SetRxGpio(); // RX
Kwp2000_AscEnableRx(); Kwp2000_AscEnableRx();
/* reset variables, which are used by the receive interrupt function */ /* reset variables, which are used by the receive interrupt function */
...@@ -569,13 +548,13 @@ void Kwp2000_ComInit_Handle(void) ...@@ -569,13 +548,13 @@ void Kwp2000_ComInit_Handle(void)
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* Function Name : Kwp2000_AscRxInterrupt * Function Name : Kwp2000_AscRxInterrupt
* Description : 串口接收中断 * Description : ���ڽ����ж�
* Input : * Input :
* Output : None * Output : None
* Return : None * Return : None
* onther : * onther :
--------------------------------------------------------------------------*/ --------------------------------------------------------------------------*/
void Kwp2000_AscRxInterrupt( void ) void Kwp2000_AscRxInterrupt(void)
{ {
unsigned short rxUartData; unsigned short rxUartData;
...@@ -593,33 +572,32 @@ void Kwp2000_AscRxInterrupt( void ) ...@@ -593,33 +572,32 @@ void Kwp2000_AscRxInterrupt( void )
if (Kwp2000_ComState.Rx_len < KWP2000_RX_BUFFER_SIZE) if (Kwp2000_ComState.Rx_len < KWP2000_RX_BUFFER_SIZE)
{ {
rxUartData = Uart_GetData(); rxUartData = Uart_GetData(); /*读取串口数据 ----20220303----*/
Kwp2000_ComState.RxBuffer[Kwp2000_ComState.Rx_len] = (unsigned char)rxUartData; Kwp2000_ComState.RxBuffer[Kwp2000_ComState.Rx_len] = (unsigned char)rxUartData;
Kwp2000_ComState.tiCom_u32 = Kwp2000_TimeCounter; Kwp2000_ComState.tiCom_u32 = Kwp2000_TimeCounter;
Kwp2000_ComState.Rx_len ++;; Kwp2000_ComState.Rx_len++;
} }
} }
else else
{ {
/* if transmit on going, do nothing */ /* if transmit on going, do nothing */
rxUartData = Uart_GetData(); rxUartData = Uart_GetData(); /* 读取串口数据----20220303----*/
if (Kwp2000_ComState.Tx_len) if (Kwp2000_ComState.Tx_len)
{ {
Kwp2000_ComState.Tx_len--; Kwp2000_ComState.Tx_len--;
} }
if (Kwp2000_ComState.Tx_len > 0) if (Kwp2000_ComState.Tx_len > 0)
{ {
if (rxUartData == (*Kwp2000_ComState.Response_Datas)) if (rxUartData == (*Kwp2000_ComState.Response_Datas))
{ {
Kwp2000_P2_TimeCounter = 0; Kwp2000_P2_TimeCounter = 0;
Kwp2000_ComState.Response_Datas++; Kwp2000_ComState.Response_Datas++;
Kwp2000_AscTx (Kwp2000_ComState.Response_Datas); Kwp2000_AscTx(Kwp2000_ComState.Response_Datas); /* 数据发送----20220303----*/
} }
else else
{ {
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#include "dr7f701441.dvf.h" #include "dr7f701441.dvf.h"
#include "UART.h" #include "UART.h"
//#include "rh850_macros.h" //#include "rh850_macros.h"
#include "GPIO.h"
#include "r_dev_api.h" #include "r_dev_api.h"
#include "kwp2000_tp.h" #include "kwp2000_tp.h"
...@@ -490,6 +491,7 @@ void Uart_ConfigOperationMode(void) ...@@ -490,6 +491,7 @@ void Uart_ConfigOperationMode(void)
unsigned char Uart_GetRxLevel(void) unsigned char Uart_GetRxLevel(void)
{ {
// return PTS_PTS0; // return PTS_PTS0;
return GPIO_OUT_PORT00_PIN03;
} }
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
...@@ -682,6 +684,7 @@ void TJA1021_Enable(unsigned char state) ...@@ -682,6 +684,7 @@ void TJA1021_Enable(unsigned char state)
// DDRR_DDRR3 = 1; // DDRR_DDRR3 = 1;
// PTR_PTR3 = state; // PTR_PTR3 = state;
GPIO_OUT_PORT16_PIN04 = state;
} }
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment