From 9d35bc4e42359b6c012bf699d08e21a251baa4b4 Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Thu, 22 May 2025 17:38:30 +0800 Subject: [PATCH] minor improve --- Core/Src/sts_lamp_bar.c | 2 +- LoRaWAN/App/lora_app.c | 18 ++++++++---- STM32CubeIDE/Release/WLE5CC_NODE_STS.bin | Bin 189944 -> 190008 bytes STM32CubeIDE/Release/WLE5CC_NODE_STS.elf | Bin 275652 -> 275652 bytes STS/Core/Src/yunhorn_sts_process.c | 36 +++++++++++++++-------- 5 files changed, 37 insertions(+), 19 deletions(-) diff --git a/Core/Src/sts_lamp_bar.c b/Core/Src/sts_lamp_bar.c index fe63260..87f6222 100644 --- a/Core/Src/sts_lamp_bar.c +++ b/Core/Src/sts_lamp_bar.c @@ -149,7 +149,7 @@ void STS_WS2812B_Set_RGB(uint8_t red, uint8_t green, uint8_t blue, uint8_t idx) void STS_Lamp_Bar_Set_RGB_Color(uint8_t red, uint8_t green, uint8_t blue ) { uint8_t i =0; - UTIL_MEM_set_8((void*)rgb_buf.GRB,0x00,(WS2812B_DATA_LEN+RESET_PULSE)); + //UTIL_MEM_set_8((void*)rgb_buf.GRB,0x00,(WS2812B_DATA_LEN+RESET_PULSE)); for(i = 0; i < STS_LAMP_BAR_LED_NUM; i++) { diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index 38c9ebc..919baab 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -699,7 +699,7 @@ 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 (last_sts_hall1_read != sts_hall1_read) // to eliminate power drop issue of PCB with long REEDSWITCH CABLES + //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 APP_LOG(TS_OFF, VLEVEL_M,"\r\n EXIT_CALLBACK, Door state =%d \r\n", sts_hall1_read); @@ -797,16 +797,18 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) if (sts_pir_read ==0) { + sts_pir_duration_check_time = SysTimeGet(); if (takeLowTime) { - sts_pir_duration_check_time = SysTimeGet(); + //sts_pir_duration_check_time = SysTimeGet(); lowIn = sts_pir_duration_check_time.Seconds; takeLowTime = false; } - sts_pir_duration_check_time = SysTimeGet(); - if ((!lockLow && (sts_pir_duration_check_time.Seconds - lowIn) > 5)) + + if ((!lockLow && (sts_pir_duration_check_time.Seconds - lowIn) > 10)) + //if ((!lockLow && (sts_pir_duration_check_time.Seconds - sts_pir_start_time.Seconds) > 10)) { PIRValue = 0; lockLow = true; @@ -814,8 +816,14 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) APP_LOG(TS_OFF, VLEVEL_M, "\r\n PIRValue=%d \r\n", PIRValue); if (sts_pir_read != prev_sts_pir_state) { sts_pir_state_changed = 1; + } else { + sts_pir_state_changed = 0; } prev_sts_pir_state = sts_pir_read; + } else { + PIRValue = 1; + sts_pir_read = 1; + } } // HAL_Delay(50); @@ -1814,7 +1822,7 @@ static void OnYunhornSTSLampBarColorTimerEvent(void *context) r_b = !r_b; } - UTIL_TIMER_Start(&STSLampBarColorTimer); + UTIL_TIMER_Start(&STSLampBarColorTimer); #if 0 #if defined(STS_O6)||defined(O1L) UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP3), CFG_SEQ_Prio_0); diff --git a/STM32CubeIDE/Release/WLE5CC_NODE_STS.bin b/STM32CubeIDE/Release/WLE5CC_NODE_STS.bin index 71469fd6e51428f9e5ec14d81ee00231427bfcd0..7c250b67c6eebd2ec5b2ecb4bdc2ac9168f9e403 100644 GIT binary patch delta 10641 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 EKP2mq#Q*>R delta 10350 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 RgSWEGe2UgIcNoDz_rGDa&^Q19 delta 43844 zcmb5X3s@9o8~^{z&H{^q98D0BUGRV+3W|maiin5;o=YuAJSCPWnkJRDm{eL)+F;|c zw6wIOFeJ3ZLs_rBY3UojX~~RPF476SCVcR?SF1U_t$_(F5W{1_Ur!a(Kb1=nD$0lZTX#cl;81s*1 z#}uX~IFZ?q#867dnvf&X(agbN`~Tf51N|Z-qcY7eL^75y#eeCK^7a19+@+=Ep24>z z>4oyT&Tcw*v~-yxr75#QfAIcan+VsxnPhU?-O+Mh8PWBu6sdF!na)gQcD29~dV|y5<(8*%XJAV#71Nbidatg?$%{Ol~&p6PD3U zera-vwCD5Kpcwj?EQ zo{{laWB<-G+%3D5MKKZ5N@YXLXumtH#(lcTz#|JSl3wcOZh1oaGiH$#qRfb$L4`OT z`%I^w>VK(Uy-sYpP%mP>{kxqAO8M~9K+E^ag#OXedBxm+kz`ix_FpOmDRT#e1$StR zOqIfYO~`ng6h5xDaK<>xx+D}-d1pXq$I~t2YEwE%d&q_gctw88-SU-kc0fSXK`0`5 zT&+Ifz8XPlX^U@!v?nqZ-h)oxkW<_(I~AX}jx#p3BsuI4$|dfW^)2D4KBfmy8S#zu ze{LhOJC0%+>Hl;qd*CRtk^WDyGI<)U{^P)=)L!7AM*2TWc`42mlF}Houj;xXNm!mb zV5ln638RP+Nm81JWwvrGF2H9-b5OW2>2?QNvYI_Ck1D^#jgmfAq6UTxd8pN}Z}DfX z*FxyDG#M(~EInJ=>MGjW>Y7@GWko|yH0#qP<5%^o1r@}@a^avjBJ^Uan`H-DikszaWMK-j zw6DIc?t^AqVdoqsnaFV-abQMObG*8Q5=xd=aI4Y^qzTG1bG;uikCM?N3WXVnIPir0yP;3?(yuV0ZU=w^R{%?`&MSl_@2@cC1kKk zdRj>w{EoCrsTthQ9DTzw+&$GNH6(3asxXbKt(+NPx!W8xMs)9!Dk3}@<-2~CLLaXq zfu=}PczvL+yWOI{Ymi_yMjFHG{e;18mG4Tj{;scGF+`E3zbol~IvX^w;@7~*ERcUTCo{T>x=W86OSHAzZ<GdrRivW+l6@X7dLuU-IoM~*U`=&uybPWNP<4q=ES6%l_g6)eX$bV*(Fo+~EHNbNH3qu7u zR727~2L^0R_Bvmt{5B+7nxyz8gn0kl;FjuUxzga4;%50-8JsYq*G`O|Zk7)kQj**( zAL4(XocJpAgZ#EI$waBAeSvO_eTwo`!h@bKH@I2WVtZ4O6Gsgf4e}miDh)=4v9+z9F zCm&GS4~@VO(QoKrX^}E-Xh_Jawl3kORKsoza4B+0faUqNIIz#|0LwGVJ41uBTN)_b z<7jtnW{|eJu}z{|7stGkVzB6}sf}pLiFhEbLx~7C zV7@WLoxag7<@60N=ucWh4Ny7`i}G-@`gT@E4I3zZrK}j1CsivqhlTdMc*xc(b*Ykx zdTF(teJj?M^}(>GPnD2MlqIQ`$3AP0URS0knWPVtl}X)4mK?H<6ls#l!}7ZIxW2+C zvv0w72Rme7hI_E*thTyGan6g{P_jkTJF^>&sXb?TSVEfnqh@so_mpxosk_vm_ze#U z-F8R_-wO8(or!$MH0w;sU5u&JHasi|%IM+I<~nPc+8WxY36rN~0cP8_y7~qWE4^Z+ zyA67bJj0tEE&s+rLluodB1I(SSG-l`o*Ia9$tcy8mUtW)aP&({|Jjw~F#$sA!ierRs22&nRCdn$bVb2+f?tC=4R>I@V_KEbaZZRRG~+>zhzvTdjux1@W|As^6%z*TI6PN z(2`%$;1(k(B@Ox*p@?w*biY&?F$`$+Ly3Ac`ljj1s;=i_$T5B{!aG2v_`9|Kb`2An zuP{d1bNm!)rwfh?vEPR6^QR@V;U^rNKy{R1JBDMN&(W=Q&m9&P*^pn+73Yhpfw{#H=mX+l*w8DY4O6@?$r`m5S!|0SfMCnf!L@- zF%?_N+Um+0)2tnv8ve^oo|Z?NXkvW+tZsK(-I6B5Zk^>FWkc#m<{|ZlgHl99e)o)7 z&&}HBY5BQPiZq<1A^Z1w)BW=s)Do87IqgD$KqIYflu{2I?2;~pQ%0j&M7Pe!+xPXI z(}U82b9W@iA2A{HxQ33f`Zt7N8u5wv@|t_>A7?!+?>Fj^i{H;sRXz8#FqJ7sMzxpR zm2XFxA|@mMR4!_Vvv4d~W**M3@Xhp1>r>FTpqpoaWv$|q)=BzK>6tcAdRNI#i^2f4 zCN0sty4l;hHj~qTK>e&l*p1lQEkzuW<19kwbwrmg+fTsaL%m=hg3Y7ChjLioA-!|1 zzIWjH&bdw@g;1kM8JUXem7CY57KZe)O<_J58ZTRH~;Wx>%ENQ%;W# z>u|40ga_E0@1IRd+wmgbs1k+r%W_t-wIDlw6bzc$AIl$NHNk` zU3%>`qGFtnNv5j?So1<}r zJew`2nxk;2NA~~K+#5$UuziV>D;Yg4kxf0)t?QYl?xTC4(@k#bj{k!jA3$XPX^lu1 zrl10YWldZ7XcQpbGdCRF!rv0yYJ~n}YkRC2Fkl#ZJcI6tZ4I^$v3-l}7Pi}Q!Z4W5 zR}BtQu%8hx3^e+9W4{sY-4pvl?6*Ou{=DrwVR&|sFsyk<7;2Pl86jrR!NS@zo~}sB zNE$mllZGB67D2Nb`y1QpL_G~a#E*en>+0!Z*UFQuYysQ!bSq!S)tpTq(fAhpFM)0P z5G$X*AAW$9&zNypv$LfeYRwn57K%AtmU9?LD`oe@ zxQ4S!FywX4zjtjmDs5ET;`GIt7jsOh<8XE3X4%vbncu5mVfw-`ClBgO!TEmq3o^nB zq6#)A*PIdIQ3XQrOMTMX-#=`SEFD^G!^)w?sDhtAjmZD@T3~*c{HxZOJGVWSZc4qF zV~aPh;qeSNW4>e=tn3>b;kltP0s*4(cPcewLmwPB*3FXKkenWwe=#SjK#Kb1(_UxO z(>oV*F8`%Iay_;kYwAV5ZZF0_gE4hgy(sjz9BnF5V#jqdk7!65)2kq$U{i9?kq7fB z8v*$V)&fQq$d)!w5%u8NU+OOv#*f>Gy9K(vllD=aZEPyJE{nMI)%9ZCD>w?uvDT#3 zO5AgFdkU@l_FxnS!lRwtA_Ff(;BujJzE^(l{19t3SZDcci`-zmpMf}g2B@Aycvt&S z{a3wYx!61a1vA$MeL^)Bn{PcKqx>z+2R{xJMp~&~!Ks$8>9BnWTX&pdrQ7&!9mn7x z7UOdyHeYOguw^OP<3s)CV^YpND50_0=CF5_*T#pry;*Otge#wn5AM0D{+DaC9-!Hj zW~JqbiDsny3b)kNWnQVn%j2lIDu0eom&PbVCItJOY!%(T?}mxu`mpf^i$R$+VF>P` zyfdNW;5Dtguk}rR{~GoDf+ETAKH?gHoGbw=INpZMx5Aia%y_lT-|}{o5wo^#w?A$X z+@28H>3Y5HL%m5tFYn$Kkt+>|$ninSrxnx0fRI(KB7Am4S<~N^h}`0OPeD!06HUy| za#R^NF?iZ-#7wFDg?)$gfC_<|L;BP%sa}X76PIJ{us_@6iT@>-d}u!QOWoh}cdgFo zhK}iHQQCAg{~X!=vLt9BK zx8c|tZlK*i{R?q~`l<&m@)RX@Qm{|5?GhAgQ=02%D$^$AnGUx|d*V}1*Xs-QmID|F zhT~S8-g2QeGBq5RXL_t#uTAP{I*KxT(yTT?Z~43x=e0@-w_Fq9GHiv5^p-NE-{k4i zm&zNHyL&&|mYk}`MP5v*pQTtiHn~%97Yx&36&*4}L_)X@mub2IGnYmzZLM3c+@0L1 zV?c9RW8vSAdCppDop+BM$5~pZgg&hJQcW5vBolQ>z2(;y<>Tnl=-)z>=pw$wGZ7!P`<6^74C#c{LZHKnuksM2#v1a3^GPkBuT z)A=d0rSFx*sS(mfWyaK=QYU52)G%)a_j2~M(&*S)=dDysy*J(;_XxwRJ;Tr9)hxON zT6}c+vjb9TQR|20aL0OS2=$&$Rv#(O&(hG8)aT||T4@AWo5fw6WdKq``n$N^D`vvk_VD$N8IoRH-yx~I z{!%-mQvYjAalLQMgUYT)W2HXIkB{~m5}q#JqC{pj={}524M5|6zfspmIx7zL!8k!> z46&DDVpF@a{3^Lm*jZ0AM#9vf_S>v8PbJ)FGlC_r3iVZ0bDjJL4e26uQ)GF-uN z02<>PxJ~y?gC7RWNB7~HJ0I8Tm~kj&FLV#u8=Kohm3p^3OG6i$o;}^>Mjdk14;_RS zWo>m^zxXjg7_$*K(lr~G<3QibT;ZN7pE2|@U>3=*`l=vhOw14(WdjQSx%O4T7b&=sV{}JbV0E`Q|E_wwO5m%~kqU&x#F1`kN#4BK*pybWgbGd6GdMvVxq@Hrz?B2lJj;ohoaR9lOKlc*woHxhHyX2nx>#J z1`H-NhUO#JUmf&M&&vPins55n{I9P0q+iTGdd)k%%c81lUg=qjKEKv3ee0siYo6&B z7wyNfXSg1B=3#Th^dpXISj-OlD3{O#e%CTkF16R?eH{*9t3ngsiZ6Co1>m&GnlCA}fV2!2Wq9@5v9Q z?XX*`vG=HGsT+*3$k&AXT$ZU#I%7-SJuG55y>+8NNPPB(&j8E6S@OQ@{tZ0;T~xlf;C;OmUmm z~!id9PAoTT$;Dc31obUyXCeGrkmCHFCpo97zq?kdq6mPr-L zt_@+*F6HYDXMGav`p+I$p$}Acy;UxKUp`IkE@7rKZwy1`-r2a!O_LqOKt6Y+PDu3*Qemczhuk8sT+nx)O^e<)QN1>e#)E9>6 zBJW&~jep_Bz^R{ghCUZ{hMh{qN5AP#{j6->+XLwy+xwFAt1_x|q;yOvE?pM-QkzHW zf9p$PHhCo7-Bnm$x1#N<5WlE<7xb6v>y{~|k30Izheuo8$W{?~@JxN(9A)Ik!+b_s zZ9%YYI9p#gR8cYiJRX!)l-Tq`t0en^OI8l6On1N9uswN8Q}2>+9+i(Eu%mKg!w`54Usmb$gY{PeQ%7 z!EZ?JPi|iDQkBb}3_+s|Eeq}RWb0QUBS!vn;qLFh*C zMUOqBiyDVprk!)cErp9a=L|sP|0ogrhW9+zLbuJUnnmP`uzlAeLfS?CbKzlxKhcte zqC5PSyTx5PCyen`^>u@k z_de^TGc_sSefEH^W0UgxXU|9r%d;!D>7>I-)4@_{RQaCI>)fS^@*T$(Nz#(?fUgF+ zwM*Y843*gK?kk^o;y*gid!OU8^e=>Av=aU8Na>;Sr@xJsrT3H_-wlw~E9bs5>!vg+ zUCs3gg(Om#_TaQ#xs0 z`Rz-pq`O?Gy!`6|&(YrsLs}}X@syTdmznmR5{7->3xiZG44F7KLKz$(849ouhG%T~ zhTp7FNWb^g>u#Jc@BPO_om5u7;@042sH+)%_-!Z`=?D&p(7=0Jhkh!Y~cn4QxKQgkdSRUDyWP z7KSivuV7nqM;J=6?}&ZupYX@F9$O8z5s2&mWqbaPD355AWvQgRXG@JvDyeXjK5`ql z&4On*t|3Zn+x{mE*>{D(8{1$U$Bh!kqRTqN!OJ*Z*v{4n!$|By)vIpOB&kRp>`uGN zVt2&kMxK@G<@Qo=daJOyjoNFji1yRl~j2-Pzq^}eM^`$ zOO|$4&WMoS^FyR=1Eoox%WHIoENn%UGX_fOl4&xIQ?O-V3u4c+2!iCcUO&Zy^ zL(i(*^N{qO-dztqez9`mFlne9@=KGH8ku^ht``>ecj|gH-Kh&|lr2BC+^MUr{3uzf zkvxmwK6|BPSf#E{kwT<*DoazO=k?Oo%3hOJj>CejH)1_;Y^o-hThIGxX z5M`ZQ*>R@yy{`9bt8A+{M{EgM!YHu41N&}lpJMw0+woOuhdI&`X?5kQInq2yDy_Wz z1WF+ttMr>EWlGZH>hve2jymra^_eH7-qJhjjwhv2QmlI8Nokt&p*rFz=_P5ddh#i$ zLVBXoJYQO`leVaS3#E?Ir)tlI(q+lF(lcLLD7ocgjZvzuSR_3yy`b?SLK*t26=UX9X{5EgnsP~?vi?N_l32H-u6b6sr zXVJ0~R9weChTX|$rBASX_Bm+)cBRirtE7a=*yquFq?*d%%VG7bMpgZcO{gnYNGqf= zwP}T9>QIXZupC?cZ))!sr2cBo3sMiye>aM75%EV|qx!}R(m>CT?D(^K`UR=GRHFWk zo##rsbzh~)EDh01ftA^-q}%RtfptZ$bC(*QvUpZYO zRh}-<)lGeX>t8@4{i~IgKi$@~lg+2mc5wkG#!g9}{u7R6+i~nQ9P4ez{cCaTW;-5$ zsx;7}Y4DHhfMXBa@xTxqu`x9>EldQ)+bUb!a%sklf2%LCyIRv2q@cr%z$$vAWVnod z#aP^jhwXB@WSBNaGK@@?40p%lcHlV4uoU)e_;_P~mBL_Cux)_PdTejt_%&<;5!VcC zD{<^S5tjAB? zP8xkVN*Mh52tzMy8?c=nC=4@jcYhA<_}|9ef0RbF;CLVIRNqSyhT%9~1bZm1#?;eh?!Zt@eE6G1fDe4}b z+*6vZp2f~>V;)Y5x=)q^R9{&(NW0ZwS&nkEz^u2KEjn4R=E$<%trkXin{hiC3t{wZ zgb}w~#VB>3PVS_Vx0@bq@By_{mct}t|L^m^jA$lkNWZT1$;>@o)J5#$9;uiWU z?Pc4el#H#9P73PBHl5n2U~DxD^zZ+<%deYL@Z_S^LFfc!D~qua{0QS{@B+rM;3pX; zf}dkN8eGCS*oCJEB)VL^?Lp;My$$j>|9X42h42)c;f`!BFvw&59mNsI?SEmf{Z0MO zAP>bL4tKe)1h%?QfMs z{pGQGsZV9`1M(;GgreSBEl@63Ge$1OM#iLXci}UP$^W8S+*$5ty5wT6XH3yFt2J;l z_d%}#;ZG-?!cY?pHd;w1D7G}FQ?Lxiufm@mFp6RR1xzRZ<%}u5GmKR?p}rO(`2bFs57fWy2#!GNjT#yh-$_Z(Iv*@e?`si zBKPyNFf+MfG1Wy5GZjT^*(UQ|#uWOHS_8KUN12)2jD59W%vA3su`1hNzLnud|z=f<6)Hh#iL+ej443tZJzJxJ!8Z4s2 zyj@Q9^}Faj4Aw7wJHovDzZo$RLGp5wuGUrWVv`BU`(Yr%9w&J z$0`Lo{MmZWTE?UwRr8GUu-M}+=4!?i?Rmx&%&68F#?|nrM=rR3J=4j*nep%Nr?pqL7QaqxSEIYh<0hOL zsGXijDXLIED`fYmB2f*U>Tu@1Adqj(op z@9uKga6`Q2_A1=yIT2dr*ehLlG5urc^gPLAyH0Iyyqeb?(`XKJ`vY$D_zAC^`Anxm zIBaIJwI{%pg~62_!oVoc#{8T)#QiQ*m%_156F$~c1z z0j-u`T=~%h4?!Ra>raZ{7Skz#{AA`2Uai(dqFiT~ncU7Zrf4oQCOu|^b2M>`Nl#!* z;gcAXp6kq&kM)vGl2o9s=q(@d%XbzKb!Fsq%Za|13BzxOcBgab539#W6~qXIP2pXlfE|HS>MZe z3Jqh;%s?6N%FqH(1WQ~vM%~sIT`4Wo+3hG}islSsistxO&7bs(j7je^&RJj0nDmW| z5q_e$$PDCQoah`u24m89PIlJMFeW`gE$$~DF|V7VxskbKs>YP>GRD?qr#b8KjIGHs zrtpUtliuY~r|@!{8q3NK{36c7WbFKCSGCw+i)Z7DtIkq$E2V0 zm{S5GpYaj+F9Ppm{`HTkt^MV`et}t9ILb#iHE{rD!<@&R&1V=>uCBOnEn|u%GDi!4 z6Uo1;mLgj7RAwf(b&M(662_!&XH5ET#-ta{(vl(l5@XV1W@|cFO^=f&=)Nve-;R?H z`)zaDbLB@EN(d)MEC+H2l2WKZ(r!F>++rX z`XY^~w%0D!m@>G|i81xm?8*bOnTb0&iZ5*&VNqR$zLqjIG8SI z^xOdc!-Z$AU;&_Sbm7B{DS>#k_#q6D|1dM7+>j0;b7;U`>pt(rFkE4TNVnQ})DvtWlm*?KqB3m?LB?xR)>!FqJJORzJHDROUgV^k#Q|r72z*I%paAsp___;ET@^_cTSmu0?OHYsM6Oqnei__lw=`Vm`pw8Y^Q8HeNlQL~FV? zwAjhKd!5D()E#8(ny(3xDjwM;RkNSyZoA7YxUIf1U};P>UD9jyp+|ky@s| z4E-Ls5A2R5beA`sGiGGG3H~Nx`&3Ku85PaH)EifMCKw*EM@SCOFo#o!U>W!srr%=v zHR!j&6PZ4=L`#6;OLE~qoOl+NmQDubaDx^BRsET_G^Plv8I!(xqqDxwh2K(dC(B{} zn_bMmZ&bUEkh}WDY;q3%s+u_h_bWFtGo`YVG38>nnl}PN@a_?E;Ed}`Bi~xap)6^D9D?SBxy$hMP2#*S^1Y^*+Kbov%dJ*(u7kwksRp^_*{w(~5 zOfQH2k#l$q_sroNI2;65+asXN=WlT?+*-z@XKi)Xa~YFf#Fz@dnz8k+MAuT7*hlm#-xw`NXr1}QyG(fh%xEM8Ivyd^6+>{%Ak6WmcwQw zIoXBy)P*BUc{p@47jAXo%^y4a3$+xP0CEdtL*t{nA!hUt|3YQ|UKe-1pK z`Nx-O@sWQLx_J>y_}4M;Q}Q2S=!R*g8QMMRF1 z8B0D=Ag7EYt zyyF(q9$$2QdMqBdDXj?}g2QNV8p}W}i+~b%2s(E7v)#r?aN$%J##@D){MRx5w=eFJ ztcSrdcu@j7nFH}|##Ewphn*wb&iEG;fF7?uWzC-LqqW>4&i?Zm|7k{mJQ$9%0DX=+ z2Z&)T@Qgq#csIN8bn2M1|9Qrp;7`x|?_~b@UuphkD&cZwpc3YOtvQgs&V}Q@an=q0 za^}S@T+Nu`KY!xBe-G=Yi`O-S^_EEF$@>mgp06g3LvQcH%%f1SXmASRa}1lgOrHUr zzTQCRo^E^Qfr}VZx$>Dm@nRQV;>^k78E1pg{aec?MbOuU7r5}pYUp?@%Pq|O3i5Rq z9EsqLas;Z`zt9nn6 zhYjy`N=uE*X^bgY2IEBZ7y8}?pR;zV#S`SP@G|B$GyosYgZX&Td`kUpf;`l0IPILA zFJnqB(1jBiQ}$*vCjVTJyg_^qX83|%LR)Z&R~Q(K+w!orxsH8ZAoi@tY`ceM+b zF*Z{9!5b0Iac<+!IE7CZY0N+gEMZI;C~)D8jLAPq&6|WzwR8TX#Y^V>>Nc27CtS=i zKWJ|MM)oAN25u9wn3+NsFs4ity6~GWypu77KcIR~mP6*y;VC9jRA(5I-prVEQLW{W z^y7?4zs{KS4E6M6xy>~GoEGd=Tno~}(vC|?a+|8&ewYf%+z!Bvo~Pz+vzbn*~7R!vQ^%?zrVc z0ZyD(-<~3m4L`*k^N}%nK%G~3^?9|!RJw)4{I_Pzger`SsAns}rS`%RW1tkE! zU!@3_!F2M^Vq6V>`o6Et-)x(ww=xF`u$M8_Ks961FES?m7Gu&aj7gt;&$$3)4vs{n zki$`j0Zb7bXH0snT9bpP5;N4$85oqZ{?Vc%HK zlQF`ZMNFd>fE;R@G^PYZv&N)fYSozZdd8&3w>j$xj7i_?#2B9P)x?>oh_#aAs};6t z+^E->(mBDH;wf-*)?a2!dbPn>zrvXG6YZV!5#l^Ekb|LvlYcHk;B~R)I_S;PoP=$@zYKLnU6B2 zGj@tG>0SIaf6|SNNsnhtdIDq8Co_hQhnksz9M-D0k*^86nVI6*%b47J1Dx{_$e8qQ zjOl?kJZLu;-%pHW=INb;=mn00yJNh^*Er_VsKwkUwnD~~nBkud3#@NXFatT94^&%o<-X>N z%)Y)8mI&Y%pgSs1baX0-c$D!j_&)}AteYt#hnap5`VsI^dwir9KA^>Sq7&N7N*MU6 zHbJeLhckxXt1!SFe>(9C;u#4}u##=K9m{lzcOv5{;N^_1=`wCYd@I5GS$r`;T6*v| zi#TQo48r%cz)#o%P=s5VP6?i3OnNnA(l0S4{R(5!>lp`&2+U(n1~i#qEr%2!S8aI` z6_xK|E@DjStY%EX5;|+qkeEuN37-{WD

xzKm}4I> zIh$W_;X5w;xaysU*y1C!V3c->nh0}jnu|G?G38}GV+yuhEzZNWbs;m8+iDly?7}-; z_+uA7?7}BpxZ0WV7^|~EG`nzMH?6po!Tv5h)P={m@FOlf(}@S*w!D)8bBGJ?WK0#e zTfMyiU12XXZ$XzW1+xoUaf0cT?`p=o;eQT18Ft6m*QL8w&I;)C+8P>^=+lMcV0!C~ z(awmkzldZ3C|?gTrUVx=CVjqIwNMUArkCwF;?={CUcBSrZeV(Sj)N(hk{(*VD4OFv z)UNqhew}i$=l0b6DBKdp6t0jl>8BWz-prVE5vj#T`c%fy&0;n)kV8T*EdWI@nK9{E zy`A-Z#-v}2a@H@o@B@9gu6AA|cd%YnW;xk$^VEfBGqx5an#Tiw#-tniI_qAHNsrff ziuD>QK{HtSfD1P>rU-odX$fSYrs#!8Nw8B(TLM0QQSG`|?i))j4rct>o+Q4w*b&ag zueqGDwd#t+7>I&c^mHB;yKs>Uf2LL;nAtbR5xecmFrG2xS|97I2fA>Y3twVP;cqdf zY+0PyEE=5+VoZPM1edsQD z53{Ie4$*L+H-gb3kh&SNFGQl20pbT-IN61FG9HBZc7byd&M|=)hVuAu!_CXdfCOB4 zvI}Pn(;}dn#5-f{{oi)Ra~YFf$e0RH#CXcXFl=Q8a@fw8BDlqvbPHqBy^@?W;G3lO zU53ku1Q&Y}V+xnWnBvW0JOMQ~1AGd0N6i_BJEzmfg|iqVe*gP#7s9Ayy{olVjV{3Q zuf*98Ei|tHPkn87F`r>f**ovTw_I4@{ZVkkpY1&OGN$4tskf2(@Dyf#8l|LnTj{NV zY{Al)z6LtIVa{mRDViKL`&sn+T;{e7Zu4B+3Ykv1U(I+Q{ON61JlVBO{|b7si@uKO zzjQ{wp?7WZ2uhg44MafiCXSQ}ILyB`1dolhJ0q7lV{FLM}oieb5 z@xS3u?{>p|iTedw&Gd87>78)6Uk-h)t+Q-r4wvCTFOn;7{XfSoo=G&2n_M9OmYaHbL)|bKH1{1k-!#_@`MLnLm|tD`U!58Dr8vV@&!L z#?Z~;Ix`GHg7o6L0(`FP7#aoj1faL_t!4pEr1Jo1T8x*$pWftG%`&`oth4`q#;f5^ZvcGGnmjTv5C<{iv;bS+ zK(7Kk$}&*IbSm-r@#@DfV0~d3uZ7!(aP%5M{&`*X1Wi8*eKI;VwE#z_zR2`{L#NjV zI@TYQj((yRo@(BU@qfGEDRO%E;0adpIOaeBQW#T&+tEa^!=J5*S2HI4k_%5(OU?3h z6TL#!8p?hZu!hwKCG)BpU5I7a6_?PrCaaGZVy?Eh*aIJS&P5Po%0&WWiav?)Jyg?h za3t)Gp(&T?6n-mXgg1-r%s>u@7*hgAUAUSt`PVWg|9Zxx2R-6kpe~H9-^GY$28tko zF-0(yG3i+@oXeQ}ix`vtYR07RWE@PNyY6NNa=6ZzBDlqv^uQ_3B?@9pdJle6uIy%#*~0@s&fXqF(!Q~V~Q_}G3ogl+dg+)q8Y49?-yKnwF_@|;WIA$ zmkY;D(=tpMSbLvG*{75H1{)uD;X5uI^r&-$Me6BQ^c$h*OLyAGM50uXo{F zk2xpPAxmTO_h*dwl0_Laki#Lyl;E$7N&lTO=}XkAA~`H-dA4&p8yS<^evQ>1i{$QR z-^ZN;1i5euV`~JAt@(7}D=yq&x^w)2j1iwKx=dFWyd-yim?Dp4B1PVZG3jxPNsnht zI(~@AX&}by^Inq2nU}km3mH?e)r=|HwTwwGVNCi)#-#6LO!{ud(EE#1%rGDnb3Lx0 z%i!pkvCc4^B1}_5U%_YfzG~tt@ar@EL6 z8B?x`7*is98IxYdnDi^N)H|=rL-E5~5=fo0RcnM=<&Mb~H14VG0G3DNCu5*OGj7g7YOyLt4lb(^Qg(ucO?O<7~ z>8iGS9d8|&?c$TKM!$}GA_Xqy-Ha)zy^Ja9LySp3%9!+vj7i5ESYOA488gq3BipF(!RKW6}>WCjAs+($6r4K0+is>70QS#uPz5V~Su2W72D%RNsCBZ*yvP zvB#@5Z(!_AQCny?TMb=@-9|MLJOAByWj2E1&(;|)<*5tS$z64pJoRK#Ujr1%SN2(SB^N-FCKBG zZ|ZQSZ}Kqqw?6sD4EUIMn<9s`Kd$+ym5SVb27Oq@{piCr&h#N3=dG?x_q45lwvSY- zH^mu`S2Ig+3!i@4fxFQULU2B6f7>~&RF0rlE7ffXCT&owuru!%CRv{X^hbN>VMMn_ zDX_zLz3_{jIG}gNM}kRD0n^V0(7g=eY_JLQzL%YsfiL&AJ*7?h%iwuk*&g_(=4YKs5MC4d=3j#x&cP!I+)j>O498703N5< z1l?%oUf{1kvVE0|{D*+gt-;UK+VwQ>QY;SWmLcg=!8=fRqn#IkNBh|BS(3gw0{=4A zVinKAor_RER0QBVA|&e@4TxjFi5S@< zanpl%IQSUS$M;OEJQ@7b04=^8@J&|x&vwIw!3um4-;v?h;jm%0?dt*Ih;RpZ-)gNM zKLc-L{@;SD)Z&e(?oRluRBunW73OJb70jl&W?|@IH;?Hq#M9j*>(~A%yIJ6sY74pD z#V2eCWX*L6%okWL_kpLViJS1SM+*v1D>n-LJItFp+dhdW_Czwf*4w@^N*n^t#`Q7X zZY7QehpO8UjhTL4m|oCD=2bAC#>Ev)@5CFyb1)1$TI6={tQEpA$gY15zKyG1x(`kM z-+{9OZ3|E0KfnuFn`iPep zJn-88k2lMGO~qSm&xTXf$KXXj4nns>iGKnwQd|t>1CSiEg&a=QH5MBqSlfD#u@&nsf4Jes4;Nd00@S)xRE$~gS!+&?AP(Rut zoBVjosfN=rwPp)yn|`{IIZXX3+B6cBKoLo%V!NZ zS3ON`XOp$zr(%!UQ})W62%hnpurB*4+F4-wbr478EdyVU zlI}O%H^F<*u^ipB5_QaY5a@xGr=#s(fx~NPIgWha19uG2 zYTpN)=r>>W@wer!Gic&NWm-q+1lYgEeG(MQ+6pFtd40_RAHi8{XV;g36a8%;wNSyf z5aW^J@n~|yAA|3zHE&~P@>5&hmiy_N^3=ZX;LGlrFAD1?wdAFbMktnhA8;S6bE$YV zcNoF9JF73eBlnfE)zWv+`8KFE?_ex@`lQyn55jAJ>b)IidOur|J@6fvH>io*@ocGI zj5gg3#j3vwqk)&bBvZj7)nbH}uBxT*_TPnXH99Kzy!FFt_0D#=>+k^>C>?gMenLbd zr*xtyr#-=D+_-YoPYT!vQ@i6tJ`UcaX6`_1?U;(`%6>jSg!%4=_yu}-{4SQgo6zGO(Zs|engi-#3U<1u`akTYBWlaL zSYlSGiSOZD*NjycyeD^^kd7MbU{7pRe`IDA-u7)TdN%kZX1)Zwz7%{lNNd{oWdbpL zgtm++1qZ7&?_qT_8fART9;^js`q?IA)!Ohn;Gwe}yM$qhoqK?5?y7xvB0DR-!pLlI zpc7&5h-Tmjw;24=ENzH>8Qf{8WEg6XXBXHnNo(*`;D^<1J8`D6*iw|l}V*uZ6cZvj; zvrG;JM`J*D)YQY^JxJ6s=FJ6vjc=MbPUO?zVq9H2GEoG6_I+*D`qn_?Wgh}KO7R{X zHmKR}V=YeC7N;;KQJ1<0^Cqlxj@$F)k1>u9Nm1aAYAJ#Zr{CY2YD9KPbeX=o^l{)(N}@9o{h@ zB!Zt+^AL^MWWRc&Gqwz7?+jFqJ+-yqXg}-E3R|On7d#J_5MAua90b#^jQQI640tpu z&r$i;h%pX3x@ZeHd!#l5M8xB|cp&mQ-yXqWboSru-H?_JX<%N?Y2fvXZC}Zx4C99f z#Gk(E*xhp9@T>TE$ni{`BiweeCwXDf~Y5JB0V6D@U4P z=xoLgM!!_O_h2mPj>+MT0zPM){ zx~Lduz%95g!0>GK{|$T@Lz|->{{)ZzR2T~Ey6z#YSkZ_bZLS?S8><}0P#N(M@^}`n zz(qzTR^e$SM+J|E<4e)DgsFb;%LHN+-YVi~UdzA@m~b5@Oa)iGDhzw=3BM1%wox7X zA>y5nYr`PesXl&zUH-RLZw=tDSg#8ng7L>>`yigu9RyY|G5Oo$O#$D_Qx7BF;k{7* zj`RH#?0ay&9p_^ScRiw%ebEeHxYn*jZ1gZlPfG{Ig&F-{>}O8hI>V_&y@hmiOj`LQ!p2j+>l!&I>h z%aXPBcw@lZFrlGCSmR3uf9<2y<-_1obOobbUoaGjEL9UraVkR9Z0y2K_=??Zdv^YS zyEj_=a=W|RFtqqt>f5E5efOzVaCchWFNOTIdb`$QjVaRmEy=gcN*u^lL=?C2?3A$`J2Xhk^ z2IIkWx|+Z{aQYm<+9x9z+Lqp~M}m14hl8&^uB}%lfKQ@h8SMUf;6CWUNnq;0&nIJ~ zt%=g+QCtUzO=obU!#-qf1+QU~aT$0pCY}U)gjL{kW_3Xs+Fdcb3)BdEdVg&x-f;x# zYOgi|MT1W#Xluws@Pski#o#pXxnkS*p{XL4Q22k@UfD&w8hiuSBv0D&@zw~G#ydsr zun)_>rRda-G4Tu>JF1EMFfX5cNsCX1-fUt^{~++UtSt-#Z%~U7%)EtNG0cY958aCf zK+484@JKAc9Q+nI8*kWhRNqJ7(VMkm9|u?M!1bTKde4Ige<%zG?D1U(7vn}qH#@tH zL^3VkY5g%|BwdRqeu}1BjNzcO-7gj9dsxo6+xcPeKJ)<0|JHmireNsSIxscmwcr`* zHbi6Yj>>ZM?r+I0SS!vQa7PSXUG34dfzROr(vdyCRLmQUdx7u9WA%e{sCp8?v1_#A zOaKoTfymDNDOpDWc(`}gVveB^- zyihHLn;-qMX^cJgm{FM4)EbzjPHGE9a+00$ZBRSmn%>cJO2H%5#Qmu1W0-_0^vW;=IG6ZmDZZTs=`=Sj2_$K0I@^D4DwKZb{;YG?(TC;b?w zW7z!_>fL>|7kf}e{t4!Z%A@HLE02OrW9$7Sn59J9gK88k3tWM9(dYKOECJ6@s}O8B z{UWTd-CPdy22`h`k9{?mmu(BUYMQp{*$+O5$==ZhPJxH8#mn_E_#mtM%i8s4 ztxJUZbS#$H*c1u2-tQkTSqH&~z*Sh4I8MzY;2r1{j%M>T*o;+7zCFY1z%Bc=vFq!8 zGA$IcD^VYt)D_rGNN0`Q0{4}DwOiLM;L(}d?Ub$=LVS-Y)KOpk!M8EyIO=maI9k13 ziHo$QI7vo(E*8W5b$~Xhtp`7=CLTaLqn~+otSNti*`%&GfR-YmmCm+@Hf3UpJYak0 zEVYz@V15$Df;+0G5t~%1wj97GwQDdg9I%IW8;j6t_Cb_%FwRtw-JA^bG^|JUcFqKc zvdLp6cn8+6@pe5IoQ;Zi3@6LM8`RT?R(E^2dgmZ6&CmI&9X^-)PB@7Q@v;Z&Iu6O; zcKLie$ACRQ&=yRIVEnZ1{lRcDcn{8hq}~5%@G-UcbM%6*aaEFHH-7~4dR$Vv+xZYU z5v%z=c0L9E0PUK_P^z*Y!2{LXhz5&J?=P^@8IIe;Q|;=o@#uk^uzpd1VtF3+D)a_N=GKC{uzNDw!MkuRo@d3J3An?uQTDKezrk|Vk zvg-@LXR);Nwevb~#VGBr^2gwpaFOSz?(e`C+M`#Y^H4=xo*>jMhh#s~*(Zeo*AZ5u z`$Qq;qDA$va{$;|J$(o*qUJIrl z%Es7gO-wh*xexe*_u#51$*%VTpT$7uXx@Xsi+ZC3_Q^a0JOZQdOuPT=Nw}|Bjz!Ni zcEbud&`)5}KtrpqH^98py$fzDRXZHUsfbR}=8B83Pne-~fF|%Rj4%d!yk3*hhSqAA zYhmCT+|YHj#RtKc*-SSP9I-&_Ku>}bSwCGd8F$(b%YHLUG4(nc-flSUSSaq7?n^Mw z{C~hp2TF!#?6q+jJdEAGzYD&Lxhl|}Y4I>>{|UA05nOxI?@<@n?QyVwSEP=G9sMfr z2u|YdIoj;84l+-6514-C9Ie=T605+y(7*ESd_2m#A-Dl;+p$dF2rgAKkK!=~KYVWH7(p(= z+#Pqy9BI9cPD(%U?TEGk`e-b^9qjvmx;od;sE#NA?B#7Ctx@lT_OqNX9XtI>5gELG4-DeWJz zt<B4HdP!=G81GxHD!-ALjl@1@h+eMU0o5|aKTr%#Wcb)%N%O&IU{*}oq% zmMIGVV};1=a1HYp4A;nfvkU%;;PofiD|dYG zv!pu{D+7Vifb*o@_bZ-+Rt8YP)7z2|v2)s>)WwVK-Q9g@c6F zPM-?wmtoV$m`qNyQPhRwS*)eye9TG~R;ER{0N!F*p(6O%WZ9nP$Juk!Zs@WNd5Ag2 zGQF=2uD4di4!~`ap}MJucn1^6X5K*$;tFEIV!iEWcwm7P^yL->4_A9$En|#j*sUS} z`Bd{2!$ATV=e~t-#&QiS;CyNB`(NC42(edA_MyMQ%bC9151PCl86EIV@tdu64rK;> z)AG!(c5gqCj{?4_IgcO6?tpJbp4o1CJSZJT#)*csk(qO4PY0!_%r{ZSl=;TwnS*CT KgO?F>c>e>_ICK{P diff --git a/STS/Core/Src/yunhorn_sts_process.c b/STS/Core/Src/yunhorn_sts_process.c index 829003e..127da83 100644 --- a/STS/Core/Src/yunhorn_sts_process.c +++ b/STS/Core/Src/yunhorn_sts_process.c @@ -757,47 +757,48 @@ void USER_APP_Parse_CMD_P(uint8_t *parse_buffer, uint8_t parse_buffer_size) case 8: if ((parse_buffer[CFG_CMD4]=='T') && (parse_buffer[CFG_CMD5]>='0')&& (parse_buffer[CFG_CMD5]<='9')) { - uint8_t sts_fhmos_cfg_index = (uint8_t)(parse_buffer[CFG_CMD5]-0x30); - uint8_t sts_fhmos_cfg_value = (parse_buffer[CFG_CMD6]-0x30)*100+(parse_buffer[CFG_CMD7]-0x30)*10+(parse_buffer[CFG_CMD8]-0x30); + uint8_t sts_fhmos_cfg_index = (uint8_t)(parse_buffer[CFG_CMD5]-0x30)&0x0F; // index < 15 + uint8_t sts_fhmos_cfg_value = (uint8_t)(0xff&(parse_buffer[CFG_CMD6]-0x30)*100+(parse_buffer[CFG_CMD7]-0x30)*10+(parse_buffer[CFG_CMD8]-0x30)); APP_LOG(TS_OFF, VLEVEL_M, "\r\nCFG_CMD Index=%d, VALUE =0X%02X =%d \r\n", sts_fhmos_cfg_index, sts_fhmos_cfg_value,sts_fhmos_cfg_value); switch (sts_fhmos_cfg_index) { case 1: // head level height threshold - fhmos_cfg.th_head_level_height_cm = sts_fhmos_cfg_value; + + fhmos_cfg.th_head_level_height_cm = MIN(sts_fhmos_cfg_value, 150); // LIMITED TO 150CM break; case 2: - fhmos_cfg.th_fall_duration_potential_15sec = sts_fhmos_cfg_value; + fhmos_cfg.th_fall_duration_potential_15sec = MIN(sts_fhmos_cfg_value, 99); // POTENTIAL FALL DOWN DURATION break; case 3: - fhmos_cfg.th_fall_duration_confirm_15sec = sts_fhmos_cfg_value; + fhmos_cfg.th_fall_duration_confirm_15sec = MIN(sts_fhmos_cfg_value, 99); // HIGH POTENTIAL FALL DOWN DURATION break; case 4: - fhmos_cfg.th_motionless_short_15sec = sts_fhmos_cfg_value; + fhmos_cfg.th_motionless_short_15sec = MIN(sts_fhmos_cfg_value, 255); // motionless threshold short break; case 5: - fhmos_cfg.th_motionless_long_15sec = sts_fhmos_cfg_value; + fhmos_cfg.th_motionless_long_15sec = MIN(sts_fhmos_cfg_value, 255); // MOTIONLESS THRESHOLD LONG break; case 6: - fhmos_cfg.th_occupancy_overstay_15sec = sts_fhmos_cfg_value; + fhmos_cfg.th_occupancy_overstay_15sec = MIN(sts_fhmos_cfg_value, 255); // OVERSTAY THRESHOLD break; case 7: - fhmos_cfg.th_gesture_mask_off_height_cm = sts_fhmos_cfg_value; + fhmos_cfg.th_gesture_mask_off_height_cm = MIN(sts_fhmos_cfg_value, 100); // MASK OFF HEIGHT break; case 8: - fhmos_cfg.th_fall_body_min_height_cm = sts_fhmos_cfg_value;; + fhmos_cfg.th_fall_body_min_height_cm = MIN(sts_fhmos_cfg_value, 150); // MIN BODY HEIGHT break; case 9: // cmd for upload messages fhmos_cmd.cmd_index = sts_fhmos_cfg_index; fhmos_cmd.cmd_value = sts_fhmos_cfg_value; - STS_FHMOS_sensor_upload_map(sts_fhmos_cfg_value&0x03); + STS_FHMOS_sensor_upload_map(sts_fhmos_cfg_value&0x07); // 02,03,04 break; default: @@ -1990,7 +1991,7 @@ void STS_FHMOS_sensor_upload_map(uint8_t map_index) APP_LOG(TS_OFF, VLEVEL_M, "\r\n +++++++++++++++++++++++ \r\nBitmap Pending to upload flag=%02x index=%d \r\n", sts_fhmos_bitmap_pending, map_index); - uint8_t tstbuf[32] ={0x0}; + uint8_t tstbuf[64] ={0x0}; uint8_t i=0; //tstbuf[i++] = (uint8_t) 'G'; @@ -2037,9 +2038,18 @@ void STS_FHMOS_sensor_upload_map(uint8_t map_index) tstbuf[i++] = (uint8_t) (sts_mask_bitmap[6]); tstbuf[i++] = (uint8_t) (sts_mask_bitmap[7]); + } else if (map_index == 0x04) + { + tstbuf[i++] = (uint8_t) (33)&0xff; //length of following data + tstbuf[i++] = (uint8_t) map_index; // payload type 0x04=Gesture map + // cube + for (uint8_t cc=0; cc<32; cc++) + { + tstbuf[i++] = (uint8_t) (fhmos_gesture.cube[cc]); + } } - APP_LOG(TS_OFF, VLEVEL_M, "\r\n Bitmap uploading, size=%02x\r\n", i); + APP_LOG(TS_OFF, VLEVEL_M, "\r\n Bitmap uploading, size=%02d\r\n", i); int status=STS_SENSOR_Upload_Message(YUNHORN_STS_L8_LORA_APP_DATA_PORT, i, (uint8_t *)tstbuf); if ((map_index ==0x02)&& (status ==0)) {