From b725c385a3655c2e32c5bf452272bd2c1b41b38d Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Tue, 27 May 2025 19:42:54 +0800 Subject: [PATCH] wip...good start --- LoRaWAN/App/lora_app.c | 10 +- STM32CubeIDE/Release/WLE5CC_NODE_STS.bin | Bin 190124 -> 190592 bytes STM32CubeIDE/Release/WLE5CC_NODE_STS.elf | Bin 275652 -> 275836 bytes STS/Core/Src/yunhorn_sts_process.c | 22 +++- STS/TOF/App/app_tof.c | 133 ++++++++++++++++------- STS/TOF/App/app_tof.h | 1 + 6 files changed, 120 insertions(+), 46 deletions(-) diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index 75d22eb..83f4844 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -664,7 +664,8 @@ void STS_Sensor_Init(void) /* VVVVVV migrated to yunhorn_sts_process.c */ APP_LOG(TS_OFF, VLEVEL_M, "\r\n ------- L8 Init\r\n"); - STS_TOF_L8_Init(); + MX_TOF_Init(); + //STS_TOF_L8_Init(); } void STS_Sensor_Prepare(void) @@ -677,15 +678,17 @@ void STS_Sensor_Prepare(void) void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { + static uint8_t prev_sts_hall1_read=0; switch (GPIO_Pin) { case BUT1_Pin: /* Note: when "EventType == TX_ON_TIMER" this GPIO is not initialized */ HAL_Delay(100); - __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); + //__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); //__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); sts_hall1_read = HALL1_STATE; + APP_LOG(TS_OFF, VLEVEL_M,"\r\n EXIT_CALLBACK, Door state =%d \r\n", sts_hall1_read); if (sts_hall1_read == STS_Status_Door_Close) { sts_lamp_bar_color = STS_OCCUPY_COLOR; @@ -699,6 +702,9 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) // APP_LOG(TS_OFF, VLEVEL_M,"\r\n EXTI_CALLBACK, Door Open: sts status color =%d, lampbar_color=%d \r\n", sts_status_color, sts_lamp_bar_color); } + if (sts_hall1_read == prev_sts_hall1_read) return; + prev_sts_hall1_read = sts_hall1_read; + //if (last_sts_hall1_read != sts_hall1_read) // to eliminate power drop issue of PCB with long REEDSWITCH CABLES { // 1) record event start/stop time diff --git a/STM32CubeIDE/Release/WLE5CC_NODE_STS.bin b/STM32CubeIDE/Release/WLE5CC_NODE_STS.bin index 13559701363b8dd49156b401c57fb7e43d67808d..6697eeb7f425d03bb2bdd253ce69c9388506591c 100644 GIT binary patch delta 16337 zcmb7r30PHC_xIW74jcyIGKfs-9RRO@h(L(*74e8%1*aTQQPHqWuVzMNfwN7PZeOpd zl|z}@gdpLBlvZ!`W=W+vr8tt=a8&Z1JAc1@FO={9`G3#zefX@q*Is+Awb$Nz?X`!q zeg9-|Ra3B<UR0Ii+(e@QFxTS*2WYGk_V=K|;SZEQNdLd#nmW}8Lj@g3;`mQ2 zbh0n0T|(jrxn8@Te@e{{an=R}{zmu_j#@cL$@8Bqrk;>8KH5&pI(#4czRc;B8%#RY zo@i;eO!Gre@n0^c(P49x(USTgtqQvsVfE_EBg^}UVa<7BuGmp})l27Va`{Ex+C7>v zgnUh%;SWJ;ZDz!X5ORQ4c3B{5+`@iN8tx1)P;4Z7Pu?Qq)Y2&jqYZL~6sV;X7sLBF zizRO_0r@hA8oxieRQNsUP>Kqq&$wuISC1*g9jsML{oI^BT+{$lx;0uw^;B7TTP{fmgGCfu!Vw2DN$1+&syYw`InNyN=Ab8EWYXFI}Y7^Tl4eNm~$c)T`ak8>1Q* zNJL2z)l#;XN?HrKMQ7+{pdBZ4PsQx9UzXRt#=U+{<}&_sFNllD-&YeQyp#cSHGCtq>mW7#$NOqMWWZ}V7`~=i(9K^6ics}&|LbKq4T({p5oU0PGm2m zp&QmHHmRlcpqa*!y+#p~oRha$W7mMj4ZH|Qcrgb zFdkTnJ3ulz>GedBU+SW1NpX>aSJ=PkV^2#w8#|{^r;`4nladCJll1i@L+BHBVZYaQ z)f-YENUuBS*GXD(l-^D<@EcrIlN>{i(C*2-DrGwl)4Dl0eTp_*R7;XQ1^KQHO|_UtN;A=(kk@j|`T*(O!zfpB6IIdz_>4-L=l0qrcsOal?6tk?^0#pM zF;+6s&2mJ?X#=GGhb_Y_!#pi*|LD2ousJ=UX(Rf9pysS&%$|&6jEi6t_o7cKLOE@F zeh2btVg9@cobksn$|kkc=@4t8`penCvzY1f}+fG00W(*0COtPQQ*-qtdxm`|sdWkAgD+WkzSvBPMnh)Z8 zAs5p~k^-bSJ1sJ1C;up`M9%nEQ?{Onff%q+n2Xi-ohO6^j~$S^cdQ%B1Ut=te=8YvC(YRn`t!NN)J%aPJLXNQ7F=^bYWGn-Ly zGk9&J^tRJ$`^L^myggFd?9!nxBBcYqwBZ+x3ACe&VejBnPT)-3#7ODrQK8OjJ7PE8 zKbW;SFXU|XUso0c|KKrfr?*oFclgMm5>*IOs(h975$%&UBc%c%OC>$)$Tz8^=kc3X zn#=sr;_XUwtp0?fm=#E4j?&N4a)Ks1R8lEmj)N+Dh+TiQEB0zdHrv0mr-*%E9X#8S zBC;`4OSkFV9$QHrRi$@RMoG(MnvtHHJJhcByL=ikY3elkZPi>Nr|WQ==c1$ua)Mqb z3VRS-@)aASq+&T6`7n%ep-i`@$MkMOAokkIoQPFp4FyW7+$%^ooQyWv*%jV*$5%ei z$t5PVhwpqrIz#_V@5&E!Qcceca*ht}xtHvrw|jOrR->tGLhvHdvB0pWEw8D2xjGHu zKq-Tw=}%WC zn$M$PkemLNVd}E5f#WoF>Jhw-`E?gJuggo&ifsG>BuxV??3I@CA73L>j^F}L7bxXn z4f5JN_5fdQiZ5rgD>3aly6N^_dfh=!t}kvyO0}NM@^0oWd4)~9ZvrHlgW&#`=(S!W z`_J%33{RRFW%%qC7pcK7|BzO!LaKb|vs>ziRnn_i%DlGC_9SiVBb=Vs?VhQU?m3gR zDoO96^D?s&PkWmesH7heWHcs5?r;>rDxWh6bwMH#d35;OF8W!fwp+BzP=0=Hlfw1m z`MG0w*Xb?gLP1_@6~Co4P%3h%hbs$+K2SPJgR`a@_B+F&>O&`|6&hFs5$Xcauz&kT zj@VTND(NnLDQgN}bcFtrmDnNh5CV>w=;JJwVJS2=yGQIcuWzUy)1|-kz>(IB@Jjqpo2U@Z~@=OodsHZp2?)P<)5fi(tFvFan~^g5)1tD(cToX zyQnks+6XDbOSKP0RVH}{-zAF9!^_K4s{-_ql0jA*5ViG2@iEICOCUBA+#$)b(XPrM zbfaCF!BI{hVGb7+P!Zq_N0S^5O#xrs@QcM1DYYKv^r0wa708}zEr{D1PHSv4IT&4( z09=c70ATWyq*8bW$d~AkYQPNO7|r1xTh%d6QV5p1E*LD;!$*djF{^w=edr;{VdiuTTcw$iWxG8g z7;(4TSkX%iltw!h5ZT~phUKhN*+A`rQRPTk$A1d^G=Q}z11q-IR_$P`wi1CNQkv`v z#FmUL2+ub0d%U*APGJwv_D-8}_Em=2g+s((uq2I`^~|jOfzn4#VicNK2t91q{XN3J zxx1R<3eHtWqdk z!|@h%uV0%2rDvQ#Jv;;B?irv3Ia|-hCboTZ|!L!%!8;X;Xl+A!3bXjcP^X zSfiPjDwYs|NG~3<)M-X)3eqalD-r`ErBXZ9&Asxqy94kFi+d_>e~4tY{k{vEeJwF8~7S!dMIBP;*?lG9~J4Tsg^% zD~&H_t`;r^`MkBKn}z-eX^2Nz;9uV&rT9bsx#zPtg46yP4`rIVfDyWi;fK`b_;OXM zstM8A5+NBqw6sr@aM4|LC{WtspiBD{WpU)Pu-q&-JjrI;L-W3h`*} z2w?$DYBQ&2qWMVoufnh=_*591Iz;pxQ%+TxYe;RLMrn1 zGxvWWFM9i!`y!vxRzA?%+noDAd5-rXbB?ck@ZGh&BBXS$R`l53MQHTcuDUYJ+(s6a z95Z?rL`Yh1dLfH@5z;&E9>8F9rL^6h3RDT=R(A?80oW!CBhdy*E@!gYx6^PY4Nu1W zGrE%S+rb$PWxKrwGpCEG2$ZJE`r&ARIj~%h2@)aw?!ns!F);}%0&nZrLJckpW>&ppE4{<^Y-O;~iWp8Ju)@$Qr7EiR;aP&mp zW0Sos`m%gCUtU7qU*6T1{{_bqe|ab8Ch#{S?=KJY<lav6gVl0&_}5Y{mM#pH8Jz#925!;|>?+_;{B%h?L$I z6xKRZD`pp7sEM>3Z;7%bSg!gi3-``2>%@zt#lHG-9n(hOjEZx~NJGWeL*ok#hDgi! z!br=c)_{<565;{})wxa--$LC{BAF1N=D#lOW{* z-4VU^fsP&f#B0bOOQ0#HF44b&r57Tq5ugF20bCVynkgY72McZaAp(!{FH7_6^kq{Q zRf%0d6#B>%YaD66+`?9u_SGceX(F(d#8Rgc*H(v!gKM+lrWtN3nF{$RJMBL>CX9Ny zqz-qwa<9l;M+wsRbk^X0IkNOSFfR*WEn~W!M5Hd_+opw z80hmWD*G3jckO?+yaMG*u}HG*$u2bMZRGa?Ld}tN9PU4qVuBa~9XgzWf{?!BVj9b_ zey~M1Ts+{s*UD>En6DAiBPN;moi(iTVxI?CinmBBT^g zz@7-H!4a@6qCboA5z;++IE)$e%{Oq|fFjg;sj=L?sSe%z0+2r!G78cO|Si=f|P8KpaKiPFa{oV0Mu z!dU(Jg_dDA=?la9=x(}G%UQUcIK*q4=H4i$WsE(vQ67}h?@-=djRhM(dTrRy zVqS*HYunN|^XY<=pvL0X88c@-J$A?kEzEUTWL@|SEhjx_w`n*{Zwxm)yak=dOt{F>J!$&AYaXnNOWLU;3U!=;WY!z;3oVY(X-`GFji;jx{dQww#G!_BYAp{827Sxe=s z8L!BijG=UWVK35`o+#|z4_kyyOwULczps}ViFx;hgHOwE;tr*?#r^JWcJ_BgR9hMp zX~Z(|GqW4KiBRBCTyfBO?cL(WnnFrywux_l|k98u0Manfxg zW+tt5>EV!^E?g>hbr*3VpbwW!uFi!5LJ$ki7F1A84I?K^8FOqWhUX(_xQUbv)qQ9@ zn!ss$+_DWxD84K&e$9$SKxOC$e_QY15~n-X%1I)T?qTz)#x{{NncG~X*%7^;WM8j& zC_hN+wymP4M|K_gl|v0lB855DKnwFz3BJ7HFk1x9qSoz5Tajke?efhqHsmkJWB+T& z334GBZre#ZxG0H#%|XkH5<0HOWhcMaP!KLHcj^jtB8#nm(btRO`MD1IanZE?U7jNX zYYVF(8#o&xOWnb0l^7zjzKKCiL}u83pv2`>N|k(fF$NP=@1&!Ojg!1%IALlrC)Bp3 zSK3lWYlro1w0HhT*;ix#;n^|zADqdZq)o+-A^0tA%+$ABG-Ct^D)z#J*&;}Ys>Uo>8w$m zd#$j0ZJ#?HZ{ZS!J+H`GlOTl~?7m8Afc#>c@0Z*4V$9yv7~M(sRdA8GmN(>?8GTac zovp%oUZYb=-Q?%7xo4POrpmD;m@pA?S(|ug`^*A8t}Mc(Q2TVBhk0zv=(4e95=l>v zE$;ZaoP+Y1z2VZwa#mY;ciL;*Tr!Pr9oHjzmmJ)t=}|daAG0?AhD?#^rE$sp-RG$K zVIw(Cdp_KoNc541Z-qST8C{TxJ%U17;-Mwu??xqfQY+BK*ifn1tSQ#uc7@KIkgj5J z=O+Evgdw>no+mRiwrH(%fbC)Y;o+C(Ma|oTGYC zgPl2#Ub^ZE#XfTKA|>K~Joc{+tYqwz&B}hHmnU^hP*xIwY1biTH4Q=Pw{VP?Y9>dM zYT9jb&z#LJm3iA7e5f!f%~PMeh3LEo&N;PBm(Z@s%9oedFjiObNLxA z`UR4F*M=$DO2+wao78!v0d;O$xRd!OE^#HLi$_#FiIby77lXVD3x?bFIifJOM!pYL z3hAzob_6{C(0=jJ_RB=eNhNM0?x_ONNaiL^r+^bh{91OfQJeXhAl-GgUn#N?imLL@ zvwlb|b*roSy-dkAcbDN^M|Le@_=mui`b-0t_~|XqK(s-IPjB(rAu~AXkUQ3_*ciWd zYmMTsFP}&)O)cMbHdz|ta2q)>`g6KQKsX7TY)IXNzLwz{XxF5X2!kaqytOh zDyO3AN&tGUxE`xf^YVk(+^wl*+s8ODQI6E!h#^^~RISXX5}Bl~lDBK`HB}F<9?2QP zkx$8Qj@bYj$@;!VpIYTBMPQuuw%nYtXJmq5B{mNnmiNaj?^$kJQWrk9@V$k%7pmw^ zEYfetQI#26^0>RMs>^cOhRgEOom_IX6u_&RxJ_fR=qX_5Fy|qBW{g2qwa&Zug7n>G zz8}LlJ?mC#R%l6%M#^@Y(yuge$(Lo*PCyMzm{ctumN{*2nUCL4GkoaI+l0SY)4%Zr zakI#!9Bdqu7p42Yrn1I)=We1Lt<45(sNwqJlPSSRApJ75L;+JS2q*3YDEQka6c=jN z%iA@-l&m+AAz#(p8mB)r1tzktyzhW?2B+Uz!%SL;5W!5k?J%VuYq~5S*gwD6-z;TQ zyTs3qU9p^=%G<}_&NW=@hdIGSzK6)KO|!uM-c+^|?B}b1m3;0H(pxcqCYdJ{mlXM{ zJ>uY!I!X%cA^m(BsmAdb$I~NIvnp}V@DKupL)+s_6M7+IYt63Pfr=nK>$wXxY;Z6z zRR@q3|9X~JY!J{?+(<1)6MX&J#~0_GaO7f`UVr++)7%EOgCvmz-xRaW8hnYNS8xY}d)9xK442orWi1-R9WWy;IY~%1`WCv9)C#MAi9P7HG8j%NZ_nUq zzo!X3f=kzMF$X6Jjr53}(Nhl{DX-1rzwi4rzyHk|l5I*0xDyp{-gn|i@$K+6(il6Z zCmVtc;o`^6d-r%PN0TxB!|bZ9wRsUgz~qd|*X4kW#}4TWBXRKNQzJ|HpNRo2$nd#C zvDfy&QPu5Ls>iua13t`aJs)fCG@R3;TpI`X2`XhO!*S)HkviLNv_!ToMt)h16nV(+ zRP8;>29gaJTaemDdx~~Hx|)sdd8EGpHe>YJ$`^|h(NI7ot|y2#1kT7wy`2P67QQ@N zv5}L0ark3nlrv+$(wvEtGV7glvZsZuT9sAwQfYLh07qb_16FhbAH)CU^4iY1Jhr_K z_65glyMeDVBT)?-?IRdJX=h}`k&#D>)>L1>7%H&c{{HpRtjJQY?IW+> z;#vo1f->yfEUPPh;qF;qaM3{J4zXAw!OYMbHOi(XFqOqqg*JUanWf~rO ze-~7@kE9#+R_$gvK*LdZg^um=#+!$Yyev;# zMzmp418z*l`3wt_>b+cIR_tf@KI0I&wW%dnh7c)$yl9FXasdxu0{GN%$|lx3Om2s_ zpFhO=nmm*(3fWl}V+( zx>$pZ<`irv!lcRxXpPb55nW*F^vtSL znsU6wU>p|$Zh&J3%2wA9Qag7|65$uy>1%7d@MZSe>a|N${2mWAt}}*G4;Q~D@BRe|PwJ$e2QnQnVMj&GK0559he zeC*tI1f27I^OD`3_Ab7Bj#)gTeY7f5B>Ww+n@tpTdjvhA#!e)(2H=vNT! zSAJd<0>Kk*diSlq{5x)%zCEGyCijW>Aw%zN4{)dZh+Y!TGanX-=tj>M|PIRRFf+7|zvbt8p^QpFT;muiSLx3W9NEQa= zWf$vI<{a=M=2B%UyKOPHl$?K5bilq|x;BPD6)5KFTB? zr4Lo@>Or(LYgbaoFlenUp9#GoirU-D!+wNj6@7eHR>Wj=zEw?5 zbK2Yn**4Qb59~IQk@V-?oycJN*Y2nI9iH0x?{4GyUmY}L-#(?y_Jp_g@V@(M{))4< zX1|5-+g-JZwb`nmmKshNTgwTr)Yi^C_&p!A{wOD$1Kc=D2Oi1i=QwLu9!XR1-`Q!+ zu}r>41HF0dd9s40elm!@-ME@)Yg0e@nI!a*i(A-BP=VhvV;-iG$Lsx*tKv)pKEe0Z zrJp3!nvOq8l=p4Zz4XHq(R|>iwO^dbCOiyxeHKF=rX4?TM}2cT&9P=D&yamYqejSNM_4yJ&-GQ-`Bl!O^6gS^=?l-CABK_Al)74BY zaTs-cGbY@R;#6UdDQ9oxF4Czd{}cmG;bk+R=!S1apA99j z;iAZCFVGv`P6%R+xqw{AFe-lcA}0jyC>s9+e~_x<>AruD`*oWMw*p5%mEH2jChQdo{LkNlPsMmBN68>dl% zQl{i|BA#ZTybe+)zoEN-m=^8p(>nC@LWT6H8~X7o0j9+Ln9eLJ{PF9!b~9PG7C?9& z(#HWPPCxzVKvs;dtYBSP;ln5XjjPQ81)4hC^gIzL^>C=nQ|3nEJ*>tQGfdOKcuR-T zGp93y{3xD0{!|-rW()D<7o!FgfBaJsUoniT&t7H8uV+)@{B`*2d;5X<-iA5n;&>#5 z=QaeflJ}uv?J#=toEWhkSw>n5SaqHg4i2jwcs`GhXs0pOQTTwheOT>=i_t{Q_#yh? z&trOQEW%!99COAW`Lan&2fcYouiie_iX2y(f95W#WcSW z=p;f2bB;cD@xLx^p=E$R&75FIelOtkWlmsv*eE=F4UrY_IA~X{a>5}%6*^kLJm>JN z+obT=?l^@8G%oahrq5nh4Mw~0eo-hhy?rd#7SP@IkF_KIKbM1 z+HdWP_zwQ@_KVlkJI>hJIj%4KB5Mo$WY%k}`6DLLJZ~N*N$qNH4jC8%YMTG&G8&u(WR! z-ew@37Dduox-N=DvvhY9nWoQ%7GkEdma`0FxWb1kjT;+5hyLu6`s9veCidV+edvAF?&}6a&_Vx={FC}B#8EqcJW z%Sx<;Mlw0bubdZ@&DIZ%#H5^>213K_r3|Fa}mw3jF%z`ok$? zK4IEY(#Z2H-Iqoj?KSV~LH04)_;d^?($(qYjQVA09C5jRW=}Fu5g(4XqDJu#+Z2Zm zzY`sQ*b40m>7x4&TXOx8O!6~H4nbXa*$H|j`>LTb9Ml@ zST=b^$tPZ|@7sqQ=YtZj@upv3~qOG8y|8v=6U2M0RN==;8HJh8>Zof!DfPAo=Ye_&L&F2azI{_BD|%K8+?4 z7tLy6`#Rnj(il5q(hTN2;CZo)XP=2252`~u?g4tOs$Vjg^hHp#?$0A#ku>Fz$M|g} z)`3IFH1#~F0={zyrpnoC)~`Y1SE85mF;zexpHHS~{XFn$C5QiOQH=isMWl{)c5%mR z|FBIyV*N3nycQ?>G~pS?cp|I>&ZKS(!8?k4>+?gQ9olve#e6|}b0{f9TAwMBIef%6 zFfw5#^dn$jN&UV8a+CaBz%;cL>?|aUNHmk!h+T+)K9sN{X)8<_L5}ghLPl(7@E2M= zMPv+#uOD4Ze)4N}`Kt0)t6XjEJDS{7GldtgS(C^3T3U#z zCx9NH=KxHA;eas!-n>g5$9ZkmV_YMXZ{PR@O|$lWm`vmkc&r;ACgb?PY1UsKCgYWX z(>SeFJDx;YCypl}j67#N*~Fi7TRr0u_#l=u0X89>*_N)GfWAcj+X>`Nmd>9@a^ixZ zhSLjm;o|3bYoPHGa{!+32n{GdHW5MVcUQfB66U?~H`|L|t7S5YB7Ll@CgU5_f1H8% z(imsaG-!0D`{5d|t-qUL5x{!8Z?(9lLNl~O)A`9HA>p=dmRG6g4wKjLB#W#@Z8zKs zJh8^R@M+eFDI`6LHHjFXs0$IJ#ooAt_``O_X&pC(tmLWFdVUHyz;E_gUn?Q=SZh5c zhR>Wv-ppmVl4wB7Ii#}Eq{_rBn`eFI9dz!U4qy0C% z-#>Kgijy+?nE-oRou z;@aHJ!*)IDKO&(lXf8A&O_|H0W|>u-i%En0^K;4gcKP#jNpc+1rNmd3;QgE~cF~X- zno_UrbsR__6Za^YuV(szuX_~n8}i2$=Cu zo1sf_nc5CjH?4i=lafFOzWZ>7Uu`MYx8{?F0xz^>gRMW$CrSKgcB^s$NetTGM!w># z&s;$ID)|G8>*qf~ZUuMj5Hw}h<5RWV(xj|1E!QDPo0M6mwT`bOa#q3Y8D-l1xlb&f zF@M% zQc*j6{@lgs>FJESLr_rAfcC$^OJ*;c@yP7I>u9GB02er+Z>ja?DzYR{yA-0@q%v*& zm}TU=V#HKDqni$R7q1m(Af13UXb#dzPiD>URghiWYs^DMea2>v%NffNUZGT}1BB2p zO?0Q2E?u?B-HhoyGje+8_UYTN|A2vm);zO{)IYO|S5By}y2u|S(GMyg4#iCQ=#}+F zm-rw>0|YLWegEcf{w2X zf;}JaYr(gS$pCr+dV$shkP5sTpb30#Kxg24#}Z*Z$|eDx2L2FI_i!StLVdr_Ai=`D z8K@A%?)mk{ukx1&Kca_q=XL%W;_-LV6l$!=s$=!ehVzZoqobyUyc;K>#jr0LR+T{@CS+55bSO4Pi9v=!GOI&0p%L ze~r=}KXJnEXK;W6jKq}$6XIEf}c zO-zD$S&#`qRKz5{_sn9RL}T1FnutqcuIt>{zhBQl;`^Wfch2|esj2Gf?&|95>gw%M z*B<)Op-?r)5#6h^UsVsR{dqPgF!(h+fVA?x%fJi`BxhT;0-IM0< zkLBs_;dPb$UvTZ8f>Q3O(B~eSRqBECkb8Kn5%%w1fg|t9znA}iqcu&ca$^l0N)mX> zd^*{WY)eQ2A;)a5@=vMx%}!fL@Nb0Q?y$)rN}jhYqTaCC{1Y;r9sWavQsxZG*Gzg< zeK*PLqa_iC`I<#EHgc}An>4MB)aP?BhMF$gzr1v`1`0edh;aB5SiVEN#T(ls?Ynts2)u|=w<_uAy2GmryMyF_aNLF4`OY8Ou zO={`iUd_(=l9Cfz)#gp}iX~I=rWxfoop}i})Y7+Jx=?4}Kk(9xy3*(vpKd3g5z{tb zB1)2~mR|5uNoOHNbcTKg`tgkJnDJ(=D#EG9$g!^V{O0$+wm3>rPu_Yp(o?YbG2(kmu(m;T*&-?&?z%G)K~$qvSY z8P+N`s--L7nZ}YG86r6S4qaiLJqI3FTzOlm{j;o*l|ACo81E@rqL#k#P)%yg%r=jy zE2F<+gIa3#7{o|@EDSWw$$npSva}l1cqjW^?N0}Rs&KO3XZ>kbQuLR95^24diS$q> z`+eL=*QDx(KH`kq*?L(panhr^gw|C&r{i)t6DbXn*6-%p{OP964W$N7FVx3KYu$06 zcu*_cK~kNQ{*o&4M_n{0EkRr56?QKC+}n}J#?B=)siaYKQri6_jlP*?jQCa-cKYlW zd|{=6bi+ZvNz;)SdM(Y!Uv*JUdK}Tx%=A9Bqa8d{t95XOEM1hSmP#F2NI&J!G-z76 zHZFrRSw?UilYPjoG!xxd@;Z)bA0+u&kgwz>s-%CzXH?Pwx6eMo%Sk(BpZx=Opoi1< zv782fis(6AkhG!2GQu*#+tK--o=A_JyB3l*zzzg0|E-njv#ynuA{a%ohij{e;B;MS z2W*rR8AzK@a#1Tr*`$`{w<2(r220bC{{r%vJzs9?lnVY?=+c?q*! zP+^v$(}xuU4qZ`A46>@Fi7t9OBUP!Ee)Z9$%w(k?z1e0Pn)wQe9^7^uR#24+O@dKT z6(s%Oqvx}7hu-n#bxvKCq;KQ6u+M^;RAs7vX!L}}NMUkdTJsGU#I_BKh>+W~xm8I>@D z*J&lU(`WzA!AZPBD@iUrY@wCH+zhu~)|kNCvl#joWpe^&;wEaP82E_KzQ@iOe*OZesih{nLk>5 zDMZiOU%Usi0@$*L9?0nz(&$i0y8!zfRM}HZ$#E!l=tMT#dpNSh0niGb?aUI{n5m^< zbY9QRB%G>x^-yZ1lRlc;tFZ8GSsifs9AeTmX$)^QaH*U={2I?`rB8iH2E8cMBe;|( zHfW^}d<95H)@!AAd~|ECxc-?4#6CM4)w;39QYBUH5Tqdp$UggIR|>puq(6V0i%U)F z3g0Dy)QkSnD}~?aq?+Ejqz^6Xy@PP{TJQTZ1ay^62wo(5=Ez)UTGRAGLk_}$QY2{m zq?hLAX7FcRbaHMwf5c5!Yj?cPg2%T0}W-l-FN%nFi5xbx6`9vN0Q z{Vms&{PkXr(=@5ec|G&%C2n3{oD>+pAgOvUE$fq$W%PGK&(TjaX4Q}y9k4&2x zV?1z$(`xX`_tlAYz{T!c>Vh`Rg&42rc+7FT=cQLg4CYA z^Yc|w4#JAY#MpE8AXt@fCZQ=rBq9%kyIu4^p039eE@Sn{dF=}K(UbGW@a`WsRSTuX zx9j*#Rl(BxF7-%dDKP{~F*G#)A!D#B3Zm35PA9ao2qH8Ep<^ljks}UOsY)uNf6Jf3 zzrUMa&QA@Wu?qpmObiJY%ZN-GU(hrDw%0$~TwGf-rqtU2PEX*X9Gza!t#-9jU#-M6 z3U)EAc~IZ%PUSeA9L1UnHz(Hc*@|`qeO>ObMl5;H};nMZr;yj0gW zruJEH(M_VbZ)A0Kc3qGmT6)^2HX>>pGQ>wMH!Q)}OmHodWrIVNOXvoNGMA&AA=(@z zDj;IIHws-Ej4E#GFWHG4~ zvKABJAnefqhysn#9O<>!?c*ecU};LmU@@D7coRXf{;9ldd%(@;j=}MHx2S=cJgl$`DLgki)V^kmfZ5rd^2 zP6eu5b)1Lh%&2Uj#zLuTU}pFQpjQJ}k8-hM`|J%)wrVR8D6~?eD;Qfcwjey+&e!|w zi(NuJ&-P9m`+ZpZuq?C?qtTL9K5N;moxxI&i)0AxEQCfo^nZ?Ui6_OJPR+z;f*-O_K4zB&o9q!+jD9lIDPCM#f z226euaxy9$Pwm*YGqc;@q}uUmr#{h&0H-?4DoyG zS~m;*(b8s*vNW*1X{ANG0&~x=Z#1X-dm@Bsnu5ypH6vTp=EQ1MwyGV`*%B?)d1%#u z7@@#Z*AgtV$B6SQ%85rtTvSq>$ z>gOuq>l#zE#O-B9n+oIYM!VMlNlS?EIdBso6ZF6(bj-kBS(7}P8$x7IyV}edSk=Jv z_-+r$CGEWVb_d&Zm7@5xCG^9Ac`-X&Q_S4!%t5jAEM}eF>Y~!Xn8epzWB8#HDjo$v|!h7;x^7b|N^XC`cT-PUBTI1D;Ui$|Kjb8f&cdnV+z@n0KM(@&Ssm9x@ zjK#fZ$>Z(`3QE^XvO62363kofEKn@SUB@sIU9dFHm2PG`jV-RUk?EL!b*?o0&T+;< znAdAGbNaX%L2B|DMxq1e;A#UVNVGKEi^GR>-5c5X*PgN~2HI?U$1$D~FG zD;m}f+}Chqi805(QZY#V%@bqp3T}g(fw;^|pYLM6y3@=F=c8&l-9y81O0VFAZNP6~ zroVw1UkBI#`a}`ukH;eiaKiqhgky2J3P#m5Da&3&aO>i_P{u9;JIs!?nCPe+U;$#TUnGTAr9 ztQSvL1?0W$m{yLHs5H-Gtl8W$q0DI1TE>@YEtC987;7euI@MUq#APEW{L^WyIn|hL zsqZk8k9S@^X@Wt}(OSY)+_2u$_}L zUIlD>Ugj+PCx~xCuDDX>>Y}kZ-gsHTy@|8$df;M_qeWtoze9^0rsA^98g0#+#c^#t zEZI;%YZ>g6Y}~X^kx7wfE>U_Ptj$jr0BP> zB3HK%xMpDe`a!1krexKZvLKD2-hfIn|^ z)3Bnl%w@9BU}=369SCaYYDfkTKjRJyErR6ma%tf=Qn(l8l+l7zNNbA*)t1V(jxda& zy<=Vt$^7_msQMpAIjO~4-_c8azoUe$d8>(V7Y*h^VYVJ#1pPZe)5IAP%!%de8Uj(; zD91yIgDxEw`DzTx9gneEnH_gL#!TfL-8(H*zCZVGEzu*D29_J`ctlj{NiD)liqBY0 z@{Lu&sBU)&{`DhD42Ba#Ne*AYqr)A4bPTB>!ZTQi*%s(sSYsU0lK>HBZ4-w(7NwXZ zhC#+!oVP-NL)}c`_bwKEmo17CKXcu>&FfT%2~pA^AMZcT4A{Dca7^Gv2qGvx4+rY= zNNbu>4X-t@^9`qumR|7$)kjN4XV6>GgV{O~Elr{~ihGnr;T(*VU(~)%39CCL1mQrp zO%`w{T(&T=+UB}>i!-q4sx&Lmv1fc;yJ5C}xK=}F4tq>5d&rJL@sO;nQ%W}xtBP>@ zrIfU|?=j$Prj#P+AH#YWoL+2s*f#Y6rF7d1Ra=Qc>fj6t@ah&QrK?_ASTcXd=-@c&D`A_OZ!5?!-ssnC(5~KPUHkc_*5#^k5uz|-Zj?bU@r143w z{qHWNQSl+SAzCk#`s{msK_g=ftnZ^})Nrj(0>4;};h=Q`5~w(QVI~_7p^4~Od{IhC zUbUHI#J2H1wD$(bx4IE&>2XX}1wJh^~f1~C8nl`b7IK;O@k zUCq{ziNk#MQqKlCCwFYi2DtK|mg1Wli_gA^9vLw_Js5|Z*2}pjpM6!^%%!DSA#Ihn zXUv?rbnLK?JD4oCT!=j`i?rt&}#DZ0Ke;HB`CFQ$KIoI0R#!Ty<{sqg~um(LMlAFu>y!ZzS8u%&6zsO*~88aTtDD_m}rINppK5VU4@nJ_dw{Qf&f zo$*Ck$Ti&z(ta$5S^XS zGC6O%_z(MtT1@l?C!a&wxt1IRUe=5BPCZ|6MI&M=*8|>+F9$l2nGz7 zxV7*ek{u6Q!HX~tHGX^PTs$<3_hEll<+VR9vpmia(y3WgnoEi75JU^M9rf9t!sPx5 zPJaoFGsRR-6Cv+unpIxSf8(SZ%4eo6aU0;YoIXl=*Oe*acEbP{b=_Ac=!uT4BNj;6 zLK8<#m@%7E$up=eJZUSof-2JZh~#j$2+)Gq5ef#hdbk~KKjDwB=Qs8F}i1B zJ+fChOK=Y6jI%5xJ;?a3<&q_Rfye$hy)iml$w`-dRQEs(G1I;etnC)*6>yGjbY_S- z24M%b?B*yOZ`vQ|9k$Y`enZ$1T^J?pcG9ph=}HZjRoZV%Ub^xbBE$pOI5Gbl1o|WF zS=e~7BQNvMnrG-sV+sZ;q*s0GI~{wkY!KsitijNIEU(7+Cv-5I4#=VF4E;*$AYXD* zVPg7JxBCGxL)1tbT=qver*#lRxlOekgQ?sCVMX=^zBEU8v8TGU!JQiq4GpV)7l4K1qtMP5R%Z|?AS<7KYxYm6Q{ zyWGaiW3lN5(gyUT9MHe18qMYS;?3OK2{pXrQ*LTuA(910jkMlPVE@)^QQO^cf^EsqLLD+yV}0_P)29nR_b%hl?K@qYnoevRX;MjwatXn*<(L|5#j{I6;XN%ZrYQRXk+U_b9;ndmsY z-ell1Eg1ST52l;MRgSWM%HvMlPF^eyUqw&Mu*l!)2SK!*zRb+&eA{n$3+PhrfG`C|JeBievPr8f~uH8@E#BZn*`3&5hh3|1cVHC zGO>!zjT;j?*!d_&Xv(zw+DtR6bDvY!^H{si%!c>fYr%>T13Mm^YJ^pDVNuIxz)nH& zS`d`O&DKJ6!GCl}@JAu9f1~r}(o;*h*Vv|wXbIjXyO}k3$Lxj@ah62?CWg%+1PwtABPRc7x2aj@PLN^GXd3rMF6%jsRw4^!~rb%&wQ)>Cq9j| z+YyIAz-74)bE(}&CRv!*ednUPri-;NICSFej*L1YuyZnNDly5JT8K1z=kj>iNx)~n ze;>!Oy$-u1;IcUB7S*-YDzP*L`=H0U zRAZ$?!eV5SO$PBLTFIwaA#dG(w|ziaWi4FtK->m-tEs$YLv{IZ^$)Mf%Kdw9aFOJ2 zigT5NsA!*D2Of{=1y=N9G-Y&P>tf+O2uc_hDCNe?OGb3YllTfo=Ps$;#|vTYpci^V$8R6 z?ZA5AP4?5-M>{qS*)ja~$yjzDWyr%BDX}J`iq|o}i-z#u#n1%|`7Rn7kfPi>m^n3lq6?P6~AqL>)NJ9K{As z+UpF&i_6a3ol0{a4w@|Rek^-Cl!zBBF7W2KY97~VKKto57B^V@V6mdvzio^~?6r7J z*vzRxJ?j0`{AopPLd_42s@D{_EkP_7(-BK{-V;me%XW;^TE<$a<%mVQVC(|A;K+ja z%Cs1Y&?@b^?PZu12zJ^kpZ!Z;K)Fp&jx%iOTotB6xsX(!UGE9MF)<|kMqKEdmB+<) zv1>YS6i`rsUYP05na0`|aN=guuCHwB8FV8i=uCTvjtq9&mwRHcgnie(+PtQc8Jg8F z%CR5EVA`qLxebF56&NpG&R&-YH)E4D#E>TQgZ?_rKgnblXrv(7lyjl|No?AWzPe{A z3lWR`aVS!9*7~^At+>S_p-ix{o$c9)E>gPgn=x{r%x8zLn>uQ98`+se0`hPW+-r3kVe`BmeDdyBsOrjZ`G59?rQW}oV4Dv_lY`>M6dbNXm zLeA}Wg;}*J!P1{iAZ(The3(rZw$)|+%pxK4ZRYQ6Vl`mS>;miq`~+Z=EP6Q+&Vfz< zW>JwvO+9E9HQD4F3;LOrL|6>0H76|N7j9a*V!=tecFu7Aw|M&foRTEBeFS_LPop{x z0^I}+{lW_je>98sn)^utmxT2=gA*DCV|@n5D8}{+TL;s-bF*m{*J;4+8YIFtk ziuvy=882(`5@qy zQ^-TO;f!l>+NZhb%;lTNEt_X~B+sinG-A~la>_Pi)qQ;AcX$poR&TDJ5_IiHr~RMw z#Whdy&%3C4Z8E>qMbp@rmF&w1%%^fz*jPTJ5j z@}OHSW>;^Xw^{wpQHT8t`uc`Z{3bX3Wy4&4uA7#>K8^3^wte*aWWuj=*#v7NA)nax zywRKIH#+EVn-chS4x6y~7%6nvH_J?tLJCs6Rjh93aQL^h5@QFBdsjOg_7~*3L_XvC z35D(^*5ta=yl@_Hdm)W|`vPBgnmXT3=g*&}hApee=k$Xu!}-^J^!k=1#glwN;xTzc z?wdiT8}HT0_6K}lB}Qf6IiWl++s(fHkZFU=mpc-w4HDrKs${zfHGKBrUM{2MuxuaT zqwoKHs3zXej05xacG({7qqqOwE6V9*B^@3vqP#nrp?@DNO_k`HNbTvvu@h@Q6z7{nZ zXLFG1N7-KIrE%MmA{Lc8|wWkaoF&?CvIH2SZ$P) zisjjf&^F(DOnxPI82w{gH~QT+O~ifP{fVaGH%=VBB-^`t>D6tz2(_Pe_e2X=7~Z&d zlE@9(_Z@xD^PaB~ZN+y_P-L9+uzKfCym%?BXT@PYyHaWx#>`f?Frg|R?R-O5zEhO3 z!=r>zTHRd63h>_XaET!qcTYTs`fqtmp#O8C67)t7{q3DN{&^2ozq_VjxJNDSsXnEM zN009JtW4yy?I)tn=c5lniqK*C7?c7JGb(eAe-xj>u;h5?{&zDp-BIx;S?F^@!K|(E zQ2AY5xDPJ5r+TxW<)CTXjo}@B&LltQXZqmwp5!21xjn60vpYz%RnLUnFoo^fipZmo z{4s6ao*zw7!`Rv0E^zb*n>ydiA`V;H`$2?% z(nWiH@CHB0Ll1tC6&;N!c(Ho3n*7M=3R`7+h>I%gGsqpVS{@_)q< z51sR`HePpzrvLji<0%h*L~L~D!TIEdP5<>+67lSQPDuNb6PUP`HoD@Q6>8HNUMM_6 zL%yBOk8{{8-Aarb34#w3$fz9-a`wI+F+}7wN{s>q#m7xm`;O+P4RH>5>Re zZywpvKMdr1J8Ts{yhM^&Usx?GmJA(mA%OLZRaz%f=aKPIOz`X9asp#5_>Mg?&p7&M z7E7_h9&kMW;e=5~IpIyvOvq{@5o&4ES*XvY$Kl$WWFIgVr#E?()+U|D@GsTqrdW!{kN5QctJK zJY}91AEatbaU(RXtn5~irvH=|5+FHU(~q{9KW!rZ^kTGtZ1sr>ewRqcpSZx#z>`@C zfi?o|{c=xxzd)Un2|UoIldpxaoR1*lph)|j5~I%}$yf&geNS+LEZSZ=Rm?|s@mNs~ zPdDd9+l4c+M9s>hs`u=eo<~PHypdI_Bcgh+L42 z6^GWsSJ<{(yve6`b>#9m3^bZMh-ONW{|3MfxPUeaFVN2~P4nw~5G*8Yz@ zqzW2x`TGc#WCCwOm~$Mxba`L|%VjKOptHTM6srTJ=#ndCUF5&697|?}I4Gb4q*ih| z(`fV`a1b(KrQKJ{YWrU0ga-k&fM>69!h3+ezj4A8z!!iUfZE?V;ZeX5z>n8C!2vu2 z_}M>D9&iSbDRIKfSN{Lt-`6?Y%4`4D`!|dI#(W`Qlbbh1e{yjkS$wNk0xQf$in*6bF)Vpv z@x&rFmEaufZ!J+w3n&4D5ki=ATtSb1?m*8jbHbIgxR$@c36lV;K{GjQ6jT=wUw_8O z7T~=KJP)uR#%5EU!*|sth1Y(=CA7lW)9iVEeOWUY?M?QI2&Q`1SRNcf@7niucFwk2 zuHgUl))yeK9Iyd!aD*+{wU7@FjCY`VGcEGO+dlXFD^TTNr*6z@totuaeEl_2j7idT zjP&CZ3j7uc_!MhA3B?bC*XL|=x`IR~da=IUE1r3H6*R2@usOw?Uxx}z&|?#uXR1l8 zQpM(7T=TObq=S#})8hjzlul?~7*6u|2v(!Z!WYIiH%5|l@~1sa71j$HlGoXLYeE$1 z=QmDQvxOI$r$v#ugs+}t{Z};EsGdIwOVA|iOf4DDc)PVEA-Nhn{FMh*9Ii#vs(4yi z9opiv@558~-42wwsYUOBvtsbKAHZS^nH$UMkiz|qDH)sE5L&0QZ_p>6v3?l?l^0L3 z-i;yY3@3LZLm8gdjbt&rz8k)I0RE&K>BaEbZX}lByWPk%!{R9{OjB9MSw=8g;ir`u z8`{8!{KZq6m&B5pJpaZN>&Z9>22O}4jSPPuPd3HAflAB?c`UziRZJzW4SCNcpb_AW z3FL|7w@`+a%fRhNVs%pfu$in}a93GFBKh1eKM@8(oxCJ6hJR~H^O_{Go`BIDolNo= zVHH!z8pilO1vzRa62+$J$qEI(Ws3DeDlx=v0aL>qIyI@zV^6{*nWlBil;(sqQbzc~ z3)Z>mWK2lzSzgcpFjQZr6Op8EM=b#i8Iza;j&u8b+*Nh|O>YL9O!naZfeO}M85nm~ zcIy=D+zhfMBtYW}jz!jpOtPNeKE=8zlS~c?2kM$D`%Q;JI_UwCq>Y{bo z5GYbV#rok8a#cP0XI@yoqIuI$bPder_wOf@NiypnzFZL51(;xf*Gst$m>hp=;qE}q zIi%aAkZM4zyGKPHBylpi3DIj^Uzo|g8IjgMe$B;{ECQ!IwT{70+`{sAX zl1+R?mwrX70&iVionrzxz=PmV15^VR0G0uG^Skmm&S$scb8l9^YvWh;kahidGLf(F zS$`Q%#_=N`vJRX;#w$lYgiWkv0*SHKPat88{rLp4kzeGsR!l_TL$x&%p%ZXpCq6q7 zwnRF464}D=zDcBCLK(zx2B9fR{HM-m*Z7Dz2-l%PEAk^IBWSJlG%uWtd9VE4o+n%P zPa!eni1o)QBs*)4JJ|o3o2FHxH{FfW`0Rr{jEV-;-*cs7FeIA*kd!r*BqjZ350#Y$ zZZ~-a-z$+dXzf>z0^c}uZKj8;GpCYXF|11@V^LF>7%TS2UBq>}#cka_m8{}>x~*9c zk0A-CV7q1x~_`k#xu0?^3Bt6M8XZ1V)n}T zG7ietF|&vvdQ4f(TY zS(E3$-Ksk=(q(f*tU%^>(Bmn`J#Y2OE^d7p=*2$t6R$Yfr~*Oh1;l z6(ECt3-}FxS$xhn%bNZ$V%g$Z&Emr(mhh)nS*KOAc(BU)VKtj~tD28hlW4+^TV%aD zj~LYTs41Dh8K~rEFKXVmm|O|9w$>55_1bbWJA2Bk#~;#h z&!pwg)^Xt>At6Oe<}94?@El#qyhV#=JTYs|kRjnA$k3(b&9?qy1zFOZy^@?z#D?Qj zt4P2Ed?gnJT#Gd!cBwUCEx9i-Qqw&yMb{&vcW$4&{DQvy`WFruIB4*Yq4#s#+RCB-ABUjrQqdepEn<7Cibe%d@-1?z`% zc@WhVjm0bBun4)8O|oB^By{S#n0WPJ=c1bWgK zA`}4!12RGXigF*95}~h%KS8P@p~AaWXb{X3#myUk;m;CY*W0?}62FZ6Y`t-bubD3@ zl|szun0V+d!3w8gxv>x9+%}gJmILb<4HyJiU5!uZ=W)V-M?eEU1{8t+AK*U#T<{Q% z^`HG?cM^UAKfX?a@vPexl9-%8Zh-#{a?kvT&z1l?0G{KJgnz9+aYDCaoWN?tS#vM* hO2ZXg62t@201p5<<#I(QIb12?;^&NY{AE7t{{S!qRbl`D diff --git a/STM32CubeIDE/Release/WLE5CC_NODE_STS.elf b/STM32CubeIDE/Release/WLE5CC_NODE_STS.elf index 55ca2464b0ee5b352dd2ce1c4d4c0db2d461125d..9a87f14120cebe2927ba87e52a5fd10b2b279728 100644 GIT binary patch delta 57577 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 F{Qvg^gERmD diff --git a/STS/Core/Src/yunhorn_sts_process.c b/STS/Core/Src/yunhorn_sts_process.c index 87c24fb..30bf60b 100644 --- a/STS/Core/Src/yunhorn_sts_process.c +++ b/STS/Core/Src/yunhorn_sts_process.c @@ -564,7 +564,8 @@ void STS_YunhornSTSEventP5_Process(void) { APP_LOG(TS_OFF, VLEVEL_M, "\r\n Upload Fall Gesture Type 2 , status=%d \r\n", sts_fhmos_bitmap_pending); STS_FHMOS_sensor_upload_map(0x02); - HAL_Delay(2000); + } else if (sts_fhmos_bitmap_pending == FHMOS_BITMAP_2D_FINISHED) { + APP_LOG(TS_OFF, VLEVEL_M, "\r\n Upload Fall Gesture Type 4 , status=%d \r\n", sts_fhmos_bitmap_pending); STS_FHMOS_sensor_upload_map(0x04); } @@ -1944,7 +1945,8 @@ void OnRestoreSTSCFGContextProcess(void) #endif #ifdef L8 - STS_FHMOS_sensor_config_update(); + STS_FHMOS_sensor_config_init(); + //STS_FHMOS_sensor_config_update(); #endif } @@ -1965,9 +1967,9 @@ void STS_FHMOS_sensor_config_init(void) fhmos_cfg.th_gesture_mask_off_height_cm = 20; // gesture mask off height in cm fhmos_cfg.th_fall_body_min_height_cm = 25; // fall body min height from floor 25 cm - sts_high_threshold = sts_cfg_nvm.sensor_install_height_in_10cm*100; - sts_low_threshold = sts_high_threshold - 1400; - APP_LOG(TS_OFF, VLEVEL_M, "\r\n FHMOS cfg high= %4d low= %4d \r\n", sts_high_threshold, sts_low_threshold); + //sts_high_threshold = sts_cfg_nvm.sensor_install_height_in_10cm*100; + //sts_low_threshold = sts_high_threshold - 1400; + //APP_LOG(TS_OFF, VLEVEL_M, "\r\n FHMOS cfg high= %4d low= %4d \r\n", sts_high_threshold, sts_low_threshold); } void STS_FHMOS_sensor_config_update() @@ -1982,6 +1984,10 @@ void STS_FHMOS_sensor_config_update() fhmos_cfg.th_gesture_mask_off_height_cm = sts_cfg_nvm.fhmos_cfg_7; // 20 cm fhmos_cfg.th_fall_body_min_height_cm = sts_cfg_nvm.fhmos_cfg_8; // 25 cm + sts_high_threshold = sts_cfg_nvm.sensor_install_height_in_10cm*100; + sts_low_threshold = sts_high_threshold - 1400; + APP_LOG(TS_OFF, VLEVEL_M, "\r\n FHMOS cfg high= %4d low= %4d \r\n", sts_high_threshold, sts_low_threshold); + } void STS_FHMOS_sensor_upload_map(uint8_t map_index) @@ -2055,7 +2061,11 @@ void STS_FHMOS_sensor_upload_map(uint8_t map_index) int status=STS_SENSOR_Upload_Message(YUNHORN_STS_L8_LORA_APP_DATA_PORT, i, (uint8_t *)tstbuf); if ((map_index ==0x02)&& (status ==0)) { - sts_fhmos_bitmap_pending = FHMOS_BITMAP_FINISHED; // 2; + sts_fhmos_bitmap_pending = FHMOS_BITMAP_2D_FINISHED; // 2; + } else if ((map_index ==0x04)&& (status ==0)) + { + + sts_fhmos_bitmap_pending = FHMOS_BITMAP_FINISHED; // 4; } APP_LOG(TS_OFF, VLEVEL_M, "\r\n +++++++++++++++++++++++ \r\nBitmap Pending uploaded, fhmos_bitmap_statue=%d\r\n", sts_fhmos_bitmap_pending); } diff --git a/STS/TOF/App/app_tof.c b/STS/TOF/App/app_tof.c index 809ab18..75b25d3 100644 --- a/STS/TOF/App/app_tof.c +++ b/STS/TOF/App/app_tof.c @@ -57,8 +57,22 @@ extern volatile uint8_t sts_fhmos_bitmap_pending; #include "stm32wlxx_nucleo.h" static int to_confirm = 0; static uint32_t STS_Get_Center_Range_Distance(RANGING_SENSOR_Result_t *Result); +uint16_t bg_distance[64]={0}; +uint8_t idx[64]={0}; +uint8_t IDX_LEN=10; + #if defined(NARROW_CUBICLE) -static uint8_t rio_edge[36]={0,1,2,3,4,5,6,7,8,15,16,23,24,31,32,39,40,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; +//static uint8_t rio_edge[36]={0, 1, 2, 3, 4, 5, 6, 7, 8,15,16,23,24,31,32,39,40,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; +#define RIO_EDGE_SIZE 34 +static uint8_t rio_edge[RIO_EDGE_SIZE]={0, 1, 2, 3, 4, 5, 6, 7, //first line + 8,14,15, + 16,22,23, + 24,30,31, + 32,38,39, + 40,46,47, + 48,54,55, + 56,57,58,59,60,61,62,63}; // last line + #endif //uint8_t rio_edge[34]={0,1,2,3,4,5,6,7,8,15,16,23,24,31,32,39,40,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; /* Private typedef -----------------------------------------------------------*/ @@ -189,9 +203,6 @@ void STS_LMZ_Ambient_Height_Scan_Process(void) uint8_t i=0; uint32_t range_distance =0; uint8_t j=0; - uint16_t bg_distance[64]={0}; - uint8_t idx[64]={0}; - uint8_t IDX_LEN=10; uint8_t prev_sts_lamp_bar_color = sts_lamp_bar_color; sts_lamp_bar_color = STS_BLUE; @@ -200,6 +211,8 @@ void STS_LMZ_Ambient_Height_Scan_Process(void) { fhmos_bg.h2cm[i] = 0; fhmos_bg.maskoff[i] = 0; + bg_distance[i] = 0; + idx[i] = 0; } for (i=0;i<8;i++) sts_mask_bitmap[i] =0x0; @@ -242,13 +255,13 @@ void STS_LMZ_Ambient_Height_Scan_Process(void) for (i = 0; i < 64; i++) { if (i % 8 ==0) { - APP_LOG(TS_OFF, VLEVEL_H, "\r\n[cm] "); + APP_LOG(TS_OFF, VLEVEL_M, "\r\n[cm] "); } //if ((Result.ZoneResult[i].NumberOfTargets > 0)) //{ bg_distance[i] += (uint16_t) Result.ZoneResult[i].Distance[0]; idx[i] ++; - APP_LOG(TS_OFF, VLEVEL_H, "|%3d ", Result.ZoneResult[i].Distance[0]/10); + APP_LOG(TS_OFF, VLEVEL_M, "|%3d ", Result.ZoneResult[i].Distance[0]/10); //} //else APP_LOG(TS_OFF, VLEVEL_H, "|%3d ", 0); @@ -259,12 +272,12 @@ void STS_LMZ_Ambient_Height_Scan_Process(void) HAL_Delay(10); } - APP_LOG(TS_OFF, VLEVEL_H, "\r\n\n\nAverage Distance==\r\n"); + APP_LOG(TS_OFF, VLEVEL_M, "\r\n\n\n=========Average Distance=========\r\n\n"); for (i=0; i< 64; i++) { - if (i%8==0) APP_LOG(TS_OFF, VLEVEL_H, "\r\n %2d ", i); + if (i%8==0) APP_LOG(TS_OFF, VLEVEL_M, "\r\n%2d| ",i ); bg_distance[i] /= idx[i]; - APP_LOG(TS_OFF, VLEVEL_H, "|%3d ", bg_distance[i]/10); + APP_LOG(TS_OFF, VLEVEL_M, "|%3d ", bg_distance[i]/10); } //STS_TOF_L8_Process(); @@ -295,10 +308,10 @@ void STS_LMZ_Ambient_Height_Scan_Process(void) if ((uint16_t)fhmos_bg.h2cm[i] < (uint16_t)(fhmos_cfg.th_gesture_mask_off_height_cm)) { - fhmos_bg.maskoff[i] = 0; + fhmos_bg.maskoff[(7-i%8)*8+i/8] = 0; // update 2025 05 27 } else { - fhmos_bg.maskoff[i] = 1; + fhmos_bg.maskoff[(7-i%8)*8+i/8] = 1; } //sts_mask_bitmap[(uint8_t)(i/8)] |= (fhmos_bg.maskoff[i])<<(7-i%8); @@ -321,12 +334,12 @@ void STS_LMZ_Ambient_Height_Scan_Process(void) for (i=0; i<64; i++) { sts_mask_bitmap[(uint8_t)(i/8)] |= (fhmos_bg.maskoff[i])<<(7-i%8); // 2025-JAN-03 update - if (i%8==0) APP_LOG(TS_OFF, VLEVEL_L, "\r\n"); - APP_LOG(TS_OFF, VLEVEL_L, "|%d ", (uint8_t)fhmos_bg.maskoff[i]); + if (i%8==0) APP_LOG(TS_OFF, VLEVEL_L, " |\r\n"); + APP_LOG(TS_OFF, VLEVEL_L, " %d ", (uint8_t)fhmos_bg.maskoff[i]); } #if defined(NARROW_CUBICLE) - for (i=0; i<34; i++) + for (i=0; i 0)) + { + bg_distance[i] += (uint16_t) Result.ZoneResult[i].Distance[0]; + idx[i] ++; + APP_LOG(TS_OFF, VLEVEL_H, "|%3d ", Result.ZoneResult[i].Distance[0]/10); + } + } + } + HAL_Delay(10); + } + + for (i=0; i< 64; i++) + { + if (i%8==0) APP_LOG(TS_OFF, VLEVEL_H, "\r\n %2d ", i); + bg_distance[i] /= idx[i]; + APP_LOG(TS_OFF, VLEVEL_H, "|%3d ", bg_distance[i]/10); + } + + for (uint8_t i = 0; i < 64; i++) { - if ((Result.ZoneResult[i].NumberOfTargets > 0) && (fhmos_bg.maskoff[i]==0)) + //if ((Result.ZoneResult[i].NumberOfTargets > 0) && (fhmos_gesture.maskoff[i]==0)) { - range_distance = (uint32_t)Result.ZoneResult[i].Distance[0]; + // range_distance = (uint32_t)Result.ZoneResult[i].Distance[0]; + range_distance = (uint32_t)bg_distance[i]; if (range_distance < sts_fall_head_position) { sts_fall_head_position = range_distance; // simply find out the head level @@ -382,14 +428,15 @@ void sts_generate_fall_gesture_map(void) fhmos_gesture.h2cm[i] = (uint8_t)abs(sts_sensor_install_height - range_distance)/20; //fhmos_gesture.maskoff[i] = ((2*fhmos_gesture.h2cm[i])< fhmos_cfg.th_gesture_mask_off_height_cm)? 0:1; fhmos_gesture.maskoff[i] = (fhmos_gesture.h2cm[i]==0)? 0:1; - fhmos_gesture_bitmap[(uint8_t)(i/8)] |= (fhmos_gesture.maskoff[i])<<(7 - i%8); // 2025-JAN-03 UPDATE + //fhmos_gesture_bitmap[(uint8_t)(i/8)] |= (fhmos_gesture.maskoff[i])<<(7 - i%8); // 2025-JAN-03 UPDATE + fhmos_gesture_bitmap[(uint8_t)((7-i/8)*8+i%8)] |= (fhmos_gesture.maskoff[i])<<(i%8); // 2025-05-27 UPDATE // debug // if (i%8==0) printf("\r\n"); // printf("|%4ld %4d ", range_distance, fhmos_gesture.h2cm[i]); } - else { - fhmos_gesture.h2cm[i] = 0; - } + //else { + //fhmos_gesture.h2cm[i] = 0; + //} if (i%8==0) APP_LOG(TS_OFF, VLEVEL_L, "\r\n"); APP_LOG(TS_OFF, VLEVEL_L, "|%4d ", fhmos_gesture.h2cm[i]); } @@ -397,7 +444,7 @@ void sts_generate_fall_gesture_map(void) for (i = 0; i < 64; i++) { if (i%8==0) APP_LOG(TS_OFF, VLEVEL_L, "\r\n"); - APP_LOG(TS_OFF, VLEVEL_L, "|%d ", fhmos_gesture.maskoff[i]); + APP_LOG(TS_OFF, VLEVEL_M, "|%d ", fhmos_gesture.maskoff[i]); } for (i=0; i<8; i++) @@ -410,10 +457,11 @@ void sts_generate_fall_gesture_map(void) if (i%4 == 0) APP_LOG(TS_OFF, VLEVEL_L, "\r\n"); //h4 = MIN(fhmos_gesture.h2cm[2*i+0],sts_gesture_mask_cap_height_2cm)/8; //l4 = MIN(fhmos_gesture.h2cm[2*i+1],sts_gesture_mask_cap_height_2cm)/8; - h4 = fhmos_gesture.h2cm[2*i+0]; - l4 = fhmos_gesture.h2cm[2*i+1]; + h4 = 0xff&(fhmos_gesture.h2cm[2*i+0]); + l4 = 0xff&(fhmos_gesture.h2cm[2*i+1]); + fhmos_gesture.cube[i] = ((h4&0x0f)<<4)|(l4&0x0f); - APP_LOG(TS_OFF, VLEVEL_L, " [%2d_%2d]", (fhmos_gesture.cube[i]>>4)&0x0f, (fhmos_gesture.cube[i]&0x0f)); + APP_LOG(TS_OFF, VLEVEL_M, " [%2d_%2d]", (fhmos_gesture.cube[i]>>4)&0x0f, (fhmos_gesture.cube[i]&0x0f)); } fhmos_gesture.head_level = 0xff&((sts_sensor_install_height - sts_fall_head_position)/10); // head level from floor in CM @@ -502,18 +550,18 @@ void STS_TOF_L8_Init(void) { MX_53L8A1_ThresholdDetection_Init(); MX_53L8A1_ThresholdDetection_Process(); - } void STS_TOF_L8_Process(void) { - + //status = VL53L8A1_RANGING_SENSOR_Start(VL53L8A1_DEV_CENTER, RS_MODE_ASYNC_CONTINUOUS); //while (1) { /* interrupt mode */ if (ToF_EventDetected != 0) + //while(ToF_EventDetected==0){}; { ToF_EventDetected = 0; #if 1 @@ -614,7 +662,7 @@ static void MX_53L8A1_ThresholdDetection_Process(void) //ITConfig.HighThreshold = HIGH_THRESHOLD; /* mm */ sts_high_threshold = sts_sensor_install_height+ 400; - sts_low_threshold = sts_high_threshold - 1400; + sts_low_threshold = sts_high_threshold - 1550; APP_LOG(TS_OFF, VLEVEL_H, "\r\n Threshold High=%4d, Low=%4d \r\n", sts_high_threshold, sts_low_threshold); ITConfig.LowThreshold = sts_low_threshold; @@ -685,11 +733,11 @@ static void print_result(RANGING_SENSOR_Result_t *Result) { int8_t i; - uint16_t head_distance_from_ceiling=8000; + uint16_t head_distance_from_ceiling_mm=8000; //printf("%c[2H", 27); /* clear screen */ - uint16_t factor1_floor_level_from_ceiling = sts_sensor_install_height; // 50mm min body height - uint16_t factor2_head_level_from_floor = (10*fhmos_cfg.th_head_level_height_cm); //(sts_sensor_install_height - 10*fhmos_cfg.th_head_level_height_cm); - uint16_t head_height_level_from_floor=0; + uint16_t factor1_floor_level_from_ceiling_mm = sts_sensor_install_height; // 50mm min body height + uint16_t factor2_head_level_from_floor_mm = (10*fhmos_cfg.th_head_level_height_cm); //(sts_sensor_install_height - 10*fhmos_cfg.th_head_level_height_cm); + uint16_t head_height_level_from_floor_mm=0; sts_head_level_low = 0; @@ -697,28 +745,37 @@ static void print_result(RANGING_SENSOR_Result_t *Result) //APP_LOG(TS_OFF, VLEVEL_M, "\r\n Eliminate edge \r\n"); //uint8_t rio_edge[36]={0,1,2,3,4,5,6,7,8,15,16,23,24,31,32,39,40,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; #if defined(NARROW_CUBICLE) - for (i=0; i<36; i++) + for (i=0; iZoneResult[i].Distance[0], Result->ZoneResult[i].NumberOfTargets, fhmos_bg.maskoff[i]); if (0 == fhmos_bg.maskoff[i]) // only within the non-mask-off blocks { // Result.ZoneResult[i].NumberOfTargets > 0) - if ((Result->ZoneResult[i].Distance[0] < head_distance_from_ceiling)&& (Result->ZoneResult[i].NumberOfTargets > 0)) - head_distance_from_ceiling = Result->ZoneResult[i].Distance[0]; + if ((Result->ZoneResult[i].Distance[0] < head_distance_from_ceiling_mm) + && (Result->ZoneResult[i].NumberOfTargets > 0)) + head_distance_from_ceiling_mm = Result->ZoneResult[i].Distance[0]; // find out the min_distance or the highest position level } } + //head_distance_from_ceiling = MIN(4000,head_distance_from_ceiling); + APP_LOG(TS_OFF, VLEVEL_M, "\r\n Head Distance from ceiling= %4d mm \r\n", head_distance_from_ceiling_mm); - head_height_level_from_floor = MIN(1400, abs(sts_sensor_install_height - head_distance_from_ceiling)); + //head_height_level_from_floor_mm = MIN(1400, abs(sts_sensor_install_height - head_distance_from_ceiling_mm)); - APP_LOG(TS_OFF, VLEVEL_L, "\r\n Updown distance=%d cm, Floor Up head =%d cm\r\n", head_distance_from_ceiling/10, head_height_level_from_floor/10); + APP_LOG(TS_OFF, VLEVEL_M, "\r\n Updown distance=%d cm, Floor Up head =%d cm\r\n", head_distance_from_ceiling_mm/10, head_height_level_from_floor_mm/10); /* state tree */ - if ((head_distance_from_ceiling <= factor1_floor_level_from_ceiling) && ((head_height_level_from_floor) <= (10*fhmos_cfg.th_head_level_height_cm)) && (head_height_level_from_floor >= (10*fhmos_cfg.th_fall_body_min_height_cm ))) + if ((head_distance_from_ceiling_mm <= factor1_floor_level_from_ceiling_mm) + && ((head_height_level_from_floor_mm) <= (10*fhmos_cfg.th_head_level_height_cm)) + && (head_height_level_from_floor_mm >= (10*fhmos_cfg.th_fall_body_min_height_cm ))) { to_confirm ++; if (to_confirm >=3 ) @@ -727,7 +784,7 @@ static void print_result(RANGING_SENSOR_Result_t *Result) // to_confirm = 0; } - } else if ((head_distance_from_ceiling < (factor2_head_level_from_floor - 150))) // TODO XXX 50mm gap to avoid flapping back and forth + } else if ((head_distance_from_ceiling_mm < (factor2_head_level_from_floor_mm - 150))) // TODO XXX 50mm gap to avoid flapping back and forth { sts_head_level_low = 0; sts_fhmos_bitmap_pending = FHMOS_BITMAP_BLANK; diff --git a/STS/TOF/App/app_tof.h b/STS/TOF/App/app_tof.h index 3da9110..0dd1d51 100644 --- a/STS/TOF/App/app_tof.h +++ b/STS/TOF/App/app_tof.h @@ -58,6 +58,7 @@ typedef enum { typedef enum { FHMOS_BITMAP_BLANK=0, FHMOS_BITMAP_GENERATED, + FHMOS_BITMAP_2D_FINISHED, FHMOS_BITMAP_FINISHED } fhmos_bitmap_state;