From f37eb3edc9814eea57725b9aaecdea2f0caa31ff Mon Sep 17 00:00:00 2001 From: Xu Si Yu Date: Sat, 28 Feb 2026 14:47:52 +0800 Subject: [PATCH] fix(coex): fix ieee802.15.4 external coex tx/rx stage handling (2de0784f) --- esp32/libcoexist.a | Bin 124522 -> 124522 bytes esp32c2/libcoexist.a | Bin 92364 -> 92364 bytes esp32c3/libcoexist.a | Bin 87302 -> 87302 bytes esp32c5/libcoexist.a | Bin 96940 -> 97118 bytes esp32c6/libcoexist.a | Bin 98646 -> 98880 bytes esp32c61/libcoexist.a | Bin 92420 -> 92420 bytes esp32h2/libcoexist.a | Bin 90792 -> 91026 bytes esp32s2/libcoexist.a | Bin 100856 -> 100856 bytes esp32s3/libcoexist.a | Bin 108708 -> 108708 bytes 9 files changed, 0 insertions(+), 0 deletions(-) diff --git a/esp32/libcoexist.a b/esp32/libcoexist.a index 8c18dc23117deaa1054d339c8f06a3b687cc8897..ec0bf20e862c7f7f27b88e089cb87aafe019d6de 100644 GIT binary patch delta 41 rcmaELhW*tU_6>Y$Vn!*c2Idwfx<#qE`6a0gP;Rq|+IAH+Mz;e1I*1LQ delta 41 rcmaELhW*tU_6>Y$Vg{DRsm3Wrx<#qE`6a0gP;Rq|+IAH+Mz;e1I4lj9 diff --git a/esp32c2/libcoexist.a b/esp32c2/libcoexist.a index bcb1cdd56ee14c7f12a9763cda836a5c3e6c416c..18997cf9accca0b4087e70c814197781ab4218d7 100644 GIT binary patch delta 46 wcmX?ek@d_))(sIV;zlW{2Idwfx<#qE`6a0g3{d{$Ko`;G7M1NSDvTa30E4*?F#rGn delta 46 wcmX?ek@d_))(sIV;s%z+sm3Wrx<#qE`6a0g3{d{$Ko`;G7M1NSDvTa30D(CVDF6Tf diff --git a/esp32c3/libcoexist.a b/esp32c3/libcoexist.a index 22cce973a7669edfb712c844b303b6199750b8cd..6ca26642e29811d6c4061d7c8730b6a6788c3af1 100644 GIT binary patch delta 42 scmZo$#oD%tbwii3xKT=~fw_f=Zc%D(en~0=1C-yqPf{3o zoSUyHw6TdBrKB2|TbSq;rRL_Bq%tr-`I7~GMK^b-Z_Q;fHZ)V1?5L|sjbW`KyijiGy52&Huuk*$OPiS0W*WlX8AdWjQl!G5HXMef((+I z{pad3h2e8DNVyykO9Ar+2!PneU={;|5|EaLii6lNaW^1aN^i1Xqqred)(c6t3dk1H z0TMs}V#9Rx0og)2lYh;B%&0s0-U4w+U62X}h5{glso?;!fhO}U6qkgW%!eckQYo!B z*>0gbqwVCjh0OsrKmj0N17es70zkG9R2;;HiAy1ggV-=}6(n($$%PZ#H!oQ9fKef_ zBvB7vuuZOA;y=CKo3VFt#8MT`3N8kQ4?u%tC$}zj=gi<{V8{XUt}b=wy#nMJfOtU6 zG5O*o>CG<79x!sU@Gvm^0V~p7;m*mx%fOHT=GCrHW@MavF;-aA78sSFXk-Rr5ZD7` zC{I3^AuQwul>r$G0{5Ax*JUt@3HbxXfr<(sqQG!rnar1|#;d~u6aZpS)ap!j%#>!; a0fw{Z4G$W^xh delta 1456 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 delta 6614 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 YA8bVTBRGi8i`~y?JEt9o&o3GM8(DL?djJ3c diff --git a/esp32c61/libcoexist.a b/esp32c61/libcoexist.a index 6205607c51855989e2195d78f8c67cc314eff50d..662a4a5d4c9381b9fbb96ab45c35765cd4f05ad8 100644 GIT binary patch delta 46 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

tSvu(K`}pmoXpRu6}S#u zTr3xE^~ZR8SSOklQZ_3AKjgIp&hh2&0D>o#~V9hH6wg4@BnIY+BoT`GRz6B>=$kYQk zSvh;4tN85(+mGf`eGjDQ7on{j*GYy6D6c_IYUIMAjhl?}A~G;*P~0J(nB|XOjwF~- zEL0-^LqOY*@XzzjtHe-27?6a{^a*0ogIx zuwa8{8}^q;3DEpfGJYV&EZG-!-+v_0Y}tFT5XSRC<8 zwP_V-p-lH(Sekb7Okvjt?1(giwX)1#o%cINr(%BwIDwmFol&nChjH7foDJ)+PtId5se;c&_I zOM{*zL310$(7|kmqUJ*U%9VVcFFY65aB49Ha7490%m< zI6f`UPwP6X~oh z=nRRovY|8NIf2WYQ@E}(ATG#z;5%jep6v`c$SqHI20eeZow;2BN48sryMmsNZD$vp zZnxah6^vi7oP23CE`u*o=`#PXwaOTd4U+O>-PZiugZxeoIMR*BDPQDXCsBMv!sd0*nEKe!+s{N;Tj@rr&}#ED-+#pUMJSX-}# z@z5p8&)V|0LR=1`PFCFimm(e>HXqH3^6hKm6J@*q zEM)DvCOQ1O+vTTwD?DYGhmR5S%kq5@kIzH2-k^Ta77)*8*B5GU zVm?x*wIoZHb_cx+;q#&K+8!s{x=UP9%>Q8_`?|-w4q?E*i^Q5AKk&GtuAXPsG19Bo zEfP+W_j)gfB+#&%ISw5DBrmVE=?6aTMP%Z~%bGlT!l zXrAJI2ItXo#hl|q+p2iE5znU`iuv9(Dxilm@`r{#SSnhD>*)22t_)Zn-IbEVgR1VGP5^bWU5`I`8nw5G2x>)@NU~TzNLYGX`pX(M85gy9E zUTn=0efsTD(dM|zt-lc!my7xOf1;w?`3xS}Xgw5z9D%Cm>TN7f8s1HiqC?*u6CuYL zxBgO01Rb9W{X;%4@#rI0ilA7cH>^Z>(4+S-HtY8Q#b!Oh-pyJ3a9_l@sSkI*@o=4| f;5(^LS|!R|2k}&o8BcX|BQ}TiuQhJM-n{<>06bVT diff --git a/esp32s2/libcoexist.a b/esp32s2/libcoexist.a index f06cf0f833d9ab334306f12fe03af38e7448a87f..abd2618d69a4517cf8499691b4db54072c952685 100644 GIT binary patch delta 41 scmew{neE49whbFp#Eeo>4a_Y}bc<4R^Gi}0pxowTD%+2#FdC%-07^{`xBvhE delta 41 scmew{neE49whbFp#0)HrQ;k!Mbc<4R^Gi}0pxowTD%+2#FdC%-07vl-umAu6 diff --git a/esp32s3/libcoexist.a b/esp32s3/libcoexist.a index 21fb35634fbdd421519bc985072fdc0ab54dd1df..ffa6997bb154a506d54f6ffdde01b77e0afd05ac 100644 GIT binary patch delta 41 scmZ2-k!{IEwhen!#f(x?4a_Y}bc<4R^Gi}0pxow5s@pHAGG1x|07k?QZ~y=R delta 41 scmZ2-k!{IEwhen!#SAQsQ;k!Mbc<4R^Gi}0pxow5s@pHAGG1x|07PgHXaE2J