From 210a55c1f7e633e795d22da4bc2bc4f6fa5b6c65 Mon Sep 17 00:00:00 2001 From: Ching-Hsin Lee Date: Mon, 29 Mar 2021 14:35:09 +0800 Subject: [PATCH 1/3] Update cellular library to MIT license --- LICENSE | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/LICENSE b/LICENSE index 1bb4f21e..9cf10627 100644 --- a/LICENSE +++ b/LICENSE @@ -1,15 +1,19 @@ -Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +MIT License -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 482611528622318202c1b9e48f71a1454200bebe Mon Sep 17 00:00:00 2001 From: Ching-Hsin Lee Date: Fri, 7 Oct 2022 16:16:00 +0800 Subject: [PATCH 2/3] Update README.md --- README.md | 18 ++++++++++++------ docs/plantuml/images/cellular_components.png | Bin 0 -> 32011 bytes 2 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 docs/plantuml/images/cellular_components.png diff --git a/README.md b/README.md index d67a0230..b0675f67 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ At the root of this repository are these folders: * test : unit test and cbmc. * tools : tools for Coverity static analysis and CMock. -## Integrate FreeRTOS Cellular Interface with MCU platforms +## Implement Comm Interface with MCU platforms The FreeRTOS Cellular Interface runs on MCUs. It uses an abstracted interface - the [Comm Interface](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface/tree/main/source/interface/cellular_comm_interface.h), to communicate with cellular modems. A Comm Interface must be implemented as well on the MCU platform. The most common implementations of the Comm Interface are over UART hardware, but it can be implemented over other physical interfaces such as SPI as well. The documentation of the Comm Interface is found within the [Cellular API References](https://www.freertos.org/Documentation/api-ref/cellular/cellular_porting.html#cellular_porting_comm_if). These are example implementations of the Comm Interface: @@ -78,15 +78,21 @@ It is recommended that you start by cloning the implementation of one of the exi * [Sierra Wireless HL7802](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface-Reference-Sierra-Wireless-HL7802) * [U-Blox Sara-R4](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface-Reference-ublox-SARA-R4) -## Integrate FreeRTOS Cellular Interface with Cellular Modules +## Integrate FreeRTOS Cellular Interface with application -FreeRTOS Cellular Interface provides common interface for modems, but it needs cellular modem to be implemented for different modems. You can follow [Adding support for new cellular modems](#adding-support-for-new-cellular-modems) to add a new cellular modem, or take example implementations (BG96 / HL7802 / Sara-R4) as cellular modem into your project. Follow below steps to integrate FreeRTOS Cellular Interface into your project: +Once comm interface and cellular module implementation are ready, we can start to integrate +FreeRTOS Cellular Interface. The following diagram depicts the relationship of these software components: +


+Follow these steps to integrate FreeRTOS Cellular Interface into your project: 1. Clone this repository into your project. -2. Clone modem repository or follow [Adding support for new cellular modems](#adding-support-for-new-cellular-modems) to implement your own cellular modem on your project. -3. Build and execute! +2. Clone one of the refenerce cellular module implementations ( BG96 / HL7802 / SARA-R4 ) +or create your own cellular module implementaion in your project. +3. Implement comm interface. +4. Build these software components with your application and execute. -We also provide [Demos for FreeRTOS-Cellular-Interface on Windows simulator](https://github.com/FreeRTOS/FreeRTOS/tree/main/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator) as references for these three example Implementations. +We also provide [Demos for FreeRTOS-Cellular-Interface on Windows simulator](https://github.com/FreeRTOS/FreeRTOS/tree/main/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator) +as references for these three example Implementations. ## Building Unit Tests diff --git a/docs/plantuml/images/cellular_components.png b/docs/plantuml/images/cellular_components.png new file mode 100644 index 0000000000000000000000000000000000000000..328fdbd4b727192c7375e69eda5c0054ad535d05 GIT binary patch literal 32011 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 Y2}_bwIWzXJBov*5HDGatQ2tEUJ*rKkRJ}uf zCkAWXYgFnNm2bc8qd|yLsm-3j*GkCgXf6ZxmoVXD$J%MPnq#8DyECTVZG*Y$M@lH0 zd{S8gMdDb7T&|MNZFaJHv3veyxgh`eJwiU{CZiT5`xD)l6>UauC)&`L6ru;idcL3X zO-ilEf5}BtJhkz*d2ryAHYFOcexlHxCZCk+jX#OjdEQe+r|#j{H4!HyMTo5`cK`bF{_PwZg12r*_x2brWc_ zIuqSIrSG=NP-_TA0E(jkA^q!lNo$KyrD7>{XP`FwX|W_1e88^uN5?h zEjHeQ8kEdi2V^e>!6h?ov^_6B!_%zsn(s?PWCs-;wP5e3f}+2y=%7#$r{3!drYG&o z&KV$rm_m-Kpm5AyA{rgIQXXxan2GO2oF$sMnR_YOO9S?lQO2c?~ajNJ*H}`6XOXGKEjIxcS);_;t0t~me zsWH9kKIy+0h4jp$Pq;m?Cv|u~i;!1dIa7g-RNVU7D0-wo8@|3x% z(+a_8l|Z@d#(H--RA5ekO~%txG_xL(ot-?of$1XzOV~J!18-Me!)Z==F|scOxk45Y z3aABHx0`8_ps4trPts7wB)xw-bQcfueGb>&u9CE#o@}jodF1SxiAq>HxK8*v;22|^ zB&5~$<5pSCefrA}q*CZUK9deYryvwc7W=vsU@n_$^T&RE-w0v*jlYKU{PAC2KgYK3 zJZNuysZFsThqz9*Dg*Z#4$rRjTO1y4i!~tZ`H?Pr?mFV=)_CewKp6__tViTQ2|2a$ zcNP!J+}Xg^i{-Hmk*f`W>~%|*@?5{(D(fWqfOS8@(Q)b(y!qy5LsLnSaL^6A^-wku zjp~Pw+I!&-(gm0;Yk@8etB(Xk6jBO@BHI0|9Cn|o>mn($Bet`BudP!2al*KY$+*l? zpB!OTn^o=1Rv7t&-iq;_n&YI*jsn0pf?N#9IZ~aJ^!?EjKPwGCxhUPgH<}^mNTve1 zVmZK!#2tK7(MuHPUB+c>9BuG@L==$p{uR$j1ijPgg*y2Ghb9k|@$2)8>+faX4Oy00 zG{ZD%E7DSFyTmA69ibr=vhu$X z)3Eac;TwL^x%_L%+v(qjOm_s@IPVYs+spRe@AJA#%5*|%mYgL69CMrXDt zsfm@9(^2*FE3H*Co$TlD%d=le>C6)5t(j^ndZ@LQxylK$Q^9$%m20Mpq&sU5I&4E* zLD%vfk=tL`cKsgqx84Jp0~1`W(5gUk?aG`*$RWDaCUvIM#W*GE5n;CU56|Mo9S2Y z_3;{O3whcDl-}=2tVO6h1VgU(A~W9qb!lZR82<|*FmFn;=^^6J7}O|j!SICFVN^P< zn{juQInmcYPHMrb?KLcBmpt}x_fiI;U{^mt(vG4r(E<<$8QQGz-f%7K={+qK^V*TH zuP`OOU~ETurk;GYoKqnQgbw@JvE4a#e=UDlen`c82MyaQ0=H+CncQ|;^VXnJZ=A2$ zZ`2LhD_?ux2;bS-T<~iw#%-o4wN*A-NYL=L?raA&KB;bI$eJWFwx0@Ds?eRS9r~@> zaH=w${nWHa8J^B`XDA5UoUr=0ywdbpe*3cZUGWmMf8-a3@s*va62<0A`E4aJuXiY; zKe1I?UqdXU3l1@D!uHmCLgi1Kh_Z|`>YL-yD+YeHw7p(0>}2r*IYl1eRN%$On*F~# zd$N%Dr`6>#*o0Pwj@RRDJYvHBt`L#WFss$GsA#Hh$Od z`+}(?Ur-8Anm3t+j9M+q9f8%2YIdkn8f$bU+VI|CaXfq5MAf5jL|*YVPKxT)(34$m zzRb>Hx;w`vO^5jo<-e8qLfKbqqpJC%3YSvuuqZ65eT7?buR1(zKMvernCH2}cdVZ^ z<*2RS{;`+C5;lwCq!@aaMc{3vinJ()u*gjd&j-d?jq2Hz=de*Wqin~w9kqHXpx!83X~L@-@7;2M$e{YvuSYz|FyuS6 zDz$UdV!YVsPn+#j6$(c;heiC^ruqdA%U%l;>lA-`JQ7MzXt&F9o_CR78Ikdpc9UUH zjhf0I%d?XUFjYMouqST{QdL@1%u^ZVp0)i_?cF{m0Klj!nLjoT3MfC&i~jTu&Vku) z;Edfo)qohyVhK9;n>kGm*kc*yg;Q7!<`h6b9<~KKTe2Q@j4Ln+)tv9|)o|lpRAKvm zwY&i^9<9OMT4f`(b-u9cxUCi(fX7mj^Bo<#wRcA zFdMV5)NJAXr1s;dE#U{>QjSI^1tO7?ib+h+JJFY@-#vc_ojDHQIpO_!oS(&@aNcCd<+#8OIsjlsRlYK^=0p_;bls#h4Slis`#t>^|F;6IT9|69I8Py z=)gSL<#qEYcm&mlaYlttZEs)@e7CGDWA%~xvu2BP%ut+bc;)my@_=~)W5K!!C#zRM zN{BcwOavxLaf<~Z7Pk8H=g4ER-a#pSS2w42Wj!&Sjb^_63p@6)s7V{VHfp)o82F53 z0D``|ZO!G8okcJ`)%||pRCQjiY5dr)>GD635jELL3+<6-^+G^?_7BMoW)la<6^A^4 zNor>uWORnmX2`M3o-y7QF?&Po5sj)6R>Q~3JIL41H)`+O7V|t_pX2x(8Ys&*J z;;@Hl3_uM^&GEnN9(y6d^|@vwvOdQr3Y8zj`=@8ZaFXxE?og0P3@?(q+iL2!V_W@# zq_Y)SFEe#lXR)t?S&|(6AiN0Q#ICJ7FSg%&{WEH;%qIw7c~RC`vfn~X&V7c-h+MnuzoKyqY(0n=oKz4XzjlGMRjlu z(1NWO*7s`{`OyA~r&S!7BaV%g^J%>>bQ@ zRk`8nY?kd1kdT2;A8qwO&@+WA-iJ;p==AY+;O2Z8|5QnhIBCs zuVLJPJMp7S<)>H_P&`}p9aJ;fB3fH<3RQD%M|ViqyQ9xfGNG5G3ltNq(aFjCsvc!y z)RwDIc8&5{Ji{^sZKa(`Cs+_o%#0K&n1iPY;Pizp1DtJzO9$N7(b9t|Qro;e$T1bg zmyv< z6Mja06D?C@f1p6!d@>c<>Ky~8bG2~vPoCvB9UdBcA6{EgP)CkB|BZEeXTkDJKwRjh z)Ff(|X1)UhH&+spbM&z~{Mp+-zV(d4MZML68$yCyb8~fo_kilQi|Ty*riw)60Rq#7 zhJE8PX$(R0Q;DSkc2o^pS;6yM8i5eDcpRZy~2-9#?I;Pbf)f&3#HCcC~jw4@2^rA=-Q& zw3$Jzg#>8vgPxz@==1B^sAol_>K*TbU4&lwKUcdHfq01@?{uur+qhP}6U<-otl9Zi zp40|kI0#gqo!}YVRus3zLP5pqEjlZu_f(k{ zeP8y~tP9XjiO-c{Z85y_>yz3f+Y4C&vw*lau{7-2FmMcvu1}9G`?mje{}-w&PFZzZ^-aW2je0k=VS{oTGWsS+!w98XAjS3}MO@a` zGV{~z#t@j|;Cn?uY z8z*`02wT;e4;&NKXHPPB66}&xmi8aybeeNfU`!eWF?&?fAgZ#P)9AD8%M3m0R^e|v z&YZ~qoY=dR?c5F1#idFcw9glsqY^U=a4zHEH-!4J&VmsmiJfx{&U%h$G?ug;zFK?L zi~+4}QKN#tc)5?mGwX?xGMWO9mn+*6aho&KRLsRNJxAn;1)Yy;H+00duN?_|nELA# zj@p!0MK|c1C5n|vh(Cq?d8GDzYxEc3(xA0>bZ`oGhbQWg>6(zY_56%QG(a}~wD66p zx9qIEPk^drJA&QqaYlQqp%6l<6RH1ucG|(f%O`2`p8f4 z!wr13{4_^wPTLmf)7Sz_J z6j5wwI~t%w6-#wH)U757Bcm&Y%#18Z!D6Dt*UarRzctobg zXH&at3camIuW5qj2`7g)2qw@2gqvUI$@;{K^vQ{mmn3zw+rhqGDOzUjP``I`bm(#> z$^a@a|8ZoXS)ty1trZxwPpA?w_was>d>+v$V6lRHaa9doj-EK46)4FIz}=f;iPNb$ z(Jq*(tYw|TC%#&EJqJv0qt=w>UGRHWy-nXkh^@ZngLE@arTNwo0MyxT@2}wz+^yAb zwKDArM7W-_l*Kn;FmADLXf)ee`p(Kk4Ut_ZFDwoAis1*FZp*%_*Z#z{wvx9JwHP@z z6=JyENZ+e%gbHbX4$a>488*1KE~#_A?LIFg)4|r*yZW5l1s`sWr!DU!=l0?$*EZDH zb8xSf@R@s4iwkLwg3nwd-Njz9q#Q~CY-~Kavo2-P_$2{lS*A$w29mS>coUu#^m3!$I;nd%nk3iFmbgO*^;UG$aL*$$y5(E_P2xqUl_wJeLqMSp5o#sjw(ycn=XaasgFq( zI%@!a#mL$OoZE=Vr3foJEBdUZM$Hr9sl7FPd)~gq`rO!>bbM8%NB)TeVTiHOCx2@s z*qO4K{wM!!k%sv}y>Jg2&n-gDuli*%Mjno~1en*i6M`uY@*I~y)jzeyraxEZtOZEx za@K-FEE>iIES%bde-gi(b2H?cIpkj=Q`zrnc`rg4cWIK*EpWF$0WkjHD4CfyNz!`s zp+Gcjb=G-U@q0?K;gaX&{#7HkD32n(f+NYiTI%~bB( zut!nR!Cv$AdcW8J`CoM@i-P|W`T!V&^~lRCs~^n_mY@BseDotkHQzD~+mav{}=@A;N&za2=x&l)aq|y1^*_1~}WRzW@QM!WZShZTZeib1P{7}V1qZDnR>I*KvW***5mS}*SYJ0si zUSHV6J(uMamkPjP6xE~!mlwD?cD3A??w-H@J zXV{^T+=!3F?@)R*~lfUWK`71vL z2frr0B*w(w6}*~Ev>eF>lrMEnA)lN&v{8`j-CL6=gQrb|5)40}<4ZljXXHT7tAw>) z(eX^bY7?F*PAa*XvRBI5da7Nvpvzg`*Q05j2inE1yRmto4P~5(-?JhiB7@dz;in~g z{Xj-$LpBk#-fU+~ZjTbOYu5nexR%tTkFIl{02JyxQ%W#aD^QJFvq4&&1D#u@ogK5%|~itO{-D zP94c3kd7M}SLy$8TDhI{zs%D9Yrg(J<%<8SlzuGP|GShvF;`6SU%rLq${F_LQk5#M zYaT(&fSMA&(U>Dxtj%|4tN7 zzEwKG09=L18r_~;s`_i8z_b3*OiBk^>>(w5*`w;U$eep6Zbe+WDX6u)n77YwKX@?w zaIy4+ZSK59V$>~YZ~9s{+9$ec6n_|<%Qf*>far{Kg~C1I1BfR>Y}*Z7h34jh>7Xz- z6uYd;`r2rFivp)8n+-rHgQJ}KkIoj7QK|cqgPqRB=Qu2?6u!!Dz6A#Q0Yn=8lbEx3 zRxMVx@L1{gRrZX)2;8qRS3+MzFt)w*VFfos)#&T*iK&ae8^c@kKJ9ofR0Hy9<{J2@ z^KJY_ZW0mkyy>ZDH9_5m8Nn#QIhNau#&~?BnUzEKPC=Q|4k2O{`@3Mlr#^~&2@l~^ z&lc&Ym3C0I)|QlOy-xqc^<#hMUX|%RTduSMzhS)B%!&aY4nB|A_}sOKb6puoAIEqe zDT+LO=c)X8`sHi|wryd)0W~ULS$ws;W~bsxY;VGT6+d z!nkC(6wYO1fMwz2ShK%8aWtpp4g63*$gcj;=f&d@*uA;)R)uf)ofE=NkR`K`*|8{Z z`BfrV2f77aNr?dt_Rd2k73NvZO+jZhYiCll zJd0H>izEImvJ9+_5V{9tv^g3lJO_WyTRlP1)#HWxUl|5Lcy8ss(hLQbHEb!))P><< z`=YhKlu&V$n>BcNwlKXTY5~RO3Fwj14AyiGe9ZC-2f5(ExyVwjITE%SSnwd5+uDxv zCeaFRq8)*#ScUg!I;q>RcMIp$NM%Gtnx4$M^HldvN*As=8!<(PkR-Nx$n|6yR}LXcs2Xo3vVU&HsMMZI&x8%+`B7*Mbiit}-zvqYKdnYt}$ z{&c0+))7^*k|k}PHDFc4kunG7ygTIW9-9v>2*?Y1TrwWDYNwhyZPvO z>-2PU=pC7psJ;}7;-GeP!CK9CPd-DK9n(pCCKzzynh?2U5^}UE(J;18+>qn)CMLux(>Td3?SLx&pUAiWN zKD0@-*tN0qy~$Y?^G3+S$Y5r%K`)d6C*f>CYiqRcQizqyxGtrfh&P|PPFS-{(zIN zQqfy#{2POz@QuS*h8}O0hn8O-W6o{t$%8I+BAF_kh3m$Y=)EQOHrCt$<1l^M`;;E0 zhxXD;Sq7y6#X|+&d4s9e9lPle%!^nLpG!kwXPgM_gLSSfbrD#UJt$6` z6+pa}@%0kwK;~)gfQii;4}iGVNR?qj&>Ulq;sx!m(*Tcrw~V$DTlHpx=$OVenXtub zXyis#ii^c7Wu31jp!#&wjXvLEU$f75ysQ?y9|yd?v=HL_Z>3(vrkaMt zdF-Vbfh5#1-jP_huoD!a5=m4H_4&;7H%;~KGg)mR{@-!hl>-$}WHdzI^?JC*)~h>S zuA2h}N$+W9AfI>AnT3vVxn$z~a;diS+`50Y|@2zt+Pr-gyp?y(>~#M+L!OV264pLms{_eL<{S)qxQ(fX6R*e%yXgBp>l z`S+Vf^HJ!PPXf@-*L2l+<}p3#p>)2F#rni`Cw75ia}mmJG+9)7n(hLfF+g<{=M+3_ zlkLhY^3QnMe~bA%4!K@EuQdn8B9L`D2JNCe=Xft%d)?|db;RwB%2hGm-GgCC#mqug zQ@~**KF|MMrLv{*My9wU-@XH%9=hc(4Tf@a`IKBL=C%NA^AGLizUY328Sy<_ojfpb zjhms$rz0BT^xA1!~H2+sRb*Ld21LwyJ2oLDPpp zN;X(;yym*5#bAI_!l;~Z6zRg_u9zn0?0%u*Q%80cXJ6pWBhSQ-zPsdJ!(qUw)Nk*%=mZEuxnNaBImE#r`hZ;|T^o4G0%QcPyD`HXOvp^kJ` z;d|vI^k`lk$PL`8I=Ar)_>mWMIO!zediZ?JjD(ma8S@I(apLtr+Gcp)^|``I@V`V&V0J zb8gN{JvDLX6GpkvWIWZ&`h*__Z-XCLL97ydkmE+f8cLO?OlhUC`I@y-=OiqCyw}t5 zQ9Tfx{8r*bHO0qACnvE7(#k<=Zy$+NrARmS5v!O}58I}`h1;G_xSOw^=I5d|(eza^ zBtDwIG1OY?G7K7$hmI*@*ZZ266!1&*{gwqp{UXfqEHcr2)Nee(~10pv;NR zGl;PuCzX`ZuwLnGb?>;O{9bjhl_%{Ojm9h{VAn>uY#rzd@rj#>*+rLc*gPs!3<f8m~5=op#lJRs(#IrJSFg$o7cv3L=X#)RYvu;?(L9o@iwK*QYF(J z2Kz;(&8rO!Sb=y`rPnq&t!BrqSRU1W3x4k^wMdjVNkPDZ*kD@QR$^h8LUJbmV}d|i z-80n#({ok4#S%lb-QZt_oLL`sbEgwp7`%LOlym7lo_r(9SU8b# z5CV_9*WNqG27c9U^kee(?_+1yqH2JO_cZ2e?{q@p&533CU*~4p zluIR_YQVe30^W=bqnbo{W}9EdSR|*pQooht=N;*EG|PPJNX=6mTZ;3O;I`Mtb%Y%l zKZDuhrye@GMhz1lQR~Y7BUGUxSLDPhp4px48H$C^X)84O9`DR1R0*dKk)AZ;*g~iL zROKG7MCah%3g{3moQ%E68qb)1guVKWQFr=H6swFeFK2KWl!p3=y@77_+=cliDwf1| zl@+Hl5OqQ3b#6zVjou<_0iMl~m=I(4^5Et|Z&cBeg00K3pc?@{-JsL*r3r6Djwp5V zj-(y$2Ir8cHaFgm`z!B$TimYJFCwUvI;yO!4>`4^5EH%2@uk1Zh+r9Y@+$q!2oO8o z0;aL|g5^`}-v9?Gh2`sBySWk&VedUPiX%T7ZJgtYwe1v^hkPjVHQ{M-Zs{LLrew&> z-xe?^)Vi&Sw_7*wOFt+Klz&~*X`G>VMk|g9h>98%7T%n!i?uxvQ*?uqJp-OmTIU&i ziBxk$arryIRVIu_&OVyd`*pd@b5%PLMWKS{)sN^KnV}!`kNO{_eQy`44>gRa>@fHL z6%Dn?#gK@bL#Oc$_V(hb>76GC$?+F`5~_?rI{p0S#L(DqQ$*QZNZtBfi?@hp+RBl7?}J&LX8#m#+do(_7B z{aVpef0TA2Y526fQs&hrgSZvvi&q>e;z7s1G*Ghhuv>z_NCcH=+RBIdr}YxQ%e-@?g-@i(Z-nq4KjlP=6y`!E78 zYm>?3+Hzu#BEZWLo7H7F^myM9n-K)&_@hvrQKhUqMwMSl@LPw$rPT*JZad8n2#cin z7Pc7Al-xy9Mo926MDEa@<9kf`yhPDO?A&T+66aGs}7 z5myjL1VX{e_3-sNUP$+Jv#E~e+{e*Clhn<|I331nwSIi%-S_UuSyE*d?z*E9G#7=Kiv1SY?(az z@x$n=>bP9Fs#EV2{TGyS;Y7L&>NA^d*;s%Lb_tqEE${IuObQ3yUn(BedzRFR6bwC? zT+!ZJ>zg|xBUO@XINpWW>k3&4vAm|!M%ei?{w$y_Kfn}4h1$+ut`iAvbT|f>NEWwm zOp01q6oN;!{qRap5>k6_ts#lDt?RrA=D_RmPB8U)0%Wr0v;BApbCd$enEQwzp~B>n zpQKXgl7_-3tKNK*^>j)s;+xu_Gh{tzC5bm|?#r&{%E7P*6U3?axKLUD8y)_b0&s}E zBl(P`ILQnGTD#ERT7)|%k)_Pm3#N7@Kx!&ZHYE4GsL@WK%RT*e)uE7WABoJM){mxm zUSZ-m&c^mo`LO8b*jg;+$_q^#T-(gBtS&uRnRGlUt+cLnhFcMYHEd`E2e^P_! zH|TggTLt&m1aFw8MBFMhD3z+V%-zFkxym%H=a#+Yp^nM(y78`40K@j*$Qi+-W$bS$KJ=lv@}3>g;+5v~h^ZFQXuO6a#tB1Mx(oHPjvw+? zcBR&hj6ZrRU~0wlt#btymm zpMba@?%Xw07I+deGNYvd7e6y*pD6LPl03fxOfYvcURHZ9p|#82`}CwjOV*bLpBJvb za-gx3SmH5C#$oof2M(;^Bl%N7G$wm_5_P zobs}4!-Dr{qzo{2^P68mCRG}c99ZA`;qU>IJ#e**QYnnfo%`tFvC%ex&IfBLqLfh5Kl_!T(-W6V+3S|Vj~l9Hb#jN7=V-gDtO@o~ z^BJSX5!cbof=UZd=ShLs`M!IlNjA{^6Sb(ii!Ldpa>|4n(n#s6d2}m#>3asV!q#!< zR8nKVgT7Bq)%Ea6a=%KyoqSSv5@5D3bX;}0)}t$UgW9GlNeuLO^kxHay@pS%G4U!s zB|G=&j@OlJS0o0V8?AEjf%en#N#}{a8#e|+*n}sP&4zs)8*PqBTQVlZ`tBtk#IfQ5 z$s?LYP-@aWNkReLwXLM5){Gz*woBo zg*Yjsz#+8jl5zpxgDRQ zd#PrON)TVRNY5Sg=I}I}`|NEKzPNTPgAN2b?ZSi7{#kg@XuiLzgR8%__EJlKZ}ict zg=)+b12`*GBFtt^{ev4f$Z8Y=0#&);_NY*%pzti^# zdttDbTyyt&W%~E1YY%hMo&i>~90)GWZ?`!E+Y;nPSo#qdUCkCvL zWaGC$*yPh58-+6`{FQ-hfoeY-f>mCPd|?WFSwiH5+=S4s+0kD*u8G~Y68q`yvxhzN>$=*jL%oy-qKX5XSIx`F=4Ft#x+lwU zBW2Rrm?3A{RYJl{=ZSM6W&6k<^(M01{LRFLIwW$Rr;U#agAi-pFuOSG`St0as}q2{ z2=Ax)vtehI4i1)y)HjO@@&pR-6jQ7YNr($`H<-BmzGrV*DJSqhL8&NcE1jkM%trymuQul{d~v4E zLp-t{VUVktS<|aPh~Y}u3!@WJzs2U{0ZFY#KaW;3nuVX{5@z)1?ivH<0C^3k-f?{? z?r4|yvoo8twfkQx>x##L(MASydXr%Tqqhh#Plra*XCN3Lht;pCB6ZdhkZAi^Mf&aw z3@8a%M=EdRn)#rGfdLKXb4l*0aFLGF4iT83*-;y>@=9}04T zqUh}ZW{oj=kL`IeE&4{`ky9%m-t|ye^M-L zBD9-pP|ge!rSxo2lj{xS8Js>O04NXWAcOLXggE37E+4-CuQ>4k*b^W$bCfou%3RP; z6F{Zn@HGdHUWShc2S)MdhW|w|Mb1g<{&y)i{-5bg-dM?@@+*ymK};Z`pYgZLY%cE6 zyxn;)SDHh+N!k_zx$tbxE|Of;_}h2?nlbU};}WSF{-eS*5awKofFqz8a`+)fAuSPD z^Of~fJ7{K|JfUF*vRnX*0b~kb@1Xp);)#6Y_<^jy6OQ4iVOkk+UR%4B>Y;4^YI~tw zx6lc-53D1$d})bB(OFKXH@5#P$6C;#c8gU_oGsql zM;<8Nirp`sx(>@U3?-u zoJ;&r09NDs zcZugR?>^>Wqp(gm40=f^>^edvVC`AT{uM5+UpTJ`cH*+OXpE=c{A~lK z(Jkpeu7dN3JhU0nz6r0VN%)Ow>@B1d+bINFy(EG~R)nFf28_b1R;9yi@9JIXbff@` z7A+O0;;)OP@4!$NGGN$E2HszxPg)K@Q2?$2mL?vVApxUz1TdSabz&(E)Gn_pfA+*t z3!WHo_S_a_ds1sm?e0^VgreZIBeFLM0@>`^?5gRK_&JA|Gs<(5B>mYJXU2N%J8&EBLS}Iy^%wvU+)J?)O|{NL4U|0&IF7C7k5GsMGmNAhlhD*Oc=a*b&u*x z89oq;X&hFI7!NeP`;M82ZnJdRc>X0gO%=@ONg&K=U2}8}Ivo?ZSm9Y`&6j&OCI!kq^j`gi-<CZfxNh$GLRaWqs8AWR{3;h(P>yuUQOhNMzi zw^^Fs10%scYL7C4#V7!2C0!ufVv^=_{AtD2H- zsrD=XW&_nr)}tK>`y9e%hw5I&vo}*VL=V3S054M_8{W=&2*djPzTw0Kk9F=IJndITHRXm7T#4g5=btXrlU$CTmZrV*IDi$*kvw+YjincoTK^ zy`<1XB-NVVBPVV{Svh-TNU!zQle5uBc%2JXjR*3oU&1WWw=!8gTT{(M{n>*U$e=$e ziL4{2D4zR~LoWfTZhe#gv5$EW5GxlG6-$kijoI%Hn$H*t^605(iMXss_sKOqehYx9 z)bF?|tvpjV^ZJ`XO8d~=OlEInz%qxi5}wqPBs;^>@OpV_POrf(AZ~nW3;o_lB*TiLSF*QqT{uz+vBov4GxH(8EzPy!H%;i zAlGs-RU$^!5a31}GF(lJKF1wnaA-ld&$5;(5augfBv&kuSu?qE>ukh=J=qB#Pe-bR zHBP_QTZLy!a_7kw-VCPiN?vA#jZB?II}y6~MiXUag$9&(p{6)yQT9RZmMJQvD|Ms^wBM2DND!)_omv10nxO<^VwaDEI-j zy7>u!jr}UaFZc==0&8alQX0>Ne!UwpM7oYg+;cIW%@BZ!W@u@S zqwIi4wa1q1W!h~^hT5Y65j6F-iP2VKn?azQ)16nKpdWpn^@l&EGXhIYk6SX*E@OFm z9OhfcX&($<`;@f~w@YiWtzD9tunF2OcC}^AXkW_HWc2dmilNlVX z6|Vb3g24F6nShV(=fUxc9I!fGoG>7}uA#{NNmVo`x3|p2C0v$6#n}+rVNsZOV@KFQ zy)bdTjy)y3F91wH4K~CO4f^bhk57pDp)iog)*RPEztH4QelN(IJS4)+;C+~8>ftEe zh$_18XjB{Re7D_1Dj}TjwP`NoBIVCi>D8p1v#k{pV~OBgged#}8<1j!dH16knkrxPnSwV4*sdF=l5_e)k;F)6+z0jH5L zDaFjA1U}2`&FT*TKdeVWEUm03*(a4gGSyW$R5d%dI|VhO;w$0grj@jNpSAhhD+D)Ncz_p$mb0S zWq7L|5(sZ%cKhI)lV~8bBSHP;Ta}@&*eJ^*Q$MisSNqCO#ouXIRdY3Wm#=KRfnE(h z&l+qsI+IZ=rpjLtzj7 z%WW*b=gTDVe1G|eG%(g_jfPdO4am#h$a5w-*8S}r0m#N}0MK-tz4amh_ro&o-zB|T z3oQ(QeeQDJw7)g_yYd6ZK@qXkOaLcRQui8v4egREAf^^nnk~&uc-yl~OWcY3W_@2` zrjKMWDi;$NB&?>`NG6HAh&he$w_P+m&AWL$g|L^TtEeg;i)1CyV*l>O*eQBl0xve- zNCeT#P=a@l8!RSgS4<0W07M=gYUg71Cs#phHsT~<$;k4lo3I8CX&uwsN1UsdGmX51 z`ndzHxLZwz!~%a*GXmGAd0;j3Hu`bD^{2v(ZrPIgt(@+2`9i;6T~5( zEw`k$0F}@9{JcJxCD>i-_IabJm-1f+H}?uQOm+L=o2eOhU)1Xd8hATf5Si zgOheHeg{QS1{Cq!QhQjCbA%++$}tY~2cY-p(I4-`nE_9}`k0!$Y(bv=oPX~8#dcq; zW>WOj4(mljCEiUXkX(| zud1Y{Xioz6I%V}(u5gbGL3d%AZ*1git-QYlb2k@b=b!K5N+xaH)4F%P7H}9^Vd-yR z3i2Pz+0uJN3=_&X0Z^aBBm8_<>uQ@p=q^uXTG)4`o>s>I>cEy)V^RV(S-Y%J(AmRF zxICRN2cs5KP+{w$MAguxPPKtrZ_a!GHCpS@vo>4UP00!DJJ`(Jo&zbY6jZ!LxEj3reaF{Wl;ON>5bMuN=D4IU z57Z-hxx#O)3AtR@u_9;vJF`J|t|>WyB!6+!q1muQC>vaptvj(nx&hE=>Nf{uf`nu? z;+Kl#^!}?^{gGH$OPS##YZOCCg}WnGHT^O*bG5G>&1QoHWb4iizm8Jd3u~FEd5A^ zXcy(@-yiS<<>Pk}<}9Ehnem!Yciw)oc~rFWm>UkDff}`~el5FiZS=86h&v0QGtDMh zQsV_{m1V&zb7`Q@Wjp(q62_IYg!1v=I?{EppZhPV__e*=g#~%vnoKY--tL^!vW-^a2Le zQjNFW9CQ->`}((EeBOoJ=q!?V(dyPrZWyaEeq5lE3X&@GcT0G^i}|DAz4?_U+AQ}Zr)W^FImGO$)_+g7;taHlDE z39odUQbb1*l4=Q7J#M)10No5ft9A(iNCdLdF3+WbIe4Hz_gj;52fq5Cmml(+m%o2~ zOi213ri71l)n0YC0d-Oy9An)N!oqW_$B5oi)Q4-aH3 zU@j!(^T*4qJiaI9lMzizYh%cv^k^NeZ_ON|?>;Fc57X0H>+>z&_H^$`%D6NkNEp@|N7URoaX!guDO`Z-yD(j$L){q z0Rm`$z-~C9$o(9pVosPhRe}?f1A=qEo~!%q|K^QC+Vrg*TK9joCKP>823{zanaSnz J@N+k#{|8Lz`u+d_ literal 0 HcmV?d00001 From c5f70ca53b773c20de279de6734e4bf5d0d95d3e Mon Sep 17 00:00:00 2001 From: chinglee-iot <61685396+chinglee-iot@users.noreply.github.com> Date: Fri, 7 Oct 2022 16:22:58 +0800 Subject: [PATCH 3/3] Update README.md Fix typo --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b0675f67..f40b3158 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ It is recommended that you start by cloning the implementation of one of the exi Once comm interface and cellular module implementation are ready, we can start to integrate FreeRTOS Cellular Interface. The following diagram depicts the relationship of these software components: -


+


Follow these steps to integrate FreeRTOS Cellular Interface into your project: 1. Clone this repository into your project. @@ -92,7 +92,7 @@ or create your own cellular module implementaion in your project. 4. Build these software components with your application and execute. We also provide [Demos for FreeRTOS-Cellular-Interface on Windows simulator](https://github.com/FreeRTOS/FreeRTOS/tree/main/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator) -as references for these three example Implementations. +as references for these three cellular modems example implementations. ## Building Unit Tests