From 463b06d3e6a51ced199d18ae4084eec4a20d1b79 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Sat, 1 Apr 2017 12:12:09 +0200 Subject: [PATCH 1/3] - java scl tools: fixed parsing bug in OptionFields.java --- examples/server_example3/static_model.c | 14 +++++++------- tools/model_generator/genconfig.jar | Bin 86533 -> 88043 bytes tools/model_generator/genmodel.jar | Bin 88037 -> 88042 bytes .../libiec61850/scl/model/OptionFields.java | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/examples/server_example3/static_model.c b/examples/server_example3/static_model.c index 07b5b4a4..05926022 100644 --- a/examples/server_example3/static_model.c +++ b/examples/server_example3/static_model.c @@ -1944,13 +1944,13 @@ extern ReportControlBlock iedModel_GenericIO_LLN0_report4; extern ReportControlBlock iedModel_GenericIO_LLN0_report5; extern ReportControlBlock iedModel_GenericIO_LLN0_report6; -ReportControlBlock iedModel_GenericIO_LLN0_report0 = {&iedModel_GenericIO_LLN0, "EventsRCB01", "Events1", false, "Events", 4294967295, 24, 111, 50, 1000, &iedModel_GenericIO_LLN0_report1}; -ReportControlBlock iedModel_GenericIO_LLN0_report1 = {&iedModel_GenericIO_LLN0, "EventsIndexed01", "Events2", false, "Events", 1, 24, 111, 50, 1000, &iedModel_GenericIO_LLN0_report2}; -ReportControlBlock iedModel_GenericIO_LLN0_report2 = {&iedModel_GenericIO_LLN0, "EventsIndexed02", "Events2", false, "Events", 1, 24, 111, 50, 1000, &iedModel_GenericIO_LLN0_report3}; -ReportControlBlock iedModel_GenericIO_LLN0_report3 = {&iedModel_GenericIO_LLN0, "EventsIndexed03", "Events2", false, "Events", 1, 24, 111, 50, 1000, &iedModel_GenericIO_LLN0_report4}; -ReportControlBlock iedModel_GenericIO_LLN0_report4 = {&iedModel_GenericIO_LLN0, "Measurements01", "Measurements", true, "Measurements", 1, 16, 111, 50, 1000, &iedModel_GenericIO_LLN0_report5}; -ReportControlBlock iedModel_GenericIO_LLN0_report5 = {&iedModel_GenericIO_LLN0, "Measurements02", "Measurements", true, "Measurements", 1, 16, 111, 50, 1000, &iedModel_GenericIO_LLN0_report6}; -ReportControlBlock iedModel_GenericIO_LLN0_report6 = {&iedModel_GenericIO_LLN0, "Measurements03", "Measurements", true, "Measurements", 1, 16, 111, 50, 1000, NULL}; +ReportControlBlock iedModel_GenericIO_LLN0_report0 = {&iedModel_GenericIO_LLN0, "EventsRCB01", "Events1", false, "Events", 4294967295, 24, 239, 50, 1000, &iedModel_GenericIO_LLN0_report1}; +ReportControlBlock iedModel_GenericIO_LLN0_report1 = {&iedModel_GenericIO_LLN0, "EventsIndexed01", "Events2", false, "Events", 1, 24, 239, 50, 1000, &iedModel_GenericIO_LLN0_report2}; +ReportControlBlock iedModel_GenericIO_LLN0_report2 = {&iedModel_GenericIO_LLN0, "EventsIndexed02", "Events2", false, "Events", 1, 24, 239, 50, 1000, &iedModel_GenericIO_LLN0_report3}; +ReportControlBlock iedModel_GenericIO_LLN0_report3 = {&iedModel_GenericIO_LLN0, "EventsIndexed03", "Events2", false, "Events", 1, 24, 239, 50, 1000, &iedModel_GenericIO_LLN0_report4}; +ReportControlBlock iedModel_GenericIO_LLN0_report4 = {&iedModel_GenericIO_LLN0, "Measurements01", "Measurements", true, "Measurements", 1, 16, 239, 50, 1000, &iedModel_GenericIO_LLN0_report5}; +ReportControlBlock iedModel_GenericIO_LLN0_report5 = {&iedModel_GenericIO_LLN0, "Measurements02", "Measurements", true, "Measurements", 1, 16, 239, 50, 1000, &iedModel_GenericIO_LLN0_report6}; +ReportControlBlock iedModel_GenericIO_LLN0_report6 = {&iedModel_GenericIO_LLN0, "Measurements03", "Measurements", true, "Measurements", 1, 16, 239, 50, 1000, NULL}; diff --git a/tools/model_generator/genconfig.jar b/tools/model_generator/genconfig.jar index 073f4bc8e71769b28e61701d311c272d196bc7fb..0fa5a6aef5920fe6caa681ca4ff33aa696b57871 100644 GIT binary patch delta 20557 zcmZ6ybBrcV&^0>Vv29z=*t28Xwr$U|JGPA-+qR#vZQIzf_WOPBo15HwJC#&YoztnV zf4b^)PG~XoWgRrKvK%B7CKxO%ESQ+dZ`nj-Ua0@^a*hAvlfl7>(f)4$?Eke;lYgsY z{0|Tw3=9_Re}Ks<;H>|P=(8hDum1^-lzt%uj@dK<-hur;@$@@n@c-F>Nv^;(fpDQ| zLc}|Tzz_bmm!^jV17n2&1N;A`(u72q2>HK9qM1MAi)8KR?>p2@Xb?_ z7DPm#CS^NQQIfrc6~<$UU-jghicooq>_Y@SsnoyhGzdSB%Fe#zZ1-?-lfA!x3*C|k z@BPVjJ(-%aakI2aJ4F$Czy(9pgw*GOC%`a?1A`g+$(n$O2^lK_0cn5}hM>@ApNBS_&lJI# zh^h_aiOJi>9i7hS4Iy*ROm3C8PrjN!Z}olFj_7UrINr4eVcNrg+kXv&hP98O;t(95i|N}&Od`7Q z{>_`KGgdURiKuFSTkdQhL0xV1t~>mE>eP0KAmH&SVg@?84%C>&%55<^0zftT-r3A6 z_y?YfI|b4FNDXnxNS*DIs9ppI#9~{M&@bl)fjHGxGP7tXtlkL&zAyy10-!w;7y_h* zaa8b;ohjpJ=GM+V72

oZS)W&5oma@%s$#EmS4erabez6tZuJh%%&m#MN8l`e{^t zgOJr}RN$=ZH}9W~zhU0LGaty)yN?D@h9|?kL-XqJ4>$vR9V58g9~2C_kAqOO-<=2! zh{U=lJ6A2csAqP{{5}9hjY*)8xFTgm+A$<|X<>%_7~0lJ#j zKyvw&_XBC(TAGy-UlmssUlmW4-8_iQLkvGmo}+j&;RwBZfy2BJVI=|8oM3$=fiBG6 zYD`_M6tA%dp)dVBY--Qy2MiHXrp=gQ&ec_tfw`6#vE`U!m^(pZ7nvV!l6^qzmBrZ3 zC-7=0zfR6_KE_;l#+-f3B*AV>K8fmg6ZDjh4V zn&Ze{%ooY05+QvI8nF_WaMYL#{GPUKEq4rGaT(t=k?a!joV|EA;VDetevB$iA6PkQ z0c$DZ(Ng9puTe33dQV2l!d&w=ZKmqs6~0GESX6euq9j`G$I?fS24uTAkEm&6TVv;v zk3 zlb>8wcbU(HK>frLVTs)?Gtk9U|+etigKs`3zx{ z9L_@yU)u8OvQOog8oBKS&WzcE_D`ltTY9rdbxyhB`earr93Td{Z4i_{0?sIUejzSI zCi3s3VKd25)v-sP&%lGTkj||44P4c0|5OES)I!bzI;N)XB_rK~d;aoq3r+-_6)nF> z*{_`}+YpgZb=Ld|{@F`90=~0y3K-eU2U@<#`7pgL~iMoUG-%j(LUfEK3Uo z$r?7%jX3b zXAd`uO09>^S?`4|_TM~*jHMz{cRvbv7~+CjJUj2(+m1*m*WgF~h7h)THDdiH+%5Jg zOWKXhI!(L}!(#vR-iT#Aonz9&xAGR?n0gg-2O=T)r{u|=E`JnREOlX-S@8?VrCU+R zf9J(>b0CH{F^@J^U5w{W{j-CJEA@gEpA4)CtPXUT<>)PSl(8{*(^k^auraX7pqWml zzh7c1%?Ocsj8KVc2St60pt+UxWW#ef_R(SQ;2Jhk`^rxG>?_8zWBzxoaxP8GK>4>< zU>3e`dRyCsTUXf7MVglY_hZ z^0^(S+ebeifgVf&Kh3{Eqemgm8e|PC_KyuA3-tcExS;T9^33RZ?R@OKPmkU7 zc)5ECKHKuMrGk?R%PPckSLQpbFjS}u2wR{epcjclP8oicSS*U}n!2>Kn(DJ=NE=gn zH+IX^q(2LV;?OJm#p&^t85OB_FN2|Vh(uj$;>-}diC1mr%pJ^dPmfVIQbj8i)yK(p zkKerly1dg(GALH7Fx;cFS~Wd*^3IHG1FYyOZVy!O^Dg&Sbn$pllsO(OP3Lq1p;?MN zD2SEhCMv1ZSKiupYaaA5NJe5YAvlS$+M)!)=+Y;#N(Gc^Iga04v7r6ksAmAj(CQJ{ z&P9>nFxf8AbSx=2nGdEuk&!3|zG{Z_EbPa}5AX(tHWO9e?*X*_UV7*rTC1)`+w%tMhkg*|<(*aX*rnGQD z_XXC^E=g;0z@a^ii}(iZ`G!K@TBWAN6Z-~DlX`Y0HpgM2<-v2KXdUv8nMRUR{!Y|Y zaq*12Pk47SM=3~60wH?yX5HcGsx(1hc0+-Rw`Izgxq3gqFH4PQ96vF;C5L``3@!9r zSFrP%2-T!z8o{l0gzW?vV~kVa+SbEs%U$Cu;xV0M>lNFQIOg?2Ii7V&Li?`_odU28ViZ}Hcr1u-rJ>R7%~%zQDz08iAj+TqoXmW>#7cBP|D zN*buwTsjvvp5oQedU;qXpUFYB>oC!E43D2bX))n<)Kl86wBrPv_;D1>v7=qYe(c-v z8*000YXfWkwS>P4#ib^Xj>I&1GhXT9!9>k5C0pJf%ZTls6Q+*cJ8^&kafg%?(lwZl zdy=VH%&}y%EO4y3ZGvCHA3KjirK_+~2e>8GrBsF#oc%4ntn-=GS-p}Ro$taFsq>gG zPjA&&ZEMKh^w9zI;Zsi>!x~nr>I2gklGNA5_bW#zx)sZcbZ|ORJ z|7kY7eJ zGeq18X=NIac!`Mr!DT61can)t%sOtNSTZ|=?At|0a_kB8VG8LjL9nY5IM!4``@auS z_5;8%`$G%cR85FEZ;q5#4JXp0mN(ZcOoy z$yRk5#OK&vREALaZhRs`fYentXGO}^Mlz}BMjjF z63T0C^kM$qD6JX9=P>K|uMygP~_|JLm< zlFpL#K=sDjNcn8|9ja8%(o5|_niJChMv6h#w5 zU^ns7&PUPeyJ7Ad!+!jsze!j49AZ-hk5D>;*!J(2phI@O7E|>;ZM|N5f8e!*UQKAp zcft_0%@i(YNqfGxXzwO>Uh}GfuA$**G@TE?3#Dz?lP)<_)P~L~noQLQ!`fxG$P# z5&flKoLfN1tE=`c6<9TSEB_{#t+`5GW~tqc4VC|TB_%pE&WX3UkSP7uuSJso>LH_Y=g zOr?oQ#@FHRtt?$qqFf|L7+qOXL!iILL`1P}V5q5U#FfXef=Q-u`H;DMST}eeA83k- z*vayqVkFjyI&`D(cko?9l43Fk9H()ULJrQ}2RmDY4CtmBjc7`4#9ayJt#*U2cLOc0 z)P6gwEhvmH_yVUziG6J}mf4VLc+2z88iFWIYwp$|twYbwYnZDl%S;}P?PiGg4p{s3 zR1~Jjikp?6VDtKN9_#*nCQ?Q@7v)FSn@QL)*8cf(;i}pMzFsUVJf4S!Zv8}%d%JQB zRCtU2!~!o*=8bDi-iL-f8vmOfTLIMJnE*hvn(00p2v8M1W`E|Yb`*~R$95IoXsk-I zhadpX6?9&cf}LA-69EtC^t{1($F4^|tGG%wxpaUHC=8m+Xgjkb*~XzzDg6D3-y-Yf z4EV)_(h~6FU33FK8)@bkWUKs%ssHTNRlTr=nGz_=531uUu~K>JaBD!IX#)8mgCPK^ zV~_fXNg3rAg3iu9>gFfy-WHYSYAq@bkxDC;^A2_H#Zk|-X_)5RH-LMT&qdH~Li@tX z$l)T6R26?m78135>R_<-D7*Bu$6`qCIa2fY{MeN;IThCms|Gzg@{bJqSd7a0dT-M4 z7?Pgy?(~X{zxIon{xC`%kU%94CdE1P%D9-!ap_!jD>V-l0}qdkicXivY!NRQLEK04 zxo8n5n1C_3%HA#7=+(#@CKdw_OpM3&+{Ck^MvVWw@GFX#jS$!snc#VCJB?I@rPGE?X&7%nZVqzO|+1foMWU3 zi(T^{wb{@X&!>(R=uKzFzC5w45z7dNOv?#d|i&2<7um)@U$<@35>Bt8=o1{}88r zTG(q^SJb#mm!yg}t$@P;iABj8nyI>*3)KL#gF?y_^i*56hi=UtB3Hu@Ww9Y64F84{ zb&ZR^I0fXkq3< zOyi?%9x7CZT$%f6NuZ;aBuYkiL2P0aiI_j;Z81y7MG9tDK1!u<3=Y=4)->ErY`C|r zf9P2$du*AZtR&I3H2<6@PXjI&rmbmX%A}(>xuoNdG|_0OcXGTE?_}yPs-bT)Kk@#x z{$7B~R^^d>UMHuk$XhLDq}MHF8)_WzU2%;4lEq_sWm4qc$x_0&{kN(+XRFVKY_ex` z8zFYc*XIlM9sslAhKI6h+Qdf7!gHB0f#pO$WViBo&^M^#Ei1u3p<#p3BQU+8rPlBgc;ToD_0b`(gsbi%D}{ zI28%|GoX)KH{vU6j?Ej7vnEBwG<3c)Zm+Wv>JRoJ|C9_!r`V)0>g%(vP%A{)UDxP) z0`TfRunLF0ha?Gh4oaECC#m)MOHz#ZJFk>0O{1&;v6Gh!m30R%ghEze!$3}~BH0n_ z5Oa}9YwMtaj`$W8v24*owwgZnG z2toB@tm2mf;K?rMJv;YZ&-B8{SiCl|dx76&W%-T2k? zuXR@pSeT^WruhJA<9w@A2M7v&HHRS3mBU_E2VN4_Z#+e6wMHbWO~;@VXPYi(8{2jc zCjAW|{VZbUY1nkn{|qtRGE9!&A$W$}jY}-uU(2(!6|PeixNM@n%%q0!i@yXokpt$g zG~PrEewMhA{1eRAA!uhkbAim;iN1rKrk5A?|%6Jn)_dN5UddoNFc%)iwkgE zc^}&uop&TeV1EJ_VJ}?V*vvMf7#<Uj#Xhu0{;WU>Zf)`% z#XBEd`Feaz`CsBZ#2fvT(!uCwud2=LN z$}s*bYB2l0D-VHVh?_AHV>nVhMC*|38hF*7L_1g@FdV^zL_Y*J-Iz^3OmJUzDyRy8 zQafPcOcWQo>@BeMi^>_}4=negeLFNxze78w<7o80qN;`FXV*PfJI?Lz51B|3N{Q{C zvhS?ZW*9=?;QlF=Nk8CX#RX)-dHIA&gSEmdR)n3-NG|5^NVk_ugCpbBFan7TWUss- z@+ci>fPysGu=J2}Q<4_|Mj}PROUg4V7~>QTuB?fSY-<Zm2A2mk=}-sI!1de@ z;!tsa_wPArNnr=UEFrcMEfocfSI)Cj$sgfAn?SFaIV2|oBxn5zv z(HD;2hy1B1+}tv0p^LdHp)Hg_GdY!PD{s=plzJ+Z;K&5^SkF61>N-&CIc!uEz)eMB zlsAI=N;Kz)#^NSAG*CwM59GBDEM;yQrK3fZ-Pu1E}{1%I}z#?r@fv7U{!^mn891 z3l0|(pFz|TE3QikB4TXYej;|1QhQOshuY*qFe!|JjMjdyi1(&aW6#78G9_S7Ky$;$ z3gXS9xD9wrMa&a>=%{$DAx7D`(l59>Y~CsA9HFCL9l-Tb#Zjn3FAjS_zC1P$Op@;L zne)Y9f;&F`YS@=44LV$YG~;TB5U3Ht9x}R~=@l?+Dv2KPl~8&()5DscB@jK!dw47R zM{G`wV!FbR61rY&8I8LHxC7j=ms{0q z6K{u>_Cc92{YhE0U|_@oMOX~0#GEDiW(m&Q`gy)ZWoA^g4xU3;nx8s^0gvsj`hxs< zDbAo(XA$p*9-ORrBS{a|MZ^>ZY2X3cK<4Z!_ON3zL@Q9GKNI01Ay+(*rz|>)ASY4q z6_y+cQ}`}HQ+vd^Zk^t=_Ee_qd;%=zc8Z^@mD@0Y;1W_IQ-;g`J z&|au7bqI3=!&%FdbPy`y(Mc;BZD<(-rhmnVH4fe$LVT?!akpRzx4<%8nzBJJo8BT` zk*h#gq>;kx6sg*&P+MJh5SoGtO8OI~;=f~;yVym5!8e-Vk8&{zYb4e|w3%?k;ThluAe z{6w&ye+xvphnsN44C~VleJck;ngEc)?CzbTT*C(sy)mx_{a?Yu&4dN;e;fjM5Ty1^ z31hAHwYyQ9?p$-E_1Yo)q2ou}8eqNl%>^Q8V7b#G2y>{Z58Peo|Il9CQ@T*ipcA;X zdJ~>Tpt#iXMEnJslc!Azoh4#4sHWv>r5#kb@-ioQnWXwdRvpu57bUqQPW;Tf_#McJ zhf|f=uI}TU*$JTjJ!O1{$i-dQi zq@K|=bGPW`&un``hN``KNYRj@yW;~9b*Uh$bPJHgq<<^4#cuI!!T6a z0Aza_mt@F~+W#DA$qwk1HdpY=XQq%})w*-t4k9J|fLV zSfXkjCS}y_ahD6Q=Y_lLRWz2x+thy&>s#*9>(w^E8hgjMRE3X~u@mB?=^o1L4;ijY z87=~8E|g?@u0(qX%Is;%Y$nR=8p>=bX|B!x?BDI!$#R1I8Jt7K=OXTU_m1v*b#&@9 z)AZO$bAr9&w34dW^i(m}Rx4yu4b8oMIbAq)8BJNXT|vD^VV9t)yMuSZlsyLec9eP2 z&JYkO_LPf5(aCxW4xt`*!Foq20W6Oa{5u=!6%o$)2i%K{o*a*RSE71%>2@s;ihctuc z^&4mUHcl*SH@Akf&!gdFwSn{G1t4>akp$dfPTD!8>|v4iHA;N!B|8t0J9!bz+>JL6 z6i$5ml0SJdV(T;dzRlRZ{1@G5!&7X3V_Rc?^Iyrz{wo-5SenWuC{zR_Y~?$ucAa3X9($K*HS$$hl>8Rf<=z2cuF ziSUQw_?S`d+N6B_NaPqRku%P1XAm!uwRibEQ|O@A71#sP$5vj&j&0=yHmzMyTTXH) zasF?SEd!?TO83;$?%j4u76a&)N8nr5P-u=cw)oB8c+(NxTW<2gkB?x#?=>6(6pp{9 zho5P?4oBj*$U$bu+yqji!!3r2#Z_~DNT20am9y$y%qBSFfJa9mF(`dxorEN z!A{)hjO3UB0_G*$LqqGlIb++11i48Hp5vCVP#D>{SxgL=T!hugRkL(+zkx~H1xRo; zO=r+jkwUDR<{}+uKM*9i^qF0yEnH2y#)5@GVAhzy^?A5K&=M^{nE{&f^sB@qoF^ zSLbs*=ub4hK4;x_{mcLI{3_z_0sT&^cho4>X70(Ro_(+2+UGo&zzGL8+Y`~;sq(}o zShyAb{as8N_o>L%XfB$735#0d$=;OEFd*6?6J|Y>y^Kq7|9Se35?J;1`^S(ikhz_X zH*u-=*V4DQ>Ib>%hfMKvvdpy-X-l4{t#Im6Ab!P{`x=9#F%AI3FIp#qN^ykH1)iAU zWUrzSa~A#Youf(|3M@)5HT|7~N~B+i7OV=@R-x`AMvG~JHl-wd9xlu00Te)G3RRAA z5f|QajAJF)=8+4zA5Pm(O0dz%$jm$0NdynLzCux#NYTaDO2IO5jh~|1Yir6!&nOei zt|SQc&+rEZTT2Gj#d&_jpAPW%P-JZj_+cde_P{bK(wS$3q$WlcJKMhDl<=-+K82A6Mef&zPak z+_~_@ydQfAGdI7GuLgU!;2hYIKCu33fxl)kB-NZ;#rEouHJJP>MEZ50bKkHAO~T83 zrWaKrk^@u9L&O)wz6a}qO~^3wTMg7vFIr8B(+s~7jbL2Wjw*zSGa%#wxHv!u%HyP) zNVz~iV`?4Hx?pKW+1*>Z5baQF9ts}7`0H;)e1Px^Kum>o?HZVon`7YHWNDEe2lg)M z+Eh2#S`mK3wk~01}H+oBB)(C$0ds5$R5+#^RV z;=EOfnZKFhv1i9zOv7^+|D>`5K?o1#_l4D{ER)a&SmzjZ6HOoj*HG{O{*x4wwW41b zwYc#Xyodb2X6E-*9?XC2vGX_l2*dj@Zfqc7Ub!DiN%`vL|2A$$CV9GYaNj}s^7t%I zY$c*U`cag#H~RPiCETL4FHS`()FLG$$of~KRQ5{=tk(i($&2&aLH)uDm@}=;`%Lll zadw6B=?@z?)spgA_Wg2~xQhw%C|9!k$kVrI8pyqPOZOhI{20#s{xpl&d9ajsP4(Sp zpV-{O8+q^7o@^2yP)MWZ%^iHv6-UqJ zSG^MYMzWA<`9q6=R$28we>kEG4-_3(d5eA`cY#RmLf2xm)`G*Rr&1xJi$UY6 zLlSJ@Ukm+q=H!Mf$#*I?2kdOnMoATlpBEb_9enN2A___$O3X;GRycu{3`Bn*lHnu> zz|E4WBshTYdzP3;v29!H^sdx#r{6FKSLLwV6)F+thWr<eno|+|ziSQ>KD5UBOZ& zek)Uj_oMspJwcTZ}!Vhs6q zMZdRZn@XbjC8hYg$pTKFwrnuh6@QDSOb_@80P~T7Vwr!X21RUxV0z0MLyxhtbWOJ^ zrlSazO|5MsrTXh11{;Bxmj=(TM!XftH#` zHi^nXqM1}1%Q@*+aAmGeE-B{zYuv<0!Td?%zFD5o-jCo>E5>Qte?4f{Sc=g(j0L>v zK&ncr1~br1I?Yl_=^MVapV&B5Uk!WK{^YtV^-mS^46nG-U*7wK;#EiK#ckgCY8a># z%5jaWKp%=W#4l|?qk^dqpfrlhuc_1sJAbR?m>N?uHMZ>ZGh4@sDG+H{h>s+1m7%vG5}| z*CKy0n4?qICfP(i4WkYPA|?_IjHAN~p0^PCBqhG^(rf$yq{x|-*njJza7ub!(ltf+ zSMUy5HLE7Eal8CpiarCvLcy(pcpv**^k?hBW+eJ)^SSvnMQFakXnAqNCnTaX{)vZE zu>!r|3-DIV!brS-mw|7QCSHOZzoc5vYMoyHZ9fSg*NRog9M;Camu)@GmBx9l8F{S^ zWvPxk%@~~iGw>1=7@1X_kDzvRm2PquLw*Ea<(vKRbf3H&8Y^|wHshY+M`CgxYT)J0 znb7|Ci@*`bbLgWBE%`}JpYoNOa+pFrsS%`K zi|7;SI?hQiBLu8VI%Zzh{I1xbQ@4?=c$U>Vukq}AY@>SVdPlu^S&IpT(jr{=`i>Ch zb&`X(4weH5*;7V$m#hi75LF&2GqF57e_hP&zt^nn^AR`US1u_B8%b%eM!BErq8Wut zE6H=O47%8OSNmd0O{bhk+TLIj8Z<(W-h~tHgZWoq_X9=exqwryfI&$_UHC!>1hm-s(ek7LFE%`P81pK_7P{(^pORLJQDUiFMpb2}NRkF3e z@CjBpUzBNyzjc-5&q{o_;3WX7Dv_KUA+*`DwcVAV$lWRBe5IuUwXp~SbLN|F&|51>G#IeFv}5Bh)OrUqJM5w2vpjB`wu zJyHt;3a3!^izo^Cvz@dS3D_`+$DT6&k>Cue)5w*yM;30x7Skzoywy!?pb|#+OhM?z z{i=ZqjmdtSD;!yRI>vEm5h|MoSUdu++6MHPlbh=t0da7t)P4sa2slE;=)$yky01gft=qk!QOEm|*yk`J&V zOd2k)hYYyQR3|d07bYyg9&&HNOsiNl?s&&}D`ww=^T6&dn)yw#sQ{V0o!~>?Z zHZ@Jk2i(i!GCGz6X}NM7td8AHbsm-xj!=i-+6BQJzQxT-D2gql;=IA1i7<&8|x}UHCC&;XCX#L6F0C|}XB>hiX zk}TZyna(Sm0S8+)JI==_@%=(;U@>*TOT2ZUD-_COd3}>j*8tkJ<-c4{d(|Wb*`&hB zxo}D}YOEE8T8nDjWLsH5Yt{M6Hu|Mg$+LcmL~0L6Cd_0Qs!{C zC9Jvp+Mv-TkE5yDaDxk&wJJwZgBr4MPXyv3$Dw;$CT3NyJ^B`87FDl(VCscqx5{?3 z-Ex3;n=e?N%H_R83ph|21)+p1k`fEGXBitHDo8$3?qJ&LtNyxtcp(2&+^#N2)ml+D zd}$m0Dk;bis4}Z_k_}z)BYyy}OZ-tlA^71=B%Y{8PkkELK$hYxh+i?WOMK+ zcGzfiDxT~X?6t{Tz+a35K4&T@Wc#1w{0f+)6J4%wznRfK9z%|K zJ{fjn(%;byrrc^I+Mh0Pt^cfYzd}x|yQX0{pFXg$&gNDIz)1mx8@50&n&Oc|*#(Lez~YHs)_g z?sW&>5xhD^)D3P`*|sO}#3k{5JE(RM;H?+{mRA)&M&ut_^W+Il2mQC%UuuLE*XBR zTn}yA3g4*x2q{H|7vqdlM-uN0E6k=APb(F#O(UhY4J)71H!Vn`tes05Hqh0(PgqeD zC@G1`Ykp=EnM^Qfj%$ohv*}2%AL9XQTVpN`=cnMN$nKT`;yZ}I6xn>qq<-XYd6F}K zlj!93_jb9#Cuig?2#1=l37&M>)F1#HfM;FjFz^j(6^~h05l*FI|6Yb$060xf@x2)i zPFR?I4Q{m)RdZzA4!uV?SQi$I5UpLMYQDQ!>?eJHA9Qc2}Cy7ZC=VEvuS7SrZ{!YKI z&L;j_RXAoA_%I6sw>y|GQ|k%(5I*?D8PCiB1%pJfOBJrml7hXN&6aHBNX<{-I+3YQ z@Qpc|wTY>ybCh<}hNK%iX?m*q3@#o(H|Vyni$ywn_U}t()CFddEH$SXpy4%I_++A%shJPO{5{zNQZ_y!`Y%@_wYP*$PfgC3`kSJDo&6{O6KR(dVF?XdfO^a-VJ9w5v z^eGxp^CbA#Vjw!Q)oOFuYNCX}ki^j)5&hBw+^oMH2n*Qng6F}E8k6w~r>wy-w+=AQ zPlKkhUUx1`Ly&9!t`{MIjkgWngL7d0)FXi4Z>HF%x~6^ABnV?>B1vx9Uo#|##M@}# zktT?x+Rzq|A&8%Bj`U9SBs8qVIzZ9|>=Y`Dcx=GER&zo3&6UC{WHTc=gh?+b7HeDs zDRq|>v88OABqF(_URyd2d>#I17o|q?bH;niS7F{-8{S8HR<6}(j4SH45Ed*?G;EOT z6ueo~XtLDJVNVjYP(3I*RQN0ND>%+8rW;vXjgho89p!ECy4JPoQ`s`81072E6#0#? zY;ekLugN`%JR^PeyVSq5y5uj54QgY7bG1wG%~j19EmfR-p0TasU5fltdNl^c+vNt8 z+r$!}gi>g7O%)v%MgMxGqvUZ3*#VgC&BS5V3`l@{uz4#>45oanWw0I*9S<)>!py$5=2IsofZ;!{x) zc|~@uzmNOwL=vtqy

RK<41Z@9#c!v=iz{2r!xw-0skj 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 Rfju Date: Wed, 5 Apr 2017 09:17:58 +0200 Subject: [PATCH 2/3] - added support for Currency BasicType (mapped to visible-string-3 according to tissue 1047) --- src/iec61850/inc/iec61850_model.h | 3 ++- src/iec61850/server/mms_mapping/mms_mapping.c | 4 ++++ .../server/model/config_file_parser.c | 1 + tools/model_generator/genconfig.jar | Bin 88043 -> 88162 bytes tools/model_generator/genmodel.jar | Bin 88042 -> 88161 bytes .../libiec61850/scl/model/AttributeType.java | 5 ++++- .../libiec61850/scl/model/DataModelValue.java | 1 + .../tools/DynamicModelGenerator.java | 1 + .../tools/StaticModelGenerator.java | 1 + 9 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/iec61850/inc/iec61850_model.h b/src/iec61850/inc/iec61850_model.h index 850126df..9dad53c2 100644 --- a/src/iec61850/inc/iec61850_model.h +++ b/src/iec61850/inc/iec61850_model.h @@ -116,7 +116,8 @@ typedef enum { IEC61850_GENERIC_BITSTRING = 26, IEC61850_CONSTRUCTED = 27, IEC61850_ENTRY_TIME = 28, - IEC61850_PHYCOMADDR = 29 + IEC61850_PHYCOMADDR = 29, + IEC61850_CURRENCY = 30 #if (CONFIG_IEC61850_USE_COMPAT_TYPE_DECLARATIONS == 1) diff --git a/src/iec61850/server/mms_mapping/mms_mapping.c b/src/iec61850/server/mms_mapping/mms_mapping.c index 7df4ebb4..7e9e5d9c 100644 --- a/src/iec61850/server/mms_mapping/mms_mapping.c +++ b/src/iec61850/server/mms_mapping/mms_mapping.c @@ -229,6 +229,10 @@ createNamedVariableFromDataAttribute(DataAttribute* attribute) namedVariable->typeSpec.octetString = -64; namedVariable->type = MMS_OCTET_STRING; break; + case IEC61850_CURRENCY: /* mapping of Currency BasicType (see tissue 1047) */ + namedVariable->typeSpec.visibleString = -3; + namedVariable->type = MMS_VISIBLE_STRING; + break; case IEC61850_VISIBLE_STRING_32: namedVariable->typeSpec.visibleString = -32; namedVariable->type = MMS_VISIBLE_STRING; diff --git a/src/iec61850/server/model/config_file_parser.c b/src/iec61850/server/model/config_file_parser.c index cd034e03..c63a802d 100644 --- a/src/iec61850/server/model/config_file_parser.c +++ b/src/iec61850/server/model/config_file_parser.c @@ -336,6 +336,7 @@ ConfigFileParser_createModelFromConfigFile(FileHandle fileHandle) case IEC61850_VISIBLE_STRING_65: case IEC61850_VISIBLE_STRING_64: case IEC61850_VISIBLE_STRING_32: + case IEC61850_CURRENCY: { char* stringStart = valueIndicator + 2; terminateString(stringStart, '"'); diff --git a/tools/model_generator/genconfig.jar b/tools/model_generator/genconfig.jar index 0fa5a6aef5920fe6caa681ca4ff33aa696b57871..f50b47c88425ff377bc040cd04c3bbea5d59b8d6 100644 GIT binary patch delta 29406 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 delta 29377 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 M@LH0PYZT`H1Nqf(RR910 diff --git a/tools/model_generator/genmodel.jar b/tools/model_generator/genmodel.jar index c79ce550e48505e8cdf56a8f4b7546c02fda9aea..aa36640bb54d6afe0faa915ae672774970e26c27 100644 GIT binary patch delta 29361 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 diff --git a/tools/model_generator/src/com/libiec61850/scl/model/AttributeType.java b/tools/model_generator/src/com/libiec61850/scl/model/AttributeType.java index b927e7ed..0d0e1f8f 100644 --- a/tools/model_generator/src/com/libiec61850/scl/model/AttributeType.java +++ b/tools/model_generator/src/com/libiec61850/scl/model/AttributeType.java @@ -55,7 +55,8 @@ public enum AttributeType { GENERIC_BITSTRING(26), CONSTRUCTED(27), ENTRY_TIME(28), - PHYCOMADDR(29); + PHYCOMADDR(29), + CURRENCY(30); private int intValue; @@ -107,6 +108,8 @@ public enum AttributeType { return QUALITY; else if (typeString.equals("Timestamp")) return TIMESTAMP; + else if (typeString.equals("Currency")) + return CURRENCY; else if (typeString.equals("VisString32")) return VISIBLE_STRING_32; else if (typeString.equals("VisString64")) diff --git a/tools/model_generator/src/com/libiec61850/scl/model/DataModelValue.java b/tools/model_generator/src/com/libiec61850/scl/model/DataModelValue.java index 7ff6f704..5eeb67e3 100644 --- a/tools/model_generator/src/com/libiec61850/scl/model/DataModelValue.java +++ b/tools/model_generator/src/com/libiec61850/scl/model/DataModelValue.java @@ -134,6 +134,7 @@ public class DataModelValue { case VISIBLE_STRING_65: case VISIBLE_STRING_129: case VISIBLE_STRING_255: + case CURRENCY: this.value = (Object) value; break; case CHECK: diff --git a/tools/model_generator/src/com/libiec61850/tools/DynamicModelGenerator.java b/tools/model_generator/src/com/libiec61850/tools/DynamicModelGenerator.java index c002bbd9..5321094d 100644 --- a/tools/model_generator/src/com/libiec61850/tools/DynamicModelGenerator.java +++ b/tools/model_generator/src/com/libiec61850/tools/DynamicModelGenerator.java @@ -376,6 +376,7 @@ public class DynamicModelGenerator { case UNICODE_STRING_255: output.print("=\"" + value.getValue()+ "\""); break; + case CURRENCY: case VISIBLE_STRING_32: case VISIBLE_STRING_64: case VISIBLE_STRING_129: diff --git a/tools/model_generator/src/com/libiec61850/tools/StaticModelGenerator.java b/tools/model_generator/src/com/libiec61850/tools/StaticModelGenerator.java index b0500a70..d7b8b9e3 100644 --- a/tools/model_generator/src/com/libiec61850/tools/StaticModelGenerator.java +++ b/tools/model_generator/src/com/libiec61850/tools/StaticModelGenerator.java @@ -767,6 +767,7 @@ public class StaticModelGenerator { case VISIBLE_STRING_129: case VISIBLE_STRING_255: case VISIBLE_STRING_65: + case CURRENCY: buffer.append("MmsValue_newVisibleString(\"" + value.getValue() + "\");"); break; case FLOAT32: From f3b75dd3fcfe07b81df958c64047d6928368bcb1 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Thu, 6 Apr 2017 22:58:22 +0200 Subject: [PATCH 3/3] - added functions Timestamp_create, Timestamp_destroy, Timestamp_setByMmsUtcTime - C# API: Added Timestamp class - C# API: Added missing UpdateAttribute methods to IedServer --- CMakeLists.txt | 2 +- dotnet/IEC61850forCSharp/IEC61850ClientAPI.cs | 6 +- dotnet/IEC61850forCSharp/IEC61850CommonAPI.cs | 197 ++++++++++++++++++ dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs | 50 ++++- dotnet/server1/Program.cs | 12 +- dotnet/tests/Test.cs | 24 +++ .../inc/libiec61850_platform_includes.h | 2 +- src/doxygen.config | 2 +- src/iec61850/common/iec61850_common.c | 23 ++ src/iec61850/inc/iec61850_common.h | 9 + src/vs/libiec61850-wo-goose.def | 3 + src/vs/libiec61850.def | 3 + 12 files changed, 316 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 16994b08..cd880bbb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,7 @@ ENABLE_TESTING() set(LIB_VERSION_MAJOR "1") set(LIB_VERSION_MINOR "0") -set(LIB_VERSION_PATCH "1") +set(LIB_VERSION_PATCH "2") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/third_party/cmake/modules/") diff --git a/dotnet/IEC61850forCSharp/IEC61850ClientAPI.cs b/dotnet/IEC61850forCSharp/IEC61850ClientAPI.cs index 70e7b1d4..374d3a88 100644 --- a/dotnet/IEC61850forCSharp/IEC61850ClientAPI.cs +++ b/dotnet/IEC61850forCSharp/IEC61850ClientAPI.cs @@ -987,14 +987,14 @@ namespace IEC61850 /// The object reference of a BDA. /// The functional constraint (FC) of the object /// This exception is thrown if there is a connection or service error - public UInt64 ReadTimestampValue (string objectReference, FunctionalConstraint fc) + public Timestamp ReadTimestampValue (string objectReference, FunctionalConstraint fc) { var mmsValuePtr = readObjectInternalAndCheckDataAccessError (objectReference, fc); var mmsValue = new MmsValue (mmsValuePtr, true); - if (mmsValue.GetType () == MmsType.MMS_UTC_TIME) - return mmsValue.GetUtcTimeInMs (); + if (mmsValue.GetType () == MmsType.MMS_UTC_TIME) + return new Timestamp (mmsValue); else throw new IedConnectionException ("Result is not of type timestamp (MMS_UTC_TIME)", 0); } diff --git a/dotnet/IEC61850forCSharp/IEC61850CommonAPI.cs b/dotnet/IEC61850forCSharp/IEC61850CommonAPI.cs index 6024dc10..0e800715 100644 --- a/dotnet/IEC61850forCSharp/IEC61850CommonAPI.cs +++ b/dotnet/IEC61850forCSharp/IEC61850CommonAPI.cs @@ -140,6 +140,203 @@ namespace IEC61850 } } + ///

+ /// Timestamp (represents IEC 61850 timestamps e.g. "t" attribute) + /// + public class Timestamp + { + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr Timestamp_create (); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern void Timestamp_destroy (IntPtr self); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern void Timestamp_clearFlags (IntPtr self); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + static extern bool Timestamp_isLeapSecondKnown (IntPtr self); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern void Timestamp_setLeapSecondKnown (IntPtr self, bool value); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + static extern bool Timestamp_hasClockFailure (IntPtr self); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern void Timestamp_setClockFailure (IntPtr self, bool value); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + static extern bool Timestamp_isClockNotSynchronized (IntPtr self); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern void Timestamp_setClockNotSynchronized (IntPtr self, bool value); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern int Timestamp_getSubsecondPrecision (IntPtr self); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern void Timestamp_setSubsecondPrecision(IntPtr self, int subsecondPrecision); + + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern void Timestamp_setTimeInSeconds (IntPtr self, UInt32 secondsSinceEpoch); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern void Timestamp_setTimeInMilliseconds (IntPtr self, UInt64 millisSinceEpoch); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern UInt32 Timestamp_getTimeInSeconds (IntPtr self); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern UInt64 Timestamp_getTimeInMs (IntPtr self); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern void Timestamp_setByMmsUtcTime (IntPtr self, IntPtr mmsValue); + + internal IntPtr timestampRef = IntPtr.Zero; + private bool responsableForDeletion; + + internal Timestamp(IntPtr timestampRef, bool selfAllocated) + { + this.timestampRef = timestampRef; + this.responsableForDeletion = selfAllocated; + } + + public Timestamp (DateTime timestamp) : this () + { + SetDateTime (timestamp); + } + + public Timestamp (MmsValue mmsUtcTime) : this() + { + SetByMmsUtcTime (mmsUtcTime); + } + + public Timestamp() + { + timestampRef = Timestamp_create (); + LeapSecondKnown = true; + responsableForDeletion = true; + } + + ~Timestamp () + { + if (responsableForDeletion) + Timestamp_destroy (timestampRef); + } + + public void ClearFlags() + { + Timestamp_clearFlags (timestampRef); + } + + public void SetDateTime(DateTime timestamp) + { + DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + DateTime timestampUTC = timestamp.ToUniversalTime(); + + TimeSpan timeDiff = timestampUTC - epoch; + ulong timeVal = Convert.ToUInt64(timeDiff.TotalMilliseconds); + + SetTimeInMilliseconds (timeVal); + } + + public bool LeapSecondKnown { + get { return IsLeapSecondKnown ();} + set { SetLeapSecondKnow (value);} + } + + public bool IsLeapSecondKnown() + { + return Timestamp_isLeapSecondKnown (timestampRef); + } + + public void SetLeapSecondKnow(bool value) + { + Timestamp_setLeapSecondKnown (timestampRef, value); + } + + public bool ClockFailure { + get { return HasClockFailure ();} + set { SetClockFailure (value);} + } + + public bool HasClockFailure() + { + return Timestamp_hasClockFailure (timestampRef); + } + + public void SetClockFailure(bool value) + { + Timestamp_setClockFailure (timestampRef, value); + } + + public bool ClockNotSynchronized { + get { return IsClockNotSynchronized (); } + set { SetClockNotSynchronized (value); } + } + + public bool IsClockNotSynchronized() { + return Timestamp_isClockNotSynchronized(timestampRef); + } + + public void SetClockNotSynchronized(bool value) { + Timestamp_setClockNotSynchronized (timestampRef, value); + } + + public int SubsecondPrecision { + get { return GetSubsecondPrecision (); } + set { SetSubsecondPrecision (value); } + } + + public int GetSubsecondPrecision() { + return Timestamp_getSubsecondPrecision (timestampRef); + } + + public void SetSubsecondPrecision(int subsecondPrecision) { + Timestamp_setSubsecondPrecision (timestampRef, subsecondPrecision); + } + + public UInt32 TimeInSeconds { + get { return GetTimeInSeconds (); } + set { SetTimeInSeconds (value); } + } + + public UInt32 GetTimeInSeconds() + { + return Timestamp_getTimeInSeconds (timestampRef); + } + + public void SetTimeInSeconds(UInt32 secondsSinceEpoch) + { + Timestamp_setTimeInSeconds (timestampRef, secondsSinceEpoch); + } + + public UInt64 TimeInMilliseconds { + get { return GetTimeInMilliseconds (); } + set { SetTimeInMilliseconds (value); } + } + + public UInt64 GetTimeInMilliseconds() + { + return Timestamp_getTimeInMs (timestampRef); + } + + public void SetTimeInMilliseconds(UInt64 millisSinceEpoch) { + Timestamp_setTimeInMilliseconds (timestampRef, millisSinceEpoch); + } + + public void SetByMmsUtcTime(MmsValue mmsValue) + { + Timestamp_setByMmsUtcTime (timestampRef, mmsValue.valueReference); + } + + } + public enum ACSIClass { /** data objects */ diff --git a/dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs b/dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs index b19835cf..926d008f 100644 --- a/dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs +++ b/dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs @@ -227,7 +227,8 @@ namespace IEC61850 GENERIC_BITSTRING = 26, CONSTRUCTED = 27, ENTRY_TIME = 28, - PHYCOMADDR = 29 + PHYCOMADDR = 29, + CURRENCY = 30 } public enum ModeValues @@ -246,7 +247,12 @@ namespace IEC61850 ALARM = 3 } - public class CDC { + /// + /// The CDC class contains helper functions to create DataObject instances for the + /// most common Common Data Classes. + /// + public class CDC + { [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern IntPtr CDC_SPS_create(string name, IntPtr parent, uint options); @@ -573,12 +579,18 @@ namespace IEC61850 [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern void IedServer_unlockDataModel(IntPtr self); + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern void IedServer_updateAttributeValue(IntPtr self, IntPtr DataAttribute, IntPtr MmsValue); + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern void IedServer_updateBooleanAttributeValue(IntPtr self, IntPtr dataAttribute, bool value); [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern void IedServer_updateInt32AttributeValue(IntPtr self, IntPtr dataAttribute, int value); + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern void IedServer_updateInt64AttributeValue(IntPtr self, IntPtr dataAttribute, Int64 value); + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern void IedServer_updateFloatAttributeValue(IntPtr self, IntPtr dataAttribute, float value); @@ -588,6 +600,9 @@ namespace IEC61850 [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern void IedServer_updateUTCTimeAttributeValue(IntPtr self, IntPtr dataAttribute, ulong value); + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern void IedServer_updateTimestampAttributeValue(IntPtr self, IntPtr dataAttribute, IntPtr timestamp); + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern void IedServer_updateQuality(IntPtr self, IntPtr dataAttribute, ushort value); @@ -892,24 +907,34 @@ namespace IEC61850 IedServer_unlockDataModel(self); } - public void UpdateBooleanAttributeValue(DataAttribute dataAttr, bool val) + public void UpdateAttributeValue(DataAttribute dataAttr, MmsValue value) { - IedServer_updateBooleanAttributeValue(self, dataAttr.self, val); + IedServer_updateAttributeValue (self, dataAttr.self, value.valueReference); } - public void UpdateFloatAttributeValue(DataAttribute dataAttr, float val) + public void UpdateBooleanAttributeValue(DataAttribute dataAttr, bool value) { - IedServer_updateFloatAttributeValue(self, dataAttr.self, val); + IedServer_updateBooleanAttributeValue(self, dataAttr.self, value); } - public void UpdateInt32AttributeValue(DataAttribute dataAttr, int val) + public void UpdateFloatAttributeValue(DataAttribute dataAttr, float value) { - IedServer_updateInt32AttributeValue(self, dataAttr.self, val); + IedServer_updateFloatAttributeValue(self, dataAttr.self, value); } - public void UpdateVisibleStringAttributeValue(DataAttribute dataAttr, string val) + public void UpdateInt32AttributeValue(DataAttribute dataAttr, int value) { - IedServer_updateVisibleStringAttributeValue(self, dataAttr.self, val); + IedServer_updateInt32AttributeValue(self, dataAttr.self, value); + } + + public void UpdateInt64AttributeValue(DataAttribute dataAttr, Int64 value) + { + IedServer_updateInt64AttributeValue (self, dataAttr.self, value); + } + + public void UpdateVisibleStringAttributeValue(DataAttribute dataAttr, string value) + { + IedServer_updateVisibleStringAttributeValue(self, dataAttr.self, value); } public void UpdateUTCTimeAttributeValue(DataAttribute dataAttr, DateTime timestamp) @@ -923,6 +948,11 @@ namespace IEC61850 IedServer_updateUTCTimeAttributeValue(self, dataAttr.self, timeVal); } + public void UpdateTimestampAttributeValue(DataAttribute dataAttr, Timestamp timestamp) + { + IedServer_updateTimestampAttributeValue (self, dataAttr.self, timestamp.timestampRef); + } + public void UpdateQuality(DataAttribute dataAttr, ushort value) { IedServer_updateQuality(self, dataAttr.self, value); diff --git a/dotnet/server1/Program.cs b/dotnet/server1/Program.cs index 1776257a..19778790 100644 --- a/dotnet/server1/Program.cs +++ b/dotnet/server1/Program.cs @@ -44,8 +44,18 @@ namespace server1 GC.Collect (); + DataObject ggio1AnIn1 = (DataObject)iedModel.GetModelNodeByShortObjectReference ("GenericIO/GGIO1.AnIn1"); + + DataAttribute ggio1AnIn1magF = (DataAttribute)ggio1AnIn1.GetChild ("mag.f"); + DataAttribute ggio1AnIn1T = (DataAttribute)ggio1AnIn1.GetChild ("t"); + + float floatVal = 1.0f; + while (running) { - Thread.Sleep (1); + floatVal += 1f; + iedServer.UpdateTimestampAttributeValue (ggio1AnIn1T, new Timestamp (DateTime.Now)); + iedServer.UpdateFloatAttributeValue (ggio1AnIn1magF, floatVal); + Thread.Sleep (100); } iedServer.Stop (); diff --git a/dotnet/tests/Test.cs b/dotnet/tests/Test.cs index 2b9f4e46..8ec403eb 100644 --- a/dotnet/tests/Test.cs +++ b/dotnet/tests/Test.cs @@ -105,6 +105,30 @@ namespace tests Assert.AreEqual (val.ToFloat (), (float)0.1234); } + [Test ()] + public void Timestamps() + { + Timestamp timestamp = new Timestamp (); + + Assert.IsTrue (timestamp.LeapSecondKnown); + Assert.IsFalse (timestamp.ClockFailure); + Assert.IsFalse (timestamp.ClockNotSynchronized); + + timestamp.LeapSecondKnown = false; + Assert.IsFalse (timestamp.LeapSecondKnown); + + timestamp.ClockFailure = true; + Assert.IsTrue (timestamp.ClockFailure); + + timestamp.ClockNotSynchronized = true; + Assert.IsTrue (timestamp.ClockNotSynchronized); + + Assert.AreEqual (0, timestamp.SubsecondPrecision); + + timestamp.SubsecondPrecision = 10; + Assert.AreEqual (10, timestamp.SubsecondPrecision); + } + [Test ()] public void CreateModelFromNonExistingFile() { diff --git a/src/common/inc/libiec61850_platform_includes.h b/src/common/inc/libiec61850_platform_includes.h index 674b554c..4dc01c29 100644 --- a/src/common/inc/libiec61850_platform_includes.h +++ b/src/common/inc/libiec61850_platform_includes.h @@ -15,7 +15,7 @@ #include "platform_endian.h" -#define LIBIEC61850_VERSION "1.0.1" +#define LIBIEC61850_VERSION "1.0.2" #ifndef CONFIG_DEFAULT_MMS_VENDOR_NAME #define CONFIG_DEFAULT_MMS_VENDOR_NAME "libiec61850.com" diff --git a/src/doxygen.config b/src/doxygen.config index c53fdd75..f188266a 100644 --- a/src/doxygen.config +++ b/src/doxygen.config @@ -18,7 +18,7 @@ DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = "libIEC61850" -PROJECT_NUMBER = 1.0.0 +PROJECT_NUMBER = 1.0.2 PROJECT_BRIEF = "Open-source IEC 61850 MMS/GOOSE/SV server and client library" diff --git a/src/iec61850/common/iec61850_common.c b/src/iec61850/common/iec61850_common.c index e16eb9a1..31892033 100644 --- a/src/iec61850/common/iec61850_common.c +++ b/src/iec61850/common/iec61850_common.c @@ -26,6 +26,7 @@ #include "libiec61850_platform_includes.h" #include "conversions.h" +#include "mms_value_internal.h" Validity Quality_getValidity(Quality* self) @@ -223,6 +224,21 @@ FunctionalConstraint_fromString(const char* fcString) return IEC61850_FC_NONE; } +Timestamp* +Timestamp_create() +{ + Timestamp* self = (Timestamp*) GLOBAL_CALLOC(1, sizeof(Timestamp)); + + return self; +} + +void +Timestamp_destroy(Timestamp* self) +{ + if (self != NULL) + GLOBAL_FREEMEM(self); +} + void Timestamp_clearFlags(Timestamp* self) { @@ -382,6 +398,13 @@ Timestamp_getTimeInMs(Timestamp* self) return (uint64_t) msVal; } +void +Timestamp_setByMmsUtcTime(Timestamp* self, MmsValue* mmsValue) +{ + if (MmsValue_getType(mmsValue) == MMS_UTC_TIME) + memcpy(self->val, mmsValue->value.utcTime, 8); +} + char* LibIEC61850_getVersionString() { diff --git a/src/iec61850/inc/iec61850_common.h b/src/iec61850/inc/iec61850_common.h index 5b73f337..47131c43 100644 --- a/src/iec61850/inc/iec61850_common.h +++ b/src/iec61850/inc/iec61850_common.h @@ -353,6 +353,12 @@ typedef union { uint8_t val[8]; } Timestamp; +Timestamp* +Timestamp_create(void); + +void +Timestamp_destroy(Timestamp* self); + void Timestamp_clearFlags(Timestamp* self); @@ -397,6 +403,9 @@ Timestamp_setTimeInSeconds(Timestamp* self, uint32_t secondsSinceEpoch); void Timestamp_setTimeInMilliseconds(Timestamp* self, uint64_t millisSinceEpoch); +void +Timestamp_setByMmsUtcTime(Timestamp* self, MmsValue* mmsValue); + /** * \brief Get the version of the library as string * diff --git a/src/vs/libiec61850-wo-goose.def b/src/vs/libiec61850-wo-goose.def index 2fee1d49..065650a9 100644 --- a/src/vs/libiec61850-wo-goose.def +++ b/src/vs/libiec61850-wo-goose.def @@ -558,3 +558,6 @@ EXPORTS MmsConnection_obtainFile IedConnection_setFile IedConnection_readInt64Value + Timestamp_create + Timestamp_destroy + Timestamp_setByMmsUtcTime \ No newline at end of file diff --git a/src/vs/libiec61850.def b/src/vs/libiec61850.def index 2b4d1a66..3a2ca387 100644 --- a/src/vs/libiec61850.def +++ b/src/vs/libiec61850.def @@ -636,3 +636,6 @@ EXPORTS MmsConnection_obtainFile IedConnection_setFile IedConnection_readInt64Value + Timestamp_create + Timestamp_destroy + Timestamp_setByMmsUtcTime \ No newline at end of file