1
0
Fork 0
CANopenNode/OD/OD.h
Pedro Rodríguez Vieites 8751c52836 Added support for CiA 401 / Driver example / Test example.
User must implement the CANInterface for its own hardware
2025-03-07 17:02:55 +01:00

1318 lines
63 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*******************************************************************************
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 !!!!
********************************************************************************
File info:
File Names: OD.h; OD.c
Project File: DS301_profile.xpd
File Version: 1
Created: 23. 11. 2020 12:00:00
Created By:
Modified: 17. 03. 2023 02:07:28
Modified By:
Device Info:
Vendor Name:
Vendor ID:
Product Name: New Product
Product ID:
Description:
*******************************************************************************/
#ifndef OD_H
#define OD_H
#include "301/CO_ODinterface.h"
/*******************************************************************************
Counters of OD objects
*******************************************************************************/
#define OD_CNT_NMT 1
#define OD_CNT_EM 1
#define OD_CNT_SYNC 1
#define OD_CNT_SYNC_PROD 1
#define OD_CNT_STORAGE 1
#define OD_CNT_TIME 1
#define OD_CNT_EM_PROD 1
#define OD_CNT_HB_CONS 1
#define OD_CNT_HB_PROD 1
#define OD_CNT_SDO_SRV 1
#define OD_CNT_SDO_CLI 1
#define OD_CNT_RPDO 4
#define OD_CNT_TPDO 4
/*******************************************************************************
Sizes of OD arrays
*******************************************************************************/
#define OD_CNT_ARR_1003 16
#define OD_CNT_ARR_1010 4
#define OD_CNT_ARR_1011 4
#define OD_CNT_ARR_1016 8
#define OD_CNT_ARR_2110 16
#define OD_CNT_ARR_2111 16
#define OD_CNT_ARR_2112 16
#define OD_CNT_ARR_6000 8
#define OD_CNT_ARR_6002 8
#define OD_CNT_ARR_6003 8
#define OD_CNT_ARR_6005 8
#define OD_CNT_ARR_6006 8
#define OD_CNT_ARR_6007 8
#define OD_CNT_ARR_6008 8
#define OD_CNT_ARR_6020 8
#define OD_CNT_ARR_6030 8
#define OD_CNT_ARR_6038 8
#define OD_CNT_ARR_6050 8
#define OD_CNT_ARR_6060 8
#define OD_CNT_ARR_6070 8
#define OD_CNT_ARR_6100 8
#define OD_CNT_ARR_6102 8
#define OD_CNT_ARR_6103 8
#define OD_CNT_ARR_6106 8
#define OD_CNT_ARR_6107 8
#define OD_CNT_ARR_6108 8
#define OD_CNT_ARR_6120 8
#define OD_CNT_ARR_6122 8
#define OD_CNT_ARR_6123 8
#define OD_CNT_ARR_6126 8
#define OD_CNT_ARR_6127 8
#define OD_CNT_ARR_6128 8
#define OD_CNT_ARR_6200 8
#define OD_CNT_ARR_6202 8
#define OD_CNT_ARR_6206 8
#define OD_CNT_ARR_6207 8
#define OD_CNT_ARR_6208 8
#define OD_CNT_ARR_6220 128
#define OD_CNT_ARR_6240 8
#define OD_CNT_ARR_6250 8
#define OD_CNT_ARR_6260 8
#define OD_CNT_ARR_6270 8
#define OD_CNT_ARR_6300 8
#define OD_CNT_ARR_6302 8
#define OD_CNT_ARR_6306 8
#define OD_CNT_ARR_6307 8
#define OD_CNT_ARR_6308 8
#define OD_CNT_ARR_6320 8
#define OD_CNT_ARR_6322 8
#define OD_CNT_ARR_6326 8
#define OD_CNT_ARR_6327 8
#define OD_CNT_ARR_6328 8
#define OD_CNT_ARR_6400 16
#define OD_CNT_ARR_6401 16
#define OD_CNT_ARR_6402 16
#define OD_CNT_ARR_6410 8
#define OD_CNT_ARR_6411 8
#define OD_CNT_ARR_6412 8
#define OD_CNT_ARR_6421 16
#define OD_CNT_ARR_6422 16
#define OD_CNT_ARR_6424 16
#define OD_CNT_ARR_6425 16
#define OD_CNT_ARR_6426 16
#define OD_CNT_ARR_6427 16
#define OD_CNT_ARR_6428 16
#define OD_CNT_ARR_6429 16
#define OD_CNT_ARR_642A 16
#define OD_CNT_ARR_642B 16
#define OD_CNT_ARR_642C 16
#define OD_CNT_ARR_642D 16
#define OD_CNT_ARR_642E 16
#define OD_CNT_ARR_642F 16
#define OD_CNT_ARR_6430 16
#define OD_CNT_ARR_6431 16
#define OD_CNT_ARR_6432 16
/*******************************************************************************
OD data declaration of all groups
*******************************************************************************/
typedef struct {
/* This object describes the type of device and its functionality. For multiple device modules the
additional information field shall contain FFFF h . In this case, the 67FF h object shall be
implemented. Figure 1 shows the value structure as defined in /CiA301/ and specifies the
additional information field. Table 2 specifies the values for the fields I/O functionality and M.
At least one I/O functionality decribed with bit 16 to 19 shall be implemented in the device.
The pre-defined, generic PDO mapping is described in this specification, the Manufacturer -
specific PDO mapping is not in the scope of this specification. In case a joystick module is
implemented, /CiA401-2/ shall be applied for purpose of the implementation.
31 Specific functionality 24
23 M
22 I/O functionality 16
15 Device profile number 0
31 Additional information 16
15 General information 0
31 MSB
0 LSB
Figure 1 — Value structure
Table 2 — Value definition for the I/O functionality field and the M field
Field name Definition
Device profile number 401d
I/O functionality Bit 16 1b = digital input(s) implemented
0b = not implemented
I/O functionality Bit 17 1b = digital output(s) implemented
0b = not implemented
I/O functionality Bit 18 1b = analog input(s) implemented
0b = not implemented
I/O functionality Bit 19 1b = analog output(s) implemented
0b = not implemented
I/O functionality Bit 20 to Bit 21 Reserved (00 b)
I/O functionality Bit 22 0b
M(apping of PDOs) 1b = Manufacturer-specific PDO mapping is implemented
0b = Pre-defined, generic PDO mapping is implemented (see 6.2.4
to 6.2.11)
Table 3 — Value definition for the specific functionality field
Value Specific function
0000 0000 b No specific function
0000 0001 b to 0000 0111 b Joystick module
0000 1000 b to 1000 0000 b Reserved
1000 0001 b to 1111 1111 b Operator environment interface module
*/
uint32_t x1000_deviceType;
uint32_t x1005_COB_ID_SYNCMessage;
uint32_t x1006_communicationCyclePeriod;
uint32_t x1007_synchronousWindowLength;
uint32_t x1012_COB_IDTimeStampObject;
uint32_t x1014_COB_ID_EMCY;
uint16_t x1015_inhibitTimeEMCY;
uint8_t x1016_consumerHeartbeatTime_sub0;
uint32_t x1016_consumerHeartbeatTime[OD_CNT_ARR_1016];
uint16_t x1017_producerHeartbeatTime;
struct {
uint8_t highestSub_indexSupported;
uint32_t vendor_ID;
uint32_t productCode;
uint32_t revisionNumber;
uint32_t serialNumber;
} x1018_identity;
uint8_t x1019_synchronousCounterOverflowValue;
struct {
uint8_t highestSub_indexSupported;
uint32_t COB_IDClientToServerTx;
uint32_t COB_IDServerToClientRx;
uint8_t node_IDOfTheSDOServer;
} x1280_SDOClientParameter;
struct {
uint8_t highestSub_indexSupported;
uint32_t COB_IDUsedByRPDO;
uint8_t transmissionType;
uint16_t eventTimer;
} x1400_RPDOCommunicationParameter;
struct {
uint8_t highestSub_indexSupported;
uint32_t COB_IDUsedByRPDO;
uint8_t transmissionType;
uint16_t eventTimer;
} x1401_RPDOCommunicationParameter;
struct {
uint8_t highestSub_indexSupported;
uint32_t COB_IDUsedByRPDO;
uint8_t transmissionType;
uint16_t eventTimer;
} x1402_RPDOCommunicationParameter;
struct {
uint8_t highestSub_indexSupported;
uint32_t COB_IDUsedByRPDO;
uint8_t transmissionType;
uint16_t eventTimer;
} x1403_RPDOCommunicationParameter;
struct {
uint8_t numberOfMappedApplicationObjectsInPDO;
uint32_t applicationObject1;
uint32_t applicationObject2;
uint32_t applicationObject3;
uint32_t applicationObject4;
uint32_t applicationObject5;
uint32_t applicationObject6;
uint32_t applicationObject7;
uint32_t applicationObject8;
} x1600_RPDOMappingParameter;
struct {
uint8_t numberOfMappedApplicationObjectsInPDO;
uint32_t applicationObject1;
uint32_t applicationObject2;
uint32_t applicationObject3;
uint32_t applicationObject4;
uint32_t applicationObject5;
uint32_t applicationObject6;
uint32_t applicationObject7;
uint32_t applicationObject8;
} x1601_RPDOMappingParameter;
struct {
uint8_t numberOfMappedApplicationObjectsInPDO;
uint32_t applicationObject1;
uint32_t applicationObject2;
uint32_t applicationObject3;
uint32_t applicationObject4;
uint32_t applicationObject5;
uint32_t applicationObject6;
uint32_t applicationObject7;
uint32_t applicationObject8;
} x1602_RPDOMappingParameter;
struct {
uint8_t numberOfMappedApplicationObjectsInPDO;
uint32_t applicationObject1;
uint32_t applicationObject2;
uint32_t applicationObject3;
uint32_t applicationObject4;
uint32_t applicationObject5;
uint32_t applicationObject6;
uint32_t applicationObject7;
uint32_t applicationObject8;
} x1603_RPDOMappingParameter;
struct {
uint8_t highestSub_indexSupported;
uint32_t COB_IDUsedByTPDO;
uint8_t transmissionType;
uint16_t inhibitTime;
uint16_t eventTimer;
uint8_t SYNCStartValue;
} x1800_TPDOCommunicationParameter;
struct {
uint8_t highestSub_indexSupported;
uint32_t COB_IDUsedByTPDO;
uint8_t transmissionType;
uint16_t inhibitTime;
uint16_t eventTimer;
uint8_t SYNCStartValue;
} x1801_TPDOCommunicationParameter;
struct {
uint8_t highestSub_indexSupported;
uint32_t COB_IDUsedByTPDO;
uint8_t transmissionType;
uint16_t inhibitTime;
uint16_t eventTimer;
uint8_t SYNCStartValue;
} x1802_TPDOCommunicationParameter;
struct {
uint8_t highestSub_indexSupported;
uint32_t COB_IDUsedByTPDO;
uint8_t transmissionType;
uint16_t inhibitTime;
uint16_t eventTimer;
uint8_t SYNCStartValue;
} x1803_TPDOCommunicationParameter;
struct {
uint8_t numberOfMappedApplicationObjectsInPDO;
uint32_t applicationObject1;
uint32_t applicationObject2;
uint32_t applicationObject3;
uint32_t applicationObject4;
uint32_t applicationObject5;
uint32_t applicationObject6;
uint32_t applicationObject7;
uint32_t applicationObject8;
} x1A00_TPDOMappingParameter;
struct {
uint8_t numberOfMappedApplicationObjectsInPDO;
uint32_t applicationObject1;
uint32_t applicationObject2;
uint32_t applicationObject3;
uint32_t applicationObject4;
uint32_t applicationObject5;
uint32_t applicationObject6;
uint32_t applicationObject7;
uint32_t applicationObject8;
} x1A01_TPDOMappingParameter;
struct {
uint8_t numberOfMappedApplicationObjectsInPDO;
uint32_t applicationObject1;
uint32_t applicationObject2;
uint32_t applicationObject3;
uint32_t applicationObject4;
uint32_t applicationObject5;
uint32_t applicationObject6;
uint32_t applicationObject7;
uint32_t applicationObject8;
} x1A02_TPDOMappingParameter;
struct {
uint8_t numberOfMappedApplicationObjectsInPDO;
uint32_t applicationObject1;
uint32_t applicationObject2;
uint32_t applicationObject3;
uint32_t applicationObject4;
uint32_t applicationObject5;
uint32_t applicationObject6;
uint32_t applicationObject7;
uint32_t applicationObject8;
} x1A03_TPDOMappingParameter;
} OD_PERSIST_COMM_t;
typedef struct {
uint8_t x1001_errorRegister;
uint8_t x1010_storeParameters_sub0;
uint32_t x1010_storeParameters[OD_CNT_ARR_1010];
uint8_t x1011_restoreDefaultParameters_sub0;
uint32_t x1011_restoreDefaultParameters[OD_CNT_ARR_1011];
struct {
uint8_t highestSub_indexSupported;
uint32_t COB_IDClientToServerRx;
uint32_t COB_IDServerToClientTx;
} x1200_SDOServerParameter;
uint8_t x2100_errorStatusBits[10];
uint8_t x2110_variableInt32_sub0;
int32_t x2110_variableInt32[OD_CNT_ARR_2110];
uint8_t x6000_readDigitalInput8_bit_sub0;
uint8_t x6000_readDigitalInput8_bit[OD_CNT_ARR_6000];
/* This object shall indicate the configured polarity of a group of 8 input lines. The input polarity
can be inverted individually.
1 b = input inverted
0 b = input not inverted
If the object is not supported the device shall behave according to the default value.
*/
uint8_t x6002_polarityDigitalInput8_bit_sub0;
uint8_t x6002_polarityDigitalInput8_bit[OD_CNT_ARR_6002];
/* This object shall enable and disable an additional configurable filter constant. If the object is
not supported, the device shall behave according to the default value. The type of the filter
constant and the configuration of the filter constant are manufacturer -specific.
1 = enabled
0 = disabled
*/
uint8_t x6003_digitalFilterEnable8_bit_sub0;
uint8_t x6003_digitalFilterEnable8_bit[OD_CNT_ARR_6003];
/* This object shall enable and disable globally the interrupt behavior without changing the
interrupt masks. In event-driven mode the device transmits the input values depending on the
interrupt masks in objects 6006 h , 6007 h , and 6008 h (resp. 6050 h to 6057 h, 6060 h to 6067 h ,
6070 h to 6077 h , or 6106 h , 6107 h , 6108 h , or 6126 h , 6127 h , 6128 h ) and the PDO transmission
type. If the object is not supported, the device shall behave according to the default value.
TRUE = global interrupt enabled
FALSE = global interrupt disabled
*/
uint8_t x6005_globalInterruptEnableDigital8_bit;
/*
This object shall determine, which input port lines shall activate an interrupt by positive or/and
negative edge detection.
If the object is not supported the device shall behave according to the default value.
*/
uint8_t x6006_digitalInterruptMaskAnyChange8_bit_sub0;
uint8_t x6006_digitalInterruptMaskAnyChange8_bit[OD_CNT_ARR_6006];
/* This object shall determine, which input port lines shall activate an interrupt by positive edge
detection (logical 0 to 1). This is done for groups of 8 lines. The values shall be in an ”OR”
connection to the values of 6006 h object (Interrupt mask any change 8-bit). If inputs are
inverted by 6002 h object (polarity input 8-bit), the positive logical edge shall correspond to
negative physical edge.
1 = interrupt enabled
0 = interrupt disabled
*/
uint8_t x6007_digitalInterruptMaskLowToHigh8_bit_sub0;
uint8_t x6007_digitalInterruptMaskLowToHigh8_bit[OD_CNT_ARR_6007];
/* This object shall determine, which input port lines shall activate an interrupt by negative edge
detection (logical 1 to 0). This is done for groups of 8 lines. The values shall be in an ”OR”
connection to the values of 6006 h object (Interrupt mask any change 8-bit). If inputs are
inverted by 6002 h object (polarity input 8-bit), the negative logical edge shall correspond to
positive physical edge.
1 = interrupt enabled
0 = interrupt disabled
*/
uint8_t x6008_digitalInterruptMaskHighToLow8_bit_sub0;
uint8_t x6008_digitalInterruptMaskHighToLow8_bit[OD_CNT_ARR_6008];
/*
These objects shall read single input lines information. A maximum of 128 input lines are
addressable with one Index. The 6020 h object shall address the input lines 1 to 128, the 6021 h
object shall address the input lines 129 to 256, etc.
*/
uint8_t x6020_readDigitalInputBit1To128_sub0;
uint8_t x6020_readDigitalInputBit1To128[OD_CNT_ARR_6020];
/* These objects shall indicate the configured polarity of single input lines. A maximum of 128
input lines are addressable with one Index. The 6030 h object shall address the input lines 1 to
128, the 6031 h object shall address the input lines 129 to 256, etc.
TRUE = input inverted
FALSE = input not inverted
If these objects are not supported the device shall behave according to the default value.
*/
uint8_t x6030_polarityDigitalInputBit1To128_sub0;
uint8_t x6030_polarityDigitalInputBit1To128[OD_CNT_ARR_6030];
/* These objects shall enable and disable an additional configurable filter constant. If these
objects are not supported, the device shall behave according to the default value. The type of
the filter constant and the configuration of the filter constant are manufacturer -specific. The
6038 h object shall address the input lines 1 to 128, the 6039 h object shall address the input
lines 129 to 256, etc.
TRUE = enabled
FALSE = disable
*/
uint8_t x6038_filterConstantDigitalInputBit1To128_sub0;
uint8_t x6038_filterConstantDigitalInputBit1To128[OD_CNT_ARR_6038];
/* These objects shall set interrupt masks for single input lines. A maximum of 128 bit inputs are
addressable with one Index. The 6050 h object shall address the input lines 1 to 128, the 6051 h
object shall address the input lines 129 to 256, etc.
TRUE = interrupt enabled
FALSE = interrupt disabled
If the object is not supported, the device shall behave according to the default value.
*/
uint8_t x6050_interruptMaskDigitalInputAnyChange1To128_sub0;
uint8_t x6050_interruptMaskDigitalInputAnyChange1To128[OD_CNT_ARR_6050];
/* These objects shall set interrupt masks for a single input line. A maximum of 128 bit inputs
are addressable with one Index. The 6060 h object shall address the input lines 1 to 128, the
6061 h object shall address the input lines 129 to 256, etc. The values shall be in an ”OR”
connection to the values of 6050 h to 6057 h objects (interrupt mask any change). If inputs are
inverted by 6030 h to 6037 h objects (polarity input), the positive logical edge shall correspond
to negative physical edge.
TRUE = interrupt enabled
FALSE = interrupt disabled
If the object is not supported, the device shall behave according to the default value.
*/
uint8_t x6060_interruptMaskDigitalInputLowToHigh1To128_sub0;
uint8_t x6060_interruptMaskDigitalInputLowToHigh1To128[OD_CNT_ARR_6060];
/*
These objects shall set interrupt masks for single input lines. A maximum of 128 bit inputs are
addressable with one Index. The 6070 h object shall address the input lines 1 to 128, the 6071 h
object shall address the input lines 129 to 256, etc. The values shall be in an ”OR” connection
to the values of 6050 h to 6057 h objects (interrupt mask any change). If inputs are inverted by
6030 h to 6037 h objects (polarity input), the negative logical edge shall correspond to positive
physical edge.
TRUE = interrupt enabled
FALSE = interrupt disabled
If the object is not supported, the device shall behave according to the default value.
*/
uint8_t x6070_interruptMaskDigitalInputHighToLow1To128_sub0;
uint8_t x6070_interruptMaskDigitalInputHighToLow1To128[OD_CNT_ARR_6070];
/*
The object shall read a group of 16 input lines as 16-bit information. A maximum of 254 x 16-
bit words is addressable (4064 inputs).
*/
uint8_t x6100_readDigitalInput16_bit_sub0;
uint16_t x6100_readDigitalInput16_bit[OD_CNT_ARR_6100];
/* This object shall indicate the configured polarity for a group of 16 input lines. The inputs can
be inverted individually.
1 = input inverted
0 = input not inverted
If the object is not supported the device shall behave according to the default value.
*/
uint8_t x6102_polarityDigitalInput16_bit_sub0;
uint16_t x6102_polarityDigitalInput16_bit[OD_CNT_ARR_6102];
/* This object shall enable and disable an additional configurable filter constant. If the object is
not supported, the device shall behave according to the default value. The type of the filter
constant and the configuration of the filter constant are manufacturer -specific.
1 = enabled
0 = disabled
*/
uint8_t x6103_digitalFilterEnable16_bit_sub0;
uint16_t x6103_digitalFilterEnable16_bit[OD_CNT_ARR_6103];
/* This object shall determine, which input port lines shall activate an interrupt. This is done for
groups of 16 lines and for any change of a digital input line.
1 = interrupt enabled
0 = interrupt disabled
*/
uint8_t x6106_interruptMaskDigitalInputAnyChange16_bit_sub0;
uint16_t x6106_interruptMaskDigitalInputAnyChange16_bit[OD_CNT_ARR_6106];
/* This object shall determine, which input port lines shall activate an interrupt. This is done for
groups of 16 lines and for a change from low -to-high of a digital input line. The values shall be
in an ”OR” connection to the values of 6106 h object (interrupt mask any change 16-bit). If
inputs are inverted by 6102 h object (polarity input 16-bit), the positive logical edge shall
correspond to negative physical edge.
1 = interrupt enabled
0 = interrupt disabled */
uint8_t x6107_interruptMaskDigitalInputLowToHigh16_bit_sub0;
uint16_t x6107_interruptMaskDigitalInputLowToHigh16_bit[OD_CNT_ARR_6107];
/* This object shall determine, which input port lines shall activate an interrupt. This is done for
groups of 16 lines and for a change from high-to-low of a digital input line. The values shall be
in an ”OR” connection to the values of 6106 h object (interrupt mask any change 16-bit). If
inputs are inverted by 6102 h object (polarity input 16-bit), the negative logical edge shall
correspond to positive physical edge.
1 = interrupt enabled
0 = interrupt disabled
*/
uint8_t x6108_interruptMaskDigitalInputHighToLow16_bit_sub0;
uint16_t x6108_interruptMaskDigitalInputHighToLow16_bit[OD_CNT_ARR_6108];
/* This object shall read a group of 32 input lines as 32-bit information. A maximum of 254 x 32-
*/
uint8_t x6120_readDigitalInput32_bit_sub0;
uint32_t x6120_readDigitalInput32_bit[OD_CNT_ARR_6120];
/* This object shall indicate the configured polarity for a group of 32 input lines. Inputs can be
inverted individually.
1 = input inverted
0 = input not inverted
If the object is not supported the device shall behave according to the default value. */
uint8_t x6122_polarityDigitalInput32_bit_sub0;
uint32_t x6122_polarityDigitalInput32_bit[OD_CNT_ARR_6122];
/* This object shall enable and disable an additional configurable filter constant. If the object is
not supported, the device shall behave according to the default value. The type of the filter
constant and the configuration of the filter constant are manufacturer -specific.
1 = enabled
0 = disabled */
uint8_t x6123_digitalFilterEnable32_bit_sub0;
uint32_t x6123_digitalFilterEnable32_bit[OD_CNT_ARR_6123];
/* This object shall determine which input port lines shall activate an interrupt. This is done for
groups of 32 lines and for any change of a digital input line.
1 = interrupt enabled
0 = interrupt disabled
If the object is not supported, the device shall behave according to the default value.
*/
uint8_t x6126_interruptMaskDigitalInputAnyChange32_bit_sub0;
uint32_t x6126_interruptMaskDigitalInputAnyChange32_bit[OD_CNT_ARR_6126];
/*
This object shall determine, which input port lines shall activate an interrupt. This is done for
groups of 32 lines and for a change from low -to-high of a digital input line. The values shall be
in an ”OR” connection to the values of 6126 h object (interrupt mask any change 32-bit). If
inputs are inverted by 6122 h object (polarity input 32-bit), the positive logical edge shall
correspond to negative physical edge.
1 = interrupt enabled
0 = interrupt disabled
*/
uint8_t x6127_interruptMaskDigitalInputLowToHigh32_bit_sub0;
uint32_t x6127_interruptMaskDigitalInputLowToHigh32_bit[OD_CNT_ARR_6127];
/*
This object shall determine, which input port lines shall activate an interrupt. This is done for
groups of 32 lines and for a change from high-to-low of a digital input line. The values shall be
in an ”OR” connection to the values of 6126 h object (interrupt mask any change 32-bit). If
inputs are inverted by 6122 h object (polarity input 32-bit), the negative logical edge shall
correspond to positive physical edge.
1 = interrupt enabled
0 = interrupt disabled
*/
uint8_t x6128_interruptMaskDigitalInputHighToLow32_bit_sub0;
uint32_t x6128_interruptMaskDigitalInputHighToLow32_bit[OD_CNT_ARR_6128];
/* This object shall set a group of 8 output lines as a byte of information. A maximum of 254 x 8
bit output blocks is addressable. */
uint8_t x6200_writeDigitalOutput8_bit_sub0;
uint8_t x6200_writeDigitalOutput8_bit[OD_CNT_ARR_6200];
/* This object shall indicate the configured polarity of a group of 8 output lines. The output
polarity can be inverted individually.
1 = output inverted
0 = output not inverted */
uint8_t x6202_changePolarityDigitalOutput8_bit_sub0;
uint8_t x6202_changePolarityDigitalOutput8_bit[OD_CNT_ARR_6202];
/* This object shall indicate, whether an output is set to a pre-defined error value (see 6207 h
object) in case of an internal device failure or a 'Stop Remote Node' indication.
1 = output value shall take the pre-defined condition specified in 6207 h object
0 = output value shall be kept if an error occurs
*/
uint8_t x6206_errorModeDigitalOutput8_bit_sub0;
uint8_t x6206_errorModeDigitalOutput8_bit[OD_CNT_ARR_6206];
/* This Object shall indicate to which value the outputs shall be set at device failures (see
chapter 5.2) if the corresponding error mode is active.
0 = output shall be set to 0 in case of fault, if 6206 h object is enabled
1 = output shall be set to 1 in case of fault, if 6206 h object is enabled
*/
uint8_t x6207_errorValueDigitalOutput8_bit_sub0;
uint8_t x6207_errorValueDigitalOutput8_bit[OD_CNT_ARR_6207];
/* This object shall indicate an additional configurable output filter mask for a group of 8 outputs.
1 = output shall be set to the received output value
0 = dont care, the received output value is neglected for the appropriated output channel, the
old output value shall be kept.
If the object is not supported, the device shall behave according to the default value. */
uint8_t x6208_filterMaskDigitalOutput8_bit_sub0;
uint8_t x6208_filterMaskDigitalOutput8_bit[OD_CNT_ARR_6208];
/* These objects shall set single output line information. A maximum of 128 outputs are
addressable with one Index. The 6220 h object shall address output lines 1 to 128, the 6221 h
object shall address output lines 129 to 256, etc. */
uint8_t x6220_writeDigitalOutputBit1To128_sub0;
uint8_t x6220_writeDigitalOutputBit1To128[OD_CNT_ARR_6220];
/* These objects shall set the polarity of single output lines. A maximum of 128 outputs are
addressable with one Index. The 6240 h object shall address output lines 1 to 128, the 6241 h
object shall address output lines 129 to 256, etc.
TRUE = output inverted
FALSE = output not inverted */
uint8_t x6240_changePolarityDigitalOutputBit1To128_sub0;
uint8_t x6240_changePolarityDigitalOutputBit1To128[OD_CNT_ARR_6240];
/* These objects shall indicate, whether an output is set to a pre -defined error value (see 6260 h
to 6267 h objects) in case of an internal device failure a 'Stop remote node' indication. A
maximum of 128 outputs are addressable with one Index. The 6250 h object shall address
output lines 1 to 128, the 6251 h object shall address output lines 129 to 256, etc.
TRUE = output value shall take the pre-defined condition as specified in 6260 h to 6267 h
objects
FALSE = output value shall be kept if an error occurs
If the object is not supported, the device shall behave according to the default value. */
uint8_t x6250_errorModeDigitalOutputLines1To128_sub0;
uint8_t x6250_errorModeDigitalOutputLines1To128[OD_CNT_ARR_6250];
/* This Object shall indicate to which value the outputs shall be set at device failures (see
chapter 5.2) if the corresponding error mode is active. A maximum of 128 outputs are
addressable with one Index. The 6260 h object shall address output lines 1 to 128, the 6261 h
object shall address output lines 129 to 256, etc.
FALSE = output shall be set to 0 in case of fault, if the corresponding object (6250 h to 6257 h )
is enabled
TRUE = output shall be set to 1 in case of fault, if the corresponding object (6250 h to 6257 h )
is enabled
If the object is not supported, the device shall behave according to the default value. */
uint8_t x6260_errorValueDigitalOutputBit1To128_sub0;
uint8_t x6260_errorValueDigitalOutputBit1To128[OD_CNT_ARR_6260];
/* This object shall indicate an additional configurable output filter mask for a single output.
TRUE = output shall set to the received output value
FALSE = dont care the received output value is neglected for the appropriated output
channel, the old output value shall be kept
A maximum of 128 outputs are addressable with one Index. The 6270 h object shall address
output lines 1 to 128, the 6271 h object shall address output lines 129 to 256, etc.
If the object is not supported, the device shall behave according to the default value. */
uint8_t x6270_filterMaskDigitalOutputBit1To128_sub0;
uint8_t x6270_filterMaskDigitalOutputBit1To128[OD_CNT_ARR_6270];
/* This object shall set a group of 16 output lines as 2 -byte information. A maximum of 255 x 16-
bit words is addressable (4080 outputs). */
uint8_t x6300_writeDigitalOutput16_bit_sub0;
uint16_t x6300_writeDigitalOutput16_bit[OD_CNT_ARR_6300];
/* This object shall indicate the configured polarity for a group of 16 output lines. The output
polarity can be inverted individually.
1 = enabled
0 = disabled
If the object is not supported the device shall behave according to the default value. */
uint8_t x6302_changePolarityDigitalOutput16_bit_sub0;
uint16_t x6302_changePolarityDigitalOutput16_bit[OD_CNT_ARR_6302];
/* These objects shall indicate, whether an output is set to a pre -defined error value (see 6307 h
object) in case of an internal device failure a 'Stop Remote Node' indication.
1 = output value shall take the pre-defined condition as specified in 6307 h object
0 = output value shall be kept if an error occurs
If the object is not supported, the device shall behave according to the default value. */
uint8_t x6306_errorModeDigitalOutput16_bit_sub0;
uint16_t x6306_errorModeDigitalOutput16_bit[OD_CNT_ARR_6306];
/* This Object shall indicate to which value the outputs shall be set at device failures (see
chapter 5.2) if the corresponding error mode is active.
0 = output shall be set to 0 in case of fault, if 6306h object is enabled
1 = output shall be set to 1 in case of fault, if 6306h object is enabled
If the object is not supported, the device shall behave according to the default value. */
uint8_t x6307_errorValueDigitalOutput16_bit_sub0;
uint16_t x6307_errorValueDigitalOutput16_bit[OD_CNT_ARR_6307];
/* This object shall define an additional configurable output filter mask for a group of 16 outputs.
1 = output is shall set to the received output value
0 = dont care, the received output value is neglected for the appropriated output channel, the
old output value shall be kept.
If the object is not supported, the device shall behave according to the default value. */
uint8_t x6308_filterMaskDigitalOutput16_bit_sub0;
uint16_t x6308_filterMaskDigitalOutput16_bit[OD_CNT_ARR_6308];
/* This object shall set a group of 32 output lines as 4 -Byte information. A maximum of 255 x 32-
bit words is addressable (8160 outputs). */
uint8_t x6320_writeDigitalOutput32_bit_sub0;
uint32_t x6320_writeDigitalOutput32_bit[OD_CNT_ARR_6320];
/* This object shall define the polarity for a group of 32 output lines. The output polarity can be
inverted individually.
1 = enabled
0 = disabled
If the object is not supported the device shall behave accordingly to the default value. */
uint8_t x6322_changePolarityDigitalOutput32_bit_sub0;
uint32_t x6322_changePolarityDigitalOutput32_bit[OD_CNT_ARR_6322];
/* These objects shall indicate, whether an output is set to a pre -defined error value (see also
6327 h object) in case of an internal device failure a 'Stop Remote Node' indication.
1 = output value shall take the pre-defined condition as specified in 6327 h object
0 = output value shall be kept if an error occurs
If the object is not supported, the device shall behave according to the default value. */
uint8_t x6326_errorModeDigitalOutput32_bit_sub0;
uint32_t x6326_errorModeDigitalOutput32_bit[OD_CNT_ARR_6326];
/* This Object shall indicate to which value the outputs shall be set at device failures (see
chapter 5.2) if the corresponding error mode is active.
0 = output shall be set to 0 in case of fault, if 6326 h object is enabled
1 = output shall be set to 1 in case of fault, if 6326 h object is enabled
If the object is not supported, the device shall behave according to the default value. */
uint8_t x6327_errorValueDigitalOutput32_bit_sub0;
uint32_t x6327_errorValueDigitalOutput32_bit[OD_CNT_ARR_6327];
/* This object shall define an additional configurable output filter mask for a group of 32 outputs.
1 = output shall be set to the received output value
0 = dont care the received output value is neglected for the appropriated output channel, the
old output value shall be kept.
If the object is not supported, the device shall behave accordingly to the default value. */
uint8_t x6328_filterMaskDigitalOutput32_bit_sub0;
uint32_t x6328_filterMaskDigitalOutput32_bit[OD_CNT_ARR_6328];
/* This object shall read the value of the input channel 'n'. The value size is 8 -bit or less. The
value shall always be left adjusted. The remaining bits at the right side of the LSB shall be set
to zero. */
uint8_t x6400_readAnalogInput8_bit_sub0;
uint8_t x6400_readAnalogInput8_bit[OD_CNT_ARR_6400];
/* This object shall read the value of the input channel 'n'. The value is 16-bit wide or less. The
value shall always be left adjusted. The remaining bits at the right side of the LSB shall be set
to zero. */
uint8_t x6401_readAnalogInput16_bit_sub0;
int16_t x6401_readAnalogInput16_bit[OD_CNT_ARR_6401];
/* This object shall read the value of the input channel 'n'. The value is 32 -bit wide or less. The
value shall always be left adjusted. The remaining bits at the right side of the LSB shall be set
to zero. */
uint8_t x6402_readAnalogInput32_bit_sub0;
int32_t x6402_readAnalogInput32_bit[OD_CNT_ARR_6402];
/* This object shall write an integer8 value to the output channel 'n'. The value shall always be
left adjusted. */
uint8_t x6410_writeAnalogOutput8_bit_sub0;
int8_t x6410_writeAnalogOutput8_bit[OD_CNT_ARR_6410];
/* This object shall write an integer16 value to the output channel 'n'. The value shall always be
left adjusted. */
uint8_t x6411_writeAnalogOutput16_bit_sub0;
int16_t x6411_writeAnalogOutput16_bit[OD_CNT_ARR_6411];
/* This object shall write an integer32 value to the output channel 'n'. The value shall always be
left adjusted. */
uint8_t x6412_writeAnalogOutput32_bit_sub0;
int32_t x6412_writeAnalogOutput32_bit[OD_CNT_ARR_6412];
/*
This object shall determine, which events shall cause an interrupt for a specific channel.
Any bit set to 1 b shall trigger the corresponding analog input. If the object is not supported, the device
shall behave according to the default value.
bit 0 0b Upper limit not exceeded
bit 0 1b Upper limit exceeded
bit 1 0b Input not below lower limit
bit 1 1b Input below lower limit
bit 2 0b Input not changed by more than delta
bit 2 1b Input changed by more than delta
bit 3 0b Input not reduced by more than negative delta
bit 3 1b Input reduced by more than negative delta
bit 4 0b Input not increased by more than positive delta
bit 4 1b Input increased by more than positive delta
bit 5 0b Reserved for future use
*/
uint8_t x6421_analogInputInterruptTriggerSelection_bit_sub0;
int32_t x6421_analogInputInterruptTriggerSelection_bit[OD_CNT_ARR_6421];
/*
This object shall determine, which channel has produced an interrupt. The bits set shall relate
to the number of the channels that have produced interrupts. The bits shall be reset
automatically after read by SDO or transmitted by means of a PDO.
1 = interrupt produced
0 = no interrupt produced
If the object is not supported, the device shall behave according to the default value.
*/
uint8_t x6422_analogInputInterruptSource_bit_sub0;
int32_t x6422_analogInputInterruptSource_bit[OD_CNT_ARR_6422];
/*
This object shall enable and disable globally the interrupt behavior without changing the
interrupt mask. By default, no analog input activates an interrupt.
TRUE = global interrupt enabled
FALSE = global interrupt disabled
*/
uint8_t x6423_analogInputGlobalInterruptEnable;
/*
This object shall trigger an interrupt if enabled (see 6423 h object) and the analog input is
equal to, or rises above the given value. The value shall always be left adjusted. As long as
the trigger condition is met, every change of the analog input data generates a new interrupt,
if there is no additional trigger condition, e.g. an input interrupt delta (6426 h ).
If the object is not supported, the device shall behave according to the default value.
Configuration of the analog input interrupt upper limit float object (6429 h ) shall also cause a
value change in the 6424 h object and vice versa.
*/
uint8_t x6424_analogInputUpperLimitInteger_bit_sub0;
int32_t x6424_analogInputUpperLimitInteger_bit[OD_CNT_ARR_6424];
/*
This object shall trigger an interrupt if enabled (see 6423 h object) and the analog input falls
below the given value. The value shall always be left adjusted. As long as the trigger
condition is met, every change of the analog input data generates a new interrupt, if there is
no additional trigger condition, e.g. an input interrupt delta (6426 h ).
If the object is not supported, the device shall behave according to the default value.
Configuration of the analog input interrupt lower limit float object (642A h ) shall also cause a
value change in the 6425 h object and vice versa.
*/
uint8_t x6425_analogInputLowerLimitInteger_bit_sub0;
int32_t x6425_analogInputLowerLimitInteger_bit[OD_CNT_ARR_6425];
/*
This object shall set the delta value (rising or falling above or below the last communicated
value) for interrupt-enabled analog inputs (see 6423 h object).
If the object is not supported, the device shall behave according to the default value.
Configuration of the analog input interrupt delta float object (642B h ) shall also cause a value
change in 6426 h object and vice versa.
*/
uint8_t x6426_analogInputInterruptDeltaUnsigned_bit_sub0;
int32_t x6426_analogInputInterruptDeltaUnsigned_bit[OD_CNT_ARR_6426];
/*
This object shall set the negative delta value (falling below the last communicated value) for
interrupt-enabled analog inputs (see 6423 h object).
If the object is not supported, the device shall behave according to the default value.
Configuration of the analog input interrupt negative delta float object (642C h ) shall also cause
a value change in the 6427 h object and vice versa.
*/
uint8_t x6427_analogInputInterruptNegativeDeltaUnsigned_bit_sub0;
int32_t x6427_analogInputInterruptNegativeDeltaUnsigned_bit[OD_CNT_ARR_6427];
/*
This object shall set the positive delta value (rising above the last communicated value) for
interrupt-enabled analog inputs (see 6423 h object).
If the object is not supported, the device shall behave accordingly to the default value.
Configuration of the analog input interrupt positive delta float object (642D h ) shall also cause
a value change in the 6428 h object and vice versa.
*/
uint8_t x6428_analogInputInterruptPositiveDeltaUnsigned_bit_sub0;
int32_t x6428_analogInputInterruptPositiveDeltaUnsigned_bit[OD_CNT_ARR_6428];
/*
This object shall set the converted upper limits for interrupt-enabled analog inputs (see 6423 h
object). As long as the trigger condition is met, every change of the analog input data
generates a new interrupt, if there is no additional trigger condition, e.g. an input interrupt
delta (642B h ).
If the object is not supported, the device shall behave according to the default value.
Configuration of the analog input interrupt upper limit integer object (6424 h ) shall also cause a
value change in the 6429 h object and vice versa.
*/
uint8_t x6429_analogInputInterruptUpperLimitFloat_bit_sub0;
float32_t x6429_analogInputInterruptUpperLimitFloat_bit[OD_CNT_ARR_6429];
/*
This object shall set the lower limits for interrupt -enabled analog inputs (see 6423 h object). As
long as the trigger condition is met, every change of the analog input data generates a new
interrupt, if there is no additional trigger condition, e.g. an input interrupt delta (642B h ).
If the object is not supported, the device shall behave accordingly to the default value.
Configuration of the analog input interrupt lower limit integer object (6425 h ) shall also cause a
value change in the 642A h object and vice versa.
*/
uint8_t x642A_analogInputInterruptLowerLimitFloat_bit_sub0;
float32_t x642A_analogInputInterruptLowerLimitFloat_bit[OD_CNT_ARR_642A];
/*
This object shall set the delta value (rising or falling above or below the last sample) in float
format for interrupt-enabled analog inputs (see 6423 h object).
If the object is not supported, the device shall behave according to the default value.
Configuration of the analog input interrupt delta unsigned object (6426 h) shall also cause a
value change in the 642B h object and vice versa.
*/
uint8_t x642B_analogInputInterruptDeltaFloat_bit_sub0;
float32_t x642B_analogInputInterruptDeltaFloat_bit[OD_CNT_ARR_642B];
/*
This object shall set the negative delta value (falling below the last sample) in float format for
interrupt-enabled analog inputs (see 6423 h object).
If the object is not supported, the device shall behave according to the default value.
Configuration of the analog input interrupt negative delta unsigned object (6427 h ) shall also
cause a value change in the 642C h object and vice versa.
*/
uint8_t x642C_analogInputInterruptNegativeDeltaFloat_bit_sub0;
float32_t x642C_analogInputInterruptNegativeDeltaFloat_bit[OD_CNT_ARR_642C];
/*
This object shall set the positive delta value (rising above the last sample) in float format for
interrupt-enabled analog inputs (see 6423 h object).
If the object is not supported, the device shall behave according to the default value.
Configuration of the analog input interrupt positive delta unsigned object (6428 h ) shall also
cause a value change in the 642D h object and vice versa.
*/
uint8_t x642D_analogInputInterruptPositiveDeltaFloat_bit_sub0;
float32_t x642D_analogInputInterruptPositiveDeltaFloat_bit[OD_CNT_ARR_642D];
/*
This object shall set the offsets in float format for input data (6403 h object) for channel 'n'.
Figure 6 specifies the relationship between the analog input objects for the 16 -bit access. The
analog input offset float value shall be calculated by the formula defined in the sub -clause
8.4.4.
If the object is not supported, the device shall behave accordingly to 6431 h object, or if that
object is also not supported, the device shall behave accordingly to the default value.
Configuration of the analog input offset integer object (6431 h ) shall also cause a value change
in the 642E h object and vice versa.
*/
uint8_t x642E_analogInputOffsetFloat_bit_sub0;
float32_t x642E_analogInputOffsetFloat_bit[OD_CNT_ARR_642E];
/*
This object shall set the pre-scaling in float format for input data (6403 h object). Figure 6
specifies the relationship between the analog input objects for the 16 -bit access. The analog
input pre-scaling float value shall be calculated by the formula defined in the sub -clause 8.4.4.
If the object is not supported, the device shall behave accordingly to 6432 h object, or if that
object is also not supported, the device shall behave accordingly to the default value.
Configuration of the analog input pre-scaling integer object (6432 h ) shall also cause a value
change in the 642F h object and vice versa.
*/
uint8_t x642F_analogInputPreScalingFloat_bit_sub0;
float32_t x642F_analogInputPreScalingFloat_bit[OD_CNT_ARR_642F];
/*
This object shall assign SI units and prefixes for analog inputs. The value structure is
specified in Figure 9.
31 Prefix 24
23 SI Numerator 16
15 SI Denominator 8
7 reserved 0
*/
uint8_t x6430_analogInputSIUnit_bit_sub0;
uint8_t x6430_analogInputSIUnit_bit[OD_CNT_ARR_6430];
/*
This object shall set the offset in integer format for input data (6403 h object). Figure 6
specifies the relationship between the analog input objects for the 16 -bit access. The analog
input offset integer value shall be calculated by the formula defined in the sub -clause 8.4.4.
If the object is not supported, the device shall behave according to 642E h object, or if that
object is also not supported, the device shall behave according to the default value.
Configuration of the analog input offset float object (642E h ) shall also cause a value change in
the 6431 h object and vice versa.
*/
uint8_t x6431_analogInputOffsetInteger_bit_sub0;
int32_t x6431_analogInputOffsetInteger_bit[OD_CNT_ARR_6431];
/* This object shall set the pre-scaling in integer format or input data (6403 h object). Figure 6
specifies the relationship between the analog input objects for the 16 -bit access. The analog
input pre-scaling integer value shall be calculated by the formula defined in the sub -clause
8.4.4.
If the object is not supported, the device shall behave according to 642F h object, or if that
object is also not supported, the device shall behave according to the default value.
Configuration of the analog input pre-scaling float object (642F h ) shall also cause a value
change in the 6432 h object and vice versa.
*/
uint8_t x6432_analogInputPreScalingInteger_bit_sub0;
int32_t x6432_analogInputPreScalingInteger_bit[OD_CNT_ARR_6432];
/* This object shall describe the first logical device in a multiple device module according to
/CiA301/. */
uint32_t x67FF_deviceType;
} OD_RAM_t;
typedef struct {
uint32_t x2106_power_onCounter;
uint8_t x2112_variableNV_Int32AutoSave_sub0;
int32_t x2112_variableNV_Int32AutoSave[OD_CNT_ARR_2112];
} OD_PERSIST_APP_AUTO_t;
typedef struct {
uint8_t x2111_variableInt32Save_sub0;
int32_t x2111_variableInt32Save[OD_CNT_ARR_2111];
struct {
uint8_t highestSub_indexSupported;
int64_t I64;
uint64_t U64;
float32_t R32;
float64_t R64;
uint16_t parameterWithDefaultValue;
} x2120_demoRecord;
struct {
uint8_t highestSub_indexSupported;
char stringShort[4];
char stringLong[1001];
uint8_t octetString[10];
} x2121_demoStrings;
} OD_PERSIST_APP_t;
#ifndef OD_ATTR_PERSIST_COMM
#define OD_ATTR_PERSIST_COMM
#endif
extern OD_ATTR_PERSIST_COMM OD_PERSIST_COMM_t OD_PERSIST_COMM;
#ifndef OD_ATTR_RAM
#define OD_ATTR_RAM
#endif
extern OD_ATTR_RAM OD_RAM_t OD_RAM;
#ifndef OD_ATTR_PERSIST_APP_AUTO
#define OD_ATTR_PERSIST_APP_AUTO
#endif
extern OD_ATTR_PERSIST_APP_AUTO OD_PERSIST_APP_AUTO_t OD_PERSIST_APP_AUTO;
#ifndef OD_ATTR_PERSIST_APP
#define OD_ATTR_PERSIST_APP
#endif
extern OD_ATTR_PERSIST_APP OD_PERSIST_APP_t OD_PERSIST_APP;
#ifndef OD_ATTR_OD
#define OD_ATTR_OD
#endif
extern OD_ATTR_OD OD_t* OD;
/*******************************************************************************
Object dictionary entries - shortcuts
*******************************************************************************/
#define OD_ENTRY_H1000 &OD->list[0]
#define OD_ENTRY_H1001 &OD->list[1]
#define OD_ENTRY_H1003 &OD->list[2]
#define OD_ENTRY_H1005 &OD->list[3]
#define OD_ENTRY_H1006 &OD->list[4]
#define OD_ENTRY_H1007 &OD->list[5]
#define OD_ENTRY_H1008 &OD->list[6]
#define OD_ENTRY_H1009 &OD->list[7]
#define OD_ENTRY_H100A &OD->list[8]
#define OD_ENTRY_H1010 &OD->list[9]
#define OD_ENTRY_H1011 &OD->list[10]
#define OD_ENTRY_H1012 &OD->list[11]
#define OD_ENTRY_H1014 &OD->list[12]
#define OD_ENTRY_H1015 &OD->list[13]
#define OD_ENTRY_H1016 &OD->list[14]
#define OD_ENTRY_H1017 &OD->list[15]
#define OD_ENTRY_H1018 &OD->list[16]
#define OD_ENTRY_H1019 &OD->list[17]
#define OD_ENTRY_H1200 &OD->list[18]
#define OD_ENTRY_H1400 &OD->list[19]
#define OD_ENTRY_H1401 &OD->list[20]
#define OD_ENTRY_H1402 &OD->list[21]
#define OD_ENTRY_H1403 &OD->list[22]
#define OD_ENTRY_H1600 &OD->list[23]
#define OD_ENTRY_H1601 &OD->list[24]
#define OD_ENTRY_H1602 &OD->list[25]
#define OD_ENTRY_H1603 &OD->list[26]
#define OD_ENTRY_H1800 &OD->list[27]
#define OD_ENTRY_H1801 &OD->list[28]
#define OD_ENTRY_H1802 &OD->list[29]
#define OD_ENTRY_H1803 &OD->list[30]
#define OD_ENTRY_H1A00 &OD->list[31]
#define OD_ENTRY_H1A01 &OD->list[32]
#define OD_ENTRY_H1A02 &OD->list[33]
#define OD_ENTRY_H1A03 &OD->list[34]
#define OD_ENTRY_H2100 &OD->list[35]
#define OD_ENTRY_H2106 &OD->list[36]
#define OD_ENTRY_H2110 &OD->list[37]
#define OD_ENTRY_H2111 &OD->list[38]
#define OD_ENTRY_H2112 &OD->list[39]
#define OD_ENTRY_H2120 &OD->list[40]
#define OD_ENTRY_H2121 &OD->list[41]
#define OD_ENTRY_H2122 &OD->list[42]
#define OD_ENTRY_H6000 &OD->list[43]
#define OD_ENTRY_H6002 &OD->list[44]
#define OD_ENTRY_H6003 &OD->list[45]
#define OD_ENTRY_H6005 &OD->list[46]
#define OD_ENTRY_H6006 &OD->list[47]
#define OD_ENTRY_H6007 &OD->list[48]
#define OD_ENTRY_H6008 &OD->list[49]
#define OD_ENTRY_H6020 &OD->list[50]
#define OD_ENTRY_H6030 &OD->list[51]
#define OD_ENTRY_H6038 &OD->list[52]
#define OD_ENTRY_H6050 &OD->list[53]
#define OD_ENTRY_H6060 &OD->list[54]
#define OD_ENTRY_H6070 &OD->list[55]
#define OD_ENTRY_H6100 &OD->list[56]
#define OD_ENTRY_H6102 &OD->list[57]
#define OD_ENTRY_H6103 &OD->list[58]
#define OD_ENTRY_H6106 &OD->list[59]
#define OD_ENTRY_H6107 &OD->list[60]
#define OD_ENTRY_H6108 &OD->list[61]
#define OD_ENTRY_H6120 &OD->list[62]
#define OD_ENTRY_H6122 &OD->list[63]
#define OD_ENTRY_H6123 &OD->list[64]
#define OD_ENTRY_H6126 &OD->list[65]
#define OD_ENTRY_H6127 &OD->list[66]
#define OD_ENTRY_H6128 &OD->list[67]
#define OD_ENTRY_H6200 &OD->list[68]
#define OD_ENTRY_H6202 &OD->list[69]
#define OD_ENTRY_H6206 &OD->list[70]
#define OD_ENTRY_H6207 &OD->list[71]
#define OD_ENTRY_H6208 &OD->list[72]
#define OD_ENTRY_H6220 &OD->list[73]
#define OD_ENTRY_H6240 &OD->list[74]
#define OD_ENTRY_H6250 &OD->list[75]
#define OD_ENTRY_H6260 &OD->list[76]
#define OD_ENTRY_H6270 &OD->list[77]
#define OD_ENTRY_H6300 &OD->list[78]
#define OD_ENTRY_H6302 &OD->list[79]
#define OD_ENTRY_H6306 &OD->list[80]
#define OD_ENTRY_H6307 &OD->list[81]
#define OD_ENTRY_H6308 &OD->list[82]
#define OD_ENTRY_H6320 &OD->list[83]
#define OD_ENTRY_H6322 &OD->list[84]
#define OD_ENTRY_H6326 &OD->list[85]
#define OD_ENTRY_H6327 &OD->list[86]
#define OD_ENTRY_H6328 &OD->list[87]
#define OD_ENTRY_H6400 &OD->list[88]
#define OD_ENTRY_H6401 &OD->list[89]
#define OD_ENTRY_H6402 &OD->list[90]
#define OD_ENTRY_H6410 &OD->list[91]
#define OD_ENTRY_H6411 &OD->list[92]
#define OD_ENTRY_H6412 &OD->list[93]
#define OD_ENTRY_H6421 &OD->list[94]
#define OD_ENTRY_H6422 &OD->list[95]
#define OD_ENTRY_H6423 &OD->list[96]
#define OD_ENTRY_H6424 &OD->list[97]
#define OD_ENTRY_H6425 &OD->list[98]
#define OD_ENTRY_H6426 &OD->list[99]
#define OD_ENTRY_H6427 &OD->list[100]
#define OD_ENTRY_H6428 &OD->list[101]
#define OD_ENTRY_H6429 &OD->list[102]
#define OD_ENTRY_H642A &OD->list[103]
#define OD_ENTRY_H642B &OD->list[104]
#define OD_ENTRY_H642C &OD->list[105]
#define OD_ENTRY_H642D &OD->list[106]
#define OD_ENTRY_H642E &OD->list[107]
#define OD_ENTRY_H642F &OD->list[108]
#define OD_ENTRY_H6430 &OD->list[109]
#define OD_ENTRY_H6431 &OD->list[110]
#define OD_ENTRY_H6432 &OD->list[111]
#define OD_ENTRY_H67FF &OD->list[112]
/*******************************************************************************
Object dictionary entries - shortcuts with names
*******************************************************************************/
#define OD_ENTRY_H1000_deviceType &OD->list[0]
#define OD_ENTRY_H1001_errorRegister &OD->list[1]
#define OD_ENTRY_H1003_pre_definedErrorField &OD->list[2]
#define OD_ENTRY_H1005_COB_ID_SYNCMessage &OD->list[3]
#define OD_ENTRY_H1006_communicationCyclePeriod &OD->list[4]
#define OD_ENTRY_H1007_synchronousWindowLength &OD->list[5]
#define OD_ENTRY_H1008_manufacturerDeviceName &OD->list[6]
#define OD_ENTRY_H1009_manufacturerHardwareVersion &OD->list[7]
#define OD_ENTRY_H100A_manufacturerSoftwareVersion &OD->list[8]
#define OD_ENTRY_H1010_storeParameters &OD->list[9]
#define OD_ENTRY_H1011_restoreDefaultParameters &OD->list[10]
#define OD_ENTRY_H1012_COB_IDTimeStampObject &OD->list[11]
#define OD_ENTRY_H1014_COB_ID_EMCY &OD->list[12]
#define OD_ENTRY_H1015_inhibitTimeEMCY &OD->list[13]
#define OD_ENTRY_H1016_consumerHeartbeatTime &OD->list[14]
#define OD_ENTRY_H1017_producerHeartbeatTime &OD->list[15]
#define OD_ENTRY_H1018_identity &OD->list[16]
#define OD_ENTRY_H1019_synchronousCounterOverflowValue &OD->list[17]
#define OD_ENTRY_H1200_SDOServerParameter &OD->list[18]
#define OD_ENTRY_H1400_RPDOCommunicationParameter &OD->list[19]
#define OD_ENTRY_H1401_RPDOCommunicationParameter &OD->list[20]
#define OD_ENTRY_H1402_RPDOCommunicationParameter &OD->list[21]
#define OD_ENTRY_H1403_RPDOCommunicationParameter &OD->list[22]
#define OD_ENTRY_H1600_RPDOMappingParameter &OD->list[23]
#define OD_ENTRY_H1601_RPDOMappingParameter &OD->list[24]
#define OD_ENTRY_H1602_RPDOMappingParameter &OD->list[25]
#define OD_ENTRY_H1603_RPDOMappingParameter &OD->list[26]
#define OD_ENTRY_H1800_TPDOCommunicationParameter &OD->list[27]
#define OD_ENTRY_H1801_TPDOCommunicationParameter &OD->list[28]
#define OD_ENTRY_H1802_TPDOCommunicationParameter &OD->list[29]
#define OD_ENTRY_H1803_TPDOCommunicationParameter &OD->list[30]
#define OD_ENTRY_H1A00_TPDOMappingParameter &OD->list[31]
#define OD_ENTRY_H1A01_TPDOMappingParameter &OD->list[32]
#define OD_ENTRY_H1A02_TPDOMappingParameter &OD->list[33]
#define OD_ENTRY_H1A03_TPDOMappingParameter &OD->list[34]
#define OD_ENTRY_H2100_errorStatusBits &OD->list[35]
#define OD_ENTRY_H2106_power_onCounter &OD->list[36]
#define OD_ENTRY_H2110_variableInt32 &OD->list[37]
#define OD_ENTRY_H2111_variableInt32Save &OD->list[38]
#define OD_ENTRY_H2112_variableNV_Int32AutoSave &OD->list[39]
#define OD_ENTRY_H2120_demoRecord &OD->list[40]
#define OD_ENTRY_H2121_demoStrings &OD->list[41]
#define OD_ENTRY_H2122_demoDomain &OD->list[42]
#define OD_ENTRY_H6000_readDigitalInput8_bit &OD->list[43]
#define OD_ENTRY_H6002_polarityDigitalInput8_bit &OD->list[44]
#define OD_ENTRY_H6003_digitalFilterEnable8_bit &OD->list[45]
#define OD_ENTRY_H6005_globalInterruptEnableDigital8_bit &OD->list[46]
#define OD_ENTRY_H6006_digitalInterruptMaskAnyChange8_bit &OD->list[47]
#define OD_ENTRY_H6007_digitalInterruptMaskLowToHigh8_bit &OD->list[48]
#define OD_ENTRY_H6008_digitalInterruptMaskHighToLow8_bit &OD->list[49]
#define OD_ENTRY_H6020_readDigitalInputBit1To128 &OD->list[50]
#define OD_ENTRY_H6030_polarityDigitalInputBit1To128 &OD->list[51]
#define OD_ENTRY_H6038_filterConstantDigitalInputBit1To128 &OD->list[52]
#define OD_ENTRY_H6050_interruptMaskDigitalInputAnyChange1To128 &OD->list[53]
#define OD_ENTRY_H6060_interruptMaskDigitalInputLowToHigh1To128 &OD->list[54]
#define OD_ENTRY_H6070_interruptMaskDigitalInputHighToLow1To128 &OD->list[55]
#define OD_ENTRY_H6100_readDigitalInput16_bit &OD->list[56]
#define OD_ENTRY_H6102_polarityDigitalInput16_bit &OD->list[57]
#define OD_ENTRY_H6103_digitalFilterEnable16_bit &OD->list[58]
#define OD_ENTRY_H6106_interruptMaskDigitalInputAnyChange16_bit &OD->list[59]
#define OD_ENTRY_H6107_interruptMaskDigitalInputLowToHigh16_bit &OD->list[60]
#define OD_ENTRY_H6108_interruptMaskDigitalInputHighToLow16_bit &OD->list[61]
#define OD_ENTRY_H6120_readDigitalInput32_bit &OD->list[62]
#define OD_ENTRY_H6122_polarityDigitalInput32_bit &OD->list[63]
#define OD_ENTRY_H6123_digitalFilterEnable32_bit &OD->list[64]
#define OD_ENTRY_H6126_interruptMaskDigitalInputAnyChange32_bit &OD->list[65]
#define OD_ENTRY_H6127_interruptMaskDigitalInputLowToHigh32_bit &OD->list[66]
#define OD_ENTRY_H6128_interruptMaskDigitalInputHighToLow32_bit &OD->list[67]
#define OD_ENTRY_H6200_writeDigitalOutput8_bit &OD->list[68]
#define OD_ENTRY_H6202_changePolarityDigitalOutput8_bit &OD->list[69]
#define OD_ENTRY_H6206_errorModeDigitalOutput8_bit &OD->list[70]
#define OD_ENTRY_H6207_errorValueDigitalOutput8_bit &OD->list[71]
#define OD_ENTRY_H6208_filterMaskDigitalOutput8_bit &OD->list[72]
#define OD_ENTRY_H6220_writeDigitalOutputBit1To128 &OD->list[73]
#define OD_ENTRY_H6240_changePolarityDigitalOutputBit1To128 &OD->list[74]
#define OD_ENTRY_H6250_errorModeDigitalOutputLines1To128 &OD->list[75]
#define OD_ENTRY_H6260_errorValueDigitalOutputBit1To128 &OD->list[76]
#define OD_ENTRY_H6270_filterMaskDigitalOutputBit1To128 &OD->list[77]
#define OD_ENTRY_H6300_writeDigitalOutput16_bit &OD->list[78]
#define OD_ENTRY_H6302_changePolarityDigitalOutput16_bit &OD->list[79]
#define OD_ENTRY_H6306_errorModeDigitalOutput16_bit &OD->list[80]
#define OD_ENTRY_H6307_errorValueDigitalOutput16_bit &OD->list[81]
#define OD_ENTRY_H6308_filterMaskDigitalOutput16_bit &OD->list[82]
#define OD_ENTRY_H6320_writeDigitalOutput32_bit &OD->list[83]
#define OD_ENTRY_H6322_changePolarityDigitalOutput32_bit &OD->list[84]
#define OD_ENTRY_H6326_errorModeDigitalOutput32_bit &OD->list[85]
#define OD_ENTRY_H6327_errorValueDigitalOutput32_bit &OD->list[86]
#define OD_ENTRY_H6328_filterMaskDigitalOutput32_bit &OD->list[87]
#define OD_ENTRY_H6400_readAnalogInput8_bit &OD->list[88]
#define OD_ENTRY_H6401_readAnalogInput16_bit &OD->list[89]
#define OD_ENTRY_H6402_readAnalogInput32_bit &OD->list[90]
#define OD_ENTRY_H6410_writeAnalogOutput8_bit &OD->list[91]
#define OD_ENTRY_H6411_writeAnalogOutput16_bit &OD->list[92]
#define OD_ENTRY_H6412_writeAnalogOutput32_bit &OD->list[93]
#define OD_ENTRY_H6421_analogInputInterruptTriggerSelection_bit &OD->list[94]
#define OD_ENTRY_H6422_analogInputInterruptSource_bit &OD->list[95]
#define OD_ENTRY_H6423_analogInputGlobalInterruptEnable &OD->list[96]
#define OD_ENTRY_H6424_analogInputUpperLimitInteger_bit &OD->list[97]
#define OD_ENTRY_H6425_analogInputLowerLimitInteger_bit &OD->list[98]
#define OD_ENTRY_H6426_analogInputInterruptDeltaUnsigned_bit &OD->list[99]
#define OD_ENTRY_H6427_analogInputInterruptNegativeDeltaUnsigned_bit &OD->list[100]
#define OD_ENTRY_H6428_analogInputInterruptPositiveDeltaUnsigned_bit &OD->list[101]
#define OD_ENTRY_H6429_analogInputInterruptUpperLimitFloat_bit &OD->list[102]
#define OD_ENTRY_H642A_analogInputInterruptLowerLimitFloat_bit &OD->list[103]
#define OD_ENTRY_H642B_analogInputInterruptDeltaFloat_bit &OD->list[104]
#define OD_ENTRY_H642C_analogInputInterruptNegativeDeltaFloat_bit &OD->list[105]
#define OD_ENTRY_H642D_analogInputInterruptPositiveDeltaFloat_bit &OD->list[106]
#define OD_ENTRY_H642E_analogInputOffsetFloat_bit &OD->list[107]
#define OD_ENTRY_H642F_analogInputPreScalingFloat_bit &OD->list[108]
#define OD_ENTRY_H6430_analogInputSIUnit_bit &OD->list[109]
#define OD_ENTRY_H6431_analogInputOffsetInteger_bit &OD->list[110]
#define OD_ENTRY_H6432_analogInputPreScalingInteger_bit &OD->list[111]
#define OD_ENTRY_H67FF_deviceType &OD->list[112]
/*******************************************************************************
OD config structure
*******************************************************************************/
#ifdef CO_MULTIPLE_OD
#define OD_INIT_CONFIG(config) \
{ \
(config).CNT_NMT = OD_CNT_NMT; \
(config).ENTRY_H1017 = OD_ENTRY_H1017; \
(config).CNT_HB_CONS = OD_CNT_HB_CONS; \
(config).CNT_ARR_1016 = OD_CNT_ARR_1016; \
(config).ENTRY_H1016 = OD_ENTRY_H1016; \
(config).CNT_EM = OD_CNT_EM; \
(config).ENTRY_H1001 = OD_ENTRY_H1001; \
(config).ENTRY_H1014 = OD_ENTRY_H1014; \
(config).ENTRY_H1015 = OD_ENTRY_H1015; \
(config).CNT_ARR_1003 = OD_CNT_ARR_1003; \
(config).ENTRY_H1003 = OD_ENTRY_H1003; \
(config).CNT_SDO_SRV = OD_CNT_SDO_SRV; \
(config).ENTRY_H1200 = OD_ENTRY_H1200; \
(config).CNT_SDO_CLI = OD_CNT_SDO_CLI; \
(config).ENTRY_H1280 = OD_ENTRY_H1280; \
(config).CNT_TIME = OD_CNT_TIME; \
(config).ENTRY_H1012 = OD_ENTRY_H1012; \
(config).CNT_SYNC = OD_CNT_SYNC; \
(config).ENTRY_H1005 = OD_ENTRY_H1005; \
(config).ENTRY_H1006 = OD_ENTRY_H1006; \
(config).ENTRY_H1007 = OD_ENTRY_H1007; \
(config).ENTRY_H1019 = OD_ENTRY_H1019; \
(config).CNT_RPDO = OD_CNT_RPDO; \
(config).ENTRY_H1400 = OD_ENTRY_H1400; \
(config).ENTRY_H1600 = OD_ENTRY_H1600; \
(config).CNT_TPDO = OD_CNT_TPDO; \
(config).ENTRY_H1800 = OD_ENTRY_H1800; \
(config).ENTRY_H1A00 = OD_ENTRY_H1A00; \
(config).CNT_LEDS = 0; \
(config).CNT_GFC = 0; \
(config).ENTRY_H1300 = NULL; \
(config).CNT_SRDO = 0; \
(config).ENTRY_H1301 = NULL; \
(config).ENTRY_H1381 = NULL; \
(config).ENTRY_H13FE = NULL; \
(config).ENTRY_H13FF = NULL; \
(config).CNT_LSS_SLV = 0; \
(config).CNT_LSS_MST = 0; \
(config).CNT_GTWA = 0; \
(config).CNT_TRACE = 0; \
}
#endif
#endif /* OD_H */