1 /*
2  * Copyright (c) 2019 Vestas Wind Systems A/S
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 /*******************************************************************************
8 
9    File - CO_OD.c/CO_OD.h
10    CANopen Object Dictionary.
11 
12    This file was automatically generated with libedssharp Object
13    Dictionary Editor v0.8-7-g2e53bbc   DON'T EDIT THIS FILE MANUALLY !!!!
14 *******************************************************************************/
15 
16 
17 #include "CO_driver.h"
18 #include "CO_OD.h"
19 #include "CO_SDO.h"
20 
21 /*******************************************************************************
22    DEFINITION AND INITIALIZATION OF OBJECT DICTIONARY VARIABLES
23 *******************************************************************************/
24 
25 
26 /***** Definition for ROM variables ********************************************/
27 struct sCO_OD_ROM CO_OD_ROM = {
28 	CO_OD_FIRST_LAST_WORD,
29 
30 /*1000*/ 0x0000L,
31 /*1005*/ 0x0080L,
32 /*1006*/ 0x0000L,
33 /*1007*/ 0x0000L,
34 /*1008*/ { 'Z', 'e', 'p', 'h', 'y', 'r', ' ', 'R', 'T', 'O', 'S', '/', 'C', 'A', 'N', 'o', 'p', 'e', 'n', 'N', 'o', 'd', 'e' },
35 /*1009*/ { '3', '.', '0', '0' },
36 /*100a*/ { '3', '.', '0', '0' },
37 /*1012*/ 0x0000L,
38 /*1014*/ 0x0080L,
39 /*1015*/ 0x64,
40 /*1016*/ { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
41 /*1017*/ 0x3e8,
42 /*1018*/ { 0x4L, 0x0000L, 0x0000L, 0x0000L, 0x0000L },
43 /*1019*/ 0x0L,
44 /*1029*/ { 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 },
45 /*1200*/ { { 0x2L, 0x0600L, 0x0580L } },
46 /*1400*/ { { 0x2L, 0x0200L, 0xfeL },
47 /*1401*/ { 0x2L, 0x0300L, 0xfeL },
48 /*1402*/ { 0x2L, 0x0400L, 0xfeL },
49 /*1403*/ { 0x2L, 0x0500L, 0xfeL } },
50 /*1600*/ { { 0x0L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L },
51 /*1601*/ { 0x0L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L },
52 /*1602*/ { 0x0L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L },
53 /*1603*/ { 0x0L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L } },
54 /*1800*/ { { 0x6L, 0x0180L, 0xfeL, 0x00, 0x0L, 0x00, 0x0L },
55 /*1801*/ { 0x6L, 0x0280L, 0xfeL, 0x00, 0x0L, 0x00, 0x0L },
56 /*1802*/ { 0x6L, 0x0380L, 0xfeL, 0x00, 0x0L, 0x00, 0x0L },
57 /*1803*/ { 0x6L, 0x0480L, 0xfeL, 0x00, 0x0L, 0x00, 0x0L } },
58 /*1a00*/ { { 0x0L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L },
59 /*1a01*/ { 0x0L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L },
60 /*1a02*/ { 0x0L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L },
61 /*1a03*/ { 0x0L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L, 0x0000L } },
62 /*1f80*/ 0x0000L,
63 
64 	CO_OD_FIRST_LAST_WORD,
65 };
66 
67 
68 /***** Definition for RAM variables ********************************************/
69 struct sCO_OD_RAM CO_OD_RAM = {
70 	CO_OD_FIRST_LAST_WORD,
71 
72 /*1001*/ 0x0L,
73 /*1002*/ 0x0000L,
74 /*1003*/ { 0, 0, 0, 0, 0, 0, 0, 0 },
75 /*1010*/ { 0x00000003 },
76 /*1011*/ { 0x00000001 },
77 /*1f50*/ { 0 },
78 /*1f51*/ { 0x0L },
79 /*1f56*/ { 0x0000L },
80 /*1f57*/ { 0x0000L },
81 /*2100*/ { 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L },
82 /*2102*/ 0x0000L,
83 
84 	CO_OD_FIRST_LAST_WORD,
85 };
86 
87 
88 /***** Definition for EEPROM variables ********************************************/
89 struct sCO_OD_EEPROM CO_OD_EEPROM = {
90 	CO_OD_FIRST_LAST_WORD,
91 
92 /*2101*/ 0x0000L,
93 
94 	CO_OD_FIRST_LAST_WORD,
95 };
96 
97 
98 
99 
100 /*******************************************************************************
101    STRUCTURES FOR RECORD TYPE OBJECTS
102 *******************************************************************************/
103 
104 
105 /*0x1018*/ const CO_OD_entryRecord_t OD_record1018[5] = {
106 	{ (void *)&CO_OD_ROM.identity.maxSubIndex, 0x05, 0x1 },
107 	{ (void *)&CO_OD_ROM.identity.vendorID, 0x85, 0x4 },
108 	{ (void *)&CO_OD_ROM.identity.productCode, 0x85, 0x4 },
109 	{ (void *)&CO_OD_ROM.identity.revisionNumber, 0x85, 0x4 },
110 	{ (void *)&CO_OD_ROM.identity.serialNumber, 0x85, 0x4 },
111 };
112 
113 /*0x1200*/ const CO_OD_entryRecord_t OD_record1200[3] = {
114 	{ (void *)&CO_OD_ROM.SDOServerParameter[0].maxSubIndex, 0x05, 0x1 },
115 	{ (void *)&CO_OD_ROM.SDOServerParameter[0].COB_IDClientToServer, 0x85, 0x4 },
116 	{ (void *)&CO_OD_ROM.SDOServerParameter[0].COB_IDServerToClient, 0x85, 0x4 },
117 };
118 
119 /*0x1400*/ const CO_OD_entryRecord_t OD_record1400[3] = {
120 	{ (void *)&CO_OD_ROM.RPDOCommunicationParameter[0].maxSubIndex, 0x05, 0x1 },
121 	{ (void *)&CO_OD_ROM.RPDOCommunicationParameter[0].COB_IDUsedByRPDO, 0x8d, 0x4 },
122 	{ (void *)&CO_OD_ROM.RPDOCommunicationParameter[0].transmissionType, 0x0d, 0x1 },
123 };
124 
125 /*0x1401*/ const CO_OD_entryRecord_t OD_record1401[3] = {
126 	{ (void *)&CO_OD_ROM.RPDOCommunicationParameter[1].maxSubIndex, 0x05, 0x1 },
127 	{ (void *)&CO_OD_ROM.RPDOCommunicationParameter[1].COB_IDUsedByRPDO, 0x8d, 0x4 },
128 	{ (void *)&CO_OD_ROM.RPDOCommunicationParameter[1].transmissionType, 0x0d, 0x1 },
129 };
130 
131 /*0x1402*/ const CO_OD_entryRecord_t OD_record1402[3] = {
132 	{ (void *)&CO_OD_ROM.RPDOCommunicationParameter[2].maxSubIndex, 0x05, 0x1 },
133 	{ (void *)&CO_OD_ROM.RPDOCommunicationParameter[2].COB_IDUsedByRPDO, 0x8d, 0x4 },
134 	{ (void *)&CO_OD_ROM.RPDOCommunicationParameter[2].transmissionType, 0x0d, 0x1 },
135 };
136 
137 /*0x1403*/ const CO_OD_entryRecord_t OD_record1403[3] = {
138 	{ (void *)&CO_OD_ROM.RPDOCommunicationParameter[3].maxSubIndex, 0x05, 0x1 },
139 	{ (void *)&CO_OD_ROM.RPDOCommunicationParameter[3].COB_IDUsedByRPDO, 0x8d, 0x4 },
140 	{ (void *)&CO_OD_ROM.RPDOCommunicationParameter[3].transmissionType, 0x0d, 0x1 },
141 };
142 
143 /*0x1600*/ const CO_OD_entryRecord_t OD_record1600[9] = {
144 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[0].numberOfMappedObjects, 0x0d, 0x1 },
145 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject1, 0x8d, 0x4 },
146 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject2, 0x8d, 0x4 },
147 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject3, 0x8d, 0x4 },
148 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject4, 0x8d, 0x4 },
149 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject5, 0x8d, 0x4 },
150 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject6, 0x8d, 0x4 },
151 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject7, 0x8d, 0x4 },
152 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject8, 0x8d, 0x4 },
153 };
154 
155 /*0x1601*/ const CO_OD_entryRecord_t OD_record1601[9] = {
156 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[1].numberOfMappedObjects, 0x0d, 0x1 },
157 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject1, 0x8d, 0x4 },
158 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject2, 0x8d, 0x4 },
159 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject3, 0x8d, 0x4 },
160 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject4, 0x8d, 0x4 },
161 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject5, 0x8d, 0x4 },
162 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject6, 0x8d, 0x4 },
163 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject7, 0x8d, 0x4 },
164 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject8, 0x8d, 0x4 },
165 };
166 
167 /*0x1602*/ const CO_OD_entryRecord_t OD_record1602[9] = {
168 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[2].numberOfMappedObjects, 0x0d, 0x1 },
169 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject1, 0x8d, 0x4 },
170 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject2, 0x8d, 0x4 },
171 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject3, 0x8d, 0x4 },
172 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject4, 0x8d, 0x4 },
173 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject5, 0x8d, 0x4 },
174 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject6, 0x8d, 0x4 },
175 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject7, 0x8d, 0x4 },
176 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject8, 0x8d, 0x4 },
177 };
178 
179 /*0x1603*/ const CO_OD_entryRecord_t OD_record1603[9] = {
180 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[3].numberOfMappedObjects, 0x0d, 0x1 },
181 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject1, 0x8d, 0x4 },
182 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject2, 0x8d, 0x4 },
183 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject3, 0x8d, 0x4 },
184 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject4, 0x8d, 0x4 },
185 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject5, 0x8d, 0x4 },
186 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject6, 0x8d, 0x4 },
187 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject7, 0x8d, 0x4 },
188 	{ (void *)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject8, 0x8d, 0x4 },
189 };
190 
191 /*0x1800*/ const CO_OD_entryRecord_t OD_record1800[7] = {
192 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[0].maxSubIndex, 0x05, 0x1 },
193 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[0].COB_IDUsedByTPDO, 0x8d, 0x4 },
194 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[0].transmissionType, 0x0d, 0x1 },
195 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[0].inhibitTime, 0x8d, 0x2 },
196 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[0].compatibilityEntry, 0x05, 0x1 },
197 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[0].eventTimer, 0x8d, 0x2 },
198 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[0].SYNCStartValue, 0x0d, 0x1 },
199 };
200 
201 /*0x1801*/ const CO_OD_entryRecord_t OD_record1801[7] = {
202 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[1].maxSubIndex, 0x05, 0x1 },
203 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[1].COB_IDUsedByTPDO, 0x8d, 0x4 },
204 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[1].transmissionType, 0x0d, 0x1 },
205 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[1].inhibitTime, 0x8d, 0x2 },
206 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[1].compatibilityEntry, 0x05, 0x1 },
207 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[1].eventTimer, 0x8d, 0x2 },
208 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[1].SYNCStartValue, 0x0d, 0x1 },
209 };
210 
211 /*0x1802*/ const CO_OD_entryRecord_t OD_record1802[7] = {
212 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[2].maxSubIndex, 0x05, 0x1 },
213 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[2].COB_IDUsedByTPDO, 0x8d, 0x4 },
214 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[2].transmissionType, 0x0d, 0x1 },
215 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[2].inhibitTime, 0x8d, 0x2 },
216 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[2].compatibilityEntry, 0x05, 0x1 },
217 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[2].eventTimer, 0x8d, 0x2 },
218 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[2].SYNCStartValue, 0x0d, 0x1 },
219 };
220 
221 /*0x1803*/ const CO_OD_entryRecord_t OD_record1803[7] = {
222 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[3].maxSubIndex, 0x05, 0x1 },
223 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[3].COB_IDUsedByTPDO, 0x8d, 0x4 },
224 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[3].transmissionType, 0x0d, 0x1 },
225 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[3].inhibitTime, 0x8d, 0x2 },
226 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[3].compatibilityEntry, 0x05, 0x1 },
227 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[3].eventTimer, 0x8d, 0x2 },
228 	{ (void *)&CO_OD_ROM.TPDOCommunicationParameter[3].SYNCStartValue, 0x0d, 0x1 },
229 };
230 
231 /*0x1a00*/ const CO_OD_entryRecord_t OD_record1a00[9] = {
232 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[0].numberOfMappedObjects, 0x0d, 0x1 },
233 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject1, 0x8d, 0x4 },
234 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject2, 0x8d, 0x4 },
235 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject3, 0x8d, 0x4 },
236 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject4, 0x8d, 0x4 },
237 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject5, 0x8d, 0x4 },
238 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject6, 0x8d, 0x4 },
239 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject7, 0x8d, 0x4 },
240 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject8, 0x8d, 0x4 },
241 };
242 
243 /*0x1a01*/ const CO_OD_entryRecord_t OD_record1a01[9] = {
244 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[1].numberOfMappedObjects, 0x0d, 0x1 },
245 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject1, 0x8d, 0x4 },
246 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject2, 0x8d, 0x4 },
247 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject3, 0x8d, 0x4 },
248 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject4, 0x8d, 0x4 },
249 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject5, 0x8d, 0x4 },
250 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject6, 0x8d, 0x4 },
251 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject7, 0x8d, 0x4 },
252 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject8, 0x8d, 0x4 },
253 };
254 
255 /*0x1a02*/ const CO_OD_entryRecord_t OD_record1a02[9] = {
256 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[2].numberOfMappedObjects, 0x0d, 0x1 },
257 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject1, 0x8d, 0x4 },
258 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject2, 0x8d, 0x4 },
259 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject3, 0x8d, 0x4 },
260 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject4, 0x8d, 0x4 },
261 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject5, 0x8d, 0x4 },
262 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject6, 0x8d, 0x4 },
263 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject7, 0x8d, 0x4 },
264 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject8, 0x8d, 0x4 },
265 };
266 
267 /*0x1a03*/ const CO_OD_entryRecord_t OD_record1a03[9] = {
268 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[3].numberOfMappedObjects, 0x0d, 0x1 },
269 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject1, 0x8d, 0x4 },
270 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject2, 0x8d, 0x4 },
271 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject3, 0x8d, 0x4 },
272 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject4, 0x8d, 0x4 },
273 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject5, 0x8d, 0x4 },
274 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject6, 0x8d, 0x4 },
275 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject7, 0x8d, 0x4 },
276 	{ (void *)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject8, 0x8d, 0x4 },
277 };
278 
279 /*******************************************************************************
280    OBJECT DICTIONARY
281 *******************************************************************************/
282 const CO_OD_entry_t CO_OD[45] = {
283 
284 	{ 0x1000, 0x00, 0x85, 4, (void *)&CO_OD_ROM.deviceType },
285 	{ 0x1001, 0x00, 0x26, 1, (void *)&CO_OD_RAM.errorRegister },
286 	{ 0x1002, 0x00, 0xa6, 4, (void *)&CO_OD_RAM.manufacturerStatusRegister },
287 	{ 0x1003, 0x08, 0x8e, 4, (void *)&CO_OD_RAM.preDefinedErrorField[0] },
288 	{ 0x1005, 0x00, 0x8d, 4, (void *)&CO_OD_ROM.COB_ID_SYNCMessage },
289 	{ 0x1006, 0x00, 0x8d, 4, (void *)&CO_OD_ROM.communicationCyclePeriod },
290 	{ 0x1007, 0x00, 0x8d, 4, (void *)&CO_OD_ROM.synchronousWindowLength },
291 	{ 0x1008, 0x00, 0x05, 23, (void *)&CO_OD_ROM.manufacturerDeviceName },
292 	{ 0x1009, 0x00, 0x05, 4, (void *)&CO_OD_ROM.manufacturerHardwareVersion },
293 	{ 0x100a, 0x00, 0x05, 4, (void *)&CO_OD_ROM.manufacturerSoftwareVersion },
294 	{ 0x1010, 0x01, 0x8e, 4, (void *)&CO_OD_RAM.storeParameters[0] },
295 	{ 0x1011, 0x01, 0x8e, 4, (void *)&CO_OD_RAM.restoreDefaultParameters[0] },
296 	{ 0x1012, 0x00, 0x85, 4, (void *)&CO_OD_ROM.COB_ID_TIME },
297 	{ 0x1014, 0x00, 0x85, 4, (void *)&CO_OD_ROM.COB_ID_EMCY },
298 	{ 0x1015, 0x00, 0x8d, 2, (void *)&CO_OD_ROM.inhibitTimeEMCY },
299 	{ 0x1016, 0x04, 0x8d, 4, (void *)&CO_OD_ROM.consumerHeartbeatTime[0] },
300 	{ 0x1017, 0x00, 0x8d, 2, (void *)&CO_OD_ROM.producerHeartbeatTime },
301 	{ 0x1018, 0x04, 0x00, 0, (void *)&OD_record1018 },
302 	{ 0x1019, 0x00, 0x0d, 1, (void *)&CO_OD_ROM.synchronousCounterOverflowValue },
303 	{ 0x1029, 0x06, 0x0d, 1, (void *)&CO_OD_ROM.errorBehavior[0] },
304 	{ 0x1200, 0x02, 0x00, 0, (void *)&OD_record1200 },
305 	{ 0x1400, 0x02, 0x00, 0, (void *)&OD_record1400 },
306 	{ 0x1401, 0x02, 0x00, 0, (void *)&OD_record1401 },
307 	{ 0x1402, 0x02, 0x00, 0, (void *)&OD_record1402 },
308 	{ 0x1403, 0x02, 0x00, 0, (void *)&OD_record1403 },
309 	{ 0x1600, 0x08, 0x00, 0, (void *)&OD_record1600 },
310 	{ 0x1601, 0x08, 0x00, 4, (void *)&OD_record1601 },
311 	{ 0x1602, 0x08, 0x00, 4, (void *)&OD_record1602 },
312 	{ 0x1603, 0x08, 0x00, 4, (void *)&OD_record1603 },
313 	{ 0x1800, 0x06, 0x00, 0, (void *)&OD_record1800 },
314 	{ 0x1801, 0x06, 0x00, 4, (void *)&OD_record1801 },
315 	{ 0x1802, 0x06, 0x00, 4, (void *)&OD_record1802 },
316 	{ 0x1803, 0x06, 0x00, 4, (void *)&OD_record1803 },
317 	{ 0x1a00, 0x08, 0x00, 0, (void *)&OD_record1a00 },
318 	{ 0x1a01, 0x08, 0x00, 4, (void *)&OD_record1a01 },
319 	{ 0x1a02, 0x08, 0x00, 0, (void *)&OD_record1a02 },
320 	{ 0x1a03, 0x08, 0x00, 0, (void *)&OD_record1a03 },
321 	{ 0x1f50, 0x01, 0x0a, 0, (void *)0 },
322 	{ 0x1f51, 0x01, 0x0e, 1, (void *)&CO_OD_RAM.programControl[0] },
323 	{ 0x1f56, 0x01, 0x86, 4, (void *)&CO_OD_RAM.programSoftwareIdentification[0] },
324 	{ 0x1f57, 0x01, 0x86, 4, (void *)&CO_OD_RAM.flashStatusIdentification[0] },
325 	{ 0x1f80, 0x00, 0x8d, 4, (void *)&CO_OD_ROM.NMTStartup },
326 	{ 0x2100, 0x00, 0x26, 10, (void *)&CO_OD_RAM.errorStatusBits },
327 	{ 0x2101, 0x00, 0xa7, 4, (void *)&CO_OD_EEPROM.powerOnCounter },
328 	{ 0x2102, 0x00, 0xfe, 4, (void *)&CO_OD_RAM.buttonPressCounter },
329 };
330