From 15c84db741b51ec4267b77477095010bc2eec43b Mon Sep 17 00:00:00 2001 From: "AzureAD\\AniketSaha" Date: Mon, 24 Feb 2025 11:51:19 +0100 Subject: [PATCH] Added fix for test bench lss not running. Changed heartbeat consumers settings --- .../coappl/enduranceTestBench.cddp | Bin 163840 -> 163840 bytes .../coappl/enduranceTestBench.eds | 164 +----- EnduranceTestBench/coappl/gen_define.h | 8 +- EnduranceTestBench/coappl/gen_indication.h | 2 +- EnduranceTestBench/coappl/gen_indices.h | 2 +- EnduranceTestBench/coappl/gen_objdict.c | 239 ++++---- EnduranceTestBench/scheduler/sdl.c | 526 +++++++++--------- 7 files changed, 384 insertions(+), 557 deletions(-) diff --git a/EnduranceTestBench/coappl/enduranceTestBench.cddp b/EnduranceTestBench/coappl/enduranceTestBench.cddp index 4c617d47e59eb3edf79f2dc77e65c7b31015ac9b..c3c07185f705e7d3273e4293f4b059e44692ff5a 100644 GIT binary patch delta 2367 zcmeHIjZ;-c6u-OoW54$bA}OdmB9Iy>9*$#TiV9OY@}XwPIOTf^h*)9qK(x$kGqa4!iZq&1$|>6i$c$Dq{Q=#bd++a@y}xtz>^XaG zWhJewq${Gr0njupvHK3;6?KDCAOKsvZ{IXUo|j+ABk~QoSvs;x-Y=)i3G!wcFT=$p z(I$?IcSMueARZSFh$1mXj1kEqMo9h#Z{sKUe!i1$;tmh+a-Pp8@id;qqd92`bJejX z&&ZcS6T4*!Xd-FX0>4*GQtU+0S0LWOPw@jh$k*~}Uc$2!t3TJ-uk1K$X3w%3b~p2| z+gTdBkqu;F^dkL^9;XNCcDj}>rwiykbUK|((`X7ENDb0K&XA+zP0~o7BdbUanNNzy zRFY1Hk~q?v0NjpG;&*YAA3uj{@d7*t--&bZXq<>6&?VH04xv|3EviIwkq6y|2BW^# zMe8GLhqcCEhNZXZ zNA*U1wZ2%NtxwRCbP0ceEiedIzyg>GMIZ13XaQS54af(hn#PTZWWk6201+TKsvWq& zBX!xqx@_Q!#kze~rAQkTAs8lyA#s*(hI<8&q0rX zjcsNdSv{*|RqR1l%4Vy~=dw(e&Qe)28^rtrSp;JY(hho#enUT_$LI%iFWpIBqc76+ zbQN7n7t;!QFU_aZ=p=d@9Z84K>uC&)q=M??H*$`AO-`r+d0&;tcG5sL5{E1&0kV+z z$QLk&P9ZD2sZ@WhmoyK%?vp9Z+2OntarIIpmz z%;PJV>rw1^%0NYFaao~z<@%f`;12G*1jbFYl>MPvwSy+Y!D;R4c-%=KZpMC`fDWJ~ zXuS24^^}!k^)_EOy=Fh-q)}zupns*msAt1p;4AQc*ca>u6<~yRTC1)b6X}G_h3E8) zB@a1UXTsRv(gHYE5B_>P+ys@fxJ#Kg6+QujBc{Q3OuwC_4bc{9wk7wg|IRhyh3EGPSD9QTJT4qf&FPQ7hTr4$Op)IhSc^$xY_k@Mj? zOCKJHa@=_^*4gNXQJ`Pfhkq`DalwN{FasINRE*P71fywYpu`0U0AYQcw|p?#j6tOp zZl}%%L^L59o3^z)&;BCnrUHk zk6oWYd-kqACOAsSr~ zQO8wCaAQg(7F&qxi{dV_(In#P#%ps~9>G?YeukN8G>E z$s$!eFCqn1KdL76vHH8JQm!gitJGXIQKhOrDoSbDBEOMWX_t)l1(I+WRclq0vSZQkx=|2zJVKXCEkV$@Nzs2 zC*fzYbnZBf&LL-mGsp2d@lJdD7yFD|WACyH>_zrCJIU^0cd~x5Zd&zLxs`2YSR<_7 zRyb-wx6mo{E-FK>p$wFaqTplL1kb>~z}0Xpl-0*u|JX;M zJ-~&LVOGrg7CFt)5VEqdLZH2Q8(!K^k4NmB%CN>;fMG;d>dcI7x72iIfDPts#_s!r5#y1V|pZm*dJ>Sy(>y5(c1*$H--9bj*< zooq8JWUrc9%x5#$MD_=k!V=hX>=_opLKvnk^apyE-lU(>^QJa+^e{a@-=sU}W?D#d z=u$eL&Y%%bxNn*+Fs%#82YBxGk<` ziA$nUoD_cJ+#^w(eR*RXjo8DlpIt94Gk)c1_zac z5`)S{1A@vz{eudjzW()_Kn?V-cpY@I+=MNlu2b+Hgg1xYG^Dqg`$_&UCf&*5I)pZDaQIbz?jCU%8=!0OmRwu^0G zD~)3(neGwKqM4#UQ{OFmh1Sz5x`+OW=F{bL8XZaFXb1Ad7_r`1u##*w=F1?XjpH2r z6+Vmio0XG=({W!M?le0eJAS9q+2|~BGMrIPf)nm|>}z(NU25mrbL=#GfZfGLR+H6e z9k%{#DK{}LBE9hyyaxAkW;?{LwinpFtczBT)dxL5Y z3hUu~D8Om35yW}^<0;8eH`I^&9*C`jG>T=-PmegEL;@B@2^c}+KKfd{X| z5zZyYb&~8`c7;9LCRVkzK%df!b*O4oTU3Afh1@P*5>LcCVy1}ZXZTXy!`Q!!CDQLr zL(een`vl1+-SIiAm+7wukQY9H)i4`&2K68Z4DmF1Hkx@rJi^^O&&(orH9U??ka>Y1 z&7@M1pS}V|U^KPZ<2IzjuI{1n@NA~Ump!pC(xX1td8$Blmp9}-ImY~#szjFP!0XKV z9BBSIMJ$OydXRc4A^##PNN0UacQwV2bFMj?ok4c9z0+#34q4MJf{voOC=8y2SuoNb zUwa|s1VG;6$${*(Z_Q3`Ffl;w0+b%0umE}6$ep?dK4-?I1?b=!=rc4rKxw(~f}!C7 z8lGpK99}%dz5g2Q2IJ$}3g#}$gR|Vva$z{2f%gt=dm4}c4Gs_vP-1|b01XI`9iaXJ zvRWzD(kp&5Mq @@ -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; -}