From 461f1f5565609998066379ca0892d894e7e8db46 Mon Sep 17 00:00:00 2001 From: Jakub Date: Mon, 16 Sep 2019 00:53:48 +0200 Subject: [PATCH] Add external mode section to documentation Basic documentation of external mode and limitations of actual implementation. --- doc/images/exmod_parameters.png | Bin 0 -> 3380 bytes doc/images/extmod_code_generator.png | Bin 0 -> 9485 bytes doc/images/extmod_interface.png | Bin 0 -> 24988 bytes doc/images/extmod_scheme.png | Bin 0 -> 26508 bytes doc/images/extmod_solver.png | Bin 0 -> 13212 bytes doc/rpp_simulink.tex | 112 ++++++++++++++++++++++++++- 6 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 doc/images/exmod_parameters.png create mode 100644 doc/images/extmod_code_generator.png create mode 100644 doc/images/extmod_interface.png create mode 100644 doc/images/extmod_scheme.png create mode 100644 doc/images/extmod_solver.png diff --git a/doc/images/exmod_parameters.png b/doc/images/exmod_parameters.png new file mode 100644 index 0000000000000000000000000000000000000000..c324c9491a60e4c2624e665f1d449488b1bc4b39 GIT binary patch literal 3380 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 literal 0 HcmV?d00001 diff --git a/doc/images/extmod_code_generator.png b/doc/images/extmod_code_generator.png new file mode 100644 index 0000000000000000000000000000000000000000..a1a5687800f0871e87689f9f400f9dbef7b5a68a GIT binary patch literal 9485 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 F{ttSoW?BFM literal 0 HcmV?d00001 diff --git a/doc/images/extmod_interface.png b/doc/images/extmod_interface.png new file mode 100644 index 0000000000000000000000000000000000000000..883842c58dec24f9ade947adacd8e917c7562824 GIT binary patch literal 24988 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 D={G}5 literal 0 HcmV?d00001 diff --git a/doc/images/extmod_scheme.png b/doc/images/extmod_scheme.png new file mode 100644 index 0000000000000000000000000000000000000000..9d78ca84506e06ad5a2f2e9b5b5ff9dee39fa102 GIT binary patch literal 26508 zcmbrmWk8c{_%`mNkEnoPP|{K&E!{{;BcmH>=^PCT(gGq31Oy}|4jf2~8X+P%Lb^d> zyhjN>@Y#XQ%1cAJoz@XD1dw^fuCAXlzjUA=PU zAGw=X!T)K24dK8)*SzFZbZ_3gIXS2G8@#>at!U`2<7VgW`@+-qijISix3{gQb=a?4 zSFSK#QBjc9^_##=+o#Yj`}6)SEG{aR_vw|Ak`kDf68neB^2$5Lhj&=mV`L3F%{x;! z%#29TGg70el?O8mQfOb9sX*Gz{<2N;Qtr|gNUF0+szYq~)ocIWVR`ir-_7LRy`P$c zV(n{Z&lSAhJiW?z^VNroE%_WJt*DG@LY<3{_23)>{nAk|kSo9C!({J+f3K7i{qHLy z`V;<7SH`dZ@9R6WU;lzPuWX<;@>c$!OQ==mJ?;*-@G&X z|6j+iYvA87Fwx@wv>6xBaGrfwda*3UmfY#OE{*^8cX@gXmOScSM zy2P_+@OTM1lrgztlI^(3>0n}M6=_b8Gy^d~a;Hu1^Do1W5X12h>4F8iX##b=hym z$bbfOantHqeqx={Q4e<}^p)=k&$%e#TJsohO7=A^SDOot%0H$eZu~nRm&Ri@F*U`N zhJjFG4ovE1Dc?qaK_EI8wk3}ilLHTMbD{~hMyvW{iU|wvijvH(Sl&qg`0-gtYt+{uag}fGx^>uZQ72}JZN8zuQUePV0M$J!_M4J46e}8>;a>yX+{s|6OMCw;?1!_QF?sbbqQhr*c zr;d<&;pH_r=YHDHaHg%JGYIZ!adA9q;WroIAZW}^w&*F=w;Qi53URO9l9KP>xpL)D znFB^h5ME~J?Bc?mq-@BQy0m0hIJoL9j`gf1v$Ek&-_uC5HG2HhG}-cwt@O~^en72h zDh8{ep~20~O}eB+81|e47TcO9$X^NHB0(SjXRE|1ZoKk*i{SINf2Uwp6 z^z_nxe?BSYYqOILXo0(%^0={3y?o08A(}dQtH(}OaQCM->e)Nn@f$DL$bh|lZ^+l> zIK+*6fjQ^q<|2_uQyvik0RbT)@MU9T<^)>B}nB?c@Q}UYc`AJS+UNBX~;$cTY zYLqeZIeXP%^U(UfQ(Lp3=EIv$NMAdmGB8*USl5|2|8-dhQ&Pu0^c`*H8r|aIwt80_ zuMOpuF(boNz2adP7Z+7{d12vl%%kj^Q7uWzHa0ekxbX`5#P;?507?4f&H@Ocp!xme ziKVM334t{3>g(^mjk{T^tE(qFt6-6irk17ct0!p^mB$s={w#==KoA{RPa8`7BXX%C z!O}s|)2`LNK0aU#)PPCWxId(hCkSsgMzUoII}2xa+6;ib%Su@G&t8U0Qymno+w0sv zwv?`%-~L-%+8A(t>R&kc_;yI02w{XAAJyCTg+A#MXJ)kEu~`AL#@a=4Ea%MOfd8dw zq?_`LItYe`hx4SZ|85S?%*@1KFiuWR3kwSY4UH9-SAM=c9D>j-QVNn~=x!-Oqfe?s z)~k(8Ot!`!ft3zjpqZ^%Y7S`NiT6!P5Jc>1)!Dr%tHW=~pvqB;YxSga)yT+*gJ99< zx>y1yMclBX5EzPX z!L#*?AvP~fx#gg;z}5IgK@gRb8&M>5Yg=21O8IedabUEAgM(n?zeOG0<7p2X{ZwzXN|dEe#FYZ`;b` z@^W%2Zna9%Cx15|CrCz6fw&y(rVt`8tH-Wl+!-w6xHHtsY983OL5XR4W~Le(GVWYu z$Yoby)L_ob&GjulnI&rt6&PW+xZf4CqTuQWJ4?ZTfP85t=oA|fIz9M=4Md!e12 zFrshS$<6KXD99KI4OEoaYrb6CDF(>-J2tiI>gqxW0&nZJo~-HWAPVg7?}HPmSqRKy z+*z24_>030{2u=K^qiecDc{4-uco2l?9W^aaHL*dULj2vLkJz$Y7^t^iG}Six*Tvw zOf2*Y-onX<3C=>Anl0b0wE`19JV_X)C1=ikY8TS@<)zOUf$^TgM5bi5c7Lz4Fxr#{ zJ>WXuAr}QwKQJzsFPgs^oK-Gf-bcwQ;DicNUzhzY`q34? zTlBiXY0VywR1**okkE+_O-uw(maBiq0;wa_Q1ps@s|WGiR>NVkM=7NG~^q1OkE9fpZ`7T3zZfU z+W)(dNJ>IdRaFIo8E~SKHF^CjV`GMVRHh~-_(k@U1b!QeHY*+7l?=V%_Cc%F+M4-w z1ngr6@3Xx5qngi(SfBc5ERJ6}z;fzx!1^6*sFd#fTR2!-Rwk>^Y{^Fv2Q~rmF{@?n zIYM{9c`b9l`BUCBcaeTECnu+U??)Aud%!bD=aiyQC^)>;l5b@{ppq1X?eF2N$(?`C z&cT$DA88#2HG<2!J>fPfsoH|t=I`4T+ka0xlx>1BD>OG#cZo_P2(rtQ7liA)3PcA+ zM@I(-lU3nzxxX^q8vU2L(=lnhYOqb{)=bZCy?!z9y`$>z#uthbe!h9^N=!-MAu%zx zD#mfUNA&)SN#Hp?Q0V_GiTm1q9eXUwSc9zfDIY*OkFCAiBI^_o2vq3h`H58_^FY3WIjbWY!Be}DhT2o%$P znO{w{R2VQNDYM+$-Q5+>DnTM${QUl|^ydS=_+_Gs;gD_)75jqF(9lM=R$JuNl2WGn7Dx;F*g8L+t}Cup{~`c z%ow@mEiQYf!1V)&8mv^>WbjqxmGD}hR;wpuAS&ec_iLwNu)9aue)BQ%Q6xt}jix*X z#lyc8@TZJ4PcHXcZLJYcnt_3V6n$dfGTIZ{71&smfq@s6u%ucKH@0*^t2J_MCggBs z?oYFG(jU4B^q>4)>*afEj64Wv;D8l@2ni+z!lRSZI`CWeecAiwwu02~f8`A*W#&am z1ioyk^QW5{8g?x20{<Jv{Xv8_HKF!0Cf=DlnBMihr$}Gv9hDiO#Xj6f!OOX+{r|&^f=v>@S zT*hZGl*9y&9z6mcuWwf*$XH%D)6CGY=G^`GHy1ZIcGo|=`BfIkO237tV6a=E7bh}j zt6IL!M9$96V4)8guEq%O)FLoxqng6cwPx;|hytyD{ClXj?!)TbdbaV>n#4xS8R#N>u~X|*X&lw2-NW4KcO z18Qo=`bnutPn5BgpkSrbXbJjx+D#A}rA@!;uctNc!CRt8x4zGwwNhG~PK-9DcG^_Q z051-*ksCK|kOF@?JPd3Vf*3;ErBS4| z$?zckkv(PltS|I&8fM)2;70@zFukmgABq3H>WDi2l`9WoCrH*U`2;`HxmY~Ca%;)% zUd+$Y#sgHEMaWS`d%Tjhni?iQQCeJ55_lGUef_1SCD*?sAVKmCJ@f_cCU`s~OS4*_ z$qzU@oP%UvH41f`gk%$pALIlBg0xHnjwpigT(AScKP>O=@9hy26AKCnjc*+I(m|eo z)w}=t=+}-eWL0uym*jB6<4`oBx+0F9di3Kl`)(->%|Fn&Pc5s0jwuS&V%TVqBY|kv zz5o^jT(6&6dU$x)+QJRFGSokhjDQ+$a(I~4rN|hWx;7}trfFT(kB(N#SIRHj4wWq) zHb#zo{>%nGG&3_ZJIgEN42LA8I@M&W!gm5198~a0d|>Pgs^Z~^>FMCbjwBF~j)J7~ z`#W|eF^%@!9r{jl>FK{81I|T*?UM3k&($xvVUoZO?Bp=En^+8&&HQRIn(&v@6wH-f6 z$bOTFC^5c1{GEO0-`v{T+NLIp45E$QBXJ1{kO+@EH;$*_*4d4E*XTpS%5D$1mi9M0 z9c}b0vbjyT%si4T9erb4#Z#>0h0%!zwF^SG%Z4B1f+0ObUM&n=Hba#Lvz3RtE!D@+_}rTP0JDtzz@5cTokC3wO-+3c za*$GP`yJrMt@)@x#tuQGPzXD|?Q4~8Fyq2ZI9E-heHkR6>T90&|NW=uDo9uUyjojb zJsL=Bw5b@Ma;?@Z47?+ZfFOV;0oUs4O9YygK5^6$m7Ps5dk5r6;0R~-KpvV!$UThj z2K7~ZIZwxvYDI*uG$>d>hB(0g(YGpr9G@jjG1Dh5%YI4W(C|xzsDXN}ePOvTN5*Gu z=*JH^QCe_jdD4oJ$R0Itd(?* zg@r{^(9uqJclW>mgf00oMVw}#4z-Z8AoXp6aQ$MJpJb0~1m`gaC21QK`9`U&IETwG zqvbP>KB}`VZ2Pg?Gcq)!qN4-;bZlyBXw_Rd6A5-7fl$fsR}MF(eqkF3eK}PtjS}P- z%Ke}8G|Z~(gEET}xSl;*US7`c|Dw(|=pcA46Z%u3g0= z3H2879A0zohQ=x$j*gBmUVviiUQ(--hj64(sLK)L*@laT;@76wHtL~pJKg)sGBvHhrcG&Q%M-f~Ol1LQ} zDKq?-lVf3MXlQ0OJvIhPQczk|ROl2BXQ;D*dRI6TyjO+S8Ck?tX3rz{P*S(t)?^jL#|sb`2JjbzDan$m%|TFgnwubeE>dsFb!^mA zqk&=%^vzVkw?2yusscVfw|W$qf)%5QvwSmf!6v%D6a( z^MN4%3)3&Y+wY>6-XgLar3G~nqt zvS*3(pa=(0hqExiO+cQ-ZT!>26x4gej(P0&`Zq?LUX$Jh73a`UWnJCzqtKm4l6^8C zXlenLhBEdMpFY5qONlIemj@9n%gWO76A~G}AeydT)ljOa$~};A1!8d~guvRNJUj@G zet{VRZwOPh1+hSvLq*~&vii`2S%Xc-*SEUIF1Z|YP&PLp8~q==2+~eQCXg|olRr*S zepE#882zaf`@*(*Qf50w3l9LSde`Z408|Q}9j3u0;zMU@nC|Gh)5bZy$D_4g(d~hAHye4;Mz4u z8L|fd0a^>-m?KIR33=ihQ=PKIIlM^EUVJa-YWIj=oDk(JSP%ECJ#Dm4b5b%D0>dBw zi?>Y)R`i{_Eqq&^+E;?PNza}zvXa-DhMX}=_8D-%PBP7^`ka#8!b2{hrrKqsFGJ5O zua*{#*vIkKpZZss(l9hF)mv`Rm+Ft_OTuws_&f5TO&fHWyV~@ZC}+hR$W(dk5Ky7+ zKgMxhhtGoP%+Pc;x(%2IOd4dyk_^;=tj+=TqaFo)vNrWdWT)G6=qhf!d(0btW{sXa z@S|0r#uWsTzksjW#j7dCgI5*%Ln$+r>d~hz;&}MW;}LiI+vqhbq%L>VkGSQ&v)@~q z8ZIAWAx9gf<9ThH8>cBJ$_*%$7AG>UNBNl_*~%3-ix-k*PB1DAyjwB@g>^kRCc9Cm z%=W%BlfOA3h9N&bhkh;9>**9E?p5)%XaI2^V}*ni#STwM+|P}fv*GIV{AkJ}Tz{5- z68PyoJ98N%HvpJLhmkptJ(Ut$a-`#n1VQ{(3NmSn-%rm8z`|Fti^f}Shd2WUf%}*{ z+VKv|X(~K#vl1^v1@eN$+r*DYOm>l13Pk_Uve!+>{mCge3XV% zcyp=`_dbhPaapTA)%@n;laN)*lc&X*%CG-1#6xX5TGo0T5d*K&i3)kR$j!P1a;T;@ z&TK>;i!v46>xoQzWNt3nK%0^HnISIqi+&-5O<&awuA0Jm|L$GpM{slIKf(>oLoD75 zK(_Ik`MC8|=OKrpeE)XRa7No?xdEz*JX4~g z&h`+CRBc6RMIIJrP^xu)pMsYqmo|#&P!Ykzm>$F^=mqxv;$oDI{&CcK6yNrH?wNm6$eoofTpoSTpR|n6&DmK5Ef>W}oRZdazY{ zjD1sQBTafW?M;b2MIkYi6hB3n6G?*0567W}ua#x}^M1DJ+N>^z-qk%ri+t4Ddh%}h z^#d0&V^dSn{oSIkD*azGjn&=T{(gVgZ?#w^fTs!y56~=OFdJtzsu9uSx{pQr@)2J? zg8I{q;GS)lZcOxIn5;hB_@Np~!QC2*Q@l{sOzz=~>B7pfX4g1B|9OUvcOoiI3lX1L z6&#LKH~5_Tx%UR0T-LIaQBi>v>aTb0u+zaZR6z12c2fMR=eFlOgx`WFBjEr=$>5z}Jsl1E#`6H&1f5)p>Qv+tXbWIUZ4ZriO@&{jH#YC--9F>(hJp2m7@gBstRR`6S)DzW;24 zV6nCnlQFAGz9wb`dv;>FCb#H(T038`(G|0lS8WFWSea2&;gN__KR`)$QjlEYLZ~ zcR`sP4Hk-M&z>7!7RG0f4EwfdckgOHZa@W{y7lD*@6Im06aaG`+rNcjZaP@M(bIRE zx@2;Msy~RmI7>siVf}uIYia6{TO0}rN@2U(s}eE44lf<}fhn6l2TT=ZTsj&<#boYM zY0@z5!dBGk)%xqLA+f>$R#{tTK|R2yw>U8sl37t#BGpUtSCnX zNr&kdRu_l%z0=Wp>>`@YkG*I5P`dzv+U{h{vtg>2JYPE1EvYQ>&F1#PB7!`F#K{s8 z43;yT4!&Ss4za`jMg~{2e|=ll#Tu{eS`GyH6(-2>N*9>k~^MPpIO% z%`)EhI)8JtcPh@(y9bMds~%6SIq##&#Uzts3e^LmWZicZQtnp7z!*v=^$KIqo)7CK zGvAvyhfQxjRE>o%9v3(39pH>JqfWa=79(I&hFvz^)Rh{NcemwaA4t-ViTcer|Do!r z+n|2&n1U-(^O4h%dbn^c!VSS0a4D!N5*dzmS%#ycDvX1$d`sHKc1%}-Q`|JlEVlH)7ro`N+)_emSfNJxyx2EH^tkVzo$zW8zb+;f)KChbRCz~bV%(b4jU{Pw*b^h>az%xXNFXh9pKbd<#X(ueMu--~_fjq~9_pV=n6mjud;dyF_+ zM;6lhN?lp{JhVh3TX}Is_ps&tf4d@l;2C7ZRBTIf$} zrhe5wdYbZxDNli|3Fh~N&*C^Cd)8p`tL;58Yfhs&IkQfL6{0Hvx8Grr+ni)-v6?K>`P%%@lG+Cxus zh+*yx#|*%&I<`o;k!9B{P*fS?bvp*jj)_4g2Tm5jGv_pkD=~7J_tVVJcrR+$itkr* zqo?wMvMDHaZh5qwbPFVI9QQRKa9u>r1}~%G=5hG?Q)|v)UTWp8lG1 zT9IZSQ5LFw_lcFX8OSNpVE1&@2f0W2itpOK@BDLmr`^OIU^;r$>WJ%+KnM#WyA_Xt#^{9YM7-u=zCPGowT4`LVo7>?;yCDyaXPuEh2Q;i57+OT8KX;{lqs`SZh%@7O=nPi_cMg-Lp=GL znDf4^RaEH9Uo&GroVo6Opx24L&n)n)gHtr)n+`rLX%D_W>exNembFijgv4=aw#i~(B40V(x{<$(-rqNhS8~xJb*f7LQnZ96 zpLsE~w$D*J@1ukk6l+yx36k)dFH3{AiB#}h%JDNN{fKlwjULqkCZ;@x&+q5H8i%(o zlsh7MgzpX(gstW|`wTMKd+9Sl&mk|4?U|j1M>4zqXo-Z1fXu^vO8xyB245BfRTX^Hc9@ zXMNGvV2w*AiV1sIv(B6o+PHEH2cz9H+o)6`dllMg`+4NZG8{=}Q_!)d#!PXhOP8|V6N1;5RhAhx4B`!TPm zdd)uvH)Pi|kUwP1MGvEG#%_Mw_d@GxMJ5&#+JCmF3tGD2i5>o@)CYxfJv)0gaTpr( z>X7~9!E67bllCY>@v#b;DQpmJrn7T%|Cx$ z(brPoof#Xf6V6|o5q&Vb_n2V*_KcL&jFiYxZQ{!JNnfd^nomiVP87~PO=GjnU*f~I zv=8HFV<|gEwkrE8g2x1WVKY5952mkSea^I{2!->w`kaYje%+r;4EYO+5#WGv6HLxS48 zrd7@k#=bnEMW-c#@{t<&aSyeuyAv`Qb2_ke+6C?ut;}Y*TFlvil(XNbJ*hJIa==Jh_v>-HRM3p4o+gQ*z_=F@FQClSZE=zzt zWSjDr=$GBvhJ&?>+8mL|J*e&%fTCP^6(x!8po*x~d*K> zM(_>_PKz)lo0l~?60a5j z2G?Wfj!#Tb)6lH1u8IZy{ex^$C2Iww ztWU_0qmVWkjTxh_8C!CCMg}Mz0b&Y7B&ytb>;R~&3sAgu1{4f! z%b?M7y|n03b0bf(0zYwrpqym zXTkXREK$b8j{DQok}q2T^mfU>j^3cuCiD0JHW&8^=P3aATf7Dh=#^5;3jV1F061VL zf5zOuI4->avZ?}H-moJETMj5@KwC%5hky9XY?}s9Hdfe1^YtwJ96NYKG)Y&z1EA1@ z8!~@o*^-ZN_A=}4qO>H>_^1GN2e5G7#=m)&fLR!$`;?ihh&CAzq~tzlWQu%I@Ed~E zhxZFd^IqO+lp_t(Z0Q~n5@Ki9wgCkc%h$rf_6;aNf;9oH3ic7Gg@}lVpy&n^YQMxj ztxYIj$$d^#lP7J|QRrX1t=Xi}fT04G9|%mObKC&FSX_*;D!Y?3?6|SI3JA@N?CgV+ zGoVzlt9T6SLZ7VWv8#^0E%*&UG_0pT%GhNnx0wX2&r_(s34opSi#u)bECRqED=NHB zzM0D2!9h=c|F%Tv8k?Jg0!?0C9#D9;<7m+}xPCEExLK94llvxNu#$ahlyCX;!JsT9 zzP2g@0QfmO5b|lLt2?{8LVbM?4-R%DXZ^zDa#sMSi^G{(Smb>85Z!9kYPG%TDxW_K zsKQiLIKV2wwxFm>9so07L{BlIe_EAU@+m7Q<@aMf(|eXSu)hscQHESRX&6hs=sYT7 z0zeB)$CJhDrB)U?b z;?qFSBud)`r@dUp6M3@M{e7RNSvTR#$;rv;&fdU^ZUKMy+5db24)=}fBW)$ z+oYWUqE5Ixu5THrmqdaxjFGNxZX)UGYHDf_X!HNvFc671eMEeGyd@u=!goFFS(4#| zsa8)S2UmrKg~9O#(#BfTwts+J^%c$&FGB=_OKjggst4jrQQAp+Di^?118HHiCBRq# zM?ev$V(X5Vt&U@7Vp^@h?DO@i5RBjEqo_FkY@kAO{(thL%?G@Y?34 zYnJ9=cHijwJ`jHZnBUWrpNw$s%B9KF76Ne(1qDTls%>B(TE93Lh^J5!2M5pyxhE15 zG=verJs|a4Ui>%1M8P(+pCljzU0Kn}3ua(AS6@E`;vD^A(YN5K;LHOY{pBSsr&*W` zR0>BywWh8>7>Fk~z^9Uw|E-As?}K#V&A$c)tb{Z5IED{|-nvFEh|1pSwyT)jV9R^T z2w;78DzHvd0#hUxXKTuw|0-BJGKrdH=t>l2$2c5r zXlST4juN2yg4FQ}On@J;Qw#?W8^>yv$BnKxz#b?~uI>kvj+(HOorZ*3Sj=VxS5_8W zp`h@)sVo7+Dp?Y~n?M;W;lE=eodd{Vz<>ie2psYdM2{&&iL(pF8NVsCZW6f>!CU>Z%4aH*zl zzZLczsZSIkC!A?(q+d8Vt$(ai2xiU^2=0RqcIY!`V2~`-|Bn$;KO1nW;J6@%9VPn! zQ(s+KIpu8Yd3j?!APKyflR1rY3q6?(JuVCd@grpKFl6g+6BleAa)dRo2u2ka76LV2 zb@ixg_3W`z;b;5>EE&H5l$0prjk%VnX;v)69|&v57`L_A7FV0S8b@;98m`c2Q%X*K!)e$?CgLtPFEiRN36f! zW4&~GYU-^sFy%mpmESKI+piLy%BK(H_TyOD7s8oR^jaV$7#YPVyM-WhYa?LirCfJ z`DWO!i3y;>>;C{wPzMi#X!i1cK=6NZH2(Cdu`xgzZXFdVFg=lx=__|OFh~RB){q6$}~Ne;t>n z%K^w66B8hj28-Kl3Do~He>&6E?JgyGfD{!H61o-kO7-G$`3}X=e8kMK4;9A9^~(#m zZV)4(&?;RHAj2Hrfa-EzyR>|n6jea_1Mc&Zly};CZ}z#cFs^m}`}glI+*3C%@8)~I zZ?~tX2M8hV-2D3W>(7O4CpI+$4st~5Cg7}rrvRZWv&TUMd>90}R5K8N05f`3Rg|{Z zu42?C&5(=jOqneiC@O*7SJHqYf$pi$G5YS62TDkNiL72=bbu}e+V02~Kpn7fYt{RB z2a5qpVxTlcqfH72U%0#g0Z&45Bk$IxD)drD9_-+tTsoSVkkH%P`+0B`f?$cY;z=VS z2nQivLTf`cLscqlL^PM`q>LUj5> zQexu2LDF27AojSo|Jk@Gx%)3(w-1yfR%HrINuw5_;He!OQ1DbhyGKN4WMqho1Gqxs zvl3WL@Q_f?+9^vu+)TrXK?v4BGfRB`2N5q=F>fd|ThgCDOOrv&a}nsYfSebppN|CV z1tORXNb+tyJ2~9afU1K3m<Q@M0C@fcnKMQtTpun)n6?IY80p_p`&gl%TRr05trr+07%I>2kO^ z4N_EaEca<1GOZqj%=yn;Dw(r1fufqaS#ixbX`YBg2Utedd$Z${lcv9|ydZ1!7B{Pn z$>cr>as#=|up>7`91uNu*C~&_6-{UnV#a?QW(L^pR;$O;3gCEB#4-HzOEVdzf}^tp z^(o~qD;ra2QrlWN7iZ6L5)Y|M=(~lQ8xPTc3_7u%kI{@ZU{bg}oM*86WfJ=z0lg^l z`Y%}gZ(bFc+u>@!rvpWS@y5Ap?$Fub%8mDcX$`|qjiif5fh7Xw6sG1vqfN%}#@k1p zxWzL2?tg!Rc#t6unDygdSW;JGD_Dxno=-FY*hfy(| z3!wtTlQx?t$~mt)c0vXqd<;#VR*27}R19=OMAsbW`RBSu#??wSnxuR8jRWXku5PDO zS?&ydpz_wYFZIP@V^M)b!ai@z*yc!Z4jSc~4XC-BPuWUQ4+hQDs+% zT`T(BQ~m%06z_y=QshKr@$b4G(yR;`bB`RZc>|a6DoPqn#*U^UD$TOc72KHJ?biy; z8~oxpr;z8sQ4@5$6#g>tHH7y>kLm8t65!+yTh zV2khk@|8`#)tkwvzzP-}t?eL+94?sSraqDwS8UF}g~cw$DD${H9$N2m7OX|p^N66< zP^s>c6)4)?eT3(coJ(+VZ}ke)hnh>Np|TSm^yER;(oQFn9z3a;P%8fy6?^g0&!V;; zkFVc;X4>#{*jZ99v9Qy!|0Z=w1~EDRs!dXt5EGL=d|8m9Ldo@>C@n}XU*UFgAzjbC z#ppdXBOC+7P*gSw;;>xnzQS{K@4X~UNk1$3+lzSwb|G~AFlfRuM8SW%CKS6vzWQpwKlGi)mRBFC)JY}plby3+0U4=A^*9eErsj&-n!^eP8qZK@$6rmTHX>d+r^r-Y z^GG0|geRcFD3;C8-=e~7Qpv6L4QptTrG*CB{Xr959w<45eQKKBkGc9PV{FWq z55)GT`825$Z!jyr-sv$iS-}WV82D6l$JORowWRwI?g=ASP% zh@T>vOZ{l^6RPN+95Czgm9E99Hk>Dy!7p7WCT+1f3wBrCiM<6M3GT;-BAprHdej;` z5cAq^jYSMZl{i8dimRE{Ugt3pNI!EOWLL}=s#$g3_^%TO>XUn#w;$+pXX7s zc5av9`&&F_iO+2xb7qcH(=JU0QG}}}@eUI{Ce$N>|4B8{8y%x7Sc-PMuA0EQfLX@e zu)Wq7a)i*VD3c?TI1CrCF3lbiB`-FfOka(!n%}9|)C}gho0&m2tTmn!FwmR*yytC> zhQG)J{aKH7mKo2ryS8bXg=~!#R4Jjp<%dT+6H!3RgU=YRzWwNz-^MlgVcb+%y${B9 zG{AQEuHL$Oy`X`4QC2pDQlYBp<>aaT12xCEuC*PX0}_&q{gn47;ZLlEwb>)i5b@+r zEXmm!MIBxQOkHko;cRXC8RDnvJD+rp4%|(YRD$A^(s$WMD_a*wjDspToF{IOtWHb_ zmX|X#blb@HyR)f0?wy2JLLYZ3E9j*z62OdS^Cp!SuMv5{d~9Rb8!9WQ6IzYTs=L<~ z?U+zI-t2w0^8K(1t450zN$25z?}=U5_zlJW;UNttyUE-tT*p^Qp@;ZJFC>{TdwSWnswd|{aC2Zta>sl@9hoj+f52?NK0`g!%{un%=$R;<$L z!+BU&M$f&>mc`=>pZJ8o_-)E-bJA%xiKs54|f$+N1~k_ z$vsrzWj)q6T|KQASo2m&IY^=-e@@M}6}zQS>fK&dl>qDc;hH1r<_#Sji!m&+J-+; zwiUGbJ%t{*KTq#CtQ7IZ#wFdoSUPOl4y`Xqc{1=xFX;on&x7fW#6z)TV@230#Y|6m zoRiFegiozx@F`Yoj&&((bnG~>E>cDemlrZAp=Ge~qR2qX~+ZvLh?O=$}Pxj?1hdzG$eHPE6G7{VeL>TbXh>Ic1PM*JZL`xfk;YvbJ9^jOqM^ z9C6G@k(ZQvX9o(T%ijeM3dXomCFk|pIp~ZF8iYP;9)d2444G-69z8Y*vA@5^eT_{7 z^}v1aDkuY3(EAZ7|NPbmEd#uvN0>)i+4vrsgDJ1RTv^au&qHw8YY#X|a9zH>!iD`` zNR|J`p8)v#)E)nW05!a8`^U(O-ShXIHr3}^coFxjD6vLm1?~E|;LbA*ZvOPQFQ~@# zMrYeY6oAZz4ivVrc^#mpni^xS)e6)`}Ue?7O+8bSY$V z5zgEXkZR!@xI0-RuMiCyz=8acEUp!_UF#S7XNUH=H8_++0nvECDm<;kw6^@Rm2Gv+ zCr`=T{|*n0SXM7kspmgS+?;6uh*+wvSc0`tm3e6eSDbD_D`<_Nft=2&B`5W4gJjh79Z*ybr^q`pZ_(OuK% zFHhF4pWGe4etvPVDcBLeS5NvkoZ#1uS8dZZH>ha6EIzVEwZETYO$!`*KRQBZP#~)J zo|%Ek?$Agpj32^x&CS~)5Tnl{CH$hgcHMcW%}>1z3^Sxl7R zX?|kR3LTe%XDv$_Q|-s)!`F&d%Ic)lxbp@7*+c)k6BYnM7tfLoJopOw#b{|Iy;pwy z`t`2a@)NsitrURyda{+mnuo&ZS&UNG_v_x9fzsArM0(Hm`3JK*ax1U%*c~k`Egc-b zR9A~6cY;2*bo})IG(HUs%zM@X_(5ZkOz|bknDwXSZ2~DWyds)>Ec5rkhsqQ7uWx?f z!tThC3Zg;#Z3Fln2q30^@nUY;ca{z`OnYKg*~vg#4!G_r_Fwk8M!ryf&!STP#0XOB zFDNqRFeS(LQ<6YITbDvp=A%izlKh~z^}P}<41i(EJ(+6+M|>8J@Q;|V064K`A)pyq zRmv+Wc0toJK);eZP4V^wR|B25RKx)JH|C;XZJtuOO%OZ+fI85Y<`1yQ+@QnPuV0sj z>=%PpiS6k3W+}08{9y(WfpKlfSz8~ z+5nOOfizwz)i(3~+j~|iG07tBl`!v+>~^z=|s+Ul(<-l3q`7O+VQOxpmP z5iD1;ZdCJfzpJQ?K>zN%oX99xfSY+uO|uKzv|^qt6mb9ma&dLl)X)G_5_qCA%fQG; z8y|5C--J}xMnV4?nG;`PJbF1wc!?QW=?=gO0en(s_|?4BzQQPB0a$sfm9`_F>Vu`!Tc3|Q zpY#MRiP9#3&MVOPAoFd@?`Q{`b8)&XBEu7F)nHC}z^<6~>;;;&o9E`ky_>l&Csw`b zWkTxFXbJGM5c&OJb3yM50IwQAV>19$zy*GMqj0caFj)RJfyBhaH{;hIzM*Hg6^h~) zwh_*}>`SwwYP00~C8#mz&6G4YJ#7YvyoqrS+QQLwx2BA`qt0z|rJEH*ayQS~N_42> z%}Wy%m_VocSeZ3ImjV0b?2H55iD)z$;LT@eXP{S2I8&o^RD>7aSW6I&xc=~RtTctX z8egP9|Hqww^ZUmpCO}t@qPFhRt~f18PG4a+tT_RC^95A)X6~~vh(0(uxUDT-ia0=2 zZ`JSi0_LT?t?i@cGC(SS|7O$}1V4sy=grc~`uL4dk9)*&mxt#e=#LiE0BvrCIU(Xy z#Mz=A0CxpEZA?te_VzZQCY-mx?^SHo=hJU3R zV_xsKzcviow*azq*&eE248}Ze_ni3JJmHbz>h|_ zczX+GX@d5j!#(^}W6G1I`Al1P_p|a?|E3Ng5SDwhGPAOzLQeevTRgkfjtj%@E4>+j zzk`CnO1rtbMz+iWU$=WiOA^)Zz@oB~kfTIU_Wzak<^NE<@Bd>>A&OG=%2w8dgvL_Y zw?OquB}QnhA%rZG>?He^b&Oq>u`k*8?=^Zq9-lwpJ3kGNbDVSTbKlqf zysqc-dNR&sjJV;VGD%D09%{)(CMS0$QHQ?sXHU_CeO`=EZ*!F(nfhuDDVUW!EduKf zjAs4w!MeKFhS_2D<9PdC%YtH9I0FmLQVxsOxangrvoe-~IjNc?O^&*%p?A%va)huN z(`uR0@g|p!`0hOmVJ1REYiw+!W)gZ;GZr5o4{chkQqIa5PX;HsRq4>YdqLi2yNlPn zF+#k4l%n~OUW8m9pUL_5Ub;fLFZ+cI$cnAM7q~-UBw*D6B?Jb~C@e`t55+1F5xtbgHO@ zYbQFOD|0i}zxZYIM;*}%R0aQVB8Y$uhVtCHsfYzkly@Xuo5sE7DDtDBRO^w;Xa zGb$0}^7P~vFq&!+;7tPniH}idn9^Ua$~u7bd7t?v}o69v>t&xGFpu4wFPkwxL`=A<0z4YZ|^udi>0 zE^$t74!J2QDZzF^Tr*u=&{+7`z>>%#iu0aBsrlE*oKqKc`(j8`O1sM-MMeLtZUbEk zqonys^3=&7J8UeM%GPOOFiTQeqXgq6h!uczPSH?adfxzbcI0-#aa2S5S7DRAxTQ*m zd@r#Pl!bprud#Z?EaDr<^wP|`qg@kd3&uO(@DPvm1~v~G_UMpX58d4*f7F}j0gs~+ zQKppA@sO$X#fNr6G#Z`RGuzz_ycIAQjgRxO*fVD5VVxxf!8(N#pqG zGQ?W_3`~#0zhlzOp+0||RAh8N1ZKDDy3i`G4^yb!=kGh0^5gx8#(Y3RSv|jjlTs;6 zL&stnU^b+rO5kC_>pwJ306|}DJSC}#*GkMwx3JiwVrZ#{VtAm!*i=1eRWfvgYt5mj zFG>3iSEI3zTO0ve)M2Bca}4d=+3`%(xf<8%ei|lL;SyK~aqLekBKPo7S%=;w zw`Zzl`b3@oGzy>GF%me75cd;k&RW{LW&hl;uTfY~L5tsSrpt!|mAqJ0)$Aa_fM(9?2C2IW-sF14pbITlS#$hQfZF1c7 zTmyfkv1jhEO@ovG-9EbFPQ>*5D=XF4V$>z#XxlGYGQHZM#u^Uw_m?E3bC{O8YCyL; z@+NSl5c5{I;Z`0zz`@(W&AAjCyA`S%X3F1q-^e3eVT%9pRAM3Ye0DodXZDs}+|3E{ zOD^HWK`A$FpLB#V2B;64(^2y>D8$ex&^So4F3!*E=7;1To>GZWy`Oe9nEXfov>tdv zjSp)@d^XJ`NVWkJ(^UvSau{SAZDhP`SU+ zll1`R6R1gso&v&Y(jBXTyJM4x*ncOgZ#wWdKxYO)+^NywN?B>{X*zrsD9r{ z1O11o1GGMK(nIKfulzYB)aJMeNgd zSSbI%2*eYBfSo=1fZ_$_Mt?tmT$j=zn8P#9SITFYrK$e-C~lqw7Ln*g0M`KV$uoU? z^}yJ(QGJ@D=b!i{FaTaX%cIq>r+{Vv_&4EApD5=4hI$usgk7tdWTzYkjgrBOqVe%x zqT`d0@yAb}COn2`oMDfvu9im?v7xBBBDkVF1kV{S3YI=&y)GiM47oQgEp1@UqjJ;m z|Bdu*fTg~3Mk9_=7zoz(5)3bH-E@mF(M2SdXnjxtI}N=o5EcO#f`Gun!U8R((8cTQ z44fd)b1;2eOQE}d3d{GjFFNmPHH9~*-r_x`Vjv`g2}E@Boi4EoXCl~~?l?pAclmuw zmL~OB4kr~T(X6a^qnm-z#mM@CBo6srSrVg}i({doJj#2o(mlY7L?rWZm-6}A|6(%M zcMjqUmU5h+syKNBUWX`DB0y#aS`gR=r-&{0(*WZa7jp&{P6jHVZwfSv(saGKtorPN zicX`@M7$yi<*ok#OP|ws?$W;kqz6Vgs;M9X`PZ}$Mn4)nA8N*yx4i(<0myJJQPe5E zQ93A!r6=#0o(~Wf{|8KwU-YuJy?kJwh8}Z}Q$(pY=C_EnKwgNq*RveI^73|TRFq;s zG0OJtQgvF%KN!3#mw|;09I_XX2!zyvBocfAU>E0B(J4tj^0xRgpV{|G_o=~C8%9Is z>dDvL0f4`VSlfB&$UdUPXMZP`YCf z?lt^}IxA1*3oOB4W@nd!VI7DvL2_t|?YG5(oB}@J7x1#WN~DE0V-kJO=&6BSb$Rf= z6F237JMFOr^D_{&K}@o+umHON!)!`Yl9$yF3-FR*_exqW^C!rnvMI)?|BYu(V?GTc zg6nNEnCO5D&hqlI^itWin>R7dlaM!#EG^B>LMOgJ^Ds~Dph`AHP|&|iC7?N}dY}#6 z#Rc>L%%M47zfKU%Sio5e!phedk@CrL;I{ym%IgjIcZQo18bt&ud>{o=xB&TWrO$r( z=CBc%6u=%sG+yARr}|->6Ia?YWI4IIfTJg7FvL`8=mk*^0zyGxv_E|K0866S7>w?K zu>SK4te))i^g+ARVXdo&9I<>geUbpO<>U1M$?UF7CtnRe*C21x@A9bJ2C>k|+Xi7`W91R;U*nw7!#j*i3EWsc1r zf}rV=-nn#?xGbhCMi+w}5g>_>T97kEWxpYphw2a{+zYO-A(xwuH1PGIPX5cK;quUZ>eIYSwY*ay`qJ*5lm1{;ceXXv1zYNXds-^qgyUy@`Z>M6+!^hJz7KI1; z-(4nNo#%Lf^^yFsN!J(>b{HxV3FkONYI%B4Y?QYA%Sac~!4OD7;(LC+C=w~8q62{r zKCt3dBA|QMG`Bf_?=tb&qe0r|3Qlf(?73J>&n+(OBd;cq%IBM2rzh|65nTj%i3d6|AlCu;DtN4OJdPWb3^!8nH z#QgN3yA^4u;w35to)1YjI~_6&s;STye>vFJenAEBhv6B$E#i%AyoYFeRIaLh{s~xT zK2HWE~QkL-qWMomQJ;ru-bwZ##BfyXKoEP2vVQ%mp*1t|hOM5%Wdr_CD z;Ayv7Yi=rs)B>b!dv2Vvm|VufLLn;?P8Y9=Pdo#O{x?t>XZ1vWbab-4E2MEHY8H(} z8|8S_&Hs%7SYD8yAEC|ziaJ<>xH%cng_w<`?5&Iqr#nlrHRnT$V_DFl0Z(INc)3oS zG0=*E7@1c#pJUHXCV$>jr6=z-WVcA>>y3rXAzLqML`?SJnVN8Sd|lznl5rJ*Gw0+NSlr5%O!e+RQ%%kIf$vECj0}Df@y+Ycscvd* zQ&R)|3bC>>lP_ozW;f-~;Y>O<>cD_{1{E>%V@&a1t(*L)m&86)6qdeW;@MAytt8J%7dC2TG6?ua|f}Tg{;mj z-HL{H5MC`$lBwuTDjfGYDzBg44mXgVY_ z?Vldiu%bF`kO#ZTr991|%E=Hexk5UF?2@=uBK);8R6-3qZBg7Q@7T&#VWqE`+QWyx^z5ITUn^JVmYDFVHJq}oU;OS{-D5DRCX{MWE(A?pl*u}(A`&Ec5S1o< zvE^O|e}3jD9Sky^qyADH7S@f5b$Y6MN{^B`Mfv)$;Hmxd#*FGN~DPh0K14^Kx8ln4PZ=c-D^H zQlwRxUKR=_PTfi>as32=9D)CAg4}&~mp0GsdM9pwqs*mTj$z&D8lj=*!1yAs&O6rgzx zK~aj>-tux?Uyu#&s&uMepZ7a&xE@~BAu2d3W7BMFW6u?8#ijAFHveu{&A zvI?I7R*`X)+M|+k!cU5Zx-Da=435sy-O_UP-#W*>EZIMq{A08&6$vW6Y!xk%q)fDY zOFb?nTG8@s@Xo?%T5Uo>?cR6!bj{qgI2@t3?qJ2Uw6%#&U&t(6vy#b8BtnlL?bp6q zy4{phTHF01P4+8=-hdZPsdi&(?;1{M*1`~b{iW^dOvHkern|1o2DE@0Qu?4W&)Hzk!V7ei-89ReI$NP zd_X;RXG8UB^pMc4``QYxDb~XDoQ5)T9j3N03K~X2A?u#!IV~ts>@Lc|$MLf?k{MVfVt%6#8n@RrlJxXKa}KC^8X^QF;7-mhCHkV6s9`$J_ac zS;s*cjZNX%tUC@@?Yf!$PRQ|iu2@}?-4A*%&~gTW5E#4lq;h>|d?B{oK&dx4wjfj1 zeXO>j5;;xMkk+fGrho)N1 zMifDkn7U?}(nUy2l8er2r06pkXt{qHm1TYXTT58GKGT)rR*mzV38CEiZ{0N{Y?>7^ zDwsrd$$z`PcEYaHuuIKK+!{vnqXiu%drD)PhI!X1qt1#^V%~~*V#JbkzNcn9ASX-c zYRubm6`Xl>vWwQ~@$d5F`B%lIPT%6sGJHcK*FzSP&+DT^-&a$l$>oMFekT9IeQh8F z$5Uk4J9{N%D2JC15id+NGZuB@F1>x@jJj=H@_#%D@5%ilJ~azhe1Dp*8uzZNrDB=MjpCC(r5^;AYibMrR96^R&c9zlfmZGXHB$0}=u`8A4`hd6OI z!Gu6_QP2D9Q_YvJ`LWL;winhhc6MiqG=>xdnA7En5OzUJp*+5I(*2euy%&N8aRzyS zayX>6;^Iri-CNpU3Z$VaFnnk{D%rE(xjol*{a|sv&8&ryZb(TluZEU5@98rn ziYfh;1=^8kl*Rk3`+wb_sz%`BDsL{3FHVfUKN#6;2psigu5zsD&i$0hR8Nz7NO{C|?;YMP` zm$Vah|5i$|Kh1MQZ09BLC>|VS*Y=rdl|)QFKT3TVd7nOtib9j^+Lj=>X?>45OGMNeikHI*Xrh3Ei*CHKt1cTPUC0a`Qel%EQ z#(cN$v1{t`)DLdl!i%4|=?46*u_Ue`zg%MpSswC#gS{lsaja$|{l&@Nox{RDN#!TM z8MRIH){oPW8Isy^pqLPlYju3Ne}$I52_0q_s_Namm(&@cn04JL=WJzk=QB{Ek_G;! z67{8bwyXt*DEeCN&|Rpi5j%g1v|A~jo5t9RHIW8^*mk^$*{_`EXNzTD*qG41N(0L)rPvcycHcbW4_;dE#>Ey19Lx&yn(YV^n6iEEpV)h$lpH!p zkr2K{zQBlrP3G40$2Od=>dw6cNzdLHZiPpf#TtWdpg(qZ+lA)too6?`fGHKU7a=Fn zMMQ$iW5HYa5vbi&l=JaX{e#b(^Y*L=8zuP-ryE3hd8Gz3YwY;|n zv~FycuszjEs5~e-^f=L*e)bhrD4v1{Tt|j#skCE4+x(Mq_gGw?z8%;@9kk*Oc1u0A zFXK}M8g-&%Y-Bq2=M#C=^}OD`dCH~dyCiHHGD|RhgrLg%lzX-_x&EZb7sjOwIh}#m zYk#oU)19_gDaDiiJJ-FnC)v<9Sn?`VA z8oAQavmB#`MgPuezydlgM^yu8-7mH3SmhMT5I?OTPrsE@snRV zkI@YTe0Syb?%HLb!s@9-aC!BO2X)(uy;2A5#3T8W#L>JuXi{b_73%~Vh=agRtO1;{)qP!MhQ>$$~-o(b_L54)+CZ4wS8S=5?QBg#Ym)j z>t<;vRZ}cn3cvDVLrt$5Mu>g1e%+A~7mNKu#c3^A&GN{@Q%d#*El0MyxMva}0mJUT zWBsdpvaZYda02&hdVu58wLQn0?7Y*3fzJ>ku*?eh=QCTs;-@yBQ3eGyq`KhU^D>9~ zT(7DRktCXy7{>TazU=9jO{LM+PtR!7RZ#6Zi_jld)@-le?)^5BY{JjQkGB=eLunQu z-VLj_3H)*!_|X%%rJJ# zE}or^?31VfXJpdpaED*%>E?KoicT*v!<+gw?BP~?=Gf`yR~z?RgcLki2IB~_=SnLs z%!SBZebJT3-6SBoQB$9A!`Yp$<(GIy4Bf%Z1KbpjsY?5pI9Xy7?mkN8g{Lx$!NYutz&P}Wa(U!|Ew3})P2{4u#8@|*uA#I?JWz|Bi4-(pCHjN(XUo5zm z3oOpg&$_UN?n%0oAk|b`kH4F@ZV9tG_)DOq-~N>08rfm7T%F)MWc zE@rZ^jZDeZeWe-0E@5B$A=m}blTT^^cG_ML>BlR(k*n`lSV+76oz}YrH-HH9-5OZV zZC4Qau}2wwm^PQd-Y22u7MIRqc5tkgm6K+XcSnz=_AQ5*p^?6j_gd7!NFJ?MHuq09 zI%^VAaRugCwv01Vio#FqAA3xGjc_J}JgE=EY$&+c-{9~?T>y#>f$&dH9KYkx-2b7X zb#uQYa3Q~}B4R{P01@e}l(b*;$-nJGwyj@Se*7#J!{1C@X}|WGL_6b6#Aaa{+sPlu z%o>Evb)!DzkVwAzhjCNE2IOygI}t)?KBkh$YOrx%y|SZVA9Bkv6urItU*c6NPu zbK%#wN1HndWl0HmQJ-->Cdav8#6=5=UIy3mH9}+vDy-vGWP(Qe_?<6e*;!UM7kI3) zf+z|^!?+@o&?@#Qy$4-iUO-NO>I%K5fCzgN@|ktjxi9!9mds}1_2-C{1o*wOi^}Ot zmng0*8`bQ)<5i@9hv^l7mP6F(5Wf%+3>GkHIrllw{hV`N#~)X&T(0Z)`+h&)_vbx60#ub{4(_AhM?yk!P)=6rDhbIBN_-zp zx*d;XJge6DXNR+doCYZ=Y4?E2Pdue?k=Aihx3_R{H*qp2QMYt;aWQwgey@2i3CVF1 zIjPGU9$iztp885FL*lbb1{}Sy{E-^E=lS-U%Tj)hIH|zHEAf_=lIJOlg6S`gfRwy~ zW(oNtiI>%MCx4%RY_WR&Ov}sevnjVYdZ(6ZJ-w%Alp79Tf0a9Gw3KkGXlX5OO)Pg! ztRc0qpnw9`LgH~mD2w!}%xOe^A}23zuBXH~PY<7R>Be<+ zS=mRaspc*&1rHzY4yi439Qv%Mb2v}us~LB{t?SstMCrSC#>IH;9p##|(WXRgP0d}q zcTY@AP)a-wCVpjxuu{tD>gpOACR{rH=FJFn zq*PZ+(Fbek=sbJ&YcX{Jp=2e06E2%Cd!}hPu#w zrmrEID@cmP)phY&zC|!SUm!*6v^RB~*<1B=WkzwI@}i=)=4OY@^_7jarD$?-$3ZD2 zrGx&T=4NMqI+dJKNr;e7T^MaT@?-5_Xc1%%1tohO2dUUU>G54%cj0;dO+b zzFu5jMTP71>5g}f$#?Hw_VQYN&UbTgaFFoh$H<9y@7~#TzOCu*j;%30B;n-jY@n}i z$*X(qTIcHG?;YE>GcYi)b8xi3Hpos*9T^^$A}w*7>iX3fyY_dg+nR6RzI}m#fu`55 zUu5`}f1@cu+*g@Yjhm??{FKV(`a;vq_SbwoJZp>XMgn#{?`||56BVtXI;Cu8X0~(B z9z9)MG2hL&+M&hq@1vU=Yk{Z6b)_#IJ{;N6p%bH6@Hu@;1JJ;9#ZhuTrEYc{-?`)YMedJRNoQ?aUGO3F!TcVx#z&9F zDny?KZ}cdnScEFu{6`aG&h%Yg(^VG%gc*!laVpr zt=(k!OPETcSa3*4Zbrsfdv1TZ=Ypc5V#HUO*QKSaKR?_*a^wi1J1vcELeW%7DL5=l z?bPoFO{40&Qu^Fx`r;{YncX>h0urRIMNcR`TIBC##_BLe646U+zJs;aG*4e&pNvUN z|LRp!d;8q%?1rJaj1V*KBO$fPrhY6asg_dV$B?8JI#X=%;NYG`VnqzO`2SFbV6 ztEjl0U55jc^Xk>hmoMq*=^q|EdgUO4xDWBt&KZ`UrU^PpS@+4GJSZ?QBKMk!iHV$C zfCjs!rsjx)po>sN_=2Oev#`U@OOB3tiflKntj=(9dao~EU^W}94zRMa0x(3@nJq3Z z*3{JaQP|o})rK%Bq_!62W%_PyIyyQ^B&i;!sIIB$?CL6Ne1vPC9k)y`4rsI}E+~+a zk|GcY=jk3F6ZKkNTkG!XqLfHej%TL{x_|%v1Bs*u4{AchH#0m$-^B$5DVUk1WM^}@ zk^v}8Ob*f0d;NTWcWlfuM$y8|Y~`tR_H$y1O{RIAoSacyMtyZFiqFp9 zZM2ZNa;1$xc+&~=xrHw(2{xtYQpqhWCr;eFc{5XZ+-qrC)M@w&3S23cAM4F1=y1tV z?DFNyI4p#MqN1XCp8Ld$w|a>t@qz~5k{IsWlG}rS?{ol`{>|g;2kQ-z?U@=~&CSOt z16V2dS`%L_=5=8A{Tfrp68#D0F!}YVZ9A`K;{CM@3=A|iBR?3wIEDuDGx=1Q?DN=I ztikKoujhyV6nAJC88w-4ci+Bu5^wTeM)5RtV9nrbgEICbqxNC)tdyBqSuY3iqo3-@ zC~V4rh>(Ti4%RSP2Rkz2r(Sju+DN5!8&Vd+vpe6UIW+JwBqXL(|M~d7yJr1oo8YNa zdtwig41a!n_H%wQH7TB+aVjg%9rq z1aBjmiPB(~K1uR^PmAht{%!At*~05o_ma$B=B0k5L~^H%0xxx`uXQ`sYhSg&?>a&7 z6=SlupW(Uj%~)WUhj7lo&0FffDJUo$a41k<|jV~_>3X(pM@IDiv5mr`K z78cg>yV1Js)wOKx+|Bt0t{6o&`oLn^Sb#HE)w)DQUy<$6pc>sGo6a)!_kMe+Xt)d& zE7HD?E3z#}mK;4oGAz#0zbqmtA;Ed}Y;tlkA1|+mNMG<#fj)`L)uwZ6&b-z(Hec)N zI`eOY48H&RRS}JFKkd2Yl@&+9xFv@hZwd;$6PJE0nNX1*<)17}M{oMx(sI##x<}jS z_JfCmQ#EW7q_K@@hRv3|Lh;`$@;`n0bdljnZY~#}h`9I`uo0YP3*F3ps%vp1+GrC? zFOk&z`Lo4`d%Fn3BFDJSoqL^;@klwHoKeW7uiP^$E6Xo*a?(aq^GDbT88-{1jMRqy z&A;9DK$7wCag_v-Yvmqu>njT~A;*+RJ1cMBl9sM%%h4Nm@zT<2!;*X)UAXmUY+z`J z$M`+TL<0pAQ(|;(`mYeH2N@anES00Dn2TI$&mNYwOpqU-@l1 zntOWULPH(KTT?%OzQVzgZQc+y{`)tTg!k>+wl+4{VLyo^MK-+x%dp_!gJdxz_Ukgk zpd#5>S=)E)aCLRv%l!EtUj!K()3ayKa&f5~r_j;S;naWEj1_k5I;&UYP@?atuBECP z8W9ok?3rwG%f9{lsi>%!M7>gyk_LYL;$`R8LR-$Zj932|}&wogKvb>7Q$FZdMhOI!&D*dduy5ni6_vx=Lb# zh$lCnH^>!O;C>p;7k%Gi1?=&*QBhHc4jpPr5RDbR#m{WEGC#6o_W?oQ&GirW_jrmV z+`aqZYYdSgkTPrM8g7iIC#EUJJdKKK>**139IVEnbwj5Tu%dKd(k^?w!LEZ6Y*IW#bI@V zXt}g<4Mn||XCpbZiwX+-{QYOTi|y;4o+L!8N=hb&=VhMg>gobCknP<&{ykjM`XyWbL8wCXgM+NNAx%3niIB@)u)qjF28X6i7 zeGU$nWkm-*>4#dKMXywyyd3=Kk)@3dR7Lv3ho7;#?KyhI?lXo$@yetnF5_1rF0idQ zRzSzth=`QT%z$LJCva9rG>BndGXm;y>o|T&mMmqK(It> zD=W29iCS zZ%{2MDXiAAKp`ES4sf2`WDFiyuY*VV!8!o*R1((c{9sO0Q~-j?wdt~cpEcWoj}K6~ za>~kpX+3>?24=qx#>=a#f6)L+N-nanut3e>tl0*!wG#-`6cj(l#-4?SzR1b~e=w-| zBYE<%=&iq#y=BD^3OK6f=H`ABcP~-U(Jcc~?fc4C=7wtV0Ve0^u=(2SsZ)c4POE>c z*!e3w<_586D6{(5X@JvAN8Ww;fj~-1O0fCw-@hL@a79{rSK(gp_-@hq)5;ywZw<>m zT8h5NXUTe+Y%LFkeEA~F7G8q;#;N>~t=%9T2jzkWT_oTp=h0tz8;y|5uw0fj^VO^M z8Q(1h*98iRXNqi#8!3jW?a2leUYcy-jWIkj($WtaM!qG8>QyqM7MoYHDc{5R zJr9f1pErI_$W%vra+~gf!mws!WR&>gySc!`#l^LM|9&V1voE38dV_Zkcb_-?8UGIM ztHVjN*pS;>lc)1)e%=Y}%=rAPoSaPkj4_bl(Qols`x)G2jN&gy0Bni8ynKcV+C@%k zs&r0lKtLTRhvS!>p+$4}xz>=#t-p$02~U0<`G1l`4+j^+{3!JF^bQ|BoONMf&f~#@ z2Pj%XUUOYtT}w-ta{AGuN3pqev7GqE(}Km1LDVbaxm3WwC;y}L^sSb>Cr+Gz&eSWm ztGF5rd8n8u7SH}5I+`}Tt{fV^`@T$eWeggTTJn_^OI~n)2$YW>KWZC{Jvww^H~F!z z#^)!erU0#2#*yIld%O0dtievv-^I7q7oZCBJ8iVJ+uy!@8x=(}L1$uaUSq}$v5A{C z(jDf|el45YDjh_VnVqdZl>>n|NU9N7>bq5W>A0$a~<8`KaP&pzZ zBFgbXKdiqc%Y;u*Pcf&+(1?6K*b1#qxqL zw%M|BCh5xY@{C^|k}=9}d`Zv9&KBV1eUap`RH5V-ns>eS*YNOTdOr43r$&RgDqooH zWA4fcIs4mdASJ6A}jF)gd-Mko=t(3611kSsv%c* z_;-6QIvLcK8so8?QWnE3=!9EK)AI6{85s}jJ%iptUr^P)2lxWw+%PwB>NQjF|gy*=)V5+oTnREoTmJbI>Y$Md<)ydDdehf{@^r)5( zbqr5V#zjPEz*0&~%=HNKz~_LGMV~XsAhZ_V)Mg9MOiw5Fn2wGP-*>1;&6P9VT4vnW zJUo_PT)w}#`aAd4t5<+MDhX(Iz+#SvlWyOvnz&eo?TMy0xJ_+_Mgqa5@i`xN%w*Np zhP{Kso05_hFww(HPFX8Kj~=Ni$~tLq$N{(t^7B7oTa!6Ne@{%fxVXUj+N?``!Aa9l zQ!_F<@ag2qlQ0jUyhV}eKSxK~-45B_ zijRbdCf&RD8kRJaS<;fX3k9B0m7QEl1OAkuz)0Q1S0EJOmPY;S*Du`i)2h@>eF>i( z1|U2Yx0a$fuYDYGf;7({WA+r#EZaZTmJ{opq;b7Zt-Jd*`W88Z;Q90CRi&j0O0EG z-Md`2rNX*v|E3yqO ztjw$1fJpkBxRDEn4a&+uO-+rfq@q&S)s-h*`4wxAp1HO98`9=47^$%Pw5poLpRpF8 zNov;1IZX+dX4L{Nvx@}je8 zDdgqn56yWHaxdS#KIQ%l_^xs{QmV-=21Dtr&+@f}6PTQ-jVIl+6A%o|E?Fbww+octi{QrP>v<#Ta z%5Xt0FyfTaA2|Z7Fk+u`s0mcH0K zdx)ZBGcz-xM__z|kHn*x0oCwS`5=<`V;K(}!Zmi-xFw3+ra7xCMH+MA`ol}dXBQXY zIDz7`v9V2k`wKa8;lc&eyl0;V-j$X4&ehQRg=VU!Uy+iE6LPKp_z_%;<@oXAIPu4i z|AaEsKUZv2FKbpsp#l3aOY`hsL`dhnJRTAtmG9L88iu;?vC#6hFl%%A72!)wwyG3cI{G2?Raah z(4D^5Wva_{d3J!P-}r5b?)~%UUCVPrhi8NnU}!)mN1Rc=5=_5X%j64o2Q3N>v%+&1 ztOF_tPBq*jI1URnv_`LV@=VcI;by=Ng?$w`I%zmjHdEORWdsn08xcv~b@sXUyXVh! zrKGCSf^IZEhgpa=1OGZh@DnxwrvqmhWM;yT(N*~bC#MbG5mq072h52`le;4!wi^Jr zuw-G?jqHfz?PXl~om&N>%t1k_p`o$+AU*H(&j%!AWn_*>Po2w7Cc+Z~Svt=H&FY~! zc?AUl+b+L{gM}^BYZjg&ec1`7_Nh20eXw$z*B3V;Y#RekB>}vuK!*s0A<$S18i^2vOzi3`h z%}Xs`$ya~BId;x8%bEEB>APNt(NNZpBqrZhngw*6S@MPvnNR-u~|Xwu3cQ zl(D!S`#>Nzsl=lp%NQB6JN7iPnmbTwmHmhjWT(>;E+1p`eXSbQSwVpmT3#~*+V=4q`-Ux{p8Jz9;wJ%~`Fwn&QJRCgO{|_5+ z_O6!|#Yee+_;bpaZHQ*`rGI(!h|UZ6U|inmTfPH7Sw0R@7%ir`WuF&NW6CEWko-^Y z?>m7|ZJKAu%nyGtN%b`KzByVoynHqwR6bQ>6A@5-?RvL!Y{nT-TPc=9-`d~;zE8jN z!T601=ecNw^zTMz`H9Bhr80+8jQICo4Z{ESdl-Ir<^S!mf_dAvZODPvwP_va2Bl&1 z2$U6322}s}QCMEiu!gYk{i!D_UFy(|)BROd85uZAamqGGx0Z>{XR=rGQ|zN#@mH*cY}gWiQ>6gS^EwgK$AS_M+f?M z^r$+M9P3l)aL~cKmyAtJ@*D;vu$?tl#WtOw0N_NK#k+Rxf?E?15Wq{H^XAR@3m4{E zl4W4Hqql>A{>=3Iw!D-MbViZ)5nWsk4!99hQ&S_KVq;^&!^63Z zDtib7usAqb*}1t)OiV_)y3f%O5)werO6__}(RW!{S#i|hpTiA-p<;Fqe zq=+=oh00AnJxm14|M*}(K@c8;v#V=w{tcDvudLMj(DTHt2^k1SPAWvj2|7w_s)4C` zdV1nfUOw=_18Gak3=MXJH^z6t0O5t<1Q*-&3Q3UO|9~jd1pUO@TZEZaNJv-C+_t;O zc71scQ4Sy%in+EA2V*v~mQCVO4)M#jyFCy(Y;tn)$uZFhc*!Fpu9F=XJP!c9&-3%c zui&wOHlxEe-sE#eCI?rBQo=*T(8MGOx5dl~=k$M-h=-}ERl`AZ|KO^og!D_CAe4RJ z1iJ|J_Vjp9cH|Lef#8Pk96mHPsetp;nR$77&aJG2Min`~L1`8gm~qE2klpz8HKuB7 zv+QX-;x=?;D1r~h-kU3U!4!!@CWYovPig(RkE8ge%`Oesq@NjiB5Cm40m14{({~=rS2BcWR5)zIr zJ{NLq(*ijFLXFsuAi9Eh((rvMGA9C;af*SRo&9NexB>)tUoI#NuYdr|k)pD9NGib> z&l!|Pz_~7y5nk2&=^SE{hzn$}g z_1m{^*es%Jw6X$Lma-d?^$47im6bvRDVYr+blX4^+0EzmdT^9lT3fC8_Qr1(lNHU* zItUAw6>JZ2B_W~WB+ddH=FkE>h4<_$M=(!0>f;FLrstp(hgO!$+u5b7G5(*~H2Tqrwbw*e?mi~2eGLKEi zn~aRpS;-2=DfHhtT;`;ql7PR#!OlMHOhLL6{07U6_ZVwQmXA6aCOf~duxtCa;49x- zTTRc?Nzmaq&I(&N*4@*?#Mx3+RlR*%)c+GAFGmN5<9>=U+$XuYxrK$hLASsH(DU&l%o8ZG<=d9u9DzZB zUP~F^_h~>8zBAl)Nv?3M!sK zY&y$h7w8Vq1l5c<8Ldivt`fa-i9NEdtqu2xV&tYfKsZ5Mpg-Ws&d&MpZGZgGOo-d0 ziNzsD7+9u~PR!$$AMJf0k*CuGiF$Hq{p{5Msh3YSYly+!&l73?e+k*YUjKXlz!k6X z0dXDT8;Z8C_$sZ?UJqXv*AZkOOIRRYz|5%$BXxL;Myt7J;{OQc17cNy%G%m87Fe1) zOEmXCyr5KoUOyT$@VlCAeGf6%^*$}Mkb7p!)aIk_8$5mQ|B`3x`8?NWHaxkba^Y?g zai#{R?tg#mlT_5$_THZZ>0KlVN#ZL|Zek3_@$9_GcJ^(E|FCQJzDa`rC9s^8t4@Qp z)%fhfP-4>!94Gj3w^XvYFJ8RJ$vGMP^%OJnU9XMV0ZDQ3Dq?hZ?%XufH=^tl6BC4t}y8EY3C?ykA}9jiA^4j@0eit)VhovNxWXrF#3wP-FQF}KMM z-eNGq5?kpF|}lCdS2m9bG_Eg>1JrH$ z1nGb$fwT{4k_cD=##oXZcam8CKD)?YQd+t>FAkTTm=8KSu6)Uw&uko1UmK79Cqyxfn1KG?$6w!*Y#A6T@FJjorh*sZ(}a}v1fg60Wx8# zp!tp=C%}8+f|IVI+iRGckAU%yyQ~5QfJ%mXdeB|OBnS2sl?1#52?+_zcHIA<>eRm& zFYJza9%6i!+=4lg6D%xfsoMV=lYqA|JUk2mC&0&dO;>kybrmOxN+Rm4UR$w!KOlYI z0|}V3Q&YWosumbL}4z{0iHS_grJA`7HnN~0m5CLXsWf6-ojyYUH!> zpwWVsh6d{<=JiJw1>e|c+nOS0+rEyO7bD*dzC|w}3#h~6kPrkS0HYP$GE9o$3Kvva zzC|NFLcYb{?Vw7cs2n(=M4|q>y{V}wq|S^|0+3&fF`W8(dH7+dsgu(w+rv9v7!n$5%h-V?EK-@Sf15ifLReT^jV7y=k$?x9j zuu{f6d**TLmbw9(hNd?NEOZED7veB?clUl6PuOp;uJw%#@wLf(WxK&AZsa9JBl}26 z>G-T8F#4c*7<(k{G)x*&dlWuAR*#sBg@>ax5b2rQq>eQk;}j)`22Qj=kO6hKz%r-ha_k?b!JBsec2PP20VU@h!-4j*r@~) zV*3srB*u|rE<()1PyoVildwI?okuYi@CCFNmg(WqMC4dGIq^@Qel$K0CXGXSSlktN z>+YV;{e9v`wvwVE?1ukt-iyG_BH}T7sqgwBM#ibpQ322SVR-q6B$N}yde!(aH3D*g z@C60wjm#5l6*=SKeGkAgU|_7K$b}=|!kL4spD~AKTZ^AX6sgMg7Rv%m>P1FGykOi(GG-&t+x96OsvP@d+$uS=rh@ZKA`l zQIeA-NiX8CBSFF$vEuE*$0E!J1C=6$uedlnJBFY(sOGt_`?>ocEZrSBX|i9wyw^0! zL-!b^7`IyYnh2b<=k#Y67Kp@(JI2t^&|9pkpdezEP*d|j=+R#wNOkovdYSF05&E*B zp)%&7P>}Hc|SkYmF-UXesh-^rZ zK^fG1YH~6#C}=M+i^tXz6|I^Y-V)=7TAYu{%7lNo63xh}&DHGQLd~~-+yu;F$y-@v z>Tsf5Q zZTL~t#QT35P~D*y{I}H+q=<2eKbY>qM_7hl5aDyg!|j9X@>-rXK~RW5&RQ0?4ATUL zT1GMOl`xVAae$UVxWpf;WX>t^C?tgZ#{w^AkKnTY8wHZnmR?%=oZ>AMV$G)oxUVC( zjpqm87oa|K*b>3XlO+B5ZMz7NzM$kF4n>VZgu3WQk4V|OHMO<-t9*@oxMF2lUkXuD zyN7^VHQ&nptC#Dl@{Q!CQdSYkNKl9G~} zQ9_mT9_7e4>h`ll%3tG*QazpGWjZ_rz5nD%t$b8p8(ItigC0sA7zpcC-2VO8oUXJOb zSFc}_?cXnqu?GxVQpFVedbf>b;aH>rP zjy-~jHyCEPS(=n&f~Em#1S6l9eyTcv3a}I39|0S)x778f=0N@T1k=WVDUyQQwyQw9mpRhjbfiqCY{cuJyjuWbHK507@`xOS zL9hcbsG#0%g}jOn;X*|vG|s&VzLZKYG%4TUt{o)s_||F-($dob4SRO(+zGojx|32O zWB+9wO>^#RI6x*Q%&u|HZf=_xLCN?N8X5V+&i5g5kESNtf5|=k1yDsRg{nA_AjBB6 z99&o-*iU2K9@Usme21kp;WPvKi)h#6)5AjDY9J@nSjIP41Cd((O=#vdwYBygZ!YJF zTfy7c!x9e$67h6cHeqsOVv?(QI|m!N-08e$Ybk1ha@R$F~&J&8+=a|$Z}EDx3F z|0yX;_c+Da__$h3CXZ%I)V$Iw?f*qFd~By2DlP^P~%&UER+Em6$&h2aM@&8DGNft zIns(VPx!9S$zYtj$hI3Wi?IO=Jo96a0v^;}DmK*AmoHzQKc|OKE_1iXm&7B~z@_6l zm>-9q07Qe9Ez1W}x6#*+lVZVu5m?PJ=wfEG`iL`OVPTz}omdQviGW+FU}AmWzO3Bb zQ3nhz@sp8}%@19}Ocz`|43*2u%4P>W*vpIr4M%1B-AmHa=Acf;jvWgmj$K`4rL^sN zrzU2G!7sccCOMF8KYH>c3cdTvm7KJvT<|gbYiniZK1;MNr=#Jj9fr-J)KXRlo=*%ItC;WO4lr|?xBJy9xoJX_Nc9PRC&m=5i z5+nX1S94v9m}*1RSv&EqmV9-7DpW3W1H zsTU+vZEr_4w6krC+AgAmj=$T-c86Tg!h#JVnfTWphA$V~!=Ssx{li^|FTn8XzkN*9 zuz^*x>`r_U(Tl&j`~KWFQ>vgEYdgEo7WmIQOGfJIc|~sB v`jBrIuJUL2J>hY@=HIvg|LO~f*=>>YrxzB98gxD$ Model Configuration Parameters. +\item Select the Solver pane. +\item In the Solver options subpane: + \begin{enumerate} + \item In the Type field, select Fixed-step . + \item In the Solver field, select discrete (no continuous states) . + \item In the Fixed-step size field, specify 0.1 . (Otherwise, when you generate + code, the Simulink Coder build process posts a warning and supplies a + value.) + \end{enumerate} + + \begin{figure}[!h]\begin{center} + \noindent + \includegraphics[scale=.45]{images/extmod_solver.png} + \caption{Solver setup} + \end{center}\end{figure} + +\item Select the Hardware Implementation + \begin{enumerate} + \item In the Device vendor field, select proper vendor (example Texas Instruments) + \item In the Device type field, select proper target (example TSM570). + \end{enumerate} +\item Select the Code Generation pane. And control that rpp target is selected. +\item Select the Code Generation -$>$ Optimalization. Set field Default parameter behavior to Tunable. +\begin{figure}[!h]\begin{center} + \noindent + \includegraphics[scale=.45]{images/exmod_parameters.png} + \caption{Set parameters tuneble for external mode} +\end{center}\end{figure} + +\item Select the Code Generation -$>$ Interface pane. + \begin{enumerate} + \item In section Software environment, subsection Support. Set positive floating-point numbers, absolute and continuous time. + \item In section Data exchange interface, set C api generation for parameters and signals. Also set External mode on and configure subsection External mode configuration. There select transport layer to tcpip and MEX-file argument to this format. The Ip address is static IP of target. This address is set in file eth.h. Default value of port si 17725. To change port number is nessesary tu redefine parameter in tcpip interface. + \begin{lstlisting}[language=Matlab] +"ip address" 1 port + \end{lstlisting} +example: + \begin{lstlisting}[language=Matlab] +"10.35.95.25" 1 17725 + \end{lstlisting} + \end{enumerate} + + \begin{figure}[!h]\begin{center} + \noindent + \includegraphics[scale=.45]{images/extmod_interface.png} + \caption{External mode interface setup} + \end{center}\end{figure} + + \item In the RPP, increase C system heap size to 65536. External mode uses this heap to allocate outgoing buffer. And control if is set Download compiled binary to RPP to positive. + \item Open Code -$>$ External mode control panel. And click on Signals \& trigging. + \begin{enumerate} + \item In main part of panel select scopes using external modes. + \item In subsection, Trigger options set the Duration to 500. This option describes the length of the outgoing buffer on the target platform. As the frequency of the model increases, the buffer becomes full between data sending to the external modem. This leads to periodic data outages. These failures can be partially reduced by increasing the Duration value to a sufficiently high value. Due to limited memory, it may be necessary to increase the C system heap size on the RPP panel to increase the Duration value further. This value must not be greater than the remaining free space on the target. + \end{enumerate} +\end{enumerate} + +\subsection{Build the target executable} +For correct model compilation, it is necessary to switch the running mode from normal to external. It is also advisable to select the simulation time, for example, to value inf. +After making the previous settings, the model can be compiled and uploaded to the device using the Build model button in the Simulink header. + +\subsection{Run the External mode target program} +Once the model has been successfully uploaded to the target, communication must be initiated.\\ +This is possible using the Connect to target button or the Connect button in the External mode control panel. +The simulation program on the target device starts the calculation as soon as the binary file is uploaded. \\ +Waiting simulation on user connection is not currently implemented. + +\subsection{Tune parameters and watch signals} +After a successful connection to the device, it is possible to configure the amplifier parameters and view the scopes in the standard way as during local machine simulation. + \section{Bug reporting} \label{sec-bug-reporting} @@ -1739,7 +1849,7 @@ board. \item Multi-rate models can be executed in a single or multiple OS tasks. Multi-tasking mode allows high-rate tasks to preempt low-rate tasks. See Section \ref{sec-singlet-multit-modes} for more details. -\item No External mode support yet. We work on it. +\item Support of external mode included over TCPIP with some limitations. See Section \ref{sec-external-mode} for more details. \item Custom compiler options, available via OPTS variable in \emph{Make command} at \emph{Code Generation} tab (see Figure \ref{fig-code-gen-settings}). For example \texttt{make\_rtw -- 2.39.2