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