From 52ac4f0b1ca8bb56aef4b576114e43c7de5784be Mon Sep 17 00:00:00 2001 From: "AzureAD\\AniketSaha" Date: Fri, 21 Feb 2025 10:12:31 +0100 Subject: [PATCH] Added state machine for endurance test bench, CAN LSS not working --- .../coappl/enduranceTestBench.cddp | Bin 155648 -> 163840 bytes .../coappl/enduranceTestBench.eds | 890 +++++++++++++++++- EnduranceTestBench/coappl/gen_define.h | 22 +- EnduranceTestBench/coappl/gen_indication.h | 2 +- EnduranceTestBench/coappl/gen_indices.h | 20 +- EnduranceTestBench/coappl/gen_objdict.c | 591 +++++++++--- EnduranceTestBench/scheduler/sdl.c | 252 +++-- 7 files changed, 1552 insertions(+), 225 deletions(-) diff --git a/EnduranceTestBench/coappl/enduranceTestBench.cddp b/EnduranceTestBench/coappl/enduranceTestBench.cddp index 11d066368f66136636075e5d4d932f3a452f679c..4c617d47e59eb3edf79f2dc77e65c7b31015ac9b 100644 GIT binary patch delta 4707 zcmd^?i*r=v8OHa#@40;6ch1?fNkBtLBqW53LQ{-k6Z3>xyRFXI@hmK%PZJdG~wJj}<Tr>C9w`FwNTcj6TpDO{|af8yrH7UC5aA2W(_^6fQt znLXRiuzl7i)|=MvtS7BUts!ftb*puqb(OWy%C-*Y7yZ@@2KHqLA1DfN&X{tK#+ADR z`_hxGv}7xgY&pr6KiRUswStLDTHksJ%S^UJvc;1vmTVcxmL9X}{`1DQP*HS)LiGBbH@49nH-G zMfM!~HG6{XXAiUcSw9Q0HkQ`Nwy+!6wd}iW1uJ2NEN}ekcBNGhaupN^Tr>r*lPUw( zOO=l6q)NjYsRCFnm4mCL@?(`$HeMr@g_Tm7ST2>oRZ?+WAyts!GARvQDwU39QfXK! zm5RkuAuf)q^fAOmQUMk*6*#!wLRYYuSU|N=#LJ`tETq&Z&ZpF95HF?T2;w}c0OwL{ z1m{p}1ZPui7_mSqz*&?U#(YW*V;IVqahgK@ZPpWkyoaJgmto@w; zXDHSQ|DaeWd`__rgwLb`I8CVz_&cRK;8UuF5I&I#;A2XK;BS-)!Kv{V`;-}K`A3x5 z4KPWW-S8o0cEbl$Ye#rrDu9!eYKIe)YKQltMG++exMBR+h*EhoTkdmCIWId;kNH<- z2bJaikiW%W@2~P-;h*OZ*k9X|_Hp}Z`w{y-`zE{EUgGXR!ur^H)tay#vWBfrtJ&IU z)wuglp_OF`^Md(-dE7i|9x(Tq5wpW=HaD3yX0bWXoMxgpEl!Bn#0z3VJT87LdPJ+c zetln5h|5Ku@bfQu@FahYAK?f1Px&Bk=XddXUdfC2RQ8R#EFEzdq`hp|U5ajGRqpzu z8y^{eG=AnTk&VVWW3iE`PwFq}>mjcB{HO7E$IEl~V19(RcUX9rZ@D5DC{m|qt+woUuLAqMdSv9t!x-mU} z^OlC&8n@(@FIls(qH;r3dF9xL)dvo*UFA2GqQe{4WGLe!7nJ68y1vIZ56?!8wXpC? z{XM>!o9_3&oh>k4GjR^_#D|%lo%yd8Pt%Xu`XD;yQ?pnCSHHzw?MEOy4Q60>j z9^S5PYHHlpy13}_;^LO3!uW?=<%No_9nm}8fYL>@HllSA?H-TTMYOw#)|HaBooJmz zYb9DI(YATCPNKCCturO6+RM`>>UafA<1tpqR z4>O{#*FmYWDeA9>I^_rP%Z>NcLz~`cyY$)WR-e&oWa+QyQGK~~Qrn~5qA~TLy488k zxx-2GAM+3Si|xPI_uF;WH`YGuCM(bUgV|)x6(5T+QN};#Pw^W$vS(O3n`0bT=i^D- zk2P=>4nhk|Q;sNY%9XwozFv1!fl(0+*1BVAEY^(@Exgcc$5^Z##SmUV-5pEOkBabR z)ZNiock>}!NbMb!!1*33D_%vjDWoo zXn4S03DgPLn-ZuIutx$_0`^ECdcYnD1OoP?1S$mVmOvi?yJNsoHR$oWW4sdOzBn$} zodRbYulfoh+vk7Nx!1qjKgWL8e#~BNeP$i78m+13gxP9dA>I*PVz~hRIInSkK>mqs zW7C|cotf@NTcp3O59r^~Cbb9E3+m6+>s5wN;bu&SqtFQ1+FIH#eTUx&{8G_t!q>%? zz0>Zpr%Z`D*F&Let@o^qgtgAI(i2vVXQd^qYR?KJtks_7B&;gW@+YioJj+g4m7ZlK zta8sX?v(iDrxDV9q;jL11V!vjVn@Dc(>QUY@bI3$7D1RRpU=^k(>23&#_;c0ZjVC;lE hcW^EC9yP`vb?l!5L8GxOoJE%(N_qK3L>r6K{tcXsKluOv delta 385 zcmZo@;A%L)IYCA2w>oU#ea!^=Vm^K zH~iaw{bytkU<0~Kk!|jD_5db*5zZ7&ZjOx{SsZ%oSJ|uCP1qi>&D|`h5X{En)S9R; zePI~WR7U>k8Y{sWS3S-xvyH&ktv^VC0?dm>_4h diff --git a/EnduranceTestBench/coappl/enduranceTestBench.eds b/EnduranceTestBench/coappl/enduranceTestBench.eds index a6839ae..1df8202 100644 --- a/EnduranceTestBench/coappl/enduranceTestBench.eds +++ b/EnduranceTestBench/coappl/enduranceTestBench.eds @@ -5,10 +5,10 @@ FileVersion=1.0 FileRevision=1.0 EDSVersion=4.0 Description=EDS -CreationTime=15:45PM -CreationDate=02-14-25 -ModificationTime=15:45PM -ModificationDate=02-14-25 +CreationTime=10:10PM +CreationDate=02-21-25 +ModificationTime=10:10PM +ModificationDate=02-21-25 CreatedBy=Aniket Saha ModifiedBy=Aniket Saha @@ -61,7 +61,7 @@ SupportedObjects=2 2=0x3000 [OptionalObjects] -SupportedObjects=33 +SupportedObjects=51 1=0x1003 2=0x1008 3=0x1014 @@ -73,28 +73,46 @@ SupportedObjects=33 9=0x1200 10=0x1280 11=0x1281 -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 +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 [1000] ParameterName=Device Type @@ -159,7 +177,7 @@ DefaultValue=0x0 [1016] ParameterName=Consumer Heartbeat Time ObjectType=8 -SubNumber=3 +SubNumber=21 [1016sub0] ParameterName=Number of entries @@ -167,7 +185,7 @@ ObjectType=7 DataType=5 AccessType=ro PDOMapping=0 -DefaultValue=2 +DefaultValue=20 [1016sub1] ParameterName=Consumer Heartbeat Time @@ -175,7 +193,7 @@ ObjectType=7 DataType=7 AccessType=rw PDOMapping=0 -DefaultValue=0x0000 +DefaultValue=1000 [1016sub2] ParameterName=Consumer Heartbeat Time @@ -183,7 +201,151 @@ ObjectType=7 DataType=7 AccessType=rw PDOMapping=0 -DefaultValue=0x0000 +DefaultValue=1000 + +[1016sub3] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 + +[1016sub4] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 + +[1016sub5] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 + +[1016sub6] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 + +[1016sub7] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 + +[1016sub8] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 + +[1016sub9] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 + +[1016suba] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 + +[1016subb] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 + +[1016subc] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 + +[1016subd] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 + +[1016sube] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 + +[1016subf] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 + +[1016sub10] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 + +[1016sub11] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 + +[1016sub12] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 + +[1016sub13] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 + +[1016sub14] +ParameterName=Consumer Heartbeat Time +ObjectType=7 +DataType=7 +AccessType=rw +PDOMapping=0 +DefaultValue=1000 [1017] ParameterName=Producer Heartbeat Time @@ -379,6 +541,672 @@ 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 diff --git a/EnduranceTestBench/coappl/gen_define.h b/EnduranceTestBench/coappl/gen_define.h index f069b6b..f16d4c3 100644 --- a/EnduranceTestBench/coappl/gen_define.h +++ b/EnduranceTestBench/coappl/gen_define.h @@ -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 38u -#define CO_OBJECT_COUNTS 38u -#define CO_COB_COUNTS 21u +#define CO_OBJECTS_LINE_0_CNT 56u +#define CO_OBJECT_COUNTS 56u +#define CO_COB_COUNTS 75u #define CO_TXPDO_COUNTS 5u #define CO_RXPDO_COUNTS 3u #define CO_SSDO_COUNTS 1u -#define CO_CSDO_COUNTS 2u +#define CO_CSDO_COUNTS 20u #define CO_ASSIGN_COUNTS 0u #define CO_MAX_ASSIGN_COUNTS 0u #define CO_GUARDING_COUNTS CO_MAX_ASSIGN_COUNTS -#define CO_ERR_CTRL_COUNTS 2u +#define CO_ERR_CTRL_COUNTS 20u #define CO_ERR_HIST_COUNTS 1u #define CO_ACT_ERR_HIST_COUNTS 0u #define CO_EMCY_CONS_COUNTS 0u @@ -39,12 +39,13 @@ /* Definition of numbers of CANopen services */ #define CO_NMT_MASTER 1u #define CO_LSS_MASTER_SUPPORTED 1u +#define CO_LSS_INQUIRY_SERVICES 1u #define CO_SDO_SERVER_CNT 1u -#define CO_SDO_CLIENT_CNT 2u +#define CO_SDO_CLIENT_CNT 20u #define CO_PDO_TRANSMIT_CNT 5u #define CO_PDO_RECEIVE_CNT 3u #define CO_MAX_MAP_ENTRIES 2u -#define CO_HB_CONSUMER_CNT 2u +#define CO_HB_CONSUMER_CNT 20u #define CO_EMCY_PRODUCER 1u #define CO_EMCY_ERROR_HISTORY 1u #define CO_SDO_BLOCK 1u @@ -54,10 +55,13 @@ #define CO_SDO_QUEUE_LEN 0u #define CO_INHIBIT_SUPPORTED 1u /* number of used COB objects */ -#define CO_COB_CNT 21u +#define CO_COB_CNT 75u /* Definition of number of call-back functions for each service*/ +#define CO_EVENT_DYNAMIC_SDO_SERVER_READ 1u +#define CO_EVENT_DYNAMIC_SDO_SERVER_WRITE 1u +#define CO_EVENT_DYNAMIC_SDO_SERVER_CHECK_WRITE 1u #define CO_EVENT_DYNAMIC_PDO 1u #define CO_EVENT_DYNAMIC_PDO_UPDATE 1u #define CO_EVENT_DYNAMIC_NMT 1u @@ -92,8 +96,8 @@ /* application-specific defines as defined in DeviceDesigner */ #define CODRV_BIT_TABLE_EXTERN 1 #define CODRV_CANCLOCK_40MHZ 1 -#define CO_LSS_INQUIRY_SERVICES 1 +#define C4L_DEVICE #define CODRV_MCAN_STM32_G4 #define CONFIG_MCAN1 #define CUBE_MX_GENERATION diff --git a/EnduranceTestBench/coappl/gen_indication.h b/EnduranceTestBench/coappl/gen_indication.h index e68178f..641a481 100644 --- a/EnduranceTestBench/coappl/gen_indication.h +++ b/EnduranceTestBench/coappl/gen_indication.h @@ -1,6 +1,6 @@ /* * static indication definitions for enduranceTestBench - generated by CANopen DeviceDesigner 3.14.2 - * Fri Feb 14 15:45:52 2025 + * Fri Feb 21 10:10:40 2025 */ /* protect against multiple inclusion of the file */ diff --git a/EnduranceTestBench/coappl/gen_indices.h b/EnduranceTestBench/coappl/gen_indices.h index 7de5f8e..7aade00 100644 --- a/EnduranceTestBench/coappl/gen_indices.h +++ b/EnduranceTestBench/coappl/gen_indices.h @@ -1,6 +1,6 @@ /* * CO index/J1939 PGN/raw CAN-ID defines for enduranceTestBench - generated by CANopen DeviceDesigner 3.14.2 - * Fri Feb 14 15:45:51 2025 + * Fri Feb 21 10:10:40 2025 */ /* protect against multiple inclusion of the file */ @@ -34,6 +34,24 @@ #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 diff --git a/EnduranceTestBench/coappl/gen_objdict.c b/EnduranceTestBench/coappl/gen_objdict.c index 0ec0758..6e5b2d1 100644 --- a/EnduranceTestBench/coappl/gen_objdict.c +++ b/EnduranceTestBench/coappl/gen_objdict.c @@ -1,6 +1,6 @@ /* * object dictionary for enduranceTestBench - generated by CANopen DeviceDesigner 3.14.2 - * Fri Feb 14 15:45:52 2025 + * Fri Feb 21 10:10:40 2025 */ #include @@ -31,8 +31,8 @@ /* definition of static indication function pointers */ /* number of objects */ -#define CO_OD_ASSIGN_CNT 38u -#define CO_OBJ_DESC_CNT 141u +#define CO_OD_ASSIGN_CNT 56u +#define CO_OBJ_DESC_CNT 231u /* definition of managed variables */ static UNSIGNED8 CO_STORAGE_CLASS od_u8[8]= { @@ -86,24 +86,25 @@ 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[9] = { +static CO_CONST UNSIGNED8 CO_CONST_STORAGE_CLASS od_const_u8[10] = { (UNSIGNED8)0u, - (UNSIGNED8)2u, + (UNSIGNED8)20u, (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[4] = { +static CO_CONST UNSIGNED16 CO_CONST_STORAGE_CLASS od_const_u16[3] = { (UNSIGNED16)0u, - (UNSIGNED16)1500u, - (UNSIGNED16)10u, - (UNSIGNED16)500u}; -static CO_CONST UNSIGNED32 CO_CONST_STORAGE_CLASS od_const_u32[27] = { + (UNSIGNED16)500u, + (UNSIGNED16)10u}; +static CO_CONST UNSIGNED32 CO_CONST_STORAGE_CLASS od_const_u32[28] = { (UNSIGNED32)0UL, (UNSIGNED32)128UL, + (UNSIGNED32)1000UL, (UNSIGNED32)793UL, (UNSIGNED32)1234UL, (UNSIGNED32)1UL, @@ -153,121 +154,211 @@ CO_CONST CO_OBJECT_DESC_T CO_CONST_STORAGE_CLASS od_description[CO_OBJ_DESC_CNT] { (UNSIGNED8)0u, CO_DTYPE_U32_EMCY , (UNSIGNED16)4116u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x1014:0*/ { (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)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)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)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1018:1*/ + { (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)4u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)4u},/* 0x1018:2*/ + { (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)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)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)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)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*/ - { (UNSIGNED8)1u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 0x1280:1*/ - { (UNSIGNED8)2u, CO_DTYPE_U32_SDO_CLIENT, (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 0x1280:2*/ + { (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)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)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)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)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 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)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)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)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)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)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)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*/ - { (UNSIGNED8)1u, CO_DTYPE_U32_TPDO , (UNSIGNED16)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_WRITE | CO_ATTR_DEFVAL, (UNSIGNED16)15u},/* 0x1800:1*/ - { (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)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)5u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)5u},/* 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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1601:0*/ + { (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)12u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)12u},/* 0x1601:1*/ + { (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)13u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)13u},/* 0x1601:2*/ + { (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)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)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)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)16u},/* 0x1801:1*/ - { (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)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)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)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)3u},/* 0x1801:5*/ + { (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)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)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)17u},/* 0x1802:1*/ - { (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)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 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)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)3u},/* 0x1802:5*/ + { (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)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)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)18u},/* 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)5u},/* 0x1803:2*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 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)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)3u},/* 0x1803:5*/ + { (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)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)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 0x1804:0*/ + { (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)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)5u},/* 0x1804:2*/ + { (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)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)3u},/* 0x1804:5*/ + { (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)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)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)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)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)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)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_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*/ + { (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)21u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)21u},/* 0x1a00:2*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1a01:0*/ + { (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)22u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)22u},/* 0x1a01:1*/ + { (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)23u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)23u},/* 0x1a01:2*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1a02:0*/ + { (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)24u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)24u},/* 0x1a02:1*/ + { (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)25u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)25u},/* 0x1a02:2*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1a03:0*/ + { (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)26u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)26u},/* 0x1a03:1*/ + { (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)27u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)27u},/* 0x1a03:2*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)3u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)3u},/* 0x1a04:0*/ + { (UNSIGNED8)1u, CO_DTYPE_U32_CONST, (UNSIGNED16)12u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)12u},/* 0x1a04:1*/ + { (UNSIGNED8)2u, CO_DTYPE_U32_CONST, (UNSIGNED16)13u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_MAP_TR | CO_ATTR_DEFVAL, (UNSIGNED16)13u},/* 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)1u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)1u},/* 0x3000:0*/ + { (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)6u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)6u},/* 0x6000:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 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)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 0x6001:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 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)7u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)7u},/* 0x6002:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 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)8u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)8u},/* 0x6003:0*/ + { (UNSIGNED8)0u, CO_DTYPE_U8_CONST , (UNSIGNED16)9u, CO_ATTR_NUM | CO_ATTR_READ | CO_ATTR_DEFVAL, (UNSIGNED16)9u},/* 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*/ @@ -296,38 +387,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, 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 }, + { 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 }, }; /* static PDO mapping tables */ @@ -533,8 +642,98 @@ 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], 2u); + retVal = coErrorCtrlInit(od_const_u16[1], 20u); if (retVal != RET_OK) { return(retVal); } @@ -546,49 +745,49 @@ CO_COMMON_INIT_VAL_T commonInitVars = { } CO_HANDLE_WATCHDOG /* initialize TPDO 1 */ - retVal = coPdoTransmitInit(1u, od_const_u8[5], od_const_u16[0], od_const_u16[3], 0u, &mapTableTPDO1); + retVal = coPdoTransmitInit(1u, od_const_u8[6], od_const_u16[0], od_const_u16[1], 0u, &mapTableTPDO1); if (retVal != RET_OK) { return(retVal); } CO_HANDLE_WATCHDOG /* initialize TPDO 2 */ - retVal = coPdoTransmitInit(2u, od_const_u8[5], od_const_u16[0], od_const_u16[3], od_const_u8[0], &mapTableTPDO2); + retVal = coPdoTransmitInit(2u, od_const_u8[6], od_const_u16[0], od_const_u16[1], od_const_u8[0], &mapTableTPDO2); if (retVal != RET_OK) { return(retVal); } CO_HANDLE_WATCHDOG /* initialize TPDO 3 */ - retVal = coPdoTransmitInit(3u, od_const_u8[5], od_const_u16[0], od_const_u16[3], od_const_u8[0], &mapTableTPDO3); + retVal = coPdoTransmitInit(3u, od_const_u8[6], od_const_u16[0], od_const_u16[1], od_const_u8[0], &mapTableTPDO3); if (retVal != RET_OK) { return(retVal); } CO_HANDLE_WATCHDOG /* initialize TPDO 4 */ - retVal = coPdoTransmitInit(4u, od_const_u8[5], od_const_u16[0], od_const_u16[3], od_const_u8[0], &mapTableTPDO4); + retVal = coPdoTransmitInit(4u, od_const_u8[6], od_const_u16[0], od_const_u16[1], od_const_u8[0], &mapTableTPDO4); if (retVal != RET_OK) { return(retVal); } CO_HANDLE_WATCHDOG /* initialize TPDO 5 */ - retVal = coPdoTransmitInit(5u, od_const_u8[5], od_const_u16[0], od_const_u16[3], od_const_u8[0], &mapTableTPDO5); + retVal = coPdoTransmitInit(5u, od_const_u8[6], od_const_u16[0], od_const_u16[1], od_const_u8[0], &mapTableTPDO5); if (retVal != RET_OK) { return(retVal); } CO_HANDLE_WATCHDOG /* initialize RPDO 1 */ - retVal = coPdoReceiveInit(1u, od_const_u8[5], 0u, 0u, &mapTableRPDO0); + retVal = coPdoReceiveInit(1u, od_const_u8[6], 0u, 0u, &mapTableRPDO0); if (retVal != RET_OK) { return(retVal); } CO_HANDLE_WATCHDOG /* initialize RPDO 2 */ - retVal = coPdoReceiveInit(2u, od_const_u8[5], 0u, 0u, &mapTableRPDO1); + retVal = coPdoReceiveInit(2u, od_const_u8[6], 0u, 0u, &mapTableRPDO1); if (retVal != RET_OK) { return(retVal); } CO_HANDLE_WATCHDOG /* initialize RPDO 3 */ - retVal = coPdoReceiveInit(3u, od_const_u8[5], 0u, 0u, &mapTableRPDO2); + retVal = coPdoReceiveInit(3u, od_const_u8[6], 0u, 0u, &mapTableRPDO2); if (retVal != RET_OK) { return(retVal); } @@ -648,6 +847,150 @@ 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; diff --git a/EnduranceTestBench/scheduler/sdl.c b/EnduranceTestBench/scheduler/sdl.c index 86ef737..37306d3 100644 --- a/EnduranceTestBench/scheduler/sdl.c +++ b/EnduranceTestBench/scheduler/sdl.c @@ -51,6 +51,15 @@ #define SDL_SDO_CLIENT_COB 0x1280 #define SDL_SDO_CLIENT_TO_SERVER_COB 0x600 #define SDL_SDO_SERVER_TO_CLIENT_COB 0x580 + + +#define TEST_BENCH_MAX_RETRY_CNT 5u +#define TEST_BENCH_TIMEOUT 1000u +#define TEST_BENCH_LSS_NODE_COUNT 20u +#define TEST_BENCH_POSITION_SETPOINT_INDEX 0x6002 +#define TEST_BENCH_POSITION_SETPOINT_SUB_INDEX 0x0 +#define TEST_BENCH_POSITION_FEEDBACK_INDEX 0x6004 +#define TEST_BENCH_POSITION_FEEDBACK_SUB_INDEX 0x0 /****************************************************************************** * Type Declarations ******************************************************************************/ @@ -62,6 +71,16 @@ typedef struct uint32 serialNbr_u32; uint8 nodeId_u8; } SdlLssNodeInfo_t; + +typedef enum +{ + TEST_BENCH_STARTUP, + TEST_BENCH_IDLE, + TEST_BENCH_WRITE_REQUEST, + TEST_BENCH_WAIT_FOR_FEEDBACK, + TEST_BENCH_DELAY_BEFORE_NEXT +} SdlTestBenchState_en; + /****************************************************************************** * Global Declarations ******************************************************************************/ @@ -94,6 +113,9 @@ static const SdlLssNodeInfo_t nodeLookupTable_gast[SDL_LSS_NODE_COUNT] = {0x319, 0x4d2, 0x1, 0x14, 0x18} }; static CO_NMT_STATE_T nodeNMTState_gaen[SDL_LSS_NODE_COUNT]; +static SdlTestBenchState_en testBenchState_en = TEST_BENCH_IDLE; +static uint8 targetPositions_gau8[SDL_LSS_NODE_COUNT]; +static uint8 currentNode_gu8 = 0u; /****************************************************************************** * Static function Declarations ******************************************************************************/ @@ -144,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); @@ -158,9 +180,9 @@ static void SdlInitCanopen(void) 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); + retval = coNmtStateReq(SDL_PU_MASTER_NODE_ID, CO_NMT_STATE_OPERATIONAL, CO_TRUE); } @@ -528,89 +550,201 @@ static RET_T SdlLssSetSdoCobID(uint8 sdoNr_u8, uint8 nodeId_u8) * @return void * */ -static void SdlEnduranceTestBenchRun(void) +void SdlEnduranceTestBenchRun(void) { - 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; + 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; - if(startTime_u64 == 0uLL) + HalSystemGetRunTimeMs(¤tTime_u64); + + if (startTime_u64 == 0uLL) + { + HalSystemGetRunTimeMs(&startTime_u64); + testBenchState_en = TEST_BENCH_STARTUP; + } + + switch (testBenchState_en) + { + case TEST_BENCH_STARTUP: { - HalSystemGetRunTimeMs(&startTime_u64); - srand(startTime_u64); - } - HalSystemGetRunTimeMs(¤tTime_u64); - if(currentTime_u64 - startTime_u64 <= SDL_TEST_BENCH_STARTUP_TIMEOUT) - { - if(alternate_u8 == 0u) + uint8 max_u8 = NMS_UINT8_MAX; /* Fully open (255) */ + uint8 min_u8 = 0u; /* Fully closed (0) */ + + if ((currentTime_u64 - startTime_u64) < 5000uLL) { - for (uint8 i_u8 = 0u; i_u8 < SDL_LSS_NODE_COUNT / 2; i_u8++) + /* First 5 seconds: First 10 open, rest closed */ + for (uint8 i_u8 = 0u; i_u8 < TEST_BENCH_LSS_NODE_COUNT / 2; i_u8++) { - 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); + targetPositions_gau8[i_u8] = (i_u8 < 10u) ? max_u8 : min_u8; } - for (uint8 i_u8 = 10u; i_u8 < SDL_LSS_NODE_COUNT; i_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++) { - 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); + targetPositions_gau8[i_u8] = (i_u8 < 10) ? min_u8 : max_u8; } } 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_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_u8), sizeof(max_u8), CO_FALSE, SDL_TEST_BENCH_SDO_TIMEOUT); - } + /* After 10 seconds, move to endurance test */ + batchCompleted_u8 = 1u; + testBenchState_en = TEST_BENCH_IDLE; } - uint8 readPos_u8 = 0u; - bool allMotorsReached_b = false; - while (!allMotorsReached_b) + 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) { - allMotorsReached_b = true; /* Assume all motors have reached the position */ - for (uint8 i_u8 = 0u; i_u8 < SDL_LSS_NODE_COUNT; i_u8++) + 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) { - 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) + retries_u8 = 0; + testBenchState_en = TEST_BENCH_WAIT_FOR_FEEDBACK; + } + else if (retVal_en == RET_SERVICE_BUSY) + { + retries_u8++; + if (retries_u8 < 5u) { - 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 */ - } + printf("SDO Busy for node %d, retrying...\n", currentNode_gu8 + 1); } else { - 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 */ - } + 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; } } } - alternate_u8 = !alternate_u8; - } - else - { - for (uint8 i_u8 = 0u; i_u8 < SDL_LSS_NODE_COUNT; i_u8++) + else { - 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); + 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; + + } }