1 /* 2 * CANopen Object Dictionary. 3 * 4 * This file was automatically generated with CANopenNode Object 5 * Dictionary Editor. DON'T EDIT THIS FILE MANUALLY !!!! 6 * Object Dictionary Editor is currently an older, but functional web 7 * application. For more info see See 'Object_Dictionary_Editor/about.html' in 8 * <http://sourceforge.net/p/canopennode/code_complete/ci/master/tree/> 9 * For more information on CANopen Object Dictionary see <CO_SDO.h>. 10 * 11 * @file CO_OD.c 12 * @author Janez Paternoster 13 * @copyright 2010 - 2020 Janez Paternoster 14 * 15 * This file is part of CANopenNode, an opensource CANopen Stack. 16 * Project home page is <https://github.com/CANopenNode/CANopenNode>. 17 * For more information on CANopen see <http://www.can-cia.org/>. 18 * 19 * Licensed under the Apache License, Version 2.0 (the "License"); 20 * you may not use this file except in compliance with the License. 21 * You may obtain a copy of the License at 22 * 23 * http://www.apache.org/licenses/LICENSE-2.0 24 * 25 * Unless required by applicable law or agreed to in writing, software 26 * distributed under the License is distributed on an "AS IS" BASIS, 27 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 28 * See the License for the specific language governing permissions and 29 * limitations under the License. 30 */ 31 32 33 #include "CO_driver.h" 34 #include "CO_OD.h" 35 #include "CO_SDO.h" 36 37 38 /******************************************************************************* 39 DEFINITION AND INITIALIZATION OF OBJECT DICTIONARY VARIABLES 40 *******************************************************************************/ 41 42 /***** Definition for RAM variables *******************************************/ 43 struct sCO_OD_RAM CO_OD_RAM = { 44 CO_OD_FIRST_LAST_WORD, 45 46 /*1001*/ 0x0, 47 /*1002*/ 0x0L, 48 /*1003*/ {0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}, 49 /*1010*/ {0x3L}, 50 /*1011*/ {0x1L}, 51 /*2100*/ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, 52 /*2103*/ 0x0, 53 /*2104*/ 0x0, 54 /*2107*/ {0x3E8, 0x0, 0x0, 0x0, 0x0}, 55 /*2108*/ {0}, 56 /*2109*/ {0}, 57 /*2110*/ {0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L}, 58 /*2120*/ {0x5, 0x1234567890ABCDEFLL, 0x234567890ABCDEF1LL, 12.345, 456.789, 0}, 59 /*2130*/ {0x3, {'-', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0, 0x0L}, 60 /*6000*/ {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, 61 /*6200*/ {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, 62 /*6401*/ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 63 /*6411*/ {0, 0, 0, 0, 0, 0, 0, 0}, 64 65 CO_OD_FIRST_LAST_WORD, 66 }; 67 68 69 /***** Definition for EEPROM variables ****************************************/ 70 struct sCO_OD_EEPROM CO_OD_EEPROM = { 71 CO_OD_FIRST_LAST_WORD, 72 73 /*2106*/ 0x0L, 74 /*2112*/ {1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L}, 75 76 CO_OD_FIRST_LAST_WORD, 77 }; 78 79 80 /***** Definition for ROM variables *******************************************/ 81 struct sCO_OD_ROM CO_OD_ROM = { //constant variables, stored in flash 82 CO_OD_FIRST_LAST_WORD, 83 84 /*1000*/ 0x0L, 85 /*1005*/ 0x80L, 86 /*1006*/ 0x0L, 87 /*1007*/ 0x0L, 88 /*1008*/ {'C', 'A', 'N', 'o', 'p', 'e', 'n', 'N', 'o', 'd', 'e'}, 89 /*1009*/ {'3', '.', '0', '0'}, 90 /*100A*/ {'3', '.', '0', '0'}, 91 /*1012*/ 0x80000100L, 92 /*1014*/ 0x80L, 93 /*1015*/ 0x64, 94 /*1016*/ {0x0L, 0x0L, 0x0L, 0x0L}, 95 /*1017*/ 0x3E8, 96 /*1018*/ {0x4, 0x0L, 0x0L, 0x0L, 0x0L}, 97 /*1019*/ 0x0, 98 /*1029*/ {0x0, 0x0, 0x1, 0x0, 0x0, 0x0}, 99 /*1200*/{{0x2, 0x600L, 0x580L}}, 100 /*1400*/{{0x2, 0x200L, 0xFF}, 101 /*1401*/ {0x2, 0x300L, 0xFE}, 102 /*1402*/ {0x2, 0x400L, 0xFE}, 103 /*1403*/ {0x2, 0x500L, 0xFE}}, 104 /*1600*/{{0x2, 0x62000108L, 0x62000208L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}, 105 /*1601*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}, 106 /*1602*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}, 107 /*1603*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}}, 108 /*1800*/{{0x6, 0x180L, 0xFF, 0x64, 0x0, 0x0, 0x0}, 109 /*1801*/ {0x6, 0x280L, 0xFE, 0x0, 0x0, 0x0, 0x0}, 110 /*1802*/ {0x6, 0x380L, 0xFE, 0x0, 0x0, 0x0, 0x0}, 111 /*1803*/ {0x6, 0x480L, 0xFE, 0x0, 0x0, 0x0, 0x0}}, 112 /*1A00*/{{0x2, 0x60000108L, 0x60000208L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}, 113 /*1A01*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}, 114 /*1A02*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}, 115 /*1A03*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}}, 116 /*1F80*/ 0x00000008L, 117 /*2101*/ 0x30, 118 /*2102*/ 0xFA, 119 /*2111*/ {1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L}, 120 121 CO_OD_FIRST_LAST_WORD 122 }; 123 124 125 /******************************************************************************* 126 STRUCTURES FOR RECORD TYPE OBJECTS 127 *******************************************************************************/ 128 /*0x1018*/ const CO_OD_entryRecord_t OD_record1018[5] = { 129 {(void*)&CO_OD_ROM.identity.maxSubIndex, 0x05, 1}, 130 {(void*)&CO_OD_ROM.identity.vendorID, 0x85, 4}, 131 {(void*)&CO_OD_ROM.identity.productCode, 0x85, 4}, 132 {(void*)&CO_OD_ROM.identity.revisionNumber, 0x85, 4}, 133 {(void*)&CO_OD_ROM.identity.serialNumber, 0x85, 4}}; 134 /*0x1200*/ const CO_OD_entryRecord_t OD_record1200[3] = { 135 {(void*)&CO_OD_ROM.SDOServerParameter[0].maxSubIndex, 0x05, 1}, 136 {(void*)&CO_OD_ROM.SDOServerParameter[0].COB_IDClientToServer, 0x85, 4}, 137 {(void*)&CO_OD_ROM.SDOServerParameter[0].COB_IDServerToClient, 0x85, 4}}; 138 /*0x1400*/ const CO_OD_entryRecord_t OD_record1400[3] = { 139 {(void*)&CO_OD_ROM.RPDOCommunicationParameter[0].maxSubIndex, 0x05, 1}, 140 {(void*)&CO_OD_ROM.RPDOCommunicationParameter[0].COB_IDUsedByRPDO, 0x8D, 4}, 141 {(void*)&CO_OD_ROM.RPDOCommunicationParameter[0].transmissionType, 0x0D, 1}}; 142 /*0x1401*/ const CO_OD_entryRecord_t OD_record1401[3] = { 143 {(void*)&CO_OD_ROM.RPDOCommunicationParameter[1].maxSubIndex, 0x05, 1}, 144 {(void*)&CO_OD_ROM.RPDOCommunicationParameter[1].COB_IDUsedByRPDO, 0x8D, 4}, 145 {(void*)&CO_OD_ROM.RPDOCommunicationParameter[1].transmissionType, 0x0D, 1}}; 146 /*0x1402*/ const CO_OD_entryRecord_t OD_record1402[3] = { 147 {(void*)&CO_OD_ROM.RPDOCommunicationParameter[2].maxSubIndex, 0x05, 1}, 148 {(void*)&CO_OD_ROM.RPDOCommunicationParameter[2].COB_IDUsedByRPDO, 0x8D, 4}, 149 {(void*)&CO_OD_ROM.RPDOCommunicationParameter[2].transmissionType, 0x0D, 1}}; 150 /*0x1403*/ const CO_OD_entryRecord_t OD_record1403[3] = { 151 {(void*)&CO_OD_ROM.RPDOCommunicationParameter[3].maxSubIndex, 0x05, 1}, 152 {(void*)&CO_OD_ROM.RPDOCommunicationParameter[3].COB_IDUsedByRPDO, 0x8D, 4}, 153 {(void*)&CO_OD_ROM.RPDOCommunicationParameter[3].transmissionType, 0x0D, 1}}; 154 /*0x1600*/ const CO_OD_entryRecord_t OD_record1600[9] = { 155 {(void*)&CO_OD_ROM.RPDOMappingParameter[0].numberOfMappedObjects, 0x0D, 1}, 156 {(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject1, 0x8D, 4}, 157 {(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject2, 0x8D, 4}, 158 {(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject3, 0x8D, 4}, 159 {(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject4, 0x8D, 4}, 160 {(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject5, 0x8D, 4}, 161 {(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject6, 0x8D, 4}, 162 {(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject7, 0x8D, 4}, 163 {(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject8, 0x8D, 4}}; 164 /*0x1601*/ const CO_OD_entryRecord_t OD_record1601[9] = { 165 {(void*)&CO_OD_ROM.RPDOMappingParameter[1].numberOfMappedObjects, 0x0D, 1}, 166 {(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject1, 0x8D, 4}, 167 {(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject2, 0x8D, 4}, 168 {(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject3, 0x8D, 4}, 169 {(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject4, 0x8D, 4}, 170 {(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject5, 0x8D, 4}, 171 {(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject6, 0x8D, 4}, 172 {(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject7, 0x8D, 4}, 173 {(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject8, 0x8D, 4}}; 174 /*0x1602*/ const CO_OD_entryRecord_t OD_record1602[9] = { 175 {(void*)&CO_OD_ROM.RPDOMappingParameter[2].numberOfMappedObjects, 0x0D, 1}, 176 {(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject1, 0x8D, 4}, 177 {(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject2, 0x8D, 4}, 178 {(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject3, 0x8D, 4}, 179 {(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject4, 0x8D, 4}, 180 {(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject5, 0x8D, 4}, 181 {(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject6, 0x8D, 4}, 182 {(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject7, 0x8D, 4}, 183 {(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject8, 0x8D, 4}}; 184 /*0x1603*/ const CO_OD_entryRecord_t OD_record1603[9] = { 185 {(void*)&CO_OD_ROM.RPDOMappingParameter[3].numberOfMappedObjects, 0x0D, 1}, 186 {(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject1, 0x8D, 4}, 187 {(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject2, 0x8D, 4}, 188 {(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject3, 0x8D, 4}, 189 {(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject4, 0x8D, 4}, 190 {(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject5, 0x8D, 4}, 191 {(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject6, 0x8D, 4}, 192 {(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject7, 0x8D, 4}, 193 {(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject8, 0x8D, 4}}; 194 /*0x1800*/ const CO_OD_entryRecord_t OD_record1800[7] = { 195 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].maxSubIndex, 0x05, 1}, 196 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].COB_IDUsedByTPDO, 0x8D, 4}, 197 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].transmissionType, 0x0D, 1}, 198 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].inhibitTime, 0x8D, 2}, 199 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].compatibilityEntry, 0x0D, 1}, 200 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].eventTimer, 0x8D, 2}, 201 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].SYNCStartValue, 0x0D, 1}}; 202 /*0x1801*/ const CO_OD_entryRecord_t OD_record1801[7] = { 203 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].maxSubIndex, 0x05, 1}, 204 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].COB_IDUsedByTPDO, 0x8D, 4}, 205 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].transmissionType, 0x0D, 1}, 206 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].inhibitTime, 0x8D, 2}, 207 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].compatibilityEntry, 0x0D, 1}, 208 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].eventTimer, 0x8D, 2}, 209 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].SYNCStartValue, 0x0D, 1}}; 210 /*0x1802*/ const CO_OD_entryRecord_t OD_record1802[7] = { 211 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].maxSubIndex, 0x05, 1}, 212 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].COB_IDUsedByTPDO, 0x8D, 4}, 213 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].transmissionType, 0x0D, 1}, 214 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].inhibitTime, 0x8D, 2}, 215 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].compatibilityEntry, 0x0D, 1}, 216 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].eventTimer, 0x8D, 2}, 217 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].SYNCStartValue, 0x0D, 1}}; 218 /*0x1803*/ const CO_OD_entryRecord_t OD_record1803[7] = { 219 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].maxSubIndex, 0x05, 1}, 220 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].COB_IDUsedByTPDO, 0x8D, 4}, 221 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].transmissionType, 0x0D, 1}, 222 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].inhibitTime, 0x8D, 2}, 223 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].compatibilityEntry, 0x0D, 1}, 224 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].eventTimer, 0x8D, 2}, 225 {(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].SYNCStartValue, 0x0D, 1}}; 226 /*0x1A00*/ const CO_OD_entryRecord_t OD_record1A00[9] = { 227 {(void*)&CO_OD_ROM.TPDOMappingParameter[0].numberOfMappedObjects, 0x0D, 1}, 228 {(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject1, 0x8D, 4}, 229 {(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject2, 0x8D, 4}, 230 {(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject3, 0x8D, 4}, 231 {(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject4, 0x8D, 4}, 232 {(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject5, 0x8D, 4}, 233 {(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject6, 0x8D, 4}, 234 {(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject7, 0x8D, 4}, 235 {(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject8, 0x8D, 4}}; 236 /*0x1A01*/ const CO_OD_entryRecord_t OD_record1A01[9] = { 237 {(void*)&CO_OD_ROM.TPDOMappingParameter[1].numberOfMappedObjects, 0x0D, 1}, 238 {(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject1, 0x8D, 4}, 239 {(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject2, 0x8D, 4}, 240 {(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject3, 0x8D, 4}, 241 {(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject4, 0x8D, 4}, 242 {(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject5, 0x8D, 4}, 243 {(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject6, 0x8D, 4}, 244 {(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject7, 0x8D, 4}, 245 {(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject8, 0x8D, 4}}; 246 /*0x1A02*/ const CO_OD_entryRecord_t OD_record1A02[9] = { 247 {(void*)&CO_OD_ROM.TPDOMappingParameter[2].numberOfMappedObjects, 0x0D, 1}, 248 {(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject1, 0x8D, 4}, 249 {(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject2, 0x8D, 4}, 250 {(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject3, 0x8D, 4}, 251 {(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject4, 0x8D, 4}, 252 {(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject5, 0x8D, 4}, 253 {(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject6, 0x8D, 4}, 254 {(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject7, 0x8D, 4}, 255 {(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject8, 0x8D, 4}}; 256 /*0x1A03*/ const CO_OD_entryRecord_t OD_record1A03[9] = { 257 {(void*)&CO_OD_ROM.TPDOMappingParameter[3].numberOfMappedObjects, 0x0D, 1}, 258 {(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject1, 0x8D, 4}, 259 {(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject2, 0x8D, 4}, 260 {(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject3, 0x8D, 4}, 261 {(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject4, 0x8D, 4}, 262 {(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject5, 0x8D, 4}, 263 {(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject6, 0x8D, 4}, 264 {(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject7, 0x8D, 4}, 265 {(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject8, 0x8D, 4}}; 266 /*0x2120*/ const CO_OD_entryRecord_t OD_record2120[6] = { 267 {(void*)&CO_OD_RAM.testVar.maxSubIndex, 0x06, 1}, 268 {(void*)&CO_OD_RAM.testVar.I64, 0xBE, 8}, 269 {(void*)&CO_OD_RAM.testVar.U64, 0xBE, 8}, 270 {(void*)&CO_OD_RAM.testVar.R32, 0xBE, 4}, 271 {(void*)&CO_OD_RAM.testVar.R64, 0xBE, 8}, 272 {0, 0x0E, 0}}; 273 /*0x2130*/ const CO_OD_entryRecord_t OD_record2130[4] = { 274 {(void*)&CO_OD_RAM.time.maxSubIndex, 0x06, 1}, 275 {(void*)&CO_OD_RAM.time.string[0], 0x06, 30}, 276 {(void*)&CO_OD_RAM.time.epochTimeBaseMs, 0x8E, 8}, 277 {(void*)&CO_OD_RAM.time.epochTimeOffsetMs, 0xBE, 4}}; 278 279 280 /******************************************************************************* 281 OBJECT DICTIONARY 282 *******************************************************************************/ 283 const CO_OD_entry_t CO_OD[CO_OD_NoOfElements] = { 284 {0x1000, 0x00, 0x85, 4, (void*)&CO_OD_ROM.deviceType}, 285 {0x1001, 0x00, 0x36, 1, (void*)&CO_OD_RAM.errorRegister}, 286 {0x1002, 0x00, 0xB6, 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, 11, (void*)&CO_OD_ROM.manufacturerDeviceName[0]}, 292 {0x1009, 0x00, 0x05, 4, (void*)&CO_OD_ROM.manufacturerHardwareVersion[0]}, 293 {0x100A, 0x00, 0x05, 4, (void*)&CO_OD_ROM.manufacturerSoftwareVersion[0]}, 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, 0, (void*)&OD_record1601}, 311 {0x1602, 0x08, 0x00, 0, (void*)&OD_record1602}, 312 {0x1603, 0x08, 0x00, 0, (void*)&OD_record1603}, 313 {0x1800, 0x06, 0x00, 0, (void*)&OD_record1800}, 314 {0x1801, 0x06, 0x00, 0, (void*)&OD_record1801}, 315 {0x1802, 0x06, 0x00, 0, (void*)&OD_record1802}, 316 {0x1803, 0x06, 0x00, 0, (void*)&OD_record1803}, 317 {0x1A00, 0x08, 0x00, 0, (void*)&OD_record1A00}, 318 {0x1A01, 0x08, 0x00, 0, (void*)&OD_record1A01}, 319 {0x1A02, 0x08, 0x00, 0, (void*)&OD_record1A02}, 320 {0x1A03, 0x08, 0x00, 0, (void*)&OD_record1A03}, 321 {0x1F80, 0x00, 0x8D, 4, (void*)&CO_OD_ROM.NMTStartup}, 322 {0x2100, 0x00, 0x36, 10, (void*)&CO_OD_RAM.errorStatusBits[0]}, 323 {0x2101, 0x00, 0x0D, 1, (void*)&CO_OD_ROM.CANNodeID}, 324 {0x2102, 0x00, 0x8D, 2, (void*)&CO_OD_ROM.CANBitRate}, 325 {0x2103, 0x00, 0x8E, 2, (void*)&CO_OD_RAM.SYNCCounter}, 326 {0x2104, 0x00, 0x86, 2, (void*)&CO_OD_RAM.SYNCTime}, 327 {0x2106, 0x00, 0x87, 4, (void*)&CO_OD_EEPROM.powerOnCounter}, 328 {0x2107, 0x05, 0xBE, 2, (void*)&CO_OD_RAM.performance[0]}, 329 {0x2108, 0x01, 0xB6, 2, (void*)&CO_OD_RAM.temperature[0]}, 330 {0x2109, 0x01, 0xB6, 2, (void*)&CO_OD_RAM.voltage[0]}, 331 {0x2110, 0x10, 0xFE, 4, (void*)&CO_OD_RAM.variableInt32[0]}, 332 {0x2111, 0x10, 0xFD, 4, (void*)&CO_OD_ROM.variableROMInt32[0]}, 333 {0x2112, 0x10, 0xFF, 4, (void*)&CO_OD_EEPROM.variableNVInt32[0]}, 334 {0x2120, 0x05, 0x00, 0, (void*)&OD_record2120}, 335 {0x2130, 0x03, 0x00, 0, (void*)&OD_record2130}, 336 {0x6000, 0x08, 0x76, 1, (void*)&CO_OD_RAM.readInput8Bit[0]}, 337 {0x6200, 0x08, 0x3E, 1, (void*)&CO_OD_RAM.writeOutput8Bit[0]}, 338 {0x6401, 0x0C, 0xB6, 2, (void*)&CO_OD_RAM.readAnalogueInput16Bit[0]}, 339 {0x6411, 0x08, 0xBE, 2, (void*)&CO_OD_RAM.writeAnalogueOutput16Bit[0]}, 340 }; 341 342