diff --git a/EnduranceTestBench/coappl/enduranceTestBench.cddp b/EnduranceTestBench/coappl/enduranceTestBench.cddp index 4c617d4..c3c0718 100644 Binary files a/EnduranceTestBench/coappl/enduranceTestBench.cddp and b/EnduranceTestBench/coappl/enduranceTestBench.cddp differ diff --git a/EnduranceTestBench/coappl/enduranceTestBench.eds b/EnduranceTestBench/coappl/enduranceTestBench.eds index 1df8202..e8768a3 100644 --- a/EnduranceTestBench/coappl/enduranceTestBench.eds +++ b/EnduranceTestBench/coappl/enduranceTestBench.eds @@ -5,10 +5,10 @@ FileVersion=1.0 FileRevision=1.0 EDSVersion=4.0 Description=EDS -CreationTime=10:10PM -CreationDate=02-21-25 -ModificationTime=10:10PM -ModificationDate=02-21-25 +CreationTime=10:33PM +CreationDate=02-24-25 +ModificationTime=10:33PM +ModificationDate=02-24-25 CreatedBy=Aniket Saha ModifiedBy=Aniket Saha @@ -177,7 +177,7 @@ DefaultValue=0x0 [1016] ParameterName=Consumer Heartbeat Time ObjectType=8 -SubNumber=21 +SubNumber=2 [1016sub0] ParameterName=Number of entries @@ -185,7 +185,7 @@ ObjectType=7 DataType=5 AccessType=ro PDOMapping=0 -DefaultValue=20 +DefaultValue=1 [1016sub1] ParameterName=Consumer Heartbeat Time @@ -195,158 +195,6 @@ AccessType=rw PDOMapping=0 DefaultValue=1000 -[1016sub2] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016sub3] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016sub4] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016sub5] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016sub6] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016sub7] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016sub8] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016sub9] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016suba] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016subb] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016subc] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016subd] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016sube] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016subf] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016sub10] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016sub11] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016sub12] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016sub13] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - -[1016sub14] -ParameterName=Consumer Heartbeat Time -ObjectType=7 -DataType=7 -AccessType=rw -PDOMapping=0 -DefaultValue=1000 - [1017] ParameterName=Producer Heartbeat Time ObjectType=7 diff --git a/EnduranceTestBench/coappl/gen_define.h b/EnduranceTestBench/coappl/gen_define.h index f16d4c3..7331f68 100644 --- a/EnduranceTestBench/coappl/gen_define.h +++ b/EnduranceTestBench/coappl/gen_define.h @@ -21,7 +21,7 @@ /* Number of objects per line */ #define CO_OBJECTS_LINE_0_CNT 56u #define CO_OBJECT_COUNTS 56u -#define CO_COB_COUNTS 75u +#define CO_COB_COUNTS 56u #define CO_TXPDO_COUNTS 5u #define CO_RXPDO_COUNTS 3u #define CO_SSDO_COUNTS 1u @@ -29,7 +29,7 @@ #define CO_ASSIGN_COUNTS 0u #define CO_MAX_ASSIGN_COUNTS 0u #define CO_GUARDING_COUNTS CO_MAX_ASSIGN_COUNTS -#define CO_ERR_CTRL_COUNTS 20u +#define CO_ERR_CTRL_COUNTS 1u #define CO_ERR_HIST_COUNTS 1u #define CO_ACT_ERR_HIST_COUNTS 0u #define CO_EMCY_CONS_COUNTS 0u @@ -45,7 +45,7 @@ #define CO_PDO_TRANSMIT_CNT 5u #define CO_PDO_RECEIVE_CNT 3u #define CO_MAX_MAP_ENTRIES 2u -#define CO_HB_CONSUMER_CNT 20u +#define CO_HB_CONSUMER_CNT 1u #define CO_EMCY_PRODUCER 1u #define CO_EMCY_ERROR_HISTORY 1u #define CO_SDO_BLOCK 1u @@ -55,7 +55,7 @@ #define CO_SDO_QUEUE_LEN 0u #define CO_INHIBIT_SUPPORTED 1u /* number of used COB objects */ -#define CO_COB_CNT 75u +#define CO_COB_CNT 56u /* Definition of number of call-back functions for each service*/ diff --git a/EnduranceTestBench/coappl/gen_indication.h b/EnduranceTestBench/coappl/gen_indication.h index 641a481..677058f 100644 --- a/EnduranceTestBench/coappl/gen_indication.h +++ b/EnduranceTestBench/coappl/gen_indication.h @@ -1,6 +1,6 @@ /* * static indication definitions for enduranceTestBench - generated by CANopen DeviceDesigner 3.14.2 - * Fri Feb 21 10:10:40 2025 + * Mon Feb 24 10:33:31 2025 */ /* protect against multiple inclusion of the file */ diff --git a/EnduranceTestBench/coappl/gen_indices.h b/EnduranceTestBench/coappl/gen_indices.h index 7aade00..e90a757 100644 --- a/EnduranceTestBench/coappl/gen_indices.h +++ b/EnduranceTestBench/coappl/gen_indices.h @@ -1,6 +1,6 @@ /* * CO index/J1939 PGN/raw CAN-ID defines for enduranceTestBench - generated by CANopen DeviceDesigner 3.14.2 - * Fri Feb 21 10:10:40 2025 + * Mon Feb 24 10:33:31 2025 */ /* protect against multiple inclusion of the file */ diff --git a/EnduranceTestBench/coappl/gen_objdict.c b/EnduranceTestBench/coappl/gen_objdict.c index 6e5b2d1..2940092 100644 --- a/EnduranceTestBench/coappl/gen_objdict.c +++ b/EnduranceTestBench/coappl/gen_objdict.c @@ -1,6 +1,6 @@ /* * object dictionary for enduranceTestBench - generated by CANopen DeviceDesigner 3.14.2 - * Fri Feb 21 10:10:40 2025 + * Mon Feb 24 10:33:31 2025 */ #include @@ -32,7 +32,7 @@ /* number of objects */ #define CO_OD_ASSIGN_CNT 56u -#define CO_OBJ_DESC_CNT 231u +#define CO_OBJ_DESC_CNT 212u /* definition of managed variables */ static UNSIGNED8 CO_STORAGE_CLASS od_u8[8]= { @@ -86,21 +86,21 @@ static REAL32 CO_STORAGE_CLASS od_r32[8]= { (REAL32)0.0000000f /* 0x6005:4 */}; /* definition of constants */ -static CO_CONST UNSIGNED8 CO_CONST_STORAGE_CLASS od_const_u8[10] = { +static CO_CONST UNSIGNED8 CO_CONST_STORAGE_CLASS od_const_u8[9] = { (UNSIGNED8)0u, - (UNSIGNED8)20u, + (UNSIGNED8)1u, (UNSIGNED8)4u, (UNSIGNED8)2u, - (UNSIGNED8)1u, (UNSIGNED8)3u, (UNSIGNED8)254u, (UNSIGNED8)5u, (UNSIGNED8)6u, (UNSIGNED8)8u}; -static CO_CONST UNSIGNED16 CO_CONST_STORAGE_CLASS od_const_u16[3] = { +static CO_CONST UNSIGNED16 CO_CONST_STORAGE_CLASS od_const_u16[4] = { (UNSIGNED16)0u, - (UNSIGNED16)500u, - (UNSIGNED16)10u}; + (UNSIGNED16)1500u, + (UNSIGNED16)10u, + (UNSIGNED16)500u}; static CO_CONST UNSIGNED32 CO_CONST_STORAGE_CLASS od_const_u32[28] = { (UNSIGNED32)0UL, (UNSIGNED32)128UL, @@ -155,25 +155,6 @@ CO_CONST CO_OBJECT_DESC_T CO_CONST_STORAGE_CLASS od_description[CO_OBJ_DESC_CNT] { (UNSIGNED8)0u, CO_DTYPE_U16_EMCY , (UNSIGNED16)4117u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1015:0*/ { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1016:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:1*/ - { (UNSIGNED8)2u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:2*/ - { (UNSIGNED8)3u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:3*/ - { (UNSIGNED8)4u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:4*/ - { (UNSIGNED8)5u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:5*/ - { (UNSIGNED8)6u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:6*/ - { (UNSIGNED8)7u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:7*/ - { (UNSIGNED8)8u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:8*/ - { (UNSIGNED8)9u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:9*/ - { (UNSIGNED8)10u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:10*/ - { (UNSIGNED8)11u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:11*/ - { (UNSIGNED8)12u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:12*/ - { (UNSIGNED8)13u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:13*/ - { (UNSIGNED8)14u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:14*/ - { (UNSIGNED8)15u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:15*/ - { (UNSIGNED8)16u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:16*/ - { (UNSIGNED8)17u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:17*/ - { (UNSIGNED8)18u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:18*/ - { (UNSIGNED8)19u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:19*/ - { (UNSIGNED8)20u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1016:20*/ { (UNSIGNED8)0u, CO_DTYPE_U16_ERRCTRL, (UNSIGNED16)4119u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)1u},/* 0x1017:0*/ { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1018:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1018:1*/ @@ -181,101 +162,101 @@ CO_CONST CO_OBJECT_DESC_T CO_CONST_STORAGE_CLASS od_description[CO_OBJ_DESC_CNT] { (UNSIGNED8)3u, CO_DTYPE_U32_CONST, (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1018:3*/ { (UNSIGNED8)4u, CO_DTYPE_U32_VAR , (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1018:4*/ { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1029:0*/ - { (UNSIGNED8)1u, CO_DTYPE_U8_ERRCTRL, (UNSIGNED16)4137u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1029:1*/ + { (UNSIGNED8)1u, CO_DTYPE_U8_ERRCTRL, (UNSIGNED16)4137u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1029:1*/ { (UNSIGNED8)2u, CO_DTYPE_U8_VAR , (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x1029:2*/ { (UNSIGNED8)0u, CO_DTYPE_U16_NMT , (UNSIGNED16)4138u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x102a:0*/ { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1200:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_SERVER, (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x1200:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_SERVER, (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 0x1200:2*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1280:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1280:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1280:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1280:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x1280:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1281:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1281:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1281:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1281:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x1281:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1282:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1282:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1282:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1282:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x1282:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1283:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1283:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1283:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1283:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x1283:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1284:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1284:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1284:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1284:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x1284:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1285:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1285:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1285:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1285:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x1285:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1286:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1286:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1286:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1286:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x1286:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1287:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1287:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1287:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1287:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x1287:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1288:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1288:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)9u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1288:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)9u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1288:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)9u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x1288:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1289:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1289:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)10u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1289:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)10u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1289:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)10u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x1289:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x128a:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x128a:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)11u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x128a:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)11u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x128a:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)11u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x128a:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x128b:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x128b:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)12u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x128b:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)12u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x128b:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)12u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x128b:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x128c:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x128c:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)13u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x128c:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)13u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x128c:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)13u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x128c:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x128d:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x128d:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)14u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x128d:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)14u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x128d:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)14u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x128d:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x128e:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x128e:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)15u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x128e:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)15u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x128e:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)15u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x128e:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x128f:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x128f:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)16u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x128f:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)16u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x128f:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)16u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x128f:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1290:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1290:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)17u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1290:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)17u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1290:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)17u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x1290:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1291:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1291:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)18u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1291:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)18u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1291:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)18u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x1291:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1292:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1292:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)19u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1292:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)19u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1292:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)19u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x1292:3*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1293:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1293:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)20u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1293:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)20u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1293:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_SDO_CLIENT, (UNSIGNED16)20u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE, (UNSIGNED16)0u},/* 0x1293:3*/ { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1400:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_RPDO , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)9u},/* 0x1400:1*/ - { (UNSIGNED8)2u, CO_DTYPE_U8_RPDO , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x1400:2*/ + { (UNSIGNED8)2u, CO_DTYPE_U8_RPDO , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1400:2*/ { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1401:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_RPDO , (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)9u},/* 0x1401:1*/ - { (UNSIGNED8)2u, CO_DTYPE_U8_RPDO , (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x1401:2*/ + { (UNSIGNED8)2u, CO_DTYPE_U8_RPDO , (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1401:2*/ { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1402:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_RPDO , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)9u},/* 0x1402:1*/ - { (UNSIGNED8)2u, CO_DTYPE_U8_RPDO , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x1402:2*/ + { (UNSIGNED8)2u, CO_DTYPE_U8_RPDO , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1402:2*/ { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1600:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)10u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)10u},/* 0x1600:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)11u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)11u},/* 0x1600:2*/ @@ -285,39 +266,39 @@ CO_CONST CO_OBJECT_DESC_T CO_CONST_STORAGE_CLASS od_description[CO_OBJ_DESC_CNT] { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1602:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)14u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)14u},/* 0x1602:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)15u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)15u},/* 0x1602:2*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 0x1800:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x1800:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_TPDO , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)16u},/* 0x1800:1*/ - { (UNSIGNED8)2u, CO_DTYPE_U8_TPDO , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x1800:2*/ + { (UNSIGNED8)2u, CO_DTYPE_U8_TPDO , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1800:2*/ { (UNSIGNED8)3u, CO_DTYPE_U16_TPDO , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1800:3*/ { (UNSIGNED8)4u, CO_DTYPE_U8_TPDO , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1800:4*/ - { (UNSIGNED8)5u, CO_DTYPE_U16_TPDO , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1800:5*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1801:0*/ + { (UNSIGNED8)5u, CO_DTYPE_U16_TPDO , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1800:5*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 0x1801:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_TPDO , (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)17u},/* 0x1801:1*/ - { (UNSIGNED8)2u, CO_DTYPE_U8_TPDO , (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x1801:2*/ + { (UNSIGNED8)2u, CO_DTYPE_U8_TPDO , (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1801:2*/ { (UNSIGNED8)3u, CO_DTYPE_U16_TPDO , (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1801:3*/ { (UNSIGNED8)4u, CO_DTYPE_U8_TPDO , (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1801:4*/ - { (UNSIGNED8)5u, CO_DTYPE_U16_TPDO , (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1801:5*/ + { (UNSIGNED8)5u, CO_DTYPE_U16_TPDO , (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1801:5*/ { (UNSIGNED8)6u, CO_DTYPE_U8_TPDO , (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1801:6*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1802:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 0x1802:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_TPDO , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)18u},/* 0x1802:1*/ - { (UNSIGNED8)2u, CO_DTYPE_U8_TPDO , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x1802:2*/ + { (UNSIGNED8)2u, CO_DTYPE_U8_TPDO , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1802:2*/ { (UNSIGNED8)3u, CO_DTYPE_U16_TPDO , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1802:3*/ { (UNSIGNED8)4u, CO_DTYPE_U8_TPDO , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1802:4*/ - { (UNSIGNED8)5u, CO_DTYPE_U16_TPDO , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1802:5*/ + { (UNSIGNED8)5u, CO_DTYPE_U16_TPDO , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1802:5*/ { (UNSIGNED8)6u, CO_DTYPE_U8_TPDO , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1802:6*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1803:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 0x1803:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_TPDO , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)19u},/* 0x1803:1*/ - { (UNSIGNED8)2u, CO_DTYPE_U8_TPDO , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x1803:2*/ + { (UNSIGNED8)2u, CO_DTYPE_U8_TPDO , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1803:2*/ { (UNSIGNED8)3u, CO_DTYPE_U16_TPDO , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1803:3*/ { (UNSIGNED8)4u, CO_DTYPE_U8_TPDO , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1803:4*/ - { (UNSIGNED8)5u, CO_DTYPE_U16_TPDO , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1803:5*/ + { (UNSIGNED8)5u, CO_DTYPE_U16_TPDO , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1803:5*/ { (UNSIGNED8)6u, CO_DTYPE_U8_TPDO , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1803:6*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1804:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 0x1804:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_TPDO , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1804:1*/ - { (UNSIGNED8)2u, CO_DTYPE_U8_TPDO , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x1804:2*/ + { (UNSIGNED8)2u, CO_DTYPE_U8_TPDO , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1804:2*/ { (UNSIGNED8)3u, CO_DTYPE_U16_TPDO , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1804:3*/ { (UNSIGNED8)4u, CO_DTYPE_U8_TPDO , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1804:4*/ - { (UNSIGNED8)5u, CO_DTYPE_U16_TPDO , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1804:5*/ + { (UNSIGNED8)5u, CO_DTYPE_U16_TPDO , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1804:5*/ { (UNSIGNED8)6u, CO_DTYPE_U8_TPDO , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1804:6*/ { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1a00:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)20u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)20u},/* 0x1a00:1*/ @@ -338,27 +319,27 @@ CO_CONST CO_OBJECT_DESC_T CO_CONST_STORAGE_CLASS od_description[CO_OBJ_DESC_CNT] { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x3000:0*/ { (UNSIGNED8)1u, CO_DTYPE_I16_VAR , (UNSIGNED16)0u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR, (UNSIGNED16)0u},/* 0x3000:1*/ { (UNSIGNED8)2u, CO_DTYPE_I16_VAR , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC, (UNSIGNED16)1u},/* 0x3000:2*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 0x6000:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x6000:0*/ { (UNSIGNED8)1u, CO_DTYPE_U8_VAR , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6000:1*/ { (UNSIGNED8)2u, CO_DTYPE_U8_VAR , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6000:2*/ { (UNSIGNED8)3u, CO_DTYPE_U8_VAR , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6000:3*/ { (UNSIGNED8)4u, CO_DTYPE_U8_VAR , (UNSIGNED16)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6000:4*/ { (UNSIGNED8)5u, CO_DTYPE_U8_VAR , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6000:5*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x6001:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 0x6001:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_VAR , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6001:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_VAR , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6001:2*/ { (UNSIGNED8)3u, CO_DTYPE_U32_VAR , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6001:3*/ { (UNSIGNED8)4u, CO_DTYPE_U32_VAR , (UNSIGNED16)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6001:4*/ { (UNSIGNED8)5u, CO_DTYPE_U32_VAR , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6001:5*/ { (UNSIGNED8)6u, CO_DTYPE_U32_VAR , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6001:6*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x6002:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 0x6002:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_VAR , (UNSIGNED16)9u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6002:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_VAR , (UNSIGNED16)10u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6002:2*/ { (UNSIGNED8)3u, CO_DTYPE_U32_VAR , (UNSIGNED16)11u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6002:3*/ { (UNSIGNED8)4u, CO_DTYPE_U32_VAR , (UNSIGNED16)12u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6002:4*/ { (UNSIGNED8)5u, CO_DTYPE_U32_VAR , (UNSIGNED16)13u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6002:5*/ { (UNSIGNED8)6u, CO_DTYPE_U32_VAR , (UNSIGNED16)14u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6002:6*/ - { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)9u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)9u},/* 0x6003:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x6003:0*/ { (UNSIGNED8)1u, CO_DTYPE_U32_VAR , (UNSIGNED16)15u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6003:1*/ { (UNSIGNED8)2u, CO_DTYPE_U32_VAR , (UNSIGNED16)16u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6003:2*/ { (UNSIGNED8)3u, CO_DTYPE_U32_VAR , (UNSIGNED16)17u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x6003:3*/ @@ -387,56 +368,56 @@ CO_CONST CO_OD_ASSIGN_T CO_CONST_STORAGE_CLASS od_assign[CO_OD_ASSIGN_CNT] = { { 0x1008u, 1u, 0u, CO_ODTYPE_VAR, 4u }, { 0x1014u, 1u, 0u, CO_ODTYPE_VAR, 5u }, { 0x1015u, 1u, 0u, CO_ODTYPE_VAR, 6u }, - { 0x1016u, 21u, 20u, CO_ODTYPE_ARRAY, 7u }, - { 0x1017u, 1u, 0u, CO_ODTYPE_VAR, 28u }, - { 0x1018u, 5u, 4u, CO_ODTYPE_STRUCT, 29u }, - { 0x1029u, 3u, 2u, CO_ODTYPE_ARRAY, 34u }, - { 0x102au, 1u, 0u, CO_ODTYPE_VAR, 37u }, - { 0x1200u, 3u, 2u, CO_ODTYPE_STRUCT, 38u }, - { 0x1280u, 4u, 3u, CO_ODTYPE_STRUCT, 41u }, - { 0x1281u, 4u, 3u, CO_ODTYPE_STRUCT, 45u }, - { 0x1282u, 4u, 3u, CO_ODTYPE_STRUCT, 49u }, - { 0x1283u, 4u, 3u, CO_ODTYPE_STRUCT, 53u }, - { 0x1284u, 4u, 3u, CO_ODTYPE_STRUCT, 57u }, - { 0x1285u, 4u, 3u, CO_ODTYPE_STRUCT, 61u }, - { 0x1286u, 4u, 3u, CO_ODTYPE_STRUCT, 65u }, - { 0x1287u, 4u, 3u, CO_ODTYPE_STRUCT, 69u }, - { 0x1288u, 4u, 3u, CO_ODTYPE_STRUCT, 73u }, - { 0x1289u, 4u, 3u, CO_ODTYPE_STRUCT, 77u }, - { 0x128au, 4u, 3u, CO_ODTYPE_STRUCT, 81u }, - { 0x128bu, 4u, 3u, CO_ODTYPE_STRUCT, 85u }, - { 0x128cu, 4u, 3u, CO_ODTYPE_STRUCT, 89u }, - { 0x128du, 4u, 3u, CO_ODTYPE_STRUCT, 93u }, - { 0x128eu, 4u, 3u, CO_ODTYPE_STRUCT, 97u }, - { 0x128fu, 4u, 3u, CO_ODTYPE_STRUCT, 101u }, - { 0x1290u, 4u, 3u, CO_ODTYPE_STRUCT, 105u }, - { 0x1291u, 4u, 3u, CO_ODTYPE_STRUCT, 109u }, - { 0x1292u, 4u, 3u, CO_ODTYPE_STRUCT, 113u }, - { 0x1293u, 4u, 3u, CO_ODTYPE_STRUCT, 117u }, - { 0x1400u, 3u, 2u, CO_ODTYPE_STRUCT, 121u }, - { 0x1401u, 3u, 2u, CO_ODTYPE_STRUCT, 124u }, - { 0x1402u, 3u, 2u, CO_ODTYPE_STRUCT, 127u }, - { 0x1600u, 3u, 2u, CO_ODTYPE_STRUCT, 130u }, - { 0x1601u, 3u, 2u, CO_ODTYPE_STRUCT, 133u }, - { 0x1602u, 3u, 2u, CO_ODTYPE_STRUCT, 136u }, - { 0x1800u, 6u, 5u, CO_ODTYPE_STRUCT, 139u }, - { 0x1801u, 7u, 6u, CO_ODTYPE_STRUCT, 145u }, - { 0x1802u, 7u, 6u, CO_ODTYPE_STRUCT, 152u }, - { 0x1803u, 7u, 6u, CO_ODTYPE_STRUCT, 159u }, - { 0x1804u, 7u, 6u, CO_ODTYPE_STRUCT, 166u }, - { 0x1a00u, 3u, 2u, CO_ODTYPE_STRUCT, 173u }, - { 0x1a01u, 3u, 2u, CO_ODTYPE_STRUCT, 176u }, - { 0x1a02u, 3u, 2u, CO_ODTYPE_STRUCT, 179u }, - { 0x1a03u, 3u, 2u, CO_ODTYPE_STRUCT, 182u }, - { 0x1a04u, 3u, 2u, CO_ODTYPE_STRUCT, 185u }, - { 0x2001u, 1u, 0u, CO_ODTYPE_VAR, 188u }, - { 0x3000u, 3u, 2u, CO_ODTYPE_ARRAY, 189u }, - { 0x6000u, 6u, 5u, CO_ODTYPE_ARRAY, 192u }, - { 0x6001u, 7u, 6u, CO_ODTYPE_ARRAY, 198u }, - { 0x6002u, 7u, 6u, CO_ODTYPE_ARRAY, 205u }, - { 0x6003u, 9u, 8u, CO_ODTYPE_ARRAY, 212u }, - { 0x6004u, 5u, 4u, CO_ODTYPE_ARRAY, 221u }, - { 0x6005u, 5u, 4u, CO_ODTYPE_ARRAY, 226u }, + { 0x1016u, 2u, 1u, CO_ODTYPE_ARRAY, 7u }, + { 0x1017u, 1u, 0u, CO_ODTYPE_VAR, 9u }, + { 0x1018u, 5u, 4u, CO_ODTYPE_STRUCT, 10u }, + { 0x1029u, 3u, 2u, CO_ODTYPE_ARRAY, 15u }, + { 0x102au, 1u, 0u, CO_ODTYPE_VAR, 18u }, + { 0x1200u, 3u, 2u, CO_ODTYPE_STRUCT, 19u }, + { 0x1280u, 4u, 3u, CO_ODTYPE_STRUCT, 22u }, + { 0x1281u, 4u, 3u, CO_ODTYPE_STRUCT, 26u }, + { 0x1282u, 4u, 3u, CO_ODTYPE_STRUCT, 30u }, + { 0x1283u, 4u, 3u, CO_ODTYPE_STRUCT, 34u }, + { 0x1284u, 4u, 3u, CO_ODTYPE_STRUCT, 38u }, + { 0x1285u, 4u, 3u, CO_ODTYPE_STRUCT, 42u }, + { 0x1286u, 4u, 3u, CO_ODTYPE_STRUCT, 46u }, + { 0x1287u, 4u, 3u, CO_ODTYPE_STRUCT, 50u }, + { 0x1288u, 4u, 3u, CO_ODTYPE_STRUCT, 54u }, + { 0x1289u, 4u, 3u, CO_ODTYPE_STRUCT, 58u }, + { 0x128au, 4u, 3u, CO_ODTYPE_STRUCT, 62u }, + { 0x128bu, 4u, 3u, CO_ODTYPE_STRUCT, 66u }, + { 0x128cu, 4u, 3u, CO_ODTYPE_STRUCT, 70u }, + { 0x128du, 4u, 3u, CO_ODTYPE_STRUCT, 74u }, + { 0x128eu, 4u, 3u, CO_ODTYPE_STRUCT, 78u }, + { 0x128fu, 4u, 3u, CO_ODTYPE_STRUCT, 82u }, + { 0x1290u, 4u, 3u, CO_ODTYPE_STRUCT, 86u }, + { 0x1291u, 4u, 3u, CO_ODTYPE_STRUCT, 90u }, + { 0x1292u, 4u, 3u, CO_ODTYPE_STRUCT, 94u }, + { 0x1293u, 4u, 3u, CO_ODTYPE_STRUCT, 98u }, + { 0x1400u, 3u, 2u, CO_ODTYPE_STRUCT, 102u }, + { 0x1401u, 3u, 2u, CO_ODTYPE_STRUCT, 105u }, + { 0x1402u, 3u, 2u, CO_ODTYPE_STRUCT, 108u }, + { 0x1600u, 3u, 2u, CO_ODTYPE_STRUCT, 111u }, + { 0x1601u, 3u, 2u, CO_ODTYPE_STRUCT, 114u }, + { 0x1602u, 3u, 2u, CO_ODTYPE_STRUCT, 117u }, + { 0x1800u, 6u, 5u, CO_ODTYPE_STRUCT, 120u }, + { 0x1801u, 7u, 6u, CO_ODTYPE_STRUCT, 126u }, + { 0x1802u, 7u, 6u, CO_ODTYPE_STRUCT, 133u }, + { 0x1803u, 7u, 6u, CO_ODTYPE_STRUCT, 140u }, + { 0x1804u, 7u, 6u, CO_ODTYPE_STRUCT, 147u }, + { 0x1a00u, 3u, 2u, CO_ODTYPE_STRUCT, 154u }, + { 0x1a01u, 3u, 2u, CO_ODTYPE_STRUCT, 157u }, + { 0x1a02u, 3u, 2u, CO_ODTYPE_STRUCT, 160u }, + { 0x1a03u, 3u, 2u, CO_ODTYPE_STRUCT, 163u }, + { 0x1a04u, 3u, 2u, CO_ODTYPE_STRUCT, 166u }, + { 0x2001u, 1u, 0u, CO_ODTYPE_VAR, 169u }, + { 0x3000u, 3u, 2u, CO_ODTYPE_ARRAY, 170u }, + { 0x6000u, 6u, 5u, CO_ODTYPE_ARRAY, 173u }, + { 0x6001u, 7u, 6u, CO_ODTYPE_ARRAY, 179u }, + { 0x6002u, 7u, 6u, CO_ODTYPE_ARRAY, 186u }, + { 0x6003u, 9u, 8u, CO_ODTYPE_ARRAY, 193u }, + { 0x6004u, 5u, 4u, CO_ODTYPE_ARRAY, 202u }, + { 0x6005u, 5u, 4u, CO_ODTYPE_ARRAY, 207u }, }; /* static PDO mapping tables */ @@ -733,7 +714,7 @@ CO_COMMON_INIT_VAL_T commonInitVars = { } CO_HANDLE_WATCHDOG /* initialize error control */ - retVal = coErrorCtrlInit(od_const_u16[1], 20u); + retVal = coErrorCtrlInit(od_const_u16[1], 1u); if (retVal != RET_OK) { return(retVal); } @@ -745,49 +726,49 @@ CO_COMMON_INIT_VAL_T commonInitVars = { } CO_HANDLE_WATCHDOG /* initialize TPDO 1 */ - retVal = coPdoTransmitInit(1u, od_const_u8[6], od_const_u16[0], od_const_u16[1], 0u, &mapTableTPDO1); + retVal = coPdoTransmitInit(1u, od_const_u8[5], od_const_u16[0], od_const_u16[3], 0u, &mapTableTPDO1); if (retVal != RET_OK) { return(retVal); } CO_HANDLE_WATCHDOG /* initialize TPDO 2 */ - retVal = coPdoTransmitInit(2u, od_const_u8[6], od_const_u16[0], od_const_u16[1], od_const_u8[0], &mapTableTPDO2); + retVal = coPdoTransmitInit(2u, od_const_u8[5], od_const_u16[0], od_const_u16[3], od_const_u8[0], &mapTableTPDO2); if (retVal != RET_OK) { return(retVal); } CO_HANDLE_WATCHDOG /* initialize TPDO 3 */ - retVal = coPdoTransmitInit(3u, od_const_u8[6], od_const_u16[0], od_const_u16[1], od_const_u8[0], &mapTableTPDO3); + retVal = coPdoTransmitInit(3u, od_const_u8[5], od_const_u16[0], od_const_u16[3], od_const_u8[0], &mapTableTPDO3); if (retVal != RET_OK) { return(retVal); } CO_HANDLE_WATCHDOG /* initialize TPDO 4 */ - retVal = coPdoTransmitInit(4u, od_const_u8[6], od_const_u16[0], od_const_u16[1], od_const_u8[0], &mapTableTPDO4); + retVal = coPdoTransmitInit(4u, od_const_u8[5], od_const_u16[0], od_const_u16[3], od_const_u8[0], &mapTableTPDO4); if (retVal != RET_OK) { return(retVal); } CO_HANDLE_WATCHDOG /* initialize TPDO 5 */ - retVal = coPdoTransmitInit(5u, od_const_u8[6], od_const_u16[0], od_const_u16[1], od_const_u8[0], &mapTableTPDO5); + retVal = coPdoTransmitInit(5u, od_const_u8[5], od_const_u16[0], od_const_u16[3], od_const_u8[0], &mapTableTPDO5); if (retVal != RET_OK) { return(retVal); } CO_HANDLE_WATCHDOG /* initialize RPDO 1 */ - retVal = coPdoReceiveInit(1u, od_const_u8[6], 0u, 0u, &mapTableRPDO0); + retVal = coPdoReceiveInit(1u, od_const_u8[5], 0u, 0u, &mapTableRPDO0); if (retVal != RET_OK) { return(retVal); } CO_HANDLE_WATCHDOG /* initialize RPDO 2 */ - retVal = coPdoReceiveInit(2u, od_const_u8[6], 0u, 0u, &mapTableRPDO1); + retVal = coPdoReceiveInit(2u, od_const_u8[5], 0u, 0u, &mapTableRPDO1); if (retVal != RET_OK) { return(retVal); } CO_HANDLE_WATCHDOG /* initialize RPDO 3 */ - retVal = coPdoReceiveInit(3u, od_const_u8[6], 0u, 0u, &mapTableRPDO2); + retVal = coPdoReceiveInit(3u, od_const_u8[5], 0u, 0u, &mapTableRPDO2); if (retVal != RET_OK) { return(retVal); } diff --git a/EnduranceTestBench/scheduler/sdl.c b/EnduranceTestBench/scheduler/sdl.c index 37306d3..b06eeaa 100644 --- a/EnduranceTestBench/scheduler/sdl.c +++ b/EnduranceTestBench/scheduler/sdl.c @@ -166,7 +166,7 @@ void SdlRun(void) static void SdlInitCanopen(void) { RET_T retval; - //HalSystemInit(); + HalSystemInit(); codrvHardwareInit(); retval = codrvCanInit(SDL_CANOPEN_BITRATE); retval = codrvTimerSetup(CO_TIMER_INTERVAL); @@ -304,7 +304,6 @@ static uint32 SdlLssConfigureNode(uint8 arrIndex_u8) { uint32 error_u32 = SDL_DEFAULT_ERROR; RET_T retVal_en = RET_INTERNAL_ERROR; - uint16 hb_u16 = 500u; /* Get the node ID from the lookup table using the index passed */ uint8 nodeId_u8 = nodeLookupTable_gast[arrIndex_u8].nodeId_u8; @@ -339,6 +338,267 @@ static uint32 SdlLssConfigureNode(uint8 arrIndex_u8) } +/** +* @brief This function configures a SDO client for the +* given node ID and SDO number. +* +* @param sdoNr_u8 Sdo number +* nodeId_u8 Node id of the node. +* +* @return Error state. +* +*/ +static RET_T SdlLssSetSdoCobID(uint8 sdoNr_u8, uint8 nodeId_u8) +{ + uint16 cobIndex_u16; + uint32 newCobId_u32; + RET_T retVal_en = RET_INTERNAL_ERROR; + + /* get od index of sdoNr */ + cobIndex_u16 = SDL_SDO_CLIENT_COB + sdoNr_u8 - 1u; /* SDO starts from 1280 index */ + + /* set cobID for client to server direction (request) */ + newCobId_u32 = SDL_SDO_CLIENT_TO_SERVER_COB + nodeId_u8; + retVal_en = coOdSetCobid(cobIndex_u16, 1u, newCobId_u32); + + if (retVal_en == RET_OK) + { + /* set cobID for server to client direction (response) */ + newCobId_u32 = SDL_SDO_SERVER_TO_CLIENT_COB + nodeId_u8; + retVal_en = coOdSetCobid(cobIndex_u16, 2u, newCobId_u32); + } + + /* print failed setup details */ + if (retVal_en != RET_OK) + { + /* ERROR */ + } + + return retVal_en; +} + + +/** +* @brief This is the main function that runs the endurance +* test bench. +* +* @return void +* +*/ +void SdlEnduranceTestBenchRun(void) +{ + static uint64 startTime_u64 = 0uLL; + static uint8 alternate_u8 = 0u; + static uint8 batchCompleted_u8 = 1u; /* Indicates if we need to populate a new batch */ + static uint8 retries_u8 = 0u; + uint64 currentTime_u64; + + HalSystemGetRunTimeMs(¤tTime_u64); + + if (startTime_u64 == 0uLL) + { + HalSystemGetRunTimeMs(&startTime_u64); + testBenchState_en = TEST_BENCH_STARTUP; + } + + switch (testBenchState_en) + { + case TEST_BENCH_STARTUP: + { + uint8 max_u8 = NMS_UINT8_MAX; /* Fully open (255) */ + uint8 min_u8 = 0u; /* Fully closed (0) */ + + if ((currentTime_u64 - startTime_u64) < 5000uLL) + { + /* First 5 seconds: First 10 open, rest closed */ + for (uint8 i_u8 = 0u; i_u8 < TEST_BENCH_LSS_NODE_COUNT / 2; i_u8++) + { + targetPositions_gau8[i_u8] = (i_u8 < 10u) ? max_u8 : min_u8; + } + } + else if ((currentTime_u64 - startTime_u64) < 10000uLL) + { + /* Next 5 seconds: First 10 closed, rest open */ + for (uint8 i_u8 = 0u; i_u8 < TEST_BENCH_LSS_NODE_COUNT; i_u8++) + { + targetPositions_gau8[i_u8] = (i_u8 < 10) ? min_u8 : max_u8; + } + } + else + { + /* After 10 seconds, move to endurance test */ + batchCompleted_u8 = 1u; + testBenchState_en = TEST_BENCH_IDLE; + } + + currentNode_gu8 = 0u; + testBenchState_en = TEST_BENCH_WRITE_REQUEST; + } + break; + + case TEST_BENCH_IDLE: + { + if (batchCompleted_u8) + { + batchCompleted_u8 = 0u; /* Lock batch update until all nodes confirm their positions */ + + uint8 max_u8 = NMS_UINT8_MAX; /* Fully open (255) */ + uint8 min_u8 = 0u; /* Fully closed (0) */ + uint8 currentGroup_u8 = alternate_u8 % 2; /* Alternates between two patterns */ + + /* Check if it's a random cycle */ + if ((alternate_u8 % 2) == 1) + { + /* Randomized cycle */ + for (uint8 i_u8 = 0u; i_u8 < TEST_BENCH_LSS_NODE_COUNT; i_u8++) + { + targetPositions_gau8[i_u8] = (uint8)(rand() % 256); /* Assign random value between 0-255 */ + } + } + else + { + /* Normal alternating open-close cycle */ + for (uint8 i_u8 = 0u; i_u8 < TEST_BENCH_LSS_NODE_COUNT; i_u8++) + { + if (((i_u8 / 5) % 2) == currentGroup_u8) + { + targetPositions_gau8[i_u8] = max_u8; /* Fully open */ + } + else + { + targetPositions_gau8[i_u8] = min_u8; /* Fully closed */ + } + } + } + + alternate_u8++; /* Switch to the next cycle pattern */ + currentNode_gu8 = 0u; + testBenchState_en = TEST_BENCH_WRITE_REQUEST; + } + } + break; + + + case TEST_BENCH_WRITE_REQUEST: + { + if (currentNode_gu8 < TEST_BENCH_LSS_NODE_COUNT) + { + RET_T retVal_en = coSdoWrite((currentNode_gu8 + 1), SDL_POSITION_SETPOINT_INDEX, SDL_POSITION_SETPOINT_SUB_INDEX, + &targetPositions_gau8[currentNode_gu8], sizeof(targetPositions_gau8[currentNode_gu8]), + CO_FALSE, TEST_BENCH_TIMEOUT); + + if (retVal_en == RET_OK) + { + retries_u8 = 0u; + testBenchState_en = TEST_BENCH_WAIT_FOR_FEEDBACK; + } + else if (retVal_en == RET_SERVICE_BUSY) + { + retries_u8++; + if (retries_u8 < 5u) + { + printf("SDO Busy for node %d, retrying...\n", currentNode_gu8 + 1); + } + else + { + currentNode_gu8++; /* Skip this node */ + testBenchState_en = TEST_BENCH_WRITE_REQUEST; + } + } + else + { + currentNode_gu8++; /* Skip this node */ + testBenchState_en = TEST_BENCH_WRITE_REQUEST; + } + } + else + { + batchCompleted_u8 = 1u; + testBenchState_en = TEST_BENCH_IDLE; + } + } + break; + + + case TEST_BENCH_WAIT_FOR_FEEDBACK: + { + uint8 readPos_u8 = 0u; + RET_T retVal_en = coSdoRead((currentNode_gu8 + 1), TEST_BENCH_POSITION_FEEDBACK_INDEX, TEST_BENCH_POSITION_FEEDBACK_SUB_INDEX, + &readPos_u8, sizeof(readPos_u8), CO_FALSE, TEST_BENCH_TIMEOUT); + + if (retVal_en == RET_OK) + { + if (readPos_u8 == targetPositions_gau8[currentNode_gu8]) + { + printf("Node %d reached target position %d\n", currentNode_gu8 + 1, readPos_u8); + currentNode_gu8++; + retries_u8 = 0u; /* Reset retries */ + + if (currentNode_gu8 < TEST_BENCH_LSS_NODE_COUNT) + { + HalSystemGetRunTimeMs(&startTime_u64); /* Store time before sending the next command */ + testBenchState_en = TEST_BENCH_DELAY_BEFORE_NEXT; + } + else + { + batchCompleted_u8 = 1u; + testBenchState_en = TEST_BENCH_IDLE; + } + } + } + else + { + retries_u8++; + if (retries_u8 >= TEST_BENCH_MAX_RETRY_CNT) + { + currentNode_gu8++; + + if (currentNode_gu8 < TEST_BENCH_LSS_NODE_COUNT) + { + HalSystemGetRunTimeMs(&startTime_u64); + testBenchState_en = TEST_BENCH_DELAY_BEFORE_NEXT; + } + else + { + batchCompleted_u8 = 1u; + testBenchState_en = TEST_BENCH_IDLE; + } + } + } + } + break; + + case TEST_BENCH_DELAY_BEFORE_NEXT: + { + HalSystemGetRunTimeMs(¤tTime_u64); + + if ((currentTime_u64 - startTime_u64) >= TEST_BENCH_TIMEOUT) + { + testBenchState_en = TEST_BENCH_WRITE_REQUEST; + } + } + break; + + } +} + + +/** + * @brief Checks if all nodes are in OPERATIONAL state. + * + * @return CO_TRUE if all nodes are OPERATIONAL, CO_FALSE otherwise. + */ +static bool SdlAreAllNodesOperational(void) +{ + for (uint8 i_u8 = 0u; i_u8 < SDL_LSS_NODE_COUNT; i_u8++) + { + if (nodeNMTState_gaen[i_u8] != CO_NMT_STATE_OPERATIONAL) + { + return CO_FALSE; /* If any node is not in OPERATIONAL, return false */ + } + } + return CO_TRUE; +} /****************************************************************************** * Callback Function Definitions ******************************************************************************/ @@ -502,265 +762,3 @@ static void SdlLssResetNodesCallback(void *pData_pv) } } - -/** -* @brief This function configures a SDO client for the -* given node ID and SDO number. -* -* @param sdoNr_u8 Sdo number -* nodeId_u8 Node id of the node. -* -* @return Error state. -* -*/ -static RET_T SdlLssSetSdoCobID(uint8 sdoNr_u8, uint8 nodeId_u8) -{ - uint16 cobIndex_u16; - uint32 newCobId_u32; - RET_T retVal_en = RET_INTERNAL_ERROR; - - /* get od index of sdoNr */ - cobIndex_u16 = SDL_SDO_CLIENT_COB + sdoNr_u8 - 1u; /* SDO starts from 1280 index */ - - /* set cobID for client to server direction (request) */ - newCobId_u32 = SDL_SDO_CLIENT_TO_SERVER_COB + nodeId_u8; - retVal_en = coOdSetCobid(cobIndex_u16, 1u, newCobId_u32); - - if (retVal_en == RET_OK) - { - /* set cobID for server to client direction (response) */ - newCobId_u32 = SDL_SDO_SERVER_TO_CLIENT_COB + nodeId_u8; - retVal_en = coOdSetCobid(cobIndex_u16, 2u, newCobId_u32); - } - - /* print failed setup details */ - if (retVal_en != RET_OK) - { - /* ERROR */ - } - - return retVal_en; -} - - -/** -* @brief This is the main function that runs the endurance -* test bench. -* -* @return void -* -*/ -void SdlEnduranceTestBenchRun(void) -{ - static uint64 startTime_u64 = 0uLL; - static uint8 alternate_u8 = 0u; - static uint8 batchCompleted_u8 = 1u; /* Indicates if we need to populate a new batch */ - static uint8 retries_u8 = 0u; - uint64 currentTime_u64; - - HalSystemGetRunTimeMs(¤tTime_u64); - - if (startTime_u64 == 0uLL) - { - HalSystemGetRunTimeMs(&startTime_u64); - testBenchState_en = TEST_BENCH_STARTUP; - } - - switch (testBenchState_en) - { - case TEST_BENCH_STARTUP: - { - uint8 max_u8 = NMS_UINT8_MAX; /* Fully open (255) */ - uint8 min_u8 = 0u; /* Fully closed (0) */ - - if ((currentTime_u64 - startTime_u64) < 5000uLL) - { - /* First 5 seconds: First 10 open, rest closed */ - for (uint8 i_u8 = 0u; i_u8 < TEST_BENCH_LSS_NODE_COUNT / 2; i_u8++) - { - targetPositions_gau8[i_u8] = (i_u8 < 10u) ? max_u8 : min_u8; - } - } - else if ((currentTime_u64 - startTime_u64) > 5000uLL) - { - /* Next 5 seconds: First 10 closed, rest open */ - for (uint8 i_u8 = 0u; i_u8 < TEST_BENCH_LSS_NODE_COUNT; i_u8++) - { - targetPositions_gau8[i_u8] = (i_u8 < 10) ? min_u8 : max_u8; - } - } - else - { - /* After 10 seconds, move to endurance test */ - batchCompleted_u8 = 1u; - testBenchState_en = TEST_BENCH_IDLE; - } - - currentNode_gu8 = 0u; - testBenchState_en = TEST_BENCH_WRITE_REQUEST; - } - break; - - case TEST_BENCH_IDLE: - { - if (batchCompleted_u8) - { - batchCompleted_u8 = 0u; /* Lock batch update until all nodes confirm their positions */ - - uint8 max_u8 = NMS_UINT8_MAX; /* Fully open (255) */ - uint8 min_u8 = 0u; /* Fully closed (0) */ - uint8 currentGroup_u8 = alternate_u8 % 2; /* Alternates between two patterns */ - - /* Check if it's a random cycle */ - if ((alternate_u8 % 2) == 1) - { - /* Randomized cycle */ - for (uint8 i_u8 = 0u; i_u8 < TEST_BENCH_LSS_NODE_COUNT; i_u8++) - { - targetPositions_gau8[i_u8] = (uint8)(rand() % 256); /* Assign random value between 0-255 */ - } - } - else - { - /* Normal alternating open-close cycle */ - for (uint8 i_u8 = 0u; i_u8 < TEST_BENCH_LSS_NODE_COUNT; i_u8++) - { - if (((i_u8 / 5) % 2) == currentGroup_u8) - { - targetPositions_gau8[i_u8] = max_u8; /* Fully open */ - } - else - { - targetPositions_gau8[i_u8] = min_u8; /* Fully closed */ - } - } - } - - alternate_u8++; /* Switch to the next cycle pattern */ - currentNode_gu8 = 0u; - testBenchState_en = TEST_BENCH_WRITE_REQUEST; - } - } - break; - - - case TEST_BENCH_WRITE_REQUEST: - { - if (currentNode_gu8 < TEST_BENCH_LSS_NODE_COUNT) - { - RET_T retVal_en = coSdoWrite((currentNode_gu8 + 1), SDL_POSITION_SETPOINT_INDEX, SDL_POSITION_SETPOINT_SUB_INDEX, - &targetPositions_gau8[currentNode_gu8], sizeof(targetPositions_gau8[currentNode_gu8]), - CO_FALSE, TEST_BENCH_TIMEOUT); - - if (retVal_en == RET_OK) - { - retries_u8 = 0; - testBenchState_en = TEST_BENCH_WAIT_FOR_FEEDBACK; - } - else if (retVal_en == RET_SERVICE_BUSY) - { - retries_u8++; - if (retries_u8 < 5u) - { - printf("SDO Busy for node %d, retrying...\n", currentNode_gu8 + 1); - } - else - { - currentNode_gu8++; /* Skip this node */ - testBenchState_en = TEST_BENCH_WRITE_REQUEST; - } - } - else - { - currentNode_gu8++; /* Skip this node */ - testBenchState_en = TEST_BENCH_WRITE_REQUEST; - } - } - else - { - batchCompleted_u8 = 1u; - testBenchState_en = TEST_BENCH_IDLE; - } - } - break; - - - case TEST_BENCH_WAIT_FOR_FEEDBACK: - { - uint8 readPos_u8 = 0u; - RET_T retVal_en = coSdoRead((currentNode_gu8 + 1), TEST_BENCH_POSITION_FEEDBACK_INDEX, TEST_BENCH_POSITION_FEEDBACK_SUB_INDEX, - &readPos_u8, sizeof(readPos_u8), CO_FALSE, TEST_BENCH_TIMEOUT); - - if (retVal_en == RET_OK) - { - if (readPos_u8 == targetPositions_gau8[currentNode_gu8]) - { - printf("Node %d reached target position %d\n", currentNode_gu8 + 1, readPos_u8); - currentNode_gu8++; - retries_u8 = 0u; /* Reset retries */ - - if (currentNode_gu8 < TEST_BENCH_LSS_NODE_COUNT) - { - HalSystemGetRunTimeMs(&startTime_u64); // Store time before sending the next command - testBenchState_en = TEST_BENCH_DELAY_BEFORE_NEXT; - } - else - { - batchCompleted_u8 = 1u; - testBenchState_en = TEST_BENCH_IDLE; - } - } - } - else - { - retries_u8++; - if (retries_u8 >= TEST_BENCH_MAX_RETRY_CNT) - { - currentNode_gu8++; - - if (currentNode_gu8 < TEST_BENCH_LSS_NODE_COUNT) - { - HalSystemGetRunTimeMs(&startTime_u64); - testBenchState_en = TEST_BENCH_DELAY_BEFORE_NEXT; - } - else - { - batchCompleted_u8 = 1u; - testBenchState_en = TEST_BENCH_IDLE; - } - } - } - } - break; - - case TEST_BENCH_DELAY_BEFORE_NEXT: - { - HalSystemGetRunTimeMs(¤tTime_u64); - - if ((currentTime_u64 - startTime_u64) >= TEST_BENCH_TIMEOUT) - { - testBenchState_en = TEST_BENCH_WRITE_REQUEST; - } - } - break; - - } -} - - -/** - * @brief Checks if all nodes are in OPERATIONAL state. - * - * @return CO_TRUE if all nodes are OPERATIONAL, CO_FALSE otherwise. - */ -static bool SdlAreAllNodesOperational(void) -{ - for (uint8 i_u8 = 0u; i_u8 < SDL_LSS_NODE_COUNT; i_u8++) - { - if (nodeNMTState_gaen[i_u8] != CO_NMT_STATE_OPERATIONAL) - { - return CO_FALSE; /* If any node is not in OPERATIONAL, return false */ - } - } - return CO_TRUE; -}