From 18970bb6f9199f1c18f7f723e4a5eaaa9df14a3e Mon Sep 17 00:00:00 2001 From: Teemu Takaluoma Date: Thu, 8 Jul 2021 13:16:24 +0300 Subject: [PATCH] factory-configurator-client-example 4.10.0 --- CHANGELOG.md | 9 +- mbed-cloud-client.lib | 2 +- mbed-os.lib | 2 +- pal-platform/Toolchain/GCC/GCC-flags.cmake | 3 + ...121dde.bin => mbed-bootloader-95fa885.bin} | Bin 23908 -> 23948 bytes .../TARGET_BL_INTERNAL_FLASH/mbed_lib.json | 2 +- ...121dde.bin => mbed-bootloader-95fa885.bin} | Bin 20764 -> 20764 bytes .../TARGET_BL_INTERNAL_FLASH/mbed_lib.json | 2 +- ...121dde.bin => mbed-bootloader-95fa885.bin} | Bin 38408 -> 38480 bytes .../TARGET_BL_QSPIF/mbed_lib.json | 2 +- ...121dde.bin => mbed-bootloader-95fa885.bin} | Bin 19688 -> 19680 bytes .../TARGET_BL_INTERNAL_FLASH/mbed_lib.json | 2 +- ...121dde.bin => mbed-bootloader-95fa885.bin} | Bin 32176 -> 32248 bytes .../TARGET_K64F/TARGET_BL_SD/mbed_lib.json | 2 +- ...121dde.bin => mbed-bootloader-95fa885.bin} | Bin 20688 -> 20688 bytes .../TARGET_BL_INTERNAL_FLASH/mbed_lib.json | 2 +- .../mbed-bootloader-95fa885.bin | Bin 0 -> 32712 bytes .../TARGET_BL_INTERNAL_FLASH/mbed_lib.json | 28 ++ ...121dde.hex => mbed-bootloader-95fa885.hex} | 282 +++++++++--------- .../TARGET_BL_INTERNAL_FLASH/mbed_lib.json | 2 +- ...121dde.bin => mbed-bootloader-95fa885.bin} | Bin 32064 -> 32140 bytes .../TARGET_BL_SD/mbed_lib.json | 2 +- ...121dde.bin => mbed-bootloader-95fa885.bin} | Bin 20900 -> 20896 bytes .../TARGET_BL_INTERNAL_FLASH/mbed_lib.json | 2 +- source/platform/mbed-os/mcc_common_setup.cpp | 90 ++++-- 25 files changed, 257 insertions(+), 177 deletions(-) rename prebuilt-bl/TARGET_DISCO_F769NI/TARGET_BL_INTERNAL_FLASH/{mbed-bootloader-6121dde.bin => mbed-bootloader-95fa885.bin} (50%) rename prebuilt-bl/TARGET_DISCO_L475VG_IOT01A/TARGET_BL_INTERNAL_FLASH/{mbed-bootloader-6121dde.bin => mbed-bootloader-95fa885.bin} (98%) rename prebuilt-bl/TARGET_DISCO_L475VG_IOT01A/TARGET_BL_QSPIF/{mbed-bootloader-6121dde.bin => mbed-bootloader-95fa885.bin} (65%) rename prebuilt-bl/TARGET_K64F/TARGET_BL_INTERNAL_FLASH/{mbed-bootloader-6121dde.bin => mbed-bootloader-95fa885.bin} (68%) rename prebuilt-bl/TARGET_K64F/TARGET_BL_SD/{mbed-bootloader-6121dde.bin => mbed-bootloader-95fa885.bin} (67%) rename prebuilt-bl/TARGET_K66F/TARGET_BL_INTERNAL_FLASH/{mbed-bootloader-6121dde.bin => mbed-bootloader-95fa885.bin} (69%) create mode 100644 prebuilt-bl/TARGET_MIMXRT1050_EVK/TARGET_BL_INTERNAL_FLASH/mbed-bootloader-95fa885.bin create mode 100644 prebuilt-bl/TARGET_MIMXRT1050_EVK/TARGET_BL_INTERNAL_FLASH/mbed_lib.json rename prebuilt-bl/TARGET_NRF52840_DK/TARGET_BL_INTERNAL_FLASH/{mbed-bootloader-6121dde.hex => mbed-bootloader-95fa885.hex} (88%) rename prebuilt-bl/TARGET_NUCLEO_F411RE/TARGET_BL_SD/{mbed-bootloader-6121dde.bin => mbed-bootloader-95fa885.bin} (61%) rename prebuilt-bl/TARGET_NUCLEO_F429ZI/TARGET_BL_INTERNAL_FLASH/{mbed-bootloader-6121dde.bin => mbed-bootloader-95fa885.bin} (72%) diff --git a/CHANGELOG.md b/CHANGELOG.md index c0f60b2..508a458 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,15 @@ # Changelog for Factory Configurator Client example application -## Release 4.9.0 +## Release 4.10.0 (30.06.2021) + +* Updated to Mbed OS 6.12.0. + +## Release 4.9.0 (21.05.2021) * Updated to Mbed OS 6.9.0. * [LINUX] Updated Mbed TLS to 2.25.0. - -## Release 4.8.0 (XX.04.2021) +## Release 4.8.0 (24.03.2021) * Updated to Mbed OS 6.8.0. * Updated cURL to 7.75.0 in `pal-platform`. diff --git a/mbed-cloud-client.lib b/mbed-cloud-client.lib index 5a4d5cf..7016e5d 100644 --- a/mbed-cloud-client.lib +++ b/mbed-cloud-client.lib @@ -1 +1 @@ -https://github.com/PelionIoT/mbed-cloud-client/#7e45d92cf759d62c2d881bd7be318c807d8a47c2 +https://github.com/PelionIoT/mbed-cloud-client/#d7edc529ed3722c811ff401440ef58ea980bf543 diff --git a/mbed-os.lib b/mbed-os.lib index b88a5d3..f185a6b 100644 --- a/mbed-os.lib +++ b/mbed-os.lib @@ -1 +1 @@ -https://github.com/ARMmbed/mbed-os/#c73413893fb98aaaeda74513c981ac68adc8645d +https://github.com/ARMmbed/mbed-os/#cecc47b4a53951527dd3f670465c8566396ad101 diff --git a/pal-platform/Toolchain/GCC/GCC-flags.cmake b/pal-platform/Toolchain/GCC/GCC-flags.cmake index fc18472..abf1027 100644 --- a/pal-platform/Toolchain/GCC/GCC-flags.cmake +++ b/pal-platform/Toolchain/GCC/GCC-flags.cmake @@ -60,6 +60,8 @@ endif () # Board specific SET_COMPILER_DBG_RLZ_FLAG (CMAKE_C_FLAGS "-Wall") +SET_COMPILER_DBG_RLZ_FLAG (CMAKE_CXX_FLAGS "-Wall") + # Board specific if (${CPU} MATCHES "x86_64") SET_COMPILER_DBG_RLZ_FLAG (CMAKE_C_FLAGS "-m32") @@ -79,6 +81,7 @@ SET_COMPILER_DBG_RLZ_FLAG (CMAKE_C_FLAGS "-fdata-sections") SET_COMPILER_DBG_RLZ_FLAG (CMAKE_C_FLAGS "-ffreestanding") SET_COMPILER_DBG_RLZ_FLAG (CMAKE_C_FLAGS "-fno-builtin") SET_COMPILER_DBG_RLZ_FLAG (CMAKE_C_FLAGS "-std=gnu99") +SET_COMPILER_DBG_RLZ_FLAG (CMAKE_CXX_FLAGS "-std=gnu++03") ########### Release specific ########### diff --git a/prebuilt-bl/TARGET_DISCO_F769NI/TARGET_BL_INTERNAL_FLASH/mbed-bootloader-6121dde.bin b/prebuilt-bl/TARGET_DISCO_F769NI/TARGET_BL_INTERNAL_FLASH/mbed-bootloader-95fa885.bin similarity index 50% rename from prebuilt-bl/TARGET_DISCO_F769NI/TARGET_BL_INTERNAL_FLASH/mbed-bootloader-6121dde.bin rename to prebuilt-bl/TARGET_DISCO_F769NI/TARGET_BL_INTERNAL_FLASH/mbed-bootloader-95fa885.bin index 9608056ac1cbdc7ffabbe41b37c45a580bb1dff0..2598b8da6cc86d0db167897c7665c7be8de2c087 100644 GIT binary patch delta 4294 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 delta 4460 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 diff --git a/prebuilt-bl/TARGET_DISCO_F769NI/TARGET_BL_INTERNAL_FLASH/mbed_lib.json b/prebuilt-bl/TARGET_DISCO_F769NI/TARGET_BL_INTERNAL_FLASH/mbed_lib.json index 27ead94..e950248 100644 --- a/prebuilt-bl/TARGET_DISCO_F769NI/TARGET_BL_INTERNAL_FLASH/mbed_lib.json +++ b/prebuilt-bl/TARGET_DISCO_F769NI/TARGET_BL_INTERNAL_FLASH/mbed_lib.json @@ -12,7 +12,7 @@ "MBED_CLOUD_CLIENT_FOTA_STORAGE_SIZE=(MBED_BOOTLOADER_FLASH_BANK_SIZE - MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_SIZE)" ], - "target.bootloader_img": "mbed-bootloader-6121dde.bin", + "target.bootloader_img": "mbed-bootloader-95fa885.bin", "target.header_offset" : "0x8000", "target.app_offset" : "0x8200", "target.restrict_size" : "0xF7E00", diff --git a/prebuilt-bl/TARGET_DISCO_L475VG_IOT01A/TARGET_BL_INTERNAL_FLASH/mbed-bootloader-6121dde.bin b/prebuilt-bl/TARGET_DISCO_L475VG_IOT01A/TARGET_BL_INTERNAL_FLASH/mbed-bootloader-95fa885.bin similarity index 98% rename from prebuilt-bl/TARGET_DISCO_L475VG_IOT01A/TARGET_BL_INTERNAL_FLASH/mbed-bootloader-6121dde.bin rename to prebuilt-bl/TARGET_DISCO_L475VG_IOT01A/TARGET_BL_INTERNAL_FLASH/mbed-bootloader-95fa885.bin index 270ad1ce7f34d1c96e3adcce7c779e2997300702..549b84bcec9bdc90181ab15303a2265ef9f83e59 100644 GIT binary patch delta 62 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%0AiqefwaOKPB zSaAYgPUni{Gxo$xZv9Yh(hI?b%`X!jXt)M8TdV9Q%@Ru9Hg+@k@;u1h6t+FuO#~QQ z1c<2B^XUmOFLk!Uk!oO3n{h9_ELNJ!6g?5gZh&=K&Zn?hQEau>i#BV0!zEq6%GOYG zTMjnRnzn*MRqiHNL&(KBtBK0)j0uoT)xj!Mrm%F{*)|Izt-CF&yyY3hcY9+jTlHv0 z(N=5MHFBT?%_w3l)8G3I3YuWtK)-LRP5IZE-mg(moBvgmPT!QD`q>#2h_ep@nyZ|l zt(!`#A`vj=LYrA(w<1VLcIpM)GuYWYY!k|%M2<`_=rEh6BFoZ&On_}f-`=z^;T_Pb z!tS8yo2PNNVw7win_8qMgJ8#~qoB;AotwL`lMZdp<8DQ0O8b*pe?6@|M|fbz1z45} z;P4?m(O!v9(a+oS@Co`$dnta77IakL$7n-Gan`(t?iYj_VX}2{l~8rtboiT0AMJ3= z{4y-~v=E>L1sX<@PX0B^Ndg^T3tQYVHXIK8-29XfPzPg-i&%Uy<_(+NSctLfwEX^( zX}^ROwpvYEAc)-whARr21L!13x$u69u#ggAH^Q1X=s>&}vP2Ycf;VoZyYD}Z`#dwZ zG;w%4-QW2jw$OOzc6`pW{efgXzUt|D*n{ESSF`Oh#$V9X9Tkvk*X)?ZMIxRZJI3RT z6nJ4GsbD0x7tJzrQTNU%xYToFXA#aj6Ylm)-sfHTWGaDR|8zAG!I@!_r*PL!Ts0@A zWx12DXu(4S!-%qZktnNo1Ya)VMtH(t+rzxnl66l5B-wuX_yE^cBx}|FXo=>&i z4P471y07~uY^J+*=i$Zl$nK6Zuk4Eaaw|R&UyqOHg9?iS-z7{sIhKMcEVd^uEHfr=q4t)N699EDh2{m9>sQb(HM~ryJu<{B7<6 z8sFENvqDB@R2*S1`DO1Il1kL)i@tU2R=Od-lD>5Kc9O-wxFf-jYAjz(Do zSVU5tY!@$ulIHyST@Ei{mp6qNV8wS4T71A#@a5@WJ5+$2C?K#X>H#2JwkR8*>kn+q z`*V0YOiu%G9typ*Ie!gqLFN!R)N_f8*dCl<4Lf`36VBP5AeKgSH)< z*0d!IseM#%>q%B$lr=|21#_Ab``bm86)KIs#G~1u9FL`VZwmaJ5dyxS51?i6^p zB|#cw7&1WuC=@f+=K1bm4#sI7-BSXz7g5zC&v2+4bEt@lX*>IArcR3QMi2kQ;3RgKbBAE!1Y9)zCf&wHwF_ zq#dR0uWiWzeGC6lsDS!B)KHE57@=GU#|u!~fJ%Rl_$iOVJfMF<8$+E3q{8!d64VJh z5$5TILu;0zZLmxPHeNi4`1gU@fK~$y0Br~IH6i{m)UYeE)ukf=>hrLs7o^<_?Ws>8 gUITm+MB_)(5Sk6&d34v|HHIJeBmPJF_2IJr0sSJ`&;S4c delta 4941 zcmZWtdwdi{^6#FV-OT0zlLSlx3CwN?*$@H~2oONb=D}onPPr%|GCCm-R*qK6?qCyMm!bAC19{Oh;*)O62u zcXd^D^|z{W;W*QFobhZj;K#^jLy2+w0mQk_hB!=QnlFxNMf-C)FNzTIZcjEDGkXI5i8iku(v8XoIw89Ltx z-_8v?!Qd%mV_r$Cpb5=C^m3L;Cl-W_&aK&AlhTnuf^(yD3$oq35ZdDM-jG@4F3lvm zPwuYDxEzw}Z$~zAHSUwFlBuPJI<^P{GmP5qs$>{t6;3mRSS1g*gj~SM^!75k8MXB8g&byjBV&82Ju6D1qGUc z`JDJh7mZ->E;6&Y5HBDt#l^US94;ZUP6?LB%`u5E=aBb3jY3i z#NC1&RUnh{!)ag5*v7%k#plT%raz5sq~PvVgIVQT5P{h12A)B3`0mYku`g}LQ3L)P z@!4nLRuZ=_V-3nzn(zL~MvUi@;%W=IShWyOgx-&Ne@O`PIa!d}Y6Zy?C?klwJ7qve z2`h)ll$wcn8d+CUfm3~N*6hH{b(M^fW-~NK9+Bo^j=U@V8y_bx);5DyM#m(WJlzq8 zO{UJ8Q~1MaggpK<>4PNPgGQM`oP$+1tE_}<*+D$&rpb7Tg)dutZ_et&S)%&)K7{!I zQr-r79_Y_N?c~il<8d1KV$M3tcc)q9o71^|R$`SwVdTvXfIGD_4rH-PD4$Wz`qs=f zsk-m+L*(dh4&uFJM*R}pNe!sYK9dV`nqNYB@jU9tUu48-$A|$DW60{?*_%j4(mWlKj?op zkX2{PL&_$1LyTV%&tgHjV0WP?%} zM}pww19ozBej#2=y5~PRoFtMQSjMH;=?<{avv~1T?Bs$-*-th!=HzsR*#TJ$4jmDY z(hUxuZ9;rLd8IKg<<+oFs=sx;)SwiT^NquCfZS+o!B3F+3oQ5(^6-MW4XS));SoxkTTUaruHq3kL z6-}hQ8pRrUW1%yp9E_;ZONl5wMusjTY3I~|DU+*08hw=b7fr`AN&ljPVG~pn7|9gm z%D73uV)75b!U3ytRU$4H@GLTKaSQ$r2`-+QQf@$eNuOGOP5m<&ykt1OLW-AEm{*5C zS5uuxSxz=DsRR3-Tk1RVU!@$*`;_M(_V^CsY=khH+G`cJ_Si-^uON6>&f^)G?SHmO;X9SrQHTo{}6*%=5 zRg3(k%t>~Y8{gB1GSd2OTs2s3QP?E8y2_;p&4@7)*Uy%rsqiu`CWDiVHsR0)#bVOv z+}NF-C=K=mZYsO-<2w3 zxO}Xvfa|tF8H18S7Xj(9SlN%Tj`>J1c>wnj?;j#ziI+M+yBlFaW@g!kWd{MG5FdDL zKC=|Gt2Uf?$^-BOU~?f)P?FGF-=bFITapc2^`o#!z{>9U`_2OWtTq72BQ&rB5W5Jr9*RrYhq<|7zyw94ML*CSjI?h5ZoFT zy&{aHg|GI)!JsR>NEq$B+}pWdN8eVEM;5(UNvI&RvOv?NLjq`Id8cnsx~n$mH-f~e zlA*o34X2kV$$C5k!RZcf0#TY# z3I}-e0kD$Vn#|%yO8bMlj!X_aLRst|FL!XEWKrBx{*T6Ht z;_|O7fP>r5TQvHH=7yl^s^$H0IzHj>V)?1&wpvfWR`K_su2M}E3YkYS%C!XR)Wy_~ z&4?VXS{pg%Y{AFK_@*iN2wBrq4^Vxo={`K0WG)|H{A|n=iqK^M#1YySi_k5x+%8cT z6nBH@EULrDQK2B!SjIae)Ja;FXO;A*9wFr*;0L6JN$omP2vU^35H3HXU*92?jDrzc zrDhz{zaA#u<(XVm>+FhAUL_wb&&}&qGd)Vc)S=PG!-L@28b-mzJYz>LWN#$K6^q6n zRgDlm;5OcJ+aq*DOpibsef6|H!{vY01Afq%Cb6Pu86t&g581P#X#Q4paGg!A%q?=- zy7btHkCj=&^l8o5e>aOk6#Z?N)(okX+1pl&Lwe?+(bei8k1OzQ0=2G$YvS>@d2|Pe zP(_PU$RAcN!t2QcD|7HZvUTN1+)NIy+?1Q zj(RG3o9TK<7^5aSz3yz)`cG|;d1#b@ORo14 z^oWLRT(GQ0xp1FjgJQ)%Y=ZtTsaRvl`Z{iD79|(x@t620N5QNKQZcNEk>9PElKwx5 zi+xxW>b{gKbJ86N`Z)=%$v3|jw|R$kBxoD?cFj{v_d@cBJO-zeSLC8BPlETd{n^Pc zh33`2DjDG1rUJ8l)3pf!609oVg9^iRIyv85F{3(Bub|`x$*801 zJ`^-!&CR_4MU6i}E8{-hZJH~c1_xuoPTg%1^qxT5mng);cqy5=wsK;2pzS&e>GMh8ohov;dk!@j5 z21JXoWbnFqNne96gsDu{teeDGHS))GBhvEXDPaC#@geZcBInn&=Gp+1m|2{hEVoxh zdt9}-+jW;_!2-Z_<@#qczdWNCF&v2K0l-ZI;Gx9WQZoEMQ5|Xx?MypvA3cznxzAu_ zb1XqGle(4y{65*-QjFgwFSl4T>zXzRrBj3n;)GJ6bkel4$gL4|1W=lXp@Fy5Ph7;NiG(Cd&AU?D-jAUhw-pJa)K=~MCK zxq|FYGF}YRjR1Utl8ppsln#wVX?j$@R|egzPC%bvJKXC=a{0kC_#@we4Rs7YO1|2- z88?zeo3`SmzMf4fEZ*U}`iKuh1^L{T&oJcltF{&6L*%(_6-;5w_vyCLIQ?}n8d8Q2 zR0*<0rB{e~`$Rm?H)H!qjBk=iU%iugQ`bacJS4MfC z4E_>Ai`>(mDmoyCtnH_!jv`YY*N-4!dgy--JSoE3Ln+ZE~M1RXLKr zGmDsZemuMm&OCP@1ZaZ&Zsnkt=+}ToiUG+qNxvh=ESGCbxC`>Qw@BKJB z6zTUG-y=w?ohqH}+x0lcmZeaQ{^ADTh4yuz4}iV{;-5oY4}9NCj_&%_SlWuX9CG0I z*ODt$V@I6cqn_VS9@{-TbAFWbYJxeWBS+;=Z4*@b6ZvBI#7y!3eHV%4iOlgG7D1wP zYa-Q=Hp?ox^5ZlC=`*A)hz|&|c~)B$I}k+-jt&c@tH_Ecx>NoUH-v`41*G(GGX2Q~ z_+#?ilS7N&jbkCDz5bTl#kMm5|GZ#qw}A~y(W%l8Nzap+_#C^(*0wu!BgzNp3g=_i?e@p$ z8B)3@Yw)SFD46Rv|98a}vS?3J)@~J9kTps_45D68WX9h6iW=d+EE$dlHFe}a zWvjw4|8yeo-&=oWpyD!n83$MEs=W#Sh=2gScT(Mp5seOu30_vp?1<4vqeDVjb>`0X za-3#`9bM)_L*d-wbWGR`S!|pd!{u;#Hr5QV`ZH9B$&iv5`+3M;1uLZoeAUlpVLZ)u z-@b?0aS6CVsR$tq!~?wp{>{LP8~Q)#x9h(@eXNs^1gR#Q_KzSN_FGy-7#7nIziKUb z>pH~sH6!jkka0cYCc(EQK+Ax1);d3(1q1X9Y*7rY3tDIfekOP(gGmHv?Lgf-5cdTX z$)5r3c?@yKpgjk46zJbTC$=FgCzeX}jg_J}Y4XJ7tEQGWO)Xo!Qe3%0oII&?h1gUs zBElbdV1Wp1We{`bUc|Kkr2`p(wgOpzy6O-&16tS>*{cR40a`b#X#?xGLI29LaN{A6 d@Q?>A9fZ(#@ZLn;JMe(<;2y*sBtFo8re8lArBuzPK1J;iB^Nq_hJ?|J8b zo!)zH53w6V%ml#8=LCSffN3Yo7?}$YC0LpI9(#=2J7~ltU(4L+5hQATLNRmT2Ekd? zq4V1Nf67n}O!Fp~HWr5nfDzKuQ3GSM0S+^eT{A&0#jvnIEGPde)P!?w zU0n_H?>b(bcI=(DPt$-C)B5Xa+eL$KR!}z7cMKA5uMZl0mHtJ6o<3f?KPfA`R-XiC zMNfSgB4_YIMt;>;JlU*p3U`dx#3WwIes1>5@hefm?Cc99e*cY6SgpoZE>O_QYrSz? zlOxmaw&v{MO5$(NT*Xzy@zI%2ZaYH<-xP$oh8|Jz%e;1+)>#tZw0Q}SA}gF$osdJ7 zJ)6R`8%T_9)aJqDs4>WC&Lp@BBI&*{obLDkr*96@Uj1&GB{L!Wd2N>tPG^sq;&K(H z94;xKKY;F&m-8RMCUc=|rR&>NX^-sR6duMA(*p4; z+UYQ6XVgrqwu}lkjGHqgYTwL|xM7AX&2A|(#A&xrahi#&m5@U9K~c$QPsOg|5wpZD zV%VH-|03n0!)>1wijJ)>h_E@mEye(7KPEYf`xM8`Qr?FtILLpkxnDu5e2M z!JUd-!<)7;b`4E-JNpJhb|)^g=Schh7h4lx&j@ZyYby2zK5s8$gLshQcToHmQMF!^Wc0x_ju4dB4RNdA)@Vja|MHH9K=35JuA9XXsx>&El1)l|0tF9?%VUN5*kq z(OM?souY1PA1dx-d(u{P(c!6JHuQOlsoii_4|$x-riMM;j4i^#nr?9qrF8}N*F3;h zsNtHOJnL1P7w{Z=0oxY-%6hS`q2HMmX9rw?jhai~k4?p@;=hb`PH@fq{;61goZl}T zpNdI1(jc(`b*$kt*7|M-RX!2qqYrayz9fB}_=UKV1G2CTU^bB(l-s9bEqeXwsaTgT zpSDx)2t5+xX&b4JbiBRDCN=m>u&Sf8{rHl8m@}J3_{zc*Twasvb8_3El#KDi(@Bq>{e-@K#e(VOJ}_OT;I{WrB5p_Q@%T_^@%wc`+U5 zK~wWCR*8F?w`H%O{y(f#?JdZ+mCmBlP3$Jh2@ByMPFShrlYPoe<(UR>SNiU_C$B7ZrUF7R0JxY2V z>9y(xr9`-A*^AH0@^L*34|$!;UR(>X&`l?%XE=w-M*2Da Ln>*aQ{E@!^B#c-q delta 1890 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 r|9lAjv0$VvV`$2bqOmy=Km`ULyn5r|6Er~x&` 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 Au)bDI)oRx>dtk%78pTg<|k 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 diff --git a/prebuilt-bl/TARGET_K66F/TARGET_BL_INTERNAL_FLASH/mbed_lib.json b/prebuilt-bl/TARGET_K66F/TARGET_BL_INTERNAL_FLASH/mbed_lib.json index 6759d2f..710433e 100644 --- a/prebuilt-bl/TARGET_K66F/TARGET_BL_INTERNAL_FLASH/mbed_lib.json +++ b/prebuilt-bl/TARGET_K66F/TARGET_BL_INTERNAL_FLASH/mbed_lib.json @@ -12,7 +12,7 @@ "MBED_CLOUD_CLIENT_FOTA_STORAGE_SIZE=(MBED_BOOTLOADER_FLASH_BANK_SIZE - MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_SIZE)" ], - "target.bootloader_img": "mbed-bootloader-6121dde.bin", + "target.bootloader_img": "mbed-bootloader-95fa885.bin", "target.header_offset" : "0x8000", "target.app_offset" : "0x8200", "target.restrict_size" : "0xF7C00", diff --git a/prebuilt-bl/TARGET_MIMXRT1050_EVK/TARGET_BL_INTERNAL_FLASH/mbed-bootloader-95fa885.bin b/prebuilt-bl/TARGET_MIMXRT1050_EVK/TARGET_BL_INTERNAL_FLASH/mbed-bootloader-95fa885.bin new file mode 100644 index 0000000000000000000000000000000000000000..ac96a740d626ffdad5b53c20fc70f7efbb7e8db3 GIT binary patch literal 32712 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 fXMq+bLL0hAf7;PB#h{6IMiqEu_N?Pi9-Bi diff --git a/prebuilt-bl/TARGET_NUCLEO_F411RE/TARGET_BL_SD/mbed_lib.json b/prebuilt-bl/TARGET_NUCLEO_F411RE/TARGET_BL_SD/mbed_lib.json index 55d48d5..3bf0d16 100644 --- a/prebuilt-bl/TARGET_NUCLEO_F411RE/TARGET_BL_SD/mbed_lib.json +++ b/prebuilt-bl/TARGET_NUCLEO_F411RE/TARGET_BL_SD/mbed_lib.json @@ -16,7 +16,7 @@ "MBED_CLOUD_CLIENT_FOTA_STORAGE_START_ADDR=(MBED_CONF_STORAGE_FILESYSTEM_EXTERNAL_SIZE)", "MBED_CLOUD_CLIENT_FOTA_STORAGE_SIZE=(MBED_ROM_START + MBED_ROM_SIZE - APPLICATION_ADDR)" ], - "target.bootloader_img": "mbed-bootloader-6121dde.bin", + "target.bootloader_img": "mbed-bootloader-95fa885.bin", "target.header_offset" : "0x10000", "target.app_offset" : "0x10200", "target.header_format": [ diff --git a/prebuilt-bl/TARGET_NUCLEO_F429ZI/TARGET_BL_INTERNAL_FLASH/mbed-bootloader-6121dde.bin b/prebuilt-bl/TARGET_NUCLEO_F429ZI/TARGET_BL_INTERNAL_FLASH/mbed-bootloader-95fa885.bin similarity index 72% rename from prebuilt-bl/TARGET_NUCLEO_F429ZI/TARGET_BL_INTERNAL_FLASH/mbed-bootloader-6121dde.bin rename to prebuilt-bl/TARGET_NUCLEO_F429ZI/TARGET_BL_INTERNAL_FLASH/mbed-bootloader-95fa885.bin index f5bf7e7fb37373df25d671e2b6094ac89420ad67..28ea18d1aec24c75e7e1b0a8dbb781d4eee46296 100644 GIT binary patch delta 2041 zcmbuAaZD3e9LL|gyOt{`lopU$83z?Dic$n7BAdYAC?Kmw%_K^!f6N^$iY_tgbOX(p znqbsCO+aU+aXQ&z20NR;NJlVk&SV;iZo|Z7m@HO@Y>%nwmG*l3ozW$Z?2pY$KK*^~ z_xruy``vr*uAiL7Cr{%Rgjhj!BEC9%GUy-IvmD+1OuwLQd2Zse9K;s_deO?K_5~++ zuKwg&Et8*ma?-!&tkRo&+Gzd%Xc*=Em!%|K*ug|R~31PZ3ga#1ep*AbP59&!qyq7})AB%*a6Q2Z7ke~#5k!u@uOP=< zZ;>Aj?1EfIVnwDe8enRWR4=g?H&>y7R=q~8U5fG5_IVz89Y!}Ih|af!@gYgnf_F9S zX1f~{F5F7KVI3St*DB-zyP8Av%L(Gh^c+eG{ZP=1fL&P zkU3Lyiinm>kOIR}W~WB>7+#KlLoS_G|r0W=rW~DWJKm1M^`9hpYa{r*U_8zIkTgwC;aeF zHf*u*6--ZR1xr68)|d?FuP|meBSlGX%xY#!lvwx;)%vPz_MuruuR)Xqmj0n~VrdUU zH)wgHATsoAP3X(&^}bC43?eJow4AZO};e$V^$dmkC(lkHWSAhGnSiX0BF z8T?ieizhQvMV8(o<9vEnk&j>MkXH0L1w={I^9WfCqKBgOnBG*fyn>|fQ#)y678>?J zU+rX&$$zRs%-png@EK~&K2A)P5bPo=t!e7061+$-``bwwYv=V0G`_u*#GB^Zukp$Fzxch(>nc9x>}jS>jy)F%j;p^1rc|>Xk>G8W?clm1!4Z`xi)Y~Fa&pOKT+#SC z;#-YKIK6^ddkFM7;49!)6B4e2y$e`9qbk&9XOjL`4?b?Q zEWY90hFy-z%U$2b~Q%L%vhR~Td;kCd delta 2114 zcmbuAe^3-<7{}jt_q}5e1dbodA(DHXKaMzt!-GU41;ULV;%Vk6PSn|qc~GS2IGIU6 zQpz7r)SEM)HOY{pHa2pz-UOq_IFn;K=|n+g<&4gdc$%>!%^uv|ZqFLl_~V~)XFmIW z_j#W8+2{SS?;hyHpLXH~gjgP@Bd+2hp!=@7F}nG#e#Exno)<51AZ`JmCoP?9AMpkE z~{Jn--y@DoR({Ksf zRTU(m-L#jn5mx$1qeILZqRDGDTEKe2(yY;=Y%y-8qpWrMEX^QTdNxW{W9Ak7`Hw+l zP7~~qXh@|FvXmKD>2~r&%%Ex%oFd+r?$zY|Dm_K=nQoOT#4)Q~;XQV}Kj8&qSMPPH zNt5eTA|QKBztc;cn!HV=OAT{kSm~lxC@=zZn3ei9+GyCEoUaZ9h}l--3*G*M4aLWE z#f;BV%u03|Wwb(lnZ_pOT9|ej*Dxbt8X56&Lo*D1lON47dJKY>XQkRO5ej^aG^Az= zyue5SmG5zQHuXY1C^WoLdK?9ZIX@#^){x!Or$2MOoS&6k!GE94eyG;#ge+%N-pfkm zVPvy;%n+9#VBtWT1r}j-n3OZ#eRL!unZ}qL3(j{l(jnk0;2dziTVFbZ5Lu$hKWlcV zBr!;YA^3q)`V7XoOWCLg4y zO$m5E9W+(q*JxH`JGRnukxQ^jW1}kY4`NkREQ@~=YhyB4JWFhkW3lPgGQ@Q;h#waZ z#_z(|B4#GaIJFt9nE}cDPS@o?OwCky#Ww-cLYy;UiQf_nrIWN>av_R%?Z9O6hJDThAp#mql3uyNfFogZV_(3 z^&PCOE#Ya>ulrH(%K$M91dL#b2a76?Yewj)%D3t2T?~!En;O(6u~*-`aG7w#k6|iO`JnlJz2l_SrzZI`!-5;!X8%S zE$Z*XQ%c!3MSekL+sF|`eo004k$y62#(Ww%jHFW`@|eDxlF7AU)VE5E%Rh^YYnLIe z(TMoYmCW-Wf<6kI0)|Y8AAt4-kl^P_6uB{+cS4b$n&3~Q!c)rx5x5gGKz%SlXDpgg zTCWhHt!EnSmNZq7^C!$Ds{CvIrS51aum0WH8m;Kdlk`CNY=qtW{LI(dzo5w`-4*D4?k`d8pjpgIb1qtIGS zh|2(Og3g7u7VK{TTOr?@fED`HMNUf~^qrG0>TyXN#B1wv)t)b({I@`TRWRylg%@cVSN6!t5OSihFPLb)VLN mC+iQ3(aU2oU!DtpVJAYmc|f0Jxc-@0m{Z!}evY=TF#iP|mXkyP diff --git a/prebuilt-bl/TARGET_NUCLEO_F429ZI/TARGET_BL_INTERNAL_FLASH/mbed_lib.json b/prebuilt-bl/TARGET_NUCLEO_F429ZI/TARGET_BL_INTERNAL_FLASH/mbed_lib.json index bf5a5a8..cec7ef5 100644 --- a/prebuilt-bl/TARGET_NUCLEO_F429ZI/TARGET_BL_INTERNAL_FLASH/mbed_lib.json +++ b/prebuilt-bl/TARGET_NUCLEO_F429ZI/TARGET_BL_INTERNAL_FLASH/mbed_lib.json @@ -12,7 +12,7 @@ "MBED_CLOUD_CLIENT_FOTA_STORAGE_SIZE=(MBED_BOOTLOADER_FLASH_BANK_SIZE - MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_SIZE)" ], - "target.bootloader_img": "mbed-bootloader-6121dde.bin", + "target.bootloader_img": "mbed-bootloader-95fa885.bin", "target.header_offset" : "0x8000", "target.app_offset" : "0x8200", "target.restrict_size" : "0xF7C00", diff --git a/source/platform/mbed-os/mcc_common_setup.cpp b/source/platform/mbed-os/mcc_common_setup.cpp index 066ea5c..fba363d 100644 --- a/source/platform/mbed-os/mcc_common_setup.cpp +++ b/source/platform/mbed-os/mcc_common_setup.cpp @@ -37,9 +37,13 @@ #include #endif + #ifdef MBED_CLOUD_CLIENT_SUPPORT_MULTICAST_UPDATE +#include "MeshInterfaceNanostack.h" #include "multicast.h" -#endif + +static int8_t get_mesh_iface_id(); +#endif // MBED_CLOUD_CLIENT_SUPPORT_MULTICAST_UPDATE #define TRACE_GROUP "plat" @@ -57,13 +61,13 @@ #endif /* local help functions. */ -const char* network_type(NetworkInterface *iface); +const char *network_type(NetworkInterface *iface); //////////////////////////////////////// // PLATFORM SPECIFIC DEFINES & FUNCTIONS //////////////////////////////////////// -static NetworkInterface* network_interface=NULL; +static NetworkInterface *network_interface = NULL; /* * Callback function which informs about status of connected NetworkInterface. @@ -86,9 +90,10 @@ static bool volatile async_connect = false; // SETUP_COMMON.H IMPLEMENTATION //////////////////////////////// -void mcc_platform_interface_init(void) { +void mcc_platform_interface_init(void) +{ network_interface = NetworkInterface::get_default_instance(); - if(network_interface == NULL) { + if (network_interface == NULL) { printf("ERROR: No NetworkInterface found!\n"); return; } @@ -98,19 +103,23 @@ void mcc_platform_interface_init(void) { } } -int mcc_platform_init_connection(void) { +int mcc_platform_init_connection(void) +{ return mcc_platform_interface_connect(); } -void* mcc_platform_get_network_interface(void) { +void *mcc_platform_get_network_interface(void) +{ return mcc_platform_interface_get(); } -int mcc_platform_close_connection(void) { +int mcc_platform_close_connection(void) +{ return mcc_platform_interface_close(); } -int mcc_platform_interface_connect(void) { +int mcc_platform_interface_connect(void) +{ // Perform number of retries if network init fails. #ifndef MCC_PLATFORM_CONNECTION_RETRY_COUNT #define MCC_PLATFORM_CONNECTION_RETRY_COUNT 5 @@ -162,6 +171,13 @@ int mcc_platform_interface_connect(void) { } else { printf("IP: %s\n", (sa.get_ip_address() ? sa.get_ip_address() : "None")); printf("MAC address: %s\n", (network_interface->get_mac_address() ? network_interface->get_mac_address() : "None")); +#ifdef MBED_CLOUD_CLIENT_SUPPORT_MULTICAST_UPDATE + int8_t iface_id = get_mesh_iface_id(); + if (iface_id == -1) { + return -1; + } + arm_uc_multicast_interface_configure(iface_id); +#endif // MBED_CLOUD_CLIENT_SUPPORT_MULTICAST_UPDATE return 0; } } @@ -181,9 +197,12 @@ int mcc_platform_interface_connect(void) { printf("IP: %s\n", (sa.get_ip_address() ? sa.get_ip_address() : "None")); printf("MAC address: %s\n", (network_interface->get_mac_address() ? network_interface->get_mac_address() : "None")); #ifdef MBED_CLOUD_CLIENT_SUPPORT_MULTICAST_UPDATE - // TODO! replace hardcoding when api available in wisun interface. This is only for router node. - arm_uc_multicast_interface_configure(1); -#endif + int8_t iface_id = get_mesh_iface_id(); + if (iface_id == -1) { + return -1; + } + arm_uc_multicast_interface_configure(iface_id); +#endif // MBED_CLOUD_CLIENT_SUPPORT_MULTICAST_UPDATE interface_connected = true; return 0; } @@ -205,9 +224,12 @@ int mcc_platform_interface_connect(void) { printf("IP: %s\n", (sa.get_ip_address() ? sa.get_ip_address() : "None")); printf("MAC address: %s\n", (network_interface->get_mac_address() ? network_interface->get_mac_address() : "None")); #ifdef MBED_CLOUD_CLIENT_SUPPORT_MULTICAST_UPDATE - // TODO! replace hardcoding when api available in wisun interface. This is only for router node. - arm_uc_multicast_interface_configure(1); -#endif + int8_t iface_id = get_mesh_iface_id(); + if (iface_id == -1) { + return -1; + } + arm_uc_multicast_interface_configure(iface_id); +#endif // MBED_CLOUD_CLIENT_SUPPORT_MULTICAST_UPDATE interface_connected = true; return 0; } @@ -222,7 +244,8 @@ int mcc_platform_interface_connect(void) { return -1; } -int mcc_platform_interface_close(void) { +int mcc_platform_interface_close(void) +{ if (network_interface) { nsapi_error_t err = network_interface->disconnect(); @@ -236,7 +259,8 @@ int mcc_platform_interface_close(void) { return -1; } -void* mcc_platform_interface_get(void) { +void *mcc_platform_interface_get(void) +{ if (interface_connected) { return network_interface; } @@ -246,7 +270,7 @@ void* mcc_platform_interface_get(void) { void network_status_callback(nsapi_event_t status, intptr_t param) { if (status == NSAPI_EVENT_CONNECTION_STATUS_CHANGE) { - switch(param) { + switch (param) { case NSAPI_STATUS_GLOBAL_UP: interface_connected = true; #ifdef MCC_USE_MBED_EVENTS @@ -304,7 +328,7 @@ void network_status_callback(nsapi_event_t status, intptr_t param) #define xstr(s) str(s) #define str(s) #s -const char* network_type(NetworkInterface *iface) +const char *network_type(NetworkInterface *iface) { if (iface->ethInterface()) { return "Ethernet"; @@ -371,7 +395,8 @@ int mcc_platform_run_program(main_t mainFunc) return 1; } -void mcc_platform_sw_build_info(void) { +void mcc_platform_sw_build_info(void) +{ printf("Application ready. Build at: " __DATE__ " " __TIME__ "\n"); // The Mbed OS' master branch does not define the version numbers at all, so we need @@ -383,7 +408,8 @@ void mcc_platform_sw_build_info(void) { #endif } -int mcc_platform_storage_init(void) { +int mcc_platform_storage_init(void) +{ // This wait will allow the board more time to initialize mcc_platform_do_wait(MCC_PLATFORM_WAIT_BEFORE_BD_INIT * SECONDS_TO_MS); int status = kv_init_storage_config(); @@ -394,7 +420,27 @@ int mcc_platform_storage_init(void) { return 0; } -void mcc_platform_reboot(void) { +void mcc_platform_reboot(void) +{ NVIC_SystemReset(); } +#ifdef MBED_CLOUD_CLIENT_SUPPORT_MULTICAST_UPDATE +static int8_t get_mesh_iface_id() +{ + NetworkInterface *mesh_interface = MeshInterface::get_default_instance(); + if (mesh_interface == NULL) { + printf("Failed to get default MeshInterface\n"); + return -1; + } + + InterfaceNanostack *nano_mesh_if = reinterpret_cast(mesh_interface); + int8_t mesh_if_id = nano_mesh_if->get_interface_id(); + if (mesh_if_id < 0) { + return -1; + } + + printf("Mesh Interface ID: %d\n", mesh_if_id); + return mesh_if_id; +} +#endif // MBED_CLOUD_CLIENT_SUPPORT_MULTICAST_UPDATE