From 050b345fb1b1edfff89dd0ac0f8a60e81fdbef98 Mon Sep 17 00:00:00 2001 From: Jelmer Date: Sun, 22 Jan 2023 01:45:54 +0100 Subject: [PATCH] TTL support! (Nic's idea) --- ap_fw/main.c | 10 ++++------ ap_fw/zigbeebase0006.bin | Bin 17629 -> 18472 bytes tag_fw/buildfw.sh | 11 +++++++++++ tag_fw/fw154.bin | Bin 32040 -> 32123 bytes tag_fw/fw29.bin | Bin 31818 -> 31902 bytes tag_fw/fw42.bin | Bin 31871 -> 31954 bytes tag_fw/syncedproto.c | 18 ++++++++++++++---- 7 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 tag_fw/buildfw.sh diff --git a/ap_fw/main.c b/ap_fw/main.c index 2a950f94..ceb3f6fe 100644 --- a/ap_fw/main.c +++ b/ap_fw/main.c @@ -72,6 +72,7 @@ struct AvailDataInfo { uint64_t dataVer; uint32_t dataSize; uint8_t dataType; + uint16_t nextCheckIn; } __packed; struct blockPart { @@ -89,7 +90,7 @@ struct blockData { struct pendingData { struct AvailDataInfo availdatainfo; - uint8_t attemptsLeft; + uint16_t attemptsLeft; uint8_t targetMac[8]; } __packed; @@ -98,7 +99,7 @@ struct pendingData { #define BLOCK_DATA_SIZE 4096 #define BLOCK_XFER_BUFFER_SIZE BLOCK_DATA_SIZE + sizeof(struct blockData) #define BLOCK_REQ_PARTS_BYTES 6 // BLOCK_MAX_PARTS / 8 + 1 -#define MAX_PENDING_MACS 10 +#define MAX_PENDING_MACS 64 #define HOUSEKEEPING_INTERVAL 60UL struct pendingData __xdata pendingDataArr[MAX_PENDING_MACS]; @@ -116,10 +117,6 @@ struct blockRequestAck { uint16_t pleaseWaitMs; } __packed; -struct espPendingData { - uint8_t checksum; - struct pendingData pending; -} __packed; struct espBlockRequest { uint8_t checksum; @@ -684,6 +681,7 @@ void main(void) { pendingDataArr[c].attemptsLeft = 0; } else if (pendingDataArr[c].attemptsLeft > 1) { pendingDataArr[c].attemptsLeft--; + if(pendingDataArr[c].availdatainfo.nextCheckIn)pendingDataArr[c].availdatainfo.nextCheckIn--; } } housekeepingTimer = timerGet(); diff --git a/ap_fw/zigbeebase0006.bin b/ap_fw/zigbeebase0006.bin index 7bb5bc7a4d595e474a55a8bd353bf5b3e26a5a4a..6bd4d85f1e2b844c94684c782c59d3e578260ff3 100644 GIT binary patch literal 18472 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 K3H+BO@V^1D}0**?qRyiQA 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 O@~;m)5yih&run}gPweji delta 15201 zcmc(GdwdgB_IPHJG^LcLOeuXqNkf1>p;+E8t1V9p7E(kIY88BabpdsuWf6f6 z3@j*6l!}U4*!_Zw@@PYYj}?^yR#!!tCX)#CHLlwSedTw~ok^M&zrWx9^ZWhUPbM?> zo_o%jbI_uu?b>9nXZ{!XvN_dgs{_BV5OLnm7RLPDvqmu6zrK)J?=Da0Bvs5O`l-5Qv z_lJAzFBePDCV8YX$w+5?x8v%>=!qA$t6#M<6EAF&zqZ=xi5K`}YW(l?02KcWH5>u< zP$YVW7}mCNyLJcDyJUf2L!Qcq{$LT$Mv$A9M)J+&7{(MsKVF+I|kW z0K7aZ_tiu3MZ4U&TNu(}{DHh_&+Ym(`_lYEB8Y}H7tr%d96NY*56wQnnC z=r=fzM(FA=tJUjNrz!0j6>VeKae=|e3LP@F!Qf)pnSEP1Pl(V}5K_b--$A^?0M4To zx{B0ieGJR?^d-vJfY}C#^Yj-wGk;;&9f5v+sMbJx!uUJ2@wBHO|A00w?46#@4chzS zG|l$9ah~R4p`$40w2!vUs5e2AIL^a2XyfA@0bpd?Y2>^+>m-|&^YVOBNJ8Y*KHdEE zJ7bTp3fV*T=YTZs-l8#1kH5%pn|bwTX>V6KGCt9^o??y25KZT_a42Kyh3aC6tf{*V%JG%I&{aA7IMy_^@(B;r>x0e(% zAjv=WA5P8YU+;fs>RuE?$hy7jRW=QZhO0HzOAW|eqD-CLTPhyR581Gn*M#pGl-`R7 zr&5W{5}jFR0oHz!$vgQjp?^K)R@0Pru6C{9bLcE~20Hj{ z0}^po%Lk05{>@(-a1S+rPm7qA?HWMd)28EG14M8|oNJ&67Y062kdk>H%#gq8%(0 z!gCDX!WiJ^C6%+jv|(Sq7Fq#H?uznv)s^P|fve3B+Kb|F>@Cg}yG6S3CyxY>gYizX zg<=P^Lrbh+N<@aN0@!LhwnfskZ3uS2Q?zh54W4pIN%$ERH2|JP$rf>$#@_P<5&}s5 zZQDV1WLjTRA&0lhg!UWG(pxw8LBIZnbQ7hlSAs#2n$}a9bTpzyLtRn=gIOwFN)V?b zT$CdCC^ip7C>|tj{Km+^)+HsjI<9uCkSUsA?gH~8$C#qYi4{I-7<7=Cp(Fl?FeVBD z&^Q&y(G-A3`PF|I64LOY4ow;WmCi=fH%Rwo6S+cx6?bLkFs(b!Z%F2koF7DrU*Z zYE?B=O;@X{HPzbckZPS(#Xi*w5fgFO?ZYPb9j33ORoS1gt9uQFaZ!EfEn=1|<_9tv zX+x27^b4+`LRXn04nsqr)xa#=2A-#da~b$2m{Hc@N)Mwt!?}io-zrl+?27@K;8Q!A zH&(^LYk@7eve1(5(7A(J&3HF1Zfp zXT55J>Lt}WRUO8idJIKuuGIguiVAnu?aHg)rONgIC>iK%*w?rp9QL54@Df6&sWV?~ zr3Y=PPfzEf_B=~RmC;c?dXR}8G#C0=3P{W2San*5h!jT>iog-+%w)9yk|Dd7JA_UV z*!=SRmrs2OUr&L(k0d5ipK_}XoR%w@SO}0q+%&!(`@AGt$qVA!D%b!sytM66gi;fz z&59Im2f7Qy&Tf|2BG6JB3>xc~khAVUeQCaNn+6*oF{*dI&bh__wp3Z=n3yJ6D_^qq zlAO>^OtqKvY6qNEQ4!nJ+chB1y&z8zV3gURW0p*=)}eaBGvlC_EOO{L?{3Jas&z)Z z{fm5itk?s3a9mc&xEYrt!LQ3$hWQ!kvC@A8|8Mimxjz=G#0zh$hkfw za|h<7c4$cGxpx2txaf@zEi>I%t=(of%0xbriF~9e{YjzAWXlI6Do8ulfm(UjvsPJ_ z<1CU&mc-r6^50}p00D6SoNGMe$3FlZ;W$W(T;u2|$7K?yWD=(c31kL(_%Ea9$L4+c zzWoDG?mE*e9rfdiIx#+lVtg7qcq8=*e|&IC=E-+A#%|Jvdb=}!QPVMpoejJ8HmRQCi(&}(cZif&6^mtZvz7H6D|WlIeB^+>Mj}JT@`DP$#>H3*L63}mItp}M zXQ`F9V^gaMp1HU8C=|wQvAWj& z<*nF%fM7LuU5V72Iu4SoM%&F99VMF0{x@n{r*fzq8unj(fct%{qQW2yscn1y zQ$E}-k61;5f#%}l+^ zV(-sPn`N=zRI39wNkH2aLq z_zg_Kq?62|LT1TBmya=vcF+mujzN$r$5ijzpws}K`~eV_51jWg_PWHX2`~OQ*d)6d zhlY9JRsQKAvDWs0WMz9|7EShN5)+2gLt?p>n*!&xk@ul9nH3W-_2#@qYy>tD|F^6g z+t}pM-Qt}-uH^<8*Lu|mp|c^YtKRf|v%O(lOLH;FkFXPxBhK}M9Hg#ltP&_+s49O# zlSQK6LTI*SyaXvB<_Z8ubPm27(xk>|WzyOEwH1&iLIQeKl=QYw;9DrtaJo?N%Riup zIY0dC^TP{6(Z+)6v zpY>}&>z`maOED`F)^FI*im6L=8rx4&v@xL&IH05d#<_kHQ7REC@WjK0Lu4EJLbZ;W zWah^v##znp+K&{!C;6P$_ubfk^FUK+wGP4Jxt2Qr)H>A6pt|?$J-MEf-MB?sDcN>Q z`DXww5Nt3(WMWSQgP!t2WWE5C%e7Ly;o@(40HxKRKf+ouaVCnX?RGJ>e5#14r4erm zVKU*;&9!{3Bvn5NpjHYAqaI$kNum=Ip$!Q`MMdgyaz6(Q^JmlvD=v&#I-^}gUlZ`2 zoqiQnt@KL)RP{ak`^A2KIae*a5+_kkAN>Bli)%S7_()Pt8MlPIs&h8(QaA02%%+U> zrkZ@p$gWK77N`20tfrKWJeY5V7+lM0oUco4TQ^O6+v~=8Avvp6(p+$v6uuU-;EL>9;bnuO0C==6 zP#o{8vPN!$zzJluOyTMez#{;9UA^fY-eNFKHwIjUyO)djMU*bf&IeTL1ABS#Q3=e% zEwq)9^bo36oY&6(WH3Kf<|w!ThwBLNUWK{Sb6gh~f>IX|Dk+##gSDhBY`CN*R2(Rt>5V-k?tQ7;vg= zlwiMBzX7L$B~}PUpkUM?Detq~x?ToyRkH*Ajeb|;SCnb5fj>$_f0V?5KT0Ym z{s=S7a;dw7dQmkBH8Kp*zGB~k8mTM?K`)QkJ;iNVyM=ZLNOpep@L15RKMx;n1$PC? za}?5Za8KJ6_f+V2PoP8CRdJoRB~{!=LbF2eD*GhaoODH*ib4Qaea5Xi>@ZSbM3}|4aRmwPij;s$g}w zU9U($QnUb6K!YkUl7^WxjSE%*Xn^pvbHpf|)xg~Uk3s0Df3^akeS%OOmPkfe*r>q# zVcKWZ(<7F%LwdJyuIrdfY*3+B+-oKIkF#-q(}Db~M$`U|rg7fR^{Q9xTZ^}0mfeA? z_UpKy=&Va^C#&}BH*wV-QK34gw^eZ7*JT^*#)t)e@j5}+_@PGE^r2RL#YQ=IYQ!w` zP_CP7p~Q}tm%8jInJcSOn@4sal0-Ja@^n6c`qw-GMsB?be%?W|vjT4;Ybc_n(j*ab z9jsTvNPjU2I4sxO-ZNqnh?Ng^L13to!^6^-pD=2a0oK9nie8<1n}Zqo3ap87?c2bw zAGLy-&i^=Ss1-{9|{QwM8{D@yfry3_gA3lf%QmWiSigL@0#IS8uf&!|CK4zAxw`s@7_=Sa+U;yA1-Yi4T_2&@;3=`o#)tA; zoSO1b*KP6)$)5ow11YQd;uvLjjCQRz`IBj=|4nt`|ejXL(X-eBy2;G72xv67-~5tWen z_p4N^>GW6Wbnqc(g`zuy5R%014pb2KD12HRWM$T)B)WWtIF!c&D`k3w8OHOUr46$V z`oJ#dW-tl$(izw|x4pkNfqR`!O1I6)2A4iYL^Od=izvd(*o9;-98Kqb)ENxGyuOcCqh zB0mC*9Pyy0Ivi`N36QK2m4K8EY+pN`q~rH7lP>W^V`8l7N>0F0A7O`KJCyK;fUt>{ zo7(duNoA+U(jaueGD}fx*kELz2+GR*bCCJSe>w+)e}5AA$jmfrzW{ceJ`j5ES?a_){?PZk;Ga*h&Gh0PEzj2bqx!?6Z!8 zr3q@|+p<3!fc`ABQcc_R^w`5FAP6!kGkWfmoAADet^dRb2wQ5u5g;ExRAT%077F;M z3i8T?KVr#3k($2a6EaPDxIz`9wiTJ&`4=9NPWi1I|4t9u@s0Zr~~VSDr}!<`QmfdBXd|W)4D+KWiiV zfbwP_v=SW3o}lMM5RwfVD+CElGl&C)SnzySvK1o=L*fsEG2|%w9=hP*f8=&VuepV= z7#PK6<4!h1sTgxAKw=@0)Df{9xoBthKsLYEP#aWeE}@k|ztFW#W%c`5_74F#@S0F` z=UT4FaF-D-0ERns0mCL>H8R*Y{|B(|WUz00ffX<6gO1cb*=>PVv~SEZ;`?M7+!JqG zBpbv0+1AaBdYwt7{Z)<@2QQ6_T^%SgvdJhly~UxNPIrE1;)UoEwhC_?2;c#kR9s&v0%%Z<&y6c1H${Idp7i zXw@;!9ZAxxyJ1TjKX5K89NI{MlDPJu3bZ@AZw1;N$x9P*tnSF`(v33QQLh7qcMoFk zlWeQb`1+sqg;w~qm5?nBLY)6jhqETIoi5IR&z%Sv*~97oP>+T>w10Zsz03-z3|27k z|2=U!?HcGAU}mr>m~+x#*{8C+zQwYa!F7QNM})PZxO4ESWShi^?+Rc6Z<$P;tb4rFh51q=Y;JzQr%g$S{Q!i}lqtq=*Y*hp zPb91)uKh{i#JBjuDdPv1%i{A~%ycd5LBk)Jk~!fm!Ss0-IDE;u-!RH@d&Erb}L zK1hNwwQBRlF8Fqbm@l3*f7Zl_<-C6CkReCO9-w%Xh_k9+RT!ed4L?pi%+H>>lse46 zIW;!)?=sk5`Eyg#s1tm{)Hv$zylz_B>Jz|H*R z9}4$Szqc_?c5{hRR08RI1m#k=3Z?|fr`PM{lunD*UxF!J@KK4v)%+XNjMT@xb6S%1 z{bqaPxEamGBHzVb>ynyGrvnW>?%D-O&i{-c0N5Otw|&J5`7Pd2rl1?Az=tm^bfKU+ z&!{!Hk=!sEj=$UqI~|>7jg=EmkzG!#{6fkso*^r=ZT!mVu~Y@WZhHI^@AOFg9jM^y zBahKldc>!Z4(WFu0~W|cyn~a08})L=Ht7;~O%iehTTg?3T*ij*0t&G~GSO>Oxs)^bg~4V3m1esy*db<<<8=Q(dlbLm|C&8I=3*~e zUn#UMBCWAAE*v4WK1NzaK#M_I-}q@=QGCH?p+MsmpmBkpe%EOI6@vX6p?UiuX6Lah zaH1Q`icF(*WESbvF|s0Zxu^^ z$oVc5)xE>7?mrNcKO)H}An7l08(~#wcNBA?pm-5A*gNwXat-j_!uNHTeqQ@*bI3+n6RbK-~z? z3YkI-c3{Gy>>t3Ry!isX-I=w~{%*2r4s;TIz-rzlJWJ6J&r;ky!h90+(|UouDzRWN zocI-#V(~`RADoQHWSjFr`>sM#>kC8L@J-tyIq_$_3+KdZ_zfyQ2%w-BLAxC~Jb?2Y zhE6!f2OwY?KMS1>EgX%^dkzCa^u~H;X>(k|!RB~mwVgkd6W_1)CJ8`dE&oZ5ff~(w zbEYRu#|<%5L{^*JCQiP^hB*Y>e_<9D^D}Z20cu6=_=M>)PJ|-G8-zl)h*0IZ!v=Yz zwii?{l7l;VfCrpnYaK7-#tjmM+d6)Oju_rFbFg)$OL$qRu}E4d;mrI_I8+n0vj*H+ zvr2eeVmoW3o2-_Z>8b*VkRS+$Py>fDyI};h3)QN}rLr2SwXDn{L0X_<+Yl8jonY^_ zAB;vU9Rya3yN{wtM>7p$vZB>oTfJ8{usD35HYb23X1F%I>R|`s))C?>W z!ZN7z8=+*8G*|H08gSFbN(8S4kOI+AKmf=m?W}~F~tT`XsbX7G~mzX*G>I*b$!)mK zyiQx_X$#h?XBiaA4m?k}TQYfXiQ~i$z*ol19Vy|ZM*0=5%@UGN_DBV`wITHd*E(%O zswIb{Q%3Q}=Oj^$e9fF;abBlIVuUQ5ky}4jb0Tb~hE>(jv(xzjbJs`A*#|R5X*CdGqq_fj>@cBOaW@z2;qX9^-Gp`h=b|7lr5S20ziks--^t zQ8GYR(bS;`31^z?Sv?%Xb}p>j@42^<(wcX7*rIZFYitq7sV0EJyt|bXyZ9}6 zNfSIO67fAMC1$nBM-D_EI=gm24~#Yyg`0Ob0dx2QYulmicx~PU%K9Q0Jv0Axp$slK z&A-v}d1k)SD)Rp3f62|D4l;Bzjf1A(h^F8XLYdsNEU2f?AVNkNg4OlPtyWv}NnruL9XDA5vhLH&d$GQ+0^*&cpye@d7!n2sy2HmUJ0fX9cz5 zb{RSM=bcTM_0C3SVU+nOgj4gU{MrIz+T5VTCTJnyohvkt0N|1E83mtYTu7WPNTtmD z^@5>c|LWmMzu0Ju%^9G1+-x^hm_ITduyVcPsbSI!Z< za^CqpOFnrIgqbiLI?P9)Z=uk93=j#;rvZ`B4BKr5Li1sg#dF@pu-nqT_~Tr<`Qu?` zTerEq^YS69>atCRf6y(A5W1zzjc}B6F@JIK;KhsK&9TZ1!!7nPAOmJ`#xeWlJtgvq zPe+Kwz5rVB7cb^dFYmF~?+rZp+cIN9Hoy^Ln`VQ_szMPS<)_@2Y@Kwe>Wx4GeYxk> z0!RGKM=$RQ^z}U*&9McH`6{9=t%S4%U++} z_=;$o?lL~xpdt?qP#iPT_x)msri@k5T%?*dUj=~=s*%?smlyQh2P7`@$N-N7yoVvQ zl>0ykTvNzfCT}|M^QbcFa)8P8cZbna$cMxhI6l5E3oV+5ixs|zp%co2*H66(>N;+^0v9)y{MGlAj!(Phch z3jVugqhtHL4Y*mSZ8jnQz*6hOvM5&J@(C)>1ljsX&ik;uK=M8cM{K3Kw2t~LI4<_E ze01Ksigfy0S1GNJ;t?X~%MoycONMdQmDV532Gv&b05vTohXYOl+JrYD0daNafi zL(AiatqE$Y1|-iCuGc7Bui;-?ZWy)3lj7Vjc~TFQNuIP)xTF)tpCmvDbx`$x0G#oY zys$jZ`htH)-}{2loB}~26+UV2rM#c|K^h!^QCI|8$U=bUHc% zYNZBTc#*Tp-DS8elh5ao<4CwkXS?`viv8u(;+NATBgReGRV0&Cp;8wy!}R@OA5dPD ztw`XDS7cB&{%HbmM0iO!zO-VVU%@~GIyKEj5-_l zHSNzISnrIw5Oo3OTkf@m4&c078YJ5p_=5BdkdT9>US$yeAR`<2*xcaUCpGTJDc*z- z&Zw`Vz5?srM69P$kB@rd*{J^o8Jf|W diff --git a/tag_fw/fw42.bin b/tag_fw/fw42.bin index f8571ed9d47bca0a4e223e0064ab13206f0021e2..e53388a089128f44629d3be529786e176c4e10b7 100644 GIT binary patch delta 12556 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 E4|WMD+W-In delta 12382 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 DGK(5} diff --git a/tag_fw/syncedproto.c b/tag_fw/syncedproto.c index 42e28648..1f769b93 100644 --- a/tag_fw/syncedproto.c +++ b/tag_fw/syncedproto.c @@ -49,7 +49,6 @@ struct MacFrameBcast { uint8_t src[8]; } __packed; - #define PKT_AVAIL_DATA_REQ 0xE5 #define PKT_AVAIL_DATA_INFO 0xE6 #define PKT_BLOCK_PARTIAL_REQUEST 0xE7 @@ -81,6 +80,7 @@ struct AvailDataInfo { uint64_t dataVer; uint32_t dataSize; uint8_t dataType; + uint16_t nextCheckIn; } __packed; struct blockPart { @@ -155,6 +155,7 @@ uint8_t __xdata seq = 0; uint16_t __xdata dataReqAttemptArr[POWER_SAVING_SMOOTHING] = {0}; // Holds the amount of attempts required per data_req/check-in uint8_t __xdata dataReqAttemptArrayIndex = 0; uint8_t __xdata dataReqLastAttempt = 0; +uint16_t __xdata nextCheckInFromAP = 0; // buffer we use to prepare/read packets // static uint8_t __xdata mRxBuf[130]; @@ -445,7 +446,7 @@ void sendXferCompletePacket() { void sendXferComplete() { radioRxEnable(true, true); - for (uint8_t c = 0; c < 4; c++) { + for (uint8_t c = 0; c < 8; c++) { sendXferCompletePacket(); uint32_t __xdata start = timerGet(); while ((timerGet() - start) < (TIMER_TICKS_PER_MS * 6UL)) { @@ -750,7 +751,7 @@ void doDataDownload(struct AvailDataInfo *__xdata avail) { if (blockComplete) { if (validateBlockData()) { // checked and found okay - requestPartialBlock = false; // next block is going to be requested from the ESP32 by the AP + requestPartialBlock = false; // next block is going to be requested from the ESP32 by the AP blockValidateAttempt = 0; switch (curBlock.type) { case DATATYPE_IMG: @@ -891,12 +892,21 @@ void mainProtocolLoop(void) { radioRxEnable(true, true); struct AvailDataInfo *__xdata avail = getAvailDataInfo(); if (avail == NULL) { + nextCheckInFromAP = 0; } else { + nextCheckInFromAP = avail->nextCheckIn; if (avail->dataType != DATATYPE_NOUPDATE) { doDataDownload(avail); } else { + // just sleep } } - doSleep(getNextSleep() * 1000UL); + + // if the AP told us to sleep for a specific period, do so. + if (nextCheckInFromAP) { + doSleep(nextCheckInFromAP * 60000UL); + } else { + doSleep(getNextSleep() * 1000UL); + } } } \ No newline at end of file