This repository has been archived by the owner on Feb 13, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathdefinitionSSM.h
executable file
·166 lines (144 loc) · 5.64 KB
/
definitionSSM.h
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
/*/
definitionSSM.h (2005.06.29)
/*/
#pragma once
/*/
INFORMATION ELEMENT DEFINITIONS
/*/
#define IE_SSM_HEADER 0x80
#define IE_SSM_SSM 0x10
#define IE_SSM_ECU 0xF0
/*/
MESSAGE DEFINITIONS
/*/
#define MSG_SSM_ReadAddressBlock 0xA0
#define MSG_SSM_ReadAddressSingle 0xA8
#define MSG_SSM_WriteAddressBlock 0xB0
#define MSG_SSM_WriteAddressSingle 0xB8
#define MSG_SSM_QueryECUType 0xBF
#define MSG_SSM_ReadAddressBlock_Response 0xE0
#define MSG_SSM_ReadAddressSingle_Response 0xE8
#define MSG_SSM_WriteAddressSingle_Response 0xF8
#define MSG_SSM_QueryECUType_Response 0xFF
/*/
ADDRESS DEFINITIONS
/*/
#define ADDRESS_RESET_ECU 0x00000060
#define ADDRESS_IGNITION_RETARD 0x0000006F
#define ADDRESS_IDLE_ADJUST_NORMAL 0x00000070
#define ADDRESS_IDLE_ADJUST_AIRCON 0x00000071
#define ADDRESS_DTC_CURRENT_99_00_START 0x0000008E
#define ADDRESS_DTC_CURRENT_99_00_END 0x00000097
#define ADDRESS_DTC_HISTORIC_99_00_START 0x000000A4
#define ADDRESS_DTC_HISTORIC_99_00_END 0x000000AD
#define ADDRESS_DTC_CURRENT_01_03_START_1 0x0000008E
#define ADDRESS_DTC_CURRENT_01_03_END_1 0x000000AD
#define ADDRESS_DTC_CURRENT_01_03_START_2 0x000000F0
#define ADDRESS_DTC_CURRENT_01_03_END_2 0x000000F3
#define ADDRESS_DTC_HISTORIC_01_03_START_1 0x000000AE
#define ADDRESS_DTC_HISTORIC_01_03_END_1 0x000000CD
#define ADDRESS_DTC_HISTORIC_01_03_START_2 0x000000F4
#define ADDRESS_DTC_HISTORIC_01_03_END_2 0x000000F7
#define ADDRESS_DTC_CURRENT_04_05_START_1 0x00000123
#define ADDRESS_DTC_CURRENT_04_05_END_1 0x0000012A
#define ADDRESS_DTC_CURRENT_04_05_START_2 0x00000150
#define ADDRESS_DTC_CURRENT_04_05_END_2 0x00000154
#define ADDRESS_DTC_CURRENT_04_05_START_3 0x00000160
#define ADDRESS_DTC_CURRENT_04_05_END_3 0x00000164
#define ADDRESS_DTC_HISTORIC_04_05_START_1 0x0000012B
#define ADDRESS_DTC_HISTORIC_04_05_END_1 0x00000132
#define ADDRESS_DTC_HISTORIC_04_05_START_2 0x00000155
#define ADDRESS_DTC_HISTORIC_04_05_END_2 0x00000159
#define ADDRESS_DTC_HISTORIC_04_05_START_3 0x00000165
#define ADDRESS_DTC_HISTORIC_04_05_END_3 0x00000169
/*/ DEVELOPERS NOTE /*/
//
// The following compiler directive is VERY IMPORTANT - DO NOT REMOVE !!!
// By default all packing alignment is 8 bits. The following directive ensures
// that the structure elements follow straight after each other, ie 1 bit packing.
// If we do not tell the compiler to do the following we will end up with some very
// strange structure behaviour.
#pragma pack(1)
/*/
INFORMATION ELEMENT STRUCTURES
/*/
typedef struct struct_IE_SSM_MessageHeader
{
unsigned char cHeaderIdentifier;
unsigned char cSource;
unsigned char cDestination;
unsigned char cDataLength;
} STRUCT_IE_SSM_MESSAGEHEADER, FAR* LPSTRUCT_IE_SSM_MESSAGEHEADER;
typedef struct struct_IE_SSM_MemoryAddress
{
unsigned char cAddress[3];
} STRUCT_IE_SSM_MEMORYADDRESS, FAR* LPSTRUCT_IE_SSM_MEMORYADDRESS;
/*/
MESSAGE STRUCTURES
/*/
typedef struct struct_MSG_SSM_QUERY
{
STRUCT_IE_SSM_MESSAGEHEADER Header;
unsigned char cMessageType;
unsigned char cChecksum;
} STRUCT_MSG_SSM_QUERY, FAR* LPSTRUCT_MSG_SSM_QUERY;
typedef struct struct_MSG_SSM_QUERYRESPONSE
{
STRUCT_IE_SSM_MESSAGEHEADER Header;
unsigned char cMessageType;
unsigned char cUnknown[3];
unsigned char cID[5];
unsigned char cSupported;
} STRUCT_MSG_SSM_QUERYRESPONSE, FAR* LPSTRUCT_MSG_SSM_QUERYRESPONSE;
typedef struct struct_MSG_SSM_ReadAddressSingle
{
STRUCT_IE_SSM_MESSAGEHEADER Header;
unsigned char cMessageType;
unsigned char cPad;
unsigned char cAddress[3];
unsigned char cChecksum;
} STRUCT_MSG_SSM_READADDRESSSINGLE, FAR* LPSTRUCT_MSG_SSM_READADDRESSSINGLE;
typedef struct struct_MSG_SSM_WriteAddressSingle
{
STRUCT_IE_SSM_MESSAGEHEADER Header;
unsigned char cMessageType;
unsigned char cAddress[3];
unsigned char cValue;
unsigned char cChecksum;
} STRUCT_MSG_SSM_WRITEADDRESSSINGLE, FAR* LPSTRUCT_MSG_SSM_WRITEADDRESSSINGLE;
typedef struct struct_MSG_SSM_LiveQuery
{
STRUCT_IE_SSM_MESSAGEHEADER Header;
unsigned char cMessageType;
unsigned char cPad;
} STRUCT_MSG_SSM_LIVEQUERY, FAR* LPSTRUCT_MSG_SSM_LIVEQUERY;
typedef struct struct_MSG_SSM_DTCQuery
{
STRUCT_IE_SSM_MESSAGEHEADER Header;
unsigned char cMessageType;
unsigned char cPad;
} STRUCT_MSG_SSM_DTCQUERY, FAR* LPSTRUCT_MSG_SSM_DTCQUERY;
typedef struct struct_MSG_SSM_ReadAddressSingleResponse
{
STRUCT_IE_SSM_MESSAGEHEADER Header;
unsigned char cMessageType;
} STRUCT_MSG_SSM_READADDRESSSINGLERESPONSE, FAR* LPSTRUCT_MSG_SSM_READADDRESSSINGLERESPONSE;
typedef struct struct_MSG_SSM_WriteAddressSingleResponse
{
STRUCT_IE_SSM_MESSAGEHEADER Header;
unsigned char cMessageType;
} STRUCT_MSG_SSM_WRITEADDRESSSINGLERESPONSE, FAR* LPSTRUCT_MSG_SSM_WRITEADDRESSSINGLERESPONSE;
typedef struct struct_MSG_SSM_LiveQueryResponse
{
STRUCT_IE_SSM_MESSAGEHEADER Header;
unsigned char cMessageType;
} STRUCT_MSG_SSM_LIVEQUERYRESPONSE, FAR* LPSTRUCT_MSG_SSM_LIVEQUERYRESPONSE;
typedef struct struct_MSG_SSM_DTCQueryResponse
{
STRUCT_IE_SSM_MESSAGEHEADER Header;
unsigned char cMessageType;
} STRUCT_MSG_SSM_DTCQUERYRESPONSE, FAR* LPSTRUCT_MSG_SSM_DTCQUERYRESPONSE;
/*/ DEVELOPERS NOTE /*/
//
// Restore the original packing method
#pragma pack()