/******************************************************************************* CANopen Object Dictionary definition for CANopenNode V4 This file was automatically generated by CANopenEditor v4.1-1-ga49a51a https://github.com/CANopenNode/CANopenNode https://github.com/CANopenNode/CANopenEditor DON'T EDIT THIS FILE MANUALLY, UNLESS YOU KNOW WHAT YOU ARE DOING !!!! *******************************************************************************/ #define OD_DEFINITION #include "301/CO_ODinterface.h" #include "OD.h" #if CO_VERSION_MAJOR < 4 #error This Object dictionary is compatible with CANopenNode V4.0 and above! #endif /******************************************************************************* OD data initialization of all groups *******************************************************************************/ OD_ATTR_PERSIST_COMM OD_PERSIST_COMM_t OD_PERSIST_COMM = { .x1000_deviceType = 0x000F0191, .x1005_COB_ID_SYNCMessage = 0x00000080, .x1006_communicationCyclePeriod = 0x00000000, .x1007_synchronousWindowLength = 0x00000000, .x1012_COB_IDTimeStampObject = 0x00000100, .x1014_COB_ID_EMCY = 0x00000080, .x1015_inhibitTimeEMCY = 0x0000, .x1016_consumerHeartbeatTime_sub0 = 0x08, .x1016_consumerHeartbeatTime = {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, .x1017_producerHeartbeatTime = 0x0000, .x1018_identity = { .highestSub_indexSupported = 0x04, .vendor_ID = 0x00000000, .productCode = 0x00000001, .revisionNumber = 0x00000000, .serialNumber = 0x00000003 }, .x1019_synchronousCounterOverflowValue = 0x00, .x1400_RPDOCommunicationParameter = { .highestSub_indexSupported = 0x05, .COB_IDUsedByRPDO = 0x00000200, .transmissionType = 0xFF, .eventTimer = 0x0000 }, .x1401_RPDOCommunicationParameter = { .highestSub_indexSupported = 0x05, .COB_IDUsedByRPDO = 0x00000300, .transmissionType = 0xFF, .eventTimer = 0x0000 }, .x1402_RPDOCommunicationParameter = { .highestSub_indexSupported = 0x05, .COB_IDUsedByRPDO = 0x80000400, .transmissionType = 0xFE, .eventTimer = 0x0000 }, .x1403_RPDOCommunicationParameter = { .highestSub_indexSupported = 0x05, .COB_IDUsedByRPDO = 0x80000500, .transmissionType = 0xFE, .eventTimer = 0x0000 }, .x1600_RPDOMappingParameter = { .numberOfMappedApplicationObjectsInPDO = 0x02, .applicationObject1 = 0x62000108, .applicationObject2 = 0x62000208, .applicationObject3 = 0x62000308, .applicationObject4 = 0x62000408, .applicationObject5 = 0x62000508, .applicationObject6 = 0x62000608, .applicationObject7 = 0x62000708, .applicationObject8 = 0x62000808 }, .x1601_RPDOMappingParameter = { .numberOfMappedApplicationObjectsInPDO = 0x04, .applicationObject1 = 0x64110110, .applicationObject2 = 0x64110210, .applicationObject3 = 0x64110310, .applicationObject4 = 0x64110410, .applicationObject5 = 0x00000000, .applicationObject6 = 0x00000000, .applicationObject7 = 0x00000000, .applicationObject8 = 0x00000000 }, .x1602_RPDOMappingParameter = { .numberOfMappedApplicationObjectsInPDO = 0x00, .applicationObject1 = 0x00000000, .applicationObject2 = 0x00000000, .applicationObject3 = 0x00000000, .applicationObject4 = 0x00000000, .applicationObject5 = 0x00000000, .applicationObject6 = 0x00000000, .applicationObject7 = 0x00000000, .applicationObject8 = 0x00000000 }, .x1603_RPDOMappingParameter = { .numberOfMappedApplicationObjectsInPDO = 0x00, .applicationObject1 = 0x00000000, .applicationObject2 = 0x00000000, .applicationObject3 = 0x00000000, .applicationObject4 = 0x00000000, .applicationObject5 = 0x00000000, .applicationObject6 = 0x00000000, .applicationObject7 = 0x00000000, .applicationObject8 = 0x00000000 }, .x1800_TPDOCommunicationParameter = { .highestSub_indexSupported = 0x06, .COB_IDUsedByTPDO = 0x40000180, .transmissionType = 0xFF, .inhibitTime = 0x0000, .eventTimer = 0x0000, .SYNCStartValue = 0x00 }, .x1801_TPDOCommunicationParameter = { .highestSub_indexSupported = 0x06, .COB_IDUsedByTPDO = 0x40000280, .transmissionType = 0xFF, .inhibitTime = 0x0000, .eventTimer = 0x0000, .SYNCStartValue = 0x00 }, .x1802_TPDOCommunicationParameter = { .highestSub_indexSupported = 0x06, .COB_IDUsedByTPDO = 0xC0000380, .transmissionType = 0xFE, .inhibitTime = 0x0000, .eventTimer = 0x0000, .SYNCStartValue = 0x00 }, .x1803_TPDOCommunicationParameter = { .highestSub_indexSupported = 0x06, .COB_IDUsedByTPDO = 0xC0000480, .transmissionType = 0xFE, .inhibitTime = 0x0000, .eventTimer = 0x0000, .SYNCStartValue = 0x00 }, .x1A00_TPDOMappingParameter = { .numberOfMappedApplicationObjectsInPDO = 0x02, .applicationObject1 = 0x60000108, .applicationObject2 = 0x60000208, .applicationObject3 = 0x60000308, .applicationObject4 = 0x60000408, .applicationObject5 = 0x60000508, .applicationObject6 = 0x60000608, .applicationObject7 = 0x60000708, .applicationObject8 = 0x60000808 }, .x1A01_TPDOMappingParameter = { .numberOfMappedApplicationObjectsInPDO = 0x04, .applicationObject1 = 0x64010110, .applicationObject2 = 0x64010210, .applicationObject3 = 0x64010310, .applicationObject4 = 0x64010410, .applicationObject5 = 0x00000000, .applicationObject6 = 0x00000000, .applicationObject7 = 0x00000000, .applicationObject8 = 0x00000000 }, .x1A02_TPDOMappingParameter = { .numberOfMappedApplicationObjectsInPDO = 0x00, .applicationObject1 = 0x00000000, .applicationObject2 = 0x00000000, .applicationObject3 = 0x00000000, .applicationObject4 = 0x00000000, .applicationObject5 = 0x00000000, .applicationObject6 = 0x00000000, .applicationObject7 = 0x00000000, .applicationObject8 = 0x00000000 }, .x1A03_TPDOMappingParameter = { .numberOfMappedApplicationObjectsInPDO = 0x00, .applicationObject1 = 0x00000000, .applicationObject2 = 0x00000000, .applicationObject3 = 0x00000000, .applicationObject4 = 0x00000000, .applicationObject5 = 0x00000000, .applicationObject6 = 0x00000000, .applicationObject7 = 0x00000000, .applicationObject8 = 0x00000000 } }; OD_ATTR_RAM OD_RAM_t OD_RAM = { .x1001_errorRegister = 0x00, .x1010_storeParameters_sub0 = 0x06, .x1010_storeParameters = {0x00000003, 0x00000001, 0x00000001, 0x00000003, 0x00000001, 0x00000003}, .x1011_restoreDefaultParameters_sub0 = 0x06, .x1011_restoreDefaultParameters = {0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001}, .x1200_SDOServerParameter = { .highestSub_indexSupported = 0x02, .COB_IDClientToServerRx = 0x00000600, .COB_IDServerToClientTx = 0x00000580 }, .x2100_errorStatusBits = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, .x2110_variableInt32_sub0 = 0x10, .x2110_variableInt32 = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, .x6000_readDigitalInput8_bit_sub0 = 0x08, .x6000_readDigitalInput8_bit = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, .x6200_writeDigitalOutput8_bit_sub0 = 0x08, .x6200_writeDigitalOutput8_bit = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, .x6401_readAnalogInput16_bit_sub0 = 0x10, .x6401_readAnalogInput16_bit = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, .x6411_writeAnalogOutput16_bit_sub0 = 0x08, .x6411_writeAnalogOutput16_bit = {0, 0, 0, 0, 0, 0, 0, 0} }; OD_ATTR_PERSIST_APP_AUTO OD_PERSIST_APP_AUTO_t OD_PERSIST_APP_AUTO = { .x2106_power_onCounter = 0x00000000, .x2112_variableNV_Int32AutoSave_sub0 = 0x10, .x2112_variableNV_Int32AutoSave = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }; OD_ATTR_PERSIST_APP OD_PERSIST_APP_t OD_PERSIST_APP = { .x2111_variableInt32Save_sub0 = 0x10, .x2111_variableInt32Save = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, .x2120_demoRecord = { .highestSub_indexSupported = 0x06, .I64 = -1234567890123456789, .U64 = 0x1234567890ABCDEF, .R32 = 12.345, .R64 = 456.789, .parameterWithDefaultValue = 0x1234 }, .x2121_demoStrings = { .highestSub_indexSupported = 0x03, .stringShort = {'s', 't', 'r', 0}, .stringLong = {'E', 'x', 'a', 'm', 'p', 'l', 'e', ' ', 's', 't', 'r', 'i', 'n', 'g', ' ', 'w', 'i', 't', 'h', ' ', '1', '0', '0', '0', ' ', 'b', 'y', 't', 'e', 's', ' ', 'c', 'a', 'p', 'a', 'c', 'i', 't', 'y', '.', ' ', 'I', 't', ' ', 'm', 'a', 'y', ' ', 'c', 'o', 'n', 't', 'a', 'i', 'n', ' ', 'U', 'T', 'F', '-', '8', ' ', 'c', 'h', 'a', 'r', 'a', 'c', 't', 'e', 'r', 's', ',', ' ', 'l', 'i', 'k', 'e', ' ', '\'', (char)0xE2, (char)0x82, (char)0xAC, '\'', ',', ' ', 't', 'a', 'b', 's', ' ', '\'', 0x09, '\'', ',', ' ', 'n', 'e', 'w', 'l', 'i', 'n', 'e', 's', ',', ' ', 'e', 't', 'c', '.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, .octetString = {0xC8, 0x3D, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} } }; /******************************************************************************* All OD objects (constant definitions) *******************************************************************************/ typedef struct { OD_obj_var_t o_1000_deviceType; OD_obj_var_t o_1001_errorRegister; OD_obj_array_t o_1003_pre_definedErrorField; OD_obj_var_t o_1005_COB_ID_SYNCMessage; OD_obj_var_t o_1006_communicationCyclePeriod; OD_obj_var_t o_1007_synchronousWindowLength; OD_obj_var_t o_1008_manufacturerDeviceName; OD_obj_var_t o_1009_manufacturerHardwareVersion; OD_obj_var_t o_100A_manufacturerSoftwareVersion; OD_obj_array_t o_1010_storeParameters; OD_obj_array_t o_1011_restoreDefaultParameters; OD_obj_var_t o_1012_COB_IDTimeStampObject; OD_obj_var_t o_1014_COB_ID_EMCY; OD_obj_var_t o_1015_inhibitTimeEMCY; OD_obj_array_t o_1016_consumerHeartbeatTime; OD_obj_var_t o_1017_producerHeartbeatTime; OD_obj_record_t o_1018_identity[5]; OD_obj_var_t o_1019_synchronousCounterOverflowValue; OD_obj_record_t o_1200_SDOServerParameter[3]; OD_obj_record_t o_1400_RPDOCommunicationParameter[4]; OD_obj_record_t o_1401_RPDOCommunicationParameter[4]; OD_obj_record_t o_1402_RPDOCommunicationParameter[4]; OD_obj_record_t o_1403_RPDOCommunicationParameter[4]; OD_obj_record_t o_1600_RPDOMappingParameter[9]; OD_obj_record_t o_1601_RPDOMappingParameter[9]; OD_obj_record_t o_1602_RPDOMappingParameter[9]; OD_obj_record_t o_1603_RPDOMappingParameter[9]; OD_obj_record_t o_1800_TPDOCommunicationParameter[6]; OD_obj_record_t o_1801_TPDOCommunicationParameter[6]; OD_obj_record_t o_1802_TPDOCommunicationParameter[6]; OD_obj_record_t o_1803_TPDOCommunicationParameter[6]; OD_obj_record_t o_1A00_TPDOMappingParameter[9]; OD_obj_record_t o_1A01_TPDOMappingParameter[9]; OD_obj_record_t o_1A02_TPDOMappingParameter[9]; OD_obj_record_t o_1A03_TPDOMappingParameter[9]; OD_obj_var_t o_2100_errorStatusBits; OD_obj_var_t o_2106_power_onCounter; OD_obj_array_t o_2110_variableInt32; OD_obj_array_t o_2111_variableInt32Save; OD_obj_array_t o_2112_variableNV_Int32AutoSave; OD_obj_record_t o_2120_demoRecord[7]; OD_obj_record_t o_2121_demoStrings[4]; OD_obj_var_t o_2122_demoDomain; OD_obj_array_t o_6000_readDigitalInput8_bit; OD_obj_array_t o_6200_writeDigitalOutput8_bit; OD_obj_array_t o_6401_readAnalogInput16_bit; OD_obj_array_t o_6411_writeAnalogOutput16_bit; } ODObjs_t; static CO_PROGMEM ODObjs_t ODObjs = { .o_1000_deviceType = { .dataOrig = &OD_PERSIST_COMM.x1000_deviceType, .attribute = ODA_SDO_R | ODA_MB, .dataLength = 4 }, .o_1001_errorRegister = { .dataOrig = &OD_RAM.x1001_errorRegister, .attribute = ODA_SDO_R | ODA_TPDO, .dataLength = 1 }, .o_1003_pre_definedErrorField = { .dataOrig0 = NULL, .dataOrig = NULL, .attribute0 = ODA_SDO_RW, .attribute = ODA_SDO_R | ODA_MB, .dataElementLength = 4, .dataElementSizeof = sizeof(uint32_t) }, .o_1005_COB_ID_SYNCMessage = { .dataOrig = &OD_PERSIST_COMM.x1005_COB_ID_SYNCMessage, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, .o_1006_communicationCyclePeriod = { .dataOrig = &OD_PERSIST_COMM.x1006_communicationCyclePeriod, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, .o_1007_synchronousWindowLength = { .dataOrig = &OD_PERSIST_COMM.x1007_synchronousWindowLength, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, .o_1008_manufacturerDeviceName = { .dataOrig = NULL, .attribute = ODA_SDO_R | ODA_STR, .dataLength = 0 }, .o_1009_manufacturerHardwareVersion = { .dataOrig = NULL, .attribute = ODA_SDO_R | ODA_STR, .dataLength = 0 }, .o_100A_manufacturerSoftwareVersion = { .dataOrig = NULL, .attribute = ODA_SDO_R | ODA_STR, .dataLength = 0 }, .o_1010_storeParameters = { .dataOrig0 = &OD_RAM.x1010_storeParameters_sub0, .dataOrig = &OD_RAM.x1010_storeParameters[0], .attribute0 = ODA_SDO_R, .attribute = ODA_SDO_RW | ODA_MB, .dataElementLength = 4, .dataElementSizeof = sizeof(uint32_t) }, .o_1011_restoreDefaultParameters = { .dataOrig0 = &OD_RAM.x1011_restoreDefaultParameters_sub0, .dataOrig = &OD_RAM.x1011_restoreDefaultParameters[0], .attribute0 = ODA_SDO_R, .attribute = ODA_SDO_RW | ODA_MB, .dataElementLength = 4, .dataElementSizeof = sizeof(uint32_t) }, .o_1012_COB_IDTimeStampObject = { .dataOrig = &OD_PERSIST_COMM.x1012_COB_IDTimeStampObject, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, .o_1014_COB_ID_EMCY = { .dataOrig = &OD_PERSIST_COMM.x1014_COB_ID_EMCY, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, .o_1015_inhibitTimeEMCY = { .dataOrig = &OD_PERSIST_COMM.x1015_inhibitTimeEMCY, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 2 }, .o_1016_consumerHeartbeatTime = { .dataOrig0 = &OD_PERSIST_COMM.x1016_consumerHeartbeatTime_sub0, .dataOrig = &OD_PERSIST_COMM.x1016_consumerHeartbeatTime[0], .attribute0 = ODA_SDO_R, .attribute = ODA_SDO_RW | ODA_MB, .dataElementLength = 4, .dataElementSizeof = sizeof(uint32_t) }, .o_1017_producerHeartbeatTime = { .dataOrig = &OD_PERSIST_COMM.x1017_producerHeartbeatTime, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 2 }, .o_1018_identity = { { .dataOrig = &OD_PERSIST_COMM.x1018_identity.highestSub_indexSupported, .subIndex = 0, .attribute = ODA_SDO_R, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1018_identity.vendor_ID, .subIndex = 1, .attribute = ODA_SDO_R | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1018_identity.productCode, .subIndex = 2, .attribute = ODA_SDO_R | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1018_identity.revisionNumber, .subIndex = 3, .attribute = ODA_SDO_R | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1018_identity.serialNumber, .subIndex = 4, .attribute = ODA_SDO_R | ODA_MB, .dataLength = 4 } }, .o_1019_synchronousCounterOverflowValue = { .dataOrig = &OD_PERSIST_COMM.x1019_synchronousCounterOverflowValue, .attribute = ODA_SDO_RW, .dataLength = 1 }, .o_1200_SDOServerParameter = { { .dataOrig = &OD_RAM.x1200_SDOServerParameter.highestSub_indexSupported, .subIndex = 0, .attribute = ODA_SDO_R, .dataLength = 1 }, { .dataOrig = &OD_RAM.x1200_SDOServerParameter.COB_IDClientToServerRx, .subIndex = 1, .attribute = ODA_SDO_R | ODA_TPDO | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_RAM.x1200_SDOServerParameter.COB_IDServerToClientTx, .subIndex = 2, .attribute = ODA_SDO_R | ODA_TPDO | ODA_MB, .dataLength = 4 } }, .o_1400_RPDOCommunicationParameter = { { .dataOrig = &OD_PERSIST_COMM.x1400_RPDOCommunicationParameter.highestSub_indexSupported, .subIndex = 0, .attribute = ODA_SDO_R, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1400_RPDOCommunicationParameter.COB_IDUsedByRPDO, .subIndex = 1, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1400_RPDOCommunicationParameter.transmissionType, .subIndex = 2, .attribute = ODA_SDO_RW, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1400_RPDOCommunicationParameter.eventTimer, .subIndex = 5, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 2 } }, .o_1401_RPDOCommunicationParameter = { { .dataOrig = &OD_PERSIST_COMM.x1401_RPDOCommunicationParameter.highestSub_indexSupported, .subIndex = 0, .attribute = ODA_SDO_R, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1401_RPDOCommunicationParameter.COB_IDUsedByRPDO, .subIndex = 1, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1401_RPDOCommunicationParameter.transmissionType, .subIndex = 2, .attribute = ODA_SDO_RW, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1401_RPDOCommunicationParameter.eventTimer, .subIndex = 5, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 2 } }, .o_1402_RPDOCommunicationParameter = { { .dataOrig = &OD_PERSIST_COMM.x1402_RPDOCommunicationParameter.highestSub_indexSupported, .subIndex = 0, .attribute = ODA_SDO_R, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1402_RPDOCommunicationParameter.COB_IDUsedByRPDO, .subIndex = 1, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1402_RPDOCommunicationParameter.transmissionType, .subIndex = 2, .attribute = ODA_SDO_RW, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1402_RPDOCommunicationParameter.eventTimer, .subIndex = 5, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 2 } }, .o_1403_RPDOCommunicationParameter = { { .dataOrig = &OD_PERSIST_COMM.x1403_RPDOCommunicationParameter.highestSub_indexSupported, .subIndex = 0, .attribute = ODA_SDO_R, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1403_RPDOCommunicationParameter.COB_IDUsedByRPDO, .subIndex = 1, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1403_RPDOCommunicationParameter.transmissionType, .subIndex = 2, .attribute = ODA_SDO_RW, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1403_RPDOCommunicationParameter.eventTimer, .subIndex = 5, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 2 } }, .o_1600_RPDOMappingParameter = { { .dataOrig = &OD_PERSIST_COMM.x1600_RPDOMappingParameter.numberOfMappedApplicationObjectsInPDO, .subIndex = 0, .attribute = ODA_SDO_RW, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1600_RPDOMappingParameter.applicationObject1, .subIndex = 1, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1600_RPDOMappingParameter.applicationObject2, .subIndex = 2, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1600_RPDOMappingParameter.applicationObject3, .subIndex = 3, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1600_RPDOMappingParameter.applicationObject4, .subIndex = 4, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1600_RPDOMappingParameter.applicationObject5, .subIndex = 5, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1600_RPDOMappingParameter.applicationObject6, .subIndex = 6, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1600_RPDOMappingParameter.applicationObject7, .subIndex = 7, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1600_RPDOMappingParameter.applicationObject8, .subIndex = 8, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 } }, .o_1601_RPDOMappingParameter = { { .dataOrig = &OD_PERSIST_COMM.x1601_RPDOMappingParameter.numberOfMappedApplicationObjectsInPDO, .subIndex = 0, .attribute = ODA_SDO_RW, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1601_RPDOMappingParameter.applicationObject1, .subIndex = 1, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1601_RPDOMappingParameter.applicationObject2, .subIndex = 2, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1601_RPDOMappingParameter.applicationObject3, .subIndex = 3, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1601_RPDOMappingParameter.applicationObject4, .subIndex = 4, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1601_RPDOMappingParameter.applicationObject5, .subIndex = 5, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1601_RPDOMappingParameter.applicationObject6, .subIndex = 6, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1601_RPDOMappingParameter.applicationObject7, .subIndex = 7, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1601_RPDOMappingParameter.applicationObject8, .subIndex = 8, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 } }, .o_1602_RPDOMappingParameter = { { .dataOrig = &OD_PERSIST_COMM.x1602_RPDOMappingParameter.numberOfMappedApplicationObjectsInPDO, .subIndex = 0, .attribute = ODA_SDO_RW, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1602_RPDOMappingParameter.applicationObject1, .subIndex = 1, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1602_RPDOMappingParameter.applicationObject2, .subIndex = 2, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1602_RPDOMappingParameter.applicationObject3, .subIndex = 3, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1602_RPDOMappingParameter.applicationObject4, .subIndex = 4, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1602_RPDOMappingParameter.applicationObject5, .subIndex = 5, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1602_RPDOMappingParameter.applicationObject6, .subIndex = 6, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1602_RPDOMappingParameter.applicationObject7, .subIndex = 7, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1602_RPDOMappingParameter.applicationObject8, .subIndex = 8, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 } }, .o_1603_RPDOMappingParameter = { { .dataOrig = &OD_PERSIST_COMM.x1603_RPDOMappingParameter.numberOfMappedApplicationObjectsInPDO, .subIndex = 0, .attribute = ODA_SDO_RW, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1603_RPDOMappingParameter.applicationObject1, .subIndex = 1, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1603_RPDOMappingParameter.applicationObject2, .subIndex = 2, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1603_RPDOMappingParameter.applicationObject3, .subIndex = 3, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1603_RPDOMappingParameter.applicationObject4, .subIndex = 4, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1603_RPDOMappingParameter.applicationObject5, .subIndex = 5, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1603_RPDOMappingParameter.applicationObject6, .subIndex = 6, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1603_RPDOMappingParameter.applicationObject7, .subIndex = 7, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1603_RPDOMappingParameter.applicationObject8, .subIndex = 8, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 } }, .o_1800_TPDOCommunicationParameter = { { .dataOrig = &OD_PERSIST_COMM.x1800_TPDOCommunicationParameter.highestSub_indexSupported, .subIndex = 0, .attribute = ODA_SDO_R, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1800_TPDOCommunicationParameter.COB_IDUsedByTPDO, .subIndex = 1, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1800_TPDOCommunicationParameter.transmissionType, .subIndex = 2, .attribute = ODA_SDO_RW, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1800_TPDOCommunicationParameter.inhibitTime, .subIndex = 3, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 2 }, { .dataOrig = &OD_PERSIST_COMM.x1800_TPDOCommunicationParameter.eventTimer, .subIndex = 5, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 2 }, { .dataOrig = &OD_PERSIST_COMM.x1800_TPDOCommunicationParameter.SYNCStartValue, .subIndex = 6, .attribute = ODA_SDO_RW, .dataLength = 1 } }, .o_1801_TPDOCommunicationParameter = { { .dataOrig = &OD_PERSIST_COMM.x1801_TPDOCommunicationParameter.highestSub_indexSupported, .subIndex = 0, .attribute = ODA_SDO_R, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1801_TPDOCommunicationParameter.COB_IDUsedByTPDO, .subIndex = 1, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1801_TPDOCommunicationParameter.transmissionType, .subIndex = 2, .attribute = ODA_SDO_RW, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1801_TPDOCommunicationParameter.inhibitTime, .subIndex = 3, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 2 }, { .dataOrig = &OD_PERSIST_COMM.x1801_TPDOCommunicationParameter.eventTimer, .subIndex = 5, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 2 }, { .dataOrig = &OD_PERSIST_COMM.x1801_TPDOCommunicationParameter.SYNCStartValue, .subIndex = 6, .attribute = ODA_SDO_RW, .dataLength = 1 } }, .o_1802_TPDOCommunicationParameter = { { .dataOrig = &OD_PERSIST_COMM.x1802_TPDOCommunicationParameter.highestSub_indexSupported, .subIndex = 0, .attribute = ODA_SDO_R, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1802_TPDOCommunicationParameter.COB_IDUsedByTPDO, .subIndex = 1, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1802_TPDOCommunicationParameter.transmissionType, .subIndex = 2, .attribute = ODA_SDO_RW, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1802_TPDOCommunicationParameter.inhibitTime, .subIndex = 3, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 2 }, { .dataOrig = &OD_PERSIST_COMM.x1802_TPDOCommunicationParameter.eventTimer, .subIndex = 5, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 2 }, { .dataOrig = &OD_PERSIST_COMM.x1802_TPDOCommunicationParameter.SYNCStartValue, .subIndex = 6, .attribute = ODA_SDO_RW, .dataLength = 1 } }, .o_1803_TPDOCommunicationParameter = { { .dataOrig = &OD_PERSIST_COMM.x1803_TPDOCommunicationParameter.highestSub_indexSupported, .subIndex = 0, .attribute = ODA_SDO_R, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1803_TPDOCommunicationParameter.COB_IDUsedByTPDO, .subIndex = 1, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1803_TPDOCommunicationParameter.transmissionType, .subIndex = 2, .attribute = ODA_SDO_RW, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1803_TPDOCommunicationParameter.inhibitTime, .subIndex = 3, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 2 }, { .dataOrig = &OD_PERSIST_COMM.x1803_TPDOCommunicationParameter.eventTimer, .subIndex = 5, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 2 }, { .dataOrig = &OD_PERSIST_COMM.x1803_TPDOCommunicationParameter.SYNCStartValue, .subIndex = 6, .attribute = ODA_SDO_RW, .dataLength = 1 } }, .o_1A00_TPDOMappingParameter = { { .dataOrig = &OD_PERSIST_COMM.x1A00_TPDOMappingParameter.numberOfMappedApplicationObjectsInPDO, .subIndex = 0, .attribute = ODA_SDO_RW, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1A00_TPDOMappingParameter.applicationObject1, .subIndex = 1, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A00_TPDOMappingParameter.applicationObject2, .subIndex = 2, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A00_TPDOMappingParameter.applicationObject3, .subIndex = 3, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A00_TPDOMappingParameter.applicationObject4, .subIndex = 4, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A00_TPDOMappingParameter.applicationObject5, .subIndex = 5, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A00_TPDOMappingParameter.applicationObject6, .subIndex = 6, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A00_TPDOMappingParameter.applicationObject7, .subIndex = 7, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A00_TPDOMappingParameter.applicationObject8, .subIndex = 8, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 } }, .o_1A01_TPDOMappingParameter = { { .dataOrig = &OD_PERSIST_COMM.x1A01_TPDOMappingParameter.numberOfMappedApplicationObjectsInPDO, .subIndex = 0, .attribute = ODA_SDO_RW, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1A01_TPDOMappingParameter.applicationObject1, .subIndex = 1, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A01_TPDOMappingParameter.applicationObject2, .subIndex = 2, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A01_TPDOMappingParameter.applicationObject3, .subIndex = 3, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A01_TPDOMappingParameter.applicationObject4, .subIndex = 4, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A01_TPDOMappingParameter.applicationObject5, .subIndex = 5, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A01_TPDOMappingParameter.applicationObject6, .subIndex = 6, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A01_TPDOMappingParameter.applicationObject7, .subIndex = 7, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A01_TPDOMappingParameter.applicationObject8, .subIndex = 8, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 } }, .o_1A02_TPDOMappingParameter = { { .dataOrig = &OD_PERSIST_COMM.x1A02_TPDOMappingParameter.numberOfMappedApplicationObjectsInPDO, .subIndex = 0, .attribute = ODA_SDO_RW, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1A02_TPDOMappingParameter.applicationObject1, .subIndex = 1, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A02_TPDOMappingParameter.applicationObject2, .subIndex = 2, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A02_TPDOMappingParameter.applicationObject3, .subIndex = 3, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A02_TPDOMappingParameter.applicationObject4, .subIndex = 4, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A02_TPDOMappingParameter.applicationObject5, .subIndex = 5, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A02_TPDOMappingParameter.applicationObject6, .subIndex = 6, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A02_TPDOMappingParameter.applicationObject7, .subIndex = 7, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A02_TPDOMappingParameter.applicationObject8, .subIndex = 8, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 } }, .o_1A03_TPDOMappingParameter = { { .dataOrig = &OD_PERSIST_COMM.x1A03_TPDOMappingParameter.numberOfMappedApplicationObjectsInPDO, .subIndex = 0, .attribute = ODA_SDO_RW, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_COMM.x1A03_TPDOMappingParameter.applicationObject1, .subIndex = 1, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A03_TPDOMappingParameter.applicationObject2, .subIndex = 2, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A03_TPDOMappingParameter.applicationObject3, .subIndex = 3, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A03_TPDOMappingParameter.applicationObject4, .subIndex = 4, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A03_TPDOMappingParameter.applicationObject5, .subIndex = 5, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A03_TPDOMappingParameter.applicationObject6, .subIndex = 6, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A03_TPDOMappingParameter.applicationObject7, .subIndex = 7, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_COMM.x1A03_TPDOMappingParameter.applicationObject8, .subIndex = 8, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 4 } }, .o_2100_errorStatusBits = { .dataOrig = &OD_RAM.x2100_errorStatusBits[0], .attribute = ODA_SDO_R | ODA_TPDO, .dataLength = 10 }, .o_2106_power_onCounter = { .dataOrig = &OD_PERSIST_APP_AUTO.x2106_power_onCounter, .attribute = ODA_SDO_R | ODA_MB, .dataLength = 4 }, .o_2110_variableInt32 = { .dataOrig0 = &OD_RAM.x2110_variableInt32_sub0, .dataOrig = &OD_RAM.x2110_variableInt32[0], .attribute0 = ODA_SDO_R, .attribute = ODA_SDO_RW | ODA_TRPDO | ODA_MB, .dataElementLength = 4, .dataElementSizeof = sizeof(int32_t) }, .o_2111_variableInt32Save = { .dataOrig0 = &OD_PERSIST_APP.x2111_variableInt32Save_sub0, .dataOrig = &OD_PERSIST_APP.x2111_variableInt32Save[0], .attribute0 = ODA_SDO_R, .attribute = ODA_SDO_RW | ODA_MB, .dataElementLength = 4, .dataElementSizeof = sizeof(int32_t) }, .o_2112_variableNV_Int32AutoSave = { .dataOrig0 = &OD_PERSIST_APP_AUTO.x2112_variableNV_Int32AutoSave_sub0, .dataOrig = &OD_PERSIST_APP_AUTO.x2112_variableNV_Int32AutoSave[0], .attribute0 = ODA_SDO_R, .attribute = ODA_SDO_RW | ODA_MB, .dataElementLength = 4, .dataElementSizeof = sizeof(int32_t) }, .o_2120_demoRecord = { { .dataOrig = &OD_PERSIST_APP.x2120_demoRecord.highestSub_indexSupported, .subIndex = 0, .attribute = ODA_SDO_R, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_APP.x2120_demoRecord.I64, .subIndex = 1, .attribute = ODA_SDO_RW | ODA_TRPDO | ODA_MB, .dataLength = 8 }, { .dataOrig = &OD_PERSIST_APP.x2120_demoRecord.U64, .subIndex = 2, .attribute = ODA_SDO_RW | ODA_TRPDO | ODA_MB, .dataLength = 8 }, { .dataOrig = &OD_PERSIST_APP.x2120_demoRecord.R32, .subIndex = 3, .attribute = ODA_SDO_RW | ODA_TRPDO | ODA_MB, .dataLength = 4 }, { .dataOrig = &OD_PERSIST_APP.x2120_demoRecord.R64, .subIndex = 4, .attribute = ODA_SDO_RW | ODA_TRPDO | ODA_MB, .dataLength = 8 }, { .dataOrig = NULL, .subIndex = 5, .attribute = ODA_SDO_R | ODA_TPDO | ODA_MB, .dataLength = 8 }, { .dataOrig = &OD_PERSIST_APP.x2120_demoRecord.parameterWithDefaultValue, .subIndex = 6, .attribute = ODA_SDO_RW | ODA_MB, .dataLength = 2 } }, .o_2121_demoStrings = { { .dataOrig = &OD_PERSIST_APP.x2121_demoStrings.highestSub_indexSupported, .subIndex = 0, .attribute = ODA_SDO_R, .dataLength = 1 }, { .dataOrig = &OD_PERSIST_APP.x2121_demoStrings.stringShort[0], .subIndex = 1, .attribute = ODA_SDO_RW | ODA_STR, .dataLength = 3 }, { .dataOrig = &OD_PERSIST_APP.x2121_demoStrings.stringLong[0], .subIndex = 2, .attribute = ODA_SDO_RW | ODA_STR, .dataLength = 1000 }, { .dataOrig = &OD_PERSIST_APP.x2121_demoStrings.octetString[0], .subIndex = 3, .attribute = ODA_SDO_RW, .dataLength = 10 } }, .o_2122_demoDomain = { .dataOrig = NULL, .attribute = ODA_SDO_RW, .dataLength = 0 }, .o_6000_readDigitalInput8_bit = { .dataOrig0 = &OD_RAM.x6000_readDigitalInput8_bit_sub0, .dataOrig = &OD_RAM.x6000_readDigitalInput8_bit[0], .attribute0 = ODA_SDO_R, .attribute = ODA_SDO_R | ODA_TPDO, .dataElementLength = 1, .dataElementSizeof = sizeof(uint8_t) }, .o_6200_writeDigitalOutput8_bit = { .dataOrig0 = &OD_RAM.x6200_writeDigitalOutput8_bit_sub0, .dataOrig = &OD_RAM.x6200_writeDigitalOutput8_bit[0], .attribute0 = ODA_SDO_R, .attribute = ODA_SDO_RW | ODA_TRPDO, .dataElementLength = 1, .dataElementSizeof = sizeof(uint8_t) }, .o_6401_readAnalogInput16_bit = { .dataOrig0 = &OD_RAM.x6401_readAnalogInput16_bit_sub0, .dataOrig = &OD_RAM.x6401_readAnalogInput16_bit[0], .attribute0 = ODA_SDO_R, .attribute = ODA_SDO_R | ODA_TPDO | ODA_MB, .dataElementLength = 2, .dataElementSizeof = sizeof(int16_t) }, .o_6411_writeAnalogOutput16_bit = { .dataOrig0 = &OD_RAM.x6411_writeAnalogOutput16_bit_sub0, .dataOrig = &OD_RAM.x6411_writeAnalogOutput16_bit[0], .attribute0 = ODA_SDO_R, .attribute = ODA_SDO_RW | ODA_TRPDO | ODA_MB, .dataElementLength = 2, .dataElementSizeof = sizeof(int16_t) } }; /******************************************************************************* Object dictionary *******************************************************************************/ static OD_ATTR_OD OD_entry_t ODList[] = { {0x1000, 0x01, ODT_VAR, &ODObjs.o_1000_deviceType, NULL}, {0x1001, 0x01, ODT_VAR, &ODObjs.o_1001_errorRegister, NULL}, {0x1003, 0x11, ODT_ARR, &ODObjs.o_1003_pre_definedErrorField, NULL}, {0x1005, 0x01, ODT_VAR, &ODObjs.o_1005_COB_ID_SYNCMessage, NULL}, {0x1006, 0x01, ODT_VAR, &ODObjs.o_1006_communicationCyclePeriod, NULL}, {0x1007, 0x01, ODT_VAR, &ODObjs.o_1007_synchronousWindowLength, NULL}, {0x1008, 0x01, ODT_VAR, &ODObjs.o_1008_manufacturerDeviceName, NULL}, {0x1009, 0x01, ODT_VAR, &ODObjs.o_1009_manufacturerHardwareVersion, NULL}, {0x100A, 0x01, ODT_VAR, &ODObjs.o_100A_manufacturerSoftwareVersion, NULL}, {0x1010, 0x07, ODT_ARR, &ODObjs.o_1010_storeParameters, NULL}, {0x1011, 0x07, ODT_ARR, &ODObjs.o_1011_restoreDefaultParameters, NULL}, {0x1012, 0x01, ODT_VAR, &ODObjs.o_1012_COB_IDTimeStampObject, NULL}, {0x1014, 0x01, ODT_VAR, &ODObjs.o_1014_COB_ID_EMCY, NULL}, {0x1015, 0x01, ODT_VAR, &ODObjs.o_1015_inhibitTimeEMCY, NULL}, {0x1016, 0x09, ODT_ARR, &ODObjs.o_1016_consumerHeartbeatTime, NULL}, {0x1017, 0x01, ODT_VAR, &ODObjs.o_1017_producerHeartbeatTime, NULL}, {0x1018, 0x05, ODT_REC, &ODObjs.o_1018_identity, NULL}, {0x1019, 0x01, ODT_VAR, &ODObjs.o_1019_synchronousCounterOverflowValue, NULL}, {0x1200, 0x03, ODT_REC, &ODObjs.o_1200_SDOServerParameter, NULL}, {0x1400, 0x04, ODT_REC, &ODObjs.o_1400_RPDOCommunicationParameter, NULL}, {0x1401, 0x04, ODT_REC, &ODObjs.o_1401_RPDOCommunicationParameter, NULL}, {0x1402, 0x04, ODT_REC, &ODObjs.o_1402_RPDOCommunicationParameter, NULL}, {0x1403, 0x04, ODT_REC, &ODObjs.o_1403_RPDOCommunicationParameter, NULL}, {0x1600, 0x09, ODT_REC, &ODObjs.o_1600_RPDOMappingParameter, NULL}, {0x1601, 0x09, ODT_REC, &ODObjs.o_1601_RPDOMappingParameter, NULL}, {0x1602, 0x09, ODT_REC, &ODObjs.o_1602_RPDOMappingParameter, NULL}, {0x1603, 0x09, ODT_REC, &ODObjs.o_1603_RPDOMappingParameter, NULL}, {0x1800, 0x06, ODT_REC, &ODObjs.o_1800_TPDOCommunicationParameter, NULL}, {0x1801, 0x06, ODT_REC, &ODObjs.o_1801_TPDOCommunicationParameter, NULL}, {0x1802, 0x06, ODT_REC, &ODObjs.o_1802_TPDOCommunicationParameter, NULL}, {0x1803, 0x06, ODT_REC, &ODObjs.o_1803_TPDOCommunicationParameter, NULL}, {0x1A00, 0x09, ODT_REC, &ODObjs.o_1A00_TPDOMappingParameter, NULL}, {0x1A01, 0x09, ODT_REC, &ODObjs.o_1A01_TPDOMappingParameter, NULL}, {0x1A02, 0x09, ODT_REC, &ODObjs.o_1A02_TPDOMappingParameter, NULL}, {0x1A03, 0x09, ODT_REC, &ODObjs.o_1A03_TPDOMappingParameter, NULL}, {0x2100, 0x01, ODT_VAR, &ODObjs.o_2100_errorStatusBits, NULL}, {0x2106, 0x01, ODT_VAR, &ODObjs.o_2106_power_onCounter, NULL}, {0x2110, 0x11, ODT_ARR, &ODObjs.o_2110_variableInt32, NULL}, {0x2111, 0x11, ODT_ARR, &ODObjs.o_2111_variableInt32Save, NULL}, {0x2112, 0x11, ODT_ARR, &ODObjs.o_2112_variableNV_Int32AutoSave, NULL}, {0x2120, 0x07, ODT_REC, &ODObjs.o_2120_demoRecord, NULL}, {0x2121, 0x04, ODT_REC, &ODObjs.o_2121_demoStrings, NULL}, {0x2122, 0x01, ODT_VAR, &ODObjs.o_2122_demoDomain, NULL}, {0x6000, 0x09, ODT_ARR, &ODObjs.o_6000_readDigitalInput8_bit, NULL}, {0x6200, 0x09, ODT_ARR, &ODObjs.o_6200_writeDigitalOutput8_bit, NULL}, {0x6401, 0x11, ODT_ARR, &ODObjs.o_6401_readAnalogInput16_bit, NULL}, {0x6411, 0x09, ODT_ARR, &ODObjs.o_6411_writeAnalogOutput16_bit, NULL}, {0x0000, 0x00, 0, NULL, NULL} }; static OD_t _OD = { (sizeof(ODList) / sizeof(ODList[0])) - 1, &ODList[0] }; OD_t *OD = &_OD;