Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
V
VC66_7C
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ISUZU
VC66_7C
Commits
3763c3c0
Commit
3763c3c0
authored
Mar 04, 2022
by
hu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
debug
parent
3f892b4b
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
515 additions
and
556 deletions
+515
-556
Key_user.c
source/Application/APP/Key/Key_user.c
+1
-0
kwp2000_interface.c
source/Application/K_BUS/kwp2000_interface.c
+22
-26
kwp2000_interface.h
source/Application/K_BUS/kwp2000_interface.h
+36
-36
kwp2000_protocol.c
source/Application/K_BUS/kwp2000_protocol.c
+42
-53
kwp2000_protocol.h
source/Application/K_BUS/kwp2000_protocol.h
+1
-5
kwp2000_service.c
source/Application/K_BUS/kwp2000_service.c
+344
-348
kwp2000_service.h
source/Application/K_BUS/kwp2000_service.h
+14
-14
kwp2000_tp.c
source/Application/K_BUS/kwp2000_tp.c
+52
-74
UART.c
source/Driver/UART/UART.c
+3
-0
No files found.
source/Application/APP/Key/Key_user.c
View file @
3763c3c0
...
...
@@ -1287,6 +1287,7 @@ void Key_Operation_ODOTrip(Key_Event_en_t enKeyEvent)
}
else
if
(
bCurMenuIDX
==
_MN_DSP_Menu_Test
)
{
}
else
if
(
User_set_Num
.
Trip_Type
==
0u
)
{
...
...
source/Application/K_BUS/kwp2000_interface.c
View file @
3763c3c0
...
...
@@ -2,13 +2,13 @@
#include "kwp2000_interface.h"
#include "UART.h"
#define
BOARD_TMBCLK_HZ
32000000
#define
BOARD_TMBCLK_HZ
32000000
/* physical and functional addresses for the ECU */
unsigned
char
kwp2000_PhysicalAddress
;
unsigned
char
kwp2000_FunctionalAddress
;
unsigned
char
kwp2000_ServerAddress
;
unsigned
int
kwp2000_P3_MAX_LIMIT
;
unsigned
int
kwp2000_P3_MAX_LIMIT
;
/*-------------------------------------------------------------------------
* Function Name : Kwp2000_SetAddress
...
...
@@ -18,7 +18,7 @@ unsigned int kwp2000_P3_MAX_LIMIT;
* Return : None
* onther :
--------------------------------------------------------------------------*/
void
Kwp2000_SetAddress
(
void
)
void
Kwp2000_SetAddress
(
void
)
{
kwp2000_PhysicalAddress
=
KWP2000_ADDR_IC
;
kwp2000_FunctionalAddress
=
KWP2000_ADDR_OBD
;
...
...
@@ -33,20 +33,20 @@ void Kwp2000_SetAddress( void )
* Return : None
* onther :
--------------------------------------------------------------------------*/
void
Kwp2000_SetTiming
(
void
)
void
Kwp2000_SetTiming
(
void
)
{
kwp2000_P3_MAX_LIMIT
=
KWP2000_P3_MAX
;
}
/*-------------------------------------------------------------------------
* Function Name : Kwp2000_AscDisableRx
* Description :
禁止收
使能发
* Description :
禁止收 使能发
* Input :
* Output : None
* Return : None
* onther :
--------------------------------------------------------------------------*/
void
Kwp2000_AscDisableRx
(
void
)
void
Kwp2000_AscDisableRx
(
void
)
{
Uart_DisableRx
();
Uart_EnableTx
();
...
...
@@ -54,13 +54,13 @@ void Kwp2000_AscDisableRx( void )
/*-------------------------------------------------------------------------
* Function Name : Kwp2000_AscEnableRx
* Description :
使能接
收功能
* Description :
使能接收功能
* Input :
* Output : None
* Return : None
* onther :
--------------------------------------------------------------------------*/
void
Kwp2000_AscEnableRx
(
void
)
void
Kwp2000_AscEnableRx
(
void
)
{
/* enable receiver, clear all error flags */
Uart_ClearAllErrorFlag
();
...
...
@@ -69,13 +69,13 @@ void Kwp2000_AscEnableRx( void )
/*-------------------------------------------------------------------------
* Function Name : Kwp2000_AscTx
* Description :
发
送数据字节
* Description :
发送数据字节
* Input :
* Output : None
* Return : None
* onther :
--------------------------------------------------------------------------*/
void
Kwp2000_AscTx
(
unsigned
char
*
xBuffer_pu8
)
void
Kwp2000_AscTx
(
unsigned
char
*
xBuffer_pu8
)
{
Uart_SetData
(
*
xBuffer_pu8
);
}
...
...
@@ -88,9 +88,8 @@ void Kwp2000_AscTx( unsigned char* xBuffer_pu8 )
* Return : None
* onther :
--------------------------------------------------------------------------*/
void
Kwp2000_AscStart
(
void
)
void
Kwp2000_AscStart
(
void
)
{
}
/*-------------------------------------------------------------------------
...
...
@@ -101,27 +100,24 @@ void Kwp2000_AscStart( void )
* Return : None
* onther :
--------------------------------------------------------------------------*/
void
Kwp2000_AscStop
(
void
)
void
Kwp2000_AscStop
(
void
)
{
}
/*-------------------------------------------------------------------------
* Function Name : Kwp2000_AscInit
* Description :
串口
模块初始化
* Description :
串口模块初始化
* Input :
* Output : None
* Return : None
* 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 */
/*预留设置*/
/*预留设置*/
/* enable receiver and transmitter function*/
Uart_EnableRx
();
...
...
@@ -139,13 +135,13 @@ void Kwp2000_AscInit( void )
/// -----------------------------------------------------------------------
/// Configuration of the used ASC0 Port Pins:
/// -----------------------------------------------------------------------
Uart_SetTxGpio
();
//TX
Uart_SetRxGpio
();
//RX
Uart_SetTxGpio
();
//
TX
Uart_SetRxGpio
();
//
RX
/// -----------------------------------------------------------------------
/// Configuration of priority of SCI_A interrupt:
/// -----------------------------------------------------------------------
/*
预留
优先级设置*/
/*
预留优先级设置
*/
/* Configuration of Baudrate , as 10400bps */
Kwp2000_AscSwitchBaudrate
(
KWP2000_DEFAULT_BAUDRATE_KLINE_DU
);
...
...
@@ -158,8 +154,8 @@ void Kwp2000_AscInit( void )
/*-------------------------------------------------------------------------
* Function Name : Kwp2000_AscSwitchBaudrate
* Description :
设
置波特率
* Input : xBaudrate_u32
波
特率数值
* Description :
设置波特率
* Input : xBaudrate_u32
波特率数值
* Output : None
* Return : None
* onther :
...
...
@@ -167,7 +163,7 @@ void Kwp2000_AscInit( void )
void
Kwp2000_AscSwitchBaudrate
(
unsigned
long
xBaudrate_u32
)
{
/* if configuration is valid, ... */
if
(
xBaudrate_u32
!=
0ul
)
if
(
xBaudrate_u32
!=
0ul
)
{
Kwp2000_AscStop
();
...
...
source/Application/K_BUS/kwp2000_interface.h
View file @
3763c3c0
...
...
@@ -7,57 +7,57 @@
*********************************************************************
*/
/* Defined for ComStatus */
#define KWP2000_DEFAULT_BAUDRATE_KLINE_DU
10400ul
#define KWP2000_MID_BAUDRATE_KLINE_DU
57600ul
#define KWP2000_HIGH_BAUDRATE_KLINE_DU
249600ul
#define KWP2000_DEFAULT_BAUDRATE_KLINE_DU 10400ul
#define KWP2000_MID_BAUDRATE_KLINE_DU 57600ul
#define KWP2000_HIGH_BAUDRATE_KLINE_DU 249600ul
#define KWP2000_ADDR_IC
0x60u
#define KWP2000_ADDR_OBD
0x33u
#define KWP2000_ADDR_SERVER
0xF1u
#define KWP2000_ADDR_IC 0x60u
#define KWP2000_ADDR_OBD 0x33u
#define KWP2000_ADDR_SERVER 0xF1u
#define KWP2000_P2_MIN
0
#define KWP2000_P3_MAX
5000
#define KWP2000_P2_MIN 0
#define KWP2000_P3_MAX 5000
/*
*********************************************************************
* variable
*********************************************************************
*/
extern
unsigned
char
kwp2000_PhysicalAddress
;
extern
unsigned
char
kwp2000_FunctionalAddress
;
extern
unsigned
char
kwp2000_ServerAddress
;
extern
unsigned
int
kwp2000_P3_MAX_LIMIT
;
extern
unsigned
char
kwp2000_PhysicalAddress
;
extern
unsigned
char
kwp2000_FunctionalAddress
;
extern
unsigned
char
kwp2000_ServerAddress
;
extern
unsigned
int
kwp2000_P3_MAX_LIMIT
;
/*
*********************************************************************
* function
*********************************************************************
*/
extern
void
Kwp2000_AscInit
(
void
);
extern
void
Kwp2000_AscInit
(
void
);
extern
void
Kwp2000_AscSwitchBaudrate
(
unsigned
long
xBaudrate_u32
);
extern
unsigned
short
Uart_GetData
(
void
);
extern
unsigned
char
Uart_GetRxLevel
(
void
);
extern
void
Uart_SetData
(
unsigned
char
xBuffer_pu8
);
extern
void
Uart_DisableReceiveIsrReq
(
void
);
extern
void
Uart_EnableReceiveIsrReq
(
void
);
extern
void
Uart_ClearAllErrorFlag
(
void
);
extern
void
Uart_EnableRx
(
void
);
extern
void
Uart_DisableRx
(
void
);
extern
void
Uart_EnableTx
(
void
);
extern
void
Uart_SetRxGpio
(
void
);
extern
void
Uart_SetTxGpio
(
void
);
extern
void
Uart_SetBaudrate
(
unsigned
long
xBaudrate_u32
);
extern
void
Uart_ClearRxFullFlag
(
void
);
extern
void
Uart_DisableTxInterrupt
(
void
);
extern
void
Uart_ConfigOperationMode
(
void
);
extern
void
TJA1021_Enable
(
unsigned
char
state
);
extern
void
Kwp2000_SetTiming
(
void
);
extern
void
Kwp2000_SetAddress
(
void
);
extern
void
Kwp2000_AscTx
(
unsigned
char
*
xBuffer_pu8
);
extern
void
Kwp2000_AscEnableRx
(
void
);
extern
unsigned
short
Uart_GetData
(
void
);
extern
unsigned
char
Uart_GetRxLevel
(
void
);
extern
void
Uart_SetData
(
unsigned
char
xBuffer_pu8
);
extern
void
Uart_DisableReceiveIsrReq
(
void
);
extern
void
Uart_EnableReceiveIsrReq
(
void
);
extern
void
Uart_ClearAllErrorFlag
(
void
);
extern
void
Uart_EnableRx
(
void
);
extern
void
Uart_DisableRx
(
void
);
extern
void
Uart_EnableTx
(
void
);
extern
void
Uart_SetRxGpio
(
void
);
extern
void
Uart_SetTxGpio
(
void
);
extern
void
Uart_SetBaudrate
(
unsigned
long
xBaudrate_u32
);
extern
void
Uart_ClearRxFullFlag
(
void
);
extern
void
Uart_DisableTxInterrupt
(
void
);
extern
void
Uart_ConfigOperationMode
(
void
);
extern
void
TJA1021_Enable
(
unsigned
char
state
);
extern
void
Kwp2000_SetTiming
(
void
);
extern
void
Kwp2000_SetAddress
(
void
);
extern
void
Kwp2000_AscTx
(
unsigned
char
*
xBuffer_pu8
);
extern
void
Kwp2000_AscEnableRx
(
void
);
#endif
source/Application/K_BUS/kwp2000_protocol.c
View file @
3763c3c0
...
...
@@ -4,7 +4,6 @@
*********************************************************************
*/
#include "kwp2000_tp.h"
#include "kwp2000_service.h"
#include "kwp2000_protocol.h"
...
...
@@ -16,7 +15,6 @@
*********************************************************************
*/
typedef
unsigned
char
Kwp2000_Service_t
(
unsigned
char
*
,
unsigned
char
*
);
typedef
struct
...
...
@@ -25,14 +23,13 @@ typedef struct
Kwp2000_Service_t
*
Kwp2000_Servie
;
}
Kwp2000_ServiceTab_Entry_t
;
/*
*********************************************************************
* variable
*********************************************************************
*/
unsigned
char
Kwp2000_ComState_Flag
;
unsigned
char
Kwp2000_ComState_Flag
;
/*
*********************************************************************
...
...
@@ -40,27 +37,25 @@ unsigned char Kwp2000_ComState_Flag;
*********************************************************************
*/
void
Kwp2000_CallService
(
unsigned
char
Sid_u8
);
unsigned
char
kwp2000_CalcSeriveTabSize
(
void
);
unsigned
char
kwp2000_CalcSeriveTabSize
(
void
);
/*-----------------------------------------------------------------------------------*/
const
Kwp2000_ServiceTab_Entry_t
Kwp2000_ServiceTab
[]
=
{
{
KWP2000_ECURESET_REQUEST
,
kwp_EcuReset
},
//0x11
{
KWP2000_TESTERPRESENT_REQUEST
,
kwp_TesterPresent
},
//0x3E
{
KWP2000_STARTCOMMUNICATION_REQUEST
,
kwp_StartCommunication
},
//0x81
{
KWP2000_STOPCOMMUNICATION_REQUEST
,
kwp_StopCommunication
},
//0x82
{
KWP2000_READECUIDENTIFICATION_REQUEST
,
kwp_readEcuIdentification
},
//0x1A
{
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
,
kwp_writeDataByLocalIdentifier
},
//0x3B
{
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
,
kwp_readDataByLocalIdentifier
},
//0x21
{
KWP2000_READDATABYCOMMONIDENTIFIER_REQUEST
,
kwp_readDataByCommonIdentifier
},
//0x22
{
KWP2000_READDIAGNOSTICTROUBLECODESBYSTATUS_REQUEST
,
kwp_readDataStatusofDTC
},
//0x18
{
KWP2000_CLEARDIAGNOSTICINFORMATION_REQUEST
,
kwp_ClearDiagnosticInformation
},
//0x14
{
KWP2000_SECURITYACCESS_REQUEST
,
kwp_readDataAccessMode
},
//0x27
{
KWP2000_STARTROUTINEBYLOCALIDENTIFIER_REQUEST
,
kwp_StartroutInebykocalIdentifier
},
//0x31
{
KWP2000_ECURESET_REQUEST
,
kwp_EcuReset
},
/* 0x11 */
{
KWP2000_TESTERPRESENT_REQUEST
,
kwp_TesterPresent
},
/* 0x3E */
{
KWP2000_STARTCOMMUNICATION_REQUEST
,
kwp_StartCommunication
},
/* 0x81 */
{
KWP2000_STOPCOMMUNICATION_REQUEST
,
kwp_StopCommunication
},
/* 0x82 */
{
KWP2000_READECUIDENTIFICATION_REQUEST
,
kwp_readEcuIdentification
},
/* 0x1A */
{
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
,
kwp_writeDataByLocalIdentifier
},
/* 0x3B */
{
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
,
kwp_readDataByLocalIdentifier
},
/* 0x21 */
{
KWP2000_READDATABYCOMMONIDENTIFIER_REQUEST
,
kwp_readDataByCommonIdentifier
},
/* 0x22 */
{
KWP2000_READDIAGNOSTICTROUBLECODESBYSTATUS_REQUEST
,
kwp_readDataStatusofDTC
},
/* 0x18 */
{
KWP2000_CLEARDIAGNOSTICINFORMATION_REQUEST
,
kwp_ClearDiagnosticInformation
},
/* 0x14 */
{
KWP2000_SECURITYACCESS_REQUEST
,
kwp_readDataAccessMode
},
/* 0x27 */
{
KWP2000_STARTROUTINEBYLOCALIDENTIFIER_REQUEST
,
kwp_StartroutInebykocalIdentifier
},
/* 0x31 */
};
/*-------------------------------------------------------------------------
* Function Name : Kwp2000_CallService
* Description :
...
...
@@ -83,7 +78,7 @@ void Kwp2000_CallService(unsigned char Sid_u8)
{
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
]);
break
;
}
...
...
@@ -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
]);
}
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_Negative
.
ResponseCode
=
0
;
...
...
@@ -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
.
Tx_len
++
;
Kwp2000_ComState
.
Tx_len
++
;
}
}
...
...
@@ -121,10 +116,8 @@ void Kwp2000_Handle(void)
{
if
((
Kwp2000_ComMode
&
PROTOCOL
)
==
KWP2000
)
{
/*在FAST_INIT之后,如果在RX中断中接到数据,在转为接收模式,在FAST_INIT后加一个
超时时间,如果FAST_INIT后10ms没有接到新到来的数据就回到等待空闲模式避免来个wakeup
后仪表无法接收数据*/
/*在FAST_INIT之后,如果在RX中断中接收数据,在转为几首模式,在FAST_INIT后加一个超时时间
如果FAST_INIT后10ms没有接到新到来得数据就会回到等待空闲模式避免来个wakeup后仪表无法接收数据*/
/*
if(Kwp2000_ComMode == KWP2000_FAST_INIT)
{
...
...
@@ -133,14 +126,14 @@ void Kwp2000_Handle(void)
*/
switch
(
Kwp2000_ComMode
)
{
case
KWP2000_WAIT_RECEPTION
:
//0x22
case
KWP2000_WAIT_RECEPTION
:
/* 0x22 */
if
(
Kwp2000_ComState
.
Rx_len
>=
1
)
{
Kwp2000_ComState
.
headerSize
=
Kwp2000_FormatAnalyse
();
Kwp2000_ComMode
=
KWP2000_WAIT_HEADER
;
}
break
;
case
KWP2000_WAIT_HEADER
:
//0x23
case
KWP2000_WAIT_HEADER
:
/* 0x23 */
if
(
Kwp2000_ComState
.
Rx_len
>=
Kwp2000_ComState
.
headerSize
)
{
Kwp2000_HeaderAnalyse
();
...
...
@@ -158,8 +151,8 @@ void Kwp2000_Handle(void)
}
}
break
;
case
KWP2000_COMMUNICATION
:
//0x25
case
KWP2000_WAIT_DATAS
:
//0x24
case
KWP2000_COMMUNICATION
:
/* 0x25 */
case
KWP2000_WAIT_DATAS
:
/* 0x24 */
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
];
...
...
@@ -178,10 +171,9 @@ void Kwp2000_Handle(void)
}
else
{
}
break
;
case
KWP2000_BUILD_RESPONSE
:
//0x26
case
KWP2000_BUILD_RESPONSE
:
/* 0x26 */
if
(
!
Kwp2000_ComState
.
ResponsePending
)
{
Kwp2000_ComState
.
SId
=
*
(
Kwp2000_ComState
.
Request_Datas
);
...
...
@@ -194,27 +186,27 @@ void Kwp2000_Handle(void)
Kwp2000_ComState_Flag
++
;
if
(
Kwp2000_ComState_Flag
>
7
)
{
/*
if()
#if 0
if
()
{
SeedKey =
(unsigned long)RealTimeClock.RollingCounter;
SeedKey = SeedKey<<
16;
SeedKey |=
(unsigned long)(~RealTimeClock.RollingCounter);
Seed1 = (unsigned char)(SeedKey>>
24);
Seed2 = (unsigned char)(SeedKey>>
16);
Seed3 = (unsigned char)(SeedKey>>
8);
Seed4 = (unsigned char)(SeedKey);
App_Uds_Calc_Key(); //----计算密钥等待应答
SeedKey =
(unsigned long)RealTimeClock.RollingCounter;
SeedKey = SeedKey <<
16;
SeedKey |=
(unsigned long)(~RealTimeClock.RollingCounter);
Seed1 = (unsigned char)(SeedKey >>
24);
Seed2 = (unsigned char)(SeedKey >>
16);
Seed3 = (unsigned char)(SeedKey >>
8);
Seed4 = (unsigned char)(SeedKey);
App_Uds_Calc_Key(); /*计算密钥等待应答*/
}
*/
#endif
Kwp2000_ComState_Flag
=
0
;
Kwp2000_CallService
(
Kwp2000_ComState
.
SId
);
}
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
;
}
else
...
...
@@ -222,18 +214,16 @@ void Kwp2000_Handle(void)
Kwp2000_ComMode
=
KWP2000_WAIT_RECEPTION
;
}
break
;
case
KWP2000_SEND_RESPONSE
:
//0x27
case
KWP2000_SEND_RESPONSE
:
/* 0x27 */
/* Wait when sending response message */
if
(
Kwp2000_ComState
.
Tx_len
)
{
}
else
{
}
break
;
case
KWP2000_MODIFY_CONFIG
:
//0x28
case
KWP2000_MODIFY_CONFIG
:
/* 0x28 */
switch
(
Kwp2000_Modify
.
typeOfModif
)
{
case
KWP2000_MODIFY_NULL
:
...
...
@@ -253,10 +243,10 @@ void Kwp2000_Handle(void)
switch
(
Kwp2000_Modify
.
resetType
)
{
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
;
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
;
default:
/*do nothing */
...
...
@@ -281,7 +271,7 @@ void Kwp2000_Handle(void)
}
/*-------------------------------------------------------------------------
* Function Name : kwp
_NegativeRespons
e
* Function Name : kwp
2000_CalcSeriveTabSiz
e
* Description : kwp2000 Calculate Serive Table Size
* Input :
* Output : None
...
...
@@ -292,4 +282,3 @@ unsigned char kwp2000_CalcSeriveTabSize(void)
{
return
(
unsigned
char
)(
sizeof
(
Kwp2000_ServiceTab
)
/
sizeof
(
Kwp2000_ServiceTab_Entry_t
));
}
source/Application/K_BUS/kwp2000_protocol.h
View file @
3763c3c0
...
...
@@ -3,10 +3,6 @@
#ifndef _KWP2000_SERVICE_H
#define _KWP2000_SERVICE_H
extern
void
Kwp2000_Handle
(
void
);
extern
void
Kwp2000_Handle
(
void
);
#endif
source/Application/K_BUS/kwp2000_service.c
View file @
3763c3c0
...
...
@@ -15,38 +15,34 @@
*********************************************************************
*/
/*
*********************************************************************
* variable
*********************************************************************
*/
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
Sendseed2
;
unsigned
char
Sendseed3
;
unsigned
char
Sendseed4
;
unsigned
char
Sendseed1
;
unsigned
char
Sendseed2
;
unsigned
char
Sendseed3
;
unsigned
char
Sendseed4
;
unsigned
char
Recvseed1
;
unsigned
char
Recvseed2
;
unsigned
char
Recvseed3
;
unsigned
char
Recvseed4
;
unsigned
char
Recvseed1
;
unsigned
char
Recvseed2
;
unsigned
char
Recvseed3
;
unsigned
char
Recvseed4
;
unsigned
char
Seed1
,
Seed2
,
Seed3
,
Seed4
;
_NVMNODIGIT
NVMNODIGIT
;
_ECUStatus
ECUStatusONE
;
_NVMNODIGIT
NVMNODIGIT
;
_ECUStatus
ECUStatusONE
;
unsigned
char
DTCstatusCHGFFK_Line
;
unsigned
char
DTCstatusCHGFFK_Line
;
unsigned
char
AccessMode2701KeyTimeFlag
;
unsigned
char
AccessMode2701KeyTime
;
unsigned
char
AccessMode2701KeyTimeFlag
;
unsigned
char
AccessMode2701KeyTime
;
/*
*********************************************************************
* function
...
...
@@ -85,21 +81,21 @@ unsigned char kwp_EcuReset(unsigned char *TxData, unsigned char *RequestData)
{
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
)
=
RequestData
[
0
];
(
*
TxData
)
=
RequestData
[
0
];
Tx_Len
=
2
;
break
;
case
2
:
/* keyOffOnReset */
case
2
:
/* keyOffOnReset */
(
*
TxData
++
)
=
KWP2000_ECURESET_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
)
=
RequestData
[
0
];
(
*
TxData
)
=
RequestData
[
0
];
Tx_Len
=
2
;
break
;
case
3
:
/* softReset */
case
3
:
/* softReset */
(
*
TxData
++
)
=
KWP2000_ECURESET_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
)
=
RequestData
[
0
];
(
*
TxData
)
=
RequestData
[
0
];
Tx_Len
=
2
;
break
;
default:
/* subFunctionNotSupported */
...
...
@@ -138,8 +134,8 @@ unsigned char kwp_StartCommunication(unsigned char *TxData, unsigned char *Reque
unsigned
char
Tx_Len
=
0
;
K_LINE_SIGNAL_FLAG
.
RecvStart
=
1
;
(
*
TxData
++
)
=
KWP2000_STARTCOMMUNICATION_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
KWP2000_KEYBYTE1
;
(
*
TxData
++
)
=
KWP2000_STARTCOMMUNICATION_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
KWP2000_KEYBYTE1
;
(
*
TxData
)
=
KWP2000_KEYBYTE2
;
Tx_Len
=
3
;
...
...
@@ -152,15 +148,15 @@ unsigned char kwp_StartCommunication(unsigned char *TxData, unsigned char *Reque
* Input :
* Output : None
* Return : None
* onther : 82
服务,没有否定应答
* onther : 82
服务,没有否定应答
--------------------------------------------------------------------------*/
unsigned
char
kwp_StopCommunication
(
unsigned
char
*
TxData
,
unsigned
char
*
RequestData
)
{
unsigned
char
Tx_Len
=
0
;
if
(
K_LINE_SIGNAL_FLAG
.
RecvStart
==
1
)
{
K_LINE_SIGNAL_FLAG
.
RecvStart
=
0
;
//EOL诊断结束标识
K_LINE_SIGNAL_FLAG
.
SendSeedEQUSRecvSeed
=
0
;
/
/清空密钥配对成功标识
K_LINE_SIGNAL_FLAG
.
RecvStart
=
0
;
/*EOL诊断结束标识*/
K_LINE_SIGNAL_FLAG
.
SendSeedEQUSRecvSeed
=
0
;
/
*清空密钥配对成功标识*/
(
*
TxData
)
=
KWP2000_STOPCOMMUNICATION_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
Tx_Len
=
1
;
...
...
@@ -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
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
++
)
=
RequestData
[
0
];
(
*
TxData
++
)
=
0x03
;
//Scaling Offset
(
*
TxData
++
)
=
0x91
;
//汽车制造厂编号
(
*
TxData
++
)
=
0x6A
;
//Ascii 10 byte
(
*
TxData
++
)
=
RequestData
[
0
];
(
*
TxData
++
)
=
0x03
;
/* Scaling Offset*/
(
*
TxData
++
)
=
0x91
;
/* 汽车制造厂编号*/
(
*
TxData
++
)
=
0x6A
;
/* Ascii 10 byte*/
(
*
TxData
++
)
=
0xFF
;
Tx_Len
=
6
;
break
;
case
0x91
:
/* vehicleManufacturerECUHardwareNumber */
(
*
TxData
++
)
=
KWP2000_READECUIDENTIFICATION_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
RequestData
[
0
];
//
ISUZU Parts No. 8979683010
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit1
;
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit2
;
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit3
;
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit4
;
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit5
;
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit6
;
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit7
;
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit8
;
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit9
;
(
*
TxData
++
)
=
RequestData
[
0
];
//
ISUZU Parts No. 8979683010
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit1
;
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit2
;
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit3
;
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit4
;
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit5
;
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit6
;
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit7
;
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit8
;
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit9
;
(
*
TxData
++
)
=
NVMNODIGIT
.
No_Digit10
;
Tx_Len
=
12
;
break
;
...
...
@@ -228,425 +224,425 @@ unsigned char kwp_writeDataByLocalIdentifier(unsigned char *TxData, unsigned cha
{
unsigned
char
Tx_Len
=
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
)
{
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
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x20
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
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
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x21
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x22
:
/* EVSC 0:无、1:有
*/
case
0x22
:
/* EVSC 0:无、1:有
*/
K_Line_Set
.
K_Line_LID22
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x22
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x23
:
/* 驻车锁定 0:无、1:有
*/
case
0x23
:
/* 驻车锁定 0:无、1:有*/
K_Line_Set
.
K_Line_LID23
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x23
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x24
:
/* HSA */
case
0x24
:
/* HSA */
K_Line_Set
.
K_Line_LID24
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x24
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x25
:
/* AEBS */
case
0x25
:
/* AEBS */
K_Line_Set
.
K_Line_LID25
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x25
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x26
:
/* ACC */
case
0x26
:
/* ACC */
K_Line_Set
.
K_Line_LID26
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x26
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x27
:
/* LDWS */
case
0x27
:
/* LDWS */
K_Line_Set
.
K_Line_LID27
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x27
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x28
:
/* 车辆间报警
*/
case
0x28
:
/* 车辆间报警 *
/
K_Line_Set
.
K_Line_LID28
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x28
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x29
:
/* 有无巡航
*/
case
0x29
:
/* 有无巡航 *
/
K_Line_Set
.
K_Line_LID29
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x29
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x2A
:
/* 气悬
*/
case
0x2A
:
/* 气悬
*/
K_Line_Set
.
K_Line_LID2A
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x2A
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x2B
:
/* ISS */
case
0x2B
:
/* ISS */
K_Line_Set
.
K_Line_LID2B
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x2B
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x2C
:
/* 装货台工作警报蜂鸣器
*/
case
0x2C
:
/* 装货台工作警报蜂鸣器 */
K_Line_Set
.
K_Line_LID2C
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x2C
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x2D
:
/* ROWS */
case
0x2D
:
/* ROWS */
K_Line_Set
.
K_Line_LID2D
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x2D
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x2E
:
/* 行车记录仪
*/
case
0x2E
:
/* 行车记录仪*/
K_Line_Set
.
K_Line_LID2E
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x2E
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x2F
:
/* 车型
*/
case
0x2F
:
/* 车型
*/
K_Line_Set
.
K_Line_LID2F
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x2F
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x30
:
/* 缓速器
*/
case
0x30
:
/* 缓速器
*/
K_Line_Set
.
K_Line_LID30
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x30
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x31
:
/* 地图巡航
*/
case
0x31
:
/* 地图巡航 *
/
K_Line_Set
.
K_Line_LID31
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x31
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x32
:
/* 装货台种类
*/
case
0x32
:
/* 装货台种类 *
/
K_Line_Set
.
K_Line_LID32
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x32
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x33
:
/* SCR?DPD */
case
0x33
:
/* SCR?DPD */
K_Line_Set
.
K_Line_LID33
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x33
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x34
:
/* 驻车种类
*/
case
0x34
:
/* 驻车种类 *
/
K_Line_Set
.
K_Line_LID34
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x34
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x35
:
/* 气压计
*/
case
0x35
:
/* 气压计
*/
K_Line_Set
.
K_Line_LID35
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x35
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x36
:
/* 低压警报压
*/
case
0x36
:
/* 低气压报警 *
/
K_Line_Set
.
K_Line_LID36
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x36
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x37
:
/* 超限警报
*/
case
0x37
:
/* 超限警报 *
/
K_Line_Set
.
K_Line_LID37
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x37
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x38
:
/* 速度警报
*/
case
0x38
:
/* 速度警报 *
/
K_Line_Set
.
K_Line_LID38
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x38
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x39
:
/* 可变
SLD */
case
0x39
:
/* 可变S
LD */
K_Line_Set
.
K_Line_LID39
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x39
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x3A
:
/* OEM */
case
0x3A
:
/* OEM */
K_Line_Set
.
K_Line_LID3A
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x3A
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x3B
:
/* 预留
*/
case
0x3B
:
/*预留
*/
K_Line_Set
.
K_Line_LID3B
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x3B
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x3C
:
/* 预留
*/
case
0x3C
:
/* 预留
*/
K_Line_Set
.
K_Line_LID3C
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x3C
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x3D
:
/* 预留
*/
case
0x3D
:
/* 预留
*/
K_Line_Set
.
K_Line_LID3D
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x3D
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x3E
:
/* 预留
*/
case
0x3E
:
/* 预留
*/
K_Line_Set
.
K_Line_LID3E
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x3E
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x3F
:
/* 预留
*/
case
0x3F
:
/* 预留
*/
K_Line_Set
.
K_Line_LID3F
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x3F
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x40
:
/* 发动机种类名称
*/
case
0x40
:
/* 发动机种类名称 */
K_Line_Set
.
K_Line_LID40
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x40
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x41
:
/* 变速器种类&控制
*/
case
0x41
:
/* 变速器种类&控制 */
K_Line_Set
.
K_Line_LID41
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x41
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x42
:
/* 驻车管道
*/
case
0x42
:
/* 驻车管道 *
/
K_Line_Set
.
K_Line_LID42
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x42
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x43
:
/* 车型
*/
case
0x43
:
/* 车型
*/
K_Line_Set
.
K_Line_LID43
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x43
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x44
:
/* 速度警报
*/
case
0x44
:
/* 速度警报 *
/
K_Line_Set
.
K_Line_LID44
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x44
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x45
:
/* 发动机转速
*/
case
0x45
:
/* 发动机转速 *
/
K_Line_Set
.
K_Line_LID45
=
RequestData
[
2
];
User_App
.
User_Speed
=
K_Line_Set
.
K_Line_LID45
;
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x45
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x46
:
/* 急加速
*/
case
0x46
:
/* 急加速
*/
K_Line_Set
.
K_Line_LID46
=
RequestData
[
2
];
User_App
.
User_JADD
=
K_Line_Set
.
K_Line_LID46
;
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x46
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x47
:
/* 急减速
*/
case
0x47
:
/* 急减速
*/
K_Line_Set
.
K_Line_LID47
=
RequestData
[
2
];
User_App
.
User_JSUB
=
K_Line_Set
.
K_Line_LID47
;
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x47
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x48
:
/* 长时间怠速
*/
case
0x48
:
/* 长时间怠速
*/
K_Line_Set
.
K_Line_LID48
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x48
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x49
:
/* 辅助驻车
*/
case
0x49
:
/* 辅助驻车 *
/
K_Line_Set
.
K_Line_LID49
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x49
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x4A
:
/* 变速箱油
*/
case
0x4A
:
/* 变速箱油
*/
K_Line_Set
.
K_Line_LID4A
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x4A
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x4B
:
/* 差速器油
*/
case
0x4B
:
/* 差速器油
*/
K_Line_Set
.
K_Line_LID4B
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x4B
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x4C
:
/* 离合器油
*/
case
0x4C
:
/* 离合器油 *
/
K_Line_Set
.
K_Line_LID4C
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x4C
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x4D
:
/* 动力转向油
*/
case
0x4D
:
/* 动力转向油 *
/
K_Line_Set
.
K_Line_LID4D
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x4D
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x4E
:
/* 轮胎
*/
case
0x4E
:
/* 轮胎
*/
K_Line_Set
.
K_Line_LID4E
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x4E
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x4F
:
/* 机油&滤清器
*/
case
0x4F
:
/* 机油&滤清器 *
/
K_Line_Set
.
K_Line_LID4F
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x4F
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x50
:
/* 预留
*/
case
0x50
:
/* 预留
*/
K_Line_Set
.
K_Line_LID50
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x50
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x51
:
/* 工作模式
*/
case
0x51
:
/* 工作模式 *
/
K_Line_Set
.
K_Line_LID51
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x51
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x52
:
/* 电子部件设定
*/
case
0x52
:
/* 电子部件设定 */
K_Line_Set
.
K_Line_LID52
=
RequestData
[
2
];
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x52
;
Tx_Len
=
2
;
DTCstatusCHGFFK_Line
=
1
;
DTCstatusCHGFFK_Line
=
1
;
break
;
case
0x91
:
/* */
NVMNODIGIT
.
No_Digit1
=
RequestData
[
1
];
NVMNODIGIT
.
No_Digit2
=
RequestData
[
2
];
NVMNODIGIT
.
No_Digit3
=
RequestData
[
3
];
NVMNODIGIT
.
No_Digit4
=
RequestData
[
4
];
NVMNODIGIT
.
No_Digit5
=
RequestData
[
5
];
NVMNODIGIT
.
No_Digit6
=
RequestData
[
6
];
NVMNODIGIT
.
No_Digit7
=
RequestData
[
7
];
NVMNODIGIT
.
No_Digit8
=
RequestData
[
8
];
NVMNODIGIT
.
No_Digit9
=
RequestData
[
9
];
case
0x91
:
/* */
NVMNODIGIT
.
No_Digit1
=
RequestData
[
1
];
NVMNODIGIT
.
No_Digit2
=
RequestData
[
2
];
NVMNODIGIT
.
No_Digit3
=
RequestData
[
3
];
NVMNODIGIT
.
No_Digit4
=
RequestData
[
4
];
NVMNODIGIT
.
No_Digit5
=
RequestData
[
5
];
NVMNODIGIT
.
No_Digit6
=
RequestData
[
6
];
NVMNODIGIT
.
No_Digit7
=
RequestData
[
7
];
NVMNODIGIT
.
No_Digit8
=
RequestData
[
8
];
NVMNODIGIT
.
No_Digit9
=
RequestData
[
9
];
NVMNODIGIT
.
No_Digit10
=
RequestData
[
10
];
/*
写E
EP*/
//
NVM_Data_Update(NVM_NO_DIGIT); //----ECU ID_ECU件号
eep
/*
写E
EP*/
//
NVM_Data_Update(NVM_NO_DIGIT); //----ECU ID_ECU件号 e
ep
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
RequestData
[
0
];
Tx_Len
=
2
;
break
;
case
0xA0
:
/* */
case
0xA0
:
/* */
NVMNODIGIT
.
TesterECU
=
RequestData
[
2
];
if
(
NVMNODIGIT
.
METERCOUNT
<
0xFF
)
{
NVMNODIGIT
.
METERCOUNT
++
;
/*修正率次数增加
*/
/*
写E
EP*/
//NVM_Data_Update(NVM_NO_DIGIT);
NVMNODIGIT
.
METERCOUNT
++
;
/*修正率次数增加*/
/*
写E
EP*/
//
NVM_Data_Update(NVM_NO_DIGIT);
}
else
{
NVMNODIGIT
.
METERCOUNT
=
0xFF
;
/*
修正率次数增加
*/
/*
写E
EP*/
//NVM_Data_Update(NVM_NO_DIGIT);
NVMNODIGIT
.
METERCOUNT
=
0xFF
;
/*
修正率次数增加*/
/*
写E
EP*/
//
NVM_Data_Update(NVM_NO_DIGIT);
}
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0xA0
;
Tx_Len
=
2
;
break
;
case
0xA3
:
/* */
case
0xA3
:
/* */
NVMNODIGIT
.
TesterECUCAN
=
RequestData
[
2
];
if
(
NVMNODIGIT
.
METERCOUNT
<
0xFF
)
{
NVMNODIGIT
.
METERCOUNT
++
;
/*修正率次数增加
*/
/*
写E
EP*/
//NVM_Data_Update(NVM_NO_DIGIT);
NVMNODIGIT
.
METERCOUNT
++
;
/*修正率次数增加*/
/*
写E
EP*/
//
NVM_Data_Update(NVM_NO_DIGIT);
}
else
{
NVMNODIGIT
.
METERCOUNT
=
0xFF
;
/*
修正率次数增加
*/
/*
写E
EP*/
//NVM_Data_Update(NVM_NO_DIGIT);
NVMNODIGIT
.
METERCOUNT
=
0xFF
;
/*
修正率次数增加*/
/*
写E
EP*/
//
NVM_Data_Update(NVM_NO_DIGIT);
}
(
*
TxData
++
)
=
KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
...
...
@@ -661,7 +657,7 @@ unsigned char kwp_writeDataByLocalIdentifier(unsigned char *TxData, unsigned cha
}
else
{
//if ((NVMUserSettings.KLINE == 1u) && (K_LINE_SIGNAL_FLAG.SendSeedEQUSRecvSeed == 0u))
//
if ((NVMUserSettings.KLINE == 1u) && (K_LINE_SIGNAL_FLAG.SendSeedEQUSRecvSeed == 0u))
if
(
1
)
{
if
(((
RequestData
[
0
]
>=
0x20
)
&&
(
RequestData
[
0
]
<=
0x52
))
||
(
RequestData
[
0
]
==
0x91
)
||
(
RequestData
[
0
]
==
0xA0
)
||
(
RequestData
[
0
]
==
0xA3
))
...
...
@@ -686,381 +682,381 @@ unsigned char kwp_readDataByLocalIdentifier(unsigned char *TxData, unsigned char
{
unsigned
char
Tx_Len
=
0
;
unsigned
int
ECUStatusCup
=
0
;
switch
(
RequestData
[
0
])
/* subFunction */
switch
(
RequestData
[
0
])
/* subFunction */
{
case
0x20
:
/* 应对
ECE R13 */
case
0x20
:
/* 应对E
CE R13 */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x20
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID20
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID20
;
Tx_Len
=
4
;
break
;
case
0x21
:
/* EBS/ABS */
case
0x21
:
/* EBS/ABS */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x21
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID21
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID21
;
Tx_Len
=
4
;
break
;
case
0x22
:
/* EVSC */
case
0x22
:
/* EVSC */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x22
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID22
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID22
;
Tx_Len
=
4
;
break
;
case
0x23
:
/* 驻车锁定
*/
case
0x23
:
/* 驻车锁定 *
/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x23
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID23
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID23
;
Tx_Len
=
4
;
break
;
case
0x24
:
/* HSA */
case
0x24
:
/* HSA */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x24
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID24
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID24
;
Tx_Len
=
4
;
break
;
case
0x25
:
/* AEBS */
case
0x25
:
/* AEBS */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x25
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID25
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID25
;
Tx_Len
=
4
;
break
;
case
0x26
:
/* ACC */
case
0x26
:
/* ACC */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x26
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID26
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID26
;
Tx_Len
=
4
;
break
;
case
0x27
:
/* LDWS */
case
0x27
:
/* LDWS */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x27
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID27
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID27
;
Tx_Len
=
4
;
break
;
case
0x28
:
/* 车辆间报警
*/
case
0x28
:
/* 车辆间报警 *
/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x28
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID28
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID28
;
Tx_Len
=
4
;
break
;
case
0x29
:
/* 有无巡航
*/
case
0x29
:
/* 有无巡航 *
/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x29
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID29
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID29
;
Tx_Len
=
4
;
break
;
case
0x2A
:
/* 气悬
*/
case
0x2A
:
/* 气悬
*/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x2A
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID2A
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID2A
;
Tx_Len
=
4
;
break
;
case
0x2B
:
/* ISS */
case
0x2B
:
/* ISS */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x2B
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID2B
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID2B
;
Tx_Len
=
4
;
break
;
case
0x2C
:
/* 装货台工作警报蜂鸣器
*/
case
0x2C
:
/* װ装货台工作警报蜂鸣器 */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x2C
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID2C
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID2C
;
Tx_Len
=
4
;
break
;
case
0x2D
:
/* ROWS */
case
0x2D
:
/* ROWS */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x2D
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID2D
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID2D
;
Tx_Len
=
4
;
break
;
case
0x2E
:
/* 行车记录仪
*/
case
0x2E
:
/* 行车记录仪 *
/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x2E
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID2E
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID2E
;
Tx_Len
=
4
;
break
;
case
0x2F
:
/* 车型
*/
case
0x2F
:
/* 车型
*/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x2F
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID2F
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID2F
;
Tx_Len
=
4
;
break
;
case
0x30
:
/* 缓速器
*/
case
0x30
:
/* 缓速器
*/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x30
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID30
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID30
;
Tx_Len
=
4
;
break
;
case
0x31
:
/* 地图巡航
*/
case
0x31
:
/* 地图巡航 *
/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x31
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID31
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID31
;
Tx_Len
=
4
;
break
;
case
0x32
:
/* 装货台种类
*/
case
0x32
:
/* 装货台种类 *
/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x32
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID32
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID32
;
Tx_Len
=
4
;
break
;
case
0x33
:
/* SCR?DPD */
case
0x33
:
/* SCR?DPD */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x33
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID33
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID33
;
Tx_Len
=
4
;
break
;
case
0x34
:
/* 驻车种类
*/
case
0x34
:
/* 驻车种类 *
/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x34
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID34
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID34
;
Tx_Len
=
4
;
break
;
case
0x35
:
/* 气压计
*/
case
0x35
:
/* 气压计
*/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x35
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID35
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID35
;
Tx_Len
=
4
;
break
;
case
0x36
:
/* 低压警报压
*/
case
0x36
:
/* 低压警报 *
/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x36
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID36
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID36
;
Tx_Len
=
4
;
break
;
case
0x37
:
/* 超限警报
*/
case
0x37
:
/* 超限警报 *
/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x37
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID37
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID37
;
Tx_Len
=
4
;
break
;
case
0x38
:
/* 速度警报
*/
case
0x38
:
/* 速度警报 *
/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x38
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID38
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID38
;
Tx_Len
=
4
;
break
;
case
0x39
:
/* 可变
SLD */
case
0x39
:
/* 可变S
LD */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x39
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID39
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID39
;
Tx_Len
=
4
;
break
;
case
0x3A
:
/*
OEM */
case
0x3A
:
/*
OEM */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x3A
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID3A
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID3A
;
Tx_Len
=
4
;
break
;
case
0x3B
:
/* */
case
0x3B
:
/* */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x3B
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID3B
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID3B
;
Tx_Len
=
4
;
break
;
case
0x3C
:
/* */
case
0x3C
:
/* */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x3C
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID3C
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID3C
;
Tx_Len
=
4
;
break
;
case
0x3D
:
/* */
case
0x3D
:
/* */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x3D
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID3D
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID3D
;
Tx_Len
=
4
;
break
;
case
0x3E
:
/* */
case
0x3E
:
/* */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x3E
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID3E
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID3E
;
Tx_Len
=
4
;
break
;
case
0x3F
:
/* */
case
0x3F
:
/* */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x3F
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID3F
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID3F
;
Tx_Len
=
4
;
break
;
case
0x40
:
/* 发动机种类
*/
case
0x40
:
/* 发动机种类 *
/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x40
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID40
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID40
;
Tx_Len
=
4
;
break
;
case
0x41
:
/* 变速器种类&控制
*/
case
0x41
:
/* 变速器种类&控制 */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x41
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID41
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID41
;
Tx_Len
=
4
;
break
;
case
0x42
:
/* 5.2.14.1.4. 驻车管道
*/
case
0x42
:
/* 5.2.14.1.4. 驻车管道*/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x42
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID42
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID42
;
Tx_Len
=
4
;
break
;
case
0x43
:
/* 5.2.14.1.5. 车型
*/
case
0x43
:
/* 5.2.14.1.5. 车型
*/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x43
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID43
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID43
;
Tx_Len
=
4
;
break
;
case
0x44
:
/* 速度警报
*/
case
0x44
:
/* 速度警报 *
/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x44
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID44
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID44
;
Tx_Len
=
4
;
break
;
case
0x45
:
/* 发动机转速
*/
case
0x45
:
/* 发动机转速 *
/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x45
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID45
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID45
;
Tx_Len
=
4
;
break
;
case
0x46
:
/* 急加速
*/
case
0x46
:
/* 急加速
*/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x46
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID46
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID46
;
Tx_Len
=
4
;
break
;
case
0x47
:
/* 急减速
*/
case
0x47
:
/* 急减速
*/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x47
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID47
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID47
;
Tx_Len
=
4
;
break
;
case
0x48
:
/* 长时间怠速
*/
case
0x48
:
/* 长时间怠速
*/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x48
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID48
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID48
;
Tx_Len
=
4
;
break
;
case
0x49
:
/* 辅助驻车
*/
case
0x49
:
/* 辅助驻车 *
/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x49
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID49
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID49
;
Tx_Len
=
4
;
break
;
case
0x4A
:
/* 变速箱油
*/
case
0x4A
:
/* 变速箱油
*/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x4A
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID4A
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID4A
;
Tx_Len
=
4
;
break
;
case
0x4B
:
/* 差速器油
*/
case
0x4B
:
/* 差速器油
*/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x4B
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID4B
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID4B
;
Tx_Len
=
4
;
break
;
case
0x4C
:
/* 离合器油
*/
case
0x4C
:
/* 离合器油 *
/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x4C
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID4C
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID4C
;
Tx_Len
=
4
;
break
;
case
0x4D
:
/* 动力转向油
*/
case
0x4D
:
/* 动力转向油 *
/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x4D
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID4D
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID4D
;
Tx_Len
=
4
;
break
;
case
0x4E
:
/* 轮胎
*/
case
0x4E
:
/* 轮胎
*/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x4E
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID4E
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID4E
;
Tx_Len
=
4
;
break
;
case
0x4F
:
/* 机油&滤清器
*/
case
0x4F
:
/* 机油&滤清器 *
/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x4F
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID4F
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID4F
;
Tx_Len
=
4
;
break
;
case
0x50
:
/* 预留
*/
case
0x50
:
/* 预留
*/
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x50
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID50
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID50
;
Tx_Len
=
4
;
break
;
case
0x51
:
/* 5.2.14.1.8. 工作模式
*/
case
0x51
:
/* 5.2.14.1.8. 工作模式 */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x51
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID51
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID51
;
Tx_Len
=
4
;
break
;
case
0x52
:
/* 5.2.14.1.9. 电子部件设定(
*/
case
0x52
:
/* 5.2.14.1.9. 电子部件设定 */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x52
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID52
;
(
*
TxData
++
)
=
K_Line_Set
.
K_Line_LID52
;
Tx_Len
=
4
;
break
;
case
0xA0
:
/* */
case
0xA0
:
/* */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0xA0
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
NVMNODIGIT
.
TesterECU
;
Tx_Len
=
4
;
break
;
case
0xA3
:
/* */
case
0xA3
:
/* */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0xA3
;
(
*
TxData
++
)
=
0x00
;
(
*
TxData
++
)
=
NVMNODIGIT
.
TesterECUCAN
;
Tx_Len
=
4
;
break
;
case
0xA1
:
/* */
case
0xA1
:
/* */
/*
NVMNODIGIT.ECUStatus1 = ECUStatusONE.Data[0];
...
...
@@ -1083,10 +1079,10 @@ unsigned char kwp_readDataByLocalIdentifier(unsigned char *TxData, unsigned char
Tx_Len = 7;
break;
*/
case
0xA2
:
/* */
case
0xA2
:
/* */
(
*
TxData
++
)
=
KWP2000_READDATABYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0xA2
;
(
*
TxData
++
)
=
NVMNODIGIT
.
METERCOUNT
;
//修正率替换次数
(
*
TxData
++
)
=
NVMNODIGIT
.
METERCOUNT
;
/*修正率替换次数*/
Tx_Len
=
3
;
break
;
default:
/* subFunctionNotSupported */
...
...
@@ -1121,22 +1117,24 @@ unsigned char kwp_readDataAccessMode(unsigned char *TxData, unsigned char *Reque
unsigned
long
SeedKey
=
0
;
unsigned
char
Tx_Len
=
0
;
switch
(
RequestData
[
0
])
/* subFunction */
switch
(
RequestData
[
0
])
/* subFunction */
{
case
0x01
:
/* */
//
if (NVMUserSettings.KLINE == 1)/*是否锁定标记
*/
case
0x01
:
/* */
//
if (NVMUserSettings.KLINE == 1)/*是否锁定标记*/
if
(
0
)
{
/*
密钥随机数生成
*/
//SeedKey = (unsigned long)RealTimeClock.RollingCounter;
//SeedKey = SeedKey << 16;
//SeedKey |= (unsigned long)(~RealTimeClock.RollingCounter);
/*
密钥随机数生成*/
//
SeedKey = (unsigned long)RealTimeClock.RollingCounter;
//
SeedKey = SeedKey << 16;
//
SeedKey |= (unsigned long)(~RealTimeClock.RollingCounter);
Seed1
=
(
unsigned
char
)(
SeedKey
>>
24
);
Seed2
=
(
unsigned
char
)(
SeedKey
>>
16
);
Seed3
=
(
unsigned
char
)(
SeedKey
>>
8
);
Seed4
=
(
unsigned
char
)(
SeedKey
);
App_Uds_Calc_Key
();
//----计算密钥等待应答
/*计算密钥等待应答*/
App_Uds_Calc_Key
();
K_LINE_SIGNAL_FLAG
.
AccessMode2701
=
1
;
AccessMode2701KeyTime
=
0
;
...
...
@@ -1155,20 +1153,19 @@ unsigned char kwp_readDataAccessMode(unsigned char *TxData, unsigned char *Reque
Kwp2000_Negative
.
ResponseCode
=
KWP2000_subFunctionNotSupported
;
}
break
;
case
0x02
:
/* */
Recvseed1
=
RequestData
[
1
];
Recvseed2
=
RequestData
[
2
];
Recvseed3
=
RequestData
[
3
];
Recvseed4
=
RequestData
[
4
];
case
0x02
:
/* */
Recvseed1
=
RequestData
[
1
];
Recvseed2
=
RequestData
[
2
];
Recvseed3
=
RequestData
[
3
];
Recvseed4
=
RequestData
[
4
];
if
(
(
Sendseed1
==
Recvseed1
)
&&
\
(
Sendseed2
==
Recvseed2
)
&&
\
(
Sendseed3
==
Recvseed3
)
&&
\
(
Sendseed4
==
Recvseed4
)
&&
\
(
AccessMode2701KeyTimeFlag
==
1
)
)
(
Sendseed1
==
Recvseed1
)
&&
(
Sendseed2
==
Recvseed2
)
&&
(
Sendseed3
==
Recvseed3
)
&&
(
Sendseed4
==
Recvseed4
)
&&
(
AccessMode2701KeyTimeFlag
==
1
))
{
K_LINE_SIGNAL_FLAG
.
AccessMode2701
=
0
;
K_LINE_SIGNAL_FLAG
.
AccessMode2701
=
0
;
AccessMode2701KeyTimeFlag
=
1
;
K_LINE_SIGNAL_FLAG
.
SendSeedEQUSRecvSeed
=
1
;
...
...
@@ -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
Tx_Len
=
0
;
switch
(
RequestData
[
0
])
/* */
switch
(
RequestData
[
0
])
/* */
{
case
0x08
:
/* */
//K_LINE_SIGNAL_FLAG.S_Regist = 1;
//NVMUserSettings.KLINE = 1 ;
/*
写E
EP*/
//NVM_Data_Update(NVM_USER_SETTINGS);
case
0x08
:
/* */
//
K_LINE_SIGNAL_FLAG.S_Regist = 1;
//
NVMUserSettings.KLINE = 1 ;
/*
写E
EP*/
//
NVM_Data_Update(NVM_USER_SETTINGS);
(
*
TxData
++
)
=
KWP2000_STARTROUTINEBYLOCALIDENTIFIER_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0x08
;
Tx_Len
=
2
;
...
...
@@ -1228,9 +1225,9 @@ unsigned char kwp_StartroutInebykocalIdentifier(unsigned char *TxData, unsigned
unsigned
char
kwp_readDataStatusofDTC
(
unsigned
char
*
TxData
,
unsigned
char
*
RequestData
)
{
unsigned
char
Tx_Len
=
0
;
switch
(
RequestData
[
0
])
/* subFunction */
switch
(
RequestData
[
0
])
/* subFunction */
{
case
0x00
:
/* */
case
0x00
:
/* */
/*
if ((RequestData[1] == 0xFF)&&(RequestData[2] == 0x00))
{
...
...
@@ -1326,15 +1323,15 @@ unsigned char kwp_ClearDiagnosticInformation(unsigned char *TxData, unsigned cha
{
unsigned
char
Tx_Len
=
0
;
switch
(
RequestData
[
0
])
/* subFunction */
switch
(
RequestData
[
0
])
/* subFunction */
{
case
0xFF
:
/* */
case
0xFF
:
/* */
if
(
RequestData
[
1
]
==
0x00
)
{
(
*
TxData
++
)
=
KWP2000_CLEARDIAGNOSTICINFORMATION_REQUEST
+
KWP2000_POSITIVE_RESPONSE_OFFSET
;
(
*
TxData
++
)
=
0xFF
;
(
*
TxData
++
)
=
0x00
;
//NVMNODIGIT.NoOfDTCFF00 == 0x00;
//
NVMNODIGIT.NoOfDTCFF00 == 0x00;
Tx_Len
=
3
;
}
else
...
...
@@ -1347,7 +1344,6 @@ unsigned char kwp_ClearDiagnosticInformation(unsigned char *TxData, unsigned cha
break
;
}
return
Tx_Len
;
}
/*-------------------------------------------------------------------------
* Function Name : App_Uds_Calc_Key
...
...
@@ -1359,40 +1355,40 @@ unsigned char kwp_ClearDiagnosticInformation(unsigned char *TxData, unsigned cha
--------------------------------------------------------------------------*/
void
App_Uds_Calc_Key
(
void
)
{
unsigned
char
CupChar1
=
0
;
unsigned
char
CupChar2
=
0
;
unsigned
char
CupChar3
=
0
;
unsigned
char
CupChar4
=
0
;
unsigned
char
CupChar1
=
0
;
unsigned
char
CupChar2
=
0
;
unsigned
char
CupChar3
=
0
;
unsigned
char
CupChar4
=
0
;
unsigned
char
CupChar5
=
0
;
unsigned
char
CupChar6
=
0
;
unsigned
char
CupChar7
=
0
;
unsigned
char
CupChar8
=
0
;
unsigned
char
CupChar5
=
0
;
unsigned
char
CupChar6
=
0
;
unsigned
char
CupChar7
=
0
;
unsigned
char
CupChar8
=
0
;
unsigned
char
CupChar9
=
0
;
unsigned
char
CupChar9
=
0
;
unsigned
char
CupChar10
=
0
;
unsigned
char
CupChar11
=
0
;
unsigned
char
CupChar12
=
0
;
CupChar1
=
Cup_Key
(
Seed1
,
1
,
Seed1
);
CupChar2
=
Cup_Key
(
Seed2
,
2
,
Seed2
);
CupChar3
=
Cup_Key
(
Seed3
,
3
,
Seed3
);
CupChar4
=
Cup_Key
(
Seed4
,
4
,
Seed4
);
CupChar1
=
Cup_Key
(
Seed1
,
1
,
Seed1
);
CupChar2
=
Cup_Key
(
Seed2
,
2
,
Seed2
);
CupChar3
=
Cup_Key
(
Seed3
,
3
,
Seed3
);
CupChar4
=
Cup_Key
(
Seed4
,
4
,
Seed4
);
CupChar5
=
Cup_Key
(
CupChar4
,
1
,
Seed1
);
CupChar6
=
Cup_Key
(
CupChar3
,
2
,
Seed2
);
CupChar7
=
Cup_Key
(
CupChar2
,
3
,
Seed3
);
CupChar8
=
Cup_Key
(
CupChar1
,
4
,
Seed4
);
CupChar5
=
Cup_Key
(
CupChar4
,
1
,
Seed1
);
CupChar6
=
Cup_Key
(
CupChar3
,
2
,
Seed2
);
CupChar7
=
Cup_Key
(
CupChar2
,
3
,
Seed3
);
CupChar8
=
Cup_Key
(
CupChar1
,
4
,
Seed4
);
CupChar9
=
Cup_Key
(
CupChar8
,
1
,
Seed1
);
CupChar10
=
Cup_Key
(
CupChar7
,
2
,
Seed2
);
CupChar11
=
Cup_Key
(
CupChar6
,
3
,
Seed3
);
CupChar12
=
Cup_Key
(
CupChar5
,
4
,
Seed4
);
CupChar9
=
Cup_Key
(
CupChar8
,
1
,
Seed1
);
CupChar10
=
Cup_Key
(
CupChar7
,
2
,
Seed2
);
CupChar11
=
Cup_Key
(
CupChar6
,
3
,
Seed3
);
CupChar12
=
Cup_Key
(
CupChar5
,
4
,
Seed4
);
Sendseed4
=
Cup_Key
(
CupChar12
,
1
,
Seed1
);
Sendseed3
=
Cup_Key
(
CupChar11
,
2
,
Seed2
);
Sendseed2
=
Cup_Key
(
CupChar10
,
3
,
Seed3
);
Sendseed1
=
Cup_Key
(
CupChar9
,
4
,
Seed4
);
Sendseed4
=
Cup_Key
(
CupChar12
,
1
,
Seed1
);
Sendseed3
=
Cup_Key
(
CupChar11
,
2
,
Seed2
);
Sendseed2
=
Cup_Key
(
CupChar10
,
3
,
Seed3
);
Sendseed1
=
Cup_Key
(
CupChar9
,
4
,
Seed4
);
}
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
unsigned
char
CupCharL
=
0
;
unsigned
char
CupCharR
=
0
;
CupCharL
=
KLineseed
;
CupCharR
=
KLineseed
;
CupCharL
=
KLineseed
;
CupCharR
=
KLineseed
;
CupCharL
=
(
CupCharL
<<
Num
)
;
CupCharL
=
(
CupCharL
<<
Num
);
CupCharR
=
(
CupCharR
>>
(
8
-
Num
));
CupCharL
=
(
CupCharL
|
CupCharR
);
...
...
@@ -1416,12 +1412,12 @@ unsigned char Cup_Key(unsigned char KLineseed, unsigned char Num, unsigned char
return
CupCharL
;
}
unsigned
char
BitReplace
(
unsigned
char
Data
)
unsigned
char
BitReplace
(
unsigned
char
Data
)
{
unsigned
char
i
=
0
;
unsigned
char
temp
=
0
;
for
(
i
=
0
;
i
<
8
;
i
++
)
for
(
i
=
0
;
i
<
8
;
i
++
)
{
temp
=
temp
<<
1
;
temp
|=
(
Data
>>
i
)
&
0x01
;
...
...
source/Application/K_BUS/kwp2000_service.h
View file @
3763c3c0
...
...
@@ -125,28 +125,28 @@ extern unsigned char kwp_ClearDiagnosticInformation(unsigned char *TxData, unsig
typedef
union
{
unsigned
char
SendSeedEQUSRecvSeed
;
/
/密钥配对成功标识 0 失败,1 成功
unsigned
char
RecvStart
;
/
/通讯开始表示位 0 结束,1 开始
unsigned
char
S_Regist
;
/
/是否注册标识
unsigned
char
AccessMode2701
;
/
/27服务进入计时标志
unsigned
char
SendSeedEQUSRecvSeed
;
/
*密钥配对成功标识 0-失败 1-成功*/
unsigned
char
RecvStart
;
/
*通讯开始标识 0-结束 1-开始*/
unsigned
char
S_Regist
;
/
*是否注册标识*/
unsigned
char
AccessMode2701
;
/
*27服务进入计时标志*/
}
_K_LINE_SIGNAL_FLAG
;
extern
_K_LINE_SIGNAL_FLAG
K_LINE_SIGNAL_FLAG
;
typedef
union
{
unsigned
char
ActiveSecurityAccess
;
/*
修正值状态 0-未实施 1-实施后
*/
unsigned
char
SensorStatus
;
/*
传感器输入状态
0-LOW 1-HIGH*/
unsigned
char
Security_Active
;
/*
锁定状态 0-未锁定 1-锁定
*/
unsigned
char
ActiveSecurityAccess
;
/*
修正值状态 0-未实施 1-实施后*/
unsigned
char
SensorStatus
;
/*
传感器输入状态 0-
LOW 1-HIGH*/
unsigned
char
Security_Active
;
/*
锁定状态 0-未锁定 1-锁定*/
unsigned
char
reserve
;
}
_ECUStatus
;
extern
_ECUStatus
ECUStatusONE
;
#define ECUSTATUST_F 00
/*修正系数 EOL系数
*2048*/
#define ECUSTATUST_F 00
/*修正系数 EOL系数*20
48*/
/******************************************************************************
5.2.5. ECU ID_ECU
件号写入
(SID=$3B LID=$91)
5.2.5. ECU ID_ECU
件号写入(S
ID=$3B LID=$91)
******************************************************************************/
typedef
union
{
...
...
@@ -166,21 +166,21 @@ typedef union
unsigned
char
ECUStatus3
;
//13
unsigned
char
ECUStatus4
;
//14
unsigned
char
ECUStatus5
;
//15
unsigned
char
METERCOUNT
;
//16
修正率次数
unsigned
char
METERCOUNT
;
//16
修正率次数
unsigned
char
NoOfDTCFF00
;
//17
unsigned
char
NoOfDTC8000
;
//18
unsigned
char
TesterECU
;
//19
车速修正码
unsigned
char
TesterECUCAN
;
//20 CAN
发送用修正码
unsigned
char
TesterECU
;
//19
车速修正码
unsigned
char
TesterECUCAN
;
//20 CAN
发送用修正码
}
_NVMNODIGIT
;
extern
_NVMNODIGIT
NVMNODIGIT
;
extern
unsigned
char
Sendseed1
;
/
/仪表计算的
extern
unsigned
char
Sendseed1
;
/
*仪表计算*/
extern
unsigned
char
Sendseed2
;
extern
unsigned
char
Sendseed3
;
extern
unsigned
char
Sendseed4
;
extern
unsigned
char
Recvseed1
;
/
/仪表接收的
extern
unsigned
char
Recvseed1
;
/
*仪表接收*/
extern
unsigned
char
Recvseed2
;
extern
unsigned
char
Recvseed3
;
extern
unsigned
char
Recvseed4
;
...
...
source/Application/K_BUS/kwp2000_tp.c
View file @
3763c3c0
...
...
@@ -14,15 +14,15 @@
*********************************************************************
*/
/* Possible initialization formats */
#define KWP2000_FORMAT_NOADDRESS
0
/* 00 */
#define KWP2000_FORMAT_CARB
1
/* 01 Exception mode */
#define KWP2000_FORMAT_PHYSICALADDRESSING
2
/* 10 */
#define KWP2000_FORMAT_FUNCTIONALADDRESSING
3
/* 11 */
#define KWP2000_FORMAT_NOADDRESS
0u
/* 00 */
#define KWP2000_FORMAT_CARB
1u
/* 01 Exception mode */
#define KWP2000_FORMAT_PHYSICALADDRESSING
2u
/* 10 */
#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] */
#define KWP2000_WUP_TI_MIN_DU
24ul
/* duration of WUP, min value (low time/hi time) [ms] */
#define KWP2000_WUP_TI_MAX_DU
26ul
/* duration of WUP, max value (low time/hi time) [ms] */
#define KWP2000_WUP_TI_MIN_DU
24ul
/* duration of WUP, min value (low time/hi time) [ms] */
#define KWP2000_WUP_TI_MAX_DU
26ul
/* duration of WUP, max value (low time/hi time) [ms] */
/*
*********************************************************************
...
...
@@ -37,21 +37,20 @@ typedef enum
KWP2000_WUP_SCANLO_E
,
KWP2000_WUP_WAIT4SCANHI_E
=
0x20
,
KWP2000_WUP_SCANHI_E
,
KWP2000_WUP_SCANASC_E
=
0x30
,
KWP2000_WUP_SCANASC_E
=
0x30
,
KWP2000_WUP_DETECTED_E
=
0x80
,
}
Kwp2000_ScanStates_t
;
typedef
struct
{
unsigned
long
xPortIn_pu32
;
unsigned
long
xPortInMsk_u32
;
unsigned
long
tiStartSample_u32
;
unsigned
long
xPortIn_pu32
;
unsigned
long
xPortInMsk_u32
;
unsigned
long
tiStartSample_u32
;
Kwp2000_ScanStates_t
xScanState_u32
;
unsigned
char
xBusType_u32
;
unsigned
long
tiCom_u32
;
unsigned
char
xBusType_u32
;
unsigned
long
tiCom_u32
;
}
Kwp2000_ScanWup_t
;
/*
*********************************************************************
* variable
...
...
@@ -64,29 +63,24 @@ unsigned char kwp2000_CARB_TgtRequest;
unsigned
char
kwp2000_CARB_TgtResponse
;
unsigned
char
kwp2000_CARB_Fmt
;
unsigned
long
Kwp2000_TimeCounter
;
unsigned
long
Kwp2000_P2_TimeCounter
;
unsigned
long
Kwp2000_ComMode
;
Kwp2000_ScanWup_t
Kwp2000_ScanWup
;
Kwp2000_Modify_t
Kwp2000_Modify
;
Kwp2000_ScanWup_t
Kwp2000_ScanWup
;
Kwp2000_Modify_t
Kwp2000_Modify
;
Kwp2000_ComState_t
Kwp2000_ComState
;
/*
*********************************************************************
* function
*********************************************************************
*/
void
Kwp2000_ProtocolInit
(
void
);
void
Kwp2000_ProtocolInit
(
void
);
/*-------------------------------------------------------------------------
* Function Name : Kwp2000_Init
* Description : Kwp2000
初
始化
* Description : Kwp2000
初始化
* Input :
* Output : None
* Return : None
...
...
@@ -94,29 +88,19 @@ void Kwp2000_ProtocolInit( 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_ProtocolInit
();
}
/*-------------------------------------------------------------------------
* Function Name : Kwp2000_ProtocolInit
* Description : KWP2000
协议
初始化
* Description : KWP2000
协议初始化
* Input :
* Output : None
* Return : None
* onther :
--------------------------------------------------------------------------*/
void
Kwp2000_ProtocolInit
(
void
)
void
Kwp2000_ProtocolInit
(
void
)
{
/* Initial time base */
Kwp2000_TimeCounter
=
0
;
...
...
@@ -125,7 +109,7 @@ void Kwp2000_ProtocolInit( void )
/* Prepare Wup scan */
Kwp2000_ComMode
=
COM_INIT
;
Kwp2000_ScanWup
.
xScanState_u32
=
KWP2000_WUP_WAIT4IDLE_E
;
Kwp2000_ScanWup
.
xScanState_u32
=
KWP2000_WUP_WAIT4IDLE_E
;
Kwp2000_ScanWup
.
tiStartSample_u32
=
Kwp2000_TimeCounter
;
Uart_DisableReceiveIsrReq
();
...
...
@@ -133,7 +117,6 @@ void Kwp2000_ProtocolInit( void )
/*Set RX as GPIO-IN*/
Uart_SetRxGpio
();
Kwp2000_Modify
.
typeOfModif
=
KWP2000_MODIFY_NULL
;
Kwp2000_ComState
.
Rx_len
=
0
;
...
...
@@ -170,7 +153,6 @@ void Kwp2000_Timeout(void)
if
((
tiSample_u32
-
Kwp2000_ComState
.
tiCom_u32
)
>=
20u
)
{
Kwp2000_ProtocolInit
();
}
}
else
...
...
@@ -194,13 +176,13 @@ void Kwp2000_Timeout(void)
/*-------------------------------------------------------------------------
* Function Name : Kwp2000_CommuniationDown
* Description :
通讯底层与
协议层初始化
* Description :
Í通讯底层与协议层初始化
* Input :
* Output : None
* Return : None
* onther :
--------------------------------------------------------------------------*/
void
Kwp2000_CommuniationDown
(
void
)
void
Kwp2000_CommuniationDown
(
void
)
{
Kwp2000_AscInit
();
Kwp2000_ProtocolInit
();
...
...
@@ -252,7 +234,7 @@ unsigned char Kwp2000_ChecksumCalculate(unsigned char *dataBuffer, unsigned shor
/* Resets the sum */
sum
=
0
;
for
(
i
=
0
;
i
<
numberOfBytes
;
i
++
)
for
(
i
=
0
;
i
<
numberOfBytes
;
i
++
)
{
/* add each byte to the sum */
sum
+=
dataBuffer
[
i
];
...
...
@@ -291,20 +273,20 @@ unsigned char Kwp2000_PrepareHeader(unsigned char dataSize)
/* Test the format used */
switch
(
Kwp2000_ComState
.
Format
)
{
case
KWP2000_FORMAT_NOADDRESS
:
case
KWP2000_FORMAT_NOADDRESS
:
/* if no address then nothing to be added to the header */
break
;
case
KWP2000_FORMAT_CARB
:
case
KWP2000_FORMAT_CARB
:
// /* CARB mode */
// fmt = kwp2000_CARB_Fmt;
// asc0_CommunicationBuf.b[4-(headerSize++)]= kwp2000_CARB_Address;
// asc0_CommunicationBuf.b[4-(headerSize++)]= kwp2000_CARB_TgtResponse;
break
;
case
KWP2000_FORMAT_FUNCTIONALADDRESSING
:
case
KWP2000_FORMAT_PHYSICALADDRESSING
:
case
KWP2000_FORMAT_FUNCTIONALADDRESSING
:
case
KWP2000_FORMAT_PHYSICALADDRESSING
:
/* Physical addressing */
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
;
}
Kwp2000_ComState
.
TxBuffer
[
4
-
headerSize
]
=
fmt
;
...
...
@@ -327,19 +309,19 @@ void Kwp2000_HeaderAnalyse(void)
/* Tests the header size */
switch
(
Kwp2000_ComState
.
headerSize
)
{
case
1
:
case
1
:
/* 1 byte -> FMT */
break
;
case
2
:
case
2
:
/* 2 bytes -> FMT LEN */
Kwp2000_ComState
.
kwp2000_Len
=
Kwp2000_ComState
.
RxBuffer
[
1
];
break
;
case
3
:
case
3
:
/* 3 bytes -> FMT TGT SRC */
Kwp2000_ComState
.
TgtAddr
=
Kwp2000_ComState
.
RxBuffer
[
1
];
Kwp2000_ComState
.
SrcAddr
=
Kwp2000_ComState
.
RxBuffer
[
2
];
break
;
case
4
:
case
4
:
/* 4 bytes -> FMT TGT SRC LEN */
Kwp2000_ComState
.
TgtAddr
=
Kwp2000_ComState
.
RxBuffer
[
1
];
Kwp2000_ComState
.
SrcAddr
=
Kwp2000_ComState
.
RxBuffer
[
2
];
...
...
@@ -350,7 +332,7 @@ void Kwp2000_HeaderAnalyse(void)
/*-------------------------------------------------------------------------
* Function Name : Kwp2000_FormatAnalyse
* Description :
数
据帧解析
* Description :
����֡����
* Input :
* Output : None
* Return : None
...
...
@@ -369,14 +351,14 @@ unsigned char Kwp2000_FormatAnalyse(void)
/* Tests the format */
switch
(
Kwp2000_ComState
.
Format
)
{
case
KWP2000_FORMAT_NOADDRESS
:
case
KWP2000_FORMAT_NOADDRESS
:
/* There is no address */
break
;
case
KWP2000_FORMAT_CARB
:
case
KWP2000_FORMAT_CARB
:
/* There are source and target addresses */
Kwp2000_ComState
.
kwp2000_Len
=
0
;
case
KWP2000_FORMAT_PHYSICALADDRESSING
:
case
KWP2000_FORMAT_FUNCTIONALADDRESSING
:
case
KWP2000_FORMAT_PHYSICALADDRESSING
:
case
KWP2000_FORMAT_FUNCTIONALADDRESSING
:
/* There are source and target addresses */
headerSize
+=
2
;
break
;
...
...
@@ -389,10 +371,9 @@ unsigned char Kwp2000_FormatAnalyse(void)
}
else
{
}
/* 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
);
}
...
...
@@ -420,7 +401,7 @@ unsigned char kwp2000_AddressTest(void)
{
switch
(
Kwp2000_ComState
.
Format
)
{
case
KWP2000_FORMAT_CARB
:
case
KWP2000_FORMAT_CARB
:
/* CARB addressing mode */
if
(
Kwp2000_ComState
.
TgtAddr
==
kwp2000_CARB_TgtRequest
)
{
...
...
@@ -433,7 +414,7 @@ unsigned char kwp2000_AddressTest(void)
answer
=
0
;
}
break
;
case
KWP2000_FORMAT_PHYSICALADDRESSING
:
case
KWP2000_FORMAT_PHYSICALADDRESSING
:
/* Physical addressing mode */
if
(
Kwp2000_ComState
.
TgtAddr
==
kwp2000_PhysicalAddress
)
{
...
...
@@ -446,7 +427,7 @@ unsigned char kwp2000_AddressTest(void)
answer
=
0
;
}
break
;
case
KWP2000_FORMAT_FUNCTIONALADDRESSING
:
case
KWP2000_FORMAT_FUNCTIONALADDRESSING
:
/* Functional addressing mode */
if
((
Kwp2000_ComState
.
TgtAddr
==
kwp2000_FunctionalAddress
)
||
(
Kwp2000_ComState
.
TgtAddr
==
kwp2000_PhysicalAddress
))
{
...
...
@@ -469,7 +450,7 @@ unsigned char kwp2000_AddressTest(void)
/*-------------------------------------------------------------------------
* Function Name : Kwp2000_ComInit_Handle
* Description :
测
量 Twup
* Description :
测量
Twup
* Input :
* Output : None
* Return : None
...
...
@@ -508,7 +489,6 @@ void Kwp2000_ComInit_Handle(void)
Kwp2000_ScanWup
.
xScanState_u32
=
KWP2000_WUP_SCANLO_E
;
Kwp2000_ScanWup
.
tiStartSample_u32
=
Kwp2000_TimeCounter
;
}
}
// measure low level time on RX-pin, if level changes to high during the first 25ms
// abort measurement
...
...
@@ -516,8 +496,7 @@ void Kwp2000_ComInit_Handle(void)
{
if
(
RxPortState
!=
0
)
{
if
(((
Kwp2000_TimeCounter
-
Kwp2000_ScanWup
.
tiStartSample_u32
)
>=
KWP2000_WUP_TI_MIN_DU
)
&&
((
Kwp2000_TimeCounter
-
Kwp2000_ScanWup
.
tiStartSample_u32
)
<=
KWP2000_WUP_TI_MAX_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_ScanWup
.
tiStartSample_u32
=
Kwp2000_TimeCounter
;
Kwp2000_ScanWup
.
xScanState_u32
=
KWP2000_WUP_WAIT4SCANHI_E
;
...
...
@@ -539,7 +518,7 @@ void Kwp2000_ComInit_Handle(void)
{
Kwp2000_ScanWup
.
xScanState_u32
=
KWP2000_WUP_DETECTED_E
;
Uart_SetRxGpio
();
//RX
Uart_SetRxGpio
();
//
RX
Kwp2000_AscEnableRx
();
/* reset variables, which are used by the receive interrupt function */
...
...
@@ -569,17 +548,17 @@ void Kwp2000_ComInit_Handle(void)
/*-------------------------------------------------------------------------
* Function Name : Kwp2000_AscRxInterrupt
* Description :
串口
接收中断
* Description :
���ڽ����ж�
* Input :
* Output : None
* Return : None
* onther :
--------------------------------------------------------------------------*/
void
Kwp2000_AscRxInterrupt
(
void
)
void
Kwp2000_AscRxInterrupt
(
void
)
{
unsigned
short
rxUartData
;
unsigned
short
rxUartData
;
Uart_ClearRxFullFlag
();
/* clear service request flags */
Uart_ClearRxFullFlag
();
/* clear service request flags */
if
((
Kwp2000_ComMode
&
PROTOCOL
)
==
KWP2000
)
{
...
...
@@ -593,33 +572,32 @@ void Kwp2000_AscRxInterrupt( void )
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
.
tiCom_u32
=
Kwp2000_TimeCounter
;
Kwp2000_ComState
.
Rx_len
++
;
;
Kwp2000_ComState
.
Rx_len
++
;
}
}
else
{
/* if transmit on going, do nothing */
rxUartData
=
Uart_GetData
();
rxUartData
=
Uart_GetData
();
/* 读取串口数据----20220303----*/
if
(
Kwp2000_ComState
.
Tx_len
)
{
Kwp2000_ComState
.
Tx_len
--
;
}
if
(
Kwp2000_ComState
.
Tx_len
>
0
)
{
if
(
rxUartData
==
(
*
Kwp2000_ComState
.
Response_Datas
))
{
Kwp2000_P2_TimeCounter
=
0
;
Kwp2000_ComState
.
Response_Datas
++
;
Kwp2000_AscTx
(
Kwp2000_ComState
.
Response_Datas
);
Kwp2000_AscTx
(
Kwp2000_ComState
.
Response_Datas
);
/* 数据发送----20220303----*/
}
else
{
...
...
source/Driver/UART/UART.c
View file @
3763c3c0
...
...
@@ -2,6 +2,7 @@
#include "dr7f701441.dvf.h"
#include "UART.h"
//#include "rh850_macros.h"
#include "GPIO.h"
#include "r_dev_api.h"
#include "kwp2000_tp.h"
...
...
@@ -490,6 +491,7 @@ void Uart_ConfigOperationMode(void)
unsigned
char
Uart_GetRxLevel
(
void
)
{
// return PTS_PTS0;
return
GPIO_OUT_PORT00_PIN03
;
}
/*-------------------------------------------------------------------------
...
...
@@ -682,6 +684,7 @@ void TJA1021_Enable(unsigned char state)
// DDRR_DDRR3 = 1;
// PTR_PTR3 = state;
GPIO_OUT_PORT16_PIN04
=
state
;
}
/*-------------------------------------------------------------------------
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment