1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
#ifndef _KWP2000_SERVICE_H
#define _KWP2000_SERVICE_H
/*
*********************************************************************
* defines
*********************************************************************
*/
/* KWP2000 keybytes for initialization */
#define KWP2000_KEYBYTE1 0xE9u /* Both Len type - Both header type - Normal timing */
#define KWP2000_KEYBYTE2 0x8Fu
/* Request Service Id */
#define KWP2000_STARTDIAGNOSTICSESSION_REQUEST 0x10u
#define KWP2000_ECURESET_REQUEST 0x11u
#define KWP2000_READFREEZEFRAMEDATA_REQUEST 0x12u
#define KWP2000_READDIAGNOSTICTROUBLECODES_REQUEST 0x13u
#define KWP2000_CLEARDIAGNOSTICINFORMATION_REQUEST 0x14u
#define KWP2000_READNUMBEROFDIAGNOSTICTROUBLECODES_REQUEST 0x15u
#define KWP2000_READSTATUSOFDIAGNOSTICTROUBLECODES_REQUEST 0x17u
#define KWP2000_READDIAGNOSTICTROUBLECODESBYSTATUS_REQUEST 0x18u
#define KWP2000_READECUIDENTIFICATION_REQUEST 0x1Au
#define KWP2000_STOPDIAGNOSTICSESSION_REQUEST 0x20u
#define KWP2000_READDATABYLOCALIDENTIFIER_REQUEST 0x21u
#define KWP2000_READDATABYCOMMONIDENTIFIER_REQUEST 0x22u
#define KWP2000_READMEMORYBYADDRESS_REQUEST 0x23u
#define KWP2000_SETDATARATES_REQUEST 0x26u
#define KWP2000_SECURITYACCESS_REQUEST 0x27u
#define KWP2000_DYNAMICALLYDEFINELOCALIDENTIFIER_REQUEST 0x2Cu
#define KWP2000_WRITEDATABYCOMMONIDENTIFIER_REQUEST 0x2Eu
#define KWP2000_INPUTOUTPUTCONTROLBYCOMMONIDENTIFIER_REQUEST 0x2Fu
#define KWP2000_INPUTOUTPUTCONTROLBYLOCALIDENTIFIER_REQUEST 0x30u
#define KWP2000_STARTROUTINEBYLOCALIDENTIFIER_REQUEST 0x31u
#define KWP2000_STOPROUTINEBYLOCALIDENTIFIER_REQUEST 0x32u
#define KWP2000_REQUESTROUTINERESULTSBYLOCALIDENTIFIER_REQUEST 0x33u
#define KWP2000_REQUESTDOWNLOAD_REQUEST 0x34u
#define KWP2000_REQUESTUPLOAD_REQUEST 0x35u
#define KWP2000_TRANSFERDATA_REQUEST 0x36u
#define KWP2000_REQUESTTRANSFEREXIT_REQUEST 0x37u
#define KWP2000_STARTROUTINEBYADDRESS_REQUEST 0x38u
#define KWP2000_STOPROUTINEBYADDRESS_REQUEST 0x39u
#define KWP2000_REQUESTROUTINERESULTSBYADDRESS_REQUEST 0x3Au
#define KWP2000_WRITEDATABYLOCALIDENTIFIER_REQUEST 0x3Bu
#define KWP2000_WRITEMEMORYBYADDRESS_REQUEST 0x3Du
#define KWP2000_TESTERPRESENT_REQUEST 0x3Eu
#define KWP2000_ESCCODE_REQUEST 0x80u
#define KWP2000_STARTCOMMUNICATION_REQUEST 0x81u
#define KWP2000_STOPCOMMUNICATION_REQUEST 0x82u
#define KWP2000_ACCESSTIMINGPARAMETER_REQUEST 0x83u
#define KWP2000_STARTAPPLICATION_REQUEST 0xA2u
/**/
#define KWP2000_POSITIVE_RESPONSE_OFFSET 0x40
/* negative response */
#define KWP_NEGATIVE_RESPONSE 0x7F
/* Response codes for KWP2000 services */
#define KWP2000_generalReject 0x10u
#define KWP2000_serviceNotSupported 0x11u
#define KWP2000_subFunctionNotSupported 0x12u
#define KWP2000_busy_RepeatRequest 0x21u
#define KWP2000_conditionsNotCorrect 0X22u
#define KWP2000_routineNotComplete 0x23u
#define KWP2000_requestOutOfRange 0x31u
#define KWP2000_securityAccessDenied 0x33u
#define KWP2000_invalidKey 0x35u
#define KWP2000_exceedNumberOfAttempts 0x36u
#define KWP2000_requiredTimeDelayNotExpired 0x37u
#define KWP2000_downloadNotAccepted 0x40u
#define KWP2000_improperDownloadType 0x41u
#define KWP2000_cannotDownloadToSpecifiedAddress 0x42u
#define KWP2000_cannotDownloadNumberOfBytesRequested 0x43u
#define KWP2000_uploadNotAccepted 0x50u
#define KWP2000_improperUploadType 0x51u
#define KWP2000_cannotUploadFromSpecifiedAddress 0x52u
#define KWP2000_cannotUploadNumberOfBytesRequested 0x53u
#define KWP2000_transferSuspended 0x71u
#define KWP2000_transferAborted 0x72u
#define KWP2000_illegalAddressInBlockTransfer 0x74u
#define KWP2000_illegalByteCountInBlockTransfer 0x75u
#define KWP2000_illegalBlockTransferType 0x76u
#define KWP2000_blockTransferDataChecksumError 0x77u
#define KWP2000_reqCorrectlyRcvd_RspPending 0x78u
#define KWP2000_incorrectByteCountDuringBlockTransfer 0x79u
#define KWP2000_serviceNotSupportedInActiveDiagnosticSession 0x80u
/*
*********************************************************************
* structure
*********************************************************************
*/
typedef struct
{
unsigned char ResponseCode;
} Kwp2000_Negative_t;
/*
*********************************************************************
* variable
*********************************************************************
*/
extern Kwp2000_Negative_t Kwp2000_Negative;
/*
*********************************************************************
* function
*********************************************************************
*/
extern unsigned char kwp_NegativeResponse(unsigned char sId_u8, unsigned char NegRC_u8, unsigned char *blockByte);
extern unsigned char kwp_EcuReset(unsigned char *TxData, unsigned char *RequestData);
extern unsigned char kwp_TesterPresent(unsigned char *TxData, unsigned char *RequestData);
extern unsigned char kwp_StartCommunication(unsigned char *TxData, unsigned char *RequestData);
extern unsigned char kwp_StopCommunication(unsigned char *TxData, unsigned char *RequestData);
extern unsigned char kwp_readEcuIdentification(unsigned char *TxData, unsigned char *RequestData);
extern unsigned char kwp_writeDataByLocalIdentifier(unsigned char *TxData, unsigned char *RequestData);
extern unsigned char kwp_readDataByLocalIdentifier(unsigned char *TxData, unsigned char *RequestData);
extern unsigned char kwp_readDataByCommonIdentifier(unsigned char *TxData, unsigned char *RequestData);
extern unsigned char kwp_readDataStatusofDTC(unsigned char *TxData, unsigned char *RequestData);
extern unsigned char kwp_readDataAccessMode(unsigned char *TxData, unsigned char *RequestData);
extern unsigned char kwp_StartroutInebykocalIdentifier(unsigned char *TxData, unsigned char *RequestData);
extern unsigned char kwp_ClearDiagnosticInformation(unsigned char *TxData, unsigned char *RequestData);
/******************************************************************************
K-LINE下线配置
******************************************************************************/
typedef struct
{
unsigned long Flag ; /*初始化标记位*/
// HEX
unsigned char K_Line_LID20; /* 00 应对ECE R13 //0:非应对、1:应对 */
unsigned char K_Line_LID21; /* 00 EBS/ABS //0:无、1:EBS、2:ABS(CAN应对) 3:ABS (CAN非应对) */
unsigned char K_Line_LID22; /* 00 EVSC //0:无、1:有 */
unsigned char K_Line_LID23; /* 00 驻车锁定 //0:无、1:有 */
unsigned char K_Line_LID24; /* 00 HSA //0:无、1:有 */
unsigned char K_Line_LID25; /* 00 AEBS //0:无、1:有 */
unsigned char K_Line_LID26; /* 00 ACC //0:无、1:有 */
unsigned char K_Line_LID27; /* 00 LDWS //0:无、1:有 */
unsigned char K_Line_LID28; /* 00 车辆间报警 //0:无、1:有 */
unsigned char K_Line_LID29; /* 01 有无巡航 //0:无、1:有 /*初值1*/
unsigned char K_Line_LID2A; /* 00 气悬 //0:Reef、1:Rear air、2:Full air */
unsigned char K_Line_LID2B; /* 00 ISS //0:无、1: eco stop、 2:Idle Stop */
unsigned char K_Line_LID2C; /* 00 装货台工作警报蜂鸣//0:无、1:有 */
unsigned char K_Line_LID2D; /* 00 ROWS //0:无、1:ROWS有、2LOCAL警报有 */
unsigned char K_Line_LID2E; /* 00 行车记录仪 //0:模拟记录仪、1:数字记录仪或行车记录仪 */
unsigned char K_Line_LID2F; /* 00 车型 //0:单车、1:拖车、2:全拖车 */
unsigned char K_Line_LID30; /* 00 缓速器 //0:无、1:有(C&E)、2:有(F) */
unsigned char K_Line_LID31; /* -- 定速巡航 //0:无、1:有 */
unsigned char K_Line_LID32; /* 00 装货台种类 //0:一般、1:侧翼、2:倾倒 */
unsigned char K_Line_LID33; /* 01 SCR?DPD //0:SCR无/DPD有、1:SCR有/DPD有、2:SCR无/DPD无、3:SCR有/DPD无 /*初值1*/
unsigned char K_Line_LID34; /* 00 驻车种类 //0:FULL AIR、1:AOH /*初值1*/
unsigned char K_Line_LID35; /* -- 气压计 //0:2针式、1:1针式 */
unsigned char K_Line_LID36; /* -- 低压警报压 //0:一般输出(539kPa)、1:ADR(588kPa) */
unsigned char K_Line_LID37; /* -- 超限警报 //0:无、1:有 */
unsigned char K_Line_LID38; /* -- 速度警报 //0:无、1:有 */
unsigned char K_Line_LID39; /* 00 可变SLD //0:无、1:1车速、2:2车速 /*初值1*/
unsigned char K_Line_LID3A; /* -- OEM //0:ISZ、1:UDT */
unsigned char K_Line_LID3B; /* -- 预留 */
unsigned char K_Line_LID3C; /* -- 预留 */
unsigned char K_Line_LID3D; /* -- 预留 */
unsigned char K_Line_LID3E; /* 01 预留 //0:胎压功能未匹配 1:匹配 */
unsigned char K_Line_LID3F; /* -- 预留 */
unsigned char K_Line_LID40; /* 00 发动机种类 */
unsigned char K_Line_LID41; /* 10 变速器种类&控制 /*初值50*/
unsigned char K_Line_LID42; /* 00 驻车管道 /*初值 0*/
unsigned char K_Line_LID43; /* 82 车型 /*初值44*/
unsigned char K_Line_LID44; /* FF 速度警报 /*初值FF*/
unsigned char K_Line_LID45; /* FF 发动机转速 /*初值FF*/
unsigned char K_Line_LID46; /* FF 急加速 /*初值FF*/
unsigned char K_Line_LID47; /* FF 急减速 /*初值FF*/
unsigned char K_Line_LID48; /* FF 长时间怠速 /*初值FF*/
unsigned char K_Line_LID49; /* FF 辅助驻车 /*初值FF*/
unsigned char K_Line_LID4A; /* 32 变速箱油 5000 */
unsigned char K_Line_LID4B; /* 32 差速器油 5000 */
unsigned char K_Line_LID4C; /* 32 离合器油 */
unsigned char K_Line_LID4D; /* 64 动力转向油 10000 */
unsigned char K_Line_LID4E; /* 78 轮胎 12000 */
unsigned char K_Line_LID4F; /* 32 机油&滤清器 5000 */
unsigned char K_Line_LID50; /* -- 预留 */
unsigned char K_Line_LID51; /* 01 工作模式 0-工厂模式 1-通常模式 2-销售模式*/
unsigned char K_Line_LID52; /* 00 电子部件设定 0-500K 1-250k*/
unsigned char KLINE;
unsigned char No_Digit1; //01
unsigned char No_Digit2; //02
unsigned char No_Digit3; //03
unsigned char No_Digit4; //04
unsigned char No_Digit5; //05
unsigned char No_Digit6; //06
unsigned char No_Digit7; //07
unsigned char No_Digit8; //08
unsigned char No_Digit9; //09
unsigned char No_Digit10; //10
unsigned char ECUStatus1; //11
unsigned char ECUStatus2; //12
unsigned char ECUStatus3; //13
unsigned char ECUStatus4; //14
unsigned char ECUStatus5; //15
unsigned char METERCOUNT; //16
unsigned char NoOfDTCFF00; //17
unsigned char NoOfDTC8000; //18
unsigned char TesterECU; //19
unsigned char TesterECUCAN; //20
unsigned char User_Light1;
unsigned char User_Light2;
unsigned char reserve3;
unsigned char reserve4;
} _EOL_K_LINE_SET;
extern _EOL_K_LINE_SET K_Line_Set;
typedef union
{
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 reserve ;
} _ECUStatus;
extern _ECUStatus ECUStatusONE;
#define ECUSTATUST_F 00 /*修正系数 EOL系数*2048*/
extern unsigned char Sendseed1; /*仪表计算*/
extern unsigned char Sendseed2;
extern unsigned char Sendseed3;
extern unsigned char Sendseed4;
extern unsigned char Recvseed1; /*仪表接收*/
extern unsigned char Recvseed2;
extern unsigned char Recvseed3;
extern unsigned char Recvseed4;
extern unsigned char Seed1, Seed2, Seed3, Seed4;
//extern unsigned long SeedKey;
extern unsigned char AccessMode2701KeyTimeFlag;
extern unsigned char AccessMode2701KeyTime;
extern unsigned char Common_Get_DTCstatusCHGFFK_Flag(void);
extern void Common_Set_DTCstatusCHGFFK_Flag(unsigned char Val);
extern void K_LINE_EOL_InitVal(void);
extern void App_Uds_Calc_Key(void);
extern unsigned char Cup_Key(unsigned char KLineseed, unsigned char Num, unsigned char Seed);
extern unsigned char BitReplace (unsigned char Data);
extern void sendkey(void);
#endif