Updated code for endurance test bench to run lss slaves

This commit is contained in:
AzureAD\AniketSaha 2025-02-14 19:23:52 +01:00
parent b29a376904
commit 10992a0b2a
7 changed files with 214 additions and 1178 deletions

View File

@ -5,10 +5,10 @@ FileVersion=1.0
FileRevision=1.0
EDSVersion=4.0
Description=EDS
CreationTime=13:50PM
CreationDate=02-11-25
ModificationTime=13:50PM
ModificationDate=02-11-25
CreationTime=15:45PM
CreationDate=02-14-25
ModificationTime=15:45PM
ModificationDate=02-14-25
CreatedBy=Aniket Saha
ModifiedBy=Aniket Saha
@ -61,7 +61,7 @@ SupportedObjects=2
2=0x3000
[OptionalObjects]
SupportedObjects=51
SupportedObjects=33
1=0x1003
2=0x1008
3=0x1014
@ -73,46 +73,28 @@ SupportedObjects=51
9=0x1200
10=0x1280
11=0x1281
12=0x1282
13=0x1283
14=0x1284
15=0x1285
16=0x1286
17=0x1287
18=0x1288
19=0x1289
20=0x128a
21=0x128b
22=0x128c
23=0x128d
24=0x128e
25=0x128f
26=0x1290
27=0x1291
28=0x1292
29=0x1293
30=0x1400
31=0x1401
32=0x1402
33=0x1600
34=0x1601
35=0x1602
36=0x1800
37=0x1801
38=0x1802
39=0x1803
40=0x1804
41=0x1a00
42=0x1a01
43=0x1a02
44=0x1a03
45=0x1a04
46=0x6000
47=0x6001
48=0x6002
49=0x6003
50=0x6004
51=0x6005
12=0x1400
13=0x1401
14=0x1402
15=0x1600
16=0x1601
17=0x1602
18=0x1800
19=0x1801
20=0x1802
21=0x1803
22=0x1804
23=0x1a00
24=0x1a01
25=0x1a02
26=0x1a03
27=0x1a04
28=0x6000
29=0x6001
30=0x6002
31=0x6003
32=0x6004
33=0x6005
[1000]
ParameterName=Device Type
@ -177,7 +159,7 @@ DefaultValue=0x0
[1016]
ParameterName=Consumer Heartbeat Time
ObjectType=8
SubNumber=2
SubNumber=3
[1016sub0]
ParameterName=Number of entries
@ -185,7 +167,7 @@ ObjectType=7
DataType=5
AccessType=ro
PDOMapping=0
DefaultValue=1
DefaultValue=2
[1016sub1]
ParameterName=Consumer Heartbeat Time
@ -195,6 +177,14 @@ AccessType=rw
PDOMapping=0
DefaultValue=0x0000
[1016sub2]
ParameterName=Consumer Heartbeat Time
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x0000
[1017]
ParameterName=Producer Heartbeat Time
ObjectType=7
@ -389,672 +379,6 @@ DataType=5
AccessType=rw
PDOMapping=0
[1282]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[1282sub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[1282sub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1282sub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1282sub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1283]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[1283sub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[1283sub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1283sub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1283sub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1284]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[1284sub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[1284sub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1284sub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1284sub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1285]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[1285sub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[1285sub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1285sub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1285sub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1286]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[1286sub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[1286sub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1286sub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1286sub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1287]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[1287sub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[1287sub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1287sub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1287sub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1288]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[1288sub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[1288sub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1288sub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1288sub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1289]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[1289sub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[1289sub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1289sub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1289sub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[128a]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[128asub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[128asub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[128asub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[128asub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[128b]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[128bsub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[128bsub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[128bsub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[128bsub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[128c]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[128csub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[128csub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[128csub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[128csub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[128d]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[128dsub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[128dsub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[128dsub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[128dsub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[128e]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[128esub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[128esub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[128esub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[128esub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[128f]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[128fsub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[128fsub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[128fsub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[128fsub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1290]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[1290sub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[1290sub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1290sub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1290sub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1291]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[1291sub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[1291sub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1291sub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1291sub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1292]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[1292sub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[1292sub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1292sub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1292sub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1293]
ParameterName=SDO client parameter
ObjectType=9
SubNumber=4
;;This objects contains the parameters for the SDO for which the CANopen device is the SDO client.
[1293sub0]
ParameterName=Highest sub-index supported
ObjectType=7
DataType=5
AccessType=const
PDOMapping=0
DefaultValue=3
[1293sub1]
ParameterName=COB-ID client -> server
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1293sub2]
ParameterName=COB-ID server -> client
ObjectType=7
DataType=7
AccessType=rw
PDOMapping=0
DefaultValue=0x80000000
[1293sub3]
ParameterName=Node-ID of the SDO server
ObjectType=7
DataType=5
AccessType=rw
PDOMapping=0
[1400]
ParameterName=Receive PDO Communication Parameter
ObjectType=9

View File

@ -19,17 +19,17 @@
#define CO_REC_BUFFER_COUNTS 10u
#define CO_TR_BUFFER_COUNTS 20u
/* Number of objects per line */
#define CO_OBJECTS_LINE_0_CNT 56u
#define CO_OBJECT_COUNTS 56u
#define CO_COB_COUNTS 56u
#define CO_OBJECTS_LINE_0_CNT 38u
#define CO_OBJECT_COUNTS 38u
#define CO_COB_COUNTS 21u
#define CO_TXPDO_COUNTS 5u
#define CO_RXPDO_COUNTS 3u
#define CO_SSDO_COUNTS 1u
#define CO_CSDO_COUNTS 20u
#define CO_CSDO_COUNTS 2u
#define CO_ASSIGN_COUNTS 0u
#define CO_MAX_ASSIGN_COUNTS 0u
#define CO_GUARDING_COUNTS CO_MAX_ASSIGN_COUNTS
#define CO_ERR_CTRL_COUNTS 1u
#define CO_ERR_CTRL_COUNTS 2u
#define CO_ERR_HIST_COUNTS 1u
#define CO_ACT_ERR_HIST_COUNTS 0u
#define CO_EMCY_CONS_COUNTS 0u
@ -40,11 +40,11 @@
#define CO_NMT_MASTER 1u
#define CO_LSS_MASTER_SUPPORTED 1u
#define CO_SDO_SERVER_CNT 1u
#define CO_SDO_CLIENT_CNT 20u
#define CO_SDO_CLIENT_CNT 2u
#define CO_PDO_TRANSMIT_CNT 5u
#define CO_PDO_RECEIVE_CNT 3u
#define CO_MAX_MAP_ENTRIES 2u
#define CO_HB_CONSUMER_CNT 1u
#define CO_HB_CONSUMER_CNT 2u
#define CO_EMCY_PRODUCER 1u
#define CO_EMCY_ERROR_HISTORY 1u
#define CO_SDO_BLOCK 1u
@ -54,7 +54,7 @@
#define CO_SDO_QUEUE_LEN 0u
#define CO_INHIBIT_SUPPORTED 1u
/* number of used COB objects */
#define CO_COB_CNT 56u
#define CO_COB_CNT 21u
/* Definition of number of call-back functions for each service*/
@ -95,7 +95,7 @@
#define CO_LSS_INQUIRY_SERVICES 1
#define CODRV_MCAN_STM32_G4
#define CONFIG_MCAN0
#define CONFIG_MCAN1
#define CUBE_MX_GENERATION
#define NO_PRINTF

View File

@ -1,6 +1,6 @@
/*
* static indication definitions for enduranceTestBench - generated by CANopen DeviceDesigner 3.14.2
* Tue Feb 11 13:50:12 2025
* Fri Feb 14 15:45:52 2025
*/
/* protect against multiple inclusion of the file */

View File

@ -1,6 +1,6 @@
/*
* CO index/J1939 PGN/raw CAN-ID defines for enduranceTestBench - generated by CANopen DeviceDesigner 3.14.2
* Tue Feb 11 13:50:11 2025
* Fri Feb 14 15:45:51 2025
*/
/* protect against multiple inclusion of the file */
@ -34,24 +34,6 @@
#define S_COB_ID_SERVER_CLIENT 0x2u
#define S_NODE_ID_OF_THE_SDO_SERVER 0x3u
#define I_SDO_CLIENT_PARAMETER1 0x1281u
#define I_SDO_CLIENT_PARAMETER2 0x1282u
#define I_SDO_CLIENT_PARAMETER3 0x1283u
#define I_SDO_CLIENT_PARAMETER4 0x1284u
#define I_SDO_CLIENT_PARAMETER5 0x1285u
#define I_SDO_CLIENT_PARAMETER6 0x1286u
#define I_SDO_CLIENT_PARAMETER7 0x1287u
#define I_SDO_CLIENT_PARAMETER8 0x1288u
#define I_SDO_CLIENT_PARAMETER9 0x1289u
#define I_SDO_CLIENT_PARAMETER10 0x128au
#define I_SDO_CLIENT_PARAMETER11 0x128bu
#define I_SDO_CLIENT_PARAMETER12 0x128cu
#define I_SDO_CLIENT_PARAMETER13 0x128du
#define I_SDO_CLIENT_PARAMETER14 0x128eu
#define I_SDO_CLIENT_PARAMETER15 0x128fu
#define I_SDO_CLIENT_PARAMETER16 0x1290u
#define I_SDO_CLIENT_PARAMETER17 0x1291u
#define I_SDO_CLIENT_PARAMETER18 0x1292u
#define I_SDO_CLIENT_PARAMETER19 0x1293u
#define I_RECEIVE_PDO_COMMUNICATION_PARAMETER 0x1400u
#define S_COB_ID 0x1u
#define S_TRANSMISSION_TYPE 0x2u

View File

@ -1,6 +1,6 @@
/*
* object dictionary for enduranceTestBench - generated by CANopen DeviceDesigner 3.14.2
* Tue Feb 11 13:50:11 2025
* Fri Feb 14 15:45:52 2025
*/
#include <stdlib.h>
@ -31,8 +31,8 @@
/* definition of static indication function pointers */
/* number of objects */
#define CO_OD_ASSIGN_CNT 56u
#define CO_OBJ_DESC_CNT 212u
#define CO_OD_ASSIGN_CNT 38u
#define CO_OBJ_DESC_CNT 141u
/* definition of managed variables */
static UNSIGNED8 CO_STORAGE_CLASS od_u8[8]= {
@ -88,9 +88,9 @@ static REAL32 CO_STORAGE_CLASS od_r32[8]= {
/* definition of constants */
static CO_CONST UNSIGNED8 CO_CONST_STORAGE_CLASS od_const_u8[9] = {
(UNSIGNED8)0u,
(UNSIGNED8)1u,
(UNSIGNED8)4u,
(UNSIGNED8)2u,
(UNSIGNED8)4u,
(UNSIGNED8)1u,
(UNSIGNED8)3u,
(UNSIGNED8)254u,
(UNSIGNED8)5u,
@ -154,17 +154,18 @@ 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)0u},/* 0x1016:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_ERRCTRL, (UNSIGNED16)4118u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)0u},/* 0x1016:2*/
{ (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)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)2u},/* 0x1018:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1018:2*/
{ (UNSIGNED8)3u, CO_DTYPE_U32_CONST, (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 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)1u},/* 0x1029:1*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1029:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U8_ERRCTRL, (UNSIGNED16)4137u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 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)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1200:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_SDO_SERVER, (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 0x1200:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_SERVER, (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x1200:2*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1280:0*/
@ -175,94 +176,22 @@ CO_CONST CO_OBJECT_DESC_T CO_CONST_STORAGE_CLASS od_description[CO_OBJ_DESC_CNT]
{ (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 0x1281:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x1282:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x1283:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x1284:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x1285:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x1286:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x1287:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x1288:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)9u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x1289:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)10u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x128a:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)11u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x128b:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)12u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x128c:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)13u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x128d:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)14u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x128e:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)15u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x128f:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)16u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x1290:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)17u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x1291:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)18u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x1292:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)19u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)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)7u},/* 0x1293:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)20u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1400:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_RPDO , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1400:1*/
{ (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)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1401:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_RPDO , (UNSIGNED16)2u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1401:1*/
{ (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)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1402:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_RPDO , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x1402:1*/
{ (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)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1600:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)9u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)9u},/* 0x1600:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)10u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)10u},/* 0x1600:2*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1601:0*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1601:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)11u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)11u},/* 0x1601:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)12u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)12u},/* 0x1601:2*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1602:0*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1602:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)13u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)13u},/* 0x1602:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)14u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)14u},/* 0x1602:2*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x1800:0*/
@ -299,23 +228,23 @@ CO_CONST CO_OBJECT_DESC_T CO_CONST_STORAGE_CLASS od_description[CO_OBJ_DESC_CNT]
{ (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)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)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1a00:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)19u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)19u},/* 0x1a00:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)20u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)20u},/* 0x1a00:2*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1a01:0*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1a01:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)21u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)21u},/* 0x1a01:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)22u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)22u},/* 0x1a01:2*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1a02:0*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1a02:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)23u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)23u},/* 0x1a02:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)24u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)24u},/* 0x1a02:2*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1a03:0*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1a03:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)25u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)25u},/* 0x1a03:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)26u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)26u},/* 0x1a03:2*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1a04:0*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1a04:0*/
{ (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)11u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)11u},/* 0x1a04:1*/
{ (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)12u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)12u},/* 0x1a04:2*/
{ (UNSIGNED8)0u, CO_DTYPE_I32_VAR , (UNSIGNED16)0u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_MAP_TR | CO_ATTR_MAP_REC, (UNSIGNED16)0u},/* 0x2001:0*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x3000:0*/
{ (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 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)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x6000:0*/
@ -367,56 +296,38 @@ 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, 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 },
{ 0x1016u, 3u, 2u, CO_ODTYPE_ARRAY, 7u },
{ 0x1017u, 1u, 0u, CO_ODTYPE_VAR, 10u },
{ 0x1018u, 5u, 4u, CO_ODTYPE_STRUCT, 11u },
{ 0x1029u, 3u, 2u, CO_ODTYPE_ARRAY, 16u },
{ 0x102au, 1u, 0u, CO_ODTYPE_VAR, 19u },
{ 0x1200u, 3u, 2u, CO_ODTYPE_STRUCT, 20u },
{ 0x1280u, 4u, 3u, CO_ODTYPE_STRUCT, 23u },
{ 0x1281u, 4u, 3u, CO_ODTYPE_STRUCT, 27u },
{ 0x1400u, 3u, 2u, CO_ODTYPE_STRUCT, 31u },
{ 0x1401u, 3u, 2u, CO_ODTYPE_STRUCT, 34u },
{ 0x1402u, 3u, 2u, CO_ODTYPE_STRUCT, 37u },
{ 0x1600u, 3u, 2u, CO_ODTYPE_STRUCT, 40u },
{ 0x1601u, 3u, 2u, CO_ODTYPE_STRUCT, 43u },
{ 0x1602u, 3u, 2u, CO_ODTYPE_STRUCT, 46u },
{ 0x1800u, 6u, 5u, CO_ODTYPE_STRUCT, 49u },
{ 0x1801u, 7u, 6u, CO_ODTYPE_STRUCT, 55u },
{ 0x1802u, 7u, 6u, CO_ODTYPE_STRUCT, 62u },
{ 0x1803u, 7u, 6u, CO_ODTYPE_STRUCT, 69u },
{ 0x1804u, 7u, 6u, CO_ODTYPE_STRUCT, 76u },
{ 0x1a00u, 3u, 2u, CO_ODTYPE_STRUCT, 83u },
{ 0x1a01u, 3u, 2u, CO_ODTYPE_STRUCT, 86u },
{ 0x1a02u, 3u, 2u, CO_ODTYPE_STRUCT, 89u },
{ 0x1a03u, 3u, 2u, CO_ODTYPE_STRUCT, 92u },
{ 0x1a04u, 3u, 2u, CO_ODTYPE_STRUCT, 95u },
{ 0x2001u, 1u, 0u, CO_ODTYPE_VAR, 98u },
{ 0x3000u, 3u, 2u, CO_ODTYPE_ARRAY, 99u },
{ 0x6000u, 6u, 5u, CO_ODTYPE_ARRAY, 102u },
{ 0x6001u, 7u, 6u, CO_ODTYPE_ARRAY, 108u },
{ 0x6002u, 7u, 6u, CO_ODTYPE_ARRAY, 115u },
{ 0x6003u, 9u, 8u, CO_ODTYPE_ARRAY, 122u },
{ 0x6004u, 5u, 4u, CO_ODTYPE_ARRAY, 131u },
{ 0x6005u, 5u, 4u, CO_ODTYPE_ARRAY, 136u },
};
/* static PDO mapping tables */
@ -622,98 +533,8 @@ CO_COMMON_INIT_VAL_T commonInitVars = {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(3u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(4u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(5u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(6u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(7u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(8u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(9u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(10u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(11u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(12u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(13u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(14u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(15u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(16u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(17u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(18u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(19u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
retVal = coSdoClientInit(20u);
if (retVal != RET_OK) {
return(retVal);
}
CO_HANDLE_WATCHDOG
/* initialize error control */
retVal = coErrorCtrlInit(od_const_u16[1], 1u);
retVal = coErrorCtrlInit(od_const_u16[1], 2u);
if (retVal != RET_OK) {
return(retVal);
}
@ -827,150 +648,6 @@ RET_T userOverwriteCobIdSettings(void)
if (ret == RET_OK) {
ret = coOdSetCobid(0x1281, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x1282, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1282, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x1282, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1282, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x1283, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1283, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x1283, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1283, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x1284, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1284, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x1284, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1284, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x1285, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1285, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x1285, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1285, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x1286, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1286, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x1286, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1286, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x1287, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1287, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x1287, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1287, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x1288, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1288, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x1288, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1288, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x1289, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1289, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x1289, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1289, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x128a, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x128a, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x128a, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x128a, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x128b, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x128b, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x128b, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x128b, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x128c, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x128c, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x128c, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x128c, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x128d, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x128d, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x128d, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x128d, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x128e, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x128e, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x128e, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x128e, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x128f, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x128f, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x128f, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x128f, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x1290, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1290, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x1290, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1290, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x1291, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1291, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x1291, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1291, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x1292, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1292, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x1292, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1292, 2, cobId);
}
ret = coOdGetDefaultVal_u32(0x1293, 1, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1293, 1, cobId);
}
ret = coOdGetDefaultVal_u32(0x1293, 2, &cobId);
if (ret == RET_OK) {
ret = coOdSetCobid(0x1293, 2, cobId);
}
/* RxPDO COB IDs */
cobId = nodeId + 0x200;

View File

@ -40,10 +40,17 @@
#define SDL_LSS_NODE_HB_MS 1000uL
#define SDL_LSS_NODE_STATE_RESET_INTERVAL 3u
#define SDL_TEST_BENCH_SDO_TIMEOUT 1000u
#define SDL_TEST_BENCH_STARTUP_TIMEOUT 10000uLL
#define SDL_POSITION_SETPOINT_INDEX 0x6002
#define SDL_POSITION_SETPOINT_SUB_INDEX 0x0
#define SDL_POSITION_FEEDBACK_INDEX 0x6004
#define SDL_POSITION_FEEDBACK_SUB_INDEX 0x0
#define SDL_SDO_CLIENT_COB 0x1280
#define SDL_SDO_CLIENT_TO_SERVER_COB 0x600
#define SDL_SDO_SERVER_TO_CLIENT_COB 0x580
/******************************************************************************
* Type Declarations
******************************************************************************/
@ -65,13 +72,26 @@ static bool monitorSleep_gb = CO_FALSE; /**< sleep flag */
static bool masterStarted_gb; /**< master started flag */
static const SdlLssNodeInfo_t nodeLookupTable_gast[SDL_LSS_NODE_COUNT] =
{
{0x319, 0x0, 0x0, 0x0, 0x12},
{0x319, 0x0, 0x3, 0x0, 0x6},
{0x319, 0x2, 0x0, 0x0, 0x7},
{0x319, 0x4d2, 0x1, 0x0, 0x18},
{0x31, 0x4d2, 0x5, 0x0, 0x9},
{0x3, 0x4d2, 0x6, 0x0, 0x10},
{0x1, 0x4d2, 0x7, 0x0, 0x11}
{0x319, 0x4d2, 0x1, 0x01, 0x5} ,
{0x319, 0x4d2, 0x1, 0x02, 0x6} ,
{0x319, 0x4d2, 0x1, 0x03, 0x7} ,
{0x319, 0x4d2, 0x1, 0x04, 0x8} ,
{0x319, 0x4d2, 0x1, 0x05, 0x9} ,
{0x319, 0x4d2, 0x1, 0x06, 0xA} ,
{0x319, 0x4d2, 0x1, 0x07, 0xB} ,
{0x319, 0x4d2, 0x1, 0x08, 0xC} ,
{0x319, 0x4d2, 0x1, 0x09, 0xD} ,
{0x319, 0x4d2, 0x1, 0x0A, 0xE} ,
{0x319, 0x4d2, 0x1, 0x0B, 0xF} ,
{0x319, 0x4d2, 0x1, 0x0C, 0x10},
{0x319, 0x4d2, 0x1, 0x0D, 0x11},
{0x319, 0x4d2, 0x1, 0x0E, 0x12},
{0x319, 0x4d2, 0x1, 0x0F, 0x13},
{0x319, 0x4d2, 0x1, 0x10, 0x14},
{0x319, 0x4d2, 0x1, 0x11, 0x15},
{0x319, 0x4d2, 0x1, 0x12, 0x16},
{0x319, 0x4d2, 0x1, 0x13, 0x17},
{0x319, 0x4d2, 0x1, 0x14, 0x18}
};
static CO_NMT_STATE_T nodeNMTState_gaen[SDL_LSS_NODE_COUNT];
/******************************************************************************
@ -92,7 +112,7 @@ static RET_T SdlLssSetSdoCobID(uint8 sdoNr_u8, uint8 nodeId_u8);
* Need this function for overwriting the manual COB ids
* for the TPDO. */
extern void userOverwriteCobIdSettings(void);
static bool SdlAreAllNodesOperational(void);
static void SdlEnduranceTestBenchRun(void);
/******************************************************************************
* Public Function Definitions
@ -107,6 +127,10 @@ void SdlRun(void)
{
SdlRunCanopen();
SdlLssNodeHandlerRun();
if (SdlAreAllNodesOperational())
{
SdlEnduranceTestBenchRun();
}
}
@ -119,21 +143,22 @@ void SdlRun(void)
*/
static void SdlInitCanopen(void)
{
RET_T retval;
HalSystemInit();
codrvHardwareInit();
codrvCanInit(SDL_CANOPEN_BITRATE);
codrvTimerSetup(CO_TIMER_INTERVAL);
retval = codrvCanInit(SDL_CANOPEN_BITRATE);
retval = codrvTimerSetup(CO_TIMER_INTERVAL);
/* CANopen Initialization */
coCanOpenStackInit(SdlOverwriteLoadIndication);
coEventRegister_LSS_MASTER(SdlLssIndCallback);
coEventRegister_ERRCTRL(SdlLssHbMonitorCallback);
retval = coCanOpenStackInit(SdlOverwriteLoadIndication);
retval = coEventRegister_LSS_MASTER(SdlLssIndCallback);
retval = coEventRegister_ERRCTRL(SdlLssHbMonitorCallback);
/* enable CAN communication */
codrvCanEnable();
coTimerStart(&monitorTimer_gst, SDL_APPL_TIMER_TIME, SdlLssToggleMonitorFlag, NULL, CO_TIMER_ATTR_ROUNDUP_CYCLIC);
coTimerStart(&nodeResetTimer_gst, (SDL_LSS_NODE_STATE_RESET_INTERVAL * 1000000uLL), SdlLssResetNodesCallback, NULL, CO_TIMER_ATTR_ROUNDUP_CYCLIC);
coNmtStateReq(SDL_PU_MASTER_NODE_ID, CO_NMT_STATE_OPERATIONAL, CO_TRUE);
retval = codrvCanEnable();
retval = coTimerStart(&monitorTimer_gst, SDL_APPL_TIMER_TIME, SdlLssToggleMonitorFlag, NULL, CO_TIMER_ATTR_ROUNDUP_CYCLIC);
retval = coTimerStart(&nodeResetTimer_gst, (SDL_LSS_NODE_STATE_RESET_INTERVAL * 1000000uLL), SdlLssResetNodesCallback, NULL, CO_TIMER_ATTR_ROUNDUP_CYCLIC);
retval = coNmtStateReq(SDL_PU_MASTER_NODE_ID, CO_NMT_STATE_OPERATIONAL, CO_TRUE);
coLssIdentifyNonConfiguredSlaves(SDL_LSS_CONFIG_TIMEOUT, SDL_LSS_CONFIG_INTERVAL);
}
@ -147,7 +172,6 @@ static void SdlRunCanopen(void)
{
coCommTask();
SdlLssNodeHandlerRun();
SdlEnduranceTestBenchRun();
}
@ -259,20 +283,19 @@ 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 arrIndex_u8 */
/* Get the node ID from the lookup table using the index passed */
uint8 nodeId_u8 = nodeLookupTable_gast[arrIndex_u8].nodeId_u8;
/* Add node to hb consumers with +25% tolerance
/* Add node to heartbeat consumers with +25% tolerance
* Rationale - Allows some flexibility in detecting timeouts due to minor clock drifts,
* bus delays, or transmission issues.*/
retVal_en = coHbConsumerSet(nodeId_u8,
((SDL_LSS_NODE_HB_MS / 100 * 25) + SDL_LSS_NODE_HB_MS));
((SDL_LSS_NODE_HB_MS / 100u * 25u) + SDL_LSS_NODE_HB_MS));
retVal_en = coHbConsumerStart(nodeId_u8);
/* setup SDO channel */
retVal_en = SdlLssSetSdoCobID((arrIndex_u8 + 1), nodeLookupTable_gast[arrIndex_u8].nodeId_u8);
retVal_en = coSdoWrite((arrIndex_u8 + 1), 0x1017u, 0u, (uint8*)(&hb_u16), 2u, CO_FALSE, 1000u);
retVal_en = SdlLssSetSdoCobID((arrIndex_u8 + 1u), nodeLookupTable_gast[arrIndex_u8].nodeId_u8);
/* start node */
retVal_en = coNmtStateReq(nodeId_u8, CO_NMT_STATE_OPERATIONAL, CO_FALSE);
@ -339,7 +362,7 @@ static void SdlLssIndCallback(CO_LSS_MASTER_SERVICE_T service_en, uint16 errorCo
case CO_LSS_MASTER_SERVICE_FASTSCAN:
/* Match detected node with lookup table */
for (uint8 i_u8 = 0; i_u8 < SDL_LSS_NODE_COUNT; i_u8++)
for (uint8 i_u8 = 0u; i_u8 < SDL_LSS_NODE_COUNT; i_u8++)
{
if (pIdentity_pu32[0] == nodeLookupTable_gast[i_u8].vendorId_u32 &&
pIdentity_pu32[1] == nodeLookupTable_gast[i_u8].productId_u32 &&
@ -446,7 +469,7 @@ static void SdlLssResetNodesCallback(void *pData_pv)
(void)pData_pv;
/* reset defined nodes without known state */
for (arrIndex_u8 = 0u; arrIndex_u8 < 3; arrIndex_u8++)
for (arrIndex_u8 = 0u; arrIndex_u8 < SDL_LSS_NODE_COUNT; arrIndex_u8++)
{
if ((nodeNMTState_gaen[arrIndex_u8] != CO_NMT_STATE_PREOP) &&
(nodeNMTState_gaen[arrIndex_u8] != CO_NMT_STATE_OPERATIONAL))
@ -472,95 +495,106 @@ static RET_T SdlLssSetSdoCobID(uint8 sdoNr_u8, uint8 nodeId_u8)
{
uint16 cobIndex_u16;
uint32 newCobId_u32;
RET_T retVal = RET_INTERNAL_ERROR;
RET_T retVal_en = RET_INTERNAL_ERROR;
/* get od index of sdoNr */
cobIndex_u16 = 0x1280u + sdoNr_u8 - 1u;
cobIndex_u16 = SDL_SDO_CLIENT_COB + sdoNr_u8 - 1u; /* SDO starts from 1280 index */
/* set cobID for client to server direction (request) */
newCobId_u32 = 0x600u + nodeId_u8;
retVal = coOdSetCobid(cobIndex_u16, 1u, newCobId_u32);
newCobId_u32 = SDL_SDO_CLIENT_TO_SERVER_COB + nodeId_u8;
retVal_en = coOdSetCobid(cobIndex_u16, 1u, newCobId_u32);
if (retVal == RET_OK)
if (retVal_en == RET_OK)
{
/* set cobID for server to client direction (response) */
newCobId_u32 = 0x580u + nodeId_u8;
retVal = coOdSetCobid(cobIndex_u16, 2u, newCobId_u32);
newCobId_u32 = SDL_SDO_SERVER_TO_CLIENT_COB + nodeId_u8;
retVal_en = coOdSetCobid(cobIndex_u16, 2u, newCobId_u32);
}
/* print failed setup details */
if (retVal != RET_OK)
if (retVal_en != RET_OK)
{
/* ERROR */
}
return retVal;
return retVal_en;
}
/**
* @brief This is the main function that runs the endurance
* test bench.
*
* @return void
*
*/
static void SdlEnduranceTestBenchRun(void)
{
RET_T retVal_en = RET_INTERNAL_ERROR;
uint16 max_u16 = NMS_UINT8_MAX;
uint16 min_u16 = 0u;
RET_T retVal_en;
uint8 max_u8 = NMS_UINT8_MAX;
uint8 min_u8 = 0u;
static uint64 startTime_u64 = 0uLL;
uint8 alternate_u8 = 0u;
uint64 currentTime_u64;
if(startTime_u64 == 0uLL)
{
HalSystemGetRunTimeMs(&startTime_u64);
srand(startTime_u64);
}
HalSystemGetRunTimeMs(&currentTime_u64);
if(currentTime_u64 - startTime_u64 <= 10000uLL)
if(currentTime_u64 - startTime_u64 <= SDL_TEST_BENCH_STARTUP_TIMEOUT)
{
if(alternate_u8 == 0u)
{
for (uint8 i_u8 = 0u; i_u8 < SDL_LSS_NODE_COUNT / 2; i_u8++)
{
retVal_en = coSdoWrite((i_u8 + 1), SDL_POSITION_SETPOINT_INDEX, SDL_POSITION_SETPOINT_SUB_INDEX, (uint8*)(&max_u16), 2u, CO_FALSE, 1000u);
retVal_en = coSdoWrite((i_u8 + 1), SDL_POSITION_SETPOINT_INDEX, SDL_POSITION_SETPOINT_SUB_INDEX,
(uint8*)(&max_u8), sizeof(max_u8), CO_FALSE, SDL_TEST_BENCH_SDO_TIMEOUT);
}
for (uint8 i_u8 = 10u; i_u8 < SDL_LSS_NODE_COUNT; i_u8++)
{
retVal_en = coSdoWrite((i_u8 + 1), SDL_POSITION_SETPOINT_INDEX, SDL_POSITION_SETPOINT_SUB_INDEX, (uint8*)(&min_u16), 2u, CO_FALSE, 1000u);
retVal_en = coSdoWrite((i_u8 + 1), SDL_POSITION_SETPOINT_INDEX, SDL_POSITION_SETPOINT_SUB_INDEX,
(uint8*)(&min_u8), sizeof(min_u8), CO_FALSE, SDL_TEST_BENCH_SDO_TIMEOUT);
}
}
else
{
for (uint8 i_u8 = 0u; i_u8 < SDL_LSS_NODE_COUNT / 2; i_u8++)
{
retVal_en = coSdoWrite((i_u8 + 1), SDL_POSITION_SETPOINT_INDEX, SDL_POSITION_SETPOINT_SUB_INDEX, (uint8*)(&min_u16), 2u, CO_FALSE, 1000u);
retVal_en = coSdoWrite((i_u8 + 1), SDL_POSITION_SETPOINT_INDEX, SDL_POSITION_SETPOINT_SUB_INDEX,
(uint8*)(&min_u8), sizeof(min_u8), CO_FALSE, SDL_TEST_BENCH_SDO_TIMEOUT);
}
for (uint8 i_u8 = 10u; i_u8 < SDL_LSS_NODE_COUNT; i_u8++)
{
retVal_en = coSdoWrite((i_u8 + 1), SDL_POSITION_SETPOINT_INDEX, SDL_POSITION_SETPOINT_SUB_INDEX, (uint8*)(&max_u16), 2u, CO_FALSE, 1000u);
retVal_en = coSdoWrite((i_u8 + 1), SDL_POSITION_SETPOINT_INDEX, SDL_POSITION_SETPOINT_SUB_INDEX,
(uint8*)(&max_u8), sizeof(max_u8), CO_FALSE, SDL_TEST_BENCH_SDO_TIMEOUT);
}
}
uint16 readPos_u16 = 0u;
uint8 readPos_u8 = 0u;
bool allMotorsReached_b = false;
while (!allMotorsReached_b)
{
allMotorsReached_b = true; // Assume all motors have reached the position
allMotorsReached_b = true; /* Assume all motors have reached the position */
for (uint8 i_u8 = 0u; i_u8 < SDL_LSS_NODE_COUNT; i_u8++)
{
retVal_en = coSdoRead((i_u8 + 1), SDL_POSITION_SETPOINT_INDEX, SDL_POSITION_SETPOINT_SUB_INDEX, (uint8*)(&readPos_u16), 2u, CO_FALSE, 1000u);
retVal_en = coSdoRead((i_u8 + 1), SDL_POSITION_SETPOINT_INDEX, SDL_POSITION_SETPOINT_SUB_INDEX,
(uint8*)(&readPos_u8), sizeof(readPos_u8), CO_FALSE, SDL_TEST_BENCH_SDO_TIMEOUT);
if (alternate_u8 == 0u)
{
if ((i_u8 < SDL_LSS_NODE_COUNT / 2 && readPos_u16 != max_u16) ||
(i_u8 >= SDL_LSS_NODE_COUNT / 2 && readPos_u16 != min_u16))
if ((i_u8 < SDL_LSS_NODE_COUNT / 2 && readPos_u8 != max_u8) ||
(i_u8 >= SDL_LSS_NODE_COUNT / 2 && readPos_u8 != min_u8))
{
allMotorsReached_b = false; // Keep waiting
allMotorsReached_b = false; /* Keep waiting */
}
}
else
{
if ((i_u8 < SDL_LSS_NODE_COUNT / 2 && readPos_u16 != min_u16) ||
(i_u8 >= SDL_LSS_NODE_COUNT / 2 && readPos_u16 != max_u16))
if ((i_u8 < SDL_LSS_NODE_COUNT / 2 && readPos_u8 != min_u8) ||
(i_u8 >= SDL_LSS_NODE_COUNT / 2 && readPos_u8 != max_u8))
{
allMotorsReached_b = false; // Keep waiting
allMotorsReached_b = false; /* Keep waiting */
}
}
}
@ -571,9 +605,28 @@ static void SdlEnduranceTestBenchRun(void)
{
for (uint8 i_u8 = 0u; i_u8 < SDL_LSS_NODE_COUNT; i_u8++)
{
uint16 randomPos_u16 = (uint16)(rand() % (NMS_UINT8_MAX + 1));
retVal_en = coSdoWrite((i_u8 + 1), SDL_POSITION_SETPOINT_INDEX, SDL_POSITION_SETPOINT_SUB_INDEX, (uint8*)(&randomPos_u16), 2u, CO_FALSE, 1000u);
uint8 randomPos_u8 = (rand() % (NMS_UINT8_MAX + 1));
retVal_en = coSdoWrite((i_u8 + 1), SDL_POSITION_SETPOINT_INDEX, SDL_POSITION_SETPOINT_SUB_INDEX,
(uint8*)(&randomPos_u8), sizeof(randomPos_u8), CO_FALSE, SDL_TEST_BENCH_SDO_TIMEOUT);
}
}
}
/**
* @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;
}