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
#ifndef _KWP2000_TP_H
#define _KWP2000_TP_H
/*
*********************************************************************
* Defined for ComStatus
*********************************************************************
*/
#define KWP2000_BUFFLEN_MAX 255
#define KWP2000_RX_BUFFER_SIZE 260
#define KWP2000_TX_BUFFER_SIZE 260
/*
*********************************************************************
* Defined for ComStatus
*********************************************************************
*/
#define INIT 0x00u /* Initialisation modes in 0x0y*/
#define COM_INIT 0x01u
#define KWP2000 0x20u /* KWP2000 modes in 0x2y */
#define KWP2000_FAST_INIT 0x21u
#define KWP2000_WAIT_RECEPTION 0x22u
#define KWP2000_WAIT_HEADER 0x23u
#define KWP2000_WAIT_DATAS 0x24u
#define KWP2000_COMMUNICATION 0x25u
#define KWP2000_BUILD_RESPONSE 0x26u
#define KWP2000_SEND_RESPONSE 0x27u
#define KWP2000_MODIFY_CONFIG 0x28u
#define KWP2000_END 0x29u
#define KWP2000_IDLE 0x2Au
#define PROTOCOL 0xF0u /* Protocol modes defined by 0xy0 */
#define KWP2000_MODIFY_NULL 0
#define KWP2000_MODIFY_BAUDRATE 1
#define KWP2000_MODIFY_RESET 2
#define KWP2000_MODIFY_END 3
/*
*********************************************************************
* structure
*********************************************************************
*/
typedef struct
{
unsigned char Format;
unsigned char headerSize;
unsigned char SId;
unsigned char TgtAddr;
unsigned char SrcAddr;
unsigned short Rx_len;
unsigned short Tx_len;
unsigned char RxBuffer[KWP2000_RX_BUFFER_SIZE];
unsigned char TxBuffer[KWP2000_TX_BUFFER_SIZE];
unsigned char *Request_Datas;
unsigned char *Response_Datas;
unsigned short kwp2000_Len;
unsigned char kwp2000_Checksum;
unsigned long tiCom_u32;
unsigned char ResponsePending;
} Kwp2000_ComState_t;
typedef struct
{
unsigned char typeOfModif;
unsigned long newBaudRate;
unsigned short resetType;
} Kwp2000_Modify_t;
/*
*********************************************************************
* variable
*********************************************************************
*/
extern Kwp2000_ComState_t Kwp2000_ComState;
extern Kwp2000_Modify_t Kwp2000_Modify;
extern unsigned long Kwp2000_ComMode;
/*
*********************************************************************
* function
*********************************************************************
*/
extern void Kwp2000_Timeout(void);
extern void Kwp2000_CommuniationDown(void);
extern void Kwp2000_Init(void);
extern void Kwp2000_AscRxInterrupt( void );
extern void Kwp2000_ComInit_Handle( void );
extern unsigned char Kwp2000_FormatAnalyse(void);
extern void Kwp2000_HeaderAnalyse(void);
extern unsigned char Kwp2000_PrepareHeader(unsigned char dataSize);
extern unsigned char Kwp2000_ChecksumCalculate(unsigned char *dataBuffer, unsigned short numberOfBytes);
extern unsigned char kwp2000_AddressTest(void);
extern unsigned char Kwp2000_VerifyChecksum(void);
extern void Kwp2000_ProtocolInit( void );
#endif