From 984f46c4f1010b9ac4da5a63e382a57e1fdbddb1 Mon Sep 17 00:00:00 2001 From: jjwbruijn Date: Tue, 28 Mar 2023 22:15:38 +0200 Subject: [PATCH] reverted back to old AP strategy --- binaries/AP_FW-dma.bin | Bin 17777 -> 0 bytes binaries/AP_FW-universal.bin | Bin 17821 -> 17879 bytes binaries/Tag_FW_1.54.bin | Bin binaries/Tag_FW_2.9-uc8151.bin | Bin binaries/Tag_FW_2.9.bin | Bin binaries/Tag_FW_4.2.bin | Bin binaries/zigbeebase000E.bin | Bin 17777 -> 0 bytes binaries/zigbeebase000F.bin | Bin 0 -> 17879 bytes zbs243_AP_FW/main.c | 26 +++++++++++++++----------- zbs243_shared/soc/zbs243/uart.c | 27 ++++++++++++++++++++++++--- 10 files changed, 39 insertions(+), 14 deletions(-) delete mode 100644 binaries/AP_FW-dma.bin mode change 100644 => 100755 binaries/Tag_FW_1.54.bin mode change 100644 => 100755 binaries/Tag_FW_2.9-uc8151.bin mode change 100644 => 100755 binaries/Tag_FW_2.9.bin mode change 100644 => 100755 binaries/Tag_FW_4.2.bin delete mode 100644 binaries/zigbeebase000E.bin create mode 100644 binaries/zigbeebase000F.bin mode change 100644 => 100755 zbs243_AP_FW/main.c mode change 100644 => 100755 zbs243_shared/soc/zbs243/uart.c diff --git a/binaries/AP_FW-dma.bin b/binaries/AP_FW-dma.bin deleted file mode 100644 index cdf49b09b4ef54357d6bc97470961894001aeed1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17777 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 Le{tYH&w>95YxL-C literal 17821 zcmeHvdwdjCnrL-(chU(V36%ihp)^fLc@sz?$TJwwab_GdB;z{n>}(_8Yn(BoRT`8> zrFz0MBsC~52m;dX9Z?{6XJvcGb`+Q&pV~=#}5z zyL;~++o4WXo!9p`-}%1peCHG_v!1p7ioqW{b`ibLpee)Xch>e}n!}Ep^6ljXnFI3K ziLLDLHeaQ^*K@|LxTO}$?d3^6X|dD6<@luM1Cqt(eEv2_$@7b)2I)+La>gc97IC*t z^hpjQ%iOcFsBIDJ81=MKF8-&AYGH50`|Q^)%bN^q-h1KlCtnMDW8R9`m5-wp%%w$) zBXuPs>{Yzqqvf4QORown#P3TEZ^asDrpE4q^g=xTzmR?)QS2po56FQo9EPqH@m!CDwH~*?3+w zc(yX${D5TBVNTXy@>AUkf16w3@&^sA99p@SIiAUsOsF-lVcceS5$l+A_S z0C6XCV=p%(XNZmbym*EF=41Ff2IOAV2>3C%pTvnu#HIAEWS(X`Z9Cg{6&YFf8@JJI z(i^#x01*@9uxc0f;_tbta>`qbAr-q~*`@y>>iA#8dqkGRIX*2u%F~np=TZV$ zaAm*By_R(#dlR$SP@RmTQ;WEjB?sR${4;Nu81>HSt4@xOsL@zvj2>ebUt2P69F`a- zZ8C38N@!qh8F7$1lvS6_51A76&hLx&1d?!7)w1O1F~hQJdsbl@@4U7|gE?)J&Qi!Q zgx@yYDECa$$Cn>^4O~HDY-^b{O#MWrRQGg)O=&4@{zlY6`JqfMkoi9F3LF|{u-ci!bNWTcDxYWqcf zMx608bhK76M`th~YUYwHh8nik*eQ@vFWcFGomUD;AQwg7oy=$D+JoN0+?X6$c?nej zpeRRHskm;GHaR!LM9{D;%JWH8PNJjRkPOmkUQEh|@k4U$0SS5uIF+zViTu!Etd?wP ztm%D0iUA*v&tOXIeieKaq4&X1L4)~FA2rQgyx)IPEq026eUecpeS%t z6}ed@#&?sQ4f<{_P-37S4H^FjB;ANzg|Vv$KV%}HI_E0V%zG1YofXG*mX50?g=S}+ zbUdaiCqq%*i6-EJKd;sF$EM4sm-CuZFWU{L$mIg&6tS~?$eI{GWGcX05O9LZCV7Sf zHdN4aU{Gq5m}Bs9gORml9%mu#M9vzKv-WdQZ$V36ttqWDf148Nw4XycY5|mc5e)*I zg)S7ir4hRMXa1Ljzs*H>5l8xd-b9DI<(xnmZvIR z-mn5F*9R0is153ZjhJsY5SLQGAc0CYf%!)xnfvXfIwA}MExbA`LAK)s|NaZcy8G=5BKI5Y*_Y~`; zDSGMM38hw^gC1_jF<|_l2{@o{)$OZ$)-e9bz213IG&D76XnQGr842{=8&_BNY9LhL zztDIrNcU2TZ>MQ7O;x(Bd

l$2iaw1p1HH1$22F=<)$TAG!)?83lLuH9#L62=u}0 z0{YuH(BEo6V_PQGOs<{64^zcxe9eT~i74GebdjMG*I?rZ=T3@x3n%y0P1(ZM7;8;n zP52zb_Y5?Vs$Za*NKQA9)NKPLs+lEj?2`wigU&+)jO-sfNta7QN;RPD;4Ia8LA5Gr zYL#6BZ~C5?hcDm7KlCD>v)j8z?Wbfu;z=b5 zCrnRHTvp=UqqA{p02-IP$OmdyX8~#lQU`pWM%p;cBP+u>q8c8T_dM8Ly6iZNhfGQ51ZMUVD50QP% z0m7dF4dwDeA{IafbjvS~=h(EI8S$LVt8=cB4%!1u?yw7zh#V0p?tn6=7`lAn7M#T4 zrb72pd+t=yQ8*0*uP_e=y>L33{s;Nfx=lxdsdp;-z(D~&petdVp=Ospjr!~THIXsA zF?Uj6D$JI^w5ln2Ra2#^Y0j!VR6Y^JuUGcH3)MT2x=u)*KJ$!k6%%)<%Yusx*XAxN zf;`#x4&rlL`l7S}Z*F{x>{ohCFc4><3hnlD>=yOEk!YPWei$uo+=tr8eH$gMsR&_y zS0dJZh;>YE<+{~XF$`!fE}7*B$^(~jU*eSh*Mun@Hz9(~u^vI6!&_$7%&NVW=TyZr zqb9$$;FTHs^Xm#w{iG0WVWg=aIr12om`FK4p30%`G{Rl56lHG$mAw|w!xePe&4g(; ztFP|XmCRez-yibJHqFy7q@MmQ;GP$vdwvTzgh5z`{=o4#xc!9@$mx9=Xj<7nyqe>` zS*nKhz2^8E;(E=XvJr%Qx;jAt1(>w26&|>y;`66{{1C8HungS*%Z9k}(bS76h0Uyo z>PmTv?CXH#H4Gqs8m1vQGaz)D4L}V>&Asohy16&z&IH9VD{|o0xV&gGPi3kd`f;IP z{in;+5KX2uZJsfLD12GvkI%(_mNSUY7=o=^Bip z*vhGKH!9oRDBCpKcbXmdA!qtAEGdTb?+-9ua%88n$Pfc!486OS&h;r)bI!MmEv+(p-@N zE{3L1eP{TE0O%e5JrJC$>_4A;)zT2Hc%SNf;QG*o6AJVU%q1H)`fuFWPq;Z@;ov!L z%*w_(dG2w6oaSTP4I{bHpMxghVNSK2=H}j9Gz?Z(7N#V_Z$AxY6yqv>2&r_&)!FTY zH-o}ZSXG~KH$5na>M?p_QuS2m1b+wN7eN*1&%PW|CB}{Y&?nuWEVrCd7N=Jx3wrs|D=%SiCWWOu`V@ZaJ$~ zduKqkG^kcgqvLwD_ta|deowXc)oOnoP;Kbdz4fdIAAzdY?~LUPpbLGJkc$QqJ3ZTb zyLLpoU+DAijCnero7MH)Yu(SC@IPmQxaKIE+;Rsu>T;dr;VWy&G9qpxkUeq}WWz{6 z{N6b0kkpV||94h&)O%TRT)mGKx%yUCoK)Y=inr8vvEp2IpwaO(k>l}Y%UU4$Fc1N%P~Zp;T<(sSZh*Df?1(-XJ`%aDGqc`og0d$E0Y$DWdO zE_)ZWL|LROgP!$@Jq8;)1u@v#S+6;_>*)$+F>x5#5l_jR#t7s}d>X{jk(+ zu?#A0NLJe*mJP|`91m~UHqX0le#!I^Z^aBF)xtK?4k62o_yngLDnD|hk2(@Fj7B@$ zfy>zpc9cDVD+A^T;O<;Zc-oXa0@J$Ndb}xt@a(+Pp4^;$jR~4yI9Lz#|6VcR*myZRT!T++f}UVR{N9Lxqu{!U(1-QM*_I zoiGqn)m)>sRCancQvt@fJ2?HS>eD^$>bTQ3c(B~FxeJW`X3%IVgdr+~Aru1Q0wuyL zjPM2{)IfkTnB|KRA!aH*E(&iO;8h7A0oiJ<@HSI=d@a1HxkI(wBMiRlN~KOZ@{$arNa>0hST)NeUfeH4nJ3w__f1_%fg0iix79E%A@V`5*t+ffPK z?yK8sJW(eHM_s+fPJ=wq&ze*>AM}#aKd&j>&@2b7Djq1VX9<4_FdNm6P0Zun#fvX` zAwp2Ju!i-Y99O2CJvr{|BWL0MNTdti$NVr{&ESJ_=H$3D51oPgLm}wo5@~ax2twFI z4vyjPA>#6*u|daTmim|(1Gw3U(dEg6H_QX2KOe3ISThm099aT>E^nkpLEQ+dA%1RN zu^t=>j!IPN0A<)!J$U%oEE4o9WrzE7WM%xa|==MtEUy<14~;PLnolcoS(fW!AALApZ7-Vt+H{Er|3%t`e=qoej(c_x(>wpZ{ZjT}>VL>v0tKtyMjj4=-%}FJ& zqoIMaC}ESj!Py`+kOrk;+zcQ~CkhFn({j9~^2YOqsdQ>U51>P7D`keRTjZc#Z?bBe zf|GpJAUG3!n;@O6_dzFg_hD0m|FHQzIXFoH!95AJ`X{;?`;IG|s!b9In4xq-20%bF z6WA1}7B)^V-jLb2-xgOrQxjBAf)xo)RRR{+#!i7N6|O;0_KLLM`6`KA^6Uz>y%=iW z9q!l@@%Sv;eJMM9sW12j?JW7k_N~K<9Fdz3Dlsqd=e1-sn*Ars41KQ~n61hGzBS2j z^%+@PL=L^>3zNQjBU3b?UW6S!xp_PKSc8u-hO`>?8K&znn+ajnG&%IT;z*K1Zz$y! zRC#|P;w(AzCs^@{FWYDI^1(tv_W{5+5529|9evDxi?Br`{mFPpaYQA4o>JYIfL59&{1j|Lr19?oiLwB!romj7ZCdI zw=*nO6*bz5RQRg9@;HGE?S=LOCjj-lN6o^>ESvbEw9;;RbN_gP8Sa|PZ@oAIrp+Wc{EHqwhJP1|L5(7j33~c=~58Lt0C-@#nJuqZ)^GUuC(o;N` z=jOlg`H-IG%OO3>-wWxxwEkZe45q;AJ23Z}&+&PXHsIq2{GE_C@=1_>#1}*QC5lF~ z6NE-?KEtntw2~)~ihwVce2mRr_Ez@H)6@FzFd@eWd~WRk`MIy~DD^=E@$KK@MV&q#kP z%j$L~Zg|md5w`-%;ID#sPR|SuzW5ZpMuQfMr6uB^84qX~>x|wbjKLIM%aogsh@-`H zHNOQ;6D{Zyhxpanv(|_rZ8nV-uQOTJnM=(^cmWubdo3;VqN9(-3^!~sbz;L_wG~?< zK@C_DCQhG(nWIiJ-E@V{Czvid^nq$AL+7bDL&P8U5n(Nntj3hPxSP8VN;vtC#f%~H( z)r7U5%b{}=a?OR>Pl`XXplXijs`(?7!_db{pl09Tt##*hjc^S~=!nJ1x;TKWPc^bG zekWP`DOqnJSq>m89m)DqC+iE9Ea9{T$k__4WDlOY|{mmnokm`xtfA6CL~hfT*xDq0s0w;ew&W|C4H{X z0`zM?7CvQ!&luq%BYe&X7h2)uL+DzjU!o|tA<7wuvSt|3H33nVL)~hha;V)G1mrq= zAxOKSQRz#5%{P-ne)O1%-w@@{R~iR3hlQjrbi8K-cWkHkSa%rC(tvS$KhOpk)8B|(l0)ebu`gTO)Z zauc2`0ZrVFCvZ}+b9xddQx0|F6ZlqLcn33)4Yi;YtM<8*Yk-z4+&zG!L{KG)^?Tjs zYRtx!+|bHS&+b54*PZ~Fe?Jvf-ZU}nodXL^Twuata}2CF!RzwVn5SOJ)BS>fXUS9T zp54KYJt6*iDjT>d$lY?bN=mPCW>k^Pz!03b2hx0lJz4K%y%$C2z}p+Wl$#!GE6fOW z7H0N#6%L8I)7*oxX*KEMZoPocDmLTI^zbg9>Q-pKbH*G1f#YwS30WN?eqIO7Q_&oF2%QAP?><>=s6SwhlSjnF^4EP z;0|4JC7gM6Gw2C?LxOlj_8Ddsvl`A$f)^TnGhy8gafbNO35c00*Hm_YN9Aj0D#M$( zX=bHLf!%I11iPk&m3>WFTbsZe3@{3uOzUkT?X(VVbtNU#a4SuO@O{t%@|6bWA>x9Q znJ$+=EJ}dkgV@zWZUxr)DF6X`iO{-cERDh=l$dBqH{VN3Sb;I0Xj0)53aN?tio$Lp zUfu|G1!8Pav?3A!j452TD*1*25{T(Mo<##>f;^%9nxIpFX+c8wHO<=E1TP2~(c=S9 zrHM4ddX3O|&e(FLfW*fNodG9(^wK970Cq|XH!Z`sf*4mgjrY@mbGoIf%H)1GkH4H- z8C>VgStsSJV{*LDx*XZB=ccWKp~Pp)>$$_Y8D(N?!Z1hxG}-q0GILH#j`(F{k@fXo z7k89djUlkV5;whml?5L!5CyL=60hgP(>7R+oCz?)t0LXNfnaWeS>8BhBSiJH!!-^a6br8IM za)q7tZ|wAR-ij|FcoILnWW|dW;?F zY$7diDm$gK%<32fDeExvQ=n6T?#OBP>?q1|3<*Q_Nu%8gOpz!&T6qNImaCPKhhbz% zo5_>ao4~%dGJ_)-0IoEM^u|U`mSs#t^pK(00{ZK?&=JSxvkO4Wk>yFe6?kbmBCw*7 zomQ-qMR<#68?j#wc?&`j=+?!}xRYSgM81MFKoGI|l=RLim@&X*^lEAuoFGo@XPp6N3OA#IP6=SX4b5>C zBUKrkw!G;x@(T)YnK|p$g|`(iT6}x|`_lWDEno3~?zF~^rzQ!~U^piSn@3|d^xJlA z_Xj~9#PdIJ{!ecccXY>b!!I?AOPG=L$Qpf*`v^2922N-==1zuNDA?jwEO0@T3C?WH zaB8^~ob3NEGodi2lKt@&_}TqD}%! z$oTgVbfF5%OcmIb7(fj6t%m&+cnIi7g1c*$^M4%&X%7ZzXv|9}k(6AB31!ORRO-}# z$6_kpXA-s*3(t=%-X=mm_%fQKG=P0H$Ppf-wvxkXzTcA=+VzfL?|8lfy}>s|@5Rf#=x5LwXKfP|}sEBdvHFAeh1% z$+wnA9dmBLim(Ns^~SSP`@9Qcv^6^Y)$A4{4fd#91oMeY03Du1$&L|!`5*w{B>+kT zVmGPhnv1ttX-*1kh*3l=UKNiNSQZY*P)WHy;J)YL*!EKzy^0P*7d}6N^V0<##|`Gv zZ4oi6c$-N~M{bznz)QFF$l*aSPTvxsQlpAA@)J&{!GLhOx_$^JslmnYVDRa}uq;LL z{f@NKZGIpba+LBgAVCHF4LfsMJQwt_mi@Jw4T@Z?9bmE1Y;56AY@xW+ zlKT=$u4?qccNe){0B7ynx^q2Jp4>#b&qJ99t}|{36Iqm5*i#7TIqzj>UV+UPNO2VC z2($!F-C2q*YAfkJHP^@)`2Z4EXPnCRDUbryj~N`kK!=8#IVN) zA^L3uT`GD9F{EFd0Tvj^g?jrd`70=G1k97b8U!OFNJIAZ6lHrZ<%7uN2Z*OVKirWY zF-zhlFKrFB;MGcKjeRJuRAP#MuT> >HmX&RR!oBTddL$fTl4iTT?|&xj^xpo(Rx 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 Le{tYH&w>95YxL-C literal 0 HcmV?d00001 diff --git a/zbs243_AP_FW/main.c b/zbs243_AP_FW/main.c old mode 100644 new mode 100755 index fd693d2c..ba5dd9b5 --- a/zbs243_AP_FW/main.c +++ b/zbs243_AP_FW/main.c @@ -38,7 +38,7 @@ struct espAvailDataReq { struct AvailDataReq adr; } __packed; -//#define TIMER_TICKS_PER_MS 1333UL +// #define TIMER_TICKS_PER_MS 1333UL uint16_t __xdata version = 0x000E; #define RAW_PKT_PADDING 2 @@ -63,10 +63,11 @@ struct blockRequest __xdata requestedData = {0}; // holds which data was reques uint8_t __xdata dstMac[8]; // target for the block transfer uint16_t __xdata dstPan; // -static uint32_t __xdata blockStartTimer = 0; // reference that holds when the AP sends the next block -uint32_t __xdata nextBlockAttempt = 0; // reference time for when the AP can request a new block from the ESP32 -uint8_t seq = 0; // holds current sequence number for transmission -uint8_t __xdata blockbuffer[BLOCK_XFER_BUFFER_SIZE+5]; // block transfer buffer +static uint32_t __xdata blockStartTimer = 0; // reference that holds when the AP sends the next block +extern bool __idata serialBypassActive; // if the serial bypass is disabled, saves bytes straight to the block buffer +uint32_t __xdata nextBlockAttempt = 0; // reference time for when the AP can request a new block from the ESP32 +uint8_t seq = 0; // holds current sequence number for transmission +uint8_t __xdata blockbuffer[BLOCK_XFER_BUFFER_SIZE + 5]; // block transfer buffer uint8_t lastAckMac[8] = {0}; // these variables hold the current mac were talking to @@ -194,6 +195,13 @@ void processSerial(uint8_t lastchar) { cmdbuffer[c] = cmdbuffer[c + 1]; } cmdbuffer[3] = lastchar; + + if (strncmp(cmdbuffer + 1, ">D>", 3) == 0) { + blockp = blockbuffer; + pr("ACK>\n"); + serialBypassActive = true; + } + if (strncmp(cmdbuffer, "SDA>", 4) == 0) { RXState = ZBS_RX_WAIT_SDA; bytesRemain = sizeof(struct pendingData); @@ -206,11 +214,6 @@ void processSerial(uint8_t lastchar) { serialbufferp = serialbuffer; break; } - if (strncmp(cmdbuffer+1, ">D>", 3) == 0) { - blockp = blockbuffer; - pr("ACK>\n"); - } - if (strncmp(cmdbuffer, "VER?", 4) == 0) { pr("VER>%04X\n", version); } @@ -410,6 +413,7 @@ void processBlockRequest(const uint8_t *buffer, uint8_t forceBlockDownload) { dstPan = rxHeader->pan; if (requestDataDownload) { + serialBypassActive = false; espBlockRequest(&requestedData); nextBlockAttempt = timerGet(); } @@ -652,7 +656,7 @@ void main(void) { } loopCount--; if (loopCount == 0) { - wdt10s(); + wdt60s(); loopCount = 10000; // every once in a while, especially when handling a lot of traffic, the radio will hang. Calling this every once in while // alleviates this problem. The radio is set back to 'receive' whenever loopCount overflows diff --git a/zbs243_shared/soc/zbs243/uart.c b/zbs243_shared/soc/zbs243/uart.c old mode 100644 new mode 100755 index d3b51034..95ad84ee --- a/zbs243_shared/soc/zbs243/uart.c +++ b/zbs243_shared/soc/zbs243/uart.c @@ -12,7 +12,8 @@ void uartInit(void) { // configure baud rate UARTBRGH = 0x00; #ifdef AP_FW - UARTBRGL = 69; // nice. 230400 baud + //UARTBRGL = 69; // nice. 230400 baud + UARTBRGL = 70; // 79 == 200k IEN_UART0 = 1; #else UARTBRGL = 0x8A; // config for 115200 @@ -29,6 +30,8 @@ void uartTx(uint8_t val) { } #else +extern uint8_t __xdata blockbuffer[]; + volatile uint8_t txtail = 0; volatile uint8_t txhead = 0; uint8_t __xdata txbuf[256] = {0}; @@ -62,15 +65,33 @@ uint8_t uartBytesAvail() { } uint8_t* __idata blockp; +uint8_t __idata cmd[3]; +volatile bool __idata serialBypassActive = false; + +void checkcommand(uint8_t rx) { + for (uint8_t c = 0; c < 2; c++) { + cmd[c] = cmd[c + 1]; + } + cmd[2] = rx; + if (strncmp(cmd, ">D>", 3) == 0) { + blockp = blockbuffer; + serialBypassActive = true; + } +} void UART_IRQ1(void) __interrupt(0) { if (UARTSTA & 1) { // RXC UARTSTA &= 0xfe; - if (P0_2) { + if (serialBypassActive) { *blockp++ = UARTBUF; + if (blockp == (blockbuffer + 4100)) { + serialBypassActive = false; + blockp = blockbuffer; + } } else { rxbuf[rxhead] = UARTBUF; rxhead++; + //checkcommand(UARTBUF); } } if (UARTSTA & 2) { // TXC @@ -81,4 +102,4 @@ void UART_IRQ1(void) __interrupt(0) { } } } -#endif \ No newline at end of file +#endif