From 9dff4f9c773a3a5e507e2f66ffbfd41e794e1090 Mon Sep 17 00:00:00 2001 From: Josh Polansky Date: Tue, 27 Aug 2024 11:34:15 -0700 Subject: [PATCH 1/7] Add AS 6 project unconverted --- example/As6Project/AsProject.apj | 13 + example/As6Project/Logical/Global.typ | 4 + example/As6Project/Logical/Global.var | 8 + .../Logical/Libraries/Loupe/Package.pkg | 7 + .../Logical/Libraries/Loupe/tlsf/ANSIC.lby | 5 + .../Loupe/tlsf/SG4/Arm/tlsf-impl.c.o | Bin 0 -> 38708 bytes .../Libraries/Loupe/tlsf/SG4/tlsf-impl.c.o | Bin 0 -> 36924 bytes .../Logical/Libraries/Loupe/tlsf/package.json | 25 + .../As6Project/Logical/Libraries/Package.pkg | 8 + .../Logical/Libraries/_AS/AsBrStr/AsBrStr.fun | 80 +++ .../Logical/Libraries/_AS/AsBrStr/AsBrStr.typ | 4 + .../Logical/Libraries/_AS/AsBrStr/AsBrStr.var | 4 + .../Libraries/_AS/AsBrStr/SG3/AsBrStr.h | 39 ++ .../Libraries/_AS/AsBrStr/SG4/AsBrStr.h | 39 ++ .../Libraries/_AS/AsBrStr/SGC/AsBrStr.h | 39 ++ .../Logical/Libraries/_AS/AsBrStr/binary.lby | 9 + .../Libraries/_AS/AsBrWStr/AsBrWStr.fun | 71 +++ .../Libraries/_AS/AsBrWStr/AsBrWStr.typ | 4 + .../Libraries/_AS/AsBrWStr/AsBrWStr.var | 5 + .../Libraries/_AS/AsBrWStr/SG3/AsBrWStr.h | 50 ++ .../Libraries/_AS/AsBrWStr/SG4/AsBrWStr.h | 52 ++ .../Libraries/_AS/AsBrWStr/SGC/AsBrWStr.h | 50 ++ .../Logical/Libraries/_AS/AsBrWStr/binary.lby | 9 + .../Logical/Libraries/_AS/Package.pkg | 10 + .../Logical/Libraries/_AS/astime/SG3/astime.h | 130 +++++ .../Logical/Libraries/_AS/astime/SG4/astime.h | 365 +++++++++++++ .../Logical/Libraries/_AS/astime/SGC/astime.h | 130 +++++ .../Logical/Libraries/_AS/astime/astime.fun | 333 ++++++++++++ .../Logical/Libraries/_AS/astime/astime.typ | 22 + .../Logical/Libraries/_AS/astime/astime.var | 18 + .../Logical/Libraries/_AS/astime/binary.lby | 12 + .../Libraries/_AS/runtime/SG3/runtime.h | 80 +++ .../Libraries/_AS/runtime/SG4/runtime.h | 489 ++++++++++++++++++ .../Libraries/_AS/runtime/SGC/runtime.h | 80 +++ .../Logical/Libraries/_AS/runtime/binary.lby | 9 + .../Logical/Libraries/_AS/runtime/runtime.fun | 282 ++++++++++ .../Logical/Libraries/_AS/runtime/runtime.typ | 156 ++++++ .../Logical/Libraries/_AS/runtime/runtime.var | 35 ++ example/As6Project/Logical/Package.pkg | 10 + .../Logical/Programs/Default/ANSIC.prg | 9 + .../Logical/Programs/Default/Main.c | 37 ++ .../Logical/Programs/Default/Types.typ | 4 + .../Logical/Programs/Default/Variables.var | 9 + .../As6Project/Logical/Programs/Package.pkg | 7 + example/As6Project/Physical/ARM/Config.pkg | 11 + example/As6Project/Physical/ARM/Hardware.hw | 30 ++ example/As6Project/Physical/ARM/Hardware.hwl | 15 + example/As6Project/Physical/ARM/Hardware.jpg | Bin 0 -> 229896 bytes .../CertificateRevocationLists/Package.pkg | 5 + .../CertificateSigningRequests/Package.pkg | 5 + .../OwnCertificates/Certificates/Package.pkg | 5 + .../OwnCertificates/Package.pkg | 8 + .../OwnCertificates/PrivateKeys/Package.pkg | 5 + .../CertificateStore/Package.pkg | 10 + .../ThirdPartyCertificates/Package.pkg | 7 + .../SoftwareCertificates/Package.pkg | 5 + .../AccessAndSecurity/Firewall/Package.pkg | 7 + .../Firewall/Rules.firewallRules | 6 + .../X20CP0410/AccessAndSecurity/Package.pkg | 10 + .../TransportLayerSecurity/Package.pkg | 5 + .../UserRoleSystem/Package.pkg | 8 + .../UserRoleSystem/Role.role | 10 + .../UserRoleSystem/User.user | 10 + .../X20CP0410/Connectivity/OpcUA/Package.pkg | 5 + .../ARM/X20CP0410/Connectivity/Package.pkg | 7 + .../As6Project/Physical/ARM/X20CP0410/Cpu.per | 4 + .../As6Project/Physical/ARM/X20CP0410/Cpu.pkg | 28 + .../As6Project/Physical/ARM/X20CP0410/Cpu.sw | 31 ++ .../Physical/ARM/X20CP0410/IoMap.iom | 4 + .../Physical/ARM/X20CP0410/PvMap.vvm | 4 + .../ARM/X20CP0410/TextSystem/Package.pkg | 5 + .../ARM/X20CP0410/UnitSystem/Package.pkg | 5 + .../ARM/X20CP0410/mappCockpit/Package.pkg | 5 + .../ARM/X20CP0410/mappControl/Package.pkg | 5 + .../ARM/X20CP0410/mappMotion/Package.pkg | 5 + .../ARM/X20CP0410/mappSafety/Package.pkg | 8 + .../mappSafety/SafeApplication/Package.pkg | 5 + .../mappSafety/SafeCommissioning/Package.pkg | 5 + .../ARM/X20CP0410/mappServices/Package.pkg | 5 + .../ARM/X20CP0410/mappView/Package.pkg | 5 + .../ARM/X20CP0410/mappVision/Package.pkg | 5 + .../CertificateRevocationLists/Package.pkg | 5 + .../CertificateSigningRequests/Package.pkg | 5 + .../OwnCertificates/Certificates/Package.pkg | 5 + .../OwnCertificates/Package.pkg | 8 + .../OwnCertificates/PrivateKeys/Package.pkg | 5 + .../CertificateStore/Package.pkg | 10 + .../ThirdPartyCertificates/Package.pkg | 7 + .../SoftwareCertificates/Package.pkg | 5 + .../AccessAndSecurity/Firewall/Package.pkg | 7 + .../Firewall/Rules.firewallRules | 5 + .../AccessAndSecurity/Package.pkg | 10 + .../TransportLayerSecurity/Package.pkg | 5 + .../UserRoleSystem/Package.pkg | 8 + .../UserRoleSystem/Role.role | 11 + .../UserRoleSystem/User.user | 9 + .../Connectivity/OpcUA/Package.pkg | 5 + .../5PC900_TS17_04/Connectivity/Package.pkg | 7 + .../Physical/Intel/5PC900_TS17_04/Cpu.per | 4 + .../Physical/Intel/5PC900_TS17_04/Cpu.pkg | 27 + .../Physical/Intel/5PC900_TS17_04/Cpu.sw | 41 ++ .../Physical/Intel/5PC900_TS17_04/IoMap.iom | 4 + .../Physical/Intel/5PC900_TS17_04/PvMap.vvm | 4 + .../5PC900_TS17_04/TextSystem/Package.pkg | 5 + .../5PC900_TS17_04/UnitSystem/Package.pkg | 5 + .../5PC900_TS17_04/mappCockpit/Package.pkg | 5 + .../5PC900_TS17_04/mappControl/Package.pkg | 5 + .../5PC900_TS17_04/mappMotion/Package.pkg | 5 + .../5PC900_TS17_04/mappServices/Package.pkg | 5 + .../Intel/5PC900_TS17_04/mappView/Package.pkg | 5 + .../5PC900_TS17_04/mappVision/Package.pkg | 5 + example/As6Project/Physical/Intel/Config.pkg | 11 + example/As6Project/Physical/Intel/Hardware.hw | 68 +++ .../As6Project/Physical/Intel/Hardware.hwl | 13 + .../As6Project/Physical/Intel/Hardware.jpg | Bin 0 -> 14019 bytes example/As6Project/Physical/Physical.pkg | 8 + example/As6Project/README.md | 3 + example/As6Project/package-lock.json | 29 ++ example/As6Project/package.json | 22 + 119 files changed, 3446 insertions(+) create mode 100644 example/As6Project/AsProject.apj create mode 100644 example/As6Project/Logical/Global.typ create mode 100644 example/As6Project/Logical/Global.var create mode 100644 example/As6Project/Logical/Libraries/Loupe/Package.pkg create mode 100644 example/As6Project/Logical/Libraries/Loupe/tlsf/ANSIC.lby create mode 100644 example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/Arm/tlsf-impl.c.o create mode 100644 example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/tlsf-impl.c.o create mode 100644 example/As6Project/Logical/Libraries/Loupe/tlsf/package.json create mode 100644 example/As6Project/Logical/Libraries/Package.pkg create mode 100644 example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.fun create mode 100644 example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.typ create mode 100644 example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.var create mode 100644 example/As6Project/Logical/Libraries/_AS/AsBrStr/SG3/AsBrStr.h create mode 100644 example/As6Project/Logical/Libraries/_AS/AsBrStr/SG4/AsBrStr.h create mode 100644 example/As6Project/Logical/Libraries/_AS/AsBrStr/SGC/AsBrStr.h create mode 100644 example/As6Project/Logical/Libraries/_AS/AsBrStr/binary.lby create mode 100644 example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.fun create mode 100644 example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.typ create mode 100644 example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.var create mode 100644 example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG3/AsBrWStr.h create mode 100644 example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG4/AsBrWStr.h create mode 100644 example/As6Project/Logical/Libraries/_AS/AsBrWStr/SGC/AsBrWStr.h create mode 100644 example/As6Project/Logical/Libraries/_AS/AsBrWStr/binary.lby create mode 100644 example/As6Project/Logical/Libraries/_AS/Package.pkg create mode 100644 example/As6Project/Logical/Libraries/_AS/astime/SG3/astime.h create mode 100644 example/As6Project/Logical/Libraries/_AS/astime/SG4/astime.h create mode 100644 example/As6Project/Logical/Libraries/_AS/astime/SGC/astime.h create mode 100644 example/As6Project/Logical/Libraries/_AS/astime/astime.fun create mode 100644 example/As6Project/Logical/Libraries/_AS/astime/astime.typ create mode 100644 example/As6Project/Logical/Libraries/_AS/astime/astime.var create mode 100644 example/As6Project/Logical/Libraries/_AS/astime/binary.lby create mode 100644 example/As6Project/Logical/Libraries/_AS/runtime/SG3/runtime.h create mode 100644 example/As6Project/Logical/Libraries/_AS/runtime/SG4/runtime.h create mode 100644 example/As6Project/Logical/Libraries/_AS/runtime/SGC/runtime.h create mode 100644 example/As6Project/Logical/Libraries/_AS/runtime/binary.lby create mode 100644 example/As6Project/Logical/Libraries/_AS/runtime/runtime.fun create mode 100644 example/As6Project/Logical/Libraries/_AS/runtime/runtime.typ create mode 100644 example/As6Project/Logical/Libraries/_AS/runtime/runtime.var create mode 100644 example/As6Project/Logical/Package.pkg create mode 100644 example/As6Project/Logical/Programs/Default/ANSIC.prg create mode 100644 example/As6Project/Logical/Programs/Default/Main.c create mode 100644 example/As6Project/Logical/Programs/Default/Types.typ create mode 100644 example/As6Project/Logical/Programs/Default/Variables.var create mode 100644 example/As6Project/Logical/Programs/Package.pkg create mode 100644 example/As6Project/Physical/ARM/Config.pkg create mode 100644 example/As6Project/Physical/ARM/Hardware.hw create mode 100644 example/As6Project/Physical/ARM/Hardware.hwl create mode 100644 example/As6Project/Physical/ARM/Hardware.jpg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/CertificateRevocationLists/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/CertificateSigningRequests/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/Certificates/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/PrivateKeys/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/SoftwareCertificates/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Firewall/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Firewall/Rules.firewallRules create mode 100644 example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/TransportLayerSecurity/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Role.role create mode 100644 example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/User.user create mode 100644 example/As6Project/Physical/ARM/X20CP0410/Connectivity/OpcUA/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/Connectivity/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/Cpu.per create mode 100644 example/As6Project/Physical/ARM/X20CP0410/Cpu.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/Cpu.sw create mode 100644 example/As6Project/Physical/ARM/X20CP0410/IoMap.iom create mode 100644 example/As6Project/Physical/ARM/X20CP0410/PvMap.vvm create mode 100644 example/As6Project/Physical/ARM/X20CP0410/TextSystem/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/UnitSystem/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/mappCockpit/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/mappControl/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/mappMotion/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/mappSafety/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/mappSafety/SafeApplication/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/mappSafety/SafeCommissioning/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/mappServices/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/mappView/Package.pkg create mode 100644 example/As6Project/Physical/ARM/X20CP0410/mappVision/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/CertificateRevocationLists/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/CertificateSigningRequests/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/Certificates/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/PrivateKeys/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/SoftwareCertificates/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Firewall/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Firewall/Rules.firewallRules create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/TransportLayerSecurity/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Role.role create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/User.user create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/OpcUA/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.per create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.sw create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/IoMap.iom create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/PvMap.vvm create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/TextSystem/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/UnitSystem/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/mappCockpit/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/mappControl/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/mappMotion/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/mappServices/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/mappView/Package.pkg create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/mappVision/Package.pkg create mode 100644 example/As6Project/Physical/Intel/Config.pkg create mode 100644 example/As6Project/Physical/Intel/Hardware.hw create mode 100644 example/As6Project/Physical/Intel/Hardware.hwl create mode 100644 example/As6Project/Physical/Intel/Hardware.jpg create mode 100644 example/As6Project/Physical/Physical.pkg create mode 100644 example/As6Project/README.md create mode 100644 example/As6Project/package-lock.json create mode 100644 example/As6Project/package.json diff --git a/example/As6Project/AsProject.apj b/example/As6Project/AsProject.apj new file mode 100644 index 0000000..ec5b008 --- /dev/null +++ b/example/As6Project/AsProject.apj @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/example/As6Project/Logical/Global.typ b/example/As6Project/Logical/Global.typ new file mode 100644 index 0000000..5dc40af --- /dev/null +++ b/example/As6Project/Logical/Global.typ @@ -0,0 +1,4 @@ + +TYPE + +END_TYPE diff --git a/example/As6Project/Logical/Global.var b/example/As6Project/Logical/Global.var new file mode 100644 index 0000000..3e8a206 --- /dev/null +++ b/example/As6Project/Logical/Global.var @@ -0,0 +1,8 @@ + +VAR + +END_VAR + +VAR CONSTANT + +END_VAR diff --git a/example/As6Project/Logical/Libraries/Loupe/Package.pkg b/example/As6Project/Logical/Libraries/Loupe/Package.pkg new file mode 100644 index 0000000..09c14a0 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/Package.pkg @@ -0,0 +1,7 @@ + + + + ..\..\src\Ar\stringext\ANSIC.lby + tlsf + + diff --git a/example/As6Project/Logical/Libraries/Loupe/tlsf/ANSIC.lby b/example/As6Project/Logical/Libraries/Loupe/tlsf/ANSIC.lby new file mode 100644 index 0000000..fecc33a --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/tlsf/ANSIC.lby @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/Arm/tlsf-impl.c.o b/example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/Arm/tlsf-impl.c.o new file mode 100644 index 0000000000000000000000000000000000000000..1e22aabfe42dcd8b9a11e4d7864d2182ade55d93 GIT binary patch literal 38708 zcmdsg4R}=5x$fSxC&NGjj)F=6?Z5;Nkd#1T5)^9eFi9pqIQemAf`FJH zi7i#HB}z}Zm6jaqIR{&MN-J%ta4c48vBh3aOAA`sBAAwXI6e4N4_d1Ceb@fh%+3Jb zI`=&HdG49#$-L|5Ti@UMzO~l=8R#jkm~Wb9$dHd|Of^hh0iJpsUmnAlrP`(%ml~HC zBlixxW*o`;qkBii@vMW3j*m4m2aSS(6JrW82geqSNBMF5H5|8Y8h9;$zp;L_`5zl} z`FoG4et&O*Zj687amzPw!ZHS4`{2V5|IG(pKJqYXPC$0 zcNhG8&@AXZ;V$^$pik;9T?hR~=`{=fnG2f=efR?{?Xnh!(*-s9ByySEg>x5dYYfsfyxIhX^T z{AiyFoC@^9@3|=FqI?m`!~8FtVA=A|JH~!D_$fMn?{QTZovecO#|ngp)-wn8SOxPC zGmr;91u~v!_yK%1r4Br_+gY9^ z^wf1M`Wav3Pt=?-KL&m8Bd%aQXJa`Vn8ss;| z4}R%`bJp*1jG^g>vptS63BQU?!=aPyucS__dkTKRb@%v(eoOh^<9}grm4gp+h;o@j zw0*gwFOjPb8O%kSXR+d`>fotz)ZvdYprdb`d(BB~Lc8!6$6p=(oW9q4;0}lUuM)9STuQtE=(@4w$GW zf^n9A{V~NK>yehz37Ssy#es2$9JXmW@f10A^liagTXa_j~-s z@Dcrxlpg^vm;V_2;7aJmdE~xGpB4b=Q|^leYV6}`pUm*DKkl0O_#fyuvN+SJ+Agu12%K7 ze&7kye3#@hUW}D_+>)`!y?VAfe%u64Tdi)u=$oX<(Pl4}`e<)|{|B!W= z?WUuh=Oxl}9bq1Eo-Qp|ICyEnor)jg`keKgxmSqXGmviwZje0^b6}v|GO97>0~2u_ zGL!x0T>Bd2>u2rr-$(JCAU5drD=4tn5*;U_%5vn{ILt;nB$5+a!kwF z1DZYP+Y8+5ki#}DXK#v}ZGPIe-sS<`$~M@Vn&a9o-On7i{g9Nu3%qoWYuy+FtDp~k zx)w;Et^=+`JM(K5Q0MqM>VoTBXAbp&ma($|*vB!F<19adwnu;)fg6F^uWZvfu+d?! z;tyMuY~SO9>p-VD|V~$fl=J;CCEj7nCfo>CMHUl?PuH-n|v<{mcIw(F`2k_N7 zem;L}0naVqGXNZL@MfFlJ>cN|aqZgxKF%E1`Qbx;oB`jnu$lRv1z&L<*SWY3uCv#{ zi+lfY#%I&8FV%mvi)X5jq>(c-{Y+VBz$XLwZ(+Y21Kw7_1IPCHGY9v>{(b0s;Tr6t z=-UrkUNi0k{*ZgYM6`jPYc%6$AIhKbna53I;DqmD?2*1>ubJ3)xF4Ot80xEIj(T2( zwN1DCApZbl9)!#T4w(l<<^hMygASPoK0+pasIL!nIdLtE>mRl`uYdfIooK^#JJ&^C z*X5u+2ecPK=O=JhVcCnljP0c7wUkY}9`_1tTGQWqVk-H=c0Z8UO7sKA9s&*X@(7T5 zc@%gE?Of-)ID;HPS+8?!*K6ES)!sXJ1?G+I$1v^~@O9wpK%E0@)9cRbhJBr(&oD=* z2l7D4Kpt?tIfORnxkAg)G+c9Ro$PBs?b8d!*u=;GK-=l-3)0|h!5DzO9~rCk8?Wy! z#Am7x@rRtaP#m8|OuYmDoQ6I+j^6=K#_?&Oj^lU8N8Cn_MlQd>_+gy75R>!;6NL&v}lz19=CzHbCC&W~Q3JTBu6wlVJY+C`lh=T7-LHrU4U zN9EgC$QcVd#YfIH|A2VVZM^3<0W=$sBh1Z5fXulG7^8EA{?NI?cAYECGtL=vh3(8s z#$+xq7pQZEZ8}$SjiI^X$2>Aulnlw0321ZXik72km@BqU_PydPjH4gjVi)UU!NZI7 zl5tI2^|i33VVyKtprQXZ_^{`q&h>N1dXGHgc%IS9u$FExY&y1GXz#cnFUd#j3F9bh z19+tF2?dDxS@2&0`gAVwe5>w(0(CCU@+EVr0OcXM>^K3R`&V|g` z4w-XB=4^+|xel4LKSCybqhnN;b&R@kE@GQ=PvF|_jBk~P602XsoT@nId_hO&*h179 zwl`wdi_AKQ%;gT5bsr&9$Esd4^xCRo4soku6m!irlXfv~?LK=xoohB}8lfBGvjxcb zi~t*lxNY`s5?mPsbVLf_y;ZgKqTug=l;}`wViSb#onJp%4C92Yqz> z^?@hniPsJ~{`$yA&LHbh9uj|Y263*9tH5_H_^xvBT`PQ7Iry%1@LhEQzVuaMt#ibY zb6vx8P&`+$&$LAPh3gm33?FsxZ!gXp`wU!9_;9v|&Id4-eD?vlH{y&lZoibd2l7n6 z-$<@$Udz6Z;Q>16#*uDclJ3L@IHQm!&nP@MaNnm*MCY2$Tp%BP?@^Vp*EsJz?w9d; z9M4GmVK4V9?zhWK<01Nt{k;D|JM?~_$MCGN2f0-M+zaI1nTs(x#|lu^ImULKW3yDd zonvgDjd8Pq+z00Zb&j!3=h)n&AJo0d0_e&dQ!*sSa?$3@F)c^aFvo12>>P8RU3`$m zx}6L5*@bP+vx}~iMxR~w_;6nYb;e8T*@g7UHl0c{$E5l(h$Z z_1R@CU~Vj23#jsu4p+7h$7o>6QIUhwsUvkg65DlL#@w)dy@g70!b;3Up z=%eGk6FeF35ulFuPV$jGCxY^jc$YoL8Pkp6%QFM_e$AKrIr(xA*L+(Xd>b#omvLps ziFI7X7UZcm*iB>%e-8J=R19Ix^g7#O+UIVy&gz)QeObi=>&bG{n4`z=tP_X6jJs7p z#vS*}IQZ+hTZOWYJGSe%TdUgbxMTY|j9UlfUfu`PamO|tcYVgtxZ^&|xKlDD?&4^3 z#+{a5t=l^htGnQzo$!gyk6o~r`LPqI^JAAUnIAh* z9+DsDS+}=??+)6= zAuQ4}WC)8i4XKKDG;vCzETn77P$p>_Gn7eM=FE#O3dLJsj$KI4oKz-hnUl&SO>=7E zQDqGS0AmeR?M7!D%V42dAZWX;lUE#&>#(Cx@q{dUAML$}i{& zMH`{M!t@Ln$|5ZzhO$V@kg|BZ6Lt{NGsDRsEhC%^(lVjE5(bo4rl-ChoR;c(aGGit zH8d#Af$1vmWRa!`P8MkzQqmgY$)miIg>+3B$|Ox=hB8UhoZ8m5urh~*bj=ycBu#UM zGD*vvMd3Esg75SUNe)lTgyitFl&=Xjh2yKCzgCc{*pSXV3}ujp0Ye$2VM0-?wzvuo#CJLdIESa9zH@k5$}cIQ^7u|q z`Q-4llur&%Px+d8RK8|jn#w1Jr>A^kcv{LYZHqv8e5a>;a(G(GCx@q{{HI!ZzQcEV z$|r}XrF?RD8p_v4W2<9vtXjH|jtP2fl1UndoXaE)bBa6KSB9hU8G`8;lgc6uQ&L%^ zVMs|R9;&QgF+(sNLsD6!VMr>AGz@86*%S?7R})OfkW?0F7?R2&4MXPRrY9~&Y)Hq9 zp$yV6Vkm<&OsMGS=tOK*&(MYZ{}Lu?n4%R(YLdns;zhN!t2=SqSumYBNoA3SDXA>d za4Bw!M?>+B=nP#*#}qv_$s`S9&SjE@Inl0mb&wTI$Cy+WX_%7AA`L@g@lbmsZ$jxp zI;QBcNhWC+b1su~%vl`^Mq2AWlRc-bWBNMk%l3>J${G2r^`Y*rku+p4P(w_ z@-fX>R68#eYi-~nW*0uLDSBLz!N)Y?Tm~Q81gz$FFX@B^cH!fjkjmg=n~=)jd?tJW zzox(on)tZQZ2Xcm3%^)XpT21}y4)Ej@rxeo4N$p`T#H7Rdss7mNA7lKw6@2Mj5%!b zX3WPgQe0m5r$FnO587c%i_l^Hh+_*^*u(g1cI%%&Xcetxi|PF-7!6yBvezozM)(rM zTMJ%6(eS>6FRP4Yw=rxi82PM)ta&HlF|D=OCUR3i)l?D&{a24-dCD8rEGb zigKS`h_V~9E(MNo`|)l4BNYm=c#+#`egf#bp6ps!beR_!z9&f0YF9@Y-ZyAXgqpa# zQ}K`JSZyp@hRZd~L^acGbv}=wStseZd#0in9BBeMFJ<;0x$;nVwg{-Q~*oDHyxF!+s88s|!8u zVT>BuYSUxrfD#X!Tsi*dF#K z^cd^OtA`QZ-V8L)V9^*JyxZ^;kfGcACn#W-z232ja+VkGDoeX>cyN{Bnc0GoW8l1t zfFs@bT7^G}v|$IqJjZk0n`rXpQP2&xy6ebgwk_#;mTzR)>sz7|EzB0+G!3B@aQFji%?$9`aKzt7FmdMySDElKMN2*&=B zV@tewoSh@2ukd=&;(28)bguF)<@_JL2+>jNT}+x|@1cFE_c7{roY_$4{StYe;Mhjv zG6KmjS6?*h@(M`1obB-DIHm==#=Z|rbKIWUE_P?1K(A+xOHpMPpv7~m>srWgXFo&l z*cET~X^OHdS=r5ufFd=?sFBPR$-0{vex5TfWb#y<37Xb?{l4j zkYlcKqsin!R}K13x!}BNG-K7P!jKG>N4Ob~%H_1q;c`_KmoHP4jrhLovoLG>P)auG z$$6AC9L3m5a)X?2qd_f)j2x9lF1vn8*RisioPsON9|OkU1w*nt6HTu9*(z-Vs%&Jh zrkiq1ig9QEmex-;In&%zY4->>d5+%!y+(O%HrvVI1y1`ds%&IGgl^BRs^ZBm+^uM**noiL*{x*VtSZ~GzshKDQI#Fpo2gr? zs_e?1PO=rMvNt;iN_p;9-1ZwI86^~{9FlFZX!+081f(3oEq6^|>7k#s8KTgY(wvTW#3qQe}(4o0VHP6NONQOrP3Tm{=@PCe~{?)}r#UG}a4_ud` zJkh-Zvb?#|q5P!D7-Iz1qjy^<@O$X>bSUsJ?D$$J@JqngLxIOYussy0f&ae|3cLvh z-wp-3K>184@F-wsD6kVV@SRZLcOdz0DDVZ4d@mI6pmA3yP>9CwhXN0v@x@Re1eJaa z*06kkDDd|X`x0uP{0VB1_tQ||bEq8%1%80q%b`FvYCj7FWCcz{Oi1_z6fl>jQHj=$`t( ztr!=r4~z!0Sbd-ojq&=xT-euDA9w|QE9(PqK+h-Z0~V(4tM!4EpnR%6@E5>8)CXK( zcBnoO#emrjfoyC@H#P*W$ACEvfktR{Q-fi-Fh}0|?*p@(w@@@|%&8ch0d|HlxvkSM z51AEcw;Qfn1QpD0S=?YwUu_thKxA&&fyODX!zlD{u&cji3Wq1EjZ=OLelpJ0zkD*! z^yV{)jjKOmT(uF3noCqYf@_yPO4$FhWROr2VUruGaBwmRO@oeX^-xWOm2!8 z=A9OoPpf}#_vDzPx~Dtm+wibir;WdQ+XUEfC8C~Ah*^ihdD=^8bM==^dro1+w4Dm8 zrr!>G_kgy5v>E2KCe&U1CAqpSuR}EyqWkJB6y1JoXQYi=ACT`Pw81ky)5fa8o*tWQ zRg!G-s07&#O|}zc)N&KzRB5^1T2C@+Y4tzVqtvwexAiDJt^VyjO3?!#cPeW25A@{f zMy09Mzomz&&Vn}YOu`w5s`gq>lldo=hL7}2D^!Jz(1BzXfdtvXB-tiSwpmoo$`Mr` zwel`XsJc$8+NV|BV5?dJ@}a7p?atMWqUxD$s!FduGFiO(d8?MpZLgm07O%e3ZIc;S zCCKhelAY9Kr$9!pRv`S9SGQP4lByo<7Ox)b7O%eEt-RU?@}a68>CV-SqUs@~D&4hx zs<`XR)`w(ndv#y8cy)ibF`Z;?q^ENJmn|VVph*sb7q0%W?p$@8nKoVJ$JsGhdAz7@ z`Fp(ZZ6}`HWA&esMAP+?l4yC7Xe~^od`YE?J%hx&9i% z)U{fB1=rO&6@@3&3C-&7v!hT~*U1Y0Mz=_K;TsE@K?Vc7@1x!6kxd|bx+`dZFYqukHbel7EjH~H(KcZZ@{Vi7u7BS^|u154cRwLzj zSASKmrc-{$SwOkn)nBNb*a9ZvbuXFNUfVqS4;+&D=SuX0UWtLC|4TBpLQT-}$qK{XWSJqG0ICGX3sp)7BkYS`72 z_l#;N0i&y);ZAp0T_E}~hb_tt45=wUN%ml&vaLRBa(gFJ+v-%vR6gH z6UyFe)dA)S<)rIi+LsmCb-3xPi!@kTIl*5sIs4bPx69*`I}?4oC*O49*$=YCXi=k=`$x42YW>>TORel~8nl8P=-dVvLQ&67`Mg3l6@W%5x5+@S~&hm)fX zxY{*szw=4aR1BOo2Gd|>+Ezb_ao6&GJ{mZyvxB@q&NSIRJIJeJyL|nFUeJs*gJ5u7 z5QdLZzQbps&d7O_yiw9;!JV@nj;=v@b zD&7>tlK2OTFm8O26MW3d=dgCjIL79=ZIpbBjnIYK-S{fa`?bZ>l%o4}lJ3`v?&dc@ zX8xGX7EdR0FnOwW(<;OK$qF__RTeIh4%^Eh^v_@rSa)gO~@5n^| zY&dE-s$QELt0OLg9J0y0+)R$iN{+!DKGQ58O-`dGLLl#nT{PN3>r2vRW{%9v$|T#1 z$<{C~QL1EURYr>?85B4sIc_#);?hfvDNz2hOU)_Swz$hPlzn3pJTj;RZdNI8fCmMQ zb5y})e8P4`JV6vyl`F(TRk<=b4!1Tbl+69&OE9;6IT8QlIozWSm^2l_CqQgK6(BGt zIl_hIX)>zxE*P+SRla#^wyiF$;^Y>N{kwTe)|8BdAtarOs$=BUSC}&u{nE^3O5tf4 z#!SU?y0ZrdvP{IzC0J$iW(h&Q-9me2IA~Qc6gV5O={fZqqTMz52qGFXCEKq?UYk@G zDWB{uA8q$vm$V#ceS=RM7kQoAB$Cjg$%C4YfZ-ApzjQ&w88JZ*0#<_ zK2~+yNRBr)hMV$R=%{2@m|c;MhP%;$EjWnxQo=F291Y`F?sk#%D8aeW_}zGmCyWXm zXk;j_TfcOfTW_;6y>nk_t}t9~bH;;Pt?}!(_O|r)_RX;N8tb29tEb8H;GzdBDh7JD zex|Rt#rk^BTML_87c4&Pop|_gGe6dgM*fV$Tdj-MKi}*vJbassYF*UZZ2h(S*;MLx zNp0;je%0KIv7^4yY)x3dbz#eAA8h%|-w!l5FS0(@y}qy4`m_1$VQV9byRAQ&>u0>X z)mo?8KQN!&ZGBd?|EIbB)qmOAXT5zt2R!V0_HFBZ6n9&FE)3ZHpeWK((cIiS<1@P} z?K-|)>+$8z=atE=tv$pmCtz)e9SzCIZU1*(9J-1qito#`mK?m+t_$m!sdqzF3oJ%OwJD1-c>(G5~v0!a?yK+n_;-OCP z!J+%Uf`TW};rSOHNyo7@~@dR)^e!}9w1?XiA% zpZ9f^tmoXWNfctCiIkSLmo4vZ{VFQv!Y6lE^kHV6Y;Hb0VEy2}w^F!&U$}FoEDm?G zdbd22XoixyF?K(%;-oIVg6C!LdRoD|E zOm~djP1)Xw71lH7$otXxUDvN&_a6z@^^5D?)Gdd>)!NFhW_+15K6CgsOi)Ej^P*;U zA=>cmjBm!EyZ6BX>)~_M`1ilv>_4qx&I=v<}PBvsvzUlcJ;^Y@%!#7fG_=VV@ zJM`3n@kly#Bwam{P9LeVq1ifdu33L4iln5&UTxOigjsvVtmlYK>65N8Zc(kh_ZUpabz*bq0YA7B~j4rM& zudOL9E?rz(T5Z&KH8q8k;w$HUGFZB_yrx#|Ou@EL1Y42;U7OoOksyeTu69&^ErcRb39iez0 zX=5Etan)oe08GncQ0CRcD|owp_06;Wc?eU+Z(c)7D2m$3)>vzOYos;4`sS8a9L(C$ z*4~j<-_;t4x1y4wLvwRuy+5xK%EhCt&CyV2OUxb+inXCoRbFhgA-R=%m>71NBg2C# zw3P2S0k$VPnwsEK9QNo^Oe*|+FH#x#)DVwG64R){p?Fy_oLA2yVz3@3KZIaMv>}YK zO|e9xhTFo?=5TvMGL$MR7a;N%6cyJZ=vA%;TicsD^b(;X5_wa*tO}DuRT6?#{1nyJ z78RG3mISFr<&xU-_a<7ogjC*MT0Os_@(zREN497wDx<2Au|+k>6lIzeSC3(GUrTqH1|#W)9_*YNM>VVrDS7 zG8E}@EEFo;b!X>wF@wPpY-vQQLj&jmZA1?!mRzowp17&QP`3TlrtC(92k|2(7>~t` zM(DBF2C!Ka4AnKo_izIyM1@=pVob%G4$;-Q99V^IH`2Ta0b%g1<415u+sB6oRDERh?K# zYq;|(ZLtqjl_Pe`7uS?x`L4%|L$X!;s$8#DOT>K z`;4w@uYrlNmX2s#odvXFDwpoSESK8aaB>u@mT;)iK4+Bk?=4bkF8{FD`}5QX)K7WI$6Ik!0F zrq#&WgnTSk<#3;}N~Ra*sYJK31xpi1l!)YB*45q>a|Cux<^0;JisFQCv5rH#m2sF0 z--cFk%L_)XpB1uqLalcL+~163N(fX-8FLT$bFU;-edKNxEM=kCA_i1~xTLgvae1v$ z?QV%R9wkZ4y9c)WhwjJiDmU-NoM7%$xFH7`V;#X3#3ekaJ#6pC&NGT~k$oPdhiKf8 zpmm^s-WNPM@ zFD`-j^4g+#6{W#>JggcxUWKD85oTbo?gu4YWKX;b3p;ob|A#q@7N%Z27}{HD5Dj{RQ&Pd z$L%#fXB$duU1>UqHLZR$Ih5A*u7fn8tA74Dl(r>7s(I??wL|G#Nu!{nrq$1mQ)ufF zOdYiP33m$ZN++%MtA5Bnly+5uRLj?I5)GxZp3O*5CUrfFXZ(EIErmAUeID8f9`^8+ z)D+s;p7YS^w_=CVx(XenMiCzT7$M#i#-lM5Jua^~+#F%wxJF%n)SXqSxQ#bI)a^ve zzVDi7vUu0l@v$6tz}ajW83tt~KbC>#cIt!Mx!`6Qlca8gX-t;-2A~TR*8o{&?6N+T zpWB#+c7Di@-|X*9sAVetDn?bmJ^md$(y%{vKVwMOIsTxdPW>1+_QxK76mzKS>}Ra# zI>(>EJnK69Iq$lzOGL{^D59DzBf&`Oc$Dh+SOy*sIX)Jwr9ACZJUw&tl7DI)kNg}T z%edGmb=1k{4*dBg|1WWwMte$s7wS5W+25PezXf%@Cb0jTtm9!;Baro%Qs|GPuJfJ! ze@f~1Ko^~3?7z$rpwu@Xb-f0#e>Unm&spd5a-B=8-;TP@ZPx2i*B|n`JEa~^so#gX z&Nq%%E4sc(lhb&fQ*Taa=FSfPZd`ha-E3JKwcO^5R+DNW-}V zqlfE3k%6?IU|L<(6wK#r%!;+plVjpNKrh z^o&OWPQ`jKK42IXL@e<9(T{}%W36DH;1TwNz6J40`UAu%hOr!JI{s?B#6+Bi_##fn z3zI?2|v*By>K zCiuFb`dKyF`BM*$=P&ta$E*>+0>juM$Twcc&%}CxeT5hi#N%?sKSG4uO~lD~CkD#} z$FCFY#B#!M?+8{QVOT$d7vf0Ab&tOZ$-%pJtREd~BVPn!eFye5`tJx4{y27}-F_N# z#r~EY8@EldaTRnS{Q)92f+IwXD?}UHBShEy(DeWf%}=xW+** zX$KoccfDY_V3pt!!R3N&f>A-fhe$bnf*S?7_ObnG!S4t@FL+Y$ZNZBXpQPuSMw}>k zqhPgQSdeQG>3Rh}FZdO~uM2)xaG&763jRj$kAi;|G~pxi9Vy5k39()+7!+(0Y!i$M z-Y>X8@NvO^68yH{uLSuYeUtxx2)-}K-}|uLCpbayTESZd7YeQxd{D4o@XLZv3w}rN zdBK+jUlAM>d`s{{!A#^7^|@RyM{u5CrQn@{&4Mw(FAF{`_#MIhf`1k?vCdEqe;P)d zEI3o}X2Ej7C4vtM_6t5O_#MIL1z#3?MQ~7XJQ9cUt`@vruvoB4@Gij>g7*sc3HA$q zMeyr_y99qE_;bPE37!&sPtb#Pkot@foFvE}3A6nc!6kzKF8H3H2kRl}Mhp4{=Ljwk ztQ8CiZV>!};FE&i6x<{DlHjidPY9kC{Hx%I;kF)^3+4#U6ud=np&-|5>dl`t5~G6O z7kp9huY$uz*mRA8oq`(#`TKkF`GO$Vf7ZV$_%*?A3GNd7f#8dRFAE+L{I%e5!9NO~ z7W_}a4+Jx?-%xIr;Ap{df)fR&3iACg(qAulvtWtfLcwamWrE8En+4ki`I}DiTPxTr z_>f?~;AX+Cg8wM^4Z)p)y9IwJ_>$m3!NY>T6&w`gOYhX@CLd06Ngow4|Q_>zLVol}006_k|f{zJ)OK=YnbibDRzX|?Da0Jc)9M2zd z60Z|15xhsRj|e{eSqX8U;88)oX~_0zg3AQk1wSkJ&w{@cEAB+L%~-C-xBoT+(tfr z!3Ba%f<1y?6x<=WU+_1AJpYkT00%GPje@rcwhG=a_(j1V2p$#uv*1XaBgy9~!CM4t z1lt5R3GNnrL-0evv3%(jd~OvC65+=cQeQ3g4T4`3{I1~hM2!EP)J>cvg~@-C;8G&wG)O%v^#=s|1$RsTeyJao`WeAo@F1TX1?LOa2rd`ANAP~Zor2E` z9w0)$UrYTB!S@7*L;asO6p@Mhx|oe zq0~#H9+7&d)Hg|ev()!WU0n}A-&0aQE&XHBM*b6s_%rfjtJ~tCdLSMMC~VQCXgHFO z2QqOZUp;uruaCuy{LV;&kZwNQgo5L8D91v-359p7Rt`Ibg_M^55mg8 zG0P}aHC)s7;tvC{RI2f$!!b|YrzAgYzv{DVn!X2V*EPTCsFGgO?YRJ50cglie@ORz z#Hs%1z8le?%k1k~U>N@sbEiML?>aO%?Ku4)uCKAL(+oF)AkAff1|N5i*n$Y0n*8+a@C;8zR zmEgA$WsadA`PtNg_t$a$&>!~k?*Tzgw|6b>OKKwNBi*A?)?J4{SIFFukDlL$Po!3x0(V cz_rMaKkDbhA9Zs~rx96i7!PYE=+njj4Sd*BM*si- literal 0 HcmV?d00001 diff --git a/example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/tlsf-impl.c.o b/example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/tlsf-impl.c.o new file mode 100644 index 0000000000000000000000000000000000000000..928627868e43663c0dd2ce4e6c89fa6e7b8cffb4 GIT binary patch literal 36924 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 Xb<`hal4<8R`#$_77R3a8s`&o^LVn0S literal 0 HcmV?d00001 diff --git a/example/As6Project/Logical/Libraries/Loupe/tlsf/package.json b/example/As6Project/Logical/Libraries/Loupe/tlsf/package.json new file mode 100644 index 0000000..1c7f99b --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/tlsf/package.json @@ -0,0 +1,25 @@ +{ + "name": "@loupeteam/tlsf", + "version": "1.0.2", + "description": "Loupe's tlsf library for Automation Runtime", + "homepage": "https://loupeteam.github.io/Sandbox/libraries/tlsf.html", + "scripts": {}, + "keywords": [], + "author": "Loupe", + "license": "Loupe Software License Agreement", + "repository": { + "type": "git", + "url": "https://github.com/loupeteam/tlsf" + }, + "lpm": { + "type": "library", + "physical": { + "cpu": { + "attributes": { + "Memory": "None" + } + } + } + }, + "dependencies": {} +} \ No newline at end of file diff --git a/example/As6Project/Logical/Libraries/Package.pkg b/example/As6Project/Logical/Libraries/Package.pkg new file mode 100644 index 0000000..1668338 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Package.pkg @@ -0,0 +1,8 @@ + + + + + _AS + Loupe + + \ No newline at end of file diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.fun b/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.fun new file mode 100644 index 0000000..87ba979 --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.fun @@ -0,0 +1,80 @@ + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsftoa : UINT (*converts a REAL value into a character string*) + VAR_INPUT + value :REAL; (*REAL (FLOAT) value to be converted into a character string*) + pString :UDINT; (*pointer to the destination character string*) + END_VAR +END_FUNCTION +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsatof : REAL (*converts a character string into a REAL (FLOAT) value*) + VAR_INPUT + pString :UDINT; (*pointer to the character string to be converted*) + END_VAR +END_FUNCTION +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsatod : LREAL (*converts a character string into a LREAL (DOUBLE) value*) + VAR_INPUT + pString :UDINT; (*pointer to the character string to be converted*) + END_VAR +END_FUNCTION +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsitoa : UINT (*converts a DINT value into a character string*) + VAR_INPUT + value :DINT; (*numerical value to be converted into a string*) + pString :UDINT; (*pointer to the destination character string*) + END_VAR +END_FUNCTION +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsatoi : DINT (*converts a character string into a DINT value*) + VAR_INPUT + pString :UDINT; (*pointer to the character string to be converted*) + END_VAR +END_FUNCTION +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsmemset : UDINT (*fills the memory area with specific values*) + VAR_INPUT + pDest :UDINT; (*pointer to the destination memory*) + value :USINT; (*initialization value*) + length :UDINT; (*number of bytes to be initialized*) + END_VAR +END_FUNCTION +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsmemcpy : UDINT (*copies the memory area*) + VAR_INPUT + pDest :UDINT; (*pointer to the destination memory*) + pSrc :UDINT; (*pointer to the data to be copied*) + length :UDINT; (*size of bytes to be copied*) + END_VAR +END_FUNCTION +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsmemmove : UDINT (*copies the memory area (even if the memory areas overlap)*) + VAR_INPUT + pDest :UDINT; (*pointer to the destination memory*) + pSrc :UDINT; (*pointer to the data to be copied*) + length :UDINT; (*size of bytes to be copied*) + END_VAR +END_FUNCTION +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsmemcmp : DINT (*compares memory areas*) + VAR_INPUT + pMem1 :UDINT; (*pointer to the memory area 1*) + pMem2 :UDINT; (*pointer to the memory area 2*) + length :UDINT; (*size of bytes to be checked*) + END_VAR +END_FUNCTION +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsstrcat : UDINT (*attaches character strings to one another*) + VAR_INPUT + pDest :UDINT; (*pointer to the destination character string*) + pSrc :UDINT; (*pointer to the source character string*) + END_VAR +END_FUNCTION +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsstrlen : UDINT (*provides the length of a character string*) + VAR_INPUT + pString :UDINT; (*pointer to the source character string*) + END_VAR +END_FUNCTION +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsstrcpy : UDINT (*copies one character string into another*) + VAR_INPUT + pDest :UDINT; (*pointer to the destination character string*) + pSrc :UDINT; (*pointer to the source character string*) + END_VAR +END_FUNCTION +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsstrcmp : DINT (*compares two character strings*) + VAR_INPUT + pString1 :UDINT; (*pointer to the first character string*) + pString2 :UDINT; (*pointer to the second character string*) + END_VAR +END_FUNCTION + diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.typ b/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.typ new file mode 100644 index 0000000..1657f43 --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.typ @@ -0,0 +1,4 @@ + +TYPE + +END_TYPE diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.var b/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.var new file mode 100644 index 0000000..30b816c --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.var @@ -0,0 +1,4 @@ + +VAR CONSTANT + +END_VAR diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrStr/SG3/AsBrStr.h b/example/As6Project/Logical/Libraries/_AS/AsBrStr/SG3/AsBrStr.h new file mode 100644 index 0000000..3f4c4bc --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/AsBrStr/SG3/AsBrStr.h @@ -0,0 +1,39 @@ +/* Automation Studio generated header file */ +/* Do not edit ! */ + +#ifndef _ASBRSTR_ +#define _ASBRSTR_ +#ifdef __cplusplus +extern "C" +{ +#endif + +#include + +#ifndef _IEC_CONST +#define _IEC_CONST _WEAK const +#endif + + + + +/* Prototyping of functions and function blocks */ +unsigned short brsftoa(float value, unsigned long pString); +float brsatof(unsigned long pString); +unsigned short brsitoa(signed long value, unsigned long pString); +signed long brsatoi(unsigned long pString); +unsigned long brsmemset(unsigned long pDest, unsigned char value, unsigned long length); +unsigned long brsmemcpy(unsigned long pDest, unsigned long pSrc, unsigned long length); +unsigned long brsmemmove(unsigned long pDest, unsigned long pSrc, unsigned long length); +signed long brsmemcmp(unsigned long pMem1, unsigned long pMem2, unsigned long length); +unsigned long brsstrcat(unsigned long pDest, unsigned long pSrc); +unsigned long brsstrlen(unsigned long pString); +unsigned long brsstrcpy(unsigned long pDest, unsigned long pSrc); +signed long brsstrcmp(unsigned long pString1, unsigned long pString2); + + +#ifdef __cplusplus +}; +#endif +#endif /* _ASBRSTR_ */ + diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrStr/SG4/AsBrStr.h b/example/As6Project/Logical/Libraries/_AS/AsBrStr/SG4/AsBrStr.h new file mode 100644 index 0000000..daa7324 --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/AsBrStr/SG4/AsBrStr.h @@ -0,0 +1,39 @@ +/* Automation Studio generated header file */ +/* Do not edit ! */ + +#ifndef _ASBRSTR_ +#define _ASBRSTR_ +#ifdef __cplusplus +extern "C" +{ +#endif + +#include + +#ifndef _BUR_PUBLIC +#define _BUR_PUBLIC +#endif + + + +/* Prototyping of functions and function blocks */ +_BUR_PUBLIC unsigned short brsftoa(float value, unsigned long pString); +_BUR_PUBLIC float brsatof(unsigned long pString); +_BUR_PUBLIC double brsatod(unsigned long pString); +_BUR_PUBLIC unsigned short brsitoa(signed long value, unsigned long pString); +_BUR_PUBLIC signed long brsatoi(unsigned long pString); +_BUR_PUBLIC unsigned long brsmemset(unsigned long pDest, unsigned char value, unsigned long length); +_BUR_PUBLIC unsigned long brsmemcpy(unsigned long pDest, unsigned long pSrc, unsigned long length); +_BUR_PUBLIC unsigned long brsmemmove(unsigned long pDest, unsigned long pSrc, unsigned long length); +_BUR_PUBLIC signed long brsmemcmp(unsigned long pMem1, unsigned long pMem2, unsigned long length); +_BUR_PUBLIC unsigned long brsstrcat(unsigned long pDest, unsigned long pSrc); +_BUR_PUBLIC unsigned long brsstrlen(unsigned long pString); +_BUR_PUBLIC unsigned long brsstrcpy(unsigned long pDest, unsigned long pSrc); +_BUR_PUBLIC signed long brsstrcmp(unsigned long pString1, unsigned long pString2); + + +#ifdef __cplusplus +}; +#endif +#endif /* _ASBRSTR_ */ + diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrStr/SGC/AsBrStr.h b/example/As6Project/Logical/Libraries/_AS/AsBrStr/SGC/AsBrStr.h new file mode 100644 index 0000000..3f4c4bc --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/AsBrStr/SGC/AsBrStr.h @@ -0,0 +1,39 @@ +/* Automation Studio generated header file */ +/* Do not edit ! */ + +#ifndef _ASBRSTR_ +#define _ASBRSTR_ +#ifdef __cplusplus +extern "C" +{ +#endif + +#include + +#ifndef _IEC_CONST +#define _IEC_CONST _WEAK const +#endif + + + + +/* Prototyping of functions and function blocks */ +unsigned short brsftoa(float value, unsigned long pString); +float brsatof(unsigned long pString); +unsigned short brsitoa(signed long value, unsigned long pString); +signed long brsatoi(unsigned long pString); +unsigned long brsmemset(unsigned long pDest, unsigned char value, unsigned long length); +unsigned long brsmemcpy(unsigned long pDest, unsigned long pSrc, unsigned long length); +unsigned long brsmemmove(unsigned long pDest, unsigned long pSrc, unsigned long length); +signed long brsmemcmp(unsigned long pMem1, unsigned long pMem2, unsigned long length); +unsigned long brsstrcat(unsigned long pDest, unsigned long pSrc); +unsigned long brsstrlen(unsigned long pString); +unsigned long brsstrcpy(unsigned long pDest, unsigned long pSrc); +signed long brsstrcmp(unsigned long pString1, unsigned long pString2); + + +#ifdef __cplusplus +}; +#endif +#endif /* _ASBRSTR_ */ + diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrStr/binary.lby b/example/As6Project/Logical/Libraries/_AS/AsBrStr/binary.lby new file mode 100644 index 0000000..1da1d38 --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/AsBrStr/binary.lby @@ -0,0 +1,9 @@ + + + + + AsBrStr.fun + AsBrStr.typ + AsBrStr.var + + \ No newline at end of file diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.fun b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.fun new file mode 100644 index 0000000..8de4cc5 --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.fun @@ -0,0 +1,71 @@ + +{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcsconv : UDINT (*converts one string to a different format*) + VAR_INPUT + pDestination :REFERENCE TO USINT; (*string to be appended to, given as a pointer*) + pSource :REFERENCE TO USINT; (*string to be appended, given as a pointer*) + level :USINT; (*brwU8toUC (= 0) if converting from U8 to UC; brwUCtoU8 (= 1) if converting from UC to U8*) + END_VAR +END_FUNCTION +{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcsncpy : UDINT (*copies a maximum of n characters from the pSource WC string to the pDestination address*) + VAR_INPUT + pDestination :REFERENCE TO UINT; (*pointer to the target memory for the string*) + pSource :REFERENCE TO UINT; (*string to be copied, given as a pointer*) + n :UDINT; (*max. number of characters to be copied*) + END_VAR +END_FUNCTION +{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcsncat : UDINT (*appends a maximum of n characters from the pSource string to the pDestination string*) + VAR_INPUT + pDestination :REFERENCE TO UINT; (*string to be appended to, given as a pointer*) + pSource :REFERENCE TO UINT; (*string to be appended, given as a pointer*) + n :UDINT; (*maximum number of characters to be added from pSource to pDestination*) + END_VAR +END_FUNCTION +{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcscat : UDINT (*connects two WC strings to each other (concatenation)*) + VAR_INPUT + pDestination :REFERENCE TO UINT; (*string to be appended to, given as a pointer*) + pSource :REFERENCE TO UINT; (*string to be appended, given as a pointer*) + END_VAR +END_FUNCTION +{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcscmp : DINT (*compares two 16-bit character strings*) + VAR_INPUT + pUcstr1 :REFERENCE TO UINT; (*first string, given as a pointer*) + pUcstr2 :REFERENCE TO UINT; (*second string, given as a pointer*) + END_VAR +END_FUNCTION +{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcslen : UDINT (*determines the length of a WC string*) + VAR_INPUT + pwcString :REFERENCE TO UINT; (*string whose length should be determined, given as a pointer*) + END_VAR +END_FUNCTION +{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcsset : UDINT (*appends the pSource string to the pDestination string*) + VAR_INPUT + pDestination :REFERENCE TO UINT; (*string being written, given as a pointer*) + len :UDINT; (*number of characters to be written*) + symbol :UINT; (*character used to overwrite*) + END_VAR +END_FUNCTION +{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcsncmp : DINT (*compares two 16-bit strings*) + VAR_INPUT + pwcString1 :REFERENCE TO UINT; (*first string given as a pointer*) + pwcString2 :REFERENCE TO UINT; (*second string given as a pointer*) + n :UDINT; (*max. number of characters from pUcstr1 to be compared with pUcstr2*) + END_VAR +END_FUNCTION +{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcscpy : UDINT (*copies a WC string*) + VAR_INPUT + pDestination :REFERENCE TO UINT; (*pointer to the target memory for the string*) + pSource :REFERENCE TO UINT; (*string to be copied, given as a pointer*) + END_VAR +END_FUNCTION +{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcsrchr : UDINT (*searches for the last occurrence of a certain character in a WC string*) + VAR_INPUT + pDestination :REFERENCE TO UINT; (*character string being searched, given as a pointer*) + symbol :UINT; (*character being looked for*) + END_VAR +END_FUNCTION +{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcschr : UDINT (*searches for the first occurrence of a certain character*) + VAR_INPUT + pDestination :REFERENCE TO UINT; (*string given as a pointer*) + symbol :UINT; (*character being looked for*) + END_VAR +END_FUNCTION diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.typ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.typ new file mode 100644 index 0000000..1657f43 --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.typ @@ -0,0 +1,4 @@ + +TYPE + +END_TYPE diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.var b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.var new file mode 100644 index 0000000..7af0668 --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.var @@ -0,0 +1,5 @@ + +VAR CONSTANT + brwUCtoU8 : USINT := 1; (*instructs the wcsconv function to convert a WC character string into an ANSI string*) + brwU8toUC : USINT := 0; (*instructs the wcsconv function to convert an ANSI character string into a WC string*) +END_VAR diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG3/AsBrWStr.h b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG3/AsBrWStr.h new file mode 100644 index 0000000..456b6dd --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG3/AsBrWStr.h @@ -0,0 +1,50 @@ +/* Automation Studio generated header file */ +/* Do not edit ! */ + +#ifndef _ASBRWSTR_ +#define _ASBRWSTR_ +#ifdef __cplusplus +extern "C" +{ +#endif + +#include + +#ifndef _IEC_CONST +#define _IEC_CONST _WEAK const +#endif + +/* Constants */ +#ifdef _REPLACE_CONST + #define brwUCtoU8 1U + #define brwU8toUC 0U +#else + _IEC_CONST unsigned char brwUCtoU8 = 1U; + _IEC_CONST unsigned char brwU8toUC = 0U; +#endif + + + + + + + +/* Prototyping of functions and function blocks */ +unsigned long brwcsconv(unsigned char* pDestination, unsigned char* pSource, unsigned char level); +unsigned long brwcsncpy(unsigned short* pDestination, unsigned short* pSource, unsigned long n); +unsigned long brwcsncat(unsigned short* pDestination, unsigned short* pSource, unsigned long n); +unsigned long brwcscat(unsigned short* pDestination, unsigned short* pSource); +signed long brwcscmp(unsigned short* pUcstr1, unsigned short* pUcstr2); +unsigned long brwcslen(unsigned short* pwcString); +unsigned long brwcsset(unsigned short* pDestination, unsigned long len, unsigned short symbol); +signed long brwcsncmp(unsigned short* pwcString1, unsigned short* pwcString2, unsigned long n); +unsigned long brwcscpy(unsigned short* pDestination, unsigned short* pSource); +unsigned long brwcsrchr(unsigned short* pDestination, unsigned short symbol); +unsigned long brwcschr(unsigned short* pDestination, unsigned short symbol); + + +#ifdef __cplusplus +}; +#endif +#endif /* _ASBRWSTR_ */ + diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG4/AsBrWStr.h b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG4/AsBrWStr.h new file mode 100644 index 0000000..590a6cf --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG4/AsBrWStr.h @@ -0,0 +1,52 @@ +/* Automation Studio generated header file */ +/* Do not edit ! */ + +#ifndef _ASBRWSTR_ +#define _ASBRWSTR_ +#ifdef __cplusplus +extern "C" +{ +#endif + +#include + +#ifndef _BUR_PUBLIC +#define _BUR_PUBLIC +#endif +/* Constants */ +#ifdef _REPLACE_CONST + #define brwU8toUC 0U + #define brwUCtoU8 1U +#else + #ifndef _GLOBAL_CONST + #define _GLOBAL_CONST _WEAK const + #endif + _GLOBAL_CONST unsigned char brwU8toUC; + _GLOBAL_CONST unsigned char brwUCtoU8; +#endif + + + + + + + +/* Prototyping of functions and function blocks */ +_BUR_PUBLIC unsigned long brwcsconv(unsigned char* pDestination, unsigned char* pSource, unsigned char level); +_BUR_PUBLIC unsigned long brwcsncpy(unsigned short* pDestination, unsigned short* pSource, unsigned long n); +_BUR_PUBLIC unsigned long brwcsncat(unsigned short* pDestination, unsigned short* pSource, unsigned long n); +_BUR_PUBLIC unsigned long brwcscat(unsigned short* pDestination, unsigned short* pSource); +_BUR_PUBLIC signed long brwcscmp(unsigned short* pUcstr1, unsigned short* pUcstr2); +_BUR_PUBLIC unsigned long brwcslen(unsigned short* pwcString); +_BUR_PUBLIC unsigned long brwcsset(unsigned short* pDestination, unsigned long len, unsigned short symbol); +_BUR_PUBLIC signed long brwcsncmp(unsigned short* pwcString1, unsigned short* pwcString2, unsigned long n); +_BUR_PUBLIC unsigned long brwcscpy(unsigned short* pDestination, unsigned short* pSource); +_BUR_PUBLIC unsigned long brwcsrchr(unsigned short* pDestination, unsigned short symbol); +_BUR_PUBLIC unsigned long brwcschr(unsigned short* pDestination, unsigned short symbol); + + +#ifdef __cplusplus +}; +#endif +#endif /* _ASBRWSTR_ */ + diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SGC/AsBrWStr.h b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SGC/AsBrWStr.h new file mode 100644 index 0000000..456b6dd --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SGC/AsBrWStr.h @@ -0,0 +1,50 @@ +/* Automation Studio generated header file */ +/* Do not edit ! */ + +#ifndef _ASBRWSTR_ +#define _ASBRWSTR_ +#ifdef __cplusplus +extern "C" +{ +#endif + +#include + +#ifndef _IEC_CONST +#define _IEC_CONST _WEAK const +#endif + +/* Constants */ +#ifdef _REPLACE_CONST + #define brwUCtoU8 1U + #define brwU8toUC 0U +#else + _IEC_CONST unsigned char brwUCtoU8 = 1U; + _IEC_CONST unsigned char brwU8toUC = 0U; +#endif + + + + + + + +/* Prototyping of functions and function blocks */ +unsigned long brwcsconv(unsigned char* pDestination, unsigned char* pSource, unsigned char level); +unsigned long brwcsncpy(unsigned short* pDestination, unsigned short* pSource, unsigned long n); +unsigned long brwcsncat(unsigned short* pDestination, unsigned short* pSource, unsigned long n); +unsigned long brwcscat(unsigned short* pDestination, unsigned short* pSource); +signed long brwcscmp(unsigned short* pUcstr1, unsigned short* pUcstr2); +unsigned long brwcslen(unsigned short* pwcString); +unsigned long brwcsset(unsigned short* pDestination, unsigned long len, unsigned short symbol); +signed long brwcsncmp(unsigned short* pwcString1, unsigned short* pwcString2, unsigned long n); +unsigned long brwcscpy(unsigned short* pDestination, unsigned short* pSource); +unsigned long brwcsrchr(unsigned short* pDestination, unsigned short symbol); +unsigned long brwcschr(unsigned short* pDestination, unsigned short symbol); + + +#ifdef __cplusplus +}; +#endif +#endif /* _ASBRWSTR_ */ + diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/binary.lby b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/binary.lby new file mode 100644 index 0000000..2e2754a --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/binary.lby @@ -0,0 +1,9 @@ + + + + + AsBrWStr.fun + AsBrWStr.typ + AsBrWStr.var + + \ No newline at end of file diff --git a/example/As6Project/Logical/Libraries/_AS/Package.pkg b/example/As6Project/Logical/Libraries/_AS/Package.pkg new file mode 100644 index 0000000..4f748b7 --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/Package.pkg @@ -0,0 +1,10 @@ + + + + + astime + runtime + AsBrStr + AsBrWStr + + \ No newline at end of file diff --git a/example/As6Project/Logical/Libraries/_AS/astime/SG3/astime.h b/example/As6Project/Logical/Libraries/_AS/astime/SG3/astime.h new file mode 100644 index 0000000..b0c328a --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/astime/SG3/astime.h @@ -0,0 +1,130 @@ +/* Automation Studio generated header file */ +/* Do not edit ! */ + +#ifndef _ASTIME_ +#define _ASTIME_ +#ifdef __cplusplus +extern "C" +{ +#endif + +#include + +#include + +#ifndef _IEC_CONST +#define _IEC_CONST _WEAK const +#endif + +/* Constants */ +#ifdef _REPLACE_CONST + #define timERR_AR 33213U + #define timERR_INVALID_DTSTRUCTURE 33212U + #define timERR_INVALID_LEN 33211U + #define timERR_INVALID_PARAMETER 33210U + #define timTIME_SERVER 2U + #define timREAL_TIME_CLOCK 1U + #define timNO_DST 3U + #define timDAYLIGHT_SAVING_TIME 2U + #define timNORMAL_TIME 1U + #define TIME_MAX 2073600000 + #define TIME_MIN (-2073600000) + #define DATE_AND_TIME_MAX 4102444799U + #define timEXSETTIME_NO_OPTION 0U + #define timEXSETTIME_NO_LOGENTRY 1U +#else + _IEC_CONST unsigned short timERR_AR = 33213U; + _IEC_CONST unsigned short timERR_INVALID_DTSTRUCTURE = 33212U; + _IEC_CONST unsigned short timERR_INVALID_LEN = 33211U; + _IEC_CONST unsigned short timERR_INVALID_PARAMETER = 33210U; + _IEC_CONST unsigned char timTIME_SERVER = 2U; + _IEC_CONST unsigned char timREAL_TIME_CLOCK = 1U; + _IEC_CONST unsigned char timNO_DST = 3U; + _IEC_CONST unsigned char timDAYLIGHT_SAVING_TIME = 2U; + _IEC_CONST unsigned char timNORMAL_TIME = 1U; + _IEC_CONST signed long TIME_MAX = 2073600000; + _IEC_CONST signed long TIME_MIN = -2073600000; + _IEC_CONST unsigned long DATE_AND_TIME_MAX = 4102444799U; + _IEC_CONST unsigned char timEXSETTIME_NO_OPTION = 0U; + _IEC_CONST unsigned char timEXSETTIME_NO_LOGENTRY = 1U; +#endif + + + + +/* Datatypes and datatypes of function blocks */ +typedef struct TIMEStructure +{ signed char day; + unsigned char hour; + unsigned char minute; + unsigned char second; + unsigned short millisec; + unsigned short microsec; +} TIMEStructure; + +typedef struct DTStructure +{ unsigned short year; + unsigned char month; + unsigned char day; + unsigned char wday; + unsigned char hour; + unsigned char minute; + unsigned char second; + unsigned short millisec; + unsigned short microsec; +} DTStructure; + +typedef struct DTExSetTime +{ + /* VAR_INPUT (analog) */ + plcdt DT1; + unsigned char Option; + /* VAR_OUTPUT (analog) */ + unsigned short status; + /* VAR_INPUT (digital) */ + plcbit enable; +} DTExSetTime_typ; + +typedef struct DTSetTime +{ + /* VAR_INPUT (analog) */ + plcdt DT1; + /* VAR_OUTPUT (analog) */ + unsigned short status; + /* VAR_INPUT (digital) */ + plcbit enable; +} DTSetTime_typ; + +typedef struct DTGetTime +{ + /* VAR_OUTPUT (analog) */ + unsigned short status; + plcdt DT1; + /* VAR_INPUT (digital) */ + plcbit enable; +} DTGetTime_typ; + + + +/* Prototyping of functions and function blocks */ +void DTExSetTime(struct DTExSetTime* inst); +void DTSetTime(struct DTSetTime* inst); +void DTGetTime(struct DTGetTime* inst); +unsigned long ascTIMEStructure(unsigned long pTIMEStructure, unsigned long pStr, unsigned long len); +unsigned long ascDTStructure(unsigned long pDTStructure, unsigned long pStr, unsigned long len); +unsigned long ascTIME(plctime TIME1, unsigned long pStr, unsigned long len); +unsigned long ascDT(plcdt DT1, unsigned long pStr, unsigned long len); +plctime TIMEStructure_TO_TIME(unsigned long pTIMEStructure); +unsigned long TIME_TO_TIMEStructure(plctime TIME1, unsigned long pTIMEStructure); +plcdt DTStructure_TO_DT(unsigned long pDTStructure); +unsigned long DT_TO_DTStructure(plcdt DT1, unsigned long pDTStructure); +unsigned long DiffT(plctime TIME2, plctime TIME1); +unsigned long DiffDT(plcdt DT2, plcdt DT1); + + +#ifdef __cplusplus +}; +#endif +#endif /* _ASTIME_ */ + + diff --git a/example/As6Project/Logical/Libraries/_AS/astime/SG4/astime.h b/example/As6Project/Logical/Libraries/_AS/astime/SG4/astime.h new file mode 100644 index 0000000..d99f9bc --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/astime/SG4/astime.h @@ -0,0 +1,365 @@ +/* Automation Studio generated header file */ +/* Do not edit ! */ + +#ifndef _ASTIME_ +#define _ASTIME_ +#ifdef __cplusplus +extern "C" +{ +#endif + +#include + +#include + +#ifndef _BUR_PUBLIC +#define _BUR_PUBLIC +#endif +/* Constants */ +#ifdef _REPLACE_CONST + #define timERR_AR 33213U + #define timERR_INVALID_DTSTRUCTURE 33212U + #define timERR_INVALID_LEN 33211U + #define timERR_INVALID_PARAMETER 33210U + #define timREDUND_INTERFACE 3U + #define timTIME_SERVER 2U + #define timREAL_TIME_CLOCK 1U + #define timNO_DST 3U + #define timDAYLIGHT_SAVING_TIME 2U + #define timNORMAL_TIME 1U + #define TIME_MAX 2073600000 + #define TIME_MIN (-2073600000) + #define DATE_AND_TIME_MAX 4102444799U + #define timEXSETTIME_NO_OPTION 0U + #define timEXSETTIME_NO_LOGENTRY 1U +#else + #ifndef _GLOBAL_CONST + #define _GLOBAL_CONST _WEAK const + #endif + _GLOBAL_CONST unsigned short timERR_AR; + _GLOBAL_CONST unsigned short timERR_INVALID_DTSTRUCTURE; + _GLOBAL_CONST unsigned short timERR_INVALID_LEN; + _GLOBAL_CONST unsigned short timERR_INVALID_PARAMETER; + _GLOBAL_CONST unsigned char timREDUND_INTERFACE; + _GLOBAL_CONST unsigned char timTIME_SERVER; + _GLOBAL_CONST unsigned char timREAL_TIME_CLOCK; + _GLOBAL_CONST unsigned char timNO_DST; + _GLOBAL_CONST unsigned char timDAYLIGHT_SAVING_TIME; + _GLOBAL_CONST unsigned char timNORMAL_TIME; + _GLOBAL_CONST signed long TIME_MAX; + _GLOBAL_CONST signed long TIME_MIN; + _GLOBAL_CONST unsigned long DATE_AND_TIME_MAX; + _GLOBAL_CONST unsigned char timEXSETTIME_NO_OPTION; + _GLOBAL_CONST unsigned char timEXSETTIME_NO_LOGENTRY; +#endif + + + + +/* Datatypes and datatypes of function blocks */ +typedef struct TIMEStructure +{ signed char day; + unsigned char hour; + unsigned char minute; + unsigned char second; + unsigned short millisec; + unsigned short microsec; +} TIMEStructure; + +typedef struct DTStructure +{ unsigned short year; + unsigned char month; + unsigned char day; + unsigned char wday; + unsigned char hour; + unsigned char minute; + unsigned char second; + unsigned short millisec; + unsigned short microsec; +} DTStructure; + +typedef struct DTExSetTime +{ + /* VAR_INPUT (analog) */ + plcdt DT1; + unsigned char Option; + /* VAR_OUTPUT (analog) */ + unsigned short status; + /* VAR_INPUT (digital) */ + plcbit enable; +} DTExSetTime_typ; + +typedef struct DTSetTime +{ + /* VAR_INPUT (analog) */ + plcdt DT1; + /* VAR_OUTPUT (analog) */ + unsigned short status; + /* VAR_INPUT (digital) */ + plcbit enable; +} DTSetTime_typ; + +typedef struct DTGetTime +{ + /* VAR_OUTPUT (analog) */ + unsigned short status; + plcdt DT1; + /* VAR_INPUT (digital) */ + plcbit enable; +} DTGetTime_typ; + +typedef struct UtcDTGetTime +{ + /* VAR_OUTPUT (analog) */ + unsigned short status; + plcdt DT1; + /* VAR_INPUT (digital) */ + plcbit enable; +} UtcDTGetTime_typ; + +typedef struct UtcDTSetTime +{ + /* VAR_INPUT (analog) */ + plcdt DT1; + /* VAR_OUTPUT (analog) */ + unsigned short status; + /* VAR (analog) */ + unsigned short i_state; + unsigned short i_result; + unsigned long i_tmp; + /* VAR_INPUT (digital) */ + plcbit enable; +} UtcDTSetTime_typ; + +typedef struct UtcDTExSetTime +{ + /* VAR_INPUT (analog) */ + plcdt DT1; + unsigned char Option; + /* VAR_OUTPUT (analog) */ + unsigned short status; + /* VAR (analog) */ + unsigned short i_state; + unsigned short i_result; + unsigned long i_tmp; + /* VAR_INPUT (digital) */ + plcbit enable; +} UtcDTExSetTime_typ; + +typedef struct DTStructureGetTime +{ + /* VAR_INPUT (analog) */ + unsigned long pDTStructure; + /* VAR_OUTPUT (analog) */ + unsigned short status; + /* VAR_INPUT (digital) */ + plcbit enable; +} DTStructureGetTime_typ; + +typedef struct DTStructureSetTime +{ + /* VAR_INPUT (analog) */ + unsigned long pDTStructure; + /* VAR_OUTPUT (analog) */ + unsigned short status; + /* VAR_INPUT (digital) */ + plcbit enable; +} DTStructureSetTime_typ; + +typedef struct DTStructureExSetTime +{ + /* VAR_INPUT (analog) */ + unsigned long pDTStructure; + unsigned char Option; + /* VAR_OUTPUT (analog) */ + unsigned short status; + /* VAR_INPUT (digital) */ + plcbit enable; +} DTStructureExSetTime_typ; + +typedef struct UtcDTStructureGetTime +{ + /* VAR_INPUT (analog) */ + unsigned long pDTStructure; + /* VAR_OUTPUT (analog) */ + unsigned short status; + /* VAR_INPUT (digital) */ + plcbit enable; +} UtcDTStructureGetTime_typ; + +typedef struct UtcDTStructureSetTime +{ + /* VAR_INPUT (analog) */ + unsigned long pDTStructure; + /* VAR_OUTPUT (analog) */ + unsigned short status; + /* VAR (analog) */ + unsigned short i_state; + unsigned short i_result; + unsigned long i_tmp; + /* VAR_INPUT (digital) */ + plcbit enable; +} UtcDTStructureSetTime_typ; + +typedef struct UtcDTStructureExSetTime +{ + /* VAR_INPUT (analog) */ + unsigned long pDTStructure; + unsigned char Option; + /* VAR_OUTPUT (analog) */ + unsigned short status; + /* VAR (analog) */ + unsigned short i_state; + unsigned short i_result; + unsigned long i_tmp; + /* VAR_INPUT (digital) */ + plcbit enable; +} UtcDTStructureExSetTime_typ; + +typedef struct UtcDT_TO_LocalDTStructure +{ + /* VAR_INPUT (analog) */ + plcdt DT1; + unsigned long pDTStructure; + /* VAR_OUTPUT (analog) */ + unsigned short status; + /* VAR (analog) */ + unsigned short i_state; + unsigned short i_result; + unsigned long i_tmp; + /* VAR_INPUT (digital) */ + plcbit enable; +} UtcDT_TO_LocalDTStructure_typ; + +typedef struct LocalDT_TO_UtcDTStructure +{ + /* VAR_INPUT (analog) */ + plcdt DT1; + unsigned long pDTStructure; + /* VAR_OUTPUT (analog) */ + unsigned short status; + /* VAR (analog) */ + unsigned short i_state; + unsigned short i_result; + unsigned long i_tmp; + /* VAR_INPUT (digital) */ + plcbit enable; +} LocalDT_TO_UtcDTStructure_typ; + +typedef struct UtcDTStructure_TO_LocalDT +{ + /* VAR_INPUT (analog) */ + unsigned long pDTStructure; + /* VAR_OUTPUT (analog) */ + plcdt DT1; + unsigned short status; + /* VAR (analog) */ + unsigned short i_state; + unsigned short i_result; + unsigned long i_tmp; + /* VAR_INPUT (digital) */ + plcbit enable; +} UtcDTStructure_TO_LocalDT_typ; + +typedef struct LocalDTStructure_TO_UtcDT +{ + /* VAR_INPUT (analog) */ + unsigned long pDTStructure; + /* VAR_OUTPUT (analog) */ + plcdt DT1; + unsigned short status; + /* VAR (analog) */ + unsigned short i_state; + unsigned short i_result; + unsigned long i_tmp; + /* VAR_INPUT (digital) */ + plcbit enable; +} LocalDTStructure_TO_UtcDT_typ; + +typedef struct TimeDeviceGetInfo +{ + /* VAR_INPUT (analog) */ + unsigned long pServer; + unsigned char len; + /* VAR_OUTPUT (analog) */ + unsigned char timeDevice; + float avgDeviation; + unsigned short status; + /* VAR (analog) */ + unsigned short i_state; + unsigned short i_result; + unsigned long i_tmp; + /* VAR_INPUT (digital) */ + plcbit enable; +} TimeDeviceGetInfo_typ; + +typedef struct DstGetInfo +{ + /* VAR_INPUT (analog) */ + unsigned long pDTStructure; + /* VAR_OUTPUT (analog) */ + unsigned char dstState; + unsigned short status; + /* VAR (analog) */ + unsigned short i_state; + unsigned short i_result; + unsigned long i_tmp; + /* VAR_INPUT (digital) */ + plcbit enable; +} DstGetInfo_typ; + +typedef struct DstGetInfoDT +{ + /* VAR_INPUT (analog) */ + plcdt DT1; + /* VAR_OUTPUT (analog) */ + unsigned char dstState; + unsigned short status; + /* VAR (analog) */ + unsigned short i_state; + unsigned short i_result; + unsigned long i_tmp; + /* VAR_INPUT (digital) */ + plcbit enable; +} DstGetInfoDT_typ; + + + +/* Prototyping of functions and function blocks */ +_BUR_PUBLIC void DTExSetTime(struct DTExSetTime* inst); +_BUR_PUBLIC void DTSetTime(struct DTSetTime* inst); +_BUR_PUBLIC void DTGetTime(struct DTGetTime* inst); +_BUR_PUBLIC void UtcDTGetTime(struct UtcDTGetTime* inst); +_BUR_PUBLIC void UtcDTSetTime(struct UtcDTSetTime* inst); +_BUR_PUBLIC void UtcDTExSetTime(struct UtcDTExSetTime* inst); +_BUR_PUBLIC void DTStructureGetTime(struct DTStructureGetTime* inst); +_BUR_PUBLIC void DTStructureSetTime(struct DTStructureSetTime* inst); +_BUR_PUBLIC void DTStructureExSetTime(struct DTStructureExSetTime* inst); +_BUR_PUBLIC void UtcDTStructureGetTime(struct UtcDTStructureGetTime* inst); +_BUR_PUBLIC void UtcDTStructureSetTime(struct UtcDTStructureSetTime* inst); +_BUR_PUBLIC void UtcDTStructureExSetTime(struct UtcDTStructureExSetTime* inst); +_BUR_PUBLIC void UtcDT_TO_LocalDTStructure(struct UtcDT_TO_LocalDTStructure* inst); +_BUR_PUBLIC void LocalDT_TO_UtcDTStructure(struct LocalDT_TO_UtcDTStructure* inst); +_BUR_PUBLIC void UtcDTStructure_TO_LocalDT(struct UtcDTStructure_TO_LocalDT* inst); +_BUR_PUBLIC void LocalDTStructure_TO_UtcDT(struct LocalDTStructure_TO_UtcDT* inst); +_BUR_PUBLIC void TimeDeviceGetInfo(struct TimeDeviceGetInfo* inst); +_BUR_PUBLIC void DstGetInfo(struct DstGetInfo* inst); +_BUR_PUBLIC void DstGetInfoDT(struct DstGetInfoDT* inst); +_BUR_PUBLIC plctime clock_ms(void); +_BUR_PUBLIC unsigned long ascTIMEStructure(unsigned long pTIMEStructure, unsigned long pStr, unsigned long len); +_BUR_PUBLIC unsigned long ascDTStructure(unsigned long pDTStructure, unsigned long pStr, unsigned long len); +_BUR_PUBLIC unsigned long ascTIME(plctime TIME1, unsigned long pStr, unsigned long len); +_BUR_PUBLIC unsigned long ascDT(plcdt DT1, unsigned long pStr, unsigned long len); +_BUR_PUBLIC plctime TIMEStructure_TO_TIME(unsigned long pTIMEStructure); +_BUR_PUBLIC unsigned long TIME_TO_TIMEStructure(plctime TIME1, unsigned long pTIMEStructure); +_BUR_PUBLIC plcdt DTStructure_TO_DT(unsigned long pDTStructure); +_BUR_PUBLIC unsigned long DT_TO_DTStructure(plcdt DT1, unsigned long pDTStructure); +_BUR_PUBLIC unsigned long DiffT(plctime TIME2, plctime TIME1); +_BUR_PUBLIC unsigned long DiffDT(plcdt DT2, plcdt DT1); + + +#ifdef __cplusplus +}; +#endif +#endif /* _ASTIME_ */ + diff --git a/example/As6Project/Logical/Libraries/_AS/astime/SGC/astime.h b/example/As6Project/Logical/Libraries/_AS/astime/SGC/astime.h new file mode 100644 index 0000000..b0c328a --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/astime/SGC/astime.h @@ -0,0 +1,130 @@ +/* Automation Studio generated header file */ +/* Do not edit ! */ + +#ifndef _ASTIME_ +#define _ASTIME_ +#ifdef __cplusplus +extern "C" +{ +#endif + +#include + +#include + +#ifndef _IEC_CONST +#define _IEC_CONST _WEAK const +#endif + +/* Constants */ +#ifdef _REPLACE_CONST + #define timERR_AR 33213U + #define timERR_INVALID_DTSTRUCTURE 33212U + #define timERR_INVALID_LEN 33211U + #define timERR_INVALID_PARAMETER 33210U + #define timTIME_SERVER 2U + #define timREAL_TIME_CLOCK 1U + #define timNO_DST 3U + #define timDAYLIGHT_SAVING_TIME 2U + #define timNORMAL_TIME 1U + #define TIME_MAX 2073600000 + #define TIME_MIN (-2073600000) + #define DATE_AND_TIME_MAX 4102444799U + #define timEXSETTIME_NO_OPTION 0U + #define timEXSETTIME_NO_LOGENTRY 1U +#else + _IEC_CONST unsigned short timERR_AR = 33213U; + _IEC_CONST unsigned short timERR_INVALID_DTSTRUCTURE = 33212U; + _IEC_CONST unsigned short timERR_INVALID_LEN = 33211U; + _IEC_CONST unsigned short timERR_INVALID_PARAMETER = 33210U; + _IEC_CONST unsigned char timTIME_SERVER = 2U; + _IEC_CONST unsigned char timREAL_TIME_CLOCK = 1U; + _IEC_CONST unsigned char timNO_DST = 3U; + _IEC_CONST unsigned char timDAYLIGHT_SAVING_TIME = 2U; + _IEC_CONST unsigned char timNORMAL_TIME = 1U; + _IEC_CONST signed long TIME_MAX = 2073600000; + _IEC_CONST signed long TIME_MIN = -2073600000; + _IEC_CONST unsigned long DATE_AND_TIME_MAX = 4102444799U; + _IEC_CONST unsigned char timEXSETTIME_NO_OPTION = 0U; + _IEC_CONST unsigned char timEXSETTIME_NO_LOGENTRY = 1U; +#endif + + + + +/* Datatypes and datatypes of function blocks */ +typedef struct TIMEStructure +{ signed char day; + unsigned char hour; + unsigned char minute; + unsigned char second; + unsigned short millisec; + unsigned short microsec; +} TIMEStructure; + +typedef struct DTStructure +{ unsigned short year; + unsigned char month; + unsigned char day; + unsigned char wday; + unsigned char hour; + unsigned char minute; + unsigned char second; + unsigned short millisec; + unsigned short microsec; +} DTStructure; + +typedef struct DTExSetTime +{ + /* VAR_INPUT (analog) */ + plcdt DT1; + unsigned char Option; + /* VAR_OUTPUT (analog) */ + unsigned short status; + /* VAR_INPUT (digital) */ + plcbit enable; +} DTExSetTime_typ; + +typedef struct DTSetTime +{ + /* VAR_INPUT (analog) */ + plcdt DT1; + /* VAR_OUTPUT (analog) */ + unsigned short status; + /* VAR_INPUT (digital) */ + plcbit enable; +} DTSetTime_typ; + +typedef struct DTGetTime +{ + /* VAR_OUTPUT (analog) */ + unsigned short status; + plcdt DT1; + /* VAR_INPUT (digital) */ + plcbit enable; +} DTGetTime_typ; + + + +/* Prototyping of functions and function blocks */ +void DTExSetTime(struct DTExSetTime* inst); +void DTSetTime(struct DTSetTime* inst); +void DTGetTime(struct DTGetTime* inst); +unsigned long ascTIMEStructure(unsigned long pTIMEStructure, unsigned long pStr, unsigned long len); +unsigned long ascDTStructure(unsigned long pDTStructure, unsigned long pStr, unsigned long len); +unsigned long ascTIME(plctime TIME1, unsigned long pStr, unsigned long len); +unsigned long ascDT(plcdt DT1, unsigned long pStr, unsigned long len); +plctime TIMEStructure_TO_TIME(unsigned long pTIMEStructure); +unsigned long TIME_TO_TIMEStructure(plctime TIME1, unsigned long pTIMEStructure); +plcdt DTStructure_TO_DT(unsigned long pDTStructure); +unsigned long DT_TO_DTStructure(plcdt DT1, unsigned long pDTStructure); +unsigned long DiffT(plctime TIME2, plctime TIME1); +unsigned long DiffDT(plcdt DT2, plcdt DT1); + + +#ifdef __cplusplus +}; +#endif +#endif /* _ASTIME_ */ + + diff --git a/example/As6Project/Logical/Libraries/_AS/astime/astime.fun b/example/As6Project/Logical/Libraries/_AS/astime/astime.fun new file mode 100644 index 0000000..23a6cf6 --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/astime/astime.fun @@ -0,0 +1,333 @@ + +{REDUND_OK} FUNCTION_BLOCK DTExSetTime (*sets the current time using the DATE_AND_TIME data type*) + VAR_INPUT + enable :BOOL; (*enables execution*) + DT1 :DATE_AND_TIME; (*date and time to be written*) + Option :USINT; (*additional option: timEXSETTIME_NO_OPTION, timEXSETTIME_NO_LOGENTRY*) + END_VAR + VAR_OUTPUT + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_OK} FUNCTION_BLOCK DTSetTime (*sets current time in DATE_AND_TIME data type*) + VAR_INPUT + enable :BOOL; (*enables execution*) + DT1 :DATE_AND_TIME; (*date and time to be written*) + END_VAR + VAR_OUTPUT + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_OK} FUNCTION_BLOCK DTGetTime (*reads the current time in the DATE_AND_TIME data type*) + VAR_INPUT + enable :BOOL; (*enables execution*) + END_VAR + VAR_OUTPUT + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*) + DT1 :DATE_AND_TIME; (*date and time read*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_OK} FUNCTION clock_ms : TIME (*provides a continuous millisecond counter in the TIME data type*) +END_FUNCTION + +{REDUND_OK} FUNCTION_BLOCK UtcDTGetTime (*reads the current UTC-time in the DATE_AND_TIME data type*) + VAR_INPUT + enable :BOOL; (*enables execution*) + END_VAR + VAR_OUTPUT + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*) + DT1 :DATE_AND_TIME; (*UTC date and time read*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK UtcDTSetTime (*sets current UTC-time in DATE_AND_TIME data type*) + VAR_INPUT + enable :BOOL; (*enables execution*) + DT1 :DATE_AND_TIME; (*UTC date and time to be written*) + END_VAR + VAR_OUTPUT + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*) + END_VAR + VAR + i_state : UINT; (*internal variable*) + i_result : UINT; (*internal variable*) + i_tmp : UDINT; (*internal variable*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK UtcDTExSetTime (*sets current UTC-time in DATE_AND_TIME data type*) + VAR_INPUT + enable :BOOL; (*enables execution*) + DT1 :DATE_AND_TIME; (*UTC date and time to be written*) + Option :USINT; (*additional option: timEXSETTIME_NO_OPTION, timEXSETTIME_NO_LOGENTRY*) + END_VAR + VAR_OUTPUT + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*) + END_VAR + VAR + i_state : UINT; (*internal variable*) + i_result : UINT; (*internal variable*) + i_tmp : UDINT; (*internal variable*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DTStructureGetTime (*reads the current time in the calendar structure*) + VAR_INPUT + enable :BOOL; (*enables execution*) + pDTStructure :UDINT; (*address of the calendar structure*) + END_VAR + VAR_OUTPUT + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DTStructureSetTime (*sets current time in calendar structure*) + VAR_INPUT + enable :BOOL; (*enables execution*) + pDTStructure :UDINT; (*address of the calendar structure*) + END_VAR + VAR_OUTPUT + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DTStructureExSetTime (*sets current time in calendar structure*) + VAR_INPUT + enable :BOOL; (*enables execution*) + pDTStructure :UDINT; (*address of the calendar structure*) + Option :USINT; (*additional option: timEXSETTIME_NO_OPTION, timEXSETTIME_NO_LOGENTRY*) + END_VAR + VAR_OUTPUT + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK UtcDTStructureGetTime (*reads the UTC time in the calendar structure*) + VAR_INPUT + enable :BOOL; (*enables execution*) + pDTStructure :UDINT; (*address of the calendar structure*) + END_VAR + VAR_OUTPUT + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK UtcDTStructureSetTime (*sets UTC time in calendar structure*) + VAR_INPUT + enable :BOOL; (*enables execution*) + pDTStructure :UDINT; (*address of the calendar structure*) + END_VAR + VAR_OUTPUT + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*) + END_VAR + VAR + i_state : UINT; (*internal variable*) + i_result : UINT; (*internal variable*) + i_tmp : UDINT; (*internal variable*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK UtcDTStructureExSetTime (*sets UTC time in calendar structure*) + VAR_INPUT + enable :BOOL; (*enables execution*) + pDTStructure :UDINT; (*address of the calendar structure*) + Option :USINT; (*additional option: timEXSETTIME_NO_OPTION, timEXSETTIME_NO_LOGENTRY*) + END_VAR + VAR_OUTPUT + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*) + END_VAR + VAR + i_state : UINT; (*internal variable*) + i_result : UINT; (*internal variable*) + i_tmp : UDINT; (*internal variable*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK UtcDT_TO_LocalDTStructure (*sets current UTC-time in DATE_AND_TIME data type*) + VAR_INPUT + enable :BOOL; (*enables execution*) + DT1 :DATE_AND_TIME; (*UTC date and time*) + pDTStructure :UDINT; (*address of the calendar structure*) + END_VAR + VAR_OUTPUT + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*) + END_VAR + VAR + i_state : UINT; (*internal variable*) + i_result : UINT; (*internal variable*) + i_tmp : UDINT; (*internal variable*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK LocalDT_TO_UtcDTStructure (*sets current UTC-time in DATE_AND_TIME data type*) + VAR_INPUT + enable :BOOL; (*enables execution*) + DT1 :DATE_AND_TIME; (*Local date and time*) + pDTStructure :UDINT; (*address of the calendar structure*) + END_VAR + VAR_OUTPUT + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*) + END_VAR + VAR + i_state : UINT; (*internal variable*) + i_result : UINT; (*internal variable*) + i_tmp : UDINT; (*internal variable*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK UtcDTStructure_TO_LocalDT (*sets current UTC-time in DATE_AND_TIME data type*) + VAR_INPUT + enable :BOOL; (*enables execution*) + pDTStructure :UDINT; (*address of the calendar structure*) + END_VAR + VAR_OUTPUT + DT1 :DATE_AND_TIME; (*Local date and time*) + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*) + END_VAR + VAR + i_state : UINT; (*internal variable*) + i_result : UINT; (*internal variable*) + i_tmp : UDINT; (*internal variable*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK LocalDTStructure_TO_UtcDT (*sets current UTC-time in DATE_AND_TIME data type*) + VAR_INPUT + enable :BOOL; (*enables execution*) + pDTStructure :UDINT; (*address of the calendar structure*) + END_VAR + VAR_OUTPUT + DT1 :DATE_AND_TIME; (*UTC date and time*) + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*) + END_VAR + VAR + i_state : UINT; (*internal variable*) + i_result : UINT; (*internal variable*) + i_tmp : UDINT; (*internal variable*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION ascTIMEStructure : UDINT (*converts a "time" structure to a character string in the format "15:14:13\0"*) + VAR_INPUT + pTIMEStructure :UDINT; (*address of the time structure*) + pStr :UDINT; (*address of the character field*) + len :UDINT; (*length of the character field *) + END_VAR +END_FUNCTION + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION ascDTStructure : UDINT (*converts a "date" structure to a character string in the format "Sun Jan 3 15:14:13 1988\0"*) + VAR_INPUT + pDTStructure :UDINT; (*address of the calendar structure *) + pStr :UDINT; (*address of the character field*) + len :UDINT; (*length of the character field*) + END_VAR +END_FUNCTION + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION ascTIME : UDINT (*converts the TIME data type to a character string in the format "15:14:13\0"*) + VAR_INPUT + TIME1 :TIME; (*time*) + pStr :UDINT; (*address of the character field*) + len :UDINT; (*length of the character field*) + END_VAR +END_FUNCTION + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION ascDT : UDINT (*converts the DATE_AND_TIME data type to character string in the format "Sun Jan 3 15:14:13 1988\0"*) + VAR_INPUT + DT1 :DATE_AND_TIME; (*date and time*) + pStr :UDINT; (*address of the character field*) + len :UDINT; (*length of the character field*) + END_VAR +END_FUNCTION + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION TIMEStructure_TO_TIME : TIME (*converts a "time" structure to the TIME data type*) + VAR_INPUT + pTIMEStructure :UDINT; (*address of the time structure*) + END_VAR +END_FUNCTION + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION TIME_TO_TIMEStructure : UDINT (*converts the TIME data type to a "time" structure*) + VAR_INPUT + TIME1 :TIME; (*time*) + pTIMEStructure :UDINT; (*address of the calendar structure*) + END_VAR +END_FUNCTION + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION DTStructure_TO_DT : DATE_AND_TIME (*converts a "date" structure to the DATE_AND_TIME data type*) + VAR_INPUT + pDTStructure :UDINT; (*address of the calendar structure*) + END_VAR +END_FUNCTION + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION DT_TO_DTStructure : UDINT (*converts the DATE_AND_TIME data type to a "date" structure*) + VAR_INPUT + DT1 :DATE_AND_TIME; (*date and time*) + pDTStructure :UDINT; (*address of the calendar structure*) + END_VAR +END_FUNCTION + +{REDUND_OK} FUNCTION DiffT : UDINT (*shows the difference between two times (TIME data type) expressed in milliseconds*) + VAR_INPUT + TIME2 :TIME; (*time 2*) + TIME1 :TIME; (*time 1*) + END_VAR +END_FUNCTION + +{REDUND_OK} FUNCTION DiffDT : UDINT (*shows the difference between two times (DATE_AND_TIME data type) expressed in seconds*) + VAR_INPUT + DT2 :DATE_AND_TIME; (*date and time 2*) + DT1 :DATE_AND_TIME; (*date and time 1*) + END_VAR +END_FUNCTION + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK TimeDeviceGetInfo (*read information about time device*) + VAR_INPUT + enable :BOOL; (*enables execution*) + pServer :UDINT; (*Pointer to string*) + len :USINT; (*length of pServer*) + END_VAR + VAR_OUTPUT + timeDevice :USINT; (*sntpREAL_TIME_CLOCK or sntpTIME_SERVER*) + avgDeviation :REAL; (*average deviation between software time and time device*) + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*) + END_VAR + VAR + i_state :UINT; (*internal variable*) + i_result :UINT; (*internal variable*) + i_tmp :UDINT; (*internal variable*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DstGetInfo (*read information about time device*) + VAR_INPUT + enable :BOOL; (*enables execution*) + pDTStructure :UDINT; (*Pointer to DTStructure*) + END_VAR + VAR_OUTPUT + dstState :USINT; (*timDAYLIGHT_SAVING_TIME, timNORMAL_TIME or timNO_DST*) + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*) + END_VAR + VAR + i_state :UINT; (*internal variable*) + i_result :UINT; (*internal variable*) + i_tmp :UDINT; (*internal variable*) + END_VAR +END_FUNCTION_BLOCK + +{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DstGetInfoDT (*read information about time device*) + VAR_INPUT + enable :BOOL; (*enables execution*) + DT1 :DATE_AND_TIME; (*date and time in UTC*) + END_VAR + VAR_OUTPUT + dstState :USINT; (*timDAYLIGHT_SAVING_TIME, timNORMAL_TIME or timNO_DST*) + status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*) + END_VAR + VAR + i_state :UINT; (*internal variable*) + i_result :UINT; (*internal variable*) + i_tmp :UDINT; (*internal variable*) + END_VAR +END_FUNCTION_BLOCK diff --git a/example/As6Project/Logical/Libraries/_AS/astime/astime.typ b/example/As6Project/Logical/Libraries/_AS/astime/astime.typ new file mode 100644 index 0000000..3609d6e --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/astime/astime.typ @@ -0,0 +1,22 @@ + +TYPE + TIMEStructure : STRUCT (*time structure*) + day : SINT ; (*day (1-31)*) + hour : USINT ; (*hours (0-23)*) + minute : USINT ; (*minutes (0-59)*) + second : USINT ; (*seconds (0-59)*) + millisec : UINT ; (*milliseconds (0-999)*) + microsec : UINT ; (*microseconds (0-999)*) + END_STRUCT; + DTStructure : STRUCT (*date structure*) + year : UINT ; (*year*) + month : USINT ; (*month (1-12)*) + day : USINT ; (*day (1-31)*) + wday : USINT ; (*day of the week (0-6), e.g. 0 = Sunday, 6 = Saturday*) + hour : USINT ; (*hours (0-23)*) + minute : USINT ; (*minutes (0-59)*) + second : USINT ; (*seconds (0-59)*) + millisec : UINT ; (*milliseconds (0-999)*) + microsec : UINT ; (*microseconds (0-999)*) + END_STRUCT; +END_TYPE diff --git a/example/As6Project/Logical/Libraries/_AS/astime/astime.var b/example/As6Project/Logical/Libraries/_AS/astime/astime.var new file mode 100644 index 0000000..70e0c26 --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/astime/astime.var @@ -0,0 +1,18 @@ + +VAR CONSTANT + timEXSETTIME_NO_LOGENTRY : USINT := 1; + timEXSETTIME_NO_OPTION : USINT := 0; + DATE_AND_TIME_MAX : UDINT := 4102444799; + TIME_MIN : DINT := -2073600000; + TIME_MAX : DINT := 2073600000; + timNORMAL_TIME : USINT := 1; + timDAYLIGHT_SAVING_TIME : USINT := 2; + timNO_DST : USINT := 3; + timREAL_TIME_CLOCK : USINT := 1; + timTIME_SERVER : USINT := 2; + timREDUND_INTERFACE : USINT := 3; + timERR_INVALID_PARAMETER : UINT := 33210; + timERR_INVALID_LEN : UINT := 33211; + timERR_INVALID_DTSTRUCTURE : UINT := 33212; + timERR_AR : UINT := 33213; +END_VAR diff --git a/example/As6Project/Logical/Libraries/_AS/astime/binary.lby b/example/As6Project/Logical/Libraries/_AS/astime/binary.lby new file mode 100644 index 0000000..d4b0b7f --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/astime/binary.lby @@ -0,0 +1,12 @@ + + + + + astime.fun + astime.typ + astime.var + + + + + \ No newline at end of file diff --git a/example/As6Project/Logical/Libraries/_AS/runtime/SG3/runtime.h b/example/As6Project/Logical/Libraries/_AS/runtime/SG3/runtime.h new file mode 100644 index 0000000..360394e --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/runtime/SG3/runtime.h @@ -0,0 +1,80 @@ +/* Automation Studio generated header file */ +/* Do not edit ! */ + +#ifndef _RUNTIME_ +#define _RUNTIME_ +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#ifndef _IEC_CONST +#define _IEC_CONST _WEAK const +#endif + +/* Constants */ +#ifdef _REPLACE_CONST + #define ERR_OK 0 + #define ERR_NOTIMPLEMENTED 9999 + #define ERR_FUB_ENABLE_FALSE 0xFFFE + #define ERR_FUB_BUSY 0xFFFF + +/* IEC 61131-3 Datentypen */ + #define IEC_DATATYPE_BOOL 1 + #define IEC_DATATYPE_SINT 2 + #define IEC_DATATYPE_INT 3 + #define IEC_DATATYPE_DINT 4 + #define IEC_DATATYPE_USINT 5 + #define IEC_DATATYPE_UINT 6 + #define IEC_DATATYPE_UDINT 7 + #define IEC_DATATYPE_REAL 8 + #define IEC_DATATYPE_STRING 9 + #define IEC_DATATYPE_ULINT 10 + #define IEC_DATATYPE_DATE_AND_TIME 11 + #define IEC_DATATYPE_TIME 12 + #define IEC_DATATYPE_DATE 13 + #define IEC_DATATYPE_LREAL 14 + #define IEC_DATATYPE_TIME_OF_DAY 16 + #define IEC_DATATYPE_BYTE 17 + #define IEC_DATATYPE_WORD 18 + #define IEC_DATATYPE_DWORD 19 + #define IEC_DATATYPE_LWORD 20 + #define IEC_DATATYPE_WSTRING 21 + #define IEC_DATATYPE_LINT 23 + +#else + _IEC_CONST unsigned short ERR_OK = 0U; + _IEC_CONST unsigned short ERR_NOTIMPLEMENTED = 9999U; + _IEC_CONST unsigned short ERR_FUB_ENABLE_FALSE = 0xFFFEU; + _IEC_CONST unsigned short ERR_FUB_BUSY = 0xFFFFU; + + /* IEC 61131-3 Datentypen */ + _IEC_CONST unsigned short IEC_DATATYPE_BOOL = 1; + _IEC_CONST unsigned short IEC_DATATYPE_SINT = 2; + _IEC_CONST unsigned short IEC_DATATYPE_INT = 3; + _IEC_CONST unsigned short IEC_DATATYPE_DINT = 4; + _IEC_CONST unsigned short IEC_DATATYPE_USINT = 5; + _IEC_CONST unsigned short IEC_DATATYPE_UINT = 6; + _IEC_CONST unsigned short IEC_DATATYPE_UDINT = 7; + _IEC_CONST unsigned short IEC_DATATYPE_REAL = 8; + _IEC_CONST unsigned short IEC_DATATYPE_STRING = 9; + _IEC_CONST unsigned short IEC_DATATYPE_ULINT = 10; + _IEC_CONST unsigned short IEC_DATATYPE_DATE_AND_TIME = 11; + _IEC_CONST unsigned short IEC_DATATYPE_TIME = 12; + _IEC_CONST unsigned short IEC_DATATYPE_DATE = 13; + _IEC_CONST unsigned short IEC_DATATYPE_LREAL = 14; + _IEC_CONST unsigned short IEC_DATATYPE_TIME_OF_DAY = 16; + _IEC_CONST unsigned short IEC_DATATYPE_BYTE = 17; + _IEC_CONST unsigned short IEC_DATATYPE_WORD = 18; + _IEC_CONST unsigned short IEC_DATATYPE_DWORD = 19; + _IEC_CONST unsigned short IEC_DATATYPE_LWORD = 20; + _IEC_CONST unsigned short IEC_DATATYPE_WSTRING = 21; + _IEC_CONST unsigned short IEC_DATATYPE_LINT = 23; +#endif + +#ifdef __cplusplus +}; +#endif +#endif /* _RUNTIME_ */ + diff --git a/example/As6Project/Logical/Libraries/_AS/runtime/SG4/runtime.h b/example/As6Project/Logical/Libraries/_AS/runtime/SG4/runtime.h new file mode 100644 index 0000000..e844c89 --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/runtime/SG4/runtime.h @@ -0,0 +1,489 @@ +/* Automation Studio generated header file */ +/* Do not edit ! */ + +#ifndef _RUNTIME_ +#define _RUNTIME_ +#ifdef __cplusplus +extern "C" +{ +#endif + +#include + +#ifndef _BUR_PUBLIC +#define _BUR_PUBLIC +#endif +/* Constants */ +#ifdef _REPLACE_CONST + #define IEC_DATATYPE_LINT 23U + #define IEC_DATATYPE_WSTRING 21U + #define IEC_DATATYPE_LWORD 20U + #define IEC_DATATYPE_DWORD 19U + #define IEC_DATATYPE_WORD 18U + #define IEC_DATATYPE_BYTE 17U + #define IEC_DATATYPE_TIME_OF_DAY 16U + #define IEC_DATATYPE_LREAL 14U + #define IEC_DATATYPE_DATE 13U + #define IEC_DATATYPE_TIME 12U + #define IEC_DATATYPE_DATE_AND_TIME 11U + #define IEC_DATATYPE_ULINT 10U + #define IEC_DATATYPE_STRING 9U + #define IEC_DATATYPE_REAL 8U + #define IEC_DATATYPE_UDINT 7U + #define IEC_DATATYPE_UINT 6U + #define IEC_DATATYPE_USINT 5U + #define IEC_DATATYPE_DINT 4U + #define IEC_DATATYPE_INT 3U + #define IEC_DATATYPE_SINT 2U + #define IEC_DATATYPE_BOOL 1U + #define ERR_FB_NOT_IMPLEMENTED (-1070585592) + #define ERR_FUB_REDUNDANT 35688U + #define ERR_FUB_BUSY 65535U + #define ERR_FUB_ENABLE_FALSE 65534U + #define ERR_NOTIMPLEMENTED 9999U + #define ERR_OK 0U +#else + #ifndef _GLOBAL_CONST + #define _GLOBAL_CONST _WEAK const + #endif + _GLOBAL_CONST unsigned short IEC_DATATYPE_LINT; + _GLOBAL_CONST unsigned short IEC_DATATYPE_WSTRING; + _GLOBAL_CONST unsigned short IEC_DATATYPE_LWORD; + _GLOBAL_CONST unsigned short IEC_DATATYPE_DWORD; + _GLOBAL_CONST unsigned short IEC_DATATYPE_WORD; + _GLOBAL_CONST unsigned short IEC_DATATYPE_BYTE; + _GLOBAL_CONST unsigned short IEC_DATATYPE_TIME_OF_DAY; + _GLOBAL_CONST unsigned short IEC_DATATYPE_LREAL; + _GLOBAL_CONST unsigned short IEC_DATATYPE_DATE; + _GLOBAL_CONST unsigned short IEC_DATATYPE_TIME; + _GLOBAL_CONST unsigned short IEC_DATATYPE_DATE_AND_TIME; + _GLOBAL_CONST unsigned short IEC_DATATYPE_ULINT; + _GLOBAL_CONST unsigned short IEC_DATATYPE_STRING; + _GLOBAL_CONST unsigned short IEC_DATATYPE_REAL; + _GLOBAL_CONST unsigned short IEC_DATATYPE_UDINT; + _GLOBAL_CONST unsigned short IEC_DATATYPE_UINT; + _GLOBAL_CONST unsigned short IEC_DATATYPE_USINT; + _GLOBAL_CONST unsigned short IEC_DATATYPE_DINT; + _GLOBAL_CONST unsigned short IEC_DATATYPE_INT; + _GLOBAL_CONST unsigned short IEC_DATATYPE_SINT; + _GLOBAL_CONST unsigned short IEC_DATATYPE_BOOL; + _GLOBAL_CONST signed long ERR_FB_NOT_IMPLEMENTED; + _GLOBAL_CONST unsigned short ERR_FUB_REDUNDANT; + _GLOBAL_CONST unsigned short ERR_FUB_BUSY; + _GLOBAL_CONST unsigned short ERR_FUB_ENABLE_FALSE; + _GLOBAL_CONST unsigned short ERR_NOTIMPLEMENTED; + _GLOBAL_CONST unsigned short ERR_OK; +#endif + + + + +/* Datatypes and datatypes of function blocks */ +typedef struct SFCActionControl +{ + /* VAR_INPUT (analog) */ + plctime T; + /* VAR (analog) */ + unsigned char S_FF_SET; + unsigned char S_FF_R1; + unsigned char S_FF_Q; + unsigned char dummy1; + plctime L_TMR_PT; + plctime L_TMR_ET; + plctime L_TMR_STAR; + unsigned char L_TMR_IN; + unsigned char L_TMR_Q; + unsigned char L_TMR_M; + unsigned char dummy2; + plctime D_TMR_PT; + plctime D_TMR_ET; + plctime D_TMR_STAR; + unsigned char D_TMR_IN; + unsigned char D_TMR_Q; + unsigned char D_TMR_M; + unsigned char dummy3; + unsigned char P_TRIG_CLK; + unsigned char P_TRIG_Q; + unsigned char P_TRIG_M; + unsigned char dummy4; + plctime SD_TMR_PT; + plctime SD_TMR_ET; + plctime SD_TMR_STA; + unsigned char SD_TMR_IN; + unsigned char SD_TMR_Q; + unsigned char SD_TMR_M; + unsigned char dummy5; + unsigned char SD_FF_SET; + unsigned char SD_FF_R1; + unsigned char SD_FF_Q; + unsigned char DS_FF_SET; + unsigned char DS_FF_R1; + unsigned char DS_FF_Q; + plctime DS_TMR_PT; + plctime DS_TMR_ET; + plctime DS_TMR_STA; + unsigned char DS_TMR_IN; + unsigned char DS_TMR_Q; + unsigned char DS_TMR_M; + unsigned char dummy6; + unsigned char SL_FF_SET; + unsigned char SL_FF_R1; + unsigned char SL_FF_Q; + unsigned char dummy7; + plctime SL_TMR_PT; + plctime SL_TMR_ET; + plctime SL_TMR_STA; + unsigned char SL_TMR_IN; + unsigned char SL_TMR_Q; + unsigned char SL_TMR_M; + unsigned char dummy8; + /* VAR_INPUT (digital) */ + plcbit N; + plcbit R0; + plcbit S0; + plcbit L; + plcbit D; + plcbit P; + plcbit SD; + plcbit DS; + plcbit SL; + /* VAR_OUTPUT (digital) */ + plcbit Q; +} SFCActionControl_typ; + +typedef struct SFCActionType +{ plcbit x; + plcbit _x; + plctime t; + plctime _t; + struct SFCActionControl AC; +} SFCActionType; + +typedef struct SFCAC2 +{ + /* VAR_INPUT (analog) */ + plctime T; + /* VAR (analog) */ + unsigned char S_FF_SET; + unsigned char S_FF_R1; + unsigned char S_FF_Q; + plctime L_TMR_PT; + plctime L_TMR_ET; + plctime L_TMR_STAR; + unsigned char L_TMR_IN; + unsigned char L_TMR_Q; + unsigned char L_TMR_M; + plctime D_TMR_PT; + plctime D_TMR_ET; + plctime D_TMR_STAR; + unsigned char D_TMR_IN; + unsigned char D_TMR_Q; + unsigned char D_TMR_M; + plctime SD_TMR_PT; + plctime SD_TMR_ET; + plctime SD_TMR_STA; + unsigned char SD_TMR_IN; + unsigned char SD_TMR_Q; + unsigned char SD_TMR_M; + unsigned char SD_FF_SET; + unsigned char SD_FF_R1; + unsigned char SD_FF_Q1; + unsigned char DS_FF_SET; + unsigned char DS_FF_R1; + unsigned char DS_FF_Q1; + plctime DS_TMR_PT; + plctime DS_TMR_ET; + plctime DS_TMR_STA; + unsigned char DS_TMR_IN; + unsigned char DS_TMR_Q; + unsigned char DS_TMR_M; + unsigned char SL_FF_SET; + unsigned char SL_FF_R1; + unsigned char SL_FF_Q; + plctime SL_TMR_PT; + plctime SL_TMR_ET; + plctime SL_TMR_STA; + unsigned char SL_TMR_IN; + unsigned char SL_TMR_Q; + unsigned char SL_TMR_M; + unsigned char P_TRIG_Q; + unsigned char P_TRIG_M; + unsigned char Q_TRIG_Q; + unsigned char Q_TRIG_M; + unsigned char P1_TRIG_Q; + unsigned char P1_TRIG_M; + unsigned char P0_TRIG_Q; + unsigned char P0_TRIG_M; + /* VAR_INPUT (digital) */ + plcbit N; + plcbit R0; + plcbit S0; + plcbit L; + plcbit D; + plcbit P; + plcbit P1; + plcbit P0; + plcbit SD; + plcbit DS; + plcbit SL; + /* VAR_OUTPUT (digital) */ + plcbit Q; + plcbit A; +} SFCAC2_typ; + +typedef struct SFCActionType2 +{ plcbit x; + plcbit _x; + struct SFCAC2 AC; +} SFCActionType2; + +typedef struct SFCActionCType +{ plcbit x; + plcbit _x; + plcbit force; + plcbit _force; + plcbit active; + plcbit _active; + plcbit error; + struct SFCActionControl AC; +} SFCActionCType; + +typedef struct SFCActionCType2 +{ plcbit x; + plcbit _x; + plcbit force; + plcbit _force; + plcbit active; + plcbit _active; + plcbit error; + struct SFCAC2 AC; +} SFCActionCType2; + +typedef struct TimerType +{ double ptime; + double etime; + double start; + unsigned char in; + unsigned char q; +} TimerType; + +typedef struct SFCAC3 +{ + /* VAR_INPUT (analog) */ + double T; + double T_ACT; + /* VAR (analog) */ + struct TimerType L_TMR; + struct TimerType D_TMR; + struct TimerType SD_TMR; + struct TimerType DS_TMR; + struct TimerType SL_TMR; + unsigned char S_FF_Q1; + unsigned char SD_FF_Q1; + unsigned char DS_FF_Q1; + unsigned char SL_FF_Q1; + unsigned char P_R_TRIG_Q; + unsigned char P_R_TRIG_M; + unsigned char Q_F_TRIG_Q; + unsigned char Q_F_TRIG_M; + unsigned char P1_R_TRIG_Q; + unsigned char P1_R_TRIG_M; + unsigned char P0_F_TRIG_Q; + unsigned char P0_F_TRIG_M; + /* VAR_INPUT (digital) */ + plcbit N; + plcbit R0; + plcbit S0; + plcbit L; + plcbit D; + plcbit P; + plcbit P1; + plcbit P0; + plcbit SD; + plcbit DS; + plcbit SL; + plcbit PAUSE; + /* VAR_OUTPUT (digital) */ + plcbit Q; + plcbit A; +} SFCAC3_typ; + +typedef struct SFCActionCType3 +{ double t; + double _t; + double tp; + plcbit x; + plcbit _x; + plcbit force; + plcbit _force; + plcbit active; + plcbit _active; + plcbit error; + struct SFCAC3 AC; +} SFCActionCType3; + +typedef struct SFCStepType +{ plcbit x; + plctime t; + plcbit _x; + plctime _t; +} SFCStepType; + +typedef struct SFCStepCType +{ plctime t; + plctime _t; + unsigned long inactive_actions; + unsigned long _inactive_actions; + unsigned long error_actions; + plcbit x; + plcbit _x; + plcbit x_activate; + plcbit force; + plcbit _force; + plcbit active; + plcbit _active; + plcbit error; + plcbit tip; + plcbit tip_disable_duration; + plcbit tip_disable_action; +} SFCStepCType; + +typedef struct SFCStepCType3 +{ double t; + double _t; + double tp; + unsigned long inactive_actions; + unsigned long _inactive_actions; + unsigned long error_actions; + plcbit x; + plcbit _x; + plcbit x_activate; + plcbit force; + plcbit _force; + plcbit active; + plcbit _active; + plcbit error; + plcbit tip; + plcbit tip_disable_duration; + plcbit tip_disable_action; +} SFCStepCType3; + +typedef struct SFCSimpleStepCType +{ plctime t; + plctime _t; + plcbit x; + plcbit _x; + plcbit x_activate; + plcbit force; + plcbit _force; + plcbit active; + plcbit _active; + plcbit error; + plcbit tip; + plcbit tip_disable_duration; + plcbit tip_disable_action; +} SFCSimpleStepCType; + +typedef struct SFCSimpleStepCType3 +{ double t; + double _t; + double tp; + plcbit x; + plcbit _x; + plcbit x_activate; + plcbit force; + plcbit _force; + plcbit active; + plcbit _active; + plcbit error; + plcbit tip; + plcbit tip_disable_duration; + plcbit tip_disable_action; +} SFCSimpleStepCType3; + +typedef struct SFCTransitionCType +{ plcbit force; + plcbit _force; + plcbit active; + plcbit _active; +} SFCTransitionCType; + +typedef struct ArFBStateInternalType +{ unsigned long ExecuteRef; + unsigned long BusyRef; + unsigned long DoneRef; + unsigned long ErrorRef; + unsigned long ActiveRef; + unsigned long StatusRef; + unsigned long FBCyclic; + unsigned long AsyfumaState; + unsigned long FBResetOut; + unsigned long Argument; + unsigned long State; + plcbit ExecutePrev; +} ArFBStateInternalType; + +typedef struct ArFBAsyFuMaInternalType +{ unsigned short State; + signed long Result; +} ArFBAsyFuMaInternalType; + +typedef struct r_trig +{ + /* VAR_INPUT (digital) */ + plcbit CLK; + /* VAR_OUTPUT (digital) */ + plcbit Q; + /* VAR (digital) */ + plcbit M; +} r_trig_typ; + +typedef struct f_trig +{ + /* VAR_INPUT (digital) */ + plcbit CLK; + /* VAR_OUTPUT (digital) */ + plcbit Q; + /* VAR (digital) */ + plcbit M; +} f_trig_typ; + +typedef struct rf_trig +{ + /* VAR_INPUT (digital) */ + plcbit CLK; + /* VAR_OUTPUT (digital) */ + plcbit Q; + /* VAR (digital) */ + plcbit M; +} rf_trig_typ; + + + +/* Prototyping of functions and function blocks */ +_BUR_PUBLIC void r_trig(struct r_trig* inst); +_BUR_PUBLIC void f_trig(struct f_trig* inst); +_BUR_PUBLIC void rf_trig(struct rf_trig* inst); +_BUR_PUBLIC void SFCActionControl(struct SFCActionControl* inst); +_BUR_PUBLIC void SFCAC2(struct SFCAC2* inst); +_BUR_PUBLIC void SFCAC3(struct SFCAC3* inst); +_BUR_PUBLIC plctime GetTime(void); +_BUR_PUBLIC double RealTan(double x); +_BUR_PUBLIC double RealAtan(double x); +_BUR_PUBLIC double RealAsin(double x); +_BUR_PUBLIC double RealAcos(double x); +_BUR_PUBLIC double RealExp(double x); +_BUR_PUBLIC double RealLn(double x); +_BUR_PUBLIC double RealLog(double x); +_BUR_PUBLIC double RealExpt(double x, double y); +_BUR_PUBLIC double RealAbs(double x); +_BUR_PUBLIC double RealSin(double x); +_BUR_PUBLIC double RealCos(double x); +_BUR_PUBLIC double RealSqrt(double x); + + +#ifdef __cplusplus +}; +#endif +#endif /* _RUNTIME_ */ + diff --git a/example/As6Project/Logical/Libraries/_AS/runtime/SGC/runtime.h b/example/As6Project/Logical/Libraries/_AS/runtime/SGC/runtime.h new file mode 100644 index 0000000..360394e --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/runtime/SGC/runtime.h @@ -0,0 +1,80 @@ +/* Automation Studio generated header file */ +/* Do not edit ! */ + +#ifndef _RUNTIME_ +#define _RUNTIME_ +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#ifndef _IEC_CONST +#define _IEC_CONST _WEAK const +#endif + +/* Constants */ +#ifdef _REPLACE_CONST + #define ERR_OK 0 + #define ERR_NOTIMPLEMENTED 9999 + #define ERR_FUB_ENABLE_FALSE 0xFFFE + #define ERR_FUB_BUSY 0xFFFF + +/* IEC 61131-3 Datentypen */ + #define IEC_DATATYPE_BOOL 1 + #define IEC_DATATYPE_SINT 2 + #define IEC_DATATYPE_INT 3 + #define IEC_DATATYPE_DINT 4 + #define IEC_DATATYPE_USINT 5 + #define IEC_DATATYPE_UINT 6 + #define IEC_DATATYPE_UDINT 7 + #define IEC_DATATYPE_REAL 8 + #define IEC_DATATYPE_STRING 9 + #define IEC_DATATYPE_ULINT 10 + #define IEC_DATATYPE_DATE_AND_TIME 11 + #define IEC_DATATYPE_TIME 12 + #define IEC_DATATYPE_DATE 13 + #define IEC_DATATYPE_LREAL 14 + #define IEC_DATATYPE_TIME_OF_DAY 16 + #define IEC_DATATYPE_BYTE 17 + #define IEC_DATATYPE_WORD 18 + #define IEC_DATATYPE_DWORD 19 + #define IEC_DATATYPE_LWORD 20 + #define IEC_DATATYPE_WSTRING 21 + #define IEC_DATATYPE_LINT 23 + +#else + _IEC_CONST unsigned short ERR_OK = 0U; + _IEC_CONST unsigned short ERR_NOTIMPLEMENTED = 9999U; + _IEC_CONST unsigned short ERR_FUB_ENABLE_FALSE = 0xFFFEU; + _IEC_CONST unsigned short ERR_FUB_BUSY = 0xFFFFU; + + /* IEC 61131-3 Datentypen */ + _IEC_CONST unsigned short IEC_DATATYPE_BOOL = 1; + _IEC_CONST unsigned short IEC_DATATYPE_SINT = 2; + _IEC_CONST unsigned short IEC_DATATYPE_INT = 3; + _IEC_CONST unsigned short IEC_DATATYPE_DINT = 4; + _IEC_CONST unsigned short IEC_DATATYPE_USINT = 5; + _IEC_CONST unsigned short IEC_DATATYPE_UINT = 6; + _IEC_CONST unsigned short IEC_DATATYPE_UDINT = 7; + _IEC_CONST unsigned short IEC_DATATYPE_REAL = 8; + _IEC_CONST unsigned short IEC_DATATYPE_STRING = 9; + _IEC_CONST unsigned short IEC_DATATYPE_ULINT = 10; + _IEC_CONST unsigned short IEC_DATATYPE_DATE_AND_TIME = 11; + _IEC_CONST unsigned short IEC_DATATYPE_TIME = 12; + _IEC_CONST unsigned short IEC_DATATYPE_DATE = 13; + _IEC_CONST unsigned short IEC_DATATYPE_LREAL = 14; + _IEC_CONST unsigned short IEC_DATATYPE_TIME_OF_DAY = 16; + _IEC_CONST unsigned short IEC_DATATYPE_BYTE = 17; + _IEC_CONST unsigned short IEC_DATATYPE_WORD = 18; + _IEC_CONST unsigned short IEC_DATATYPE_DWORD = 19; + _IEC_CONST unsigned short IEC_DATATYPE_LWORD = 20; + _IEC_CONST unsigned short IEC_DATATYPE_WSTRING = 21; + _IEC_CONST unsigned short IEC_DATATYPE_LINT = 23; +#endif + +#ifdef __cplusplus +}; +#endif +#endif /* _RUNTIME_ */ + diff --git a/example/As6Project/Logical/Libraries/_AS/runtime/binary.lby b/example/As6Project/Logical/Libraries/_AS/runtime/binary.lby new file mode 100644 index 0000000..2800d28 --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/runtime/binary.lby @@ -0,0 +1,9 @@ + + + + + runtime.fun + runtime.typ + runtime.var + + \ No newline at end of file diff --git a/example/As6Project/Logical/Libraries/_AS/runtime/runtime.fun b/example/As6Project/Logical/Libraries/_AS/runtime/runtime.fun new file mode 100644 index 0000000..4d2564d --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/runtime/runtime.fun @@ -0,0 +1,282 @@ + +{REDUND_OK} FUNCTION_BLOCK r_trig (*for internal use only - do not use this function in user programs*) + VAR_INPUT + CLK :BOOL; + END_VAR + VAR_OUTPUT + Q :BOOL; + END_VAR + VAR + M :BOOL; + END_VAR +END_FUNCTION_BLOCK +{REDUND_OK} FUNCTION_BLOCK f_trig (*for internal use only - do not use this function in user programs*) + VAR_INPUT + CLK :BOOL; + END_VAR + VAR_OUTPUT + Q :BOOL; + END_VAR + VAR + M :BOOL; + END_VAR +END_FUNCTION_BLOCK +{REDUND_OK} FUNCTION_BLOCK rf_trig (*for internal use only - do not use this function in user programs*) + VAR_INPUT + CLK :BOOL; + END_VAR + VAR_OUTPUT + Q :BOOL; + END_VAR + VAR + M :BOOL; + END_VAR +END_FUNCTION_BLOCK +FUNCTION GetTime : TIME (*for internal use only - do not use this function in user programs*) +END_FUNCTION +{REDUND_OK} FUNCTION_BLOCK SFCActionControl (*for internal use only - do not use this function in user programs*) + VAR_INPUT + N :BOOL; + R0 :BOOL; + S0 :BOOL; + L :BOOL; + D :BOOL; + P :BOOL; + SD :BOOL; + DS :BOOL; + SL :BOOL; + T :TIME; + END_VAR + VAR_OUTPUT + Q :BOOL; + END_VAR + VAR + S_FF_SET :USINT; + S_FF_R1 :USINT; + S_FF_Q :USINT; + dummy1 :USINT; + L_TMR_PT :TIME; + L_TMR_ET :TIME; + L_TMR_STAR :TIME; + L_TMR_IN :USINT; + L_TMR_Q :USINT; + L_TMR_M :USINT; + dummy2 :USINT; + D_TMR_PT :TIME; + D_TMR_ET :TIME; + D_TMR_STAR :TIME; + D_TMR_IN :USINT; + D_TMR_Q :USINT; + D_TMR_M :USINT; + dummy3 :USINT; + P_TRIG_CLK :USINT; + P_TRIG_Q :USINT; + P_TRIG_M :USINT; + dummy4 :USINT; + SD_TMR_PT :TIME; + SD_TMR_ET :TIME; + SD_TMR_STA :TIME; + SD_TMR_IN :USINT; + SD_TMR_Q :USINT; + SD_TMR_M :USINT; + dummy5 :USINT; + SD_FF_SET :USINT; + SD_FF_R1 :USINT; + SD_FF_Q :USINT; + DS_FF_SET :USINT; + DS_FF_R1 :USINT; + DS_FF_Q :USINT; + DS_TMR_PT :TIME; + DS_TMR_ET :TIME; + DS_TMR_STA :TIME; + DS_TMR_IN :USINT; + DS_TMR_Q :USINT; + DS_TMR_M :USINT; + dummy6 :USINT; + SL_FF_SET :USINT; + SL_FF_R1 :USINT; + SL_FF_Q :USINT; + dummy7 :USINT; + SL_TMR_PT :TIME; + SL_TMR_ET :TIME; + SL_TMR_STA :TIME; + SL_TMR_IN :USINT; + SL_TMR_Q :USINT; + SL_TMR_M :USINT; + dummy8 :USINT; + END_VAR +END_FUNCTION_BLOCK +{REDUND_OK} FUNCTION_BLOCK SFCAC2 (*for internal use only - do not use this function in user programs*) + VAR_INPUT + N : {REDUND_UNREPLICABLE} BOOL; + R0 : {REDUND_UNREPLICABLE} BOOL; + S0 : {REDUND_UNREPLICABLE} BOOL; + L : {REDUND_UNREPLICABLE} BOOL; + D : {REDUND_UNREPLICABLE} BOOL; + P : {REDUND_UNREPLICABLE} BOOL; + P1 : {REDUND_UNREPLICABLE} BOOL; + P0 : {REDUND_UNREPLICABLE} BOOL; + SD : {REDUND_UNREPLICABLE} BOOL; + DS : {REDUND_UNREPLICABLE} BOOL; + SL : {REDUND_UNREPLICABLE} BOOL; + T :TIME; + END_VAR + VAR_OUTPUT + Q :BOOL; + A :BOOL; + END_VAR + VAR + S_FF_SET :USINT; + S_FF_R1 :USINT; + S_FF_Q :USINT; + L_TMR_PT :TIME; + L_TMR_ET :TIME; + L_TMR_STAR :TIME; + L_TMR_IN :USINT; + L_TMR_Q :USINT; + L_TMR_M :USINT; + D_TMR_PT :TIME; + D_TMR_ET :TIME; + D_TMR_STAR :TIME; + D_TMR_IN :USINT; + D_TMR_Q :USINT; + D_TMR_M :USINT; + SD_TMR_PT :TIME; + SD_TMR_ET :TIME; + SD_TMR_STA :TIME; + SD_TMR_IN :USINT; + SD_TMR_Q :USINT; + SD_TMR_M :USINT; + SD_FF_SET :USINT; + SD_FF_R1 :USINT; + SD_FF_Q1 :USINT; + DS_FF_SET :USINT; + DS_FF_R1 :USINT; + DS_FF_Q1 :USINT; + DS_TMR_PT :TIME; + DS_TMR_ET :TIME; + DS_TMR_STA :TIME; + DS_TMR_IN :USINT; + DS_TMR_Q :USINT; + DS_TMR_M :USINT; + SL_FF_SET :USINT; + SL_FF_R1 :USINT; + SL_FF_Q :USINT; + SL_TMR_PT :TIME; + SL_TMR_ET :TIME; + SL_TMR_STA :TIME; + SL_TMR_IN :USINT; + SL_TMR_Q :USINT; + SL_TMR_M :USINT; + P_TRIG_Q :USINT; + P_TRIG_M :USINT; + Q_TRIG_Q :USINT; + Q_TRIG_M :USINT; + P1_TRIG_Q :USINT; + P1_TRIG_M :USINT; + P0_TRIG_Q :USINT; + P0_TRIG_M :USINT; + END_VAR +END_FUNCTION_BLOCK +{REDUND_OK} FUNCTION RealTan : LREAL + VAR_INPUT + x :LREAL; + END_VAR +END_FUNCTION +{REDUND_OK} FUNCTION RealAtan : LREAL + VAR_INPUT + x :LREAL; + END_VAR +END_FUNCTION +{REDUND_OK} FUNCTION RealAsin : LREAL + VAR_INPUT + x :LREAL; + END_VAR +END_FUNCTION +{REDUND_OK} FUNCTION RealAcos : LREAL + VAR_INPUT + x :LREAL; + END_VAR +END_FUNCTION +{REDUND_OK} FUNCTION RealExp : LREAL + VAR_INPUT + x :LREAL; + END_VAR +END_FUNCTION +{REDUND_OK} FUNCTION RealLn : LREAL + VAR_INPUT + x :LREAL; + END_VAR +END_FUNCTION +{REDUND_OK} FUNCTION RealLog : LREAL + VAR_INPUT + x :LREAL; + END_VAR +END_FUNCTION +{REDUND_OK} FUNCTION RealExpt : LREAL + VAR_INPUT + x :LREAL; + y :LREAL; + END_VAR +END_FUNCTION +{REDUND_OK} FUNCTION RealAbs : LREAL + VAR_INPUT + x :LREAL; + END_VAR +END_FUNCTION +{REDUND_OK} FUNCTION RealSin : LREAL + VAR_INPUT + x :LREAL; + END_VAR +END_FUNCTION +{REDUND_OK} FUNCTION RealCos : LREAL + VAR_INPUT + x :LREAL; + END_VAR +END_FUNCTION +{REDUND_OK} FUNCTION RealSqrt : LREAL + VAR_INPUT + x :LREAL; + END_VAR +END_FUNCTION +{REDUND_OK} FUNCTION_BLOCK SFCAC3 (*for internal use only - do not use this function in user programs*) + VAR_INPUT + N : {REDUND_UNREPLICABLE} BOOL; + R0 : {REDUND_UNREPLICABLE} BOOL; + S0 : {REDUND_UNREPLICABLE} BOOL; + L : {REDUND_UNREPLICABLE} BOOL; + D : {REDUND_UNREPLICABLE} BOOL; + P : {REDUND_UNREPLICABLE} BOOL; + P1 : {REDUND_UNREPLICABLE} BOOL; + P0 : {REDUND_UNREPLICABLE} BOOL; + SD : {REDUND_UNREPLICABLE} BOOL; + DS : {REDUND_UNREPLICABLE} BOOL; + SL : {REDUND_UNREPLICABLE} BOOL; + T :LREAL; + T_ACT : {REDUND_UNREPLICABLE} LREAL; + PAUSE : {REDUND_UNREPLICABLE} BOOL; + END_VAR + VAR_OUTPUT + Q : {REDUND_UNREPLICABLE} BOOL; + A :BOOL; + END_VAR + VAR + L_TMR :TimerType; + D_TMR :TimerType; + SD_TMR :TimerType; + DS_TMR :TimerType; + SL_TMR :TimerType; + S_FF_Q1 :USINT; + SD_FF_Q1 :USINT; + DS_FF_Q1 :USINT; + SL_FF_Q1 :USINT; + P_R_TRIG_Q : {REDUND_UNREPLICABLE} USINT; + P_R_TRIG_M :USINT; + Q_F_TRIG_Q : {REDUND_UNREPLICABLE} USINT; + Q_F_TRIG_M :USINT; + P1_R_TRIG_Q : {REDUND_UNREPLICABLE} USINT; + P1_R_TRIG_M :USINT; + P0_F_TRIG_Q : {REDUND_UNREPLICABLE} USINT; + P0_F_TRIG_M :USINT; + END_VAR +END_FUNCTION_BLOCK diff --git a/example/As6Project/Logical/Libraries/_AS/runtime/runtime.typ b/example/As6Project/Logical/Libraries/_AS/runtime/runtime.typ new file mode 100644 index 0000000..4bf1514 --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/runtime/runtime.typ @@ -0,0 +1,156 @@ + +TYPE + SFCActionType : STRUCT (*internal use*) + x : BOOL; + _x : BOOL; + t : TIME; + _t : TIME; + AC : SFCActionControl; + END_STRUCT; + SFCActionType2 : STRUCT (*internal use*) + x : BOOL; + _x : BOOL; + AC : SFCAC2; + END_STRUCT; + SFCActionCType : STRUCT (*internal use*) + x : BOOL; + _x : BOOL; + force : BOOL; + _force : BOOL; + active : BOOL; + _active : BOOL; + error : BOOL; + AC : SFCActionControl; + END_STRUCT; + SFCActionCType2 : STRUCT (*internal use*) + x : BOOL; + _x : BOOL; + force : BOOL; + _force : BOOL; + active : BOOL; + _active : BOOL; + error : BOOL; + AC : SFCAC2; + END_STRUCT; + SFCActionCType3 : STRUCT (*internal use*) + t : LREAL; + _t : LREAL; + tp : LREAL; + x : BOOL; + _x : BOOL; + force : BOOL; + _force : BOOL; + active : BOOL; + _active : BOOL; + error : BOOL; + AC : SFCAC3; + END_STRUCT; + SFCStepType : STRUCT (*internal use*) + x : BOOL; + t : TIME; + _x : BOOL; + _t : TIME; + END_STRUCT; + SFCStepCType : STRUCT (*internal use*) + t : TIME; + _t : TIME; + inactive_actions : UDINT; + _inactive_actions : UDINT; + error_actions : UDINT; + x : BOOL; + _x : BOOL; + x_activate : BOOL; + force : BOOL; + _force : BOOL; + active : BOOL; + _active : BOOL; + error : BOOL; + tip : BOOL; + tip_disable_duration: BOOL; + tip_disable_action : BOOL; + END_STRUCT; + SFCStepCType3 : STRUCT (*internal use*) + t : LREAL; + _t : LREAL; + tp : LREAL; + inactive_actions : UDINT; + _inactive_actions : UDINT; + error_actions : UDINT; + x : BOOL; + _x : BOOL; + x_activate : {REDUND_UNREPLICABLE} BOOL; + force : BOOL; + _force : BOOL; + active : BOOL; + _active : BOOL; + error : BOOL; + tip : BOOL; + tip_disable_duration : BOOL; + tip_disable_action : BOOL; + END_STRUCT; + SFCSimpleStepCType : STRUCT (*internal use*) + t : TIME; + _t : TIME; + x : BOOL; + _x : BOOL; + x_activate : BOOL; + force : BOOL; + _force : BOOL; + active : BOOL; + _active : BOOL; + error : BOOL; + tip : BOOL; + tip_disable_duration : BOOL; + tip_disable_action : BOOL; + END_STRUCT; + SFCSimpleStepCType3 : STRUCT (*internal use*) + t : LREAL; + _t : LREAL; + tp : LREAL; + x : BOOL; + _x : BOOL; + x_activate : {REDUND_UNREPLICABLE} BOOL; + force : BOOL; + _force : BOOL; + active : BOOL; + _active : BOOL; + error : BOOL; + tip : BOOL; + tip_disable_duration : BOOL; + tip_disable_action : BOOL; + END_STRUCT; + SFCTransitionCType : STRUCT (*internal use*) + force : BOOL; + _force : BOOL; + active : BOOL; + _active : BOOL; + END_STRUCT; + TimerType : STRUCT (*internal use*) + ptime : LREAL; + etime : LREAL; + start : LREAL; + in : USINT; + q : USINT; + END_STRUCT; + + ArFBStateInternalType : STRUCT (*fb state machine internal context*) + ExecuteRef : UDINT; + BusyRef : UDINT; + DoneRef : UDINT; + ErrorRef : UDINT; + ActiveRef : UDINT; + StatusRef : UDINT; + FBCyclic : UDINT; + AsyfumaState : UDINT; + FBResetOut : UDINT; + Argument : UDINT; + State : UDINT; + ExecutePrev : BOOL; + END_STRUCT; + + ArFBAsyFuMaInternalType : STRUCT (*asynchronous function manager internal context*) + State : UINT; + Result : DINT; + END_STRUCT; + +END_TYPE diff --git a/example/As6Project/Logical/Libraries/_AS/runtime/runtime.var b/example/As6Project/Logical/Libraries/_AS/runtime/runtime.var new file mode 100644 index 0000000..c955341 --- /dev/null +++ b/example/As6Project/Logical/Libraries/_AS/runtime/runtime.var @@ -0,0 +1,35 @@ + + (*Common Functionblock Status*) +VAR CONSTANT + ERR_OK : UINT := 0; (*no error*) + ERR_NOTIMPLEMENTED : UINT := 9999; (*function or function block not implemented*) + ERR_FUB_ENABLE_FALSE : UINT := 16#FFFE; (*function block parameter "enable" is FALSE*) + ERR_FUB_BUSY : UINT := 16#FFFF; (*function block still working*) + ERR_FUB_REDUNDANT : UINT := 35688; (*This FUB can not be used on the standby CPU*) + ERR_FB_NOT_IMPLEMENTED: DINT := -1070585592;(*function or function block not implemented for the target system*) +END_VAR + +(*IEC 61131-3 Datatypes*) +VAR CONSTANT + IEC_DATATYPE_BOOL : UINT := 1; (*8 Bit containing a boolean value FALSE=0 or TRUE=1*) + IEC_DATATYPE_SINT : UINT := 2; (*8 Bit signed integer*) + IEC_DATATYPE_INT : UINT := 3; (*16 Bit signed integer*) + IEC_DATATYPE_DINT : UINT := 4; (*32 Bit signed integer*) + IEC_DATATYPE_USINT : UINT := 5; (*8 Bit unsigned integer*) + IEC_DATATYPE_UINT : UINT := 6; (*16 Bit unsigned integer*) + IEC_DATATYPE_UDINT : UINT := 7; (*32 Bit unsigned integer*) + IEC_DATATYPE_REAL : UINT := 8; (*32 Bit floating point number*) + IEC_DATATYPE_STRING : UINT := 9; (*Variable-length single-byte character string*) + IEC_DATATYPE_ULINT : UINT := 10; (*64 Bit unsigned integer*) + IEC_DATATYPE_DATE_AND_TIME : UINT := 11; (*32 Bit of Date in Seconds since 01.01.1970 00:00:00*) + IEC_DATATYPE_TIME : UINT := 12; (*32 Bit of Time in ms*) + IEC_DATATYPE_DATE : UINT := 13; (*32 Bit of Date (only)*) + IEC_DATATYPE_LREAL : UINT := 14; (*64 Bit floating point number*) + IEC_DATATYPE_TIME_OF_DAY: UINT := 16; (*32 Bit Time of day (only)*) + IEC_DATATYPE_BYTE : UINT := 17; (*Bit string of length 8*) + IEC_DATATYPE_WORD : UINT := 18; (*Bit string of length 16*) + IEC_DATATYPE_DWORD : UINT := 19; (*Bit string of length 32*) + IEC_DATATYPE_LWORD : UINT := 20; (*Bit string of length 64*) + IEC_DATATYPE_WSTRING : UINT := 21; (*Variable-length double-byte character string*) + IEC_DATATYPE_LINT : UINT := 23; (*64 Bit signed integer*) +END_VAR diff --git a/example/As6Project/Logical/Package.pkg b/example/As6Project/Logical/Package.pkg new file mode 100644 index 0000000..7a1c7ee --- /dev/null +++ b/example/As6Project/Logical/Package.pkg @@ -0,0 +1,10 @@ + + + + + Global.typ + Global.var + Libraries + Programs + + \ No newline at end of file diff --git a/example/As6Project/Logical/Programs/Default/ANSIC.prg b/example/As6Project/Logical/Programs/Default/ANSIC.prg new file mode 100644 index 0000000..30934ba --- /dev/null +++ b/example/As6Project/Logical/Programs/Default/ANSIC.prg @@ -0,0 +1,9 @@ + + + + + Main.c + Types.typ + Variables.var + + \ No newline at end of file diff --git a/example/As6Project/Logical/Programs/Default/Main.c b/example/As6Project/Logical/Programs/Default/Main.c new file mode 100644 index 0000000..0f4fb8b --- /dev/null +++ b/example/As6Project/Logical/Programs/Default/Main.c @@ -0,0 +1,37 @@ + +#include + +#ifdef _DEFAULT_INCLUDES + #include +#endif + +#include "string.h" +#include + +void _INIT ProgramInit(void) +{ +} + + +void _CYCLIC ProgramCyclic(void) +{ + if(calldtoa) { + calldtoa = 0; + + pString = stringdtoa(val, (char*)buffer, ndigits, sizeof(buffer)); + if(pString) { + len = strlen((char*)pString); + strcpy((char*)string, (char*)pString); + } + + } + + + +} + +void _EXIT ProgramExit(void) +{ + +} + diff --git a/example/As6Project/Logical/Programs/Default/Types.typ b/example/As6Project/Logical/Programs/Default/Types.typ new file mode 100644 index 0000000..5dc40af --- /dev/null +++ b/example/As6Project/Logical/Programs/Default/Types.typ @@ -0,0 +1,4 @@ + +TYPE + +END_TYPE diff --git a/example/As6Project/Logical/Programs/Default/Variables.var b/example/As6Project/Logical/Programs/Default/Variables.var new file mode 100644 index 0000000..b203071 --- /dev/null +++ b/example/As6Project/Logical/Programs/Default/Variables.var @@ -0,0 +1,9 @@ +VAR + ndigits : UDINT; + val : LREAL; + calldtoa : BOOL; + len : UDINT; + string : ARRAY[0..3] OF STRING[80]; + buffer : ARRAY[0..3] OF STRING[80]; + pString : UDINT; +END_VAR diff --git a/example/As6Project/Logical/Programs/Package.pkg b/example/As6Project/Logical/Programs/Package.pkg new file mode 100644 index 0000000..9f53426 --- /dev/null +++ b/example/As6Project/Logical/Programs/Package.pkg @@ -0,0 +1,7 @@ + + + + + Default + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/Config.pkg b/example/As6Project/Physical/ARM/Config.pkg new file mode 100644 index 0000000..2f67f96 --- /dev/null +++ b/example/As6Project/Physical/ARM/Config.pkg @@ -0,0 +1,11 @@ + + + + + Hardware.hw + Hardware.hwl + X20CP0410 + Hardware.jpg + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/Hardware.hw b/example/As6Project/Physical/ARM/Hardware.hw new file mode 100644 index 0000000..8fb7390 --- /dev/null +++ b/example/As6Project/Physical/ARM/Hardware.hw @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/Hardware.hwl b/example/As6Project/Physical/ARM/Hardware.hwl new file mode 100644 index 0000000..6c94f55 --- /dev/null +++ b/example/As6Project/Physical/ARM/Hardware.hwl @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/Hardware.jpg b/example/As6Project/Physical/ARM/Hardware.jpg new file mode 100644 index 0000000000000000000000000000000000000000..12bc2670b26436cc84bd5e1f9fc32060cff6399e GIT binary patch literal 229896 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�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 z41fVJ00zJS7ytuc01SWuFaQR?02lxRU;qq&0WbgtzyKHk17H9QfB`T72EYIq00UqE z41fVJ00zJS7ytuc01SWuFaQR?02lxRU;qq&0WbgtzyKHk17H9QfB`T72EYIq00UqE z41fVJ00zJS7ytuc01SWuFaQR?02lxRU;qq&0WbgtzyKHk17H9QfB`T72EYIq00UqE z41fVJ00zJS7ytuc01SWuFaQR?02lxRU;qq&0WbgtzyKHk17H9QfB`T72EYIq00UqE z41fVJ00zJS7ytuc01SWuFaQR?02lxRU;qq&0WbgtzyKHk17H9QfB`T72EYIq00UqE z41fVJ00zJS7ytuc01SWuFaQR?02lxRU;qq&0WbgtzyKHk17H9QfB`T72EYIq00UqE z41fVJ00zJS7ytuc01SWuFaQR?02lxRU;qq&0WbgtzyKHk17H9QfB`T72EYIq00UqE z41fVJ00zJS7ytuc01SWuFaQR?02lxRU;qq&0WbgtzyKHk17H9QfB`T72EYIq00UqE z41fVJ00zJS7ytuc01SWuFaQR?02lxRU;qq&0WbgtzyKHk17H9QfB`T72EYIq00UqE z41fVJ00zJS7ytuc01SWuFaQR?02lxRU;qq&0WbgtzyKHk17H9QfB`T72EYIq00UqE z41fVJ00zJS7ytuc01SWuFaQR?02lxRU;qq&0WbgtzyKHk17H9QfB`T72EYIq00UqE l41fVJ00zJS7ytuc01SWuFaQR?02lxRVBo)GfN7`izX1y>Z7cu) literal 0 HcmV?d00001 diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/CertificateRevocationLists/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/CertificateRevocationLists/Package.pkg new file mode 100644 index 0000000..973c732 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/CertificateRevocationLists/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/CertificateSigningRequests/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/CertificateSigningRequests/Package.pkg new file mode 100644 index 0000000..683b25c --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/CertificateSigningRequests/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/Certificates/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/Certificates/Package.pkg new file mode 100644 index 0000000..66601a5 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/Certificates/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/Package.pkg new file mode 100644 index 0000000..08d5735 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/Package.pkg @@ -0,0 +1,8 @@ + + + + + Certificates + PrivateKeys + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/PrivateKeys/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/PrivateKeys/Package.pkg new file mode 100644 index 0000000..b03ca4c --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/PrivateKeys/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/Package.pkg new file mode 100644 index 0000000..3748db4 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/Package.pkg @@ -0,0 +1,10 @@ + + + + + OwnCertificates + ThirdPartyCertificates + CertificateRevocationLists + CertificateSigningRequests + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/Package.pkg new file mode 100644 index 0000000..7ea4734 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/Package.pkg @@ -0,0 +1,7 @@ + + + + + SoftwareCertificates + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/SoftwareCertificates/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/SoftwareCertificates/Package.pkg new file mode 100644 index 0000000..0c531bc --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/SoftwareCertificates/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Firewall/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Firewall/Package.pkg new file mode 100644 index 0000000..591a078 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Firewall/Package.pkg @@ -0,0 +1,7 @@ + + + + + Rules.firewallRules + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Firewall/Rules.firewallRules b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Firewall/Rules.firewallRules new file mode 100644 index 0000000..8748b19 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Firewall/Rules.firewallRules @@ -0,0 +1,6 @@ + + + + + + diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Package.pkg new file mode 100644 index 0000000..d88458a --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Package.pkg @@ -0,0 +1,10 @@ + + + + + UserRoleSystem + CertificateStore + TransportLayerSecurity + Firewall + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/TransportLayerSecurity/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/TransportLayerSecurity/Package.pkg new file mode 100644 index 0000000..58a4ff8 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/TransportLayerSecurity/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Package.pkg new file mode 100644 index 0000000..92d5082 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Package.pkg @@ -0,0 +1,8 @@ + + + + + Role.role + User.user + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Role.role b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Role.role new file mode 100644 index 0000000..a4ef7ad --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Role.role @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/User.user b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/User.user new file mode 100644 index 0000000..593efe2 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/User.user @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/Connectivity/OpcUA/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/Connectivity/OpcUA/Package.pkg new file mode 100644 index 0000000..2f38cef --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/Connectivity/OpcUA/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/Connectivity/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/Connectivity/Package.pkg new file mode 100644 index 0000000..fec6e02 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/Connectivity/Package.pkg @@ -0,0 +1,7 @@ + + + + + OpcUA + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/Cpu.per b/example/As6Project/Physical/ARM/X20CP0410/Cpu.per new file mode 100644 index 0000000..14f5eae --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/Cpu.per @@ -0,0 +1,4 @@ + +VAR_CONFIG + +END_VAR diff --git a/example/As6Project/Physical/ARM/X20CP0410/Cpu.pkg b/example/As6Project/Physical/ARM/X20CP0410/Cpu.pkg new file mode 100644 index 0000000..4c20ee7 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/Cpu.pkg @@ -0,0 +1,28 @@ + + + + + Cpu.sw + Cpu.per + IoMap.iom + PvMap.vvm + Connectivity + TextSystem + UnitSystem + AccessAndSecurity + mappControl + mappMotion + mappServices + mappSafety + mappView + mappVision + mappCockpit + + + + + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/Cpu.sw b/example/As6Project/Physical/ARM/X20CP0410/Cpu.sw new file mode 100644 index 0000000..1a90051 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/Cpu.sw @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/IoMap.iom b/example/As6Project/Physical/ARM/X20CP0410/IoMap.iom new file mode 100644 index 0000000..14f5eae --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/IoMap.iom @@ -0,0 +1,4 @@ + +VAR_CONFIG + +END_VAR diff --git a/example/As6Project/Physical/ARM/X20CP0410/PvMap.vvm b/example/As6Project/Physical/ARM/X20CP0410/PvMap.vvm new file mode 100644 index 0000000..14f5eae --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/PvMap.vvm @@ -0,0 +1,4 @@ + +VAR_CONFIG + +END_VAR diff --git a/example/As6Project/Physical/ARM/X20CP0410/TextSystem/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/TextSystem/Package.pkg new file mode 100644 index 0000000..24b827e --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/TextSystem/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/UnitSystem/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/UnitSystem/Package.pkg new file mode 100644 index 0000000..f45ab49 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/UnitSystem/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappCockpit/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappCockpit/Package.pkg new file mode 100644 index 0000000..f031b15 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/mappCockpit/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappControl/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappControl/Package.pkg new file mode 100644 index 0000000..e5d9739 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/mappControl/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappMotion/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappMotion/Package.pkg new file mode 100644 index 0000000..0d34e88 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/mappMotion/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappSafety/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappSafety/Package.pkg new file mode 100644 index 0000000..5ba4780 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/mappSafety/Package.pkg @@ -0,0 +1,8 @@ + + + + + SafeApplication + SafeCommissioning + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappSafety/SafeApplication/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappSafety/SafeApplication/Package.pkg new file mode 100644 index 0000000..9efcef1 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/mappSafety/SafeApplication/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappSafety/SafeCommissioning/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappSafety/SafeCommissioning/Package.pkg new file mode 100644 index 0000000..d23129f --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/mappSafety/SafeCommissioning/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappServices/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappServices/Package.pkg new file mode 100644 index 0000000..bdbbebd --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/mappServices/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappView/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappView/Package.pkg new file mode 100644 index 0000000..2900995 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/mappView/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappVision/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappVision/Package.pkg new file mode 100644 index 0000000..7c77cf1 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/mappVision/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/CertificateRevocationLists/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/CertificateRevocationLists/Package.pkg new file mode 100644 index 0000000..10e1bab --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/CertificateRevocationLists/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/CertificateSigningRequests/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/CertificateSigningRequests/Package.pkg new file mode 100644 index 0000000..1c929de --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/CertificateSigningRequests/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/Certificates/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/Certificates/Package.pkg new file mode 100644 index 0000000..fbb044b --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/Certificates/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/Package.pkg new file mode 100644 index 0000000..af9e8e4 --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/Package.pkg @@ -0,0 +1,8 @@ + + + + + Certificates + PrivateKeys + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/PrivateKeys/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/PrivateKeys/Package.pkg new file mode 100644 index 0000000..6a55aa2 --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/PrivateKeys/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/Package.pkg new file mode 100644 index 0000000..a2b3a11 --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/Package.pkg @@ -0,0 +1,10 @@ + + + + + OwnCertificates + ThirdPartyCertificates + CertificateRevocationLists + CertificateSigningRequests + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/Package.pkg new file mode 100644 index 0000000..11603db --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/Package.pkg @@ -0,0 +1,7 @@ + + + + + SoftwareCertificates + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/SoftwareCertificates/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/SoftwareCertificates/Package.pkg new file mode 100644 index 0000000..c53e656 --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/SoftwareCertificates/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Firewall/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Firewall/Package.pkg new file mode 100644 index 0000000..0d836d3 --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Firewall/Package.pkg @@ -0,0 +1,7 @@ + + + + + Rules.firewallRules + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Firewall/Rules.firewallRules b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Firewall/Rules.firewallRules new file mode 100644 index 0000000..add65ef --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Firewall/Rules.firewallRules @@ -0,0 +1,5 @@ + + + + + diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Package.pkg new file mode 100644 index 0000000..2648337 --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Package.pkg @@ -0,0 +1,10 @@ + + + + + UserRoleSystem + CertificateStore + TransportLayerSecurity + Firewall + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/TransportLayerSecurity/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/TransportLayerSecurity/Package.pkg new file mode 100644 index 0000000..f820e78 --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/TransportLayerSecurity/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Package.pkg new file mode 100644 index 0000000..995e73b --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Package.pkg @@ -0,0 +1,8 @@ + + + + + Role.role + User.user + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Role.role b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Role.role new file mode 100644 index 0000000..39281ec --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Role.role @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/User.user b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/User.user new file mode 100644 index 0000000..a6b973c --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/User.user @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/OpcUA/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/OpcUA/Package.pkg new file mode 100644 index 0000000..86b9f38 --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/OpcUA/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/Package.pkg new file mode 100644 index 0000000..0fba9be --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/Package.pkg @@ -0,0 +1,7 @@ + + + + + OpcUA + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.per b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.per new file mode 100644 index 0000000..14f5eae --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.per @@ -0,0 +1,4 @@ + +VAR_CONFIG + +END_VAR diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg new file mode 100644 index 0000000..a6e3a52 --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg @@ -0,0 +1,27 @@ + + + + + Cpu.sw + Cpu.per + IoMap.iom + PvMap.vvm + Connectivity + TextSystem + UnitSystem + AccessAndSecurity + mappControl + mappMotion + mappServices + mappView + mappVision + mappCockpit + + + + + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.sw b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.sw new file mode 100644 index 0000000..adbae55 --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.sw @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/IoMap.iom b/example/As6Project/Physical/Intel/5PC900_TS17_04/IoMap.iom new file mode 100644 index 0000000..14f5eae --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/IoMap.iom @@ -0,0 +1,4 @@ + +VAR_CONFIG + +END_VAR diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/PvMap.vvm b/example/As6Project/Physical/Intel/5PC900_TS17_04/PvMap.vvm new file mode 100644 index 0000000..14f5eae --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/PvMap.vvm @@ -0,0 +1,4 @@ + +VAR_CONFIG + +END_VAR diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/TextSystem/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/TextSystem/Package.pkg new file mode 100644 index 0000000..321c2b6 --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/TextSystem/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/UnitSystem/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/UnitSystem/Package.pkg new file mode 100644 index 0000000..dbd64ad --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/UnitSystem/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/mappCockpit/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappCockpit/Package.pkg new file mode 100644 index 0000000..35a14eb --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappCockpit/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/mappControl/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappControl/Package.pkg new file mode 100644 index 0000000..9dbadad --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappControl/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/mappMotion/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappMotion/Package.pkg new file mode 100644 index 0000000..ecc31c8 --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappMotion/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/mappServices/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappServices/Package.pkg new file mode 100644 index 0000000..3d375fc --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappServices/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/mappView/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappView/Package.pkg new file mode 100644 index 0000000..480d4d9 --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappView/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/mappVision/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappVision/Package.pkg new file mode 100644 index 0000000..62837d9 --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappVision/Package.pkg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/Config.pkg b/example/As6Project/Physical/Intel/Config.pkg new file mode 100644 index 0000000..97f3cc1 --- /dev/null +++ b/example/As6Project/Physical/Intel/Config.pkg @@ -0,0 +1,11 @@ + + + + + Hardware.hw + Hardware.hwl + 5PC900_TS17_04 + Hardware.jpg + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/Hardware.hw b/example/As6Project/Physical/Intel/Hardware.hw new file mode 100644 index 0000000..9033c09 --- /dev/null +++ b/example/As6Project/Physical/Intel/Hardware.hw @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/Hardware.hwl b/example/As6Project/Physical/Intel/Hardware.hwl new file mode 100644 index 0000000..fa5970d --- /dev/null +++ b/example/As6Project/Physical/Intel/Hardware.hwl @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/Hardware.jpg b/example/As6Project/Physical/Intel/Hardware.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5ae7e4019486f6a87ebc173ab660d69f110e123b GIT binary patch literal 14019 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 literal 0 HcmV?d00001 diff --git a/example/As6Project/Physical/Physical.pkg b/example/As6Project/Physical/Physical.pkg new file mode 100644 index 0000000..351df13 --- /dev/null +++ b/example/As6Project/Physical/Physical.pkg @@ -0,0 +1,8 @@ + + + + + Intel + ARM + + \ No newline at end of file diff --git a/example/As6Project/README.md b/example/As6Project/README.md new file mode 100644 index 0000000..a26d5f0 --- /dev/null +++ b/example/As6Project/README.md @@ -0,0 +1,3 @@ +# ASStarter (Build me up) + +ASStarter is a minimal Automation studio project used by the Buttercup framework to automatically create starter projects. \ No newline at end of file diff --git a/example/As6Project/package-lock.json b/example/As6Project/package-lock.json new file mode 100644 index 0000000..49e47e4 --- /dev/null +++ b/example/As6Project/package-lock.json @@ -0,0 +1,29 @@ +{ + "name": "@loupeteam/librarybuilderproject", + "version": "0.2.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@loupeteam/librarybuilderproject", + "version": "0.2.0", + "license": "MIT", + "dependencies": { + "@loupeteam/librarybuilderproject": "^0.3.0", + "@loupeteam/stringext": "^0.14.4" + } + }, + "node_modules/@loupeteam/librarybuilderproject": { + "version": "0.3.0", + "resolved": "https://npm.pkg.github.com/download/@loupeteam/librarybuilderproject/0.3.0/9c3c1fc98350439d618573f3b465d94e3ae1e000", + "integrity": "sha512-kUOwhpPoqQ1DikLGFBH3c8+nsb28ayX2IpQRC0UaEg34cV4GrRoI0FvkSovc3tgrGohpyvxFPRy5C6TM5wj7JA==", + "license": "MIT" + }, + "node_modules/@loupeteam/stringext": { + "version": "0.14.4", + "resolved": "https://npm.pkg.github.com/download/@loupeteam/stringext/0.14.4/94cecc972c68673d69c605dba4b7904618e24cfc", + "integrity": "sha512-IhMDGSyclNrv5mYs+kyqN5OHLQrSsktZFvULrWgwr3lg0/Bl+xiO6EvehLWRbZNWZUGWFeaYhBSevv73tIZqow==", + "license": "Loupe Software License Agreement" + } + } +} diff --git a/example/As6Project/package.json b/example/As6Project/package.json new file mode 100644 index 0000000..4ef4aec --- /dev/null +++ b/example/As6Project/package.json @@ -0,0 +1,22 @@ +{ + "name": "@loupeteam/librarybuilderproject", + "version": "0.2.0", + "description": "LibraryBuilderProject is a minimal Automation studio project used to build libraries for Intel and ARM configurations", + "repository": { + "type": "git", + "url": "git+https://github.com/loupeteam/StarterAsProject.git" + }, + "author": "Loupe", + "license": "MIT", + "lpmConfig": { + "deploymentConfigs": [ + "Intel", + "ARM" + ], + "gitClient": "GitExtensions" + }, + "dependencies": { + "@loupeteam/librarybuilderproject": "^0.3.0", + "@loupeteam/stringext": "^0.14.4" + } +} From 5f981cabfc2786ae091de7ac5f089a3e615b01e9 Mon Sep 17 00:00:00 2001 From: Josh Polansky Date: Tue, 27 Aug 2024 11:37:48 -0700 Subject: [PATCH 2/7] remove unused runtime versions --- example/AsProject/AsProject.apj | 3 --- example/AsProject/Physical/Intel/5PC900_TS17_04/Cpu.pkg | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/example/AsProject/AsProject.apj b/example/AsProject/AsProject.apj index ec5b008..37df849 100644 --- a/example/AsProject/AsProject.apj +++ b/example/AsProject/AsProject.apj @@ -7,7 +7,4 @@ - - - \ No newline at end of file diff --git a/example/AsProject/Physical/Intel/5PC900_TS17_04/Cpu.pkg b/example/AsProject/Physical/Intel/5PC900_TS17_04/Cpu.pkg index a6e3a52..bb60475 100644 --- a/example/AsProject/Physical/Intel/5PC900_TS17_04/Cpu.pkg +++ b/example/AsProject/Physical/Intel/5PC900_TS17_04/Cpu.pkg @@ -22,6 +22,6 @@ - + \ No newline at end of file From eee6648d82474bcf86d0c27818c8dbf708b74e17 Mon Sep 17 00:00:00 2001 From: Josh Polansky Date: Tue, 27 Aug 2024 11:39:19 -0700 Subject: [PATCH 3/7] Update to AS 4.12 --- example/As6Project/AsProject.apj | 5 +---- example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/example/As6Project/AsProject.apj b/example/As6Project/AsProject.apj index ec5b008..ce6e973 100644 --- a/example/As6Project/AsProject.apj +++ b/example/As6Project/AsProject.apj @@ -1,5 +1,5 @@  - + @@ -7,7 +7,4 @@ - - - \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg index a6e3a52..bb60475 100644 --- a/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg @@ -22,6 +22,6 @@ - + \ No newline at end of file From bcae1a4af8b2341ba4806aefde9b1eac56d06450 Mon Sep 17 00:00:00 2001 From: Josh Polansky Date: Fri, 30 Aug 2024 13:44:06 -0700 Subject: [PATCH 4/7] Update AS6 project --- example/As6Project/AsProject.apj | 4 +- .../Logical/Libraries/Loupe/Package.pkg | 8 +- .../Libraries/Loupe/rtk_lib/Binary.lby | 34 +++ .../Loupe/rtk_lib/SG4/ARM/librtk_lib.a | Bin 0 -> 6784 bytes .../Libraries/Loupe/rtk_lib/SG4/librtk_lib.a | Bin 0 -> 6000 bytes .../Libraries/Loupe/rtk_lib/SiosClock.h | 36 ++++ .../Logical/Libraries/Loupe/rtk_lib/arErrno.h | 131 ++++++++++++ .../Libraries/Loupe/rtk_lib/arInternetTypes.h | 42 ++++ .../Loupe/rtk_lib/arNetworkConvert.h | 48 +++++ .../Libraries/Loupe/rtk_lib/arSelect.h | 72 +++++++ .../Libraries/Loupe/rtk_lib/arSocket.h | 186 ++++++++++++++++ .../Logical/Libraries/Loupe/rtk_lib/arState.h | 36 ++++ .../Libraries/Loupe/rtk_lib/arexport.h | 25 +++ .../Libraries/Loupe/rtk_lib/bootModeApi.h | 25 +++ .../Logical/Libraries/Loupe/rtk_lib/cosyApi.h | 61 ++++++ .../Libraries/Loupe/rtk_lib/cosyReadApi.h | 191 +++++++++++++++++ .../Libraries/Loupe/rtk_lib/cosyWriteApi.h | 148 +++++++++++++ .../Logical/Libraries/Loupe/rtk_lib/hostApi.h | 36 ++++ .../Logical/Libraries/Loupe/rtk_lib/iecType.h | 47 ++++ .../Loupe/rtk_lib/pvElementIteratorApi.h | 202 ++++++++++++++++++ .../Logical/Libraries/Loupe/rtk_lib/rtk.h | 25 +++ .../Logical/Libraries/Loupe/rtk_lib/rtkBase.h | 134 ++++++++++++ .../Loupe/rtk_lib/rtkCriticalSection.h | 44 ++++ .../Logical/Libraries/Loupe/rtk_lib/rtkFifo.h | 65 ++++++ .../Libraries/Loupe/rtk_lib/rtkMemory.h | 48 +++++ .../Logical/Libraries/Loupe/rtk_lib/rtkMisc.h | 25 +++ .../Libraries/Loupe/rtk_lib/rtkObject.h | 53 +++++ .../Libraries/Loupe/rtk_lib/rtkPlainFifo.h | 55 +++++ .../Logical/Libraries/Loupe/rtk_lib/rtkRtc.h | 28 +++ .../Libraries/Loupe/rtk_lib/rtkSemaphore.h | 53 +++++ .../Logical/Libraries/Loupe/rtk_lib/rtkTask.h | 157 ++++++++++++++ .../Libraries/Loupe/rtk_lib/rtkTimer.h | 43 ++++ .../Libraries/Loupe/rtk_lib/rtkTypes.h | 58 +++++ .../Logical/Libraries/Loupe/tlsf/ANSIC.lby | 5 - .../Logical/Libraries/Loupe/tlsf/Binary.lby | 8 + .../Libraries/Loupe/tlsf/SG4/ARM/libtlsf_s.a | Bin 0 -> 8772 bytes .../Loupe/tlsf/SG4/Arm/tlsf-impl.c.o | Bin 38708 -> 0 bytes .../Libraries/Loupe/tlsf/SG4/libtlsf_s.a | Bin 0 -> 9690 bytes .../Libraries/Loupe/tlsf/SG4/tlsf-impl.c.o | Bin 36924 -> 0 bytes .../Libraries/Loupe/tlsf/heap_redirect.c | 22 ++ .../Logical/Libraries/Loupe/tlsf/package.json | 25 --- .../Logical/Libraries/Loupe/tlsf/tlsf.h | 105 +++++++++ .../Logical/Libraries/_AS/AsBrStr/binary.lby | 8 +- .../Libraries/_AS/AsBrWStr/SG4/AsBrWStr.h | 27 ++- .../Logical/Libraries/_AS/AsBrWStr/binary.lby | 8 +- .../Logical/Libraries/_AS/astime/SG4/astime.h | 79 ++++--- .../Logical/Libraries/_AS/astime/binary.lby | 8 +- .../Libraries/_AS/runtime/SG4/runtime.h | 127 ++++++----- .../Logical/Libraries/_AS/runtime/binary.lby | 8 +- example/As6Project/Physical/ARM/Hardware.hw | 18 +- .../UserRoleSystem/BRRole.brrole | 9 + .../UserRoleSystem/Package.pkg | 1 + .../ARM/X20CP0410/Connectivity/Package.pkg | 4 +- .../As6Project/Physical/ARM/X20CP0410/Cpu.pkg | 6 +- .../As6Project/Physical/ARM/X20CP0410/Cpu.sw | 9 +- .../UserRoleSystem/BRRole.brrole | 9 + .../UserRoleSystem/Package.pkg | 3 +- .../Connectivity/OpcUA/Package.pkg | 5 - .../Connectivity/OpcUaCs}/Package.pkg | 2 +- .../5PC900_TS17_04/Connectivity/Package.pkg | 4 +- .../Physical/Intel/5PC900_TS17_04/Cpu.pkg | 4 +- .../Physical/Intel/5PC900_TS17_04/Cpu.sw | 11 +- example/As6Project/Physical/Intel/Hardware.hw | 9 +- 63 files changed, 2441 insertions(+), 203 deletions(-) create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/Binary.lby create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/SG4/ARM/librtk_lib.a create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/SG4/librtk_lib.a create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/SiosClock.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/arErrno.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/arInternetTypes.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/arNetworkConvert.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/arSelect.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/arSocket.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/arState.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/arexport.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/bootModeApi.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/cosyApi.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/cosyReadApi.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/cosyWriteApi.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/hostApi.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/iecType.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/pvElementIteratorApi.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtk.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkBase.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkCriticalSection.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkFifo.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkMemory.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkMisc.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkObject.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkPlainFifo.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkRtc.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkSemaphore.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkTask.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkTimer.h create mode 100644 example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkTypes.h delete mode 100644 example/As6Project/Logical/Libraries/Loupe/tlsf/ANSIC.lby create mode 100644 example/As6Project/Logical/Libraries/Loupe/tlsf/Binary.lby create mode 100644 example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/ARM/libtlsf_s.a delete mode 100644 example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/Arm/tlsf-impl.c.o create mode 100644 example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/libtlsf_s.a delete mode 100644 example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/tlsf-impl.c.o create mode 100644 example/As6Project/Logical/Libraries/Loupe/tlsf/heap_redirect.c delete mode 100644 example/As6Project/Logical/Libraries/Loupe/tlsf/package.json create mode 100644 example/As6Project/Logical/Libraries/Loupe/tlsf/tlsf.h create mode 100644 example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/BRRole.brrole create mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/BRRole.brrole delete mode 100644 example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/OpcUA/Package.pkg rename example/As6Project/Physical/{ARM/X20CP0410/Connectivity/OpcUA => Intel/5PC900_TS17_04/Connectivity/OpcUaCs}/Package.pkg (52%) diff --git a/example/As6Project/AsProject.apj b/example/As6Project/AsProject.apj index ce6e973..9a3b3b7 100644 --- a/example/As6Project/AsProject.apj +++ b/example/As6Project/AsProject.apj @@ -1,6 +1,6 @@  - - + + diff --git a/example/As6Project/Logical/Libraries/Loupe/Package.pkg b/example/As6Project/Logical/Libraries/Loupe/Package.pkg index 09c14a0..b10a609 100644 --- a/example/As6Project/Logical/Libraries/Loupe/Package.pkg +++ b/example/As6Project/Logical/Libraries/Loupe/Package.pkg @@ -1,7 +1,9 @@ - + + ..\..\src\Ar\stringext\ANSIC.lby - tlsf + tlsf + rtk_lib - + \ No newline at end of file diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/Binary.lby b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/Binary.lby new file mode 100644 index 0000000..93a1423 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/Binary.lby @@ -0,0 +1,34 @@ + + + + + arErrno.h + arexport.h + arInternetTypes.h + arNetworkConvert.h + arSelect.h + arSocket.h + arState.h + bootModeApi.h + cosyApi.h + cosyReadApi.h + cosyWriteApi.h + hostApi.h + iecType.h + pvElementIteratorApi.h + rtk.h + rtkBase.h + rtkCriticalSection.h + rtkFifo.h + rtkMemory.h + rtkMisc.h + rtkObject.h + rtkPlainFifo.h + rtkRtc.h + rtkSemaphore.h + rtkTask.h + rtkTimer.h + rtkTypes.h + SiosClock.h + + \ No newline at end of file diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/SG4/ARM/librtk_lib.a b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/SG4/ARM/librtk_lib.a new file mode 100644 index 0000000000000000000000000000000000000000..effc2b9edc4a9e5deadc72b2ce29daffc216ec0a GIT binary patch literal 6784 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 apobgjtTpChLw6vq6XNZ#<8l9aaX$e5?Br1Z literal 0 HcmV?d00001 diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/SiosClock.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/SiosClock.h new file mode 100644 index 0000000..df01a2f --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/SiosClock.h @@ -0,0 +1,36 @@ + +/* sequential io scheduler clock */ + +#ifndef _SIOS_CLOCK_H_ +#define _SIOS_CLOCK_H_ + +#ifdef __cplusplus +extern "C" { +#endif + + +/* SIOS Aufloesung auslesen. + Der Rueckgabeparameter liefert die die tatsaechliche SIOS-Zykluszeit in Nanosekunden. Dieser Wert entspricht + auch gleichzeitig der Aufloesung der SIOS-Clock. Die Aufloesung der SIOS-Clock wird staendig korrigiert und + angepasst. Bei Verwendung des Wertes genuegt es also nicht ihn nur einmal zu Beginn auszulesen, er muss + von Zeit zu Zeit aktualisiert werden. +*/ +void siosClockGetRes(unsigned long* resolution); + +/* SIOS Zeit auslesen. + Die beiden Rueckgabeparameter, aufgeteilt in einen Sekunden- und einen Nanosekunden- Anteil, liefern die + Uhrzeit zum Beginn des laufenden SIOS-Zyklus. Beide Werte beziehen sich auf den festgelegten Zeitpunkt: + 01.01.1970, 00:00:000000000. +*/ +void siosClockGetTime(unsigned long* seconds, unsigned long* nanoscs); + + +#if AR_CORE +#include +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arErrno.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arErrno.h new file mode 100644 index 0000000..176df94 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arErrno.h @@ -0,0 +1,131 @@ + +/* global error status value definitions and a function to read the global error status value */ + + +#ifndef _AR_ERRNO_H_ +#define _AR_ERRNO_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* AR error codes corresponding to POSIX Error codes */ +#define AR_EPERM 1 /* Not owner */ +#define AR_ENOENT 2 /* No such file or directory */ +#define AR_ESRCH 3 /* No such process */ +#define AR_EINTR 4 /* Interrupted system call */ +#define AR_EIO 5 /* I/O error */ +#define AR_ENXIO 6 /* No such device or address */ +#define AR_E2BIG 7 /* Arg list too long */ +#define AR_ENOEXEC 8 /* Exec format error */ +#define AR_EBADF 9 /* Bad file number */ +#define AR_ECHILD 10 /* No children */ +#define AR_EAGAIN 11 /* No more processes */ +#define AR_ENOMEM 12 /* Not enough core */ +#define AR_EACCESS 13 /* Permission denied */ +#define AR_EFAULT 14 /* Bad address */ +#define AR_ENOTEMPTY 15 /* Directory not empty */ +#define AR_EBUSY 16 /* Mount device busy */ +#define AR_EEXIST 17 /* File exists */ +#define AR_EXDEV 18 /* Cross-device link */ +#define AR_ENODEV 19 /* No such device */ +#define AR_ENOTDIR 20 /* Not a directory*/ +#define AR_EISDIR 21 /* Is a directory */ +#define AR_EINVAL 22 /* Invalid argument */ +#define AR_ENFILE 23 /* File table overflow */ +#define AR_EMFILE 24 /* Too many open files */ +#define AR_ENOTTY 25 /* Not a typewriter */ +#define AR_ENAMETOOLONG 26 /* File name too long */ +#define AR_EFBIG 27 /* File too large */ +#define AR_ENOSPC 28 /* No space left on device */ +#define AR_ESPIPE 29 /* Illegal seek */ +#define AR_EROFS 30 /* Read-only file system */ +#define AR_EMLINK 31 /* Too many links */ +#define AR_EPIPE 32 /* Broken pipe */ +#define AR_EDEADLK 33 /* Resource deadlock avoided */ +#define AR_ENOLCK 34 /* No locks available */ +#define AR_ENOTSUP 35 /* Unsupported value */ +#define AR_EMSGSIZE 36 /* Message size */ + +/* ANSI math software */ +#define AR_EDOM 37 /* Argument too large */ +#define AR_ERANGE 38 /* Result too large */ + +/* ipc/network software */ + +/* argument errors */ +#define AR_EDESTADDRREQ 40 /* Destination address required */ +#define AR_EPROTOTYPE 41 /* Protocol wrong type for socket */ +#define AR_ENOPROTOOPT 42 /* Protocol not available */ +#define AR_EPROTONOSUPPORT 43 /* Protocol not supported */ +#define AR_ESOCKTNOSUPPORT 44 /* Socket type not supported */ +#define AR_EOPNOTSUPP 45 /* Operation not supported on socket */ +#define AR_EPFNOSUPPORT 46 /* Protocol family not supported */ +#define AR_EAFNOSUPPORT 47 /* Addr family not supported */ +#define AR_EADDRINUSE 48 /* Address already in use */ +#define AR_EADDRNOTAVAIL 49 /* Can't assign requested address */ +#define AR_ENOTSOCK 50 /* Socket operation on non-socket */ + +/* operational errors */ +#define AR_ENETUNREACH 51 /* Network is unreachable */ +#define AR_ENETRESET 52 /* Network dropped connection on reset*/ +#define AR_ECONNABORTED 53 /* Software caused connection abort */ +#define AR_ECONNRESET 54 /* Connection reset by peer */ +#define AR_ENOBUFS 55 /* No buffer space available */ +#define AR_EISCONN 56 /* Socket is already connected */ +#define AR_ENOTCONN 57 /* Socket is not connected */ +#define AR_ESHUTDOWN 58 /* Can't send after socket shutdown */ +#define AR_ETOOMANYREFS 59 /* Too many references: can't splice */ +#define AR_ETIMEDOUT 60 /* Connection timed out */ +#define AR_ECONNREFUSED 61 /* Connection refused */ +#define AR_ENETDOWN 62 /* Network is down */ +#define AR_ETXTBSY 63 /* Text file busy */ +#define AR_ELOOP 64 /* Too many levels of symbolic links */ +#define AR_EHOSTUNREACH 65 /* No route to host */ +#define AR_ENOTBLK 66 /* Block device required */ +#define AR_EHOSTDOWN 67 /* Host is down */ + +/* non-blocking and interrupt i/o */ +#define AR_EINPROGRESS 68 /* Operation now in progress */ +#define AR_EALREADY 69 /* Operation already in progress */ +#define AR_EWOULDBLOCK 70 /* Operation would block */ + +#define AR_ENOSYS 71 /* Function not implemented */ + +/* aio errors (should be under posix) */ +#define AR_ECANCELED 72 /* Operation canceled */ + +/* specific STREAMS errno values */ +#define AR_ENOSR 74 /* Insufficient memory */ +#define AR_ENOSTR 75 /* STREAMS device required */ +#define AR_EPROTO 76 /* Generic STREAMS error */ +#define AR_EBADMSG 77 /* Invalid STREAMS message */ +#define AR_ENODATA 78 /* Missing expected message data */ +#define AR_ETIME 79 /* STREAMS timeout occurred */ +#define AR_ENOMSG 80 /* Unexpected message type */ + +#define AR_EFPOS 81 /* File positioning error */ +#define AR_EILSEQ 82 /* Illegal byte sequence. */ + +/* error codes used by network stack */ +#define AR_EDQUOT 83 /* routing error */ + +#define AR_EIDRM 84 /* Identifier removed */ +#define AR_EOVERFLOW 85 /* Value too large for data type */ +#define AR_EMULTIHOP 86 /* Reserved */ +#define AR_ENOLINK 87 /* Reserved */ +#define AR_ESTALE 88 /* Reserved */ + +#define AR_EFIREWALL 1006 /* the communication was blocked by the AR firewall. This is not a POSIX error code */ + +#define AR_EUNKNOWN 0xFFFFFF + +/* Get the global error status value of the calling task. + * For ARsim only socket errors are currently handled properly. */ +int arerrnoGet(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arInternetTypes.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arInternetTypes.h new file mode 100644 index 0000000..17d5048 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arInternetTypes.h @@ -0,0 +1,42 @@ + +/* Base definition for AR socket and conversion functions */ + + +#ifndef _AR_INTERNET_TYPES_H_ +#define _AR_INTERNET_TYPES_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* Protocols - used for arsocket, getsockopt, setsockopt */ +#define AR_IPPROTO_IP 0 /* Internet Protocol version 4. */ +#define AR_IPPROTO_ICMP 1 /* control message protocol */ +#define AR_IPPROTO_TCP 6 /* tcp */ +#define AR_IPPROTO_UDP 17 /* user datagram protocol */ +#define AR_IPPROTO_RAW 255 /* raw IP packet */ + +/* values for AR_IN_ADDR struct */ +#define AR_INADDR_ANY 0x00000000UL +#define AR_INADDR_BROADCAST 0xffffffffUL /* must be masked */ +#define AR_INADDR_NONE 0xffffffffUL /* -1 return */ +#define AR_INADDR_LOOPBACK 0x7f000001UL + +/* Address families - used for arsocket, arinet_ntop, arinet_pton */ +#define AR_AF_UNSPEC 0 /* unspecified */ +#define AR_AF_INET 2 /* internetwork: UDP, TCP, etc. */ + +/* Internet address (contains AR_INADDR_xxx values) */ +typedef struct AR_IN_ADDR +{ + uint32_t addr; +} AR_IN_ADDR; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arNetworkConvert.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arNetworkConvert.h new file mode 100644 index 0000000..c3f8020 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arNetworkConvert.h @@ -0,0 +1,48 @@ + +/* AR network conversion functions + The syntax and behavior of these functions is equal to the corresponding POSIX IPv4 functions */ + + +#ifndef _AR_NETWORK_CONVERT_H_ +#define _AR_NETWORK_CONVERT_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + + +/* Convert a string representation of an internet address "src" (given in decimal values only - e.g. 192.168.0.1) + * to its binary form "dst" (being a pointer to AR_IN_ADDR for family = AR_AF_INET respectively). + * Returns 1 on success, 0 if the string was not a valid address, or <0 on error */ +int arinet_pton(int family, const char* src, void* dst); + +/* Convert the network address "src" (being a pointer to AR_IN_ADDR for family = AR_AF_INET respectively) into a + * character string (dst, size). "dst" is a pointer to the buffer with length "size". After the function call the buffer + * contains the string representation of the address in decimal values (e.g. 192.168.0.1). + * Return dst on success, or NULL on error */ +const char* arinet_ntop(int family, const void* src, char* dst, int size); + +/* Convert a short value (2 bytes) from host byte-order to net byte-order */ +uint16_t arhtons(uint16_t val); + +/* Convert a long value (4 bytes) from host byte-order to net byte-order */ +uint32_t arhtonl(uint32_t val); + +/* Convert a short value (2 bytes) from net byte-order to host byte-order */ +uint16_t arntohs(uint16_t val); + +/* Convert a long value (4 bytes) from net byte-order to host byte-order */ +uint32_t arntohl(uint32_t val); + + +#if AR_CORE +#include +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arSelect.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arSelect.h new file mode 100644 index 0000000..dc37e6b --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arSelect.h @@ -0,0 +1,72 @@ + +/* AR select functions + The syntax and behavior of these functions is equal to the POSIX IPv4 select function */ + + +#ifndef _AR_SELECT_H_ +#define _AR_SELECT_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef struct AR_FD_SET* AR_FD_SET_H; + +/* Allocate internal resources for a set of file descriptors */ +AR_FD_SET_H arFD_ALLOC(void); + +/* Cleanup internal resources allocated with arFD_ALLOC */ +void arFD_FREE(AR_FD_SET_H set); + +/* Test if file descriptor "fd" is marked in the provided "set" of file descriptors. + * Returns a non zero value if the file descriptor is marked in the set of file descriptors, otherwise 0 */ +long arFD_ISSET(int fd, AR_FD_SET_H set); + +/* Mark file descriptor "fd" in the "set" to be observed */ +void arFD_SET(int fd, AR_FD_SET_H set); + +/* Unmark file descriptor "fd" in the "set" */ +void arFD_CLR(int fd, AR_FD_SET_H set); + +/* Unmark an enire "set" of file descriptors */ +void arFD_ZERO(AR_FD_SET_H set); + +/* Get the maximum width to be set for arselect */ +int arFD_SIZE(void); + +typedef struct AR_TIMEVAL +{ + int32_t tv_sec; + int32_t tv_usec; +} AR_TIMEVAL; + +/* Pends until one of the observed file descriptors becomes active (ready to read, ready to write, or exception occurred). + * The function pends until "pTimeOut" (NULL = pend forever). + * + * pReadFds, pWriteFds, pExceptFds contain the list of observed file descriptors. They have to be provided with an object allocated + * with arFD_ALLOC or they can be NULL. All in the object marked file descriptors (marked with arFD_SET) will be observed. + * After the function returns, these objects contain the information about the active file descriptors. This information can + * be querried with arFD_ISSET. + * + * The "width" parameter can be used to limit the observed file descriptors to only observe file descriptors 0 to width-1 + * (to not observe them eventhough they are in pReadFds, pWriteFds, or pExceptFds). Usually the "width" parameter is not used + * to limit the set of file descriptors and is thus simply set to the value of the observed file descriptor plus one or to arFD_SIZE. + * + * Returns the number of active file descriptors, 0 if timed out, -1 on error + * + * Usage example: + * ARFD_SET_H fdSet = arFD_ALLOC(); + * arFD_SET(fdToCheck, fdSet); + * arselect(arFD_SIZE(), fdSet, NULL, NULL, 0); + * isActive = arFD_ISSET(fdToCheck, fdSet); + * arFD_FREE(fdSet); + */ +int arselect(int width, AR_FD_SET_H pReadFds, AR_FD_SET_H pWriteFds, AR_FD_SET_H pExceptFds, AR_TIMEVAL* pTimeOut); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arSocket.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arSocket.h new file mode 100644 index 0000000..4974329 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arSocket.h @@ -0,0 +1,186 @@ + +/* AR socket functions + The syntax and behavior of these functions is equal to POSIX IPv4 sockets */ + + +#ifndef _AR_SOCKET_H_ +#define _AR_SOCKET_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* IOCTL used for arioctl */ +#define AR_FIONREAD 1 /* get num chars available to read */ +#define AR_FIONBIO 16 /* set/unset socket non-blocking */ + +/* Types used for arsocket */ +#define AR_SOCK_STREAM 1 /* stream socket */ +#define AR_SOCK_DGRAM 2 /* datagram socket */ +#define AR_SOCK_RAW 3 /* raw-protocol interface */ + +/* Options for getsockopt/setsockopt - TCP level. */ +#define AR_TCP_NODELAY 1 /* don't delay send to coalesce packets */ +#define AR_TCP_KEEPIDLE 4 /* int; Send first keepalive probe when the connections been isdl this time (in seconds) */ +#define AR_TCP_KEEPINTVL 5 /* int; Interval (in seconds) between keepalives */ +#define AR_TCP_KEEPCNT 6 /* int; Maximum number of keepalives before dropping the connection */ + +/* Options for getsockopt/setsockopt - flags per-socket. */ +#define AR_SO_REUSEADDR 0x0004 /* allow local address reuse */ +#define AR_SO_KEEPALIVE 0x0008 /* keep connections alive */ +#define AR_SO_BROADCAST 0x0020 /* permit sending of broadcast msgs */ +#define AR_SO_LINGER 0x0080 /* linger on close if data present */ +#define AR_SO_OOBINLINE 0x0100 /* leave received OOB data in line */ +#define AR_SO_REUSEPORT 0x0200 /* allow local address & port reuse */ + +/* Options for getsockopt/setsockopt - additional options */ +#define AR_SO_SNDBUF 0x1001 /* send buffer size */ +#define AR_SO_RCVBUF 0x1002 /* receive buffer size */ +#define AR_SO_ERROR 0x1007 /* get error status and clear */ +#define AR_SO_BINDTODEVICE 0x1010 /* bind to device */ + +/* shutodwn options used for arshutdown */ +#define AR_SHUT_RD 0 /* shutdown incoming network connection on socket */ +#define AR_SHUT_WR 1 /* shutdown outgoing network connection on socket */ +#define AR_SHUT_RDWR 2 /* shutdown incoming and outgoing network connection on socket */ + +/* Level number for getsockopt/setsockopt to apply to socket itself. */ +#define AR_SOL_SOCKET 0xffff /* options for socket level */ + +/* used for the "flags" parameter of the following functions: + * arsendto arrecvfrom, arsend, arrecv */ +#define AR_MSG_OOB 0x1 /* process out-of-band data */ +#define AR_MSG_PEEK 0x2 /* peek at incoming message */ +#define AR_MSG_DONTROUTE 0x4 /* send without using routing tables */ + +/* Options for getsockopt() and setsockopt() at the IP level. + * First word of the comment is the data type; bool is stored in int */ +#define AR_IP_TOS 3 /* int; IP type of service and preced. */ +#define AR_IP_TTL 4 /* int; IP time to live */ + +#define AR_IP_MULTICAST_IF 9 /* u_char; set/get IP multicast i/f */ +#define AR_IP_MULTICAST_TTL 10 /* u_char; set/get IP multicast ttl */ +#define AR_IP_MULTICAST_LOOP 11 /* u_char; set/get IP multicast loopback */ +#define AR_IP_ADD_MEMBERSHIP 12 /* AR_IP_MREQ; add an IP group membership */ +#define AR_IP_DROP_MEMBERSHIP 13 /* AR_IP_MREQ; drop an IP group membership */ + +/* Argument structure for AR_IP_ADD_MEMBERSHIP and AR_IP_DROP_MEMBERSHIP. */ +typedef struct AR_IP_MREQ +{ + AR_IN_ADDR imr_multiaddr; /* IP multicast address of group */ + AR_IN_ADDR imr_interface; /* local IP address of interface */ +}AR_IP_MREQ; + +/* Structure used for AR_SO_LINGER. */ +typedef struct AR_LINGER +{ + int32_t l_onoff; /* option on/off */ + int32_t l_linger; /* linger time */ +} AR_LINGER; + +/* IPv4 address struct. + * Required for the "addr" parameter of the following functions: + * arsentto, arrecvfrom, arbind, arconnect, araccept, argetsockname */ +typedef struct AR_SOCKADDR_IN +{ + int16_t sin_family; + uint16_t sin_port; + AR_IN_ADDR sin_addr; + char sin_zero[8]; +} AR_SOCKADDR_IN; + +/* Open a new socket. Sockets are usually created using the domain AR_AF_INET and the protocol AR_IPPROTO_IP. + * The type parameter specifies whether the socket is raw (AR_SOCK_RAW), streaming (AR_SOCK_STREAM) or + * datagram (AR_SOCK_DGRAM). + * Returns the socket descriptor on success, -1 on error */ +int arsocket(int domain, int type, int protocol); + +/* Send a datagram message (with content "buf" and length "bufLen") via socket "s" to a peer. + * The peer is identified by "addrTo" which takes a pointer to a AR_SOCKADDR_IN structure. "addrLen" + * is the size of the provided structure. "flags" is the bitwise OR of AR_MSG_xxx parameters. + * Returns the number of byte sent, or -1 on error */ +int arsendto(int s, const char* buf, int bufLen, int flags, void* addrTo, int addrLen); + +/* Receive a datagram message via socket "s" from a peer. Information about the peer is available + * after the function call via the "addrFrom" (pointer to a AR_SOCKADDR_IN) and the "addrLen" + * (size of addrFrom type) parameters. "flags" is the bitwise OR of AR_MSG_xxx parameters. + * Returns the number of byte received, or -1 on error */ +int arrecvfrom(int s, char* buf, int bufLen, int flags, void* addrFrom, int* addrLen); + +/* Performs an I/O control function for socket "s" + * Possible commands "cmd" are AR_FIOxxx + * Returns 0 on success, else error */ +int arioctl(int s, int cmd, int arg); + +/* Close the socket "s" + * Returns 0 on success, else error */ +int arclose(int s); + +/* Send data (with content "buf" and length "bufLen") to a previously established connection-based + * socket "s" (streaming, sequential packets). "flags" is the bitwise OR of AR_MSG_xxx parameters. + * Returns the number of byte sent, or -1 on error */ +int arsend(int s, const char* buf, int bufLen, int flags); + +/* Receive data from a connection-based (stream) socket "s". + * The function has to be provided a buffer "buf" and the buffer length "bufLen". The received + * data is copied to this buffer. + * "flags" is the bitwise OR of AR_MSG_xxx parameters. + * Returns the number of byte received, or -1 on error */ +int arrecv(int s, char* buf, int bufLen, int flags); + +/* Binds socket "s" to an address ("addrName" as pointer to AR_SOCKADDR_IN and "addrLen" as its length). + * When a socket is bound to an address, then then only messages sent/received on this + * address (network interface, port, ...) are handled by this socket. + * Returns 0 on success, or -1 on error */ +int arbind(int s, void* addrName, int addrLen); + +/* Initiate a connection via socket "s" to a peer ("addrName" as pointer to AR_SOCKADDR_IN and "addrLen" as its length). + * Returns 0 on success, or -1 on error */ +int arconnect(int s, void* addrName, int addrLen); + +/* Accept an incoming connection (which was initiated by the peer with arconnect). + * "s" is a socket listening for incoming connections (arlisten). + * "addr" has to contain a pointer to AR_SOCKADDR_IN and addrLen has to contain its length. + * After the function call "addr" contains information about the peer which initiated the connection. + * Returns a new socket descriptor created for the new connection, or -1 on error */ +int araccept(int s, void* addr, int* addrLen); + +/* Listen for incoming connections on socket "s". The maximum number of pending incoming connections + * (connections not yet handled by araccept) is set by "backlog". + * Returns 0 on success, or -1 on error */ +int arlisten(int s, int backlog); + +/* Shutdown a network connection on socket "s". "how" specifies which kind of traffic is shut down: + * incoming (AR_SHUT_RD), outgoing (AR_SHUT_WR) or both (AR_SHUT_BOTH). + * Returns 0 on success, or -1 on error */ +int arshutdown(int s, int how); + +/* Get the address to which the socket "s" is bound. + * "addr" has to contain a pointer to AR_SOCKADDR_IN and addrLen has to contain its length. + * After the function call "addr" contains information about the address. + * Returns 0 on success, or -1 on error + */ +int argetsockname(int s, void* addrName, int* addrLen); + +/* Set an option for socket "s". + * "optName" specifies the kind of option to be set (AR_IP_xxx) + * "optVal" contains the data with length "optLen" required for that kind of option + * "level" contains AR_SOL_SOCKET or AR_IPPROTO_xxx + * Returns 0 on success, or -1 on error */ +int arsetsockopt(int s, int level, int optName, const void* optVal, int optLen); + +/* Get an option value associated with socket "s". + * "optName" specifies the kind of option to be read (AR_IP_xxx) + * "level" contains AR_SOL_SOCKET or AR_IPPROTO_xxx + * After the call, "optVal" contains the the data for the read option (with length "optLen"). + * Returns 0 on success, or -1 on error */ +int argetsockopt(int s, int level, int optName, void* optVal, int* optLen); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arState.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arState.h new file mode 100644 index 0000000..fb1d759 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arState.h @@ -0,0 +1,36 @@ +#ifndef _AR_STATE_H_ +#define _AR_STATE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#define AR_OK (0) + +typedef int AR_STATE; /* AR_OK or any error, test for != AR_OK */ + + +#if defined(UT_BUILD) +/** + * For UTs for std-libs both runtime.h and arState.h can be + * included and we cant set the _AR_I386_AUTOMATION_STUDIO_ define + * globally. + */ +#if !defined(ERR_OK) +#define ERR_OK AR_OK +#endif + + +#elif !defined(__cplusplus) && !defined(_AR_I386_AUTOMATION_STUDIO_) +/* For C++ ERR_OK is defined in Rtk.h as member of the RTK_ERROR enum. + * For stdlibs ERR_OK is not defined here, but in runtime.h + * ARTIG-Guidelines: Use AR_OK instead of ERR_OK */ +#undef ERR_OK +#define ERR_OK AR_OK +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arexport.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arexport.h new file mode 100644 index 0000000..8ed76e7 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/arexport.h @@ -0,0 +1,25 @@ +/* This headerfile contains makros used to mark exported functions as deprecated or as not recommended */ + +#ifndef _AR_EXPORT_H_ +#define _AR_EXPORT_H_ + +/* Functions marked with AR_DEPRECATED should not be used in AR-external code at all. + * AR still supports these functions, but cannot provide guarantees for the compatibility + * of these functions. + * Any AR-external code using AR_DEPRECATED functions should replace these functions with + * the equivalent exported function which is not marked as AR_DEPRECATED. If you cannot + * find such a function in the exported AR headerfiles, then talk to the AR team. */ +#if !defined(AR_CORE) && defined(__GNUC__) +#define AR_DEPRECATED __attribute__((deprecated)) +#else +#define AR_DEPRECATED +#endif + +/* Functions marked with AR_NOT_RECOMMENDED should not be used when writing new AR-external code. + * However, for these functions there is no functionally equivalent alternative available and thus + * they cannot be replaced easily in existing code (that is why they are not AR_DEPRECATED). + * If you think that you need an AR_NOT_RECOMMENDED function when writing new code, then talk + * to the AR team - they'll try to help you finding a better solution to your problem. */ +#define AR_NOT_RECOMMENDED + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/bootModeApi.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/bootModeApi.h new file mode 100644 index 0000000..d1e526c --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/bootModeApi.h @@ -0,0 +1,25 @@ +/* + * This API provides information about the current AR boot mode. + */ + +#ifndef _BOOT_MODE_API_H_ +#define _BOOT_MODE_API_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Returns true if the target is in RUN mode (if it finished booting successfully and user programs are running) + * or if the target is currently booting towards RUN mode (which means that up until now no errors occured during boot). + * Returns false, if the target is not in RUN mode and does not boot towards RUN mode (e.g. if it reboots or finished + * rebooting after an error or after the user stopped the target via AS). */ +bool bootModeIsRun(); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/cosyApi.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/cosyApi.h new file mode 100644 index 0000000..bd4aba4 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/cosyApi.h @@ -0,0 +1,61 @@ +/* + +Configuration System (COSY) API. + +The configuration system handles configuration elements. An element is uniquely +specified by its location and id (also called fqn - fully qualified name). The +separation takes place by '/'. +An element consists of groups, and properties. Groups consist of sub-groups +and properties. + +For more information see: +Y:\TuM\BuAsw\BUInfo\Projekte\AT-50-000825_GlobaleSystemArchitektur\Technik\ConfigurationSystemArRegistry\AT-50-000825_TS_ConfigurationSystemAR.docx +Y:\TuM\BuAsw\BUInfo\Projekte\AT-50-000825_GlobaleSystemArchitektur\Technik\ConfigurationSystem\AT-50-000825_TS_ConfigurationSystem.docx + +The API is separated in the following parts: + -> cosyAdminApi.h - element administration (creation, add members, deletion) + -> cosyReadApi.h - read attributes and properties + +*/ + +#ifndef _COSY_API_H_ +#define _COSY_API_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* COSY handle */ +typedef struct COSY* COSY_H; + +/* + * Returns the handle of an existing COSY element specified by its location and id. + * + * return COSY handle for the element, NULL on failure (e.g. non existing). + */ +COSY_H cosyOpenElement(const char* location, const char* id); + +/* + * Returns the handle of an existing COSY element specified by its fqn ("/"). + * + * return COSY handle for the element, NULL on failure (e.g. non existing). + */ +COSY_H cosyOpenElementByFqn(const char* fqn); + +/* + * Closes a COSY element. + * + * Cosy elements can be opend with cosyOpenElement or with cosyCreateElement (cosyWriteApi.h). + * If the element is non volatile and changes were made, the changes are flushed to the non volatile copy. + * + * return true on success, false on failure. + */ +bool cosyCloseElement(COSY_H hCosy); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/cosyReadApi.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/cosyReadApi.h new file mode 100644 index 0000000..ced06e4 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/cosyReadApi.h @@ -0,0 +1,191 @@ +/* + +Configuration System (COSY) read API. + +Detailed description see cosyApi.h! + +*/ + +#ifndef _COSY_READ_API_H_ +#define _COSY_READ_API_H_ + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* COSY iterate flags */ +enum COSY_ITERATE_FLAGS +{ + COSY_ITERATE_DEFAULT = 0, /* Iterate only members of the first level. */ + COSY_ITERATE_SUB_MEMBER = 1 /* Iterate all members of an element. Also sub members. */ +}; + +/* + * COSY iteration callback. + * + * Invoked for each existing configuration element. Elements must not be added + * or removed during iteration. + * context ........ user context. + * hCosy ........... COSY element handle. + * + * Return true - continue iteration, false - stop iteration. + */ +typedef bool (*COSY_ITERATE_FP)(uintptr_t context, COSY_H hCosy); + +/* + * COSY element member iteration callback. + * + * Invoked for each existing member of an element. Members of the same level + * must not be added or removed during iteration. + * context ........ user context. + * hCosy ........... COSY element handle. + * id ............. member id. + * elementType .... member type ("Group", "Property"). + * + * Return true - continue iteration, false - stop iteration. + */ +typedef bool (*COSY_ITERATE_MEMBERS_FP)(uintptr_t context, COSY_H hCosy, const char* id, const char* memberType); + +/* + * Gets the location of a COSY element. + * + * Returns a pointer to the location string, NULL on failure. + */ +const char* cosyGetElementLocation(COSY_H hCosy); + +/* + * Gets the id of a COSY element. + * + * Returns a pointer to the id string, NULL on failure. + */ +const char* cosyGetElementId(COSY_H hCosy); + +/* + * Gets the type of a COSY element. + * + * Returns a pointer to the type string, NULL on failure. + */ +const char* cosyGetElementType(COSY_H hCosy); + +/* + * Gets the technology package of a COSY element. + * + * Returns a pointer to the technology package string, NULL on failure. + */ +const char* cosyGetElementTechnologyPackage(COSY_H hCosy); + + +/* + * Tests if the COSY element has a non volatile copy. + * + * Return true if non volatile, false if volatile. + */ +bool cosyIsElementNonVolatile(COSY_H hCosy); + +/* + * Gets the value of a group. + * + * Returns a pointer to the value string of a group, NULL on failure or if no value is set. + */ +const char* cosyGetGroupValue(COSY_H hCosy, const char* id); + +/* + * Gets the IEC type of a property. + * + * Returns a pointer to the type string (IEC), NULL on failure or if no type is set. + */ +const char* cosyGetPropertyType(COSY_H hCosy, const char* id); + +/* + * Gets a property value. + * + * Also suceeeds if the specified bytes to read are less than the real size, + * therefore also the size value should be checked. + * + * Type mapping (IEC -> type of the given value pointer): + * BOOL -> int + * SINT -> int + * INT -> int + * DINT -> int + * USINT -> int + * UINT -> int + * UDINT -> int + * BYTE -> int + * WORD -> int + * DWORD -> int + * REAL -> String + * LREAL -> String + * STRING -> String + * TIME -> String + * DATE -> String + * DATE_AND_TIME -> String + * TIME_OF_DAY -> String + * ULINT -> not supported + * LWORD -> not supported + * WSTRING -> not supported + * OCTET -> not supported + * LINT -> not supported + * + * Return true if succeeds, false on failure. + */ +bool cosyGetPropertyValue(COSY_H hCosy, const char* id, const char* iecType, size_t bytesToRead, void* pValue, + size_t* pValueSize); + +/* + * Gets the size of a property. + * + * Return true if succeeds, false on failure. + */ +bool cosyGetPropertySize(COSY_H hCosy, const char* id, size_t* pValueSize); + +/* + * Iterates existing COSY elements. + * + * If a type is specified only elements of this type are iterated. Otherwise + * all elements are iterated. + * + * Return true on success, false on failure. + */ +bool cosyIterateElements(COSY_ITERATE_FP fpIterate, uintptr_t context, const char* elementTypeFilter); + +/* + * Iterates COSY element members. + * + * If a start id is given (parameter startId), the iteration is done for the childs of + * this member. + * + * Return true on success, false on failure. + */ +bool cosyIterateMembers(COSY_H hCosy, const char* startId, enum COSY_ITERATE_FLAGS flags, + COSY_ITERATE_MEMBERS_FP fpIterate, uintptr_t context); + +/* + * Tests if the COSY element has a non volatile copy which is different to the current + * element configuration. + * + * Return true if dirty, false if not. + */ +bool cosyIsElementDirty(COSY_H hCosy); + +/* + * Gets the version of a COSY element. + * + * Returns a pointer to the version string, NULL on failure. + */ +const char* cosyGetElementVersion(COSY_H hCosy); + + +#if AR_CORE +#include +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/cosyWriteApi.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/cosyWriteApi.h new file mode 100644 index 0000000..631aa21 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/cosyWriteApi.h @@ -0,0 +1,148 @@ +/* + +Configuration System (COSY) write API. + +This API provides functions: + - to create and delete COSY members (elements, groups), + - to set properties, + - to set the attributes of an element. + +Detailed description see cosyApi.h! + +*/ + +#ifndef _COSY_WRITE_API_H_ +#define _COSY_WRITE_API_H_ +#include +#include +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +#define COSY_TIMEOUT_NO_WAIT 0 +#define COSY_TIMEOUT_WAIT_FOREVER 0xFFFFFFFF + + + +/* + * Creates a new COSY element. + * + * An element is uniquely specified by its location and id. The result of + * the combination of location and id is called fqn (fully qualified name). + * E.g. "System/GMC/Axis" where "System/GMC" is the location and "Axis" is + * the id of the element. The separation takes place by '/', so an id must not + * contain a slash. + * + * return COSY handle for the element, NULL on failure. + */ +COSY_H cosyCreateElement(const char* location, const char* id, const char* type, const char* technologyPackage); + +/* + * Destroys an existing COSY element. + * + * Also, an existing non volatile copy is deleted. + * + * return true if deletion succeeds, false on failure. + */ +bool cosyDestroyElement(const char* location, const char* id); + +/* + * Makes a non volatile copy of a COSY element. + * + * Must be called again, if changes in an element should be stored non volatile. + * + * return true on success, false on failure. + */ +bool cosySaveElement(COSY_H hCosy); + +/* + * Adds a group. + * + * It is possible to add subgroups at once. So id can be given as path to a + * subgroup. Example: if id equals "g1/g2/g3" and none of the groups exists, + * all groups will be created. + * + * return true if add group succeeds, false on failure. + */ +bool cosyAddGroup(COSY_H hCosy, const char* id, const char* value); + +/* + * Sets the value of a group. + * + * It is only possible to change values of a group. Set the value to NULL is also not possible. + * + * return pointer to the new value string of a group, NULL on failure. + */ +const char* cosySetGroupValue(COSY_H hCosy, const char* id, const char* value); + +/* + * Sets a property value. + * + * If the property does not exist it will be created. If the property exists + * the value will be changed. It is not possible to change the type of an + * existing property. + * It is possible to add properties of currently not existing subgroups. So id + * can be given as path to a property of a subgroup. Example: if id equals "g1/g2/g3/property" + * and none of the groups exists, all groups will be created. + * + * Type mapping (IEC -> type of the given value pointer): + * BOOL -> int + * SINT -> int + * INT -> int + * DINT -> int + * USINT -> int + * UINT -> int + * UDINT -> int + * BYTE -> int + * WORD -> int + * DWORD -> int + * REAL -> String + * LREAL -> String + * STRING -> String + * TIME -> String + * DATE -> String + * DATE_AND_TIME -> String + * TIME_OF_DAY -> String + * ULINT -> not supported + * LWORD -> not supported + * WSTRING -> not supported + * OCTET -> not supported + * LINT -> not supported + * + * return true if set property succeeds, false on failure. + */ +bool cosySetProperty(COSY_H hCosy, const char* id, const char* iecType, const void* pValue, size_t valueSize); + +/* + * Deletes a group or property. + * + * Removes a member of an element (group or property) and all its sub- + * members. A timeout [usec] can be specified, to wait for an + * opened member: + * -> COSY_TIMEOUT_NO_WAIT (0) - don't wait, + * -> COSY_TIMEOUT_WAIT_FOREVER (0xFFFFFFFF) - wait forever. + * + * return true if deletion succeeds, false on failure. + */ +bool cosyDeleteMember(COSY_H hCosy, const char* id, uint32_t timeoutUsec); + +/* + * Sets the version of a COSY element. + * + * return true on success, false on failure. + */ +bool cosySetElementVersion(COSY_H hCosy, const char* version); + + +#if AR_CORE +#include +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/hostApi.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/hostApi.h new file mode 100644 index 0000000..e8fd6bb --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/hostApi.h @@ -0,0 +1,36 @@ + +#ifndef _HOST_API_H_ +#define _HOST_API_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +enum HOST_ERROR +{ + HOST_ERR_PARAMETER = 29703, /* invalid parameter*/ + HOST_ERR_DOMAIN = 29705, /* name can't be resolved */ + HOST_ERR_ADDRESS = 29706, /* address can't be reloved */ + HOST_ERR_STRLEN = 29708, /* buffersize */ +}; + +/* Looks up the IP address (lpAddr) of the provided hostname (szName). + * Returns ERR_OK on success, HOST_ERROR on failure */ +WORD ARHostGetByName(const char* szName, ULONG* lpAddr); + +/* Get the symbolic name of this machine. + * "dst" is a pointer to the buffer that will receive the name, and "size" is the size of the buffer + * Returns 0 on success, -1 on error */ +int argethostname(char* dst, int size); + +#if AR_CORE +#include +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/iecType.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/iecType.h new file mode 100644 index 0000000..b5fad98 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/iecType.h @@ -0,0 +1,47 @@ + +/* IEC type definitions */ + +#ifndef _IEC_TYPE_H_ +#define _IEC_TYPE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum +{ + IEC_TYPE_INVALID = 0, /* No IEC Type */ + IEC_TYPE_BOOL = 1, /* 8 Bit containing a boolean value FALSE=0 or TRUE=1 */ + IEC_TYPE_SINT = 2, /* 8 Bit signed integer */ + IEC_TYPE_INT = 3, /* 16 Bit signed integer */ + IEC_TYPE_DINT = 4, /* 32 Bit signed integer */ + IEC_TYPE_USINT = 5, /* 8 Bit unsigned integer */ + IEC_TYPE_UINT = 6, /* 16 Bit unsigned integer */ + IEC_TYPE_UDINT = 7, /* 32 Bit unsigned integer */ + IEC_TYPE_REAL = 8, /* 32 Bit floating point number */ + IEC_TYPE_STRING = 9, /* Variable-length single-byte character string */ + IEC_TYPE_ULINT = 10, /* 64 Bit unsigned integer */ + IEC_TYPE_DATE_AND_TIME = 11, /* 32 Bit of Date in Seconds since 01.01.1970 00:00:00 */ + IEC_TYPE_TIME = 12, /* 32 Bit of Time in ms */ + IEC_TYPE_DATE = 13, /* 32 Bit of Date (only) */ + IEC_TYPE_LREAL = 14, /* 64 Bit floating point number */ + IEC_TYPE_obsoletDT15 = 15, /* not used any more (historisch "struct array") */ + IEC_TYPE_TIME_OF_DAY = 16, /* 32 Bit Time of day (only)*/ + IEC_TYPE_BYTE = 17, /* Bit string of length 8 */ + IEC_TYPE_WORD = 18, /* Bit string of length 16 */ + IEC_TYPE_DWORD = 19, /* Bit string of length 32 */ + IEC_TYPE_LWORD = 20, /* Bit string of length 64 */ + IEC_TYPE_WSTRING = 21, /* Variable-length double-byte character string */ + BUR_TYPE_OCTET = 22, /* OCTET fuer Felder */ + IEC_TYPE_LINT = 23 /* 64 Bit signed integer */ +} IEC_TYPE; + +#if AR_CORE +#include +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/pvElementIteratorApi.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/pvElementIteratorApi.h new file mode 100644 index 0000000..afe6e9c --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/pvElementIteratorApi.h @@ -0,0 +1,202 @@ +/* pvElementIteratorApi + * This API provides functions to get all elements that a pv is composed of + * for each leaf-element one callback will occur e.g.: + * + * TYPE + * TestStruct : STRUCT + * Struct_Bool : BOOL := 1; + * Struct_Dint : DINT := -2000000000; + * Struct_DT : DATE_AND_TIME := DT#1992-09-23-20:15:00; + * Struct_Int : INT := -3000; + * Struct_LReal : LREAL := -1234567.12345; + * END_STRUCT; + * FARBEN : + * ( + * GRUEN, + * TUERKIS, + * LILA + * ); + * adt_basic_bool : BOOL; + * END_TYPE + * + * VAR + * var_Struct : TestStruct; + * var_Sint : SINT; + * pvArray_adt_basic_bool : ARRAY[-32001..-32000] OF adt_basic_bool; + * rb1 : REFERENCE TO BOOL; + * var_colour : FARBEN; + * END_VAR + * + * pveiIterateElements("TestStruct",...) + * name address size type + * .Struct_Bool 0x5bf3c24 1 BOOL + * .Struct_Dint 0x5bf3c28 4 DINT + * .Struct_DT 0x5bf3c2c 4 DATE_AND_TIME + * .Struct_Int 0x5bf3c30 2 INT + * .Struct_LReal 0x5bf3c34 8 LREAL + * + * pveiIterateElements("var_Sint",...) + * name address size type + * (emty) 0x56e3fcd 1 SINT + * + * pveiIterateElements("pvArray_adt_basic_bool",...) + * name address size type baseType + * [-32001] 0x56e3f68 1 INVALID BOOL + * [-32000] 0x56e3f69 1 INVALID BOOL + * + * pveiIterateElements("rb1",...) + * name address size type baseType isRefernce BaseAddr Offset + * (emty) NULL 1 INVALID BOOL true 0x5aca396 0 + * + * pveiIterateElements("var_colour",...) + * name address size type baseType isEnum + * (emty) 0x56e3f6c 4 INVALID INVALID true + */ + +#ifndef _PVEI_API_H_ +#define _PVEI_API_H_ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct PVELEM* PVELEM_H; +typedef struct ENUMVAL* ENUMVAL_H; + +/* Callback for each element within a PV. + * The parameter 'pvElem' is a handle to the current element that can be used to get further + * information. It is only valid for the duration of the callback. + * The Parameter 'pArg' is the pointer 'pCallbackArg' that was provided to pveiIterateElements(). + * Return true to continue the iteration, false to stop. + */ +typedef bool (*PVEI_CALLBACK_FP)(PVELEM_H pvElem, void* pArg); + +/* + * Find a PV by name and call a function for each leaf element of the PV and + * for each leaf element of substructures to any depth. + * One callback occurs for every member of an array. + * Basic PVs are considered to have one nameless member. + * Syntax for 'pvName': (see 'Names of process variables' in AS help): + * ["::"][":"]["[""]"]["."] + * Name of the application module (optional). + * Name of the cyclic object (optional). + * Name of the process variable. + * Index of the array element (optional). + * Name of the structure element (optional). + * 'pvName' must not be NULL. + * 'fpCallback' can be NULL. + * 'pCallbackArg' can be NULL. + * True is returned when the PV was found, false otherwise. + */ +bool pveiIterateElements(const char pvName[], PVEI_CALLBACK_FP fpCallback, void* pCallbackArg); + +/* + * Returns true if the 'nameBuffer' holds the name and the path to the element, + * false if the supplied buffer was too small. + * The name of the PV that is being iterated is not part of the returned name. + * If the PV has no subelements (it is an IEC base type or a direct derived type) nameBuffer will be empty. + * 'pvElem' must not be NULL. + * 'nameBuffer' must not be NULL. + * 'nameBufferSize' must hold the size of 'nameBuffer'. + */ +bool pveiGetName(PVELEM_H pvElem, char nameBuffer[], unsigned int nameBufferSize); + +/* + * Returns the IEC type of an element. + * If IEC_TYPE_INVALID is returned the element is a user defined type. + * E.g. an enum or a direct derived type or an element that is accessed via a reference. + * 'pvElem' must not be NULL. + */ +IEC_TYPE pveiGetType(PVELEM_H pvElem); + +/* + * Returns the base IEC type of a direct derived type or an element that is accessed via a reference. + * Returns IEC_TYPE_INVALID for base types and enum. + * 'pvElem' must not be NULL. + */ +IEC_TYPE pveiGetBaseType(PVELEM_H pvElem); + +/* + * Returns the size in bytes of the element or 0 in case of an error. + * For IEC base types this function is identical to iecTypeSize() for + * other types the size is depending on the implementation. + * 'pvElem' must not be NULL. + */ +unsigned int pveiGetSize(PVELEM_H pvElem); + +/* + * Returns the address of the element. + * NULL is returned when the element is accessed via a reference. + * The value of the element can be read with *(address). + * 'pvElem' must not be NULL. + */ +void* pveiGetAddr(PVELEM_H pvElem); + +/* + * Returns the base address of an element that is accessed via a reference. + * Returns in 'offset' the number of bytes that need to be added + * to the content of the base address to get the value of the element. + * The value of the element can be read with *(*(baseAddress) + 'offset') + * 'pvElem' must not be NULL. + * 'offset' can be NULL. + */ +void* pveiGetBaseAddrAndOffset(PVELEM_H pvElem, unsigned int* offset); + +/* + * Returns true if the element is accessed via a reference. + * 'pvElem' must not be NULL. + */ +bool pveiIsReferenceTo(PVELEM_H pvElem); + +/* + * Returns true if the element is an enum. + * 'pvElem' must not be NULL. + */ +bool pveiIsEnum(PVELEM_H pvElem); + +/* + * Callback for each valid value of an enum. + * The parameter 'enumVal' is a handle that can be used to retrive the properties of the enum entry. + * It is only valid for the duration of the callback. + * The Parameter 'pArg' is the pointer 'pCallbackArg' that was provided to pveiIterateEnumValues(). + * Return true to continue the iteration, false to stop. + */ +typedef bool (*PVEI_ENUM_CALLBACK_FP)(ENUMVAL_H enumVal, void* pArg); + +/* + * Call a function for each valid value of an enum. + * 'pvElem' must not be NULL. + * 'fpCallback' must not be NULL. + * 'pCallbackArg' can be NULL. + */ +void pveiIterateEnumValues(PVELEM_H pvElem, PVEI_ENUM_CALLBACK_FP fpCallback, void* pCallbackArg); + +/* + * Returns the numeric representation of the enum value. + * 'enumVal' must not be NULL. + */ +int pveiEnumGetNumericValue(ENUMVAL_H enumVal); + +/* + * Returns true if a subrange was set. + * 'pvElem' must not be NULL. + */ +bool pveiHasSubrange(PVELEM_H pvElem); + +/* + * Returns the upper and lower limit of a data type with subrange. + * 'pvElem' must not be NULL. + * 'lowerLimit' can be NULL. + * 'upperLimit' can be NULL. + */ +void pveiGetSubrangeLimits(PVELEM_H pvElem, int* lowerLimit, int* upperLimit); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtk.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtk.h new file mode 100644 index 0000000..54c2b75 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtk.h @@ -0,0 +1,25 @@ + +/* This API provides abstractions for OS-functionalities (semaphores, tasks, timers, ...). + * Instead of using native Windows or VxWorks functions, you should use this API. + * All functions returning RTK_ERROR return ERR_OK on success and other error codes on failure */ + +#ifndef _RTK_H_ +#define _RTK_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if AR_CORE +#include +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkBase.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkBase.h new file mode 100644 index 0000000..c1fd59b --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkBase.h @@ -0,0 +1,134 @@ + +/* RTK basis data types and error codes */ + + +#ifndef _RTK_BASE_H_ +#define _RTK_BASE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#ifndef __cplusplus +#include +#endif + +/* For using this file in Automation Studio tasks, it has to be included AFTER AsDefault.h */ +#if defined (_DEFAULT_INCLUDES) && !defined(_RUNTIME_) && !defined(_REPLACE_CONST) +#error Rtk-headers have to be be included after AsDefault.h +#endif + + +/* Can be used to decorate RTK functions with additional attributes. + * E.g. #define EXIMPORT __declspec(nothrow) simplifies the function calls for C++, + * because no exception-related code has to be generated by the compiler */ +#ifndef EXIMPORT + #define EXIMPORT +#endif + +/* General definitions for RT kernel */ +#define MAX_RTK_NAME_LENGTH 32 +#define MAX_RTK_NAME_TERMINATED_LENGTH (MAX_RTK_NAME_LENGTH + 1) + +/* Timeout for task events, semaphore, fifo, debugmessage, ... */ +#define RTK_TIMEOUT_NOWAIT 0 +#define RTK_TIMEOUT_WAITFOREVER 0xFFFFFFFF + +typedef void (*LPRTK_CREATE_TASK_FKT)(void* param); + +/* Errorcodes */ +typedef enum +{ +#if !defined(__cplusplus) && !defined(_AR_I386_AUTOMATION_STUDIO_) + ERR_RTK_OK = ERR_OK, +#else +#ifndef ERR_OK /* could be defined by runtime.h */ +// ERR_OK = 0, /* No error */ +#endif +#endif + + ERR_RTK_OBJID = 25000, /* Invalid object ident */ + ERR_RTK_OBJNOTFOUND, /* Object with specified name not found */ + ERR_RTK_OBJTYPE, /* Invalid object type */ + ERR_RTK_OBJ_OVERFLOW, /* Object table full */ + ERR_RTK_OBJ_EXIST, /* Object already exists */ + ERR_RTK_OBJNAME, /* Wrong object name */ + + ERR_RTK_PRIORITY = 25010, /* Invalid priority */ + ERR_RTK_NO_STACK, /* Not enough free stack */ + ERR_RTK_NOT_SUSPENDED, /* Task is not suspended */ + ERR_RTK_SUSPENDED, /* Task is already suspended */ + ERR_RTK_TASKVALUE, /* Invalid valueindex */ + ERR_RTK_NOTASKTIMERS, /* No more task timers available */ + ERR_RTK_TASKCREATE, /* OS task not created */ + ERR_RTK_TASKDELETE, /* OS Task not deleted */ + + ERR_RTK_FIFO_CREATE = 25030, /* FIFO not created (memory alloc, ...) */ + ERR_RTK_FIFO_DELETE, /* FIFO not deleted (memory free, ...) */ + ERR_RTK_FIFO_WRITE, /* FIFO not written (fifo full, ...) */ + ERR_RTK_FIFO_READ, /* FIFO not read (fifo empty, ...) */ + ERR_RTK_FIFO_RELEASE, /* FIFO not released */ + ERR_RTK_FIFO_ATTACHED_TIMEOUT, /* FIFO read/write with timeout invalid (attached) */ + ERR_RTK_FIFO_NOT_ATTACHED, /* FIFO not attached when read/write */ + ERR_RTK_FIFO_ATTACHED, /* FIFO already attached (other task) */ + ERR_RTK_FIFO_ATTACH, /* FIFO not created for attach */ + + ERR_RTK_SEMACREATE = 25040, /* OS semaphore not created */ + ERR_RTK_SEMA_DELETE, /* OS semaphore not deleted */ + ERR_RTK_SEMA_RELEASE, /* OS semaphore not released */ + + ERR_WRONG_MEMTYPE = 25060, /* Invalid memory type */ + ERR_RTK_NOMEM_HEAP, /* Not enough memory free in heap */ + ERR_RTK_FREE_HEAP, /* Memory not in heap */ + + ERR_RTK_CREATE_SHAREDMEM, /* SharedMemory not created */ + ERR_RTK_DELETE_SHAREDMEM, /* SharedMemory not deleted */ + ERR_RTK_MAP_SHAREDMEM, /* SharedMemory not mapped */ + ERR_RTK_UNMAP_SHAREDMEM, /* SharedMemory not unmapped */ + + ERR_RTK_IRQNUMBER = 25080, /* Invalid interruptnumber */ + ERR_RTK_CONNECT_IRQ, /* Interrupt not connected */ + ERR_RTK_DISCONNECT_IRQ, /* Interrupt not disconnected */ + + ERR_RTK_TIMERCYCLE = 25090, /* Invalid cycletime */ + ERR_RTK_WRONGTIME, /* Invalid time/date */ + ERR_RTK_SET_RTC, /* RealTimeClock not set */ + ERR_RTK_TIMER_CREATE, /* Timer not created */ + ERR_RTK_TIMER_DELETE, /* Timer not deleted */ + ERR_RTK_TIMER_START, /* Timer not started */ + ERR_RTK_TIMER_STOP, /* Timer not stopped */ + + /* 25100 - 25199 obsolete (Debugger error codes) */ + + ERR_RTK_SOFTPLC_CREATE = 25200, /* RtkCreateSoftPlc not possible */ + ERR_RTK_INIT, /* RTK not initialized */ + ERR_RTK_DEINIT, /* RTK not deinitialized */ + ERR_RTK_FATAL, /* Fatal internal RTK error */ + ERR_RTK_TIMEOUT, /* Timeout in RTK functions with wait */ + ERR_RTK_NOTSUPPORTED, /* Function not supported in this RTK version */ + ERR_RTK_UNHANDLED_CPP_EXC, /* Unhandled CPP Exception */ + + ERR_RTK_CRITSECCREATE = 25250, /* CriticalSection not created */ + ERR_RTK_CRITSECDELETE, /* CriticalSection not deleted */ + ERR_RTK_CRITSECENTER, /* CriticalSection not enterd */ + ERR_RTK_CRITSECLEAVE, /* CriticalSection not left */ + + ERR_RTK_EXC_BASE = 25300, /* Base for RTK exceptions -> + RTK_EXCTYP_xx */ + + ERR_RTK_LOG_CREATE = 25400, /* Log not created */ + ERR_RTK_LOG_DELETE, /* Log not deleted */ + ERR_RTK_LOG_NOBUFSET, /* no Log-Buffer set */ + ERR_RTK_LOG_LOGACTIVE, /* Log active */ +} RTK_ERROR; + +/* General datatypes for RT kernel */ +typedef ULONG RTK_H; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkCriticalSection.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkCriticalSection.h new file mode 100644 index 0000000..6cac18a --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkCriticalSection.h @@ -0,0 +1,44 @@ + +/* RTK critical section functions */ + +#ifndef _RTK_CRITICAL_SECTION_H_ +#define _RTK_CRITICAL_SECTION_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef RTK_H RTK_CRIT_SEC_H; + +/**********************************************************************************************/ +/* Critical Section */ +/* A critical sections can be used to mutually exclude access to critical code sections which */ +/* process shared data that might be simultaniously modified by other tasks as well. */ +/* RTK critical sections support priority inheritance to avoid priority inversion. */ +/**********************************************************************************************/ + +/* Creates a critical section object with the provided name (lpszCriticalSectionName must be unique or NULL). + * The output-parameter hCriticalSection (must not be NULL) returns a handle to the critical section */ +EXIMPORT RTK_ERROR RtkCreateCriticalSection(LPSTRING lpszCriticalSectionName, RTK_CRIT_SEC_H* hCriticalSection); + +/* Deletes a critical section object */ +EXIMPORT RTK_ERROR RtkDeleteCriticalSection(RTK_CRIT_SEC_H hCriticalSection); + +/* Enter a critical section. + * This function has to be called before accessing the data which needs mutual exclusion. + * If no other task is in the critical section (entered and did not yet leave), then this function returns immediately. + * If another task is in the critical section, then the current task yields until no other + * task is in the critical section. */ +EXIMPORT RTK_ERROR RtkEnterCriticalSection(RTK_CRIT_SEC_H hCriticalSection); + +/* Leave a critical section. + * This function has to be called after accessing the data which needs mutual exclusion. */ +EXIMPORT RTK_ERROR RtkLeaveCriticalSection(RTK_CRIT_SEC_H hCriticalSection); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkFifo.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkFifo.h new file mode 100644 index 0000000..eaf286f --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkFifo.h @@ -0,0 +1,65 @@ + +/* RTK FIFO functions */ + +#ifndef _RTK_FIFO_H_ +#define _RTK_FIFO_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef RTK_H RTK_FIFO_H; + +/* Fifo flags (create) */ +typedef unsigned long RTK_FIFOFLAG; +#define RTK_FIFO_WRITE_UNTIL_FULL 0x00000000 /* no overwrite */ +#define RTK_FIFO_WRITE_ALWAYS 0x00000001 /* overwrite */ +#define RTK_FIFO_ATTACH 0x00000002 /* FIFO access only attach/release */ + +/* Creates a FIFO with the provided name (lpszFifoName must be unique or NULL) and the provided size (ulFifoByteSize). + * The FifoFlags determine whether RtkWriteFifo calls will overwrite data in the FIFO (RTK_FIFO_WRITE_ALWAYS) or whether + * RtkWriteFifo calls only succeed if there is enough free space available in the FIFO (RTK_FIFO_WRITE_UNTIL_FULL). + * A handle to the FIFO is returned as output-parameter (hFifo - must not be NULL) */ +EXIMPORT RTK_ERROR +RtkCreateFifo(LPSTRING lpszFifoName, ULONG ulFifoByteSize, RTK_FIFOFLAG FifoFlags, RTK_FIFO_H* hFifo); + +/* Deletes a FIFO*/ +EXIMPORT RTK_ERROR RtkDeleteFifo(RTK_FIFO_H hFifo); + +/* Writes data (lpDataSource) with size ulDataByteSize to the FIFO. + * If the FIFO was created with the flag RTK_FIFO_WRITE_ALWAYS, then unread data will be overwritten. + * If the FIFO was created with the flag RTK_FIFO_WRITE_UNTIL_FULL, then unread data not be overwritten and this + * function waits for ulTimeoutUsec (RTK_TIMEOUT_WAITFOREVER to wait forever) to put the data into the FIFO and + * returns ERR_RTK_TIMEOUT if the timeout expires */ +EXIMPORT RTK_ERROR RtkWriteFifo(RTK_FIFO_H hFifo, LPVOID lpDataSource, ULONG ulDataByteSize, ULONG ulTimeoutUsec); + +/* Copies data of size lpDataByteSize from the FIFO to lpDataDest (must not be NULL). + * Waits for ulTimeoutUsec (RTK_TIMEOUT_WAITFOREVER to wait forever) if not enough data is available in the FIFO */ +EXIMPORT RTK_ERROR RtkReadFifo(RTK_FIFO_H hFifo, LPVOID lpDataDest, ULONG lpDataByteSize, ULONG ulTimeoutUsec); + +/* Deletes all data in the FIFO */ +EXIMPORT RTK_ERROR RtkClearFifo(RTK_FIFO_H hFifo); + +/* Locks access (read/write) to the FIFO for other tasks. + * It is possible to have one task reading and one task writing to the FIFO without requiring locking with this + * function. However, if multiple tasks read or if multiple tasks write to the FIFO, then locking with this function is + * required */ +EXIMPORT RTK_ERROR RtkAttachFifo(RTK_FIFO_H hFifo); + +/* Unlocks access (read/write) to the FIFO for other tasks */ +EXIMPORT RTK_ERROR RtkReleaseFifo(RTK_FIFO_H hFifo); + +/* Obtains information about the FIFO + * + * hFifo.............. Handle to the FIFO for which the information shall be retrieved + * lpulFifoFree....... Output-parameter - can be NULL. Returns the number of free bytes + * lpulFifoUsed....... Output-parameter - can be NULL. Returns the number of occupied bytes */ +EXIMPORT RTK_ERROR RtkGetFifoInfo(RTK_FIFO_H hFifo, LPULONG lpulFifoFree, LPULONG lpulFifoUsed); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkMemory.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkMemory.h new file mode 100644 index 0000000..39a0683 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkMemory.h @@ -0,0 +1,48 @@ + +/* RTK memory functions */ + +#ifndef _RTK_MEMORY_H_ +#define _RTK_MEMORY_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Memory access flags */ +typedef unsigned long RTK_MEMORY_ACCESS; +#define RTK_MEM_NO_READ 0x00000000 /* ignored */ +#define RTK_MEM_NO_WRITE 0x00000000 /* ignored */ +#define RTK_MEM_NOT_EXECUTE 0x00000000 /* ignored */ +#define RTK_MEM_READ_ALL 0x00000001 /* ignored */ +#define RTK_MEM_WRITE_ALL 0x00000002 /* ignored */ +#define RTK_MEM_EXECUTE_ALL 0x00000004 /* ignored */ +#define RTK_MEM_READ_LOCAL 0x00000008 /* ignored */ +#define RTK_MEM_WRITE_LOCAL 0x00000010 /* ignored */ +#define RTK_MEM_EXECUTE_LOCAL 0x00000020 /* ignored */ +#define RTK_MEM_NO_INIT 0x00000000 /* no memory initialization */ +#define RTK_MEM_INITZERO 0x00008000 /* memory initialization with 0 */ + +/* Allocates heap memory. + * Depending on the AccessFlags, the memory will be initialized with 0 (RTK_MEM_INITZERO) or it will be not initialized + * (RTK_MEM_NO_INIT). After the function call lpMemoryAddress (which must not be NULL) contains the pointer to the + * allocated memory */ +EXIMPORT RTK_ERROR RtkAllocateMemory(ULONG ulByteLength, RTK_MEMORY_ACCESS AccessFlags, LPVOID* lpMemoryAddress); + +/* Frees memory allocated with RtkAllocateMemory. + * lpMemoryaddress is the pointer to the memory to be freed */ +EXIMPORT RTK_ERROR RtkFreeMemory(LPVOID lpMemoryAddress, ULONG ulUnused); + +/* Retrieves information about the DRAM + * lpulMemSize................. Output-parameter - can be NULL. Returns the overall RAM size in byte. + * lpulFreeMemSize............. Output-parameter - can be NULL. Returns the available/free RAM size in byte. + * lpulBiggestFreeBlockSize.... Output-parameter - can be NULL. Returns the biggest available/free consecutive + * RAM block in byte. */ +EXIMPORT RTK_ERROR RtkGetMemoryInfo(LPULONG lpulMemSize, LPULONG lpulFreeMemSize, LPULONG lpulBiggestFreeBlockSize); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkMisc.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkMisc.h new file mode 100644 index 0000000..69878f5 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkMisc.h @@ -0,0 +1,25 @@ + +/* Miscellaneous RTK functions */ + +#ifndef _RTK_MISC_H_ +#define _RTK_MISC_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Reads the current value of a microsecond counter. + * Can be used for time measurements. + * Overflow from 0xFFFFFFFF to 0x00000000 */ +EXIMPORT ULONG RtkReadUsecCounter(void); + +/* Returns the configured system tick */ +EXIMPORT ULONG RtkGetSystemTick(); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkObject.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkObject.h new file mode 100644 index 0000000..def91ed --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkObject.h @@ -0,0 +1,53 @@ + +/* Functions to read general information about RTK objects */ + +#ifndef _RTK_OBJECT_H_ +#define _RTK_OBJECT_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Objecttypes */ +typedef enum +{ + RTK_OBJ_INVALID = 0, + RTK_OBJ_TASK, + RTK_OBJ_SEMAPHORE, + RTK_OBJ_CRITICAL_SECTION, + RTK_OBJ_TIMER, + RTK_OBJ_INTERRUPT, + RTK_OBJ_EXCEPTION, + RTK_OBJ_PLAINFIFO, + RTK_OBJ_FIFO, + RTK_OBJ_MEMORY, + RTK_OBJ_SHARED_MEMORY, + RTK_OBJ_DEBUGGER, + RTK_OBJ_LOG, + RTK_OBJ_RTC, + RTK_OBJ_MISC, + RTK_OBJ_TASKTIMER /* internal */ +} RTK_OBJ_TYPE; + +typedef RTK_OBJ_TYPE* LPRTK_OBJ_TYPE; + +/* Searches an RTK object with the provided name (lpszObjectName). + * Returns the object (hObject - must not be NULL) and the type of the object (lpObjectType - can be NULL) */ +EXIMPORT RTK_ERROR RtkGetIdent(LPSTRING lpszObjectName, RTK_H* hObject, LPRTK_OBJ_TYPE lpObjectType); + +/* Returns information about the RTK-Object. + * + * hObject............. Handle of the RTK Object + * ulMaxNameLength..... Length of the provided lpszObjectName buffer + * lpObjectType........ Output-parameter - can be NULL. Returns the type of the RTK-object. + * lpszObjectName...... Output-parameter - can be NULL. The function call writes the RTK-object name to this buffer */ +EXIMPORT RTK_ERROR +RtkGetObjectInfo(RTK_H hObject, ULONG ulMaxNameLength, LPRTK_OBJ_TYPE lpObjectType, LPSTRING lpszObjectName); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkPlainFifo.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkPlainFifo.h new file mode 100644 index 0000000..ef1d70f --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkPlainFifo.h @@ -0,0 +1,55 @@ + +/* RTK Plain FIFO + * Rtk plain FIFO is a simple ringbuffer which does not use any locking. + * It is possible to have one task reading and one task writing to the FIFO without requiring any further locking. + * If multiple tasks read or if multiple tasks write to the FIFO, then external locking is required. + */ + +#ifndef _RTK_PLAIN_FIFO_H_ +#define _RTK_PLAIN_FIFO_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef RTK_H RTK_PLAIN_FIFO_H; + +/* Creates a FIFO with the provided name (lpszFifoName must be unique or NULL) */ +/* the FIFO provides space for ulFifoMaxEntries with ulFifoEntrySize. + * A handle to the FIFO is returned as output-parameter (hFifo - must not be NULL) */ +EXIMPORT RTK_ERROR +RtkCreatePlainFifo(LPSTRING lpszFifoName, ULONG ulFifoEntrySize, ULONG ulFifoMaxEntries, RTK_PLAIN_FIFO_H* hFifo); + +/* Deletes a plain FIFO*/ +EXIMPORT RTK_ERROR RtkDeletePlainFifo(RTK_PLAIN_FIFO_H hFifo); + +/* Writes data to the FIFO. + * The size of the data is the size provided with ulFifoEntrySize when creating the FIFO. If the FIFO is full (it only + * contains entries which were not yet read), then this function returns ERR_RTK_FIFO_WRITE */ +EXIMPORT RTK_ERROR RtkWritePlainFifo(RTK_PLAIN_FIFO_H hFifo, LPVOID lpDataSource); + +/* Copies data from the FIFO to lpDataDestination (must not be NULL). + * The size of the copied data is the size provided with ulFifoEntrySize when creating the FIFO. + * Returns ERR_RTK_FIFO_READ if the FIFO is empty */ +EXIMPORT RTK_ERROR RtkReadPlainFifo(RTK_PLAIN_FIFO_H hFifo, LPVOID lpDataDestination); + +/* Deletes all data contained in the FIFO + * This function requires external locking if another task calls RtkReadPlainFifo */ +EXIMPORT RTK_ERROR RtkClearPlainFifo(RTK_PLAIN_FIFO_H hFifo); + +/* Obtains information about the FIFO + * + * hFifo.............. Handle to the FIFO for which the information shall be retrieved + * lpulFifoFree....... Output-parameter - can be NULL. Returns the amount of free FIFO entries + * lpulFifoUsed....... Output-parameter - can be NULL. Returns the amount of occupied FIFO entries + * lpulFifoEntrySize.. Output-parameter - can be NULL. Returns the size of one FIFO entry in byte */ +EXIMPORT RTK_ERROR +RtkGetPlainFifoInfo(RTK_PLAIN_FIFO_H hFifo, LPULONG lpulFifoFree, LPULONG lpulFifoUsed, LPULONG lpulFifoEntrySize); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkRtc.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkRtc.h new file mode 100644 index 0000000..601e678 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkRtc.h @@ -0,0 +1,28 @@ + +/* Functions to set and read the real-time-clock */ + +#ifndef _RTK_RTC_H_ +#define _RTK_RTC_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Set the real-time-clock to 'newDateTime'. + * 'newDateTime' has to contain the localtime (not the UTC time). + */ +EXIMPORT RTK_ERROR RtkSetRealTimeClock(LPRTK_RTC newDateTime); + +/* + * Retrieves the current date and localtime. + */ +EXIMPORT void RtkGetRealTimeClock(LPRTK_RTC dateTime); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkSemaphore.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkSemaphore.h new file mode 100644 index 0000000..f82ac67 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkSemaphore.h @@ -0,0 +1,53 @@ + +/* RTK semaphore functions + * Semaphores can be used to control access to critical code setions or to synchronize tasks + */ + +#ifndef _RTK_SEMAPHORE_H_ +#define _RTK_SEMAPHORE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef RTK_H RTK_SEM_H; + +/* Creates a semaphore with the provided name (lpszSemaphoreName must be unique or NULL) + * ulInitCount defines the initial value of the semaphore (RtkAcquireSemaphore decreases this value until 0, + * RtkReleaseSemaphore increases this value until ulMaxCount). + * The output-parameter hSemaphore (must not be NULL) returns a handle to the semaphore */ +EXIMPORT RTK_ERROR +RtkCreateSemaphoreEx(LPSTRING lpszSemaphoreName, ULONG ulInitCount, ULONG ulMaxCount, RTK_SEM_H* hSemaphore); + +/* Creates a semaphore with the provided name (lpszSemaphoreName must be unique or NULL) + * The initial value of the semaphore is ulMaxCount (RtkAcquireSemaphore decreases this value until 0, + * RtkReleaseSemaphore increases this value until ulMaxCount). + * The output-parameter hSemaphore (must not be NULL) returns a handle to the semaphore */ +EXIMPORT RTK_ERROR +RtkCreateSemaphore(LPSTRING lpszSemaphoreName, ULONG ulMaxCount, RTK_SEM_H* hSemaphore); + +/* Deletes a sempahore*/ +EXIMPORT RTK_ERROR RtkDeleteSemaphore(RTK_SEM_H hSemaphore); + +/* Blocks until the semaphore has a value higher than 0 or until the timeout expires. When the semaphore has a value + * higher than 0, then this function decrements this value and returns */ +EXIMPORT RTK_ERROR RtkAcquireSemaphore(RTK_SEM_H hSemaphore, ULONG ulTimeoutUsec); + +/* Increment the value of the semaphore (only if the value was lower than the ulMaxCount defined when + * creating the semaphore) */ +EXIMPORT RTK_ERROR RtkReleaseSemaphore(RTK_SEM_H hSemaphore); + +/* Obtains information about the semaphore. + * lpulMaxCount ........... Output-parameter - can be NULL. Returns ulMaxCount defined when creating the semaphore + * lpulActCount ........... Output-parameter - can be NULL. Returns the current value of the semaphore + * lpulTaskWaitingCount ... Output-parameter - can be NULL. Returns the number of tasks waiting for this semaphore */ +EXIMPORT RTK_ERROR +RtkGetSemaphoreInfo(RTK_SEM_H hSemaphore, LPULONG lpulMaxCount, LPULONG lpulActCount, LPULONG lpulTaskWaitingCount); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkTask.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkTask.h new file mode 100644 index 0000000..980fded --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkTask.h @@ -0,0 +1,157 @@ + +/* RTK task functions */ + +#ifndef _RTK_TASK_H_ +#define _RTK_TASK_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef RTK_H RTK_TASK_H; +typedef RTK_H RTK_TASK_TIMER_H; + +#define RTK_TASKIDENT_ITSELF 0x00000000 +#define RTK_MAX_TASK_PRIORITY 255 +#define RTK_MIN_TASK_PRIORITY 1 +#define RTK_IDLE_TASK_PRIORITY 0x1000 +#define RTK_MAX_TASK_VALUES 16 + +/* Task flags (create/start) */ +typedef unsigned long RTK_TASKFLAG; +#define RTK_TASK_RESUMED 0x00000000 /* task starts immediately*/ +#define RTK_TASK_SUSPENDED 0x00000001 /* task does not start immediately (to be started with RtkTaskResume) */ +#define RTK_TASK_SYSTEM 0x00000000 /* ignored */ +#define RTK_TASK_DRIVER 0x00000002 /* ignored */ +#define RTK_TASK_APPLICATION 0x00000004 /* ignored */ + +/* Task event flags */ +typedef unsigned long RTK_EVENTFLAG; +#define RTK_EVENT_ANY 0x00000000 /* wait until any of the wanted events are set */ +#define RTK_EVENT_ALL 0x00000001 /* wait until all wanted events are set */ +#define RTK_EVENT_NO_DELETE 0x00000002 /* ignored */ + +/* Task state flags (taskInfo) */ +typedef unsigned long RTK_TASKSTATEFLAG; +#define RTK_TASKSTATE_READY 0x00000000 /* Task is not waiting for any resource other than the CPU. */ +#define RTK_TASKSTATE_SUSPENDED 0x00000001 /* Task is unavailable for execution. */ +#define RTK_TASKSTATE_PENDED 0x00000002 /* Task is blocked due to the unavailability of some resource. */ +#define RTK_TASKSTATE_DELAYED 0x00000004 /* Task is asleep for some duration. */ +/* RTK_TASKSTATE_DELAYED + RTK_TASKSTATE_SUSPENDED Task is both delayed and suspended */ +/* RTK_TASKSTATE_PENDED + RTK_TASKSTATE_SUSPENDED Task is both pended and suspended */ + +/* Creates a task running function taskFunction(taskFunctionParameter). + * The task has the name lpszTaskName (must be unique or NULL), the priority wTaskPriority (1.. lowest, 255.. highest), + * and the stack size ulTaskUserStackSize+ulTaskSupervisorStackSize in bytes. This combined stack size has to be + * greater or equal to 0x1000 and less than or equal to 0x100000, otherwise the error ERR_RTK_NO_STACK will be returned. + * The TaskFlags can be used to determine the initial task state (resumed/suspended). + * The function returns a handle to the created task (hTask) */ +EXIMPORT RTK_ERROR RtkCreateTask(LPSTRING lpszTaskName, WORD wTaskPriority, ULONG ulTaskSupervisorStackSize, + ULONG ulTaskUserStackSize, RTK_TASKFLAG TaskFlags, LPRTK_CREATE_TASK_FKT taskFunction, + void* taskFunctionParameter, RTK_TASK_H* hTask); + +/* Deletes the task. + * Stops execution and frees stack of the task. */ +EXIMPORT RTK_ERROR RtkDeleteTask(RTK_TASK_H hTask); + +/* Suspends the task. + * A suspended task stops its execution until it is resumed (RtkResumeTask) */ +EXIMPORT RTK_ERROR RtkSuspendTask(RTK_TASK_H hTask); + +/* Resumes the task. */ +EXIMPORT RTK_ERROR RtkResumeTask(RTK_TASK_H hTask); + +/* Delays the calling task for the specified time in µs. */ +EXIMPORT void RtkSleepTaskUsec(ULONG ulSleepUsec); + +/* Sends an event to a task (hTask). + * Each bit of wTaskEvent is one event of the task - sending multiple events is possible (logical OR of event-bits). + * Sending one event-bit multiple times (e.g. by calling this function twice) has no effect if the event was not yet + * read with RtkReceiveTaskEvent. */ +EXIMPORT RTK_ERROR RtkSendTaskEvent(RTK_TASK_H hTask, WORD wTaskEvents); + +/* Waits for one (EventFlags=RTK_EVENT_ANY) or all (EventFlag=RTK_EVENT_ALL) of the requested + * Events and returns these events. Resets all returned events of the task. + * + * hTask............. Handle of the task for which the events shall be returned + * wWantedEvents..... Bit-mask of the events which shall be returned + * EventFlags........ With EventFlags=RTK_EVENT_ANY this function returns if any of the events specified with + * wWantedEvents is received. With EventFlags=RTK_EVENT_ALL this function only returns if all of the + * events specified with wWantedEvents is received + * ulTimeoutUsec..... If the specified timeout is over before the events are received, the function returns with an + * error and lpwReceivedEvent is not valid. If some of the requested events were already received by + * the task, then these events are not reset. + * lpwReceivedEvent.. This output-parameter contains the received events after the function call. + * Parameter must not be NULL. */ +EXIMPORT RTK_ERROR RtkReceiveTaskEvent(RTK_TASK_H hTask, WORD wWantedEvents, RTK_EVENTFLAG EventFlags, + ULONG ulTimeoutUsec, LPWORD lpwReceivedEvents); + +/* Cyclically sends events to a task (hTask). The events will be sent every ulDelayUsec µs. + * Each bit of wTaskEvent is one event of the task - sending multiple events is possible (logical OR of event-bits) + * Sending one event-bit multiple times has no effect (e.g. if the timer expires and the event is re-sent before the + * event was read with RtkReceiveTaskEvent). + * Returns a timer handle (hTaskTimer - must not be NULL) which can be used to stop sending the events + * (RtkCancelTaskTimer) */ +EXIMPORT RTK_ERROR +RtkSendTaskEventCyclic(RTK_TASK_H hTask, WORD wTaskEvents, ULONG ulDelayUsec, RTK_TASK_TIMER_H* hTaskTimer); + +/* Sends events once to a task (hTask). The events will be sent after ulDelayUsec µs. + * Each bit of wTaskEvent is one event of the task - sending multiple events is possible (logical OR of event-bits). + * Sending one event-bit multiple times (e.g. by calling this function twice) has no effect if the event was not yet + * read with RtkReceiveTaskEvent. + * Returns a timer handle (hTaskTimer - must not be NULL) which can be used to stop sending the event + * (RtkCancelTaskTimer) */ +EXIMPORT RTK_ERROR +RtkSendTaskEventAfter(RTK_TASK_H hTask, WORD wTaskEvents, ULONG ulDelayUsec, RTK_TASK_TIMER_H* hTaskTimer); + +/* Cancels the provided timer (hTaskTimer). + * This results in canceling sending the events initiated with RtkSendtaskEventCyclic() or RtkSendTaskEventAfter() */ +EXIMPORT RTK_ERROR RtkCancelTaskTimer(RTK_TASK_TIMER_H hTaskTimer); + +/* Writes to one of the 16 available local variables of the task (hTask). + * byValueIndex (0-15) addresses the variables, ulValue is the values to be written */ +EXIMPORT RTK_ERROR RtkSetTaskValue(RTK_TASK_H hTask, BYTE byValueIndex, ULONG ulValue); + +/* Reads to one of the 16 available local variables of the task (hTask). + * byValueIndex (0-15) addresses the variables, lpulValue contains the value of the variable after the function call */ +EXIMPORT RTK_ERROR RtkGetTaskValue(RTK_TASK_H hTask, BYTE byValueIndex, LPULONG lpulValue); + +/* Sets the task priority to wTaskPriority (1.. lowest, 255.. highest) */ +EXIMPORT RTK_ERROR RtkSetTaskPriority(RTK_TASK_H hTask, WORD wTaskPriority); + +/* Retrieves the task priority. + * lpwTaskPriority contains the priority of the task after the function call */ +EXIMPORT RTK_ERROR RtkGetTaskPriority(RTK_TASK_H hTask, LPWORD lpwTaskPriority); + +/* Returns task information + * +* hTask................ Handle of the task for which the information shall be returned +* lpTaskStateFlags..... Output-parameter - can be NULL. Returns the task state (RTK_TASKSTATE_READY, +* RTK_TASKSTATE_SUSPENDED, RTK_TASKSTATE_PENDED, RTK_TASKSTATE_DELAYED) +* lpwTaskPriority....... Output-parameter - can be NULL. Returns the task priority +* lpulUnused1........... unused - can be NULL +* lpulUnused2........... unused - can be NULL +* lpulFreeStack......... Output-parameter - can be NULL. Returns the free stack size +* lpulInternalTaskIdent. Output-parameter - can be NULL. Returns an OS-specific task ident */ +EXIMPORT RTK_ERROR RtkGetTaskInfo(RTK_TASK_H hTask, RTK_TASKSTATEFLAG* lpTaskStateFlags, LPWORD lpwTaskPriority, + LPULONG lpulUnused1, LPULONG lpulUnused2, LPULONG lpulFreeStack, + LPULONG lpulInternalTaskIdent); + +/* Get the handle for the currently running task */ +EXIMPORT RTK_TASK_H RtkGetCurrentTaskIdent(); + +/* Returns TRUE if the task is ready. + * Returns FALSE if the task is not ready or if 'hTask' is invalid. */ +EXIMPORT BOOLEAN RtkIsTaskReady(RTK_TASK_H hTask); + +/* Returns TRUE if the task is suspended. + * Returns FALSE if the task is not suspended or if 'hTask' is invalid. */ +EXIMPORT BOOLEAN RtkIsTaskSuspended(RTK_TASK_H hTask); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkTimer.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkTimer.h new file mode 100644 index 0000000..a60c69a --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkTimer.h @@ -0,0 +1,43 @@ + +/* RTK timer functions + * Timers can be used for cyclic actions and for single timeouts + */ + +#ifndef _RTK_TIMER_H_ +#define _RTK_TIMER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef RTK_H RTK_TIMER_H; + +/* Flags for RtkStartTimer */ +typedef unsigned long RTK_TIMERFLAG; +#define RTK_TIMER_CYCLIC 0x00000000 +#define RTK_TIMER_ONESHOT 0x00000001 + +/* Create a timer object with the provided name (lpszTimerName must be unique or NULL). + * When the timer expires (to be started with RtkStartTimer), then timerFunction(timerContext) is called with task + * priority wTimerPriorityand with stack size ulTimerSupervidorStackSize + * The output-parameter hTimer (must not be NULL) returns a handle to the timer */ +EXIMPORT RTK_ERROR RtkCreateTimer(LPSTRING lpszTimerName, WORD wTimerPriority, ULONG ulTimerSupervisorStackSize, + LPRTK_CREATE_TASK_FKT timerFunction, void* timerContext, RTK_TIMER_H* hTimer); + +/* Deletes a timer object */ +EXIMPORT RTK_ERROR RtkDeleteTimer(RTK_TIMER_H hTimer); + +/* Starts a cyclical timer (TimerFlage=RTK_TIMER_CYCLIC) with the provided cycle time (ulTimerCycleUsec) + * or a single-shot timer (TimerFlags=RTK_TIMER_ONESHOT) with the provided delay (ulTimerCycleUsec) */ +EXIMPORT RTK_ERROR RtkStartTimer(RTK_TIMER_H hTimer, ULONG ulTimerCycleUsec, RTK_TIMERFLAG TimerFlags); + +/* Stops a timer started with RtkStartTimer */ +EXIMPORT RTK_ERROR RtkStopTimer(RTK_TIMER_H hTimer); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkTypes.h b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkTypes.h new file mode 100644 index 0000000..5901cea --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/rtk_lib/rtkTypes.h @@ -0,0 +1,58 @@ +/* contains legacy type definitions. These types should only be used + * for calling functions which require these types. */ + +#ifndef _RTK_TYPES_H_ +#define _RTK_TYPES_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +#ifndef _ULONG_DEFINED_ /* ULONG might also be defined by vxTypesOld.h */ +#define _ULONG_DEFINED_ +typedef uint32_t ULONG; +#endif + +#ifndef _BYTE_DEFINED_ /* BYTE might already be defined from plctypes.h */ +#define _BYTE_DEFINED_ +typedef uint8_t BYTE; +#endif + +#ifndef _WORD_DEFINED_ /* WORD might already be defined from plctypes.h */ +#define _WORD_DEFINED_ +typedef uint16_t WORD; +#endif + +#ifndef TRUE +#define TRUE 1 +#define FALSE 0 +#endif + +typedef unsigned char BOOLEAN; +typedef char* LPSTRING; +typedef void* LPVOID; +typedef BYTE* LPBYTE; +typedef WORD* LPWORD; +typedef ULONG* LPULONG; + +typedef struct +{ + WORD Year; /* 0 up (for example 1999) */ + BYTE Month; /* 1-12 */ + BYTE Day; /* 1-31 */ + BYTE DayOfWeek; /* 1=monday, ..., 7=sunday */ + BYTE Hour; /* 0-23 */ + BYTE Minute; /* 0-59 */ + BYTE Second; /* 0-59 */ + WORD Millisecond; /* 0-999 */ + WORD Microsecond; /* 0-999 */ +} RTK_RTC, *LPRTK_RTC; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/As6Project/Logical/Libraries/Loupe/tlsf/ANSIC.lby b/example/As6Project/Logical/Libraries/Loupe/tlsf/ANSIC.lby deleted file mode 100644 index fecc33a..0000000 --- a/example/As6Project/Logical/Libraries/Loupe/tlsf/ANSIC.lby +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/example/As6Project/Logical/Libraries/Loupe/tlsf/Binary.lby b/example/As6Project/Logical/Libraries/Loupe/tlsf/Binary.lby new file mode 100644 index 0000000..501a84f --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/tlsf/Binary.lby @@ -0,0 +1,8 @@ + + + + + heap_redirect.c + tlsf.h + + \ No newline at end of file diff --git a/example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/ARM/libtlsf_s.a b/example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/ARM/libtlsf_s.a new file mode 100644 index 0000000000000000000000000000000000000000..03bd47ca674147c95c1cb0485016799ee9db104c GIT binary patch literal 8772 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 QyZ3$w`4gTHmWc0v0p|QvT>t<8 literal 0 HcmV?d00001 diff --git a/example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/Arm/tlsf-impl.c.o b/example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/Arm/tlsf-impl.c.o deleted file mode 100644 index 1e22aabfe42dcd8b9a11e4d7864d2182ade55d93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38708 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 diff --git a/example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/libtlsf_s.a b/example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/libtlsf_s.a new file mode 100644 index 0000000000000000000000000000000000000000..4ef3661c54fe11bf19bcadf7815381b51f2bc22d GIT binary patch literal 9690 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 literal 0 HcmV?d00001 diff --git a/example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/tlsf-impl.c.o b/example/As6Project/Logical/Libraries/Loupe/tlsf/SG4/tlsf-impl.c.o deleted file mode 100644 index 928627868e43663c0dd2ce4e6c89fa6e7b8cffb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36924 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 Xb<`hal4<8R`#$_77R3a8s`&o^LVn0S diff --git a/example/As6Project/Logical/Libraries/Loupe/tlsf/heap_redirect.c b/example/As6Project/Logical/Libraries/Loupe/tlsf/heap_redirect.c new file mode 100644 index 0000000..853f147 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/tlsf/heap_redirect.c @@ -0,0 +1,22 @@ +#include +#include "tlsf.h" + +//Redirect memory allocation calls: +struct _reent; +#define REENT struct _reent * _r __attribute__((__unused__)) + +void * malloc(size_t size) { return tlsf_malloc(size); } +void free(void* ptr) { tlsf_free(ptr); } +void * realloc(void* ptr, size_t size) { return tlsf_realloc(ptr, size); } +void * calloc(size_t items, size_t size) { return tlsf_calloc(items, size); } + +#ifndef __CYGWIN__ +void * _malloc_r(REENT, size_t size) { return tlsf_malloc(size); } +void _free_r(REENT, void* ptr) { tlsf_free(ptr); } +void * _realloc_r(REENT, void* ptr, size_t size) { return tlsf_realloc(ptr, size); } +void * _calloc_r(REENT, size_t items, size_t size) { return tlsf_calloc(items, size); } +#endif + +int const _force_tlfs_malloc = (int) malloc; + +__attribute__((weak,visibility("hidden"))) size_t bur_heap_size = 0; /* variable 'bur_heap_size' as dummy */ diff --git a/example/As6Project/Logical/Libraries/Loupe/tlsf/package.json b/example/As6Project/Logical/Libraries/Loupe/tlsf/package.json deleted file mode 100644 index 1c7f99b..0000000 --- a/example/As6Project/Logical/Libraries/Loupe/tlsf/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "@loupeteam/tlsf", - "version": "1.0.2", - "description": "Loupe's tlsf library for Automation Runtime", - "homepage": "https://loupeteam.github.io/Sandbox/libraries/tlsf.html", - "scripts": {}, - "keywords": [], - "author": "Loupe", - "license": "Loupe Software License Agreement", - "repository": { - "type": "git", - "url": "https://github.com/loupeteam/tlsf" - }, - "lpm": { - "type": "library", - "physical": { - "cpu": { - "attributes": { - "Memory": "None" - } - } - } - }, - "dependencies": {} -} \ No newline at end of file diff --git a/example/As6Project/Logical/Libraries/Loupe/tlsf/tlsf.h b/example/As6Project/Logical/Libraries/Loupe/tlsf/tlsf.h new file mode 100644 index 0000000..4cb81f0 --- /dev/null +++ b/example/As6Project/Logical/Libraries/Loupe/tlsf/tlsf.h @@ -0,0 +1,105 @@ +/** @file + ******************************************************************************* + ** + ** @brief + ** Two Levels Segregate Fit memory allocator (TLSF) + ** Written by Miguel Masmano Tello + ** + ** This code is released using a dual license strategy: GPL/LGPL + ** + ******************************************************************************* + ** $Header: https://brateggevsvn1.br-automation.co.at/svn/motion_gmc/trunk/GMC/Core/sys/tlsf.h 2314 2013-11-26 09:33:41Z eisenmannm $ + ******************************************************************************* + ** + ** @remark + ** This file is part of the common AR C++ System environment. + ** + ** @copyright + ** + ** Bernecker + Rainer Industrie-Elektronik Ges.m.b.H. + ** + ** @date 2012-06-21 File has been adopted by Markus Eisenmann + ** + ******************************************************************************/ + +#ifndef _ARSYS_TLSF_H_INCLUDED_ +#define _ARSYS_TLSF_H_INCLUDED_ + +#ifndef _SIZE_T_DEFINED +#include +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +/** @cond COMPILER_SPECIFICS */ +#ifndef DECLSPEC_NOTHROW +#if defined(__GNUC__) && ((__GNUC__ > 3) || \ + ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3))) +#define DECLSPEC_NOTHROW __attribute__((__nothrow__)) +#elif (_MSC_VER >= 1200) && defined(__cplusplus) +#define DECLSPEC_NOTHROW __declspec(nothrow) +#else +#define DECLSPEC_NOTHROW +#endif +#endif + +#if defined(__ELF__) && (__GNUC__ >= 4) +#pragma GCC visibility push(hidden) +#define BURTLSF_DLLAPI __attribute__((visibility("default"), __nothrow__)) +#else +#if defined(_WIN32) || defined(__WINDOWS__) || defined(__MINGW32__) || defined(__CYGWIN__) +#if defined(_ARSVCREG_EXPORT) || defined(BURTLSF_EXPORTS) +#define BURTLSF_DLLAPI __declspec(dllexport) DECLSPEC_NOTHROW +#else +#define BURTLSF_DLLAPI __declspec(dllimport) DECLSPEC_NOTHROW +#endif +#else /* not Windows */ +#define BURTLSF_DLLAPI extern DECLSPEC_NOTHROW +#endif /* end Windows */ +#endif + /** @endcond */ + + DECLSPEC_NOTHROW size_t _tlsf_init_memory_pool(size_t mem_pool_size, void *mem_pool); + DECLSPEC_NOTHROW size_t _tlsf_add_new_area(void *area, size_t area_size, void *mem_pool); +#if !defined(NDEBUG) && (defined(DEBUG) || defined(_DEBUG)) + DECLSPEC_NOTHROW size_t _tlsf_get_used_size(void *mem_pool); + DECLSPEC_NOTHROW size_t _tlsf_get_max_size(void *mem_pool); +#endif + DECLSPEC_NOTHROW void _tlsf_destroy_memory_pool(void *mem_pool); + DECLSPEC_NOTHROW void *_tlsf_malloc_ex(size_t size, void *mem_pool); + DECLSPEC_NOTHROW void *_tlsf_free_ex(void *ptr, void *mem_pool); + DECLSPEC_NOTHROW void *_tlsf_realloc_ex(void *ptr, size_t new_size, void *mem_pool); + DECLSPEC_NOTHROW void *_tlsf_calloc_ex(size_t nelem, size_t elem_size, void *mem_pool); + +#if defined(__ELF__) && (__GNUC__ >= 4) +#pragma GCC visibility pop +#endif + + /*lint -esym(526, tlsf_*) prevent warning about undefined functions*/ + /*exos BURTLSF_DLLAPI*/ void *tlsf_malloc(size_t size); + /*exos BURTLSF_DLLAPI*/ void tlsf_free(void *ptr); + /*exos BURTLSF_DLLAPI*/ void *tlsf_realloc(void *ptr, size_t size); + /*exos BURTLSF_DLLAPI*/ void *tlsf_calloc(size_t nelem, size_t elem_size); + + /** @cond HIDDEN_INTERNALS */ + extern int const _force_tlfs_malloc; /*link symbol to force use of TLSF*/ + +#if defined(_ENFORCE_TLFS_REDIRECT) && !(defined(_CODECHECK_PASS) || defined(_CODEPARSE_PASS) || defined(__CDT_PARSER__) || defined(_lint) || defined(__DOXYGEN) || defined(_doxygen)) +#if (__GNUC__ >= 3) && !defined(WIN32) + __extension__ void *malloc(size_t) __asm__("tlsf_malloc"); + __extension__ void free(void *) __asm__("tlsf_free"); + __extension__ void *realloc(void *, size_t) __asm__("tlsf_realloc"); + __extension__ void *calloc(size_t, size_t) __asm__("tlsf_calloc"); +#else +#error "Forcing TSLF-redirection of DSA not supported!" +#endif +#endif + /** @endcond */ + +#ifdef __cplusplus +} // extern "C" +#endif +#endif /*_ARSYS_TLSF_H_INCLUDED_*/ diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrStr/binary.lby b/example/As6Project/Logical/Libraries/_AS/AsBrStr/binary.lby index 1da1d38..2090ed1 100644 --- a/example/As6Project/Logical/Libraries/_AS/AsBrStr/binary.lby +++ b/example/As6Project/Logical/Libraries/_AS/AsBrStr/binary.lby @@ -1,9 +1,9 @@ - - - + + + AsBrStr.fun AsBrStr.typ AsBrStr.var - \ No newline at end of file + diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG4/AsBrWStr.h b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG4/AsBrWStr.h index 590a6cf..c05a10d 100644 --- a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG4/AsBrWStr.h +++ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG4/AsBrWStr.h @@ -13,21 +13,6 @@ extern "C" #ifndef _BUR_PUBLIC #define _BUR_PUBLIC #endif -/* Constants */ -#ifdef _REPLACE_CONST - #define brwU8toUC 0U - #define brwUCtoU8 1U -#else - #ifndef _GLOBAL_CONST - #define _GLOBAL_CONST _WEAK const - #endif - _GLOBAL_CONST unsigned char brwU8toUC; - _GLOBAL_CONST unsigned char brwUCtoU8; -#endif - - - - @@ -45,6 +30,18 @@ _BUR_PUBLIC unsigned long brwcsrchr(unsigned short* pDestination, unsigned short _BUR_PUBLIC unsigned long brwcschr(unsigned short* pDestination, unsigned short symbol); +/* Constants */ +#ifdef _REPLACE_CONST + #define brwU8toUC 0U + #define brwUCtoU8 1U +#else + _GLOBAL_CONST unsigned char brwU8toUC; + _GLOBAL_CONST unsigned char brwUCtoU8; +#endif + + + + #ifdef __cplusplus }; #endif diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/binary.lby b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/binary.lby index 2e2754a..de98f4d 100644 --- a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/binary.lby +++ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/binary.lby @@ -1,9 +1,9 @@ - - - + + + AsBrWStr.fun AsBrWStr.typ AsBrWStr.var - \ No newline at end of file + diff --git a/example/As6Project/Logical/Libraries/_AS/astime/SG4/astime.h b/example/As6Project/Logical/Libraries/_AS/astime/SG4/astime.h index d99f9bc..ffa4415 100644 --- a/example/As6Project/Logical/Libraries/_AS/astime/SG4/astime.h +++ b/example/As6Project/Logical/Libraries/_AS/astime/SG4/astime.h @@ -15,47 +15,6 @@ extern "C" #ifndef _BUR_PUBLIC #define _BUR_PUBLIC #endif -/* Constants */ -#ifdef _REPLACE_CONST - #define timERR_AR 33213U - #define timERR_INVALID_DTSTRUCTURE 33212U - #define timERR_INVALID_LEN 33211U - #define timERR_INVALID_PARAMETER 33210U - #define timREDUND_INTERFACE 3U - #define timTIME_SERVER 2U - #define timREAL_TIME_CLOCK 1U - #define timNO_DST 3U - #define timDAYLIGHT_SAVING_TIME 2U - #define timNORMAL_TIME 1U - #define TIME_MAX 2073600000 - #define TIME_MIN (-2073600000) - #define DATE_AND_TIME_MAX 4102444799U - #define timEXSETTIME_NO_OPTION 0U - #define timEXSETTIME_NO_LOGENTRY 1U -#else - #ifndef _GLOBAL_CONST - #define _GLOBAL_CONST _WEAK const - #endif - _GLOBAL_CONST unsigned short timERR_AR; - _GLOBAL_CONST unsigned short timERR_INVALID_DTSTRUCTURE; - _GLOBAL_CONST unsigned short timERR_INVALID_LEN; - _GLOBAL_CONST unsigned short timERR_INVALID_PARAMETER; - _GLOBAL_CONST unsigned char timREDUND_INTERFACE; - _GLOBAL_CONST unsigned char timTIME_SERVER; - _GLOBAL_CONST unsigned char timREAL_TIME_CLOCK; - _GLOBAL_CONST unsigned char timNO_DST; - _GLOBAL_CONST unsigned char timDAYLIGHT_SAVING_TIME; - _GLOBAL_CONST unsigned char timNORMAL_TIME; - _GLOBAL_CONST signed long TIME_MAX; - _GLOBAL_CONST signed long TIME_MIN; - _GLOBAL_CONST unsigned long DATE_AND_TIME_MAX; - _GLOBAL_CONST unsigned char timEXSETTIME_NO_OPTION; - _GLOBAL_CONST unsigned char timEXSETTIME_NO_LOGENTRY; -#endif - - - - /* Datatypes and datatypes of function blocks */ typedef struct TIMEStructure { signed char day; @@ -358,6 +317,44 @@ _BUR_PUBLIC unsigned long DiffT(plctime TIME2, plctime TIME1); _BUR_PUBLIC unsigned long DiffDT(plcdt DT2, plcdt DT1); +/* Constants */ +#ifdef _REPLACE_CONST + #define timERR_AR 33213U + #define timERR_INVALID_DTSTRUCTURE 33212U + #define timERR_INVALID_LEN 33211U + #define timERR_INVALID_PARAMETER 33210U + #define timREDUND_INTERFACE 3U + #define timTIME_SERVER 2U + #define timREAL_TIME_CLOCK 1U + #define timNO_DST 3U + #define timDAYLIGHT_SAVING_TIME 2U + #define timNORMAL_TIME 1U + #define TIME_MAX 2073600000 + #define TIME_MIN (-2073600000) + #define DATE_AND_TIME_MAX 4102444799U + #define timEXSETTIME_NO_OPTION 0U + #define timEXSETTIME_NO_LOGENTRY 1U +#else + _GLOBAL_CONST unsigned short timERR_AR; + _GLOBAL_CONST unsigned short timERR_INVALID_DTSTRUCTURE; + _GLOBAL_CONST unsigned short timERR_INVALID_LEN; + _GLOBAL_CONST unsigned short timERR_INVALID_PARAMETER; + _GLOBAL_CONST unsigned char timREDUND_INTERFACE; + _GLOBAL_CONST unsigned char timTIME_SERVER; + _GLOBAL_CONST unsigned char timREAL_TIME_CLOCK; + _GLOBAL_CONST unsigned char timNO_DST; + _GLOBAL_CONST unsigned char timDAYLIGHT_SAVING_TIME; + _GLOBAL_CONST unsigned char timNORMAL_TIME; + _GLOBAL_CONST signed long TIME_MAX; + _GLOBAL_CONST signed long TIME_MIN; + _GLOBAL_CONST unsigned long DATE_AND_TIME_MAX; + _GLOBAL_CONST unsigned char timEXSETTIME_NO_OPTION; + _GLOBAL_CONST unsigned char timEXSETTIME_NO_LOGENTRY; +#endif + + + + #ifdef __cplusplus }; #endif diff --git a/example/As6Project/Logical/Libraries/_AS/astime/binary.lby b/example/As6Project/Logical/Libraries/_AS/astime/binary.lby index d4b0b7f..4ce250f 100644 --- a/example/As6Project/Logical/Libraries/_AS/astime/binary.lby +++ b/example/As6Project/Logical/Libraries/_AS/astime/binary.lby @@ -1,6 +1,6 @@ - - - + + + astime.fun astime.typ @@ -9,4 +9,4 @@ - \ No newline at end of file + diff --git a/example/As6Project/Logical/Libraries/_AS/runtime/SG4/runtime.h b/example/As6Project/Logical/Libraries/_AS/runtime/SG4/runtime.h index e844c89..fa683ca 100644 --- a/example/As6Project/Logical/Libraries/_AS/runtime/SG4/runtime.h +++ b/example/As6Project/Logical/Libraries/_AS/runtime/SG4/runtime.h @@ -13,71 +13,6 @@ extern "C" #ifndef _BUR_PUBLIC #define _BUR_PUBLIC #endif -/* Constants */ -#ifdef _REPLACE_CONST - #define IEC_DATATYPE_LINT 23U - #define IEC_DATATYPE_WSTRING 21U - #define IEC_DATATYPE_LWORD 20U - #define IEC_DATATYPE_DWORD 19U - #define IEC_DATATYPE_WORD 18U - #define IEC_DATATYPE_BYTE 17U - #define IEC_DATATYPE_TIME_OF_DAY 16U - #define IEC_DATATYPE_LREAL 14U - #define IEC_DATATYPE_DATE 13U - #define IEC_DATATYPE_TIME 12U - #define IEC_DATATYPE_DATE_AND_TIME 11U - #define IEC_DATATYPE_ULINT 10U - #define IEC_DATATYPE_STRING 9U - #define IEC_DATATYPE_REAL 8U - #define IEC_DATATYPE_UDINT 7U - #define IEC_DATATYPE_UINT 6U - #define IEC_DATATYPE_USINT 5U - #define IEC_DATATYPE_DINT 4U - #define IEC_DATATYPE_INT 3U - #define IEC_DATATYPE_SINT 2U - #define IEC_DATATYPE_BOOL 1U - #define ERR_FB_NOT_IMPLEMENTED (-1070585592) - #define ERR_FUB_REDUNDANT 35688U - #define ERR_FUB_BUSY 65535U - #define ERR_FUB_ENABLE_FALSE 65534U - #define ERR_NOTIMPLEMENTED 9999U - #define ERR_OK 0U -#else - #ifndef _GLOBAL_CONST - #define _GLOBAL_CONST _WEAK const - #endif - _GLOBAL_CONST unsigned short IEC_DATATYPE_LINT; - _GLOBAL_CONST unsigned short IEC_DATATYPE_WSTRING; - _GLOBAL_CONST unsigned short IEC_DATATYPE_LWORD; - _GLOBAL_CONST unsigned short IEC_DATATYPE_DWORD; - _GLOBAL_CONST unsigned short IEC_DATATYPE_WORD; - _GLOBAL_CONST unsigned short IEC_DATATYPE_BYTE; - _GLOBAL_CONST unsigned short IEC_DATATYPE_TIME_OF_DAY; - _GLOBAL_CONST unsigned short IEC_DATATYPE_LREAL; - _GLOBAL_CONST unsigned short IEC_DATATYPE_DATE; - _GLOBAL_CONST unsigned short IEC_DATATYPE_TIME; - _GLOBAL_CONST unsigned short IEC_DATATYPE_DATE_AND_TIME; - _GLOBAL_CONST unsigned short IEC_DATATYPE_ULINT; - _GLOBAL_CONST unsigned short IEC_DATATYPE_STRING; - _GLOBAL_CONST unsigned short IEC_DATATYPE_REAL; - _GLOBAL_CONST unsigned short IEC_DATATYPE_UDINT; - _GLOBAL_CONST unsigned short IEC_DATATYPE_UINT; - _GLOBAL_CONST unsigned short IEC_DATATYPE_USINT; - _GLOBAL_CONST unsigned short IEC_DATATYPE_DINT; - _GLOBAL_CONST unsigned short IEC_DATATYPE_INT; - _GLOBAL_CONST unsigned short IEC_DATATYPE_SINT; - _GLOBAL_CONST unsigned short IEC_DATATYPE_BOOL; - _GLOBAL_CONST signed long ERR_FB_NOT_IMPLEMENTED; - _GLOBAL_CONST unsigned short ERR_FUB_REDUNDANT; - _GLOBAL_CONST unsigned short ERR_FUB_BUSY; - _GLOBAL_CONST unsigned short ERR_FUB_ENABLE_FALSE; - _GLOBAL_CONST unsigned short ERR_NOTIMPLEMENTED; - _GLOBAL_CONST unsigned short ERR_OK; -#endif - - - - /* Datatypes and datatypes of function blocks */ typedef struct SFCActionControl { @@ -482,6 +417,68 @@ _BUR_PUBLIC double RealCos(double x); _BUR_PUBLIC double RealSqrt(double x); +/* Constants */ +#ifdef _REPLACE_CONST + #define IEC_DATATYPE_LINT 23U + #define IEC_DATATYPE_WSTRING 21U + #define IEC_DATATYPE_LWORD 20U + #define IEC_DATATYPE_DWORD 19U + #define IEC_DATATYPE_WORD 18U + #define IEC_DATATYPE_BYTE 17U + #define IEC_DATATYPE_TIME_OF_DAY 16U + #define IEC_DATATYPE_LREAL 14U + #define IEC_DATATYPE_DATE 13U + #define IEC_DATATYPE_TIME 12U + #define IEC_DATATYPE_DATE_AND_TIME 11U + #define IEC_DATATYPE_ULINT 10U + #define IEC_DATATYPE_STRING 9U + #define IEC_DATATYPE_REAL 8U + #define IEC_DATATYPE_UDINT 7U + #define IEC_DATATYPE_UINT 6U + #define IEC_DATATYPE_USINT 5U + #define IEC_DATATYPE_DINT 4U + #define IEC_DATATYPE_INT 3U + #define IEC_DATATYPE_SINT 2U + #define IEC_DATATYPE_BOOL 1U + #define ERR_FB_NOT_IMPLEMENTED (-1070585592) + #define ERR_FUB_REDUNDANT 35688U + #define ERR_FUB_BUSY 65535U + #define ERR_FUB_ENABLE_FALSE 65534U + #define ERR_NOTIMPLEMENTED 9999U + #define ERR_OK 0U +#else + _GLOBAL_CONST unsigned short IEC_DATATYPE_LINT; + _GLOBAL_CONST unsigned short IEC_DATATYPE_WSTRING; + _GLOBAL_CONST unsigned short IEC_DATATYPE_LWORD; + _GLOBAL_CONST unsigned short IEC_DATATYPE_DWORD; + _GLOBAL_CONST unsigned short IEC_DATATYPE_WORD; + _GLOBAL_CONST unsigned short IEC_DATATYPE_BYTE; + _GLOBAL_CONST unsigned short IEC_DATATYPE_TIME_OF_DAY; + _GLOBAL_CONST unsigned short IEC_DATATYPE_LREAL; + _GLOBAL_CONST unsigned short IEC_DATATYPE_DATE; + _GLOBAL_CONST unsigned short IEC_DATATYPE_TIME; + _GLOBAL_CONST unsigned short IEC_DATATYPE_DATE_AND_TIME; + _GLOBAL_CONST unsigned short IEC_DATATYPE_ULINT; + _GLOBAL_CONST unsigned short IEC_DATATYPE_STRING; + _GLOBAL_CONST unsigned short IEC_DATATYPE_REAL; + _GLOBAL_CONST unsigned short IEC_DATATYPE_UDINT; + _GLOBAL_CONST unsigned short IEC_DATATYPE_UINT; + _GLOBAL_CONST unsigned short IEC_DATATYPE_USINT; + _GLOBAL_CONST unsigned short IEC_DATATYPE_DINT; + _GLOBAL_CONST unsigned short IEC_DATATYPE_INT; + _GLOBAL_CONST unsigned short IEC_DATATYPE_SINT; + _GLOBAL_CONST unsigned short IEC_DATATYPE_BOOL; + _GLOBAL_CONST signed long ERR_FB_NOT_IMPLEMENTED; + _GLOBAL_CONST unsigned short ERR_FUB_REDUNDANT; + _GLOBAL_CONST unsigned short ERR_FUB_BUSY; + _GLOBAL_CONST unsigned short ERR_FUB_ENABLE_FALSE; + _GLOBAL_CONST unsigned short ERR_NOTIMPLEMENTED; + _GLOBAL_CONST unsigned short ERR_OK; +#endif + + + + #ifdef __cplusplus }; #endif diff --git a/example/As6Project/Logical/Libraries/_AS/runtime/binary.lby b/example/As6Project/Logical/Libraries/_AS/runtime/binary.lby index 2800d28..92ad626 100644 --- a/example/As6Project/Logical/Libraries/_AS/runtime/binary.lby +++ b/example/As6Project/Logical/Libraries/_AS/runtime/binary.lby @@ -1,9 +1,9 @@ - - - + + + runtime.fun runtime.typ runtime.var - \ No newline at end of file + diff --git a/example/As6Project/Physical/ARM/Hardware.hw b/example/As6Project/Physical/ARM/Hardware.hw index 8fb7390..3892886 100644 --- a/example/As6Project/Physical/ARM/Hardware.hw +++ b/example/As6Project/Physical/ARM/Hardware.hw @@ -1,9 +1,13 @@  - + - - + + + + + + @@ -21,8 +25,14 @@ + + + + + + - + diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/BRRole.brrole b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/BRRole.brrole new file mode 100644 index 0000000..6795c17 --- /dev/null +++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/BRRole.brrole @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Package.pkg index 92d5082..9dd97ab 100644 --- a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Package.pkg +++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Package.pkg @@ -4,5 +4,6 @@ Role.role User.user + BRRole.brrole \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/Connectivity/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/Connectivity/Package.pkg index fec6e02..bfea000 100644 --- a/example/As6Project/Physical/ARM/X20CP0410/Connectivity/Package.pkg +++ b/example/As6Project/Physical/ARM/X20CP0410/Connectivity/Package.pkg @@ -1,7 +1,5 @@  - - OpcUA - + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/Cpu.pkg b/example/As6Project/Physical/ARM/X20CP0410/Cpu.pkg index 4c20ee7..0b26561 100644 --- a/example/As6Project/Physical/ARM/X20CP0410/Cpu.pkg +++ b/example/As6Project/Physical/ARM/X20CP0410/Cpu.pkg @@ -19,10 +19,10 @@ mappCockpit - - + + - + \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/Cpu.sw b/example/As6Project/Physical/ARM/X20CP0410/Cpu.sw index 1a90051..d89d74f 100644 --- a/example/As6Project/Physical/ARM/X20CP0410/Cpu.sw +++ b/example/As6Project/Physical/ARM/X20CP0410/Cpu.sw @@ -23,9 +23,14 @@ + - - + + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/BRRole.brrole b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/BRRole.brrole new file mode 100644 index 0000000..6795c17 --- /dev/null +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/BRRole.brrole @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Package.pkg index 995e73b..9dd97ab 100644 --- a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Package.pkg +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Package.pkg @@ -1,8 +1,9 @@  - + Role.role User.user + BRRole.brrole \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/OpcUA/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/OpcUA/Package.pkg deleted file mode 100644 index 86b9f38..0000000 --- a/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/OpcUA/Package.pkg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/example/As6Project/Physical/ARM/X20CP0410/Connectivity/OpcUA/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/OpcUaCs/Package.pkg similarity index 52% rename from example/As6Project/Physical/ARM/X20CP0410/Connectivity/OpcUA/Package.pkg rename to example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/OpcUaCs/Package.pkg index 2f38cef..c43b450 100644 --- a/example/As6Project/Physical/ARM/X20CP0410/Connectivity/OpcUA/Package.pkg +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/OpcUaCs/Package.pkg @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/Package.pkg index 0fba9be..666b638 100644 --- a/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/Package.pkg +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/Package.pkg @@ -1,7 +1,7 @@  - + - OpcUA + OpcUaCs \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg index bb60475..0bcfcc5 100644 --- a/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg @@ -18,8 +18,8 @@ mappCockpit - - + + diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.sw b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.sw index adbae55..ca84a73 100644 --- a/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.sw +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.sw @@ -18,8 +18,6 @@ - - @@ -28,14 +26,17 @@ + + + - - - + + + \ No newline at end of file diff --git a/example/As6Project/Physical/Intel/Hardware.hw b/example/As6Project/Physical/Intel/Hardware.hw index 9033c09..5f09ec6 100644 --- a/example/As6Project/Physical/Intel/Hardware.hw +++ b/example/As6Project/Physical/Intel/Hardware.hw @@ -1,7 +1,7 @@  - + - + @@ -36,8 +36,11 @@ + + + - + From 38b596f1a41b1eebfcc501477b60f0693966a9e4 Mon Sep 17 00:00:00 2001 From: Josh Polansky Date: Fri, 30 Aug 2024 13:54:24 -0700 Subject: [PATCH 5/7] remove unsupported time functions for ARM --- src/Ar/StringExt/time.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Ar/StringExt/time.cpp b/src/Ar/StringExt/time.cpp index 0b59533..2da4973 100644 --- a/src/Ar/StringExt/time.cpp +++ b/src/Ar/StringExt/time.cpp @@ -19,20 +19,29 @@ #include "string.h" +//TODO: These time functions don't seem to be supported in AS6 +// 1. Figure out if we can use them +// 2. Check if AS4 somehow, since they seem to at least build there +#ifndef __arm__ #define __XSI_VISIBLE 1 +#endif #include "time.h" unsigned long stringfTime(unsigned long dest, unsigned long destSize, unsigned long format, DATE_AND_TIME time) { if(!dest || !destSize || !format) return 0; // Return if null pointers or if destSize is 0 tm t = {}; +#ifndef __arm__ gmtime_r((time_t*)&time, &t); +#endif return strftime((char*)dest, destSize, (char*)format, &t); } DATE_AND_TIME stringpTime(unsigned long src, unsigned long format) { if(!src || !format) return 0; // Return if null pointers tm t = {}; +#ifndef __arm__ strptime((char*)src, (char*)format, &t); +#endif return mktime(&t); } From 3259f96b630cc4adfc97f043a2245e2505f9ba23 Mon Sep 17 00:00:00 2001 From: agrayzel Date: Fri, 19 Dec 2025 14:09:39 -0800 Subject: [PATCH 6/7] Change versions --- example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg | 2 +- example/As6Project/Physical/Intel/Hardware.hw | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg index 0bcfcc5..31a52f2 100644 --- a/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg +++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg @@ -18,7 +18,7 @@ mappCockpit - + diff --git a/example/As6Project/Physical/Intel/Hardware.hw b/example/As6Project/Physical/Intel/Hardware.hw index 5f09ec6..f6f4d37 100644 --- a/example/As6Project/Physical/Intel/Hardware.hw +++ b/example/As6Project/Physical/Intel/Hardware.hw @@ -1,13 +1,13 @@  - + - + - + From d40712d37f8c69be6f135995344b274e431cdf63 Mon Sep 17 00:00:00 2001 From: agrayzel Date: Fri, 19 Dec 2025 14:09:48 -0800 Subject: [PATCH 7/7] Update some includes --- src/Ar/StringExt/internal.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Ar/StringExt/internal.c b/src/Ar/StringExt/internal.c index 136db29..ae7bd89 100644 --- a/src/Ar/StringExt/internal.c +++ b/src/Ar/StringExt/internal.c @@ -5,7 +5,7 @@ extern "C" { #endif -#include "includes/rtkBase.h" +#include #ifdef __cplusplus }; @@ -15,7 +15,7 @@ extern "C" //#define USE_SEMAPHORE #ifdef USE_SEMAPHORE -#include "includes/rtkSemaphore.h" +#include static __thread RTK_SEM_H criticalSection[2] = {0}; @@ -24,7 +24,7 @@ static __thread RTK_SEM_H criticalSection[2] = {0}; #define RELEASE(section) RtkReleaseSemaphore(section) #else // if USE_SEMAPHORE -#include "includes/rtkCriticalSection.h" +#include static __thread RTK_CRIT_SEC_H criticalSection[2] = {0};