From 1886d8d4ef73bfcaa1c999b15a3db078948db849 Mon Sep 17 00:00:00 2001 From: suda-morris <362953310@qq.com> Date: Wed, 22 May 2019 17:56:10 +0800 Subject: [PATCH] update ota examples to support both Wi-Fi and Ethernet --- examples/system/ota/OTA_workflow.png | Bin 58211 -> 0 bytes examples/system/ota/README.md | 155 ++++++++---------- .../ota/advanced_https_ota/CMakeLists.txt | 4 + .../system/ota/advanced_https_ota/Makefile | 2 + .../advanced_https_ota/main/Kconfig.projbuild | 20 +-- .../main/advanced_https_ota_example.c | 76 ++------- .../ota/advanced_https_ota/sdkconfig.defaults | 4 + .../ota/native_ota_example/CMakeLists.txt | 4 + .../system/ota/native_ota_example/Makefile | 2 + .../native_ota_example/main/Kconfig.projbuild | 22 +-- .../main/native_ota_example.c | 81 ++------- examples/system/ota/ota_workflow.png | Bin 0 -> 114546 bytes .../ota/simple_ota_example/CMakeLists.txt | 6 +- .../system/ota/simple_ota_example/Makefile | 2 + .../simple_ota_example/main/Kconfig.projbuild | 19 +-- .../main/simple_ota_example.c | 112 ++++--------- .../softAP/main/softap_example_main.c | 10 +- 17 files changed, 162 insertions(+), 357 deletions(-) delete mode 100644 examples/system/ota/OTA_workflow.png create mode 100644 examples/system/ota/advanced_https_ota/sdkconfig.defaults create mode 100644 examples/system/ota/ota_workflow.png diff --git a/examples/system/ota/OTA_workflow.png b/examples/system/ota/OTA_workflow.png deleted file mode 100644 index 3e91dafb3801df54ddd86cceb069d6ecf9bae75f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58211 zcmeAS@N?(olHy`uVBq!ia0y~yU|Gq)z_g!(je&t-k<2_M1_lPs0*}aI1_o|n5N2eU zHAjMhL4m>3#WAE}&YQdC6;nd*9s5|V*4koH#qGtec*SKF%My*i$nQtF_U)L)dU{bq zY}e}Sqoum5*K8`Qj4j=$bcr=ntJ~p4XjT6e2F^_5^S_VZJed-t-mCuf_s(@YC)wnl zD>h<2Ik&j(cw*!vC4^{~4w&18T z1_p*96d(;+2cH&cnwo}AOTBq_ij%DE#8ukI&Rsg3zeeL~>7`4tyIvi%-1U9w)1sZ) z-)x_k{fcQ@S6edg-;Y0&f?|(9-B$9qh4t5cb#YDI!=Yxq%nS_M6qhhDFief}^6GNy zlUcbj`FPgVRiQ;YwbBwM&U<<3#`U^u6Cba%nmj3RRrXFD@8?0rTWjtL?)`PM%_uAJ zXYo#5TdUO8GI^`TPl}hmWX?A zFJG_6XJ10T)e!YDJe^`uB@22*Irxu^s#G|xp%9*;{R=kZe;Y^`!7NM zYA=`OSJUcaCKsHymrPUn`}J|@sS_pBf6aRO^25iFz2?QURbJ+Q{~mOiEph3-wBOIR zetmMn!t>JW%jU0gveH(r=VV}b;|R)AT3dCaw`JVkmTOi1ZjM#in-%+Ne`_fzIl1@A zTwLVZy`}7J)Lh%@YwyysPKnP}_1qqF(`#evE?f5MKqK?54T;T%4j&d37GAt9_qLX?aq#Qw>#x7KxcKXn$^KcF zm-%kn_W3&V$*5i5HaKOmyjb@?^Zn-ci*Mfkdhbl`uatl5Tg4piZ}{9Iw$5rrdtCfN zTlYN+XJ3AJVa9B0uSxg*=grp2y8Gkt^2=Y&Ua~E+lG*kCSfAbReQ}%I^K146&ey-S zbjoMe{+ip{-fwxf&SF7laQ($y@%}&FR2NjJdtN$TT&`ie`O#IC-`{TMf4$_b|MGFa z{k8J@wdv)>3=AtKaI9otZ~&$IExEVNWUb459zJ~d>f++|tn2I6_Vn=7e!p9OYisuO zf1l_7*U;2Fd96&((?-Wr>eBC|`I&X>lg_=|T0dJbuy;WEtIN%pEQ11RTs5L zCG$`2U6DZJ6$i3Q^5f&p`7&0X(b=x{_p|u?fc4(5cfGo^YhBQ#Ow6ym2+iRWM z`7{kLvdDk@__3?Ab7E@bsWWG;{QLWR>YO=idU`Ic)d`n5eNA?vO03-NBk8|y8*e-H zbX!SojWO@b;=+a33oMqLtbeug#D;{m_sV?s=lndIUcW!DSJl(|nw;L@Y18Mvv3v3C zHoN?}Tg$eTOnw3~Aop<5G z!^5hcot>S(9yIemDGPrimBhdhlL7I7(+N7t%FfS&f@-$0vRi&Vo~=J|iH){Y)h~tb zAr8CO#P5$QetvH1?YCheAyeM%es8xm|9+g_bnnZ{{jVSEm42J2#K0iR1uki}^vPIG zvXxp|_V!kh)m%_S?5q7fWzwWYR;8~rjEsT=1qF+C-@UcFe0|uOh=u-kKV5{?d@lU| zd;fpt>1n!8ZykG5EP1MEXQ=g}wyZXmwEX+qzHd1<_k2jVnqbzv#{wl7mw@yU7z?u}A>b!k`L zyw7!U8-u*3>6{M!QI{}BvUloo{#UcFGWE~5i@&x#ASe6!x~n%fCVzdgxIgReuF^?M z{N`G{QVhETCDZ)>`EYZ@{^)=1965!#{(bU{r`tMI= zYHF&crDbGeqnZd8A75Bn+A<>}qmmaF6zAGjhiQkeyJG+EBfoC+wly)gE0k`wxP8rP z{gw0o?S4nE(`plc&J!1sTJ_*T0xLWF@0{-}QOEs$wgt|6E$_dsLhR#b~+O*&-9uMW(8>wzZvjS+Xka>@2(6(pUIG&rWcd>w7jNs%^VR)!L2( zRu+pA8_Ts9LYeeirfP?SYP4J1a%bPG`Ru!N*|JkFOJ41Iy)O9kv$IdjcAHjz%Xxc$ z|Na-)l0%0MJt?sgm6BTZ`T6Ws0n1Hr?4& zJN58F=k}}%3ml7f#{7D>`~8-pr(T{x-D0{X85a~h({^Q5wl85|2vLJ%G*A^cY4YT$ z^X9Ds6%iH|5rTq(Ai)^D>60c+D*5!pbFO`TTw`Nn*5zfrNy*8fo6~%+u8j`ge!p%v z8;?Z5y4*G4r`J3ySGvxzd{>~Uif4PB_sQbEkb)CMFDkmu|CBra&)P`)`Kv}z*SjYK zEM+dOG=6EP81?u6x3do)vwn5_H@CpdG&nujSXAc8mq=a%OI7EYk$G49)&#!r>U^rG zt?eyso)?m}YNhhE4T;XZQl?%LCr$)41=7yUP&~a!L`G&!-QQoDDk?7N=jL2IZ~wo> z@ir%egR2|3a$Vc4zb_&&F|lZ83@BdsWUW+AZ@RJ}(fR0+BN_$<0nyv@uCCwzPiy<_ zwYy4Rzv{Do7jS-_ZRvU2?;47Vjt?I`e0u9xl%VO85{r^gKD&&J_AaiwWx9Il0fyz< z-qn%(a=#&-*k%g!>-pQm#2VZjRb zez{i{7B=ggzSM93Z^hyEv!}Y>-r5?xx9V$3WLVi=Ed~Y$4^{>St)261tF;Ua0#2Sh z8MQrc?xjnYKxyl=-fmERc56%KWFcYU&DkMe-`|g4zxUg$cYD9bndaTuap$)9gOV4M zo^5?n6dkqqYV-?h8xs%PB&iddmh?Y=ccOS+YGmart(`H`{+a#{_q=q#d-jhv(Hk{A zCy89%R2F&PY37R?oBC8<+RvW6X*;Wh?5pcnYxwPE?X^8``L5=d!t;&um|n@C3_8 z++|sh*G&dRXD@T~uQ#8+IPT9AU&kL;`!&?|>y==uq9+|Odeg(!$E{61-sfq=`div0 zL%|bNX?F^%t9VYFIFXCfaPeNhxmHvEw=y!UXoECFuB{H&-t(yS*7IlX-CO

E0?pY<=L+*-*;E5-Fa3)wE6s|*Q>Y7UVi7CE+Q$m z=0@39{R6V1@%R6KJNW2`^UYvk)s=5u19v?=b*(6Rnp|CS>$&CWsqc%QbFHkiov>zq zUCy%Owtx1|6_tCn)_v>i3zBQ^RrxqJ`h9(OWyPL+_2{UmS?A{4>u@-iFF)EX{`$ee=51Rx7O&p*>ejM#lg_8Uc)WA}uQ%1t)_GsuSsHt_musT) zy$2^Z-Ld;R!zr6Z!$>D0Iq%hy)5X0aRgXXWPFf-Lvj?=GG?QSy4O zWOU6p+p_HNukUUI1STHjDyXWrIV=07g@s*1%O*lu=+=v4jQbX^xc8%G@ttW)rP;TH zM0h0pyywHmZ~J9}n(wS7x3-=YIjk4EYeikHut-{J>d&5epJa;P-LYJ{e704}yj%tb zhg}8#o0%CHrZlVh&U#V4|M%Q|zu#Hs-rC|hzxLZqHa?jZ|Nj1dJ;__|VsgLjvdQZH zt3p?YW!>Gi^-kXQIp?^4ms_qO0v+jy}4(tIpx{ zn_Gd7jedL0KYp?~9=+2o2$bwkFZ*YAzR*73=hC6jb`c?&1=Z_b2h^EQ=#Sc(mHFkx zMJ`_6t5Y8fjMqnG#e@RYv47rTDnuT^sOe+o^ruf1tv z50SG?mU{6i&v(kCX-f^)|58)_-tAU&6Etn+vb~p= ztKW5r_iyy6r<+XPZJqxq_Nu}1JBp!od~)6wm4m}PCcTrm^sZ_B8+Fgb#Kd2Z<^Qkf zxBKO>|M%VZo3^iy-5oaDY-V8I-m0%bmzVjfdhY-CYjvNzy`JZ*TU%eV=Ib*sh>C*S zXkVP1oJubHnrEJvpxD*ZbLG*|?ym>gq4@x@2V!|SzmmnAKUY3GN^C8>bk4c#0$&T%#PMmyK~L=?X0VpCO%$S^+x`` z=9e3boV2#5X5LwCulX~kt*SI<#YOWYQ%Z~fhHXys{rcu+@WhD|C;2#j`F_7Xe!2gA zP{Xo~Pj*#914C+R>dWKu^;dp=el98}x9+sw?larWm>B{t3Is7SG-xgKooyy%mNSEm zM`A%w56{^dhR*r>elEMVHaflh@+Q|-_SawAe`zdnYw-X0;m?eTA(h;@)hQ{vN`J+) z-HH)en*RP>+%;cab4638FTa?lYiij~RL^7VdYGFp z1JqJ~IOV>k#fg{8Q@^@2IVoR@v?)vel`)!UI1B0m7(O>sv7#J3a z96EH!q~b$@r`ncRx3;d{RldGranGVd&D}P~=2!WM?qv&2{FAxczI3PF6R*0X7xz|| z@BR1dwN=fJ4OL%WD0<%7nB2b1clNR`UrJ1KZ-toOt5}?CdWnHyMTge2|F0Mr7*s{1 zq*f_9x2*_X?w568LF1vrhu`J}b^Z_z3N4*?d%KP|U;EzRpIzDt3J!a#zfZgUHY^}u z!nyhO>+Ao0o*%WpZm-ViOJA?YufK64V)txL28UKBPzzwyoC60Ow&vWt^e$}*m*Uh- z*+rqpCU_Y+hB`FN?E3k1dVJQcEty3-W4by!FUFSNUAkbwDQh7+{xRXc5cqf zo14?KzrVX{Rr_npU0)^!292%k@--0;1qG|V&D?+EuE^~>wdePC_2sQPsc*A<%NCQ} zvxBwrwnrcDlMQxrYnx?~Imz}A7XyPes1v6fz3s{bMdvTS@BhE|Evj>B)vo!s-(GX( zw*}RAx9^HDFf>fum5>V`BsA5`SkSk)upemN!i!!xwS2K^@a@wyJxd9Fa%`X*Z<@A^5x5@ z&1t=NeK(%n^wj>JU&nq6cn^2`8eO+ACJ1Dw&lzOnYYln{noX4 zUVqa;A>cjfSik)Gyt}&u0~i?^Rz2P?DydbO+7`6&PUvzqQ3eLlz=(($yGma#J1$=z zGsz_VoJ{oX;FZp+?(Q!4o^)$lZg#OZ0|UdUY1X?lD!%H@d#AR7nc+dxhbLN~;$^Gs zRI4SQL_E`3L>U-XWa%)?lBo@-ZMI@y&};edp}=!ft>G>&Sb~kEMN$6nC5!1;1>f!!>iT_Tnr2gm=?(iE3af=Sdj;6buehnn6uEQ zlrMwh6$8VHIEavhlh$EjztHD)3=9jbz=M4&5{lZ4uI`kZ{QTbPVvyl;A%+|DEHPT) z$;#mH6`T+Q4*qBhxw>6W803(v+#u3{^{~gPm|(fpg#qjg4y90K0h6`D1HyfOgPhd{ zc2-lOifAnZgF~qcC`AVx6u5AKodMchU=ZbLy!nt6Uln*-e|>*FoUeVc&pJ*9hEr@{dpUh;pV$6< zegE>?JT|Wf*B%}=`86-F%$%8l;mLs#dj^IEp%Z7$T=}BEf75PBjfF4cYuBDxqqBQ9 zBLhPb*p(WMQ?7(K^?B(S8wbD4%!KF!_X1WeU9x0}(OP9z28M=9;5fT_>G%8n>swk_ zeCOFjYKO0za{B3}-JT2#3|FOEFEcVYY%Trt#IyG2)9JrHoz@qXlwA4m@9*pj3mics zU`@@|lHOsxX=jOY# z1zq0W-j_jRqZt>KJWt6bem&b0X||nb>DL>{!e74K&c6vN7e2&`_^~sDM6rZyXg>UK z!r_M(K0UR+c~@l0C4PIIt-CoH7!=suf*2XJ_L^p2yK$E##7Te8ho*hMUaeN@=jP-L ztf{H_R)NN2k)=@3+i8g zeRucv`$I3Uwx)WnE?=Jc`k~L(41pzfxz0~Yew4pkx5Q`dotev`5*c^xsqHwF^}~F_ z|09;ur{&q|Pmg|e+04Z^>-Oj5H;v5fTQV*x{rzy5|JI&LV?|2_hSUyFE^!D737G&Ef@W}LE(*zt?Hro*V!$< z{!C5VsYeH+*1zQdWjzP`8qdR70q$(nMP#^5hxgU3_$Rc)Bq#Qaz0P$=x65{85ll6+;r*0L}k;uKNXg9*C+?ebXH#~^(^Vo%N14g%(|`O za`$#i_T7Cvysu+FR7!teu6;Q*(`A2Ek=2qFvlw@MyA)MboENn4e7VulrM1V6zWyk^ z$i-=Ne|6%=(yvduCf};o3C@+CezwDW`|Y)7XPaj~Jk%Psr(z?YtW}8Gbyfz3f6AcZ z=xWg6Hr}^+PD`(>2wN~M*LwM9$-GuJ>#0vSZF#@Fq%=3|NB`7$nzg(8maPmn4z8(t zezC-~L#O6TRLF{8(6Lh4UZ4zLJE+(0?(_HC?fj$r++t#4 z=H)iC^Iv;%a`NW=^X%*Qsrk)`c(T=^|Fc)I976~zxS0EJ`+f4^FK1VY{C%HoEqdS1 zDZ6Z`#>g4qaYS``zFwpZ4D`KJAAeeime4xN$sjYT4UZ>B@gaM^|Yv1lWH3 z&+z8Ts?r{*xGP7}Z<}(4XMMT5I4A33>*w2&)0gS_T>Ex-W>%biz;~Xmpv_gT|KA$h zp1#!XeeT8c_{*WImpLD%{rOaZi$?Yn!W0bj(2zo&(#h09&&vs_jL4> zuQ!Xmy#LRw?{<7Lm(I1c2t6u%GI%>DxZGrRmIKidW>ox9G^0k-b=FC{v%d7pZ_}A%|C99H;_r1EYaq+QU z>E*K4Whv`lxIZjmV9?_M&2Tgbb#!K~f1ExER8%jl`}^x>Ub%%#*7bFBZ*9$9esQro zsQvTnVY@sitG>Ol@iEhOA%=!m%};X}7#O@BJjy(wNiJbWO9aXw-hY znf~kB?R?X+HxWmV9GO!5x}oXpeEayq!opbwiA{HX85@j_dT4>Ffs7j)9Ova)m%Y2R ze13hVb9TU#v(ek0-MqFXvt;A?%Ud#o@7Dc(yX)__+oexVOx%Y=kkARX7IgzT43=ekLwR;Wb^Vr zA=}T-JIl;j85o`jWt1~BFfeGX?w;lL`mXu?4Z9^77#KpCKotW6Lx>V5C#RQ(2S_yF z*^GDW5Le=vWDZgK{QP`)Ow1fLpBV||!3+z0&?clcwl1Gn<;Bd#b75EM>r-E47#IRd zS#RA187z|X=t$=*`}%zqSU$5K!F6iy8 zt+n6I&ocG)xBWV0SINsoFJ5GvooVbo>C4aO^H+zi4!e1L@8@&YH_v}xZvWSFv0Lw{ zd*44C=FdJkNp)5H{(Yc&u9aIHH1uu%_sis6Wp8IK_qALbx!G+}&AF4OPF>pj{od+l zXJ@}&+;10DQBhI2i<5yNgb~ynVOX)?oYv~S4Y0KUkWrBI`nfY^tXQ&S2~&T$)m-SP zIiIZ6l9!j4XFoYH@zjYEC+yO`zq?!Y@8|QUC01XL2>Y)HUmth#w^`1O2gQ3+Pfts& zpI5!*^08iNRZrXMZ&Or2BdM{wN-j=NbpDhZe6HR7T(REXFF~=@Z@1psoZdgL_S;RR z-)syFA-3S6MfA$|`}OO4dU#Cp@5Pk9zBcvt+iQ1r7IWLw-Pn*AwK1u6noi^*P-QV` zOa6U3-G~hezh_L3tMZhTl=SlO2sk}WceAsaXVm_>+HcQ~_sL$~mV5h2$t-zs^PC$B z+i&Z7g8EQ?b1W23N(bGod_EU6Cv;^`<>#8)Q$9bO_wU50V_*p3 zhdOFaD zd(N?5>DB)8?Itbxey{rc`_~K%4XYYKRq+BQtBMZ^-$ZsFY-Z2?@ZjL2C9%89K=qUB zy!Vn{RXi6iTsUb-<>zOfla!Q|uWrr0{^swz1)2Z<{RK@DJem9I`qu35t$BB&CY3Ll zs=fp?@bl{0+UP^pXYN0p9F@>lx(pod9eUA;H#zO z6?Ad&%07AfcgBlO8gpqI8U{`(IjK55#sBf-DY4T}ZPLlTvm@~3%a^~NPLEgd1Wo+) z_D+4W)_ZH_Wi`)FGqoZnyu7@8b@}^yH~Sa4d6d4nVfg#=*6izIm9?NO18v|>OHE}D zoF^E<$jB&VQLsS8SV`--hi3nIyWc*Ag@s-o9v9x++^p(Zey6bAs^o=&r&Ym&29=eb zlhy2=A3b(V%iw~}uRV2ttJcQs40`$UB^L)r!1}noo5Ej3Z_k@+WNf_Iz38WK(9XMg zsVONb_Az?l3y(j~nZ0~31H*zUjxD=E3sOF8Eqfa!YgOVg>C4CC@~nfs|kBH`HWXpV`Jm0$j!?@Mf2?ZeUX2Ee?Nb({@r}H@B8)>844Wb9Wv#VPFW@YIv6))L--T_rHFqm0Q)*xsB)IEYs{7x$wBkr7D>p zA054^y!g-69firBK|w)5^J?d$1+BRP4wDqslHLJ7cr!NV97Z{V8dU~4f&H3doFD;Fk$IQSG;sXhi6Xo}7 z)jhd*ctYOa+xz)Ve}Dh^xS8jJW$wn$Q+fj$L_F3jUHi>)u3zc!dpdRo;JG~uy1?d++imJO%!{{8vc)!lu$g;V%V9v8zDP0%KEA$XTm9{d>hzdJxwp5yT)loDICQ`5|MThe(W-lg zZawgyT_j)p=7yne?5>bWCC}%Ui&fe&Fsz7@@C1zx^!m)P2yAR@oMm0U?%TV&+2zGG zdw##$4VqV?owxly=k8fX1_rYPP$leOT70+k`paFf*KOV{X_u6o%stnSgMnd{9jG$`s-%cs zezgWtTTbXs_sQ(x25@u^2B>$ zdLdwCxPJBR>l+u}eD44M*}ii6%C8r-*@_V?Z1Z!Ls68F5ubZr-w1i#GVBxvefQa8+ zm-kz)FMhi{;$c|mNPMI-IQg%lmGp2H!dwbGviOcF31svpn-P=hEfRGUZA2KW6?JfpT-LW?r;^drNeETu9ooDYIVP z-zX^fFW!9lxw%XE?KE!gY}H&<&wY9K_Ma6W68`lrCO;0nI-`_TM4tuyTM z9=cI8R#u0{hVHqZ7Px-4Rs*$1}!3Z*T4U{rue2dv&*4e2Sm{ zdS_j9#7DcUYtp@{(|?%$J(+xIf?}FThq_DTzL;MR*^N!LRF3#K?*1C~Ip%syaEbK& zs?#=y4xil`UmKcrX-UpI`{k3`JZH|__jTzUzhHhZtzGrpn+q5Jys@me{Pxe!X|o>m z$zGcOU#Iki!remmhu0%_UaEO>Z|{f4ese$h30J={EPg9%?IT#_X;l;P>Siz(m(l&_ z%Y1#`u01*V?1}kv60bcvdZ|nF(vi+(_4DeYr0imD?YhchcGU9R{Ogf{x%zKPZEAL8 z9=_~9`}v)X%I`zY+~L|CSNKcQe&);sQs~LU|7-j?Ck9HqsNX#JwD#A|L4G!kkeA8r#8v(o$l({vgYGs z-Pbn^?co$j9Bd8b!JUf%TW-PxZ~7>p%r;fM{#mtk5Gu!e>`i=R~1)$acn^(A8p_seCo&tw>$ zS5Ch#y1f2=)oGvbHSzbah;?;NoTg*=_vy!r?rC2xw#&~7%$#fO%`N`yzTWoRJ%?^? z^ZoURTXRE)XVCqc*~QJve^&h1 z@O~%E_u^`Halif)zkFXm{oEYQe?NDME}#GD^Fj7y>p}u1lzdq+^O!}+ij{^_r%n4_ zQ6Fa>$^-3frN-`_6@TUWdh@L{dHW)xwy*n8JZaLIQ^|sY_uQM=((bPezW4ak>_=jP ziObfBUhg%Z)j!)@{QsR#mzH#LTG{mfS$6g3<^A(Eyq+HKWAO2;dF67`vbS1a-{&v; zp&OTzW$`pz=C*La*%^sW^S-_9-q+vE?kl^bNkw($F5jI`zuTUdwDDA1GkM7xo%?U$ zK6&=}yzkrPox;BL{gRL4|E_BiSw6oAl#k_O_T9N6_1WfL-R(Kk<9EC~|9V;1LeQ`} z149VAto1C11(C+aQ7f~rH}&^+87bSz)tbEDH)sEn=i&F$@7vvPy8rJ}%xU4Y5VO{= z>($?UntoaH>nqj0|M$KBwnoP|EB&60@u^kr{QuX93r^fFQR%led-g=zoqxa0{`rD4 z@zgB)^_v&niko3o>a+06$;rO)b{|`|)b8Gr;COOf_^i5FW@mdA%(A>(Q(s*5BhmQO zt7*|S+r__^2D5^j%?u8zlO{}9(9+Vfh~K72B|qXxRYe((3D+wn;ReAyey^6$&~{XxNd zS#PSId^)M_-_6}s^HaLI_~rAq>BnY;o&9`$fn(aLTaC%%DY%gqCq z-}`DSmkWg%!)n~Ex!F#=`)Ym9&TnR4su_Idxw2bD|HLJplYMwq{B!4ePCmmiosoG- z^*cjlkFqxgmwW5}T>LGQer`sU&tmu43sOI&eD?l(q_cJV+ojWe{;piT&gi&)gu>p> zeKWPLub=;Y$G5k>I}Ea>NZP8*jDMo~{`#byevU zVe`x9GbAoAf4?`KY3fYly~kt9=e}GX9&f66a-s9R+OxBNvqkN+{oJ#&|3`&!*2+j@ zW7~~oxi9zqKJ(AA_{?6LZ!;the*S#^lJ@!;nni|&M|aED|NLyFz3Oey!S#=KSQyuC za^)5-s{KB9W>Dmmrgh<$>Y_l+gBH%8@Atn{+q~#;yS!KZPw$IwSD(t!y&dNzy6}?? z!vQ-`dF!AkS8-sIRjJYH<*aN`*N%$Mo_elmoz(P6Ns-s%vLg>3Osn_vo*or;e_xvE z<_Q9)UtK%9>0Z_8-SI}N7ufz@lWLlg&?jxN;X~*Rn|*(;ZPMF$#3sL2Dy?S*AFV&7RQ-+o`-Kks#qboh_rUb);z@z|6|M#i+I z2M#v-{{MYhu6|v9!$5+n1DZ7#UU+ z{itVPV34+yxwNA&?WqaF)HqOCeDyD=EM6cq)4qP+qeqWS7A{!n%n;y-HkiY}z_3Af z^>0u=kfCe+r)lPF0glkt4g7i{a?@+TA6$bAw8@h)8I( zwt5;GUTR`3+rFkiZ~B+V{g-}xycAnL^<5NSyNG=JujDsR3VzsSU7KQ6J}s`o(aT@| z$DSiDFZ-;QJUhE|fx=2R-j%N0nLj>oUo8STI8>nZGNZ`(^Y-51ahXjk1(kgQO5e=* z^7s3tX}Xsl9K4r2zb?wEDrA<`)qUTpdL$Ij&Q_mmlezER<>U9hO=+L>rMz40(v6MJ zJ`1Za*;%~QbFxpoZd8iXiaG!Oq`&<6d}-9yB@3OGZp&S|Mkn)cRpzxdn|6zXti8&o zDBAF-@`a+N!hxP;nYXU&{=2^ZE1QE{{ZH?soXyY9PF}Y!YS*`0tE?X_SNVH)N#~aX z%=gyMuXNk>*)Q{!$;-w4HSTkK=jqsfpHp(T^b))Lj0IZD@7xDP41)$6D9kpOt-Z3e zJKy1H;PP{=`ThIrexGg04!X*_@>J7dMca=poGZn2KD32cm(L0e*<0l~zdmnS<+HGf z`~NdAgeW2p;;ryxT~P7r`gF6rDP?c9en|NDDtrEVseXUGZH(T_r_+~yd+Y1F*sXWT zL}lL@Q|^C#^myqK7319Xd9lWKKb+D&Yhqkq!L(}8mshH`zgE;ApEl*Rs_#st*s7H~ z`!^VT{&_p!d)m|LHMe#5er&t4b+w3)lB=87-fHjJW|jRPm+$Xh9BKUd;}OpH+syBq zyq#xb`M&|Q35UU}^S%j#$oaqDy@l00Y^%N2?@8iX@tn^kuKH|E%?HQ(v)tvTsopJ_ zY?9pe^T%=fSr=X(=J!3ZDXo_?ugI$0@74YLEm8gUdT(zey8Zt0I(?bkwyaRI@8w@s za320Mah~4WyU}}I?~X~^b*KFP%$1eGYBO^0*Jz8-C?>#==Gx1*4=_|ja z>|(rpr%uzG`t9vxt1^@0B3JJpE&a0M=Zz(u<+m5P28B#{nGcF@4fd80hOXxyk1ySv zzEnKkM0?NPZ?ia8v+;hCd%Uvn%Y)|1Y&p+M)$cv;*C_A(zmIc;&7;Rl?f)FSVl8ES z?E9Rrug`wA`7)tA`u@IUyyxxn&uMbMzV5wn;Xm2kRa-e*yOLjp2nXD)-!JL=^y3lX zOaK4$znmSNH<69c)5pzq_q`Jtxy#o&&55 z3=9EwKXREJK3d4AiA3!T+V!VM_*G0{t4UtWy_H$4mG5nXFK0b)5U#6`+qg09|0LDQ z^DE=;+qnB}zpG}Np`aTR@#*(TT`eyzzHjeue0%GABkY2*{pDpdGpqIYJlJik;869+ z^Yc&f_=@e$os<%h({P^#;@9j3eue>WSUHY`{3p)ctj$!@3 znxjXLW*%zc1dTeM5>Z~sFy+kB>9Y(npZR2d$p|)I=_zb{X_bbwx!3da;x=3_e|+3? zJ8Jtm=`$8G&!jp#kLK0QToHV{#q#LJ)b1+_n?(dCmd8Io_bmBbRebPrum8XI2ldNc zYGAyyBJk2#^Xaj%EAA{ln00N+vHt1v>TZ4Cv8!~cbNi`hmY{-4LB1t~!Rz_={nM>V zjSilkqWP~iByanbWxZc6dH;OBKHB{Kwx(q>moAwx(Q|6+?bwpQ&vU+4oi)8Q&o(XV zN%i}ghd!RS(>^;h_|M9=pPBdX^~@=<^4)*@*faaP8>`EWeJ=`c0@>mqsl0?Kph`Dt zhSEK0^I!FUK0dy*_4+UST;2Ui&(hD$V0tw#vuUd1Y_m(()~dyvj+Lo9%=UR>ZT0=P zTeH3UZIo>PY~W-%-a8po@WlVus;&Mb%WIa@!ntx@UDPbQy`)6~XHF-yS@8sZ+ReylcB!<1He#CkIZQk~kU!N9uY`_2RZrziP@5SwhuRNUOGyi#5K>hSq z>3oycxAy<>Bf6M zJGNxv%Ht;G>m+->T=rik7j}N$rTPCtN_H2sC$;nc&ilNkGn}^@6Bm5H4FXiGMy%FOkT>${U^Hg-9h%f{3owep4#g>Ny^knn{C?k z2ML#-rO!8Ad~#mpu{+f+Eu43Y)?X?U7WN=Vtz8=LeOg z{cCAEt#?;_4FAgo{1Bm-CuO$#vbL6)4O!-|GltXwqoCz+PMu3pYzYk|4Rr{ z)IC?5k~*_~_O5bsZl{*knWCx1>!(EBQ&Rr?@8Z#O*LfHiMCTmd^e5JM-=og%?#U`^ zBR3y=HjP0eoUi@L^8WYw)(t=E8J_063fWxs@~rvniOmxyUTS1cb9ub~f3BEx#RJBd zU$1}mYu+ay!)ILkYhHEDc6F5}`yCE{K0n)GMYw*j_@+$S8 z!9)M}XZ!rpmTk$L{N+}5n(O6W>9d9Z?i~OBcfRD>-^=Yi@9vtp@`C<84O!c)e>Vcf zxc#S0nY&&xMDp|V^Vg4b3Y%7ZNbsF!bMxIZh80R$ht6N~`OeJ1aN_*t^Iq3ur3jh?7m?)-33kFQ-) z@bOQZa*d7Y;6a}&0VzvNa%Q~uTFTch8ETx|wlY>kNNHj;c3evdlstLtX^%F z_vY@kotwWLWLMoCm)P~{^r0{Ba_!`7X8iy6=iTC9_4^H8lk|2Txjn7vPEq&FTXQzA zUB5qXUpT09ntLy2+u3=!`@Yra|NoP&X>(^y%dFzv?wRq%Cr_rWsxH|w^Hs$~*R&~7 zi8i@EUTI&}H_h_MyF&YAJ^X!#k5mseKq`ThKyY4By6`RC`pzFYpJW99ZOm77;S{`P(UY*zU; z9>Z>h3Z3}8S8r@TbwqAh7-zfL;piO8e_KDU-R`q@X$ME>kL+43K9!Ium)jW7Eg{%lj!mhSpBHPI~3ME>@ck9nV;+Z9Da#&;ehuiJM^=ibK3 z&E>b7Sk*WpcU;(=`!YzljYsCi-EAqIQ)X!VeI1{6Dz(n*_bf@fJ3gs3Zw!U4Y(F^s z(|+`9TgApNm%KrPKHnCfPF**(IP}`0dHYRjC*N*le)hHQc5a$tpS!$i_l75H1T}yD z|EKZx_X;7>01v7rff2weiM{2yHX7YoKY@oJ0SaHNsb}oMxIeCDl@9ny6%E z-|xz2tLq zH?MK))yY24u;}*pv*y#brgWyBotqsgtQHaG(UH0}Gx=8R1ijcZpS`ACUEH4f_EzYZ z&p!?qpPkeHBIA8s{jW>Kb1yE|ef=hKbN#oRV*lJ*Gxlk|tW8OY2wNXFO;k8Ja^_4{ z`RP+qZds&u{j{>ZyXnv&o!6gE>#k1se_v>RKPQrtbKl#%3kv!7y`Py*3eJo(HqDB- zHn&`?Zv9TrX;+tYz6|a^+I{w0c-+VTKfQ06|Mc|Ty5{rq+U>luS@-xYZ@)eNd-0a{ z$_x(Mx;|_+1ubP`_#`Zq_?R`JXSkr-httm!EY}Z?5(4 zz9!Ay*?C6FQ8xW^{)WuiSMyre*l0~%ZSZ6*wPQU&T-@3>Yj@nebYkK%x2xjuGnC%2 zW?pdE^(E+Y&7{bSS6)t;SK$=3_m;J6?oA`(O&ZI!*BN||4Enbx?a||<=k3iG&p9{e zL+w0kB~8GhyS^kw-)+`OijMZ?#dDIcC!6Lf3iVUZo@Pu~CTo_Wum zp@9psmd_w|_pF43zf~(Mi#I#n-BsE;fASQS+TUwAqiy=xc+c#cbNO!8^>fvEE-f?9 zg~gcP%dmSkr*CTX^>so2|D|Q!d31D{*~J-#N9))9G09AF5;?EDKeP1Tm!;}&emxa` z`J+%c#WXW$)9()~A;xJl1eVqQUiAL)tZbhPNs*Vn-=DqV@u$;EXPKTY&b^-(#<}O2 z)cwz|u4@0f)%x+d>F1x%mz7;U(z(q4SdZqOW7FKvHF$k$%Z!XXTK#X*H{ZPMYaVN( zy_wl&Ecp1qvAFk6u%&3RlRc+h--HSlrls zcT>&bo>uPK^R@*Ca&~{ccIfuBnVE+g=iIA4Un66n@V_`H_-uwK|Mb)HH(I-4YXN+2 zep*u%KJU*<@A{v`@{*Fv41S!qpY3#SuGP=_zwhpz4LQ7izuDqFZ9Imz+4-m4s|mKM z-1OpQPOIkG>|>uR*G64B%?Lv3;_=Xf*2i2ukGFa^Yqu#`m^IJxF%J%IApAtxyrC+ho$~={V0dfi`&*#_I`hx z{pyR1jfU^cBs+P-L)AShzOzzZDcvob{r$CFtxrP9dD}FrOMS9wuWt3*SIvKXMlyJD z=9diNeLnMY?)eL=i{0BcJvu2u8Qw> zlCx~)S|&TK^_{(BrtxR{eLKFrHC{Ze=u^+CkIVJ{K0RLx8Vi~n9zT^&)`-9V*;#J> zXLI~M+g3i84W4|`_-XEk1mnHuKF?7Nops$OX3oqdJ>s8Dv-njJ|t$*upZ>nrN%VZ)OuTk)tS!Slk z|2*VhcJ1O6&7j3@_YN$qE;pX^xKn*e^?TFBfw#6#f4A%Ocgwt;N3R%38M|3khrPOc z`-*JV#YG>smA+E>`#K)f=oQ#mn*DNp{ZzS{3*UDy%-1Tr(Bg%6m7Wl^GmStQ6;TY zS2VjiC#IeK^sap8nJI1F`lgqS4jnr4Jb(Y(@|Bqr5TFF0YySv*MA<$8(^SPYp2~D;cKTxm!Ma z!s8o;!R(Lp>kW@)TwiPaJ611vPuZIY;cGrK6l}lE;4FN%_xhaq^Di&=HGB}Z_RN$m zAO5GmKlga?s&oGv>(l0^sNGJv&*6Ea{E$}n8m1<0u`N*(Z>`E$`|m^aTBdE+Zb{{= zzP5JiwXD}|i(FW4#t1~Fa&t&cW8f4xvG4s%mE!t(nf8+^n^k8%N&C4ce*K=bXZMW1 z+kE$%HdFn%&2f#c`*#0pZr}0}DtNti(R)EAsHygVn_{XDWw*EV*N2$!dn)t21c|9|r@zB_CFcK-i&yOVxv zuix@+&#Z6um7A_KtzWOgD|e@;+S&PZZl8s9Ui7-<%BiW7o;+6e{QUg(w$zjx=XRSK z+WuT}WBQ~=`|k4{*w5_Zaz#4#{=Qf*FRw{qYa$fOHC(PVm$ZJrCgbVqlDj#rH{$Hs zs@qe-wDa!QMfd#h^xJlSeGsF+t?Ik_KZU20zrR#=( z{E=0GeOIn_zMeLb@y&gHn=cbOQXe`!P`A&#tSJZvkt?6_HFWG+nS8uK(b>i6*v!f5 zuG04Vr~P*85!n9x{PsJ~Gb}$nNO*8&=C-YW|5Z<%Qn*c|G;!hEed^Djo_oEX+5Y#; z6<89T#f(#>W9R^gWG=3n={?|^K<5zGY`zp?+T15zsLFKrT>9zYtIR%&I7qY zOPTq`?(jSDn~xRF-hRJq&Jrn`h@Lq?T1QR2y@Xt!cJA8r@UUy_j_P+4t%Y9ciEssm ze^@&G$m4VW|Y`+HTr9UWDSe&3ZBZR_l3_nVs)S+Zy4zrS<0TNXOq;gh># z_|a5UUVqt!yA_LP%)0g``&G#AZST&V7It(zklf#yy!Ve$!7q~!zwd8RTI4J%h~-nx06-K$rtcbeZ5xLyD2a$o1(#U)q1PuP5Yqk7$W zv#YZ{zgv5~qhp15@}#bgThIEe8(w8?JQP!WP36?w@-DOezvup~>t?O^7Wpyp>2v${ zKO)5SM1p^<`7fIP>Wt)X{Lw%xidEHDO>BI zqpI3@HF&u{`>9hdw{vgj#B+;pyYnn#=>_xqEQby?^h!5AN_v0%exTK>>Jv9#-w@uP zK0E7d<@amZE-qKP3wOy2Zaw?Bznfoi{XQ-kE0twCGEE*ipF7fdK>nY?Kk5Cc-5z{P zmoXJT?`k=9toKo2k&!`G$noR9jtDz=byY0>eKq{R*6Upse6m8pAGo-3{!je+WY3yo zJ&gPQibZVW;oxBS_sx9c-gtY%TNzh07Hkx}vB5ECyV~kIg=KfX#htgUK4NlY_q(Dv zmVeJ?AAQkTexLQ~aitKNx11 zpWjyhyR7hbNp!Kge^=nF{QbOtK21OH`#m$i{T;>SPO&{IJLj+RTl?+j^ZChFSB1_n zPUj0-AE#Sx;o=f^*k9h|ikY3=fpc?}GJ~VE+&-zOchB;>9;<#UW9tF&_>L-{*46{Y z=Q~=u=gV)%oc#Erm#m_}g>6!?QL`dA-{;p07w-Sq=E1V{*`76V^|2y4|KHcUE;{k5 z&)Vhga`pKv|2~NyNMNx0d!^3QHhhlk_Py6HTUlj&OnRQn!)B=a=~L>1*XwP&r?1cs z)^K?{>skN*ulft};}2wr*l(UXRmsw(Zcl{k=KA{I^X(macGWzSOn4D6@dh84kZ1hs z7fP#z)f+5}kDL#Vm?80ZM@{8v{#P?+9$4g>^lH-n{WI96Pk;WeCa&&g+5Vq~n>RJY z|6%Ir5ZG@lBy{Ax&E}h53*)Oi=NxC3zoEWj&AOdzKi=ja)zEgo+<3S0wXWgZU+Z?e z7``%X4U;#xgvDQb!KMvE|-YldE2tr{roPVP{;oN*L8=SH65$-;}ib= zx_0!oPli8=Mj{$MCI#CWzYXV+B-gO-#=AlYt$q$-J;sL zZT!=hWUnv1`|S67*Zu4FrtPo&S@gR&`&`bnB^wMptDZ@I{4v?z<@c44>wi5brC*ns zuw;o!A>aSs^HpkpEL8EGrLrym=A~_AXZNSiveVNOyYH+vxg-0snrGF&O3$jtyyuh4 zzFL{RKY#hU=!7ML$|{+EDmDccw*RdY5U)Q^ zTsAk`ykte~+MUbivz>~;p2!}XUBB}_{x~Mx_@TgXmX_wpuf?`I zpD`4?oFwru)u{8h`5lF2arXcB%-DAKR@u5gKhGzL+?l9+;Kan-?weO%--yYMyMD;2 zu+D99#hvB+2FYy_ieG2n-|_DF7yZuPl0;%2=wV@FjU2E6JYA*}g{ph4AyNl4#Suu=9LQY#2yX@V!ZA)?LVYZJl z?wqTx9eK0z+MadS&d}L;QyVibQjI{sx+;4Br#WHT&ybkP(z9mW^UmQ)? zP@m(w%jEBath?84WZa%Mi|bC+>WG}gHxYr!C$EQ#v~4?ePE6TiR`$LK$GCYbDxW^T zzA4wU^ZD~je`fejP7X^de{8{6#@1it^R z3{H<#R#JLZ-~&1hN3inIyy_$DcOD>TU0HG-FKJbEm<{pSZ~hqZY-J6g2!_v;GP%{JQ_ zqx6L^Cu-XPL68X)0I2uPqt& zsaEmPHtWC{t{a%X>f z{|eud_j?_DdS3sS_3M58(J32$em+{VW?6js9mRF`k9MD%{~i?mvg?;!SJw8|KY!M>{Q2Ek+vb+`c66*bT&N-{C@45l z-K~%1+FE9}UZKU_arJwjiY!#0C$M-@+Ig|XOQfV5_y6VX=-42i`1Q$TB}LO@wu1kE zlT7!^+^s3w7oE>q_rH4L ziK<_j$8&9VK5Ni$vM*mJaWy!WcTF7ci;@GYLUXg9p8{2(C#GmVGVSXYR_<odr+eZR6_zrG~}PT*%n{m<_<&D~qu+r}@>`NaHw4yfa?;;zM{u8xk56TxTV~-pDk=?(ROlt2+vnel8AT=e_21s-gF-q)XdZCY7$meEiv`&-V$2^Ak44R2*% zUpH;>C7aymrxrLSJ>3jIwC~P&=-XtIx*ne<8^Of8?70LylmaP3@QQ7ars1yIrPV!;q z?t2~AkEK0!3#`^Q55JP2tn|ut*P-fcaFL+&Nz6TX{<*o#`~GYyE$#2{klS6(y#3B0 z7E!^8K0j_x2Zdzxz4~~c@6kI1ICw>mUW~7c6q%LhdskU$(s6G66S9ngf$NV=3~_OB zak)2X3d@!2-A%W;#hKUdQF05AwPHDP?3ApmprByjbeJNe8jBA{#f#i8?yiW6+xmN2 z;@gTnW_Qm$pI_e>x;iZJ+#Jh@y;WQ9JQNVDd#{~G+%>t$SAT&}Ey=w0-!`d{UPjmP&C zuc`grpz8gkzZsOpMJIz@Z_68=t*oT9D9=N;oB`yWD}G$88)_^cJZJy&_kEJe#moNP zwKHcv`Zztl>-hC}{ym?#1myJOrcY(u|KE1PBqkA&j<>7B82A60`u4}WzJ&odjx*g5 zN}VTj|K`s^!x@ad7* z_;vSv#;CQwEAD)K|1RooA^V18_6gI|yWc;Z-smpJxbL6T3`6G}Z*S%{US_j=HZh$7 znc&#DFY51FJ-B0e;JWyZhinhFUTe8RAYQ+({P)`fD}x{HXn1Y0X>%i|Fhj4~5qV+e zH+Q+$#PQCt;an4c|KGp6v8!LNXSe%vVOk4QgZ@4N&qeF^ZBkuX_Lk{ORl+l$=O0s2 z8T0q^>O`~g$npI7(EP%CG2^|e)7SFO%S~jceq&g8COl5CbLRqugnxgoZO>-SZtCjj zIFTG=K5fbr6;)N$ld^1rf+t(***of3Jc1%-sDy^!&X3>bGpVLl_2nVf+uPpWcK!YK z_R-|Iev|4xaz8)*?TN%B70=VtyK~R(wBEP*bL74|{|ZB`tgFJcR$*e{{7l;F{9chv1!NIbKlK@BSC_@uOg{ zNWTo@y-N3NDGnS5s3nVqeY9I|~H_ zD`C0L(Zl0(Ze`_xW4(*Qrhe7d@p+@IDY#v}mgP?A^cly*L|JYAY|xE-^wKb2WSoq30~H5=-%Vwx7Ww1dwyGe zUsJ>(LE*!T#fuoe-`cv?noWUg1+&u4g_pPHJb&}!-ZP!P*Xx+ga+%h}Z1i8Z_xrq# z^LM{k`BxOJJ=V+YkMaU*vj76;J7A-ogw)cL-~E) zBgeas97&(w8ECuKl8u2!A|cy8sb%f8$-5s{&)#e?uhQ+x(pgrb6@Lm1zZU$jd(bL= zMC8aq=iB$Ut6%q8$@1(R>%YJGf$L9MHD#ZZ5p=J#{4oFjj`!J5JQD6&C0x-ky!G}z7615<$l#Ecw(QJA0l`Xf zXsLd6M`4o5nfG<tz1_BLJ#hA(fm zm#I`uI#T^THsPkxgN?@agR) z>q(O*Pn&~PZopewycjvQfNXycVuD^_uFxpx%Yt^}DOc(TtEROo=MpCp?Nt*lFxFE8_T z_VVJ&4iXIPKMZLbxVYT)h>DUD(~W9bKCjB_T|h_2o-SnFSX|z*YvSQ{er5(EW8>7m zmW~sdTU>vdHH(tct2B$d{a|Gs9UUphvAFir zt|w1YRMgc^gDQbiWk^mFoOpfdk|heNs;=)0s#H)y0;)i;RN2tbkf9;*aN9{4PQi)g z&{ha2kT!uv^`MrfET3l001lHy>lPfl)3I1m)uLpbMEa)FfianGflDQqhNhXAcons$ z=erqgyT%+X|2t;dJ5jC!_uZK%2Xapi?4FSj-{WnP=u|I!h$%w5yW>_HD5PE)n11c8 zNIC3y<%)UPiI467o~be%xb*#d$%&8Ei|o(HwzeeLYlsxNJGopbt(hIy^1UqnK;vfD zSbfQ>uAV{xVX^(2UR9+$3s*E<%p%Pn&&Z(CB3*EMiQSIW8j~+lQ_oBk3M@Ya3a-)_ z+($)!oZtSksNK=m#-`L@-u<7<^LEymIQ9PVHy8YxXMOq8$6wE%7pU!adKXYNrDu

^@Oi^){Hpy^ltaO74E6F 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 diff --git a/examples/system/ota/README.md b/examples/system/ota/README.md index 4f692d98f5..1c971d5971 100644 --- a/examples/system/ota/README.md +++ b/examples/system/ota/README.md @@ -1,124 +1,108 @@ -# OTA Demo +# OTA Example -## Introduction +**Notes:** *This guide is common for all ota examples* -Over The Air (OTA) updates can be performed in esp32 in two ways: +## Overview -- Using native APIs which are part of OTA component. -- Using simplified APIs which are part of `esp_https_ota`, it's an abstraction layer over OTA APIs to perform updates using HTTPS. +ESP32 application can do upgrading at runtime by downloading new image from specific server through Wi-Fi or Ethernet and then flash it into some partitions. There’re two ways in ESP-IDF to perform Over The Air (OTA) upgrading: -Both these methods are demonstrated in OTA Demo under `native_ota_example` and `simple_ota_example` respectively. +- Using the native APIs provided by `app_update` component. +- Using simplified APIs provided by `esp_https_ota` component, which adds an abstraction layer over the native OTA APIs in order to upgrading with HTTPS protocol. -*Note: This guide is common for both the examples* +Both methods are demonstrated in OTA Demos under `native_ota_example` and `simple_ota_example` respectively. ---- +For simplicity, the OTA examples choose the pre-defined partition table by enabling `CONFIG_PARTITION_TABLE_TWO_OTA` option in menuconfig, which supports three app partitions: factory, OTA_0 and OTA_1. For more information about partition table, please refer to [Partition Tables](https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/partition-tables.html). -## Aim +On first boot, the bootloader will load the factory app image (i.e. the example image) and then triggers an OTA upgrading. It will download a new image from HTTPS server and save it into the OTA_0 partition. It will update the ota_data partition automatically as well to indicate which app should boot from in the next reset. The bootloader will read the content in ota_data partition and run the selected application. -An app running on ESP32 can upgrade itself by downloading a new app "image" binary file, and storing it in flash. +The OTA workflow can be demonstrated as in the following diagram: -In this example, the ESP32 has 3 images in flash: factory, OTA_0, OTA_1. Each of these is a self-contained partition. The number of OTA image partition is determined by the partition table layout. +![OTA Workflow](ota_workflow.png) -Flashing the example over serial with "make flash" updates the factory app image. On first boot, the bootloader loads this factory app image which then performs an OTA update (triggered in the example code). The update downloads a new image from a HTTPS server and saves it into the OTA_0 partition. At this point the example code updates the ota_data partition to indicate the new app partition, and resets. The bootloader reads ota_data, determines the new OTA image has been selected, and runs it. +## How to use the examples +### Hardware Required -## Workflow +To run the OTA examples, you need an ESP32 dev board (e.g. ESP32-WROVER Kit) or ESP32 core board (e.g. ESP32-DevKitC). If you want to test the OTA with Ethernet, make sure your board has set up the Ethernet correctly. For extra information about setting up Ethernet, please refer to Ethernet examples. -The OTA_workflow.png diagram demonstrates the overall workflow: +### Configure the project -![OTA Workflow diagram](OTA_workflow.png) +Enter `make menuconfig` if you are using GNU Make based build system or enter `idf.py menuconfig` if you are using CMake based build system. -### Step 1: Connect to AP +In the `Example Connection Configuration` menu: -Connect your host PC to the same AP that you will use for the ESP32. +* Choose the network interface in `Connect using` option based on your board. Currently we support both Wi-Fi and Ethernet. +* If you have selected the Wi-Fi interface, you also have to set: + * Wi-Fi SSID and Wi-Fi password that your ESP32 will connect to +* If you have selected the Ethernet interface, you also have to set: + * PHY model in `Ethernet PHY` option, e.g. IP101 + * PHY address in `PHY Address` option, which should be determined by your board schematic + * EMAC Clock mode, SMI GPIOs -### Step 2: Run HTTPS Server +In the `Example Configuration` menu: -For our upgrade example OTA file, we're going to use the `get-started/hello_world` example. +* Set the URL of the new firmware that you will download from in the `Firmware Upgrade URL` option, whose format should be `https://:/`, e.g. `https://192.168.2.106:8070/hello-world.bin` + * **Notes:** The server part of this URL (e.g. `192.168.2.106`) must match the **CN** field used when [generating the certificate and key](#run-https-server). -Open a new terminal to run the HTTP server, then run these commands to build the example and start the server: +### Build and Flash -Build the example: +Enter `make -j4 flash monitor` if you are using GNU Make based build system or enter `idf.py build flash monitor` if you are using CMake based build system. This command will find if partition table has ota_data partition (as in our case) then ota_data will erase to initial. It allows to run the newly loaded app from a factory partition. -``` -cd $IDF_PATH/examples/get-started/hello_world -make -cd build -``` +(To exit the serial monitor, type ``Ctrl-]``.) -Generate self-signed certificate and key: +See the [Getting Started Guide](https://docs.espressif.com/projects/esp-idf/en/latest/get-started/index.html) for full steps to configure and use ESP-IDF to build projects. -*NOTE: `Common Name` of server certificate should be host-name of your server.* +## Example Output -``` -openssl req -x509 -newkey rsa:2048 -keyout ca_key.pem -out ca_cert.pem -days 365 +### Run HTTPS Server -``` +After a successful build, we need to create a self-signed certificate and run a simple HTTPS server as follows: -* openssl configuration may require you to enter a passphrase for the key. -* When prompted for the `Common Name (CN)`, enter the name of the server that the ESP32 will connect to. For this local example, it is probably the IP address. The HTTPS client will make sure that the `CN` matches the address given in the HTTPS URL (see Step 3). +![create_self_signed_certificate](https://dl.espressif.com/dl/esp-idf/docs/_static/ota_self_signature.gif) +* Enter a directory where holds the root of the HTTPS server, e.g. `cd build`. +* To create a new self-signed certificate and key, you can simply run command `openssl req -x509 -newkey rsa:2048 -keyout ca_key.pem -out ca_cert.pem -days 365 -nodes`. + * When prompted for the `Common Name (CN)`, enter the name of the server that the ESP32 will connect to. Regarding this example, it is probably the IP address. The HTTPS client will make sure that the `CN` matches the address given in the HTTPS URL. +* To start the HTTPS server, you can simply run command `openssl s_server -WWW -key ca_key.pem -cert ca_cert.pem -port 8070`. +* In the same directory, there should be the firmware (e.g. hello-world.bin) that ESP32 will download later. It can be any other ESP-IDF application as well, as long as you also update the `Firmware Upgrade URL` in the menuconfig. The only difference is that when flashed via serial the binary is flashed to the "factory" app partition, and an OTA update flashes to an OTA app partition. +* **Notes:** If you have any firewall software running that will block incoming access to port *8070*, configure it to allow access while running the example. +* **Notes:** For Windows users, you should add `winpty` before `openssl` command: + * `winpty openssl req -x509 -newkey rsa:2048 -keyout ca_key.pem -out ca_cert.pem -days 365 -nodes` + * `winpty openssl s_server -WWW -key ca_key.pem -cert ca_cert.pem -port 8070` -Copy the certificate to `server_certs` directory inside OTA example directory: +### Flash Certificate to ESP32 + +Before you flash the example, make sure to copy the generated certificate to `server_certs` directory inside OTA example directory so that it can be flashed into ESP32 together with the firmware, e.g. `cp ca_cert.pem ../server_certs/`. ``` cp ca_cert.pem /path/to/ota/example/server_certs/ ``` +### Internal workflow of the OTA Example -Start the HTTPS server: +When the example starts up, it will print "Starting OTA example" to the console and then: -``` -openssl s_server -WWW -key ca_key.pem -cert ca_cert.pem -port 8070 -``` - -NB: You've probably noticed there is nothing special about the "hello world" example when used for OTA updates. This is because any .bin app file which is built by esp-idf can be used as an app image for OTA. The only difference is that when flashed via serial the binary is flashed to the "factory" app partition, and an OTA update flashes to an OTA app partition. - -If you have any firewall software running that will block incoming access to port 8070, configure it to allow access while running the example. - -### Step 3: Build OTA Example - -Change back to the OTA example directory, and type `make menuconfig` to configure the OTA example. Under the "Example Configuration" submenu, fill in the following details: - -* WiFi SSID & Password -* Firmware Upgrade URL. The URL will be look like this: - -``` -https://:/ - -for e.g, -https://192.168.0.3:8070/hello-world.bin -``` - -Note: The server part of this URL (e.g. `192.168.0.3`) must match the CN used when generating the certificate and key in Step 2. - -Save your changes, and type `make` to build the example. - -### Step 4: Flash OTA Example - -When flashing, use the `make flash` to flash the factory image. This command will find if partition table has ota_data partition (as in our case) then ota_data will erase to initial. -It allows to run the newly loaded app from a factory partition. - -``` -make flash -``` - -After first update, if you want to return back to factory app (or the first OTA partition, if factory partition is not present) then use the command `make erase_otadata`. -It erases the ota_data partition to initial state. **Take note that this assumes that the partition table of this project is the one that is on the device**. - -### Step 5: Run the OTA Example - -When the example starts up, it will print "Starting OTA example..." then: - -1. Connect to the AP with configured SSID and password. -2. Connect to the HTTP server and download the new image. +1. Connect to the AP with configured SSID and Password (Wi-Fi case) or just by Ethernet. +2. Connect to the HTTPS server and download the new image. 3. Write the image to flash, and configure the next boot from this image. 4. Reboot -## Support the rollback +If you want to rollback to factory app (or the first OTA partition when the factory partition do not exist) after the upgrade, then run the command `make erase_otadata` or `idf.py erase_otadata`. It can erase the ota_data partition to initial state. -This feature allows you to roll back to the previous firmware if the app is not operable. Option :ref:`CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE` allows you to track the first boot of the application (see the``Over The Air Updates (OTA)`` article). -For ``native_ota_example``, added a bit of code to demonstrate how a rollback works. To use it, you need enable the :ref:`CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE` option in Kconfig and under the "Example Configuration" submenu to set "Number of the GPIO input for diagnostic" to manage the rollback process. +**Notes:** This assumes that the partition table of this project is the one that is on the device. + +### Output from HTTPS server + +```bash +FILE:hello-world.bin +ACCEPT +``` + + +## Support rollback + +This feature allows you to roll back to the previous firmware if the app is not operable. Option `CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE` allows you to track the first boot of the application (see the ``Over The Air Updates (OTA)`` article). +For ``native_ota_example``, added a bit of code to demonstrate how a rollback works. To use it, you need enable the `CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE` option in menuconfig and under the "Example Configuration" submenu to set "Number of the GPIO input for diagnostic" to manage the rollback process. To trigger a rollback, this GPIO must be pulled low while the message `Diagnostics (5 sec)...` which will be on first boot. If GPIO is not pulled low then the operable of the app will be confirmed. @@ -138,12 +122,7 @@ In ``native_ota_example``, ``$PROJECT_PATH/version.txt`` is used to define the v * Check your PC can ping the ESP32 at its IP, and that the IP, AP and other configuration settings are correct in menuconfig. * Check if any firewall software is preventing incoming connections on the PC. -* Check whether you can see the configured file (default hello-world.bin), by checking the output of following command: - - ``` - curl -v https://:/ - ``` - +* Check whether you can see the configured file (default hello-world.bin), by checking the output of the command `curl -v https://:/` * If you have another PC or a phone, try viewing the file listing from the separate host. ### Error "ota_begin error err=0x104" diff --git a/examples/system/ota/advanced_https_ota/CMakeLists.txt b/examples/system/ota/advanced_https_ota/CMakeLists.txt index 3386014f6e..7f8b1cb53f 100644 --- a/examples/system/ota/advanced_https_ota/CMakeLists.txt +++ b/examples/system/ota/advanced_https_ota/CMakeLists.txt @@ -2,5 +2,9 @@ # in this exact order for cmake to work correctly cmake_minimum_required(VERSION 3.5) +# (Not part of the boilerplate) +# This example uses an extra component for common functions such as Wi-Fi and Ethernet connection. +set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common) + include($ENV{IDF_PATH}/tools/cmake/project.cmake) project(advanced_https_ota) diff --git a/examples/system/ota/advanced_https_ota/Makefile b/examples/system/ota/advanced_https_ota/Makefile index 301cf1eb99..df5c335c4a 100644 --- a/examples/system/ota/advanced_https_ota/Makefile +++ b/examples/system/ota/advanced_https_ota/Makefile @@ -5,5 +5,7 @@ PROJECT_NAME := advanced_https_ota +EXTRA_COMPONENT_DIRS = $(IDF_PATH)/examples/common_components/protocol_examples_common + include $(IDF_PATH)/make/project.mk diff --git a/examples/system/ota/advanced_https_ota/main/Kconfig.projbuild b/examples/system/ota/advanced_https_ota/main/Kconfig.projbuild index 3bfb017948..22b772a052 100644 --- a/examples/system/ota/advanced_https_ota/main/Kconfig.projbuild +++ b/examples/system/ota/advanced_https_ota/main/Kconfig.projbuild @@ -1,21 +1,9 @@ menu "Example Configuration" - config EXAMPLE_WIFI_SSID - string "WiFi SSID" - default "myssid" - help - SSID (network name) for the example to connect to. - - config EXAMPLE_WIFI_PASSWORD - string "WiFi Password" - default "mypassword" - help - WiFi password (WPA or WPA2) for the example to use. - config EXAMPLE_FIRMWARE_UPGRADE_URL - string "firmware upgrade url endpoint" - default "https://192.168.0.3:8070/hello-world.bin" + string "Firmware Upgrade URL" + default "https://192.168.2.106:8070/hello-world.bin" help - URL of server which hosts the firmware - image. + URL of server which hosts the firmware image. + endmenu diff --git a/examples/system/ota/advanced_https_ota/main/advanced_https_ota_example.c b/examples/system/ota/advanced_https_ota/main/advanced_https_ota_example.c index e2cd48e425..c2b01e1444 100644 --- a/examples/system/ota/advanced_https_ota/main/advanced_https_ota_example.c +++ b/examples/system/ota/advanced_https_ota/main/advanced_https_ota_example.c @@ -6,75 +6,25 @@ software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ -#include "string.h" +#include #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/event_groups.h" - #include "esp_system.h" -#include "esp_wifi.h" +#include "esp_event.h" #include "esp_event_loop.h" #include "esp_log.h" #include "esp_ota_ops.h" #include "esp_http_client.h" #include "esp_https_ota.h" - #include "nvs.h" #include "nvs_flash.h" +#include "protocol_examples_common.h" static const char *TAG = "advanced_https_ota_example"; extern const uint8_t server_cert_pem_start[] asm("_binary_ca_cert_pem_start"); extern const uint8_t server_cert_pem_end[] asm("_binary_ca_cert_pem_end"); -/* FreeRTOS event group to signal when we are connected & ready to make a request */ -static EventGroupHandle_t wifi_event_group; - -/* The event group allows multiple bits for each event, - but we only care about one event - are we connected - to the AP with an IP? */ -const int CONNECTED_BIT = BIT0; - -static esp_err_t event_handler(void *ctx, system_event_t *event) -{ - switch (event->event_id) { - case SYSTEM_EVENT_STA_START: - esp_wifi_connect(); - break; - case SYSTEM_EVENT_STA_GOT_IP: - xEventGroupSetBits(wifi_event_group, CONNECTED_BIT); - break; - case SYSTEM_EVENT_STA_DISCONNECTED: - /* This is a workaround as ESP32 WiFi libs don't currently - auto-reassociate. */ - esp_wifi_connect(); - xEventGroupClearBits(wifi_event_group, CONNECTED_BIT); - break; - default: - break; - } - return ESP_OK; -} - -static void initialise_wifi(void) -{ - tcpip_adapter_init(); - wifi_event_group = xEventGroupCreate(); - ESP_ERROR_CHECK( esp_event_loop_init(event_handler, NULL) ); - wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); - ESP_ERROR_CHECK( esp_wifi_init(&cfg) ); - ESP_ERROR_CHECK( esp_wifi_set_storage(WIFI_STORAGE_RAM) ); - wifi_config_t wifi_config = { - .sta = { - .ssid = CONFIG_EXAMPLE_WIFI_SSID, - .password = CONFIG_EXAMPLE_WIFI_PASSWORD, - }, - }; - ESP_LOGI(TAG, "Setting WiFi configuration SSID %s", wifi_config.sta.ssid); - ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) ); - ESP_ERROR_CHECK( esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config) ); - ESP_ERROR_CHECK( esp_wifi_start() ); -} - static esp_err_t validate_image_header(esp_app_desc_t *new_app_info) { if (new_app_info == NULL) { @@ -94,24 +44,20 @@ static esp_err_t validate_image_header(esp_app_desc_t *new_app_info) return ESP_OK; } -void advanced_ota_example_task(void * pvParameter) +void advanced_ota_example_task(void *pvParameter) { ESP_LOGI(TAG, "Starting Advanced OTA example"); - xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, - false, true, portMAX_DELAY); - ESP_LOGI(TAG, "Connected to WiFi network! Attempting to connect to server..."); - esp_err_t ota_finish_err = ESP_OK; esp_http_client_config_t config = { .url = CONFIG_EXAMPLE_FIRMWARE_UPGRADE_URL, .cert_pem = (char *)server_cert_pem_start, }; - + esp_https_ota_config_t ota_config = { .http_config = &config, }; - + esp_https_ota_handle_t https_ota_handle = NULL; esp_err_t err = esp_https_ota_begin(&ota_config, &https_ota_handle); if (err != ESP_OK) { @@ -171,7 +117,15 @@ void app_main() } ESP_ERROR_CHECK( err ); - initialise_wifi(); + tcpip_adapter_init(); + ESP_ERROR_CHECK(esp_event_loop_create_default()); + + /* This helper function configures Wi-Fi or Ethernet, as selected in menuconfig. + * Read "Establishing Wi-Fi or Ethernet Connection" section in + * examples/protocols/README.md for more information about this function. + */ + ESP_ERROR_CHECK(example_connect()); + xTaskCreate(&advanced_ota_example_task, "advanced_ota_example_task", 1024 * 8, NULL, 5, NULL); } diff --git a/examples/system/ota/advanced_https_ota/sdkconfig.defaults b/examples/system/ota/advanced_https_ota/sdkconfig.defaults new file mode 100644 index 0000000000..2289a82300 --- /dev/null +++ b/examples/system/ota/advanced_https_ota/sdkconfig.defaults @@ -0,0 +1,4 @@ +# Default sdkconfig parameters to use the OTA +# partition table layout, with a 4MB flash size +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +CONFIG_PARTITION_TABLE_TWO_OTA=y diff --git a/examples/system/ota/native_ota_example/CMakeLists.txt b/examples/system/ota/native_ota_example/CMakeLists.txt index 9e1828169e..9cb3fe6e4e 100644 --- a/examples/system/ota/native_ota_example/CMakeLists.txt +++ b/examples/system/ota/native_ota_example/CMakeLists.txt @@ -2,5 +2,9 @@ # in this exact order for cmake to work correctly cmake_minimum_required(VERSION 3.5) +# (Not part of the boilerplate) +# This example uses an extra component for common functions such as Wi-Fi and Ethernet connection. +set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common) + include($ENV{IDF_PATH}/tools/cmake/project.cmake) project(native_ota) diff --git a/examples/system/ota/native_ota_example/Makefile b/examples/system/ota/native_ota_example/Makefile index 3bcbefac0d..0641428505 100644 --- a/examples/system/ota/native_ota_example/Makefile +++ b/examples/system/ota/native_ota_example/Makefile @@ -5,5 +5,7 @@ PROJECT_NAME := native_ota +EXTRA_COMPONENT_DIRS = $(IDF_PATH)/examples/common_components/protocol_examples_common + include $(IDF_PATH)/make/project.mk diff --git a/examples/system/ota/native_ota_example/main/Kconfig.projbuild b/examples/system/ota/native_ota_example/main/Kconfig.projbuild index fb50b5a1e8..15c4390b80 100644 --- a/examples/system/ota/native_ota_example/main/Kconfig.projbuild +++ b/examples/system/ota/native_ota_example/main/Kconfig.projbuild @@ -1,26 +1,10 @@ menu "Example Configuration" - config EXAMPLE_WIFI_SSID - string "WiFi SSID" - default "myssid" - help - SSID (network name) for the example to connect to. - - config EXAMPLE_WIFI_PASSWORD - string "WiFi Password" - default "mypassword" - help - WiFi password (WPA or WPA2) for the example to use. - - Can be left blank if the network has no security set. - config EXAMPLE_FIRMWARE_UPG_URL - string "HTTP Server URL" - default "https://192.168.0.3:8070/hello-world.bin" + string "Firmware Upgrade URL" + default "https://192.168.2.106:8070/hello-world.bin" help - HTTP Server IP to download the image file from. - - See example README.md for details. + URL of server which hosts the firmware image. config EXAMPLE_GPIO_DIAGNOSTIC int "Number of the GPIO input for diagnostic" diff --git a/examples/system/ota/native_ota_example/main/native_ota_example.c b/examples/system/ota/native_ota_example/main/native_ota_example.c index 4b5f158810..6387438929 100644 --- a/examples/system/ota/native_ota_example/main/native_ota_example.c +++ b/examples/system/ota/native_ota_example/main/native_ota_example.c @@ -6,27 +6,22 @@ software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ -#include "string.h" +#include #include "freertos/FreeRTOS.h" #include "freertos/task.h" -#include "freertos/event_groups.h" - #include "esp_system.h" -#include "esp_wifi.h" +#include "esp_event.h" #include "esp_event_loop.h" #include "esp_log.h" #include "esp_ota_ops.h" #include "esp_http_client.h" #include "esp_flash_partitions.h" #include "esp_partition.h" - #include "nvs.h" #include "nvs_flash.h" #include "driver/gpio.h" +#include "protocol_examples_common.h" -#define EXAMPLE_WIFI_SSID CONFIG_EXAMPLE_WIFI_SSID -#define EXAMPLE_WIFI_PASS CONFIG_EXAMPLE_WIFI_PASSWORD -#define EXAMPLE_SERVER_URL CONFIG_EXAMPLE_FIRMWARE_UPG_URL #define BUFFSIZE 1024 #define HASH_LEN 32 /* SHA-256 digest length */ @@ -36,55 +31,6 @@ static char ota_write_data[BUFFSIZE + 1] = { 0 }; extern const uint8_t server_cert_pem_start[] asm("_binary_ca_cert_pem_start"); extern const uint8_t server_cert_pem_end[] asm("_binary_ca_cert_pem_end"); -/* FreeRTOS event group to signal when we are connected & ready to make a request */ -static EventGroupHandle_t wifi_event_group; - -/* The event group allows multiple bits for each event, - but we only care about one event - are we connected - to the AP with an IP? */ -const int CONNECTED_BIT = BIT0; - -static esp_err_t event_handler(void *ctx, system_event_t *event) -{ - switch (event->event_id) { - case SYSTEM_EVENT_STA_START: - esp_wifi_connect(); - break; - case SYSTEM_EVENT_STA_GOT_IP: - xEventGroupSetBits(wifi_event_group, CONNECTED_BIT); - break; - case SYSTEM_EVENT_STA_DISCONNECTED: - /* This is a workaround as ESP32 WiFi libs don't currently - auto-reassociate. */ - esp_wifi_connect(); - xEventGroupClearBits(wifi_event_group, CONNECTED_BIT); - break; - default: - break; - } - return ESP_OK; -} - -static void initialise_wifi(void) -{ - tcpip_adapter_init(); - wifi_event_group = xEventGroupCreate(); - ESP_ERROR_CHECK( esp_event_loop_init(event_handler, NULL) ); - wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); - ESP_ERROR_CHECK( esp_wifi_init(&cfg) ); - ESP_ERROR_CHECK( esp_wifi_set_storage(WIFI_STORAGE_RAM) ); - wifi_config_t wifi_config = { - .sta = { - .ssid = EXAMPLE_WIFI_SSID, - .password = EXAMPLE_WIFI_PASS, - }, - }; - ESP_LOGI(TAG, "Setting WiFi configuration SSID %s...", wifi_config.sta.ssid); - ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) ); - ESP_ERROR_CHECK( esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config) ); - ESP_ERROR_CHECK( esp_wifi_start() ); -} - static void http_cleanup(esp_http_client_handle_t client) { esp_http_client_close(client); @@ -128,7 +74,7 @@ static void ota_example_task(void *pvParameter) esp_ota_handle_t update_handle = 0 ; const esp_partition_t *update_partition = NULL; - ESP_LOGI(TAG, "Starting OTA example..."); + ESP_LOGI(TAG, "Starting OTA example"); const esp_partition_t *configured = esp_ota_get_boot_partition(); const esp_partition_t *running = esp_ota_get_running_partition(); @@ -141,15 +87,8 @@ static void ota_example_task(void *pvParameter) ESP_LOGI(TAG, "Running partition type %d subtype %d (offset 0x%08x)", running->type, running->subtype, running->address); - /* Wait for the callback to set the CONNECTED_BIT in the - event group. - */ - xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, - false, true, portMAX_DELAY); - ESP_LOGI(TAG, "Connect to Wifi ! Start to Connect to Server...."); - esp_http_client_config_t config = { - .url = EXAMPLE_SERVER_URL, + .url = CONFIG_EXAMPLE_FIRMWARE_UPG_URL, .cert_pem = (char *)server_cert_pem_start, }; esp_http_client_handle_t client = esp_http_client_init(&config); @@ -330,6 +269,14 @@ void app_main() } ESP_ERROR_CHECK( err ); - initialise_wifi(); + tcpip_adapter_init(); + ESP_ERROR_CHECK(esp_event_loop_create_default()); + + /* This helper function configures Wi-Fi or Ethernet, as selected in menuconfig. + * Read "Establishing Wi-Fi or Ethernet Connection" section in + * examples/protocols/README.md for more information about this function. + */ + ESP_ERROR_CHECK(example_connect()); + xTaskCreate(&ota_example_task, "ota_example_task", 8192, NULL, 5, NULL); } diff --git a/examples/system/ota/ota_workflow.png b/examples/system/ota/ota_workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..d48fb8fd63a0bd815e2d5037da4edf684ca7d462 GIT binary patch literal 114546 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

nP+rg>@wVXV&cQtUo~O1 zT07V~mhZLR!sRcmarN#y=dF$R=H0xtIBLqJZwwc|tyuf?($;O(Yo&Kx%=VxB;NPv( zJ$l?4Tfga@opm;C?ac1gaYFtbA0NFYvu=&zIF-SNSLwc)RMy?q)9sHIPF$FVC6wXzs6;%>PeA)SmH7vpqIF*~Fb!<*tW;$n#$t)Z45tZrLjr zbaRVu@Ql-|me2UF`}0{B?=}fzje|dKuUq-7Sm!6pfi-ve9y8rGk)8qROkX-urMHE*MnuR`LsHdk*ZMtuJJWbXf zekpw9zTX!8>R<+eYVoyd8;Zr|pI`KlCvMmD#?>4$=PnugNF;AvS*L#3PE}K2!E>1+ z`Q)1!-}<(Fjh;O_?b7yKOLn0MAhL{542q4L(A zBOAQW{Asz_%$UXh@Z|QHb+(pfN8g;T3CmPjA9Z`~lTh!t(xuAh!$fLa=dIQFqpPX% zmP0l0$khTBx7nL_R!m`P&EoCkDP5a*PVucqWh={7g@tZU?+EHxINyrwP}#Te`1ASG z*@dU`O~_SSrYX2B*leWa~WZ9a3#pCsgDl!^JXnNrg#_K`+5QLV;B*7o95<+vV>i zUQE6=X@(rn-;Qfn*RP5W<IxYL__HW!h-^FSqV=d3Hh=W=*3LNi_e0ajy#oY0!WTwW| z2mQw#?k=x*s@Y|9;;gzx-vayo{Cch}K_|WAw#Le?T4nX>?)S3yH(%fB;acYy;5&Pr z`(16z?<<;;Y*(#{Sfbd~nz)ZyKC>NYVD>`x{55lLr5|~@ zW7P_)si7e`=T>XIyL9>1{#>UEzY-)Tr^@v0ERe{M-m>S~xuvf%E?%5`I4JtMnci~2 z$XKJ*uRa`?-?uW|+*>Bg)f?KuI3ch~mSJHZwWgX~hQTy!8!o%)f zhMU}-_j;K0zPUVcu~ca8I*LoKT)e7KY@*o1)uB_m7Vj!9Ul5UVcOPfQ)y>`W zSM=Sx8@-M1!aq~y-TKowHYWw&nw5FbQ$BlkN$9b#?V-8St5P3xF4tG6T6OCZs%0JvgG*z&4`lKdu6XGdW5dE3VFL;7q-9sB2+lZF*oc_n|w{rJ9J$dl-xXpyEGrwN8 z+|qoeTj-~s`4O9Vmg@bzzvR|c zyT4*@p#9r<)w}SEnaGKGq($WwEKH| z`hMPGzU=mohriD_DB)kjJH_YQ`GoU4&rB0P=?l;%`$pzPq)$67`YuFaE@oPku&Gn-PW@#<9 zkhExe(WmRUq5a<5=&FSIw$Im;?0&9SX}PXjI#=~sP>h&X3%HRd##()IuFvF4(;rtH zJJMD?bECliYdk-j_};EfKlP|Pr)I9?*bEl*zuK78Mma>?OTpXRik|HL+> zprt|fMh9iVBgBe+zNwdOj2?b55zATfP}#(r>BQZ$$7as)S$e{uMEe%+(!4px-8PAR zcUtfV@*f{_Z<*t~>e`(RI zeYyYm!p^Ga8C?Ihv5xC_Ut-77k9$jAtnoZ%P@HKxTfE?%iK^p~tqcDKWZl@Kd*}42 zn@8??{|%{|+jeWJUt>=3yqRp0&_S2SJ-7E{_D8v8?mM(D|K|3&b84JkUHBq*Ys==J zlOe+~=NaeBIJPYG$rORh)6O0C;QDT(9@n05>-Z`8PD!8F9%i-Y4*s2?yyEiob$>ZG z`BxjdFW+3Ldeikt*`n9YcJ(q&l^+yNoLYEUoLJ`uu*$1^%iZf9Wp$ za`9Bw(NCa~qD8BDW_S0E58MZSvZ}ZzzH#5|(%1X&aQMmZ%hTMOK6}hOxXFBHDd*o^ zixzizd;FYGlVLim?cMIpk{KqGviB!_cM9^meDwL+r(JxTicIVF?p(*Yvwy=I-Y~s| zKlfJgHE6b0<_GQWm?~@`>*~Xj$$s+#XSDs}lj^6YxS0^_OHvoX*+BVoL_q9@7mnAbDy&n zt~uZwddYZ`_nEXgoAqU^TOu}#i-S)IMjDPUlnOu-C_Q^KhoGzY*W!E{pHs0`fqMF+fsFXU%7`* zNlWh1#j94u_?$kWuW{t(LyK$c+4&~s`Lgu)_Hl6XmFVE{oWtwookjw6_NDhy?zhM6>$ccC zdBZ{e2Tyiy`8!Ko?vVT^bHjz))$wWH9d4-w>}Y+j?wlPL>-{#MVYB>)bD#g1bcMwW zv2@9^S^Q-6bvOQJd5A~i&x&_8#y7vYSHCzLz3tmU`JFnu<~Ps0vt^E>c_PDS(PyQp zC#`i}9DZcGjD$WC{KT)G|B0}k#FiVewhA}pUrSC=;ZX}2LhtXHYH`d2L=Qb zedg-wiWPf*>vMJPr=ZY4k>*7#tT%%fh-CL|iaT;u(zLMO_V7XLa6uw7}L^ z_PXx&+*MJfHA-QkdH(OWO}!a)(P!CL;|)_aw(a^hzbaWgG*<4(8)Xissn346Tw3r{ zW7drzJEz^3_Uq44sa)N+*K+#lnF9V>c0bsbps>u+;aBE-@qaOiPq$BS=$B(Sw(HA_ z&Rw0ozxQ6tIxG7&^ zG%2@rcWDS+Hhp%JZjOc5f!sTn4p&_?2w8kRn&rSXO%aA^r+3(I?^8Uu$;5cdwQ{C8 zcI)n^y>t!;IB;Vc7BQ0opn~7>lVM;^>xvXzID0!I!%|PB(G)%U9DW3bTTB5F8Nmg~?#>3d!o1sw~W z-t}4f=)~~1*`-(io!a;4;`Wr%OMEP{!8>pNo96%u@YrJ&MXpl zq-XUivld}7j_?y^jvBk3%wys3{qi<1-Z1*VyP%8MhN3lV4d!#~u$X%||DsXU{gYuorvTTf}W`@7zu(3XFxAy$5v8tj{;tMjo!*6LmaC_eT7RSraw}H*Hd7zh&p}JYe4{t536a&j*IQU1z1*5OL{f zXzr}t+w^Yjb z=NTE)-3?2P7Hg`LexoTTVJzDR$PB;>C#KF1^p@9`ydNlJUVkP#{F&7*zj20=Uej5H#4}|qN*!?Bt3du z;zcNxZL;hChDTzd-|j8xZaui*@{;F!vgVeRwk_XL6V&zY4d>K8 zNDKX7Cqw)GwC75E^AyTBVqZ@%o3`?O;U9){^9?^7>wHzyEZ)9;xjmud`MgS#&L=OT z_uT4|%-{G-`dalifT^JG@DnQ_wD7EnRe5sk#OB>P-KDw5o^?T#yxd&h z1IJ}5+9R)Tt~NXT-TjE8oz7mR(l)gIE>l;tpp82!n4L?a<(T?$O?Oj+E8?HIOx@U_?(`$k0 z3A}T}(()s$Wd%dX50G&^O?BHp#Lq+w1{(yXc4hj;(! zfloXBP_|wx67sw~aQFJKE%KqEUptr2yT2o|d-<}aCZ)QNNV&)-;fmgV=s)8U(pjf&^EJ=yZ< z!qg>4W-K_s(EVIh^_lSUt&%@ixyruG_PV<3$p*i*|I^>^dAxYlG>d=M<m1LuQW8VL)%*k1}bRPndWb8xCU|8DO0<8Py#ggAfH zJpcWvv;4em>bskJKHNSzXQszw1=p~EGC#*Ew{7dX?S9QVDa;gf@%RIU{}UAKT_rc4 z&YW5Kvz6h?)OefF#?Bs&kDosV@mt4vo$h@B4RY!a-&h$AaJ2 zUO!y5Yf(YGY5U=y-xHlHlAoIu8!U z&SLUc|9Pd!;Mj+Zy&56wJij}gEmsr`3Dn}Aw5#u2#LE4%%KBcWU)3p}TyV>orDIZV zGo#P8_)}UQZGL$dr)=Ak>2izDqP%pLTcu`is?Yn?*OVM))G;}WSiDRRYAcNY`n7#^ z7GL|}hXw!iS2UfeYIAP%Ia#rM`rTbuuRO_5Xw!OFbZ$p>>NVjR>$cCi<#+XDkKr*6 zp9!o>pQuhN+01a$cg=n77w0~#{2rovuBUgBi>k)VuT%b%P2ycrEwh*>v^;QnB!ACK zzpaML*G@QUpgi4p!YYR8w^&a)9b-8*<;yjnyWGpqRPjuRu1MRf)rxS*l=ZjXGP>@~ z4y)I=kej|^n>VXZjLp`(Wu-f{w`(hEU1-^Q+#=K8o&W2`yX(?oP8-x(N_;myG0jR^ zEnFvEZ*}!7N8?Tx({)i-dP~3N?CvYw_h8?vRSjVCf3`og=8&J$sJSKRrKyEXf5@^V z%ax6?QQ~vkF8i)%aotf8wmZ}Du$AeW_a~-IYVdMsZ;ueTdUj2{LT={Co;bG_&0IbXD5H(smc zUs^u-_o~$b>sDFH@I9Ard(b>#micWCKKE9h{}(gkeolSpRK_IjDmgK5d(#(1$*PxY z;w*k{ySn>V(mkKR=Sy@}zhBu`8usg*j{f@fQM?9$k5_-)dMfspweP!K`M+X!Zd-rr zX3iwvCdItAp4eW!Ec3~`55Dx!UOuNF^z6d|3mLxS%slV*oXR^oP2@{;ZoFxaUwE#f z=DH~R{mYMtor#?*a=6fAS+{fAIpH0vyvz%){&HK+kexiW@Fx4)JpV2Iyis$yUKEx} zm|y$KdDrTo4TPm3}1WjRguRp{5@hiAI;9?Xb(>OVkma( z0=uN?mg{#Vri(2vV7b2Wy1^j}=48=`TT4%_<=**c+KFSvPa{$+)h`^s783GUO8FwM zpj@6^>W;YwedD)t@6?=da;MszaF7o|efg%{>AkG`p-%tCkNntk|Akc8C3cu(|G%iR zs{LHSq<)qOFWwxU#uv0oc(-NH$~haGZQRyNZ#}q#`=`R)*d2lw&onFPs=r#!qhw%Y zqwvzoQ+A6&M)ED2WqDGXj!*rJU&se+f9O*iu{S>Im5*NX!rSui)~&Pp@xGj|{qWD* zGE&`J11sL-?pW{qsNZ^@Q<=t}Q{SH-{3AN!qh{N`zFYgQU-sZz&NU&Z(qn1h6}1DZ zN={-I^{_X46O;Klq;C;I8N}dplW@l?~Tu$+oZJFEXnz5MdkOsTuc6J;XwCgnNt zXIIwL`c}l0K7Fui7AW_sRo>VxlD_-&%5`@hv_9hxPuS<(J#mY)>z+4e&+8dfr?SkD zdKewnvN3VNtj9OgwpQHK3Hl}IsiD2fPj;nur{n;?;Mlc z(`PH%SS;k{zW8wj%S=Xv{|sekj_UNWx7fHR+&iweox&l{9dKV9k#5heyan2hWM^Bi^?p| zeD#+ps>a*0&vS$x$=(&Yebutdz3nPr<0^eqtX=n2++sOukg9NU^VI6gCHt}-?_OM= zQhq*rhNIcOH8of7c*k1)$k*U&|NQ>ZCG&`Fl1^6B{FoT~0$*H`Sn6*0JM7I~j{R*b z#JVnbZ}_QfGPlcpUX!SUpc&7>^V$hr4qK%*EKmCFqf^J9Y`!?ugki~;kq6;oRK;>oI2pErICos-vC_Wkg3f#~?do!1V; z{Q0N8>Z%s*d+ujwCX>0L3czxn>-1TBU)|M~2`UU;L(!s+o(V7|Y@Le{Io4`Lgd zKW})Z`z5mT-`uhdH z>!xwH@5uTMi}dHkHb@9x+IRSocgJ2~-zEl!Jq<_wAL>kqk$>EF%6m?Qcz5{Ycfaqh znYWcgp8uGr!WK!UGZy<8X4|{Wmj8HQuK}}@qM5%#k@gecqp$vQtZ%(^`Nmho&A8+SAx&Hv)qu1^eMcX&NzOYJ- z;mMjqPpmg2m`LTgelgf1)@?2vU?Y=%zV*B5+hl{;4K6vmr1O_6U1C3R{8L}Vq>kR| zf^zqszueqXNwIQrmQ8Jq3;}zDH>)q$AUE%3Q`11 z3%(293F2osx4->+-0?R3i^*&`2acYc@muXG~&XsO;Rq5yF4?=28tQE`5fbH}*?s^!&Q0m;F5XY4DCi1_}JXwy`u^QvR_; zwQPUGy5@lM{05DTKe(;iAKv}i@u6u(uYFb0ORhh=MEZGK3(oS1{$KeZM9OJqXu^V6 z??le0E0~mjdb(bGsB(Ksl?jU~=N7{qPH&xEb}{!QFt`Ycu4YnhU$A0d`tl%)Umt{a zY;o4VDq6o;G3QRlq8iQwACa$o`Du3&%cWQEGx_m;DyMcZ>$6)0wy~BwRy`}Q_^-zz z%<#jmXWrZ=_X}KaZ}`Ztr#<0V18XJj@EcE8{HVdUb;X9(9!9Y*KLsY*F)+k$*(2=z?eQVW z1&e3@OHWhc&G=>aO8cVtzPW}A-6q` z%iOBR3qENbl6PHkH8oe->Wov2qLkTWX&v4R8(IBSAKgj4a=DgmN3N369tH;vm+$5q z(-`{BJ6{a=F=aRN@}`hQ+mwo-rIJ!f;);dccLS&U_|e>&Fe|GI15j43_-oV@MZ4tw3$TDCBE!JoM+H_e+;?jABf z#Pasaqfa!V)mpE=xM!J~UzvOKHFx+`8NTQDJ?{G5TEG3y-4kp|j|waWGrbmTCrX4ap*jMwnzLAC`Fe1d(aE#@*E zVOF28hObOPiOb{I(VQz8ZMzsPHpu)uued>g-Td%&=~-WoueVozsg!k0F zuP!L@d|8)J{?|l)Rp1h*tM>vPbup@S`Te@xyUI*WEOFAUt6vt&Twb$;XJYLMKlZ;1 zP9I#}`8a6z;w@MBLT_2ke|~v&!KJ%b*)jw=CgutGH%h(I-Yz>wFXnk-&q_(oh1{PC zru}#o&wJyE8a^6z%x1 zV%6HXUE;e`Wg<103WVaz3XHX^xjWonm)+Pc{k-@=HK+Tz#cA~{Tir}H*bCmxR<6_( z=o0h2yMFdB=CuC9J98KeejdnbwLQHwxWQ3o_Mb%7fQF=vcVsO@mkBKwEq%^>_k_tM z)5)Kfo=iSGC#uu=MVs;Usz+7RSG`(zZP)9Ng}e6X`9xod^k}o3GyR&(-GXUL-#u3G zxVmJC%|x?}FZSpfW%27?-;%ZQoo1-8N9?@^udi1hSSqfhFu%H_%4fyB%;}a2@B9BG z2OP_EeHkTCu_N>-q^%=;@qco{N7jZJ-wju7@BV%~x-XIAO{Y8m!UrsTx{GZ<}O6$lYWHfdn(=hPx~7%c?RcguHqo_qj>ZA-Lzi zn4RDMEG~{!tQ;$hMIySDj|+UmsDtr7L+lc&EsTJNT) zD$;y?K{fvk7KR&_W#j*5zHwKWYbPcvz&Il@>FK)zD-EW0GJFj1jlRCjlSF z{W^d2+dM!tPL?ed>XLDG#Ze{1>u z72{7Wo*VPq@AK~XSo45}n1`{`n~pwxIYlhjoTc=lk+OpYv}(&gzTVEqp-^v8^serR z3lD?&-_CR1{XAfUsC?<6d;JsaWG0$6Jl5cI$vG{ZvVl=sDY-#qNesiP%(FL-Gbm{M zlk$He=55imcE=q4_s2TE7Ts6hpuMOud3InrvxZ#hYDP1Y7Y$Qq7yQ##dA{gdz;}1! z%l{m>1b&<4yadPqPqw00MjPGlX-<@cew&%54-jTTze?4URZfxy*u6V~!n}@&DS*~x5 zu`XUE_U`uc0*n7;HMbW|lYD9aFlXJhh&}S3k0t%C>rnEm@6msMXr|5Eb^ggmSQw9P zunx%9U{NUK>nbUpH^0p?|3Qt}f`5mjs^6Vvwm?|1b5;&EzH)_Pha=D&I8tit5NOF!OiKPtLz{c4eSt3j1sna@TE8@^z> zgFOc&>=-vrJaMmcs{X?WF{k5>0uOj)en_6YDe*%jDcLc+u*U4)DW@mN9NQ1t2-(^l zymkJ=Qt@9r?fW~Pu>Qyu;<~-?I17US(?iyjykp;7IryCp=S}@6pFKnH0soxi+ul1C zcI*>P{J!Y3`i(Dw`?wG1{!KW0?9xyq6ru5MtpeRnzcuBmlF9*f?=?G5go zI_}ch2M^D4oA|rzFL!yj(aO7f<)@jjZ;Fa)RY<=!Iq&83D_$3N=*JwsW3z43oL8P< zRR*!P63*!~xs~gdIq&KV%GeT97{tfY_^#6v&Yx=GA_7vxxz-+zP?93Ov71cg}vPOy^Puo z4m>v*Zbz*7CosQ8 zW?LpXFUQ>+Jog!HORTA8td5)T+oVeJ`@XeT?ABP^oBQ#O{EW{gVfXr{22Hk)@;h?( zeCDy^JWb!jHB1&(O7A=>(#vLA_)tfQP3efU65o4030t|%c1QbT85^!T{I7iRu=n%p zf=`lrwuwxxXJRlpu=o3;?bRD1ehE7WRMj=F`&uF#yP5fU+rvP`?nN`=7yJ`+_j~;? zv2D}cv+Km?iRm78k5RPW^jh$sk(kzPgX@)FYUkWm)m-x;-!1BYcHTsj7~YQS+GW>^ zJM((WZy&t-`Gc0h)I*<_8-hCK+aEeS^GtbuXgAxT#W740GAHa>&-lz>5{ToE)0=5} zBqqkPRjKX4E{-py`(~F*-CWAi+5G+Mhp;Jeu2EcjvK1nx|2jOcQ+s*hcgKo9Un5x^ zF1jv>WnvNx47ZD{h~1E`WXdVhv0~Q-kIT~(erxSfN;rMMUC`n#)BE>MGdjKqpAZ(j z$YJ+NcxmkF!}d+;^C}hvE_U;``FP~4*^)yRoNCuEcfE>Ls`}FT(Yoy2CxeMrEDkf5 zOFg~!F8oR~+uYCw$7?5dU7Zlg&(JtSF>BTpwZ*noPgiCoXtH(|ua#^v+`m;_`RiR? zMafm0CK-F4wskmi;LqQ^%1+Fx%T1HtcvY48#WlY3d{DA>yM>O0fx!Xy+H$?+>Cc~u zo-($y)wJ9%n8h~3Jia>f!~@1Ag&no8QxET)w@&2$n)o2lV9nGS0(ThnX4-7o-S}1D z#Y;VfAIhhS%d+-c6@)+CFe$=GQ1;cG3_iD#*RQv;F&xllGfi6ec@D#wgDdV`yOH9W zU^=}nti{wZLJ}0Y%d;kK@{zbLvNx^gP3R?`9bSH0SHE*uti<41zV^ww3$Gn@<4t)i z9b(!KtjOKEMm)=kO4 z-pat3A_=Rxa-|b*&w0%bYU6>%Deo-quegvht9{<7*6du@W~0(99c8=2KZ3*#&O0Ql zqN(}n%ND6Loy?5dG~P>^8Rcvhf2{3Zs$D;sXBuyMFrw|4K=|60gw>lT>s^W5E}iNs zxT8n)Z^8BD!ManTPR)Ej*S#Tx4?IfOe)!>z_Qo$?Pl|f{)}PFO)bm^vlcA-Dvpuh& z>t&FB?!7_3yP`a7 z_xI4rt38s>@kP(&4*xtWE9u4!fBWUH_JmF^6*}N0!09pdtJju}XEI?^b`~lY8Qn`T zD1NW6=6PRBQFTeF8B61or!Ugf93^Zw1m0d2$n)mM%$`o;?N6RqeNEog&&Kw7PtLRS zciE!x#vUqfZj`^=EMM-W_#oi%;lzUFuOBBau`FHpZc~=_slz+Aty8f1s1Ay*JQXIU zB*8~jQCt4VT9^xzG4Ee@y2!xqY1PA9&)sJ69y!joHA_UX>xsb8AF~|SO1TF9OcQ7< z^Ii1n3P(wYi%afox1*u_UozTW&-u0XK?v_1;RB!n&2#@*r>=-tC!XXLeDnBS37+k# z{f3wCD!rX$qQ1pO*ZACey|u2c#*YP-`MosSFBJSRYwfGEX0)52woc1#m1?lk=H<523Hdoq`5 z9e=Movcth>%9TQ|C)_Jl!?!2~Eq+({bowv1yREPFv?hw?Z42W(dEuLwMWLCo`g#`@ z!GIv8ch=L6sjOXHSLq;dW8dO%8NST4Qzy0ktmZ$RQ+)LDG-;>oIrmfjW0KSQxFKVs zGN8ct5GtIUG9{NsN9Dx*`{$!y@~fRV{#4}di@4{VDqeO`pQdm{88RlgCpJebpA}|Xg~bW;^355^;%}DBXwOSm6`5dvBN}7%f-O( z*oMt>MN+%7>Wu?#*e4dwWVM%G<}6VZ!9-2{WgPiwfp!j{G7lbaGXgy^686 zzV&tmE2ASxhQ`aj7PfL^hHv)vdV5vLiG?xs_qEIG({9Tqg|sLh-8(r%Ur%%IoN1C0 z52Pg?tbWftmvv`lYvj$!i4PqgE_6IP{SxDnINcwWPYZL`b1+oi)Jarq%okqt5VjT| zY;~lTKyXY@*4Bt6{i2r^1xZa_@;Orde5$80JKL{FowWFP{bkj0*Nsg1+C5y*|gmK!4%BKR5UG=JfOb{{Egkd9r@YjtMho&YU~1l|@@s!)a@;UQf2YvKg-5ktujbWCJX;i(!_;WvE>>*LlBKituwqx4po*6{b%{j_-JU#olA88>Hp{cuug`{D-!^6K1dqQA6N)Sk zD|T%(6l^-c^r!Yzal*vcFHao|{d!+XT|NEnt*!TKzu&#KHv04D&)!~MJL-SciyWJA zHS6o=&#x~mJpAI~;_9!jL)1GxMxk>Ebthfg-Nm zM|omTv>$%B!P;fBXFynZxm&dBtZVNCbklS*Tz0zi1^RedZ7sPefAr|ldvRv%F9cZB zj-H(2u3sDv8ou8(>B-ZlYooSi-P)4b+1bg;%4&XF=G^_(j;?MHn64MQEAQ^EZ*Ong z|9moe``xnH^Y54HIDuwG{wEt)>|B+&HR4!L<%X(WsZ|zbW$KcLt)EQD&UJDYXboz0 z72mBBZWCCQ{qc~>&l6WgPgpEe+Uv<>P=Im*wf`#KX7i{f6#1cyG*sOPjA{q z>tm&P#fP7*>|eHSX`M{su@k&c6MOkemUC2;-(GZo@{Ac0`T6fHi|e_#c>|^;KXBTq z^>Ed$Ljo6Pp#O~!3TU?*t)YQZ)ZT9BQ&du@r>*m*fi`<%ZHE)}% z3}1V(u;SnPLr%_%SBD0ldoHOm>yi7_(^*X-pS=@SDVTEQ|I{-+vpB1AF4tAJlj56N zrp&qS6L9CokuB?18Hp|E|DmSlzEPu4Dk{Oqa_yqa+f+2mUh)M$ik$Ik%C&RaPUg+0 zKlm*m70mYFZD`&$)f7M&P4@k`8~^Djer&#wtj zG|RnpWpDNO`1-$7ysi|f6)x%v6F+}nBEbU|+3oZuJVl)xnXU9i@H2!_L?61H7&!<*y@w{!ibEFvsWo@gztlRx=mPzKN4T*=pG-k{2 zwSTr}4_%aGxkc&vDNWm?o|3B@6{~~3?sWQMDD2a9Dj@E3UTAIla;+!7Zq6|4S`xS< zf7<$!7M*(*UDR6J)AM>!ih*aXN$ip>=S+?={4G+5HJ_Vu?fm-R>(^CT^Y|~x?fy6M zYF^3>)uz+iR+N@r5gF%rG0M4 zCoV6)rB9qE_ihTfs_jxK^mx}gxy0-9{KTscuGwrbYOtFKX8dRLE2b;eEC zq}_h36$TEn-n;BB?0T85mNwz@rl;?CjL)ozkGd;e8a*Rzs$-k?cW-amrAy1$!i;a- zzkmL^ih|A!@vJ9Y=fi7bK`za?z3pwM`n(e-HNzLVpWELvWy+L|$;Yp)3|=0(I?VjG z7+?G0l`5iNLzydHtvudc+^&}UbDP2QPd~RD>a>>&6ngcNU1I98f46eCe>#z6`>N$# z%jVc(#^Is4x!I`Bu`)b1rqmaxlJG+#C*~eh zILdnZxXe{M2FZ4hm-Zg>FZ*wAF%dP)6lrW^NiEeiaDC-=A^OA|F;)g4hoCK+?o8&{ zCfTd#xNF+l);Da^zB8_?J`@wBa&hSzRz`s-%MEmVQ)*KFs;Fpa@5<{|aNncxO~CNw zvb&CpI1av%joLhU()IVZLSFhm-Y>Ln)%vrquC5l>kE_|d_Q9Q+j*Np%th3GY_uXtO zu#oXfUD2{WDlcV21^WqiQAV{?+q6%uQxg35ij`bX5GaxTvi(c^yj!9vdpRxF&)v0R z*@dOiUQBj}1v1L7P7m0BdbKv2#?=^)`!_TCt=3+OFXyiEo{`phM}E@h84G?VD4vM? zzh&i;%)~pPrGCxAvowpfPVcrUB!z1@FrJ_zBE3$Nwv>h4zepLZtN-a<%H zQZjg%&&zvzcb`nzb#oiYiAPts#B9A4GG(@#lAvLbQ|Usj;BxgJCC*dXVwbGH9Q#*5 z>8*9LfNbBCD_5HS{F!iJ!i5V4p7LD^0!x=JfBGb4HcN1YOUwNE^F0z+Ccg0b^m5W9 zp%b5^{{3UTx+qyi_;XRQe%u}o)jc;)-_}-BJC?IeV8*))#i!4oFJHE7mXA|Nh^fB5 zzNxxbU}EB{r&k_5N{W}?e`1A4_f03CZC4)(1PALsef~63C+wtL>1O>H3vpT5WTTm! z4IB+Y!9hmG#%sg8OGIrUfC&n@Jas!Vti&n~mnHT?X0 zj@35>eI8gktYTWXYW>0Y`~UANe}8XwF6(poBiGhOhp&&jySw~7XidQ3hao(BJ%ZMs zKF6q}xpvN$%R9sUnAya)R-N&m8K^sL(Ore3j@+u(*-XkeWpU1VHYt0Lz`D4-Ru8X+ zZ_B+O85JZXAo1bEVgCNgAA(9773}LjE%Ef8rl+f=!;(BvaN=V3`}O}pI(p`uq2$$5%bQ)B1VQ-NbECQf3(+4z|l5IeL|~ zz|!<goS`ZqT|12ew!~x#e=0ya!wqOS(Nv$8x-2c*6gi=? zu6=s_l=zH2zsfny?KNWj!^PIEI(_J2!Jj{$&+oa#?e1S!_wP_EcmDprWp$I94?p~q zAIKSB>X>+NsxkZdcX1i|nmQVV9*QjH2f}$DoSJ&&;$pY()nRW>>n}fkb>-&D&(rqo zv0>oboqT7qf2`NeFAv$}O)@Vn*|8$y?5(Z0x8=(le$vy|*H_Zg)B0CoXv_28wx%?QayU~sEb9>lM6H2kMT&^RGgS_P*8AU`lQMA@mn%JFFRZM z`kJ7JS#F-h^>F1LBZOzK>?K##fC4Hay@iI;8V9t0`C86e!qN2Td%~q z11>_BFJCs#y-q`~pYDHqdp-Z(pP#?KzuUXi zncaY+NmD`Lf?^j>#GO{`2{K|DM-+N=%1O_eu#1 zO8ic~`RPMPhxxsl%X!VUvF=1XXfDMu77k=eQRv$ z1no@*296dLA18115@A7(ZZri3GpU>NKb8+Qu6P;5pGjrz5`oCYVpWW7U_+i1S zIg=(`+M`tMIC1fU6M-R0nOWyE??0&#+hvoVvgftck-OpzO@IFAMsMqrx3^O`5T9^H z#p5_fCnF={zk`a3`~UsQ4s&ZeFynxPixA7?xM;4RJPToA3G2#FM>>Vov#zXIxa%OR z;{>ZGPoJ%e-McHUX3v#PNk_Tjf>W+q7iiW$B!#lPQSjkPFGV?kVVsp zl|e$$Na@n?+v)G_?7SHn`H5X9$V7WfP!ErQ1oMfctzMO{S&p$ZUR@u5KWnSjLDM$h zg5AbiezsfJs=eKPt6$>uS^blzbp6h2seCAQ3}yWuTHVsIE$?nrXXC_)6LW8G>+SFV z{_WeocVUI=lwDn2)&1xB`1tIp`B~(8Jn!C~o!-;+LK8*X4?heM6zydQ)GN_fJ->QV zke^to%dS~Zyw=+PY_0j{zb|dc6o-&%XFkP?Z2>_+m+r{d`}lg^+?9Iz;NRa@@9|1q zd2e4ZVf*&)OEf2|@3C4~KHtuFwn^r#EuKzJPM^hebIoR7@fT>h9$$U;`g#5ajjrQ; z^8KBiFE4IZ7i=u}_~$3PTdz>(fr58ucJ}nF-v8%U_lp9Zm>mf>C#f!S{!?_UyPa=q*7Y=ph=><0*VXp?d=||u z{_oNj&&SWs&fcDTe_iG0XK9mXKH;5E{(i0by&Kz7SD(zWs{gk~YJ;F`?Ax>E_l=@; zmdMS#^4{iU%!Rh?&Y|B}F6B*}^3o-4+LcA0e|-3luCZcP?5i zWuEuvX8QcnS65D+KD}CN&7+w3uI}#bIX6F@F+MM2RkFf~*?*o*=JwlX)BgQe05z7K zU6maqlGjF=RsY#{yEw?7Vam+tT}FnX&y7nv!xPS}y`Y`*>`m@f{%g@QCr+GL^K6ZV z)wy}r+W(Wi7!p2jGHj4|eQ)jURiUf-#1CkyZc+5+3Y1EduwZNZOv8}diwO4+FTzlZf<`5euYKB%l*>R(!@kX z)l}zBT56Z9aO%vNp5ETAx7Mupn^Ew7?{_)7nu_=L_Igj(oo$j?bUw~j-EU6D=9_Fh zGBKR?{g_jhag`}pebb^j0ZJ32aEPWM?KtnOzNCm_KbwKZ>R_IJ72S8pwJX0Ke| z_~C1*HY-!6wPC`7KY!0+lw%B1E%1FHsJYRvwe82R zUv*!vhJX4WZSkM`M$Wc*w$*;~?f&*zzgux(;}!4edZHpCEG#S`b8|u6p39y6>!Zu> ztQO~6x2GiK?awVup}T`pKR(keX20@*{UxhlvxtZycc^8A<7>uaCoVX=y|sP){RIbQ z%kLPLy;;n;{f^Q}``p zwRy&hsn&tIDIA=9SmtDlMNU;2_Y0-}kQSC4uX}dpD!{a#l__FGrle+iq4 zg4^42SD%pcyE<{g1cQVF4P3k@Pn>vgGSNcj+<)dXDV=#mv;6~lI`8giXgJVtVB6Z; zKJ)GFCYC#RTB&O&`FpWBxv(VhI66AYT9@r9`M5~K>dWL6moD^LsW1iXt@`TN%)Tyi z_puZs!3&$y`%j0jdvjx-?5T8?(lvMEqGDov6qE!TPNrmC*pOHdaG|wZoIylPOzUcL zhoP9Do~#@y`JljJ&VNyx(4~66RT(Cqd?g(= z+3;(L%+%l9yZ)^ce^O@V>0FPg6G$K`gn75dQs7)a@BXg5+1pF*6 z)@uHM`goVcHrKaU%Bp?1&Dk&+M8NROO|K0D>|NjW{6xYo$PPwpv_x1JoT@{+v*1s<;?Y>|C zJJ!!HZ~D2|b8{>&ug|~#e&643UseX+jEoGweEIsCxUD%SH}T2l3A!rjPH9$PUow4T z_|yA0HhqsVpZ&#GMad|#rg`=Dbe|7j4nO#{`QSS^XT3?ipN<5zQt6qHd)l(AM z|E=@3-*ydL6ExXEhVS{WpiV7=BIOR5r9Qryi9U7@cl9N%xaOoM?suJSmPw{j^|v+R z@im3t*4(UP{Kxw9r!yPB;0yr~nLqcc-`83u9}ADKefs#Zw?cL1%M%lo?k;DjlK{yU{*V{^a1v)!C_w(848cgKofGncOwJN+Ylo+_Kr$+WHK zeiX5Bl=I2Xnm+yiA#VLA&!7MP@k{i{^Y*s38oRHb-FjyWbe^~S{pQNbVEY+A8vEDh zuiQJO(e~Gi8;OV8G_BA2s7>CY!JO>#K|tO2-L1%(`gh|dzuO(MX^zYyjY&lrA%@<6 z&+Uu@uMGjMDz=@pe&G@Y>+eNE6Qge~kDI(~X7Aa&b*J54-rV6iIllh)+ZPj+HCL|u zSo-+Ut81xE3~lS~?katA<>i@~Pd-0CXMF6{vE#>&9Pwbfc>DPG&HnalW7YjUk1Vei zd$9BQ{O+!vA`6*MmR^S%8kw1yn4`C3Xma{YKKbX!j>5z4Jr*S|CY($GjhT65XfV{* z|5u+^_37X5_tu4vT%w|)A|f*WvhgxAF)<`Dy}rEu{@U$#XO$Se{L{)EXBNG;>g%Fa zp_A=q|6phF`TwZT>C$G7s{ zy`^c3PalfO4d;T*4^I8$)#{j_dN zy>)ppF|m>7y>~9)S^2*1 zygk1S_U+mBIDX3HH;RAHr0MV1nExPZp7>Oqr^`jPnc*{M4ldE#^X7lMnQ}3XXG7DW zBz8;7MPIK!x%KMSN!`>8^J5CK!698m!cR7^sm|}vt70vh$M4p|c%ixC@_*+{C$#j~uHQM~^;UJ`7|q9tCo2Nm=3d`&Dz|&`r?OiD+drC~`t7=uuj=Dt zUmgLLnlBG?bCvEcSAF=$7rbsyhVS|Rrc+nKRFo!qth=th)u?}~sOP@-`?f8LxOb~d zVcA($jaKQYN=>geO~})-J-I_k&~WbVSss^{Ectf%ri;%@*P{BZ#=*Px?_nvnf?H=|y1>$|UZ0H)eC&x!qNRdn<(IljEW7I7V3E%)C?PymHhEW%vO`#& zAjcw)vi3j80dBdjoa^>zbHSp*=D-XEjiq8sBckuxN~~M0w&m8}qNkbqzo!Mae>!pe zlf;8t$G_(N6kl7w(($@NZNK@GnvRLVtk8T1n(sNWCVY3bx^!of5>|%1hHXmMhl?U04zqs;l_y;RzuTw}q+v z|FUO%=65%^ofOS?%F{mC%U;*RE^cw(HI}({b0RVY83jb2JgxnCGkwzx<)kJ7DY1VC zlKbQKPTE#*@6O-q?-6US^~LV~Dr<7%_U-hyT~B|1`=dIw%WgH|I)WMHoA9rnn0Ld?4&tUzP$MH zQ6a|DbMEiA=5MXb-dxzKEfM|u_@`h`b#{K~e~;fp7F{f8WMyN!cWI~h;Q)3eSN^HJtmb0t$74>FFY^{;a>S>N&W0aYiHPUU0uE?(RRkFG)}Lh`QIM|iTk`{ z+`lTa>2Tq~MaxA)SvFs_U!!I{b-S$-9Urf?>d*{_ zhP_+9Y!#p9y}M@T|GDL9>1lPQxwl>}nXJF>-?hft>g#J_F7B)@KX&8i=JdLsKbIe$ zFKPebT;h8B|1r0wYU@UApZDdRwL8CT&8wf{*Vo2;Ja{|5^zFsRhkkzc7XSP2>Gu1s zuI}6kEFFs?f`W|Rx4(DqlM`E&ij84?#C{>To0bZCCvuZmwi$Ii|=|M%JK_i43v*QT$R+kSUj^6P7b$;bD6e(3(z zszggmr{?2Jb^W>f4IZ4cW_67C^*ev|znK3oduIM)WSsr)PQjN8in|a03wpeL$>oO6 z&(Gc5Tb#aJZ*F_fp6C#>se*cOHs7DjXn*wj>gSJNYxDj+&aeLx=+y3a*>2vR%)@PZ zcdP$=dHj9$|2rRUo>~9>|JUokOjlc%y$p(q+LZr(-u(JMg=doc@7n%y3}U)7^Yppu zfP3W*F|9wnoxX8LymUE=N&q>wX6BqY-7%ac>;|HcqeaXMsa^|;u zvroL@5qa$C`U5@whF{9Bd|NAJ{l?<2uu%VjC)}I=eP1R&Yw!ES4rccG2ft)0a3|e5 zxSqv5{qcbunK|w3?^iAPrDNB&wwUq2Gj@g~Lod-z+3yzbehL`=n>uUy;fFgGZW2A+ z$~WCYeob2SJWDjly)mU~zDI=5-jt8=RA^DWB0oJ^lDZ<1pn z!Oh8e^Uw47M_pYRxcPW%f1cfbR;>GGN>$Mr=F{T3Syz_4Y^?qL?9Z=gpWYi2E?h9x z4zv0B=JV&eAN#Jq-M;_Jv)h$BEf4?xes^Q(>jeuBFBO%%u*TJU^39rp`~UQ8tKQw% zq^e`{=EcLql{i6?L zzkTC=yq8@-L}W+h;kLr_`(M0$JGbcLp@+@vwKaQqt=$Az5`Qi_nwXe4dEbn*%{Sfn z<+s&-ezxo5*XjC^pPn7*jII9iX4~fHJKW{=O`64|pkngnsQJB3H**$g)P1|ye*esz zo3H!q9tuv>vvip9w@t`ex!!zEs)$dRqrvNXh8=nP_T8~KFVTLOv1nt3h@M5kZ7Cni zwvXN)Zv^crViK-*w%G7FP-cfx`JOEjp1T86)*E@hIdPgj>BF5=pR-qMmoCU%@>{S~ z`r~1ffMlCu#{8Uvn>&9L$SO75J+Ex}KmVrCKP|g+N3X>AXdmp+*<&HTR{GHu9-lp; zCvVngr}4EfZoc#I%DZ*aT}79R^yXjbnr$#$zhXz&z9q_a;^*hvmpwUg@o;;;oL!Bn zt*wfViG@k(%FUl)YXNf3ZQoo!bJI*;pG|dAgh+Q+*QesoXVSdq z{`fKT{(k`}sj@E@4z86pH_N*eqVnq6=I6P!zq?$1R{rE`fARM5TD4=$&Rb{9klMJh z`uiKE&g$=P_PyR07%3_F{M) z?b4-v%wCM*dV6lE#T%YA zm9Nbba=xFFWf0n)%gxEVGSu3ysv^i~rRyTb@_RquJ<(+S$@)5Mt&gu~=8YAd3LMVv zJsFqQ?9>P<^V@bZWmCl3Tf5b|Sa^1P_6ro@e{(zgMtVh^@)eD;0}mA@u2}LQtL|7P z|NBk9=kxltKG>JV_na-LiqBKiLHf&!#DaHie8*mV-=NGNSEe9-d*6Y7M;-La{0_a$ zD3R$_FlG>$>-4DKqE<##t!1m@?~5IQPNrPnlMV~D^t%`vZ#(N&WYl7CWjFU*>xvIb z))S`lw;Wh~XFtoO?T1CWw#hF_Y`OF3I&19g#D|P3%NOLuE?{Z@*Zibri&XoJQ@d{X zHg@cmE@a+V#vr!t_?zz^f2rJR)8>`-B{R_i3 z+%YZ|-Im*4uV3;?rJDbUNzP9$)!ssH+nl(L3llRWJLbke`VrW{xZ)=NT=oN}CoewO z$nCwM+Vs*TMV5tC{v{Gz^>?pzvRYWm|K6^o&Hc>a$h|&3<_C*!R~;8ssq0L3f571| zS8<2xx=FteKm5b1^>DSA?6*5#j8Arc?&dCzO%XGWo1DG+A6xPv{>^D;fB&=gG_?P7 zWU{kc&yNq6&p)d%u0EN+zs|HaDkI{?3d3YJetAv>+qb87w96;;EM2~IY3$BVkFwWS zSN}d@o>B4T!b0=78ar$2>IZY3SsizLKWNCHH_!h2yVvWlcJ#izv)298(e9f!BY8f2 z`nFP5{Q8o}&C2Y2^Q??0}}%)TwK;#6;9WiW6pW#O27TTs$)EX zBF5|Da_haFwnyjBHLabse*XM=hlZ*}hB`Je0xe&@e3|oRj#cR+7RQD~zRHUi|G%~O zbX*p@vqwgTQ#+sbG`*MCUSAXSp8n;feZuW!zB~mMZ#>oeZoe%PShPC4f0fu-iP_)Z zzM22*PsZm@tAyjtO>F*r{CHllv;OU^uP@u>dF1SrOmt$Zqa~7E>gwvmx>b#po&O(a zSYCc`^7BX$)ww#$WTM4xKayMRFY!GzoHZu2*uq@kpmZ98=8j3t3CVAY?sBf+W)KK2 z{7^09!`kro{=wyPvus-wjDyl1ZFZl?>Y{pJJ;(27NmpHZBKqZg85TTI5Zm8+BWTTk z7V#zlsfI0&Z`kqfPJgiRctWA6>!;A`4Quc0XUXz8&@Mbjdg=WWVVR9WZ{~LBP8a;< z@HBL5kN&RO&e-09XWBCLl4qS51W(F8`pl`ZWkD6w9`1qyxodk`?X)lMH$D;^@l7fy z>e0k|3=Hgid-_y&C*13trmf&Q@yXxLpX(LV*ltZtx){A8)A`YHi+9}}4ol<@th;%` zR`C4(M``Pi~+# zzS=GIdUg!=#3Si(RV$0X%T3DI9<^qtrKMPR>7m{4r;CWsw=e(J9vNT%@#BtSuRV+w1-|{rPjKsj013`uxw_i(N~*_s{uN`TX5oXQ#v0*8NF7 z_I$o+&YdSeIoJRG{oDV4%BfjXwHZxv?tJNv+zrHHi+D2(ntka=$ zxwmH=h}xc;ZZ?~-Ly1??Y>V&jXqQE%+W#Up7d>71`1m1ZrB9zf7Zq)4ZgO5?qVzH| zbCE_{Ybz_ukLAmkcP`SG5(0sr5_su2!%j!SRJ)HMH>(`a1 z-D3Rvzt7w4Zp(4lPq<;vojsQ>U79dKpvX!ft3rHE=%%O*?kY(~WK>yITX%-d4_JAq zfBE;htKXhF7;4&H%xoCyzWm&eO51!CVm)rnYdf|%a!s{17hJpl=;p-lrjxS?<=^154Dy~cvu*R^ zfa^~`AGle*v4UCY*yE!oKbSKr`S~4~!vFDXbVae&o(5z2q|=^PD#Z2out_&4t$Ewp z`g!A{!aLVl1qxrd%6Pc%J^%5FMFivT$}?{}a^?8N3N1oiTx+kogakxPnKUooD09Eq z488U9iunYdeTnLOANsqx`uC6Dzqx%Fm<4kqwm#2A{ThETu z?+O?c+^!~Po8?`c#AupzEoNuU&6}IkqqgVgZ;Y7!=hx{K?Z>^?bfR`BSg9?``^z@B z`pb`huh;v_Sx4;;OlEjKX>z%`+BbQd2!qp2t9+fBjwb#5a+v?oqt{p02&=m;`SI(g z@Be4ffhrA6PEPl0URJKY`t95j&41S#Zk4{0v8~y$Wy_Pv{AzM`6%Q`!r<-Nn3W*Bw zI;_ailwc$(F8+UC!M>9zS=UyXzI+v)#c4m|V?V1;ExQCWSNEIs_4|&haHI)W|9#8I z>!iSOC%pFW!&S2m@0=KMF_p2%J@IFjj(qRahVs}eZ=2lyUf9LYlq+|9?##AshtvJ3 zp1cYV!g$`b&pbV$LZmrL<8M^b1=~&AukN<}#e1OV{)8RUYkyn$zc}H{*|_b|PEv_3+c*h>eyKSEYEBH2#>sL#BPP`h^9i0S$*|H&~dg zVwGWL_E~HAL+(VIxy$NbI|`V>KgWiY>Y4pz_>pws^oQw6RxC&CyO+g3cu+H^R{rZ> z!G8?L${b#-^;*&;e#@q#HG1M7ahceJQwRIDI&f6=PnvFg-C_Ur4YhB+-qPe-J}2Z# z_}ZC(P9aq+RNFJ@D2 zO|1L(Pi(WPv9j^Du(!YEYCas#-{)yJHAH>izjt%3`{ZqZT|2_h;wWKM^W<8ubbL+K zowv2WXZkENt=CyE7W;PHZ+GL=-D|?4ugC4J`}yz1~ znO^hj($Vf@xq2HLrKXOa`LQ1NYL@Nc&N^Cj!u7PQ%kp!lkB4-5$?OQ@6Ii!R8?=4k zT<=klR>svAYVFI;AD`IkajUV})8Ys3v-U;5OYT@6s@-x7wjuPajvRxZ9Fs_>?4{7Y z1JhPq6a2v&-gn^M^`HM=9}&3B8rS&3N-%ep1A~`eLY;liPd59qqru0+q;JqcQ^H9nh50`7HQ>HA+;AgP-q{uX->x#?*RizTmFMpzyBu?z< zn|<_Q%V|8*VKA{?6I0N2GJt z-KywJ&(5s1+qd%@@5=IA^82_=&6f`kkNM7KbRr+jB??}uh-T_?acrFPHN*uf7|ahcdNcSe)#llrcv&%OZV%3 zXMfjIk}7z9!SQh0Pj(ie!1dNu?k;YYGLIfSRQ6Hx?!Wy`K(=q*_V3?5epL&qJ*D7u z{&uzTF|&2?&kHQ%DvR#OGXILVDF1g(u$;50WYuJsKoOSU*)1&j@$oM`UmZER_5Fo~ zftS-ZeN&w-qwwjAPu|4aGmFwL{xs(AU%ifN$Es%qd2IjAUfgTBi+RK2Q)O@F^-jH? zeApu*JK4i}`aSp-*r#d#R9DP&+Ovo^U3l*y#sw;edznwhu=D4cY>9ZC_#)imf~@;~ zw{LqnzUizkzLxw7#KBfnT&% ztl-e{5*K*Mvc$9f0#jqaBnHLaFDb9*eD9xmbM9SV1vkMD=e|$oe>2ar_+0V1yh-=% zD$jkMV#bm8TCMhK+0@;wvvl;Lu4n$Qi<7vfc6o2@AGyEJP1;TB_Wt^^^pR9+i*SF3 zw@1axUh}oh4GEvFWH!~Q)F|ikhG(}nT-wLX_D$A6z$tRFp|D!e!fV^xmp|X~{NLHH zY7B}gmmW{>D^?~t0H ze7uj5BQ^4)M9YMI%t)Z0UW(_^Y4)e*L}kE7Fflz4w;)aqU%+DK~zv z%GDQLy2yBG(7so{4;pn;Dy{ey z@NBA;55D$JT{oMB!R=;Dw8_U0jH|i>vRjt#`eg}hn-+yE(K#c=FhQHa){N))JQNgu=?gf; zJUs3^6>z$ADQN${qIa$L_pRR>7!h&l!?{N?9QU%bme1E*qnA4|JRsIKBi@uFH?zITp4E@w!;syMk^Ii%_KRYB1| z&W$k=cLd9VVJ1@VkaLI83xnXFQ-R#>LR+;d$hhj!5Y-QL(?f zni>CGdT1oPd~@O*{z!KhlThPLnJNE1Ojx`{LbU2eo#@NLy(|F-&WkVWwwT4dB=HUR z2SKx4uX=o)PuDzPdcc;&Qy^?-Fq13r^X}Y<6Mi&rQDACe(wbXea=qOz|L=@NjsfRf zrpV2dKmUq#>-0%imPzKGx@?&1nk*Oi=*x|bN41(=og;k(OVS=EM=`5Oto|fk)sb7g zVH(G^sOg6fcI>h||6-4K&xe+P-Ih7Q+};Hnj#N4v&lPlk!XYol!T7Q4dXKEs`As1U zKXP$$ZrXRmw{o$ne(C86s}6X0{As=N{=hH(4~Mf?lxVz9I=EBSfPv9=Vatc$Nv*CE z(gc+cGO&v~>+f1wpeMG!%_(s1lv!tYB#CCbJ;`I5lQhxtlz3uQ^qES@QYF#)O2#gR z{fadOW~<$QvQCM6+`4ZmL-+B;Dk8yVchfv`UEb}UVa;7|bi>SoWCpgt!;THfs}s7{ zt~k8Wl%Y99FU_s<$HD`VGErQ~3{mck4O*NFz2?OA-BD`kZF~3q|B>XH3wo?OdKO!5 zb32@wBHpk>>5{ZTGiwJM*Td-o(Jj8kj18tAm5;PARG!ckd6!=J&)VcqUbKqJKLy{= zUpsyVGkC4tK6}5#NvqsH-RG~V6z#a3228 zf6yu>s^O};!t1tky+<=E`rWqAyzyK0naKiwwmTeL*ApI>I|#V>JoWdH;!kqZzfyAO z_x^)(4?g`~xQJ`lxf8!7#NW7omhWHJ>7cu>|KPkNn~)a0{qAMq?+={UZ)QBO=%18c z`oaYq9}Y2RUsP^;|JYd0_F2Mp9i2~({}%>?J@~khuyexERhM^3Z+ps7c1w3!hugAi zq6eg=>GAzgxRRHZJ%_tqd~0v!U9pcnQ}~?)pV%@Me(VX@RqeOrnZxxAMAmA)-^bYglz%fZF2FJ81iv|dof6rGlI z&gb8<1A;Sb_#GE%ylKdMQNqE!>jV2IlevbOoPVUdSEtn&mWjtKPx$@)$Ghr%7xOvX z&N<&!WBJ&d!?5CJ&)M0s`bW1qUq5nxv*0(0Z;7YvR;LzZ_xANKyl>1Q?7G|_PGT?f zs^b&BGWG3YU~A z-rXGWl_89gA!VY(4z};#S(y*W9u|9a%i>KfPc@@~M-8*TO|R_D8ymQd7kxZZy5+aM zO-O?(_l61uh7*qr(lq(*wA%zHGujIYl}k_AI^(tWI)Ot+O+Lq)@oGGfS?}Pg$bIhr zqh-41!si~}?UDec-_7p-{cQ0*fv49KlNNHe!$y3W}eKm{>{7J88e;lb-0^4WvY`T!~THX zy`}O^;a-7dVx~HKq7VD>GVsf|?SH-D#e!ni2EF*jkJ)$3W534CXc)j?yYz9F(07I@ zL8qd+&gHD%UFdpDpl$tBUB0Cai?>JpdHeK*VA-yt9}O8ECMd5dJap{^hsCZ#vT5SK z7j)L@Sw6Dib}=`3rng=9l$Gg5-Gi@8#j58Y{ob|r$vN-rl!pbkF1gLO(mk?GX5zsn z+c~RmC2R=@aE?9M+jM`=pm+;l8n;V*Sm*Svb3xkrcju3qGOZKzjR`)aE@}5ISMOU~{Y>_z+xNu| ztElAhPr3Bk)ph^6_@c+BI8SYwy4B5VrAMx1Mb65(GoG{y*p^;9+{=69>lV8O3yO9! zH5||y8K*pMZwk1|_ZPu5(2t21MQo6eG&DV>Y?Z(nnAd2D??W54&6YmZ8z z0`Htp)Sq4Sw0mBVBX>8mL&fxMz8&{9Zmj?89g;QYlBee%Nsm=gPGGR8&~J{_=W};7kf9vbC>R7H9wUXv$smsO6}OuqeoLr zX8Nd!FSO{s%+Y%)xzMGjV*QF28y{csjc}b+JKf?J8{1;b?~iyHigwy8xx4o7g|f*1 zDzkb)Ek_j<6_t0qeX`cmCQMim^taTsg+r0YSz=k`E3c001~Ywjm#54}N7YTgp<+Yt^k}QZX^ZY_|TK)26e1a)W|17Z+aeOA8AR-*2BCc5U056*FE`etxDG zwWHv08}Ik~_Fpz0S3jL%)NwqcE@W%*o#XSJ7CT=1qZ|~paQ?shwk-m!PW!f58BCMJjAfe`Q4=GaFC9>e(x< zeG$JHafYd2sY3lP?(@&*TB}b!$x`Z;`!zyiVbgjm4T~Q)#pAtRUy0P4-sx^I^9+0a z?dm@_CeHi*_3OuvXRXWoOlK=ETCAOSr{F|{(!8qY-`40qubWl>F{mWx&35gu$l3=n zyY};DhwJ}(wK_X|UCHa4uMeN!zd)>e@6Fzh6Mz2vIoWSt_poN3*V?+*Yt7>;{EW0V&3j_)6cIBT*l)j7RMXXznkfdW;bt65*Gi|t-r zSgL*4U`o@{DX9m8Bzo0m`dnM;ett{eTt4|5@nKQ7_9Y+x;@E7qCib$H;zd2q1p@ZI zjaN@k+xPX9_S4j-hmDQp|343jX6N#{nZNHx&bQs~%}h*s=2~bL|EZXkDto4^F2`u* zzpq~|i=TVW_~P>N^Zxd0|CRpkd#LQr!phPoYi(v>Vq&3^@_SouT6@#_{p{IOc6?Sm zBIbR6S)PgrkF$hR%GuwWo2RVbmFlrCixUJotNUlonx*PJO($}b%j&Cql13?4Rs=S) z^Iyv_sedHWGGX4`-GBEK9X$Hi{>5r}zJzma+t7nw;PB;m>RRy%+=p@;%(u7q+Gm?7Pq#P8ytHNIx6Rup0C%Ujb_fV z4$@pQUCfUs==D$E=mo~CiZP{90@+ixudUj-m1%c@%9O5Xj*Z7!xt|GX$z+P;b8nsg zd`^~s*VlPwdQ*e6!Zr5Tyn8d>;@>$?IrgZYKiIDCZHsrh%F(--!FBvOqIz$gdAlFT zeYkozGh0RFomf_O_H^CoZ8I_1SR zYr>2ZK~Zs0LE*uZ4YNcJ8x-xlqpz^xeFGz7W23@`4PyTr4s>;$npgX)=v}Ubk1u1x zM8nf!_5P9Ho|@m|;p1LBMKxw>UO<4>+wq+sC@o zHSgHonW}a5DYy9PyeYdgOE(r4F87=J>HFv6;$r(^HFZ6`zMv{QeSJkm$F*VcyUTpn zhQ;qFXxy}B`SSGA(ygtj(Z{!6dwFM;mzt9U=Yp`4d-ldgaDU}_yCUTNujk7}!tWYE zI;V%i5*~B!$aA@}d58YhkFSnO{`e~NtET0HOqnQbEkH-Ktjf>k7vGZ(sq?xGZsj(Up5c=JB&y zdorvR?`DhK{>r#W%V+n7SKc#R-nuaM+B;P%ua!6Xe(JUQ$MAsg@a;)QyF|6acI?=} zBW03tWksNKJ6~z(UuS!Ni_)i$1YbOp@78`=qr9}G>)h{;^Mbq>CSPPZkYOTwXS@E| z?!eo{hGJ^Crv&i?iKhfl<8jq1L+ z$5?xH`22nQ{?#oAIc6}W+=g57uXLX*i_nBuPd#2-Qp5xmvQQ6ru3^ZQou^)n<^G$>ZSZ$+^(Pz~IHJ ztJxwPyqrHjb?eWo{3e;VYi+dI@1H+aRn%l`YkvIb6z;eE_haXsJEy1X#qB64JpS$N z`}z+DPdz;yKkwhGjf>s?{{71@XYt_Gt64Lql)U`3l=pRgXJ_x*J3GBSJWd?recj$G zv9a>;GUs-_ws!ZN+nZFith5XbGY^Kx8yZF4ulpPJf6J-+_6gU|&HX>qPIk(?la_N0 zb9S`1AD^V^9kn&fwIz4qAEz~a?U^rgUlJX zFLf<9ttWfc9cyg%m{)i^bn7nRW9OT**GJ1w-C4b3lfd&Vfe%dcDuiwwuufq)`qk8; zg5{pS`Jz>;zbD;KI&!a{Q8u8MqkZ~qEtiNLC%i3F4)wi`P}zBRm;bR4iE~Ns`56`n zH9cF&=q7ByecCGFQ`DB7!Mha;zX!#~@6WorDs**Nrpc^EX7-{_QOkcj*FT(iGSn!0 zZ_YhQoi^=VC(=8noqV!;TmI}%UyMb*{M~-9=KEnwe!p2IYR^NC_Da_=GIHs)b3W|< z8M{C3&&zgsAt$H9hnDUC>zC=-c`}75(IH}Xa!kz`e~Y#gC*Ak%TexuFz5DhJ!3S#M z5ANA@OKS1O3FZI(7ze8{2doUazy8-rdxZ(*X~nfWCvudVvvwR!GMugZPVU{ri4%`+ z?vLMFHI*rA>Zv3{W1h$F9wu(vFmK*Gg#?LbmyUApegArG&`Rs_x3g;B%xG_Szda?S zA@`2?^7S-}dFl$H&RXdMXu^A77WXHjz5p`S|!*HR1QB>PHd`-rU=H zJH=>b&#@;@p4_=}=N~iMyZhVqRdlwzcy+a7{k(WFhfzqtJj>P*jjkvpY_V1X7ql!@CPbl^egT-j)nnWGJs0NK z-LW*eAO7Lj?rr7WhVr}T9qyX{;p*dxVqF{6{;zWrUtL*w-uC;Qc+15nQ+AcA3-a>v zt`1)xx3_9*clYV)_j|v8x$M9Fjs9=3$@{k1%)fl8rTQm0l{3&;OQw(eFMs`yxwP%m@pBeY`7%bVeC#K}&LyP$pdbgFQMy~0a^>39s>;fZI@v~&wY9aUPn~Ampfmf%va{dTyj4_GOfM=5k@`Aw&Ya2Wej9XV zUs>iG74c*myoK`;6nYq8+@h)4wIW+W22M#P!j>g%;NG?)(SVIG?d7dCeTD>sQyA%$|5n zsfuUU@@_lk4H~yQn_mZ%u!@=1++O(Dnd6(l*+j>GS~BJ?bj#Oy z!-L|h@dpmRFEkW)ldQS5c=BP6Yb#f6$d@}em!-j*dt;vVB6+tG)otrr-bc8^9(i_j zfvv$SP7Q`_Ovm>-p9{QVc0g5Tt?|Wmdv#Aez4hH9sD&^1V9xRNs{;}n^2_gh*RT=Q zi0hBFf7r&j@9u@)h82HHe>Oxn8OgkiSFTs*%X7@*v@-uTyMOJ0lk$aT(p#%mFbP<4 zysdUtJ@va}@?Y~g+wR}f^GFE{=--mbA@tWS&3of>?<=f}zq@42P`kg5A)vi>{sJp0 zTkGWSIZvVuQuvzQy;TnW|Mz|U^D{F)i~HZ&U;jULcbVyad&MQu+w*45oT=>I$HT#~ z<14RUz_d+b&IdPcmgE zqnH}Dr7c0_{{DWyPfEBwexx<|OY;&(D9%?7J%~1f15CCb@hSdi#2J{U(WXPx%v4S7x<+On>KwpGt>C( zrAsDKz0#u+x}cR@pSZcWxY+q6 zxf)V+_f~ziEB*9j$H&Lo+N-m&v%I^!ZjVb0}gikw^~R9YRcrDKht(=k#Tmjkh_7=Q{A|7ujp@WKjk4~E0$^8Z1tU& z|8A_3nq+=pd1t=!Wl5bE?aAQ_d)*h9>#aNZE;8dYr-{A?*xEVB#|EgD9&TD1=)?$;QboM=$4s)yR>{1)btzH@_lm;b{H zOd@|+`oC}ZDaEumutum|Orc&@jgOW2K+hZXk3X+BNH;}0hIK06Prl4vQNeHJULc&{ zueL9qdxxS0m-_yL*WO=P&GCA(;0KBItGb^(eyq8Ig~`f!wfi^z8-L`CwlDUdblL67 z!z0@*rn57!+COX)J0s9C_xLSy0nNkDt_L1)N_IIWY#@K&IrD^Q)_##6yOryiztuFH zcsb*nT8t!v#xJ)0f4G9Wb2mS{C)E}s6Whe>{xQJ7u3A3sqrtqx7gcZ6bF8mpz8gEQ zBBcF8f{f1bUakY4p|j6D`25bImU)*&#jXWas%7;Jy!{Vae}0(2y!}@F<;>%6dlNsN z)|#^9!9~Vxky_UhPL}-G*I4o_Ek9h9!SQ=4SV{%=4Pbp<-fd{*Ki%h_! zt<~pSKR=)Co3{Akk7M5YW>>BUdzHVx@$rf>|6J>8F@^Y=Un@^$lzjit(VNYBf!(cd z)ykDq4SB+??_9q9yLaYhrA3Pz6q9FUhjUdg{Vp6{Eckns<-rp{X2pM6Vy(;0RQ*2t z-R{qgyN8=UKQ79P>ON}oZejcX&wuu(@A>&F`~A5KJ9comiynP^!)VrrO>-w)oVmFC z&5y4K4mSJS{d{sHFI}PQJBMRsbti2+e<$`KX37$KQ){lMMXyDOZU&0PuFHEEPzPMs%ivGfdihtZVZaQ^5etk&)a>^EimH@V2v$DlD|C_cdYEde< z5vJe1so-Vv#>XFi_D5{v36{%wb7Fy9^sxswLcc_`o_QF+kYgD3<;b`64SV(3+!pv+ zYvqSi&nI2o?eUW< zYeAK5*qYWo(s8$10(5Uk|43E1CeJJ(z{cRC{_(0vh}+{%oh{t#4X@75uoXBh@AP^v z$ENSX#*P(6;>+D0Ulx6_nNj%`v%_6g1BZj+8Me%u=QmDc3~rywue6=3c6(wo0k zS1;G))zD&m^5Ij?lcamr7PZW_W{Gzg3>d!LuovXs?|5yp#KnKte)~V^yS@5+(`&6c zzr?;W|KKk&czlIvgTr^jfEOG8spVg1X>ibEx9v)<{dlO<<>!NWmg?307Z*CWUtH|o zFK26|b4K&aepeBZnAn{^SDXnvYpu@suzBv{D^~_? zEL?C!@81o!`!nXcO^X_K){vVG%|M!`{F5tvd zBi4?92W{M<+p}WyE=0cJfByNsVa%nxi0Xr@dO8a_{eK+K=bOmLur#Kl`)ZKl-Fbhv z6})~Fe*FEtt($iB@3&=gSYG;fze-r)>ix$&EghoTKm&pAIE+-zyPaZ7`Okg)_oBI% zU; zuvWf}_voMaf)6}KL9;eC@^B=4JG3JG!7>(xzjAMOGdvaG+0)-|m0&aRpW3$mBM(_m zyx=me@Rk3{CG>}}fzu&Mt1rj>hj+%?0V!n zf={_`cJn=DIP%l9XzwxxhCj-!3_PY*b~Ip%gLQBI)6j{_q@1BuIA6*gQH?Y z17kz4F7&>B;RA=AKl|2L)hXNC%g-}07#;Wj^6~56Uz^YW`~C0t#=^qxY3o@I6uE0i ze)@4`W!=BJ`?a6Xp4oo?&BfK<-&D@utaCcO=Go^44#le?Vdd|4zu)UF@$71N{O>oL zcWx{!EVln^@;l;N`F*{pT{$;5CcA5EX(=f$ZZTZ*)1`%%aZTB+ZF~wk`(-AY{{&>Zf7bUyW&zhgKO_|L-Y1_ZQ z;F6HCd9T8iA!w%BK&=YTRyRQ?Ouu#cEM0@HgsU z3EOjR0dtYu^N%j1h3w;v7kh5Td@w`!woUdSfsEeFX^xB8_B?#9mUWRqEn>XYAne3suiu##LWloH=vm#*MVv<)1&D*IYZxx%;c8{#uFO3F)($ugEEexA&Ydc1!1z zH2dRLIn!0c_JsS-DAP?DX2&;bY{|>LbJwUG_iyv`FjS{TFQ(4z8yg=O*Q)2&9|ua&C9q-pUoaxz+7m z&&m%wUA9#ET@{{tUt-d#e|y0R;M~K%3T?IBOS?DZDIL3$UcPdl1cO)FKw zD_AEhu+ZtB{sn)Br)424E}BUuIyXEoTq$!;Y>ox<^+Jxkv`KcBPx$O@MJIGWS$Wsh z_M7kFP3tc*Fa*3(nEbJy@j%ZmD+fmL!d`RLJ+_Q~q0)h|%nZ>+8;+iwuq)fZ{I~k# zOXruhNp~?iyv-MnR48xfa?q7>Y1W#1=L}b%cX3^JN$iadXWRFhXa4P}EZfdt8WQ#J z`VtvAP7ZJPe$NkiN+y;GQp-#eZtA?LW8EFkxM$*w&c^jhdJ7_dpI5vW$FNZN;b+bw zv4wdCF})VsI4&&u&R}r1V)rNc3o(VOCtVjht7vC8Px$i3j~}smE^7&`rW82 zv%ArBLUh%SC1xRad@CFnwnojJbBm85d*L=w>x`JJ>*ox7s{a4`%g*y))AXMC7KM+N zcrpl1&(CRDc580B;P&9y-s_k8) zCGrJALgfOgyXxEiYTmGvl;ywe8Q!YRz_P#Fvw2R9s8oga!5<2`tm)qu?_dkBW1J-L zj`#bz4~CB_%!GP143z6w@{U(-Xe!_MB6|nlG2`NkUEPKn$J_r|9FI*?n9R7Q_GXNj z+UkhOj!Rh@*f;%%U@|)7Vg<%DZUAb(^-DW9sRCo^ZniXlZQ3j z|7ce{b`^Plu(Q-+C*N}W!!JcEzHnImx?A<1m*LHJ@dhQ%*r?>YVlg`!e<;1N=k!&J z`pI~_Cf8^xq|9tef`?$8n7|+o1u?r*PY1azyRh?w;?Gt2{Gd6l9g8)D4C<`zRmyhT zA8?q+a&21^kHHlMjjf!zs?K)|9;nVa@A$6phb@1(q=;e1w?jYAYOH8??A+3~{a_Na z-&&T2-_I58n(~cB7hXz=720Fd*sY<>yyvIcHm>Pht$bQP+L?A5>`*?l@<2*=VKyt< zigS&U8&+8q3uZAy3Y3(WFWYmwmFM5y3+u&y?d{+5a)vGQ>@bD5JEy(d&-GUR*e>yn z`SN@C7IM5WW4&|VDerID)E~tX=6QGGZIln6_@fkbMeo*~`2AB(^2~W1yyJz;`hw_8 zuZMSCe%=id5n|80z2}_y%%{&975J2PTRyv6)HVD3Im=C&++0jf9r-1@d@5&i_x|NC zp1!`Yw-ld!OWA0!nSr_Yt8oLXdinwu25v5gwh8MPChV0BTN=AZ zBK_+&K_#~)Mn1i^6}+v*8-JLJgl)Z`m7CsTr178g`m5aD>ve~C6-q4rEwAg`F!jbS ziG8y)Z^f}W+Ad@~Q=0Jqz`x&p4i=8@l4PRTS{78Z@7rscAKqCl;^fdVJHBUjJ&&To zln<7VIUH7eU|=W>DZh3g^^wY-Ir}dh3H}(npf~>MD)z4A?%eRq$-x2-=keI)}=T7pDGM4K2BgZd)xSe() zN@}xG_n{3Z53tt!H0YCeI+-amxAEuZ29A`T-}k*9AIoT%Z1KlvUk&T>Zx3&2&iT!G zdY&uu1S^Ry`wjm$aeR5xwkz~TnONOq0j-*d%yYLxAIZ7De3jW7BXC4vV_QUV<|~bd zmjiA%tv~AjR{!ps?v6b5Z^0HlCuch*>^(ipy}2VVv!qNZj%nvoLy;CM{q|3tAI^yB zo#+iv{1mg{a^CbKVS#Z9w_V-4uRXnR*|DMf*cM;+oVJ_a8Y5iIl&4<`xgWQLLx8h$ zH-m3^Pd(57zfo6?D3pmU%iNe_Cid;&?U2qB5p8vyPV%}zRSDmVCh&2TKfi6W>mc_I z#w~BlckkPueBb&0~;~Nf}ojlz058kU!)_-t| z&pG_C32SAO@w~$0A7le;8+DBh)79=vSTId~ZmG8VpR7U0e+mDLjenABw#~`^EZ3m^ zT>0K>{x#p?Tw3ky7rryhncH~T_=j1f#4o+W7fc@XzuC{@>F=DMcvLY0llEQSmXTQ^kgm7Ah9#jDlHk>la1g91)hqMZ(4am=-58~+?;eNS@v()`68!+8m>)!E}7LmbzNQ1fiJmD7VOKt3u1N_soL7w znwxK*`Il2Mf6vEb+3WX~MX#N-!}rWA)7MkO;}UN^`?uE0$f)RepX|ej54T^{VrXC$ zeI6Lf?5k13{7z|m{9V;4)0~9);_L5e6|27Tx$yH=k4fl3jrP^r3y!~X$=s4$&s#lB&$8}~#?pZ7EAr=l$LLKjzL)n~M&XKK_Eyu-&Ax?QuND}t*xEWn_%wdV8Jrb&|~bxu}e zWo0!qYTLTu=XCx0&u7g&Jv|p28~-eBDzny?(AM!u+3?s!!R5|{8``aI+gd+KAB$bF zW<|}TmG#%JU3G2WalUHd^46tXTiqj0xy*DrtQu8V_p>L zKmGj9VBN%m-YwY^s~dzjw&kp;VP95P@qyEB!Oapzb$zC{57uwp-Fi`R!Ofd1XLk$P zb$3_t9cc-W6q^6wFzWo0%dsBdck(!d$r?=(ze!f`TZ?-1h zKIKKgy@hWxp7`#W+54{l^VMT|H!at#UHw?-bz@VMj?U>rR{{=4`53h>d$~|0st?rl zRr#0mByPoxrpfk>^}KVfn&XZ(mKTV6R7=`jIxoZ7Y3;_n>VS+z#gkU?^iwG{`(Dld zYuSG}Z%U9CFE8(A`?=MI`tR>vkJ}t^Mp5u#i-Gy&mUGUQHU&Fwt=Lc&aN=Ch%sZ== zY9@EQFl1P;Xwjnw3!UGepT){m>+D=t_wS;z`>$`_-#>p|z94v+PvyV+|NY)y_g@-f zd9L91BjzI)RSvQ9yv|{DH9dds#z6tM)x|Ss|JblS>eQO@=m~X)Jv}`B+&ppUgNIm{ zP4D0QhY}19lAZUu4RUsf2q`EQ<{u2oGTR(d5a2vz!J>-^sZI|bKK%HrCoa|b`0pRLxbB{chl_5eaP{}-Xlruv^QU*b`S8%W zonJm|Wk`ClU--1?!t0)KIcQEjnL2k@*>r7@YeFv{wRT)TSAF}aTv^iVwA;C>S6*9c zd3;Th`U+>$uugB-uO5b~@`6POm9XjMR zH|+WI_wF1!tKMcgJ2ywI4bu>LUR3<}(IbhOYgTRYT7CJ{(<1r&_m3VuYG`PXHb0e} zo#mr8dHeS5=g#W>zG2v=crrKmOI2-I*|z!X^HV~u^nNO;|KG6dm(}ExN1}AT@_u!6 zJm~7`3SK-Ax4-W0)vKlk1`G;DZe>>L>IcrRFMh6!BpG*Su`u;^B*LrWnnP ziHTV=-@4;1t5BTU>ulH7Pfvxm^LmDQdwAS2lMubr^lpowkdTm#?uv+W0*fXHN-8rS z2+B&7eWWOptjy6Eqj!5-=I0K>WWTg@aq;;2uXiPlX7VVU4%c~qzy83gsoKYTBp*M0 zTbuCz->zG?POMll*Sbu`vgXIZPT}YEA9uF5x36FS{_pqykC%$a|0y^p!|(6keREI! z{eRau*PcF|9}*h2>guX)asARaS2}}E8JsEa7E9}sKECPAc5ZRM85SQ;OjHi%;6P~SGjnXKFSqfE>&H|SJUYV4z3?`4>*i{1R})z#HA zXU?pyzg_+F($S^f)9OB64Y&XIq1kWw>XqxZMd)a*Tsd7oeqUhRyXWs;zk8QyBzb;L z;P;o8r$?7OyRk7ZFK_GCt>$@m7+jz0#a_B}spQ?eHAmmPe0ucl!v6K^mrwsL{`pyD zMU~$Slapu9%7Ox6s+Vf&%@r?RY|XyzSO4|uVRru9yW4VqtzN%L$6IrE(NQmk+F#$! zTGm$GzP7gCf8L+7O|1QP-)7uQn)&;rx_r%#hl^V8zqoV9$;qi-&hpW_hZpzN{{GRz z^6zT4i>a{J!k|+&cdr<=?Z}FKYIN)u+k_;We=(qCBZ`WOiXZJAxwWR1zrL0E^3QfI z|25lZe3`!fdi}m{OxKUvb=|bP%~r5@%@KQp7uR#6-@m>-Um)O=(4iO7UvA#K`80Lu z*3zx5;p^sDRTka(@lmSx*6rKY*|)DXv-26XWNh8_Y15~Su$nXv?tG>%Uf3+ zxqQ0%WWW8jt5<*iW_59OKl${N?rgKtx7T79PB6b>E@N9{Vq>!>{e9f&>3Uy3d@`DS zR$M=B(VC^TQNPd5He2@n_4bF;`25S;);g{~e`}ZP>u2xe z1ukq%UOqoer@yn)uINWWY3S7c{__2T%KLu&`Mh9(g1!Czv$M@sPFeM0#fl3XHvEjQ znKy6VxlL>Or(d6XsOiX(C2OP2oj)s zij2JZ@9*#A$B&r){AIkQrkZ;HU#-ZNb=$&LhLpX!^Yg?*=X>|!yrvd?n4tKNkx_Hy z$|;*19UTQ9K6IOW@zAA(&hO**<-BYbR(o@A>*W)?dA>|Z^-+QgS|*fztn>HxSuA3- z)9d-7Cvi__?|C=rR-RfBJ**tE^MYp%@E`Q6#$y+qpNTcYNAE#>3p?(XZ;)7IDBRc5N8aU#R$7yFN& zKY#Duv8&|mEmIYXA5S_bH@EZY>gxxec>4F(a{s^AjbnG0|NeSCo}FKEQ}y+AJHiSd zK77dEH~+z+!p_dlyA!8=ecdOUdutnO!KWuD-$q8}2H!q<@e z+dTd3ioTp!HC3CPPs)WOI3Qw2?(J(oT3onKZ_>HFIeh)v=;5&DUw@5R&^>?t{O;~!Iok^S{pZ@1K04CLe!M?C`%2MH84*1_ zDM@8xsUCKIIUP;it65uH1RCDl-MrlU`nsZ>F^?B56!DtswKBwrC;5W8M3384ufL~v zl^#5(sJU`wh=tavt~iB{;)*VM=^|W_1%DD+e_hKonQOY;r5N0Zs`o#2>Qqh5k}pL< zLPBOy0*r@PMRu?s-Tl+m@cL#=!E-7??H96`HpDcaOp!9E_~5=dZJ+7u=1+V}-|zn# z=39ETr{7-EtcImw-^-U$;^I@ip1yr6D$uF&m3}876%4mX}W7{_W++c-Ua! z!-r{;UtT)e-OR>Y^!dYz^=n_>{B6gtzrJOO%i?+FMt--X*Yh;eVvKYCPkfyKO9o2{|CuW@q5#JyVbB&9Xz=I?!W3~N`f@9*hKi!{^K z?X~ujl#*I@^`*na8)}|vlgr;-Dt+9>Yg_&G&X&Tql?P`T6PT%9Sg{wrfVUhQyPMz{dnxQH8O~Nx$-eNFYn#nU(5FYoj+aOf9|*X^=1E`EAt1Q`t_@d z`N-wVliz!K6ch+7P2l+W{WEify}f;&RlK}>cBI%$A2DfhcaDo$TmSv5V@P_O#QE^w zCBMUm4{I)5pwNVCgXpI5mobahyZfWH3v6)QCI z<>x=XdGo$b#D{Cv??vMFZAt#D=C7}x-L_l%=g-)xFEX}OCWi&4E!D|>d26e-#!@lw z_4oE_oG$Xdwrj_dC0mw??0x^5`IJ!8j~~|-EVy!MtvmmzO|n*HZ>}sg&Q6>^!-$nZ zyqDK*^1K}md{5ts#>uw@GCg>;|IRDX=~v3UCxAn^@y?wXKcD$_wX?E4eSPbN*4(_J4^N4}IFSsbPUawvt8mMQ4VZ zHd{UQc?P>4SZ~*#qOoMhgY{9}hXwW-DT{}mIa+>O$h=!P+2PL&?T;C|y>~ddOyzeq zFM3z0cdB*26H{~3y{g}D`=6aDEG&F^Yiss>yV^ck>s{&J;|x-s{eJ)Y&YeAb_f8JJ zZTV)o&#{OIZtu0GQ4t3@3ImMybLyn#rb=)=T$H!NHaT({li0OGU$>D$nC`~22#R_0SRQ=Qcb>P5Uu)Qj1%A?N0%)YH@ES`dCZmhu^(`NR&M3^OklQlJR+Ey1g*Zu$M&wuxO|NX^e|H`ULL!ODJpE}Jl?+~`< z{(0|>fa#ojV`28LsKS$VNZ zvH7(QZ{%-oYr0|g^@h(=sa`j3j)?AsFV5WBFy&)UOz&)^moFiEGphSfPuJIv-&b>U zQ>uHv+}_LEKsjZurl#J#>0g6?K2;XkvS*QFM%jn1Plbw7y}!1{Z$JHHlOlgg$;*q` zmv_xi-}g1GHrLm~d#OGjU4Utj04u>NfUN0$~_cOEX1$tbCx zv)-)CQ)kcH;s%Bd8w_SfaJ_iFT35_idFB4w&0E$B34P}YUl;T6$d`l7?C-be3JD2) zm(yJlQTHe1+?Si(sXWYfX3i^uPlTs#{N<*pv1n29Grb6nBi|-ne5~G6Rj}t~3fl@F zHRjX1Tjz?Jigw4nTB5twX{OM>RT^b8#8*y4)Yo`Sz8a|peamuZ;C-{?cpO_!5jMiXP zTyvM5NAIIYoa52Y@83^3-MM;oS={V)+mN86pP)N-%euO{!q!A=%(=O#_V+i>m3=BI zDp5Y(MGXhUIuufRH<)#*iZd>(F)yrPZ*)?8p4=p<6(hvn9}w}l$+h`oR*;NAl57}9 z<%8FC!irhV#eSbxO)U_+SzYi}jddY|az~0%OK?Yy@HOSG4IB7)1+-jJj2Gp7b2Q}B zozk#yK}`ymc|%6$ww0Xw^;Z8)n*7FI{YF0bLI!0neRUf)y?MX4_WixRGiT1+e%PS1y6N%pesdF(9Xog4&2(0I z$8f*qvu`_}?7uY^*I4yM)owWVFYVElM}Ka-I=J^_XrZ}9X|Y}3^9%QX-ivk%>TsSd zz4iFdxJxY)&F5da8P)!6cD{FT`Q0aR5&xGY%$_>&q{OppTfJ1aLKZt0PG1zDVPs?! zF)dXh?fbjCV%<;6@5%`Y8P)vwa64u8k-O(VJUpzqw6n9b{FXqcwL?fq$l|xUE7rbv z|NO44>7k?*tO3i-=kJO+ySsF*>+~C~T18x+mw#UISGD?liE`_*?rB+*DWu29^F~HGBjX!S>YCrj=NW`RGvJ?e93KF zE5Gu_ZJ#$Px*T&*oNUN*ai>PdglyL?hM$+g)y`dS2ZsZ}{uPBN_R$;T(k^{Eb&#jsF52| zbdRTfhsg4mZ+0fjBwsuEd`_dy+&#^LTXUh@WhWYdFPtgqCv}sdUSJ$)i^XJc- z_in-l(CPkv)R6C!l$Er)RHSJEtgK&8gWL9n_*f|L%=jug(*Sr+}`!1rngtc*-I86r z<3>n)lJvbYZPtZaOV6Bke*AJ_r{BBvA-flKnm2#0c79Z@_%~_VgdNjAeEmAtrt;I1 zlao)MI(2PLAyM*c%Pn+u9w(QqG)=fJW#;Hu z`1aP-soG&%y88L~xvdKl>Kz;umgb~}h86@|*tpnzxy@Jqr9nGuUT*sIY14}vHxB*z z!zrxJ81d(Cxk$;8j==PyqEFnP+1|uM@8PYjs}&U&UhnRbkTlLJdFC!(^Wn|s z^XsE_E?Tw9N=eCS{q@%+QIg8LtG;^O|MKtlw%pF%&a)>i?`{l!Zd?7$XRg)T)$8|p z`DGP9^Xa>p^X}5t*B6!DL$an`O!)HUla}T_JFDU~VauP|n;+0*@6gqAxgl&leal|` znMdR2FuTZ|raz`}q# znTtU?&9b5%tlp*+o@H@fOR>fKI$Io9QT&1hYLibUZLFxQdUt<&{*4WSf7y9FJUtCx z@!qZeGUv|`k#`efQbSuWW=NQ11SBOTUAw0H^XK&6{1Ok|y$g&EFaG0F78`qasrU3f zd-v`xdvBNcsO89#C8thx2`+XkeR*l;nl&cI#+x^-3d+B5{p!`1Tdef`^%tKEnGr7_ zExtVeg1f8heGUC|j?K2(r>~zccMl6oaanRO;X;N9TeITxD=+^sv++n7rTo>m*M8EK zXIr%;OSb;km6c6Re_kKG&iz?m+P6*4wtCvMX{$m`)u*I{goMoSJ!V(?d)cz3sp;~M zMOG|W`ct(yV7A?}?~XU*UtLhLiq5#}&@pxWkGLCmxdW~3*Jk*X)_e5mQEqWP8Kabrpp|IU8c-(@ZiD1wNXER{fymPbu_~u=jNuR+qO*$+Le2I+pSws3&j~k#Kn(q&6AZB z{rY;nby8B2uUfIM@7%cc=Phejt=YpfWnJXvWvf;(HLPC!y6frbs_*aKzI|J(Xa2n^ zaN_QE_Zp`?UTgh4J%75p9a}YZbxP4rAHC`q6Wu4>-gb9;`TN@1UwOB;nXW6%uCM>! za>Qlw$rS-BrM~c9Unkny(iVFCO29PTeRX%w9^M-pb?edlecpMqgQA0zO{8uuTNb0Q z7q>O(=!-LkbKY-Tv*pa$v%TW8dR^m8{%yH9ZJE@65t&7C^N1^i*6&wsdae(bduVo%ysb-K zthoM~m+kV=?&)6M-qqh;xoYxq@%+hse{aJEgUvVhq+ef`c(^?@H1yb!BMdH&7rmT3 zPfk$MGUJ4Rx%u{OnwpJ`jTbLoTpM*f|K1MIwSoLHCNF&a&h09Fedy5PLx&EZP4nLN zETWxH_SNgx=jWVElyK9V{QKwc=TDxv96gejdv{skMU}0Y&K(x3IllLF6*UMvtXO)t z(($<1spsDm%GA}?{=dPO@#(l$uDe;QQt4jo(H^<3x_C}^$v@o37N*|V6Y6zDHm zxp0$4d2K)q+r%#IdvZ&1r%w2>`{BcfhJ}xgSm(BaibDRSTh?t;`+j2EBIC#_N$b`a z-r5}{YqR~z>C=}_pPn3~H2LKF`Ui}8Eb{X6!`4O@i~eJ{w9`A>&#uVGL_uMLZ_%cT z3vqj^gcsDd^Gyj7sHmcW@uouTk8Dlm9CViH+9kc9tn#H z0hhMrMl;w}-*?wID`6+Yury=xoH=*4tyRd*tcb8M_w&hF6KZ*T(u9EQ1IFR3ZY4J^ zRCQh4Cb`{aZ3gdDHbK!D3(xJ&EYCNd^Tc;vn2LhI=9(X!`<_{)`c7K4&)4I&7HA|) zQSqY1{F$6DBY)I+?Zvh$`*n&`>zKbxp^j zq}#6HcVk7b-`&dC#l3Co?_1S}cX14FZzT_?+$2;#YSJrJ=U6nLrO7HeYj*F`CQ_YslyYkzR!(;C^ zHby4KT~oIxOy6h5w&wccu{Qs?a{T{4X>9rZ0V9;ci>KT!-QAoFB~%p zxfOQ$`_5+pXQxYlpAq<0{Z_HI>w&GDfo;l4hvjTvyxOqp*uT^B7I#RSNeg*$D!nZpneAI{(4 zxBPP6_S2g}f@AMyWQVMZ-EzAA-sXq3%T`WayDRqi;?&D;1Ajkfo`2Wm+^!dE1=PcXwbF=gJ6#jg3bN`=Dn@^^2@$lHhlt{29hCEv#Z=SQ^_M7^BpZ%1o zp1<9`yY#)BjLekU2M+)LG28upGI_-b4}lhER#r#HMqxGIx|gludHYf?&XTXQsM}L= zW`^NxvpkupGb3wutjOM;Xa9eXs)~w|Lgp!sg;&H<7+;;dVPPV zwpmkEHTCo~-9;M9mMxRBEHbgsSW)csJaDG?V#UkvoQoDce3A1d^tHzStP7i%6y~hX zlb*9WO`C2xvevCm8zq_voo{RC+F}Pe3v(1U|q9j%^chEdyUNO30M-GcD!j%L1Xm>v?y-y}2bSEre4GlcHZer|W+He17Fh+-&o_JG;}%Q(TUmIjz5b z&59{0KToY*C+0e_gYC=v`k!+wZ`b|yHR;Ujo09hY{NmncU74NVZ&tk76ePXYbYE5G zskpmWI_xf=W?|6meE7Icy-_gd;bWo6ll-Plzx~#1^G%bqH!~6sw?BU_yXV`kpM1+VfBEro zOJk<_y_(NQ7av~}zd!HSmzUAoa{RpIC8VURlCPav^5lu%T;WZdzR79oZDV6|b#WCH zmA$ny+1<;l|J+>b^wiX&<*(k9SY2QDGx5}wm9DMr_kQfZe!PFafSg#|{R;&K`ub-3 zggrMU>bp2?Z#SB?tMu=hw<#WO)~y#`uD$;vds@t?Ia}r!Exdk#L+*Q(&(`l}CND3) zE3nPSq$uFfBJIoh{|+C>exAk_wbu7<;)B=(KjE?l1D?YMJddSa6FAk13qph(=B?xD zeHmJNHr6F2rRvxM#lvmyZtcvz@!{bj&owJo?n_9hy0~!BjvY7T_Exd7MJT4jKz`k>UDfC1il4<^T<$Nw`KFHNr5A?DNy*8Z`DIR=J-fH;UrnIM_T0Z`Q_RlK zuw1-hLx6~{p`l@CXD6eWccSCN85@(!-`%Nv6XEIAKjqDvH^NJoPCq|SSM%!EJ#u$S zkKL_#==GrLPFr4+_!riWceP5po=%RQ_moY4I)|j+q(TdR_Kw%03_1rl&i&;h>@xB4 z1zDEWS)kG*(Xa7I#+7hQC55UfhnZO#9z0mEU_lDYn>#x<*BLIY?%K4^Q14tC1|N6HTyvYy$>

eDwnJ4?%zri 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 { - case HTTP_EVENT_ERROR: - ESP_LOGD(TAG, "HTTP_EVENT_ERROR"); - break; - case HTTP_EVENT_ON_CONNECTED: - ESP_LOGD(TAG, "HTTP_EVENT_ON_CONNECTED"); - break; - case HTTP_EVENT_HEADER_SENT: - ESP_LOGD(TAG, "HTTP_EVENT_HEADER_SENT"); - break; - case HTTP_EVENT_ON_HEADER: - ESP_LOGD(TAG, "HTTP_EVENT_ON_HEADER, key=%s, value=%s", evt->header_key, evt->header_value); - break; - case HTTP_EVENT_ON_DATA: - ESP_LOGD(TAG, "HTTP_EVENT_ON_DATA, len=%d", evt->data_len); - break; - case HTTP_EVENT_ON_FINISH: - ESP_LOGD(TAG, "HTTP_EVENT_ON_FINISH"); - break; - case HTTP_EVENT_DISCONNECTED: - ESP_LOGD(TAG, "HTTP_EVENT_DISCONNECTED"); - break; - } - return ESP_OK; -} - -static esp_err_t event_handler(void *ctx, system_event_t *event) -{ - switch (event->event_id) { - case SYSTEM_EVENT_STA_START: - esp_wifi_connect(); + switch (evt->event_id) { + case HTTP_EVENT_ERROR: + ESP_LOGD(TAG, "HTTP_EVENT_ERROR"); break; - case SYSTEM_EVENT_STA_GOT_IP: - xEventGroupSetBits(wifi_event_group, CONNECTED_BIT); + case HTTP_EVENT_ON_CONNECTED: + ESP_LOGD(TAG, "HTTP_EVENT_ON_CONNECTED"); break; - case SYSTEM_EVENT_STA_DISCONNECTED: - /* This is a workaround as ESP32 WiFi libs don't currently - auto-reassociate. */ - esp_wifi_connect(); - xEventGroupClearBits(wifi_event_group, CONNECTED_BIT); + case HTTP_EVENT_HEADER_SENT: + ESP_LOGD(TAG, "HTTP_EVENT_HEADER_SENT"); break; - default: + case HTTP_EVENT_ON_HEADER: + ESP_LOGD(TAG, "HTTP_EVENT_ON_HEADER, key=%s, value=%s", evt->header_key, evt->header_value); + break; + case HTTP_EVENT_ON_DATA: + ESP_LOGD(TAG, "HTTP_EVENT_ON_DATA, len=%d", evt->data_len); + break; + case HTTP_EVENT_ON_FINISH: + ESP_LOGD(TAG, "HTTP_EVENT_ON_FINISH"); + break; + case HTTP_EVENT_DISCONNECTED: + ESP_LOGD(TAG, "HTTP_EVENT_DISCONNECTED"); break; } return ESP_OK; } -static void initialise_wifi(void) -{ - tcpip_adapter_init(); - wifi_event_group = xEventGroupCreate(); - ESP_ERROR_CHECK( esp_event_loop_init(event_handler, NULL) ); - wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); - ESP_ERROR_CHECK( esp_wifi_init(&cfg) ); - ESP_ERROR_CHECK( esp_wifi_set_storage(WIFI_STORAGE_RAM) ); - wifi_config_t wifi_config = { - .sta = { - .ssid = CONFIG_EXAMPLE_WIFI_SSID, - .password = CONFIG_EXAMPLE_WIFI_PASSWORD, - }, - }; - ESP_LOGI(TAG, "Setting WiFi configuration SSID %s", wifi_config.sta.ssid); - ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) ); - ESP_ERROR_CHECK( esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config) ); - ESP_ERROR_CHECK( esp_wifi_start() ); -} - -void simple_ota_example_task(void * pvParameter) +void simple_ota_example_task(void *pvParameter) { ESP_LOGI(TAG, "Starting OTA example"); - /* Wait for the callback to set the CONNECTED_BIT in the - event group. - */ - xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, - false, true, portMAX_DELAY); - ESP_LOGI(TAG, "Connected to WiFi network! Attempting to connect to server..."); - esp_http_client_config_t config = { .url = CONFIG_EXAMPLE_FIRMWARE_UPGRADE_URL, .cert_pem = (char *)server_cert_pem_start, @@ -141,8 +83,16 @@ void app_main() ESP_ERROR_CHECK(nvs_flash_erase()); err = nvs_flash_init(); } - ESP_ERROR_CHECK( err ); + ESP_ERROR_CHECK(err); + + tcpip_adapter_init(); + ESP_ERROR_CHECK(esp_event_loop_create_default()); + + /* This helper function configures Wi-Fi or Ethernet, as selected in menuconfig. + * Read "Establishing Wi-Fi or Ethernet Connection" section in + * examples/protocols/README.md for more information about this function. + */ + ESP_ERROR_CHECK(example_connect()); - initialise_wifi(); xTaskCreate(&simple_ota_example_task, "ota_example_task", 8192, NULL, 5, NULL); } diff --git a/examples/wifi/getting_started/softAP/main/softap_example_main.c b/examples/wifi/getting_started/softAP/main/softap_example_main.c index 014c439636..515e3618ee 100644 --- a/examples/wifi/getting_started/softAP/main/softap_example_main.c +++ b/examples/wifi/getting_started/softAP/main/softap_example_main.c @@ -9,7 +9,6 @@ #include #include "freertos/FreeRTOS.h" #include "freertos/task.h" -#include "freertos/event_groups.h" #include "esp_system.h" #include "esp_wifi.h" #include "esp_event.h" @@ -28,12 +27,9 @@ #define EXAMPLE_ESP_WIFI_PASS CONFIG_ESP_WIFI_PASSWORD #define EXAMPLE_MAX_STA_CONN CONFIG_ESP_MAX_STA_CONN -/* FreeRTOS event group to signal when we are connected*/ -static EventGroupHandle_t s_wifi_event_group; - static const char *TAG = "wifi softAP"; -static void wifi_event_handler(void* arg, esp_event_base_t event_base, +static void wifi_event_handler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data) { if (event_id == WIFI_EVENT_AP_STACONNECTED) { @@ -49,8 +45,6 @@ static void wifi_event_handler(void* arg, esp_event_base_t event_base, void wifi_init_softap() { - s_wifi_event_group = xEventGroupCreate(); - tcpip_adapter_init(); ESP_ERROR_CHECK(esp_event_loop_create_default()); @@ -89,7 +83,7 @@ void app_main() ret = nvs_flash_init(); } ESP_ERROR_CHECK(ret); - + ESP_LOGI(TAG, "ESP_WIFI_MODE_AP"); wifi_init_softap(); }