/* * CANopen Object Dictionary. * * This file was automatically generated with CANopenNode Object * Dictionary Editor. DON'T EDIT THIS FILE MANUALLY !!!! * Object Dictionary Editor is currently an older, but functional web * application. For more info see See 'Object_Dictionary_Editor/about.html' in * * For more information on CANopen Object Dictionary see . * * @file CO_OD.c * @author Janez Paternoster * @copyright 2010 - 2020 Janez Paternoster * * This file is part of CANopenNode, an opensource CANopen Stack. * Project home page is . * For more information on CANopen see . * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "CO_driver.h" #include "CO_OD.h" #include "CO_SDO.h" /******************************************************************************* DEFINITION AND INITIALIZATION OF OBJECT DICTIONARY VARIABLES *******************************************************************************/ /***** Definition for RAM variables *******************************************/ struct sCO_OD_RAM CO_OD_RAM = { CO_OD_FIRST_LAST_WORD, /*1001*/ 0x0, /*1002*/ 0x0L, /*1003*/ {0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}, /*1010*/ {0x3L}, /*1011*/ {0x1L}, /*2100*/ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*2103*/ 0x0, /*2104*/ 0x0, /*2107*/ {0x3E8, 0x0, 0x0, 0x0, 0x0}, /*2108*/ {0}, /*2109*/ {0}, /*2110*/ {0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L}, /*2120*/ {0x5, 0x1234567890ABCDEFLL, 0x234567890ABCDEF1LL, 12.345, 456.789, 0}, /*2130*/ {0x3, {'-', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0, 0x0L}, /*6000*/ {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /*6200*/ {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /*6401*/ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /*6411*/ {0, 0, 0, 0, 0, 0, 0, 0}, CO_OD_FIRST_LAST_WORD, }; /***** Definition for EEPROM variables ****************************************/ struct sCO_OD_EEPROM CO_OD_EEPROM = { CO_OD_FIRST_LAST_WORD, /*2106*/ 0x0L, /*2112*/ {1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L}, CO_OD_FIRST_LAST_WORD, }; /***** Definition for ROM variables *******************************************/ struct sCO_OD_ROM CO_OD_ROM = { //constant variables, stored in flash CO_OD_FIRST_LAST_WORD, /*1000*/ 0x0L, /*1005*/ 0x80L, /*1006*/ 0x0L, /*1007*/ 0x0L, /*1008*/ {'C', 'A', 'N', 'o', 'p', 'e', 'n', 'N', 'o', 'd', 'e'}, /*1009*/ {'3', '.', '0', '0'}, /*100A*/ {'3', '.', '0', '0'}, /*1012*/ 0x80000100L, /*1014*/ 0x80L, /*1015*/ 0x64, /*1016*/ {0x0L, 0x0L, 0x0L, 0x0L}, /*1017*/ 0x3E8, /*1018*/ {0x4, 0x0L, 0x0L, 0x0L, 0x0L}, /*1019*/ 0x0, /*1029*/ {0x0, 0x0, 0x1, 0x0, 0x0, 0x0}, /*1200*/{{0x2, 0x600L, 0x580L}}, /*1400*/{{0x2, 0x200L, 0xFF}, /*1401*/ {0x2, 0x300L, 0xFE}, /*1402*/ {0x2, 0x400L, 0xFE}, /*1403*/ {0x2, 0x500L, 0xFE}}, /*1600*/{{0x2, 0x62000108L, 0x62000208L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}, /*1601*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}, /*1602*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}, /*1603*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}}, /*1800*/{{0x6, 0x180L, 0xFF, 0x64, 0x0, 0x0, 0x0}, /*1801*/ {0x6, 0x280L, 0xFE, 0x0, 0x0, 0x0, 0x0}, /*1802*/ {0x6, 0x380L, 0xFE, 0x0, 0x0, 0x0, 0x0}, /*1803*/ {0x6, 0x480L, 0xFE, 0x0, 0x0, 0x0, 0x0}}, /*1A00*/{{0x2, 0x60000108L, 0x60000208L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}, /*1A01*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}, /*1A02*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}, /*1A03*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}}, /*1F80*/ 0x00000008L, /*2101*/ 0x30, /*2102*/ 0xFA, /*2111*/ {1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L}, CO_OD_FIRST_LAST_WORD }; /******************************************************************************* STRUCTURES FOR RECORD TYPE OBJECTS *******************************************************************************/ /*0x1018*/ const CO_OD_entryRecord_t OD_record1018[5] = { {(void*)&CO_OD_ROM.identity.maxSubIndex, 0x05, 1}, {(void*)&CO_OD_ROM.identity.vendorID, 0x85, 4}, {(void*)&CO_OD_ROM.identity.productCode, 0x85, 4}, {(void*)&CO_OD_ROM.identity.revisionNumber, 0x85, 4}, {(void*)&CO_OD_ROM.identity.serialNumber, 0x85, 4}}; /*0x1200*/ const CO_OD_entryRecord_t OD_record1200[3] = { {(void*)&CO_OD_ROM.SDOServerParameter[0].maxSubIndex, 0x05, 1}, {(void*)&CO_OD_ROM.SDOServerParameter[0].COB_IDClientToServer, 0x85, 4}, {(void*)&CO_OD_ROM.SDOServerParameter[0].COB_IDServerToClient, 0x85, 4}}; /*0x1400*/ const CO_OD_entryRecord_t OD_record1400[3] = { {(void*)&CO_OD_ROM.RPDOCommunicationParameter[0].maxSubIndex, 0x05, 1}, {(void*)&CO_OD_ROM.RPDOCommunicationParameter[0].COB_IDUsedByRPDO, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOCommunicationParameter[0].transmissionType, 0x0D, 1}}; /*0x1401*/ const CO_OD_entryRecord_t OD_record1401[3] = { {(void*)&CO_OD_ROM.RPDOCommunicationParameter[1].maxSubIndex, 0x05, 1}, {(void*)&CO_OD_ROM.RPDOCommunicationParameter[1].COB_IDUsedByRPDO, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOCommunicationParameter[1].transmissionType, 0x0D, 1}}; /*0x1402*/ const CO_OD_entryRecord_t OD_record1402[3] = { {(void*)&CO_OD_ROM.RPDOCommunicationParameter[2].maxSubIndex, 0x05, 1}, {(void*)&CO_OD_ROM.RPDOCommunicationParameter[2].COB_IDUsedByRPDO, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOCommunicationParameter[2].transmissionType, 0x0D, 1}}; /*0x1403*/ const CO_OD_entryRecord_t OD_record1403[3] = { {(void*)&CO_OD_ROM.RPDOCommunicationParameter[3].maxSubIndex, 0x05, 1}, {(void*)&CO_OD_ROM.RPDOCommunicationParameter[3].COB_IDUsedByRPDO, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOCommunicationParameter[3].transmissionType, 0x0D, 1}}; /*0x1600*/ const CO_OD_entryRecord_t OD_record1600[9] = { {(void*)&CO_OD_ROM.RPDOMappingParameter[0].numberOfMappedObjects, 0x0D, 1}, {(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject1, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject2, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject3, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject4, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject5, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject6, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject7, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject8, 0x8D, 4}}; /*0x1601*/ const CO_OD_entryRecord_t OD_record1601[9] = { {(void*)&CO_OD_ROM.RPDOMappingParameter[1].numberOfMappedObjects, 0x0D, 1}, {(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject1, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject2, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject3, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject4, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject5, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject6, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject7, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject8, 0x8D, 4}}; /*0x1602*/ const CO_OD_entryRecord_t OD_record1602[9] = { {(void*)&CO_OD_ROM.RPDOMappingParameter[2].numberOfMappedObjects, 0x0D, 1}, {(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject1, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject2, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject3, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject4, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject5, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject6, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject7, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject8, 0x8D, 4}}; /*0x1603*/ const CO_OD_entryRecord_t OD_record1603[9] = { {(void*)&CO_OD_ROM.RPDOMappingParameter[3].numberOfMappedObjects, 0x0D, 1}, {(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject1, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject2, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject3, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject4, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject5, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject6, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject7, 0x8D, 4}, {(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject8, 0x8D, 4}}; /*0x1800*/ const CO_OD_entryRecord_t OD_record1800[7] = { {(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].maxSubIndex, 0x05, 1}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].COB_IDUsedByTPDO, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].transmissionType, 0x0D, 1}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].inhibitTime, 0x8D, 2}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].compatibilityEntry, 0x0D, 1}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].eventTimer, 0x8D, 2}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].SYNCStartValue, 0x0D, 1}}; /*0x1801*/ const CO_OD_entryRecord_t OD_record1801[7] = { {(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].maxSubIndex, 0x05, 1}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].COB_IDUsedByTPDO, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].transmissionType, 0x0D, 1}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].inhibitTime, 0x8D, 2}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].compatibilityEntry, 0x0D, 1}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].eventTimer, 0x8D, 2}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].SYNCStartValue, 0x0D, 1}}; /*0x1802*/ const CO_OD_entryRecord_t OD_record1802[7] = { {(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].maxSubIndex, 0x05, 1}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].COB_IDUsedByTPDO, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].transmissionType, 0x0D, 1}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].inhibitTime, 0x8D, 2}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].compatibilityEntry, 0x0D, 1}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].eventTimer, 0x8D, 2}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].SYNCStartValue, 0x0D, 1}}; /*0x1803*/ const CO_OD_entryRecord_t OD_record1803[7] = { {(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].maxSubIndex, 0x05, 1}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].COB_IDUsedByTPDO, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].transmissionType, 0x0D, 1}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].inhibitTime, 0x8D, 2}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].compatibilityEntry, 0x0D, 1}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].eventTimer, 0x8D, 2}, {(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].SYNCStartValue, 0x0D, 1}}; /*0x1A00*/ const CO_OD_entryRecord_t OD_record1A00[9] = { {(void*)&CO_OD_ROM.TPDOMappingParameter[0].numberOfMappedObjects, 0x0D, 1}, {(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject1, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject2, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject3, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject4, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject5, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject6, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject7, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject8, 0x8D, 4}}; /*0x1A01*/ const CO_OD_entryRecord_t OD_record1A01[9] = { {(void*)&CO_OD_ROM.TPDOMappingParameter[1].numberOfMappedObjects, 0x0D, 1}, {(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject1, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject2, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject3, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject4, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject5, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject6, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject7, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject8, 0x8D, 4}}; /*0x1A02*/ const CO_OD_entryRecord_t OD_record1A02[9] = { {(void*)&CO_OD_ROM.TPDOMappingParameter[2].numberOfMappedObjects, 0x0D, 1}, {(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject1, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject2, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject3, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject4, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject5, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject6, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject7, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject8, 0x8D, 4}}; /*0x1A03*/ const CO_OD_entryRecord_t OD_record1A03[9] = { {(void*)&CO_OD_ROM.TPDOMappingParameter[3].numberOfMappedObjects, 0x0D, 1}, {(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject1, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject2, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject3, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject4, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject5, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject6, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject7, 0x8D, 4}, {(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject8, 0x8D, 4}}; /*0x2120*/ const CO_OD_entryRecord_t OD_record2120[6] = { {(void*)&CO_OD_RAM.testVar.maxSubIndex, 0x06, 1}, {(void*)&CO_OD_RAM.testVar.I64, 0xBE, 8}, {(void*)&CO_OD_RAM.testVar.U64, 0xBE, 8}, {(void*)&CO_OD_RAM.testVar.R32, 0xBE, 4}, {(void*)&CO_OD_RAM.testVar.R64, 0xBE, 8}, {0, 0x0E, 0}}; /*0x2130*/ const CO_OD_entryRecord_t OD_record2130[4] = { {(void*)&CO_OD_RAM.time.maxSubIndex, 0x06, 1}, {(void*)&CO_OD_RAM.time.string[0], 0x06, 30}, {(void*)&CO_OD_RAM.time.epochTimeBaseMs, 0x8E, 8}, {(void*)&CO_OD_RAM.time.epochTimeOffsetMs, 0xBE, 4}}; /******************************************************************************* OBJECT DICTIONARY *******************************************************************************/ const CO_OD_entry_t CO_OD[CO_OD_NoOfElements] = { {0x1000, 0x00, 0x85, 4, (void*)&CO_OD_ROM.deviceType}, {0x1001, 0x00, 0x36, 1, (void*)&CO_OD_RAM.errorRegister}, {0x1002, 0x00, 0xB6, 4, (void*)&CO_OD_RAM.manufacturerStatusRegister}, {0x1003, 0x08, 0x8E, 4, (void*)&CO_OD_RAM.preDefinedErrorField[0]}, {0x1005, 0x00, 0x8D, 4, (void*)&CO_OD_ROM.COB_ID_SYNCMessage}, {0x1006, 0x00, 0x8D, 4, (void*)&CO_OD_ROM.communicationCyclePeriod}, {0x1007, 0x00, 0x8D, 4, (void*)&CO_OD_ROM.synchronousWindowLength}, {0x1008, 0x00, 0x05, 11, (void*)&CO_OD_ROM.manufacturerDeviceName[0]}, {0x1009, 0x00, 0x05, 4, (void*)&CO_OD_ROM.manufacturerHardwareVersion[0]}, {0x100A, 0x00, 0x05, 4, (void*)&CO_OD_ROM.manufacturerSoftwareVersion[0]}, {0x1010, 0x01, 0x8E, 4, (void*)&CO_OD_RAM.storeParameters[0]}, {0x1011, 0x01, 0x8E, 4, (void*)&CO_OD_RAM.restoreDefaultParameters[0]}, {0x1012, 0x00, 0x85, 4, (void*)&CO_OD_ROM.COB_ID_TIME}, {0x1014, 0x00, 0x85, 4, (void*)&CO_OD_ROM.COB_ID_EMCY}, {0x1015, 0x00, 0x8D, 2, (void*)&CO_OD_ROM.inhibitTimeEMCY}, {0x1016, 0x04, 0x8D, 4, (void*)&CO_OD_ROM.consumerHeartbeatTime[0]}, {0x1017, 0x00, 0x8D, 2, (void*)&CO_OD_ROM.producerHeartbeatTime}, {0x1018, 0x04, 0x00, 0, (void*)&OD_record1018}, {0x1019, 0x00, 0x0D, 1, (void*)&CO_OD_ROM.synchronousCounterOverflowValue}, {0x1029, 0x06, 0x0D, 1, (void*)&CO_OD_ROM.errorBehavior[0]}, {0x1200, 0x02, 0x00, 0, (void*)&OD_record1200}, {0x1400, 0x02, 0x00, 0, (void*)&OD_record1400}, {0x1401, 0x02, 0x00, 0, (void*)&OD_record1401}, {0x1402, 0x02, 0x00, 0, (void*)&OD_record1402}, {0x1403, 0x02, 0x00, 0, (void*)&OD_record1403}, {0x1600, 0x08, 0x00, 0, (void*)&OD_record1600}, {0x1601, 0x08, 0x00, 0, (void*)&OD_record1601}, {0x1602, 0x08, 0x00, 0, (void*)&OD_record1602}, {0x1603, 0x08, 0x00, 0, (void*)&OD_record1603}, {0x1800, 0x06, 0x00, 0, (void*)&OD_record1800}, {0x1801, 0x06, 0x00, 0, (void*)&OD_record1801}, {0x1802, 0x06, 0x00, 0, (void*)&OD_record1802}, {0x1803, 0x06, 0x00, 0, (void*)&OD_record1803}, {0x1A00, 0x08, 0x00, 0, (void*)&OD_record1A00}, {0x1A01, 0x08, 0x00, 0, (void*)&OD_record1A01}, {0x1A02, 0x08, 0x00, 0, (void*)&OD_record1A02}, {0x1A03, 0x08, 0x00, 0, (void*)&OD_record1A03}, {0x1F80, 0x00, 0x8D, 4, (void*)&CO_OD_ROM.NMTStartup}, {0x2100, 0x00, 0x36, 10, (void*)&CO_OD_RAM.errorStatusBits[0]}, {0x2101, 0x00, 0x0D, 1, (void*)&CO_OD_ROM.CANNodeID}, {0x2102, 0x00, 0x8D, 2, (void*)&CO_OD_ROM.CANBitRate}, {0x2103, 0x00, 0x8E, 2, (void*)&CO_OD_RAM.SYNCCounter}, {0x2104, 0x00, 0x86, 2, (void*)&CO_OD_RAM.SYNCTime}, {0x2106, 0x00, 0x87, 4, (void*)&CO_OD_EEPROM.powerOnCounter}, {0x2107, 0x05, 0xBE, 2, (void*)&CO_OD_RAM.performance[0]}, {0x2108, 0x01, 0xB6, 2, (void*)&CO_OD_RAM.temperature[0]}, {0x2109, 0x01, 0xB6, 2, (void*)&CO_OD_RAM.voltage[0]}, {0x2110, 0x10, 0xFE, 4, (void*)&CO_OD_RAM.variableInt32[0]}, {0x2111, 0x10, 0xFD, 4, (void*)&CO_OD_ROM.variableROMInt32[0]}, {0x2112, 0x10, 0xFF, 4, (void*)&CO_OD_EEPROM.variableNVInt32[0]}, {0x2120, 0x05, 0x00, 0, (void*)&OD_record2120}, {0x2130, 0x03, 0x00, 0, (void*)&OD_record2130}, {0x6000, 0x08, 0x76, 1, (void*)&CO_OD_RAM.readInput8Bit[0]}, {0x6200, 0x08, 0x3E, 1, (void*)&CO_OD_RAM.writeOutput8Bit[0]}, {0x6401, 0x0C, 0xB6, 2, (void*)&CO_OD_RAM.readAnalogueInput16Bit[0]}, {0x6411, 0x08, 0xBE, 2, (void*)&CO_OD_RAM.writeAnalogueOutput16Bit[0]}, };