From 88405681fd6bf3215877f166cdfc0bf8d0e55a01 Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Mon, 20 Nov 2023 13:20:12 +0000 Subject: [PATCH] panadapter update --- am_fix.c | 1 - app/app.c | 3 -- app/main.c | 6 +-- firmware.bin | Bin 61276 -> 61292 bytes firmware.packed.bin | Bin 61294 -> 61310 bytes functions.c | 7 --- functions.h | 3 +- panadapter.c | 125 ++++++++++++++++++++++---------------------- panadapter.h | 13 ++--- ui/main.c | 68 +++++++++++++----------- 10 files changed, 110 insertions(+), 116 deletions(-) diff --git a/am_fix.c b/am_fix.c index 5035796..70098f6 100644 --- a/am_fix.c +++ b/am_fix.c @@ -292,7 +292,6 @@ void AM_fix_10ms(const int vfo) switch (g_current_function) { case FUNCTION_TRANSMIT: - case FUNCTION_PANADAPTER: case FUNCTION_POWER_SAVE: #ifdef ENABLE_AM_FIX_SHOW_DATA display_update_tick = display_update_rate; // queue up a display update as soon as we switch to RX mode diff --git a/app/app.c b/app/app.c index be017a7..0639a7f 100644 --- a/app/app.c +++ b/app/app.c @@ -1813,9 +1813,6 @@ void APP_process_functions(void) APP_check_for_new_receive(); break; - case FUNCTION_PANADAPTER: - break; - default: break; } diff --git a/app/main.c b/app/main.c index b48f9ce..a163860 100644 --- a/app/main.c +++ b/app/main.c @@ -78,9 +78,7 @@ void toggle_chan_scanlist(void) return; } - if (g_current_display_screen != DISPLAY_MAIN || - g_current_function == FUNCTION_TRANSMIT || - g_current_function == FUNCTION_PANADAPTER) + if (g_current_display_screen != DISPLAY_MAIN || g_current_function == FUNCTION_TRANSMIT) { g_beep_to_play = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL; return; @@ -1110,7 +1108,7 @@ void MAIN_Key_UP_DOWN(bool key_pressed, bool key_held, scan_state_dir_t directio #endif #ifdef ENABLE_PANADAPTER - g_panadapter_vfo_mode = 20; // 200ms + g_panadapter_vfo_tick = 20; // 200ms #endif BK4819_set_rf_frequency(freq, true); // set the VCO/PLL diff --git a/firmware.bin b/firmware.bin index ba0f45339a5addc95a76b30e7fc42ed82bfd3b6f..b88225237e45253981ed9014d125d5321ece75d8 100644 GIT binary patch delta 9079 zcmYLP3tW^%*PnTImt{e260)!??Cv81t_aJDfM{Gcb(e)u!8<65<|Kg;L&&1&Ye5S=C|PJpLJH((zf6i{8?cQ0EYo3qyDa7| z4imZqR0_0M9%#SqN`)$J5)pd>pCRXCOYl~rjEl!Fwoi-;$M_1Ftw>>nZt}V!2Ja$A z6dHV-TvN#LX5v(wz+1>C%5{GFO9lI zQdvNW*`(Wq0_+dSO;tR;PQ+|A9!ct04UQnKYyy^(i|lQ27ncfkR+G-5^{}k0_}NS# zM|Q=V!g_teCY3>;IxEf9WI~nOBxKln`I);2Z4@KL{{$ms1^f@>zX!mdqPzW*VSyr$ zTBkZPGR6~RWR8Y64rK=!N*c|YK`KE@fW43Os^g(X*og3uMw?KLtZQtG6kdACmqXG= zWMd7f9ubL0kWC{tC3pH5_VzSUfmk~=YBoZ9o7&XtFGjbnr%!e_27|O=*gq~K^d}jY z{4LHUf{}Ni_q!vvVJWFg8IR|;pG@h&k*{;X#xCg)TW|r%7hlOyEKttSN$hJ$r$&Zr z$Q8|b5cT0Sfa{}V!I+MO9u3~X5Vm@D`qxj&{Me3B=-zBylDQNmokw9VsZ?hQ z+Bn+nsWILv!^8b8{K$CBt63tY$avk)(!Go0(j8|iD<&FxYvz|-6kiL$T0!nBx^P`(X^v5^m6}bqk){(d?gowa zTAM_Tx&wRAaAfiCanU>xx>6|()f#on84=Yrg!>hGVNX7OgByV~+ zt{_vVD;dT|YNyY_qshhT`*A3#nK2Je<)s=re@(9O&^yon^w92Zr@ z#oKTbQmd@k-t1$VLe+8$0*mk_SvNBQG@x~+3^eZa%;FHvgIIP|!6>X{%^rG(#Lp_i zt4PhPx%hQ*ah6WG#5u2EiSc6DHL>_o{gUqbF2Al|H~qwc?IT@@$W1>a8MEUW-f`TA z$@@mcSnrj&X^`_BrCA|iTyzIlt(a?R`}=? z$5@kX31c7YR-w_xr_(~sf0s4Ks8DwUW*K`cshgXW5aaekrxOFNpkc!iQXX&fQlSea zGH^o9jO??DSVmD_EwC>pXXmnPt6Rd>*C6{399DtR+T)|oxRCwZC%Gy4K020!RJ2E4 z_R$_VyH;ec;1HZUY=6<^qo>G~igcVtLgvZvMxvgVhx5p?c?oe^53;*_*(OGNt>J=N z)4jJa817Cb(xgt-i0u)iecqzDdmOT#@FgN2y$w{`fZpIM$bQTxh1*q2vgXglon+7a z68w=NyM+TdsZfuvNX;QeGSeD{)Vl^VR9oT}7HLcGX+&g-Qq#9PUQML72s z>^8QP^_C$6CmAolMp*j05|6XyKahqwc?Zc-=);vTjMy zltMo{+-J|N#^L1Hb1U&vgkAI=o=d)6G#(6pplLgPle}xnimLIVL|!VN`Busk5wi!| z55b!J?DNS3Q!*SW`C>WNk?h5@;Y7W?xJo>N6WY9VKanh%i+?4Hmn4hM_`LKv(zK*J zaE%+;k9c{Byg&q18E`peR~hhOvc4({bL3=IIsTZ)myUy;W-pcF_etH-B3w#NFU^wN zb2Cb;@X$YqWZ9k&z5Ai<|JRsDK3UcZ+F8ClixE1>?&XsrHhCx6kSf6JuZ%Wr)($%oo;>sFB3s^794Qqd`m) zPH)ZswOe%D-svv{yGS(k89`&9BnZw#kVa%5MON0A1P6F{*K^DON9ZA!>tn;pt|LS{ z;?N)@LPL`=rLnz)ap)e*DYVUHl z~pDN%HHi(}|3JPg?AA<8<+;dp!coa_m zvxg2$IlO}@L~n8QEEnGCCCW7!h8j1QEVL?+zd>YQ=JvPo zS)hPt*=Q>)C^8JLmDC34_ zYH_zV=I4?4O0H2>`%7CQi-@4<>0+ezvvjF!7%4NQQ(&>DUCgN8@YpC8<)}_&gJvnB z(cxGwC#qJMjdfAgVYOHnW)`OHhie%nkF}tL%2+O&A&pv0Mi|ka?(zt>QP$WtLnpH1 zSIMcDm4zBF(X;^}IWeHCjiZTPJix)g`2+F_@9lEF+%^?!8G@T|28Qk$QqEWf zaQ$L9bz42WnsrSeBN|3D7#|?SYaFks86Ay7Rd5@G=tXwD%ccs5N6H;22y%HY;P1pN zQU>Tbs`d$3zMj7x?d0fCpM$>danff!Na3JEJsF)F1xUg7*$Z3t5Mb|URP8*Dl(V6y z80eSpbtce5Twx8632718!(3rN1pqZ@fD!>Ec7>`Y8z$?W^t9`)B2~p6X!I{ibmWC)Ih1Z7!%~FyvyeEG{%mZ!{ylp-YNKyXZ7dII`c06mI&x z;~4`#;(e#i7`L$@6YlLDjs;4=o0+g<#~hjHjkX1FI#muq(<`vo*#<2NXmQXF-Ggnt zip*yf;0_@e;ANPc2Js#3cHSFslkQ6S>2G%qQl%RB>A&t2+XC1|6(UGELhql=(Ko&7 za)H|4>Y#xjuM_TAql{c?jLLb@%kcGJ`DhnMYrMjNoT!DPZm(#7mV(s#ynX}p5TGAG zPe^Tn1v%(^lDsyh(gSi{0LMf4CqkLUu;$PIie7M5uJor^v~*>3BTp zTgx`^Z?R`!G;_y-f(6Efg}gTwe`x`n2BcP6SyTvy5vgOW6$2cpb*>R~KItjT9LNjQ zp_X#v96i*i73j+K{8wx(8>lI;&K^hyS#+aV=mA-G*}xk#bF>z`jj7=4zhT2kq6X^% z6`b=5-c%2uUpjrPt8j~Uz+Jse$)W~1A<;phg(K3$NL77l$BxW^7miLoTI>WX5U z+Jv(k)D=iwaGj$gIRVQqtc31$mK+X-_S{_R5}CDzKNvtqCXYbzIUv>%*5js}uL>$G9NgI(PX8`KJKcRkQ| z$=!8qh{UOYD2sopzoxOxNf{!0H60wA$*<<%(`5Urw}YlSQlYf5O?bpfi`&<(PvPI4 zpS-pL4=2hE6Y;lX@dg&hldT()aA^C94RVOek%!>fN&(bRN00Nr$Z@X>;7dPk%+I094Wpb1H>&Cg4Ayp09(tJ_qzF;CBQ4#a{@m zfc$E}nQnyYA$Cf6~Kpo5~2PH;PH3Kf!8p4iyYgm3#)PXvtV6Fs`89p z1c$GR;4OKP&-lJ9=rrPli)B)jnVSt(Kh@-*Tgc2UEFMMHY;lM0a5otIVv+S_{+2@G zV;nfQTVB^doTu~kgt!`Sl~GVl$kk+m7 z4PKAN7*~r@1eR2z4D?lU)nApWL^~8nD_@=FqYr(|{!6$1;nfWA?)rYXC4r}3kU?e| zttrv%wRKJ4Z_RxmD_-WjEZ+y3mt|tWV>$D2o(b@jKMFkk6@)&8^wggyAN>TxO~8Kv z9zbv}LVrx%x7RfAqn-g6psF5b!p~?L(B%M(P@@S_e#Xy3S`XL?cnz=}U;<;e z7g9bXauCutA^iwa{Z)iIA*}+O23!XG4mbn+b0CRcpn0zY+^0yz-;m+0rwQNynzx?8 z_sG*b_J-HF{B6wMas%2S*o${65T$0)yQ3!ToX5}h&pr#9d~_69L1u$5`#n)J5chMC zp>y@u5E=%`odcK-SPobZ*ak0!4l2m59bBtGQ3jkw=~agxi&PBE(ML^gj-GMw^XAtX4Qsd#>yknG+mrSE z0c(sUhFx(98Bl8+;2xClCPD|axkHFViE)uaK1e5fTY_uRiGEDN?k*S{d%a1DAEX9=+wIB5;`a3;y^(4&HKfIQez| zuMp5Uc_10DB=--rijR5ua7ZxO|DGHNkG1$Vt0Gojhhcp=YQIK9R{%DA<#c2^Bvl3T8Jj2^ZWkd_w z>4isbdULW^=*>h9`Yu`AoC5E$JjC8>%H_X(%YORzvzr; zVeFrRwG$_zZbpkpgGvZ4VnmCVeoyia#!I?65fUr<=}%j_3(TNO}*>l2^23GUJ`=<29Qb-U^1W-Fc!)u19<2329%!!OoO})Qr=)K0J<8m z7VsM2Ex;Wp`yJ2&;BTLUz~gV6Pas_mJUied&_Di#i2H+N2=^o%ju$=S;_XDq;Us*A ztU0X4VdThRKA7_(e0xdX;VK+S=C!0SoRjQm8459g6D@I>!LBH!UsFJfL@H4U6j;k| z%q>TVjYVg&{nUZoDpX}SJtm~3k1phR(F8VyfG8h2N$`=Q@a+Bk$fCSUzEWE^%w`45 z$_)6&H2(s;)sP3pR>(mTY5)WI#gL8y)#d{Gi-T*@d zwFX0eC8Ynn+%5oJ3wR#*yumvKX&uz(<@pitPa5XO@KbK^@%yPzBH}kN?KR}aQ5jxL zoJZsFXC$sw9yHO1R70OE3hu|&xG>E?8$=W!7JjKIq^`9XCy=wP8Muz%4-esCL4lGbBU4WGeOy8yhc;-}9qmtR5-+y)K?E>2k5cTjEvkxT{fDpXhmu9Z3&*?>PC zBzp@|{vz#xG!(2Cc&ay;B$2hB);YumiLIZmbl|a-vG3$nD1^p&`8fBiRHx{pQNB>3 z`$!(P&Nr!WlJRy~gPOS#0Q@gV^+$2yzr7e*=8(5P>R^d?*keE00NSXt3>)@wr^5^8yHkV?Ou?v+# zD5a0iaq)eiOS^3z8s^(?^M_xpHV8wbLrGqHE51waw=YWI#g_pVwJ{STJ{ZzZe|Ll@ zBFnrUl!7dCdOY+UuZ#MT`cG@deLXPiKKhj_L$TZdVsNRHqd^@1a`jQhSpkhZv{C>B9_kf=N2D&KO2j{L7RPB8~KZ@8XTlta4N^`=q_A>cl`9{SIL z{?@u?JUc_LLDNzx{RAGbeN^ERAq;7ZD+w`Z3dpC|$>*O2JI0rf;dp)#@P8%8I@AqC zE=GwIlrH5MC5F_*IUv-GVN3cwC_cw%LK*~*r*uk}dxXjS`;*e!-ZW!YQK>ezHjmAM z)@lfH?{g;B`YZi2J#>!~jbyCqTK{adnU|{YCl7rc`ce!Fv-QzFE<6!>NqJ-)ZX8}H zBh&vCG=8BoE%~8^HEHwvEq&AmHU4YG>3{dAz)wZV6g}|D}yGIXu+p>41I&YKi63 zLUtn``Rk+WNb-r#!-l*0XWEWJ{?R6|xabl>Pn3u=e7r19lgXdS!0lM}StNYdf0iPj zp&8V;>K2!V-X z1P1njS&UE%ss3UEE+oz`oFPNJ`0ZKe#9T^m&r=r5r-hc5PO-wQvg+_fqpMCadv?VH_+djBKBR5yLY zCya$RR(iU5sBsoK`QT`IBehv@Vekvk|I^$%4PWaIXe#$xyJO>|ogfr332|+`qkY78sQT@L6o=DR{ z8{yr`ns*vwYTq>$67^RzqlkA67y_aCH%o61QZlfzzr6gHkaxd|gP+Sfze)+J@+$H# zSeM%ZfxnPAzuFeE$h8$}Pc`}}qRfvV5d8K@Extg$KbbPV&;8|1FRgd;KLI?VuW=nW z)4}aRYN_=RZQyt++?qCEdO|?=_{Tkly+7f7{7Bz-lh^DEB&RD1e3zMBix}oI`MPTq zTuQX79Iqu)Po2bnkch9h<2T6RuZzQ;b0bk>2u{3d^|SE@XDJbXQv|<0PW?uSFO${Z zc=2qq@;~wT0BQOUiwnrf{}fAJ9dITd(MA&a?d^n*+!7m7&M+P*pE>PzIp~E-s_UnR z9T=RbGzU^m2C=%SlPJHdjy&jesfvs{P;{fn#xI4j@M7LWj(o=s{>J5?O2_ehY{@mo z!sc)u^2>L*$_dT@)lj3mtVB1WAiOaNiXKsi>k%F5PJ&&*NGB_g`!aeZBq=lsZ%y{ssPMt}TEOm%bFzkwnJUpY3 z9d@iS$}6&K8MUxGP4SZ95#8q)0%!CQ_)R%yjR`L}c-{EfX#x$J1DI-C3~j?4-vlu;R73wv%}4N zj3>4hjf}MHE}Axqk4i&dB;f}(quHlIbJD^$Vr^4fc;hv3=uZ`+6tx=+x)|2H*_aCk zv7cr-S%?FnE5jfr+D}_u>y2~B+8?T9hrQ1agk}WR>H#GK!vN*6jy^aP;`6IvE)D19 zIaW^2M}-<62WBFzeqfqUbH;%dq1Mr0*5t7Fi7p|umG~Y(z%#iZ6GA=w20f&yENq#`T8*Wfoav#@Qt4LK0rpUUDG_!_SxVe$+yIWap0!cqfUlB*4EM zjI$_lMf+UK1d%vx;i$?5+6C<&Uh;^>^N-+{;qqSx*aFxE*atWWKsh<^;lDXKycd5S zU;$hN@cGMttAJm~{cFSIPr4nUcy`4qMOrHSrD+u!?HEnwnAD8+)a$o`+GT$}!s358 RL+&LAggpXy8sN$2Ax~ux?@^G1ih6ktVG!Fx+U+OHd9P=6nzcL296@0xu^n zEG(UB)(^^pnDLhN!fAWp#rL?J1` zhpcNQTQI}B$YAgs_#tCRI*zq&2stIjr%2xLTwtvqz6$?ry)pa~F}_81j=Te`4KdsC zk3>95iARx?QRi@{bzsyX2B(o$c?sS^?#MS{5m^~`HKN>y(t>Pi#3G6FEGdcKf+NYL zcs+j18lP|nOI@BY6^m9W!kw2qT4-{g#3UZWo#b3%DSnYClaldM)+dspF+N8s*mTC_ zA+NCs_*HV0&A^ArRaSvtAa3>;ZX$nIz6|rqQq?p50Qp!IC%+%~N~tJ%x$8ig!tkCf zKCIMY)^9^$&OUNem5gm9n5)GqvVqIMp`?RL!BTR8>kIyr*Fu{b(lfddR+F1t!SDg{ zX0lm&BM{W4GKy4ZWCa;H(Bu+{9J5K$c?Y4b!HE6$aD?oD&!KJwz#n_k`u8#6VwhBq zCN?(87hz&Ph;AOu4KtQDTQY{JMD1bDJLIk=8CpokMN40F1m$53>fPvA$@=L}fhj~c zE)U+V8yAZ;WXrg1nlA$k*EcVyC|EaFUV+fQwl2-43vnHrXpgX|2^fS7)b<~Q{!J#Q zeTyd$(fHdi!kzIuF(Mn%r{Q_l6Y2dpwwWJpIw>3F7+ypQgD>Z^%asfCq0aTBCnFxO zB$qSJfrQ`BBzPam(^cbFtowCM3_fp7niz{?76(p`3+^45pv0*&!c?NYq4H2?E-_^< z#(yIn*&H(%Ahzt$V(m`|bz0roat8J(deUWln%tYz6#cj_uklc!$fkt3`e~O>;{1&? zeNE%yRKo5Aa$fY72(`aXNpJk=Q|aYzUvCw8|qY$wU154 zTS>=b=djkgVR9V?)wwq%Hs-HwXdZ>w>!Bc(tYN5=$n#V1RWdc-kAJh~7lbmPwZ_86 zpop)%EYMY|L23jwjtJ3wJzix>z(YxwTM0egrFDc2Z+oo@t$QVo=LlJoP_5zhsh zRlKs=Fb4%YpCRJ;$=uSw01OwU%0MnzuybL6b!b&Yud|eykaFxKfj5g3&sQ=5Ke5bT zh%?C#^Y`Onq-McV*za=-)RB$;C{qv&8fCa$HZ*8?66|ww`DD3~Pj=uoq*2+i^H6|k zi_$1;2yDk|q_I3jq2`h5E7QU{?0hAF(k|M+DEXo>NW<6>8=#}eiSm-j`#!{R&lXL< zI?m#wH;H0lF@BoVEL;pn>W77T{3MC2hzbA5g`ML)smM#)NqR+6(_Ys-SWsYGg8lbO zFAa6St+cSAjEBC?*Rpes9{MVe#vz+%Gz&dSU9*i^)tNF)=`aH?&q0gy+FwSVVmtKRO*WC;`R}qU#$?b|_e4Xej z^WglgtDFYsz8jwNh_^Be_mGULe4I#Xt0v>m$tP7$z>`*Gg+{sRO(=T)JJ zrYV_GmOm;FC8$tu6XqCa8>wBaP8sHvpwp>gm(iH92q`E#*9o-g#*3JUi0l*gW(V!Y!SOGsudiDL9?%SgOEc z(y?@9(y!3xSRfSz=nW`!4e1WPjGP|@WN-;{BxBiP{2AH3tQ0Ka?Pa;Jz2d!7j1uRU zB&9kXw~_hqe3NXc&cLh5XVtpUa6fXM_4}!Y3{>+{se511UQ>JJ-AcsB^d9;R5wBP& zo$E%-;EHkje4DdPOQ?TCuYQ)+BMxA^qmGq*?wy9HE+o zYgpH@Bn&Jia_)k+QdO-&tCcu)M7OE}PTS5^HNmNTki$>g2wuGy?uVtT)5PBd{B#*1 ztE<8{c#-p{UyziAcvolR_lT~>h~FX`YjUxd9IL6q9VBMW6mokls!l?Mh@Z1YmFA9IU}qAgNKky~2R5u}w$mXUWkT2Hh@m|71n;4?BXu#Dew&z0}c(+%W@N>j#$pz;wtCqv9*7Dj$jCYZXPd|Y9o~io; zhm#G@%uQnbKKh<}^UU>YIvPJnz@%d*>WH&ouA;DdxtpeWGuaxWo3?p8G@Z;|Uk#G(UY{%YV9xb>qm8aSG)ouXkfRaVJ@f!H zdYQC6`vGu@Z03zhCK0Ya5jG-H#fvG9-q~-Ar8mP@?{{V4QF)}-slx~I(tHb z5PO@b8?z(E!kY+iKqE55&e3FTW9e{@SMXIQ4RIcN$&ZbR(#NkMM7xvFFeFB!kl1;e z_!~{x|L|s@U{gp&Fmyj76FWclhQLqovY%yr{S+<>;YX5wM#$AIK`2?0G9y6?eK(V) z=jDpmy*Mj)!tedUrE>eGFnS`4Jq*P{iyG4Xyb+Y0e_oDn6ZyvMjA}2R7G!5ph*9jU z@`gBsaiU=avGKPqR_3BveoN12aQyxW4&b-ocz#G;+!%|Mq;;dN=`7R*zO%cusMNHn zQ?%=y%GHH)r_L_=2(?vS4Msn`g29lMR^+2a!whvYPkYkKTHLPHt^ijv*kJX!@-KGGm|7J3}2uwE7QOltm<&ic)C9+-Y4EIQ(6b2>9P)Q6W?1@s%HqJJ<={e6GHcEwX2^^-=o{||Q z#i>=I)RJDYbF7QWlFZ{-H#Pc793E(8G!|et{nUfT7)%yqFrJj*i5^BYa-1O~kEi?m znktbd#O|U}kXMg4(G*W^Hp}y0@iRg@SU!4_ryKo2Lp5FRY0&D~hB@ zpAp)C)FW(aGg3!ho3o~ECmI`mRc72?h^~jDx0Txvl&-~?@+Xz*L4-;djUzw2n1xLQ zzr-~OQQ710YnJY%MN3V~W?X>7mwa(4oC~B;+BswZvxYPY_NpO{%wA~%?N^VqRX|;& ziLxy;RT!W}gGj&7AUuQZ2RWZB?~_w zt6s^+7s%09`XZLPwD7jME9j`3R#;m%r3)eEna%5PJjvbi1inaK+`{23a%77dv)1!l z6c{eZdt0~RLQ=mi4_kWjIqrZoI0NzU&I&z_1Xl@_U0A&Rrvs zZ=V`FEAVAej|rz-sFb0cg1kax)0$oMEmFIkgXB@mc5n2%-X^0Y5!qi5t|Aot5l?53 zL$75(zT)C*DUg)$zor1!C4Pr8ndkrd1s&Y40lJiD1k-BADcZhlQ<6Ccc(=*Y9Y%R3 zuQrFOL#{z!wFjxrpaO$Vq0I=;G34tV$xNu9{I(-8M#MAwFWw4KX_aUXi|Q2hnE~o1 ziq~VCcEVBxQ3@g=P!>d#8umzhLZ)Uq1mkVM(_TjC2+%ITw}5{G`T+L;JirGCxr@+9 z01MCnl)z&FYPbTDf&Kt0C5Sg2-mMWtjnQ!SFfb27B?p*Va_aRe{1i#rnFTS++?_g{ zYu&cGubk*GIDE3{W( zY|vmWzyMebcowi3@Fto4My%#TC>;l^fe8td5dp20X6bSywi4z?ymIAFkA zfS&>9$hp>(&;gL(l=}$%V)eHkWbnVN``e%9vJODKulKbuT>`b@X*a^HJ~^AGzPpE;kNA@stpfNI+4)*H^AS% zbRZ1^6!F21;2yt_c}OJ34k{oocJW{qc9HP+4vG!;5Gp2re=oo48kD{O+=gH52W$g7 zycKW@c=rJk(829ccR~3E*sfQh90YVY@WX)qXgY60u%|oD0Fx?s8(<0t-Bb5X)Ofl_#swS5YDW`FS8TsLeIzi+XIVKrd#5fbc);&@gM8tUz|9eT)-ify!GLLYsYu;DmKS;~_8rZs1?V~&1+lZgH3%BGuvGRGO1%{rKs1@M<;JrBHksKdcwhl3;% z01VU@0!;>F0?xs^Wk3bh1;PdZ!g+jdI9PD#e-|LAcP;c2F8gKI5z2;!BcT2yP`DHq z4h2gmpt1_^G`tXO)+wMHpo1Xd{lGtAT$UiLVtYW?PgaSDWN0NjT*VG0c(Q)_ra!DB zek0NZ*}MO2yPilp1OaAuC?ZM&NHzM;)x+J^ktCfwG!h~#$WQ2>Pj+{dU>&*Hk&U+z z`G-gFL~`OoHH3e6K2!$zX{3t`|7eWD%NscHzVzZ!{asmnDauTPkKQA* zKT_jf()dw4K1<&ENR$65&qD|<-WS~ZYN3!Ip6i})TQOuzj>4k;4iKazEL4z;uvjgK z(#3#&fDn!m{Bi75JG3&uCR_k2+?c&Uqq>6-R*SDQYO#HgZgK@1Lmh+kMHhaoI`QqP zOV}XO(n4HtMy6*6Xfi4PI7zxQFl)vvQ(tA1hPfOD-0#S?kCTG^ehmFgQWYpU^AZEm zb4vbx+ttp5dgcA^*ifl{!Q980M>W3_d-vfD8@@ZYuk3+K_pl3bV>{CV%gGZ&D z2;%ssXMhg#Ze&*j?@Nz?T?O>Gr=B$f{nRsuT?w=kqNXQ}!`iX)abBj9bhOD@t8^l{ zK9t?og(nU`5+rK;f9*-^B51qMGli`J`le@>QU^KN0lFK0IllmYYKLdR%ms!FG)GHm z4}_fqbeup62dJ&jH;r(=8;1>h`F8Q`w(^T$Zl!&FYfoGH$=rg>F z%AtpgGJcetZ!)6{1Yu7WrO)|-(uBy7()<2QQ*QArU1GyjE*E-hAkF--JGCK18It3p zN8M;VW7jl<tvv!Hqs4bwXSxn{6aMvkF`|vhDLN-~~v(a7U{AlTpaT|Ma7ALi(YU z$iIx|ZUlso=|J-e_949-XyRlA2WqRKd?Dbd4FLybkiJ0Xf2pW0cI&ntYSwJ+Ywqut zu<1oIi;%v-Hs)=mBXh>Qj3`w^!*CSRu0+_m&zo+HQVIIi;te@EtldjLfbSxA>`D}+ z3IXn`-c&=#(IBmtz8eTi#5SCjWf^UnM=pIi8BRh>k0$xSC2*2q1&OedKVU^RC(rK% z<1!ZNcc6Y898)b>(PNApAHb^5Ah7%lzC{gEDe37+ijQ@}HzD{^)d@Tob^1c#B%R=c zKzSAs+M|;*{J}qE@1n2q!d|qP5*pqy!NLEkT)yAG5zI%B=4ad8exzhT79PLw+)ui{ zN`f7{_*HsDy`L@o(f*Vp9Qd_FdSYi}oo5HMo@kjZ{k8v5l>P2aLBX&1uqw*5>t^%}&V2Q`Hp%Rt zPAcozZTKPhTD2!vGQV9US58iVSTXWc72ZMCo;raalC*#BhA*op{#hb@+Ka@^kvR3H zUE&bVR0B!+x)?5kwO=cRFYRCZ@qDu58{t!h^&1X8Ze04NBy`u1tMU*&@}z&;m-4wc z)Pa->Ob4pU=k-;ACaGllL27jgIp9neQq2ajdMQtGzpIVybbD0AradUGS?mxN#n=Qf zA0el{<3^nKxM-TI6BM|>ln9#>?k9ua6)5Mp!&IY9-pW$_xT5H0HN1LAgS-!^7P6$N z=pkjv{L>xy01L;8Vh6r9?J;FZlkV=8EN3A)ke zHiHH&0?c)+g1!pZ*WqnlplXoDSPk_U*D_O@2#FO1C_=1fM&p*Vx6Hr~b&*?VEYfA3 z7%mf*B7%H&T);z@lj^f-#b>_U8EgYemDmKiV7MgApq89v!VDE!K#rcx$GPOr*?JsB zmj1wDJ=yew5^pB&|4^5Fg;$~ZnbATo8_tWi2#K7;1~fj_wzqiB1R<3SW0CxSaoL{) zRA^yl^j55E>xyo^8XWagL!ZX8%9Rsv?Na4k{ zc+-3`^+z>+$y)Pc1coSO!+9O#NIp8>gb$K5TMGP#!CadXud&wKri+80oH$|WlPfZ< z-(2*GrwQKNI&dJK0Xz@b0@w*?0igVRcnHt@d?7mc3UCVW4M3=$2K)dxPsG>8DE=IF z96NK}vuvgo{xWrJM&=}~c2ZWB)o|@rM9BZu)V~ej;76|}Sd)KG5s6U0h|Id5@c#g{ CGWJ^l diff --git a/firmware.packed.bin b/firmware.packed.bin index a8f56e823550345296d1d277515c21bf040c5574..9f292db7baf02071e4d77ee6fe900bfe1a439298 100644 GIT binary patch delta 41173 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 VB~$7|C!-j(OFL%_g(7b}`5(1GcbotK delta 41173 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 diff --git a/functions.c b/functions.c index ee6574d..043976e 100644 --- a/functions.c +++ b/functions.c @@ -294,13 +294,6 @@ void FUNCTION_Select(function_type_t Function) BK4819_set_scrambler(g_current_vfo->channel.scrambler); break; - - case FUNCTION_PANADAPTER: - #if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG) - UART_SendText("func panadpter\r\n"); - #endif - - break; } g_power_save_pause_tick_10ms = power_save_pause_10ms; diff --git a/functions.h b/functions.h index 31126a8..e90796c 100644 --- a/functions.h +++ b/functions.h @@ -26,8 +26,7 @@ enum function_type_e // FUNCTION_MONITOR, // receiving with squelch forced open FUNCTION_NEW_RECEIVE, // signal just received FUNCTION_RECEIVE, // receive mode - FUNCTION_POWER_SAVE, // sleeping - FUNCTION_PANADAPTER // bandscope mode (panadpter/spectrum) .. not yet implemented + FUNCTION_POWER_SAVE // sleeping }; typedef enum function_type_e function_type_t; diff --git a/panadapter.c b/panadapter.c index a8b910c..74dbfe5 100644 --- a/panadapter.c +++ b/panadapter.c @@ -23,18 +23,19 @@ bool g_panadapter_enabled; #ifdef ENABLE_PANADAPTER_PEAK_FREQ uint32_t g_panadapter_peak_freq; #endif -int g_panadapter_vfo_mode; // > 0 if we're currently sampling the VFO -uint8_t g_panadapter_max_rssi; -uint8_t g_panadapter_min_rssi; -uint8_t g_panadapter_rssi[PANADAPTER_BINS + 1 + PANADAPTER_BINS]; -int panadapter_rssi_index; -int panadapter_delay; +int g_panadapter_vfo_tick; // >0 if we're currently monitoring the VFO/center frequency +unsigned int g_panadapter_cycles; // +uint8_t g_panadapter_max_rssi; // +uint8_t g_panadapter_min_rssi; // +uint8_t g_panadapter_rssi[PANADAPTER_BINS + 1 + PANADAPTER_BINS]; // holds the RSSI samples +int panadapter_rssi_index; // +int panadapter_delay; // used to give the VCO/PLL/RSSI time to settle -const uint8_t panadapter_min_rssi = (-147 + 160) * 2; // min of -147dBm (S0) +const uint8_t panadapter_min_rssi = (-147 + 160) * 2; // -147dBm (S0) min RSSI value bool PAN_scanning(void) { - return (g_eeprom.config.setting.panadapter && g_panadapter_enabled && g_panadapter_vfo_mode <= 0) ? true : false; + return (g_eeprom.config.setting.panadapter && g_panadapter_enabled && g_panadapter_vfo_tick <= 0) ? true : false; } void PAN_update_min_max(void) @@ -58,7 +59,7 @@ void PAN_update_min_max(void) #ifdef ENABLE_PANADAPTER_PEAK_FREQ void PAN_find_peak(void) - { // find the peak freq + { // find the peak frequency const int32_t center_freq = g_tx_vfo->p_rx->frequency; int32_t step_size = g_tx_vfo->step_freq; @@ -92,24 +93,27 @@ void PAN_update_min_max(void) #endif void PAN_set_freq(void) -{ // set the frequency +{ // set the VCO/PLL frequency - int32_t freq = g_tx_vfo->p_rx->frequency; - int32_t step_size = g_tx_vfo->step_freq; + int32_t freq = g_tx_vfo->p_rx->frequency; - // limit the step size - step_size = (step_size < PANADAPTER_MIN_STEP) ? PANADAPTER_MIN_STEP : (step_size > PANADAPTER_MAX_STEP) ? PANADAPTER_MAX_STEP : step_size; + // if not paused on the VFO/center freq, add the panadapter bin offset frequency + if (g_panadapter_enabled && g_panadapter_vfo_tick <= 0 && panadapter_rssi_index >= 0) + { + int32_t step_size = g_tx_vfo->step_freq; + + // limit the step size + step_size = (step_size < PANADAPTER_MIN_STEP) ? PANADAPTER_MIN_STEP : (step_size > PANADAPTER_MAX_STEP) ? PANADAPTER_MAX_STEP : step_size; - // if not paused on the VFO/center freq, add the bin offset (scanning) - if (g_panadapter_enabled && g_panadapter_vfo_mode <= 0 && panadapter_rssi_index >= 0) freq += step_size * (panadapter_rssi_index - PANADAPTER_BINS); + } BK4819_set_rf_frequency(freq, true); // set the VCO/PLL - //BK4819_set_rf_filter_path(freq); // set the proper LNA/PA filter path .. no need, we're not moving far + //BK4819_set_rf_filter_path(freq); // set the proper LNA/PA filter path .. don't bother, we're not moving far from the VFO/center frequency #ifdef ENABLE_AM_FIX // set front end gains - if (g_panadapter_vfo_mode <= 0 || g_tx_vfo->channel.mod_mode == MOD_MODE_FM) + if (g_panadapter_vfo_tick <= 0 || g_tx_vfo->channel.mod_mode == MOD_MODE_FM) BK4819_write_reg(0x13, (g_orig_lnas << 8) | (g_orig_lna << 5) | (g_orig_mixer << 3) | (g_orig_pga << 0)); else AM_fix_set_front_end_gains(g_eeprom.config.setting.tx_vfo_num); @@ -119,9 +123,9 @@ void PAN_set_freq(void) void PAN_process_10ms(void) { if (!g_eeprom.config.setting.panadapter || - #ifdef ENABLE_FMRADIO - g_fm_radio_mode || - #endif + #ifdef ENABLE_FMRADIO + g_fm_radio_mode || + #endif // g_single_vfo < 0 || g_reduced_service || g_monitor_enabled || @@ -135,14 +139,8 @@ void PAN_process_10ms(void) { if (g_panadapter_enabled) { // disable the panadapter - - #ifdef ENABLE_PANADAPTER_PEAK_FREQ - g_panadapter_peak_freq = 0; - #endif - g_panadapter_vfo_mode = 1; - g_panadapter_enabled = false; + g_panadapter_enabled = false; PAN_set_freq(); - g_update_display = true; } @@ -151,52 +149,50 @@ void PAN_process_10ms(void) if (g_current_function == FUNCTION_TRANSMIT) { - g_panadapter_vfo_mode = 100; // 1 sec - stay on the VFO frequency for at least this amount of time after PTT release + g_panadapter_vfo_tick = 100; // 1 sec - stay on the VFO frequency for at least this amount of time after PTT release panadapter_rssi_index = -1; return; } if (!g_panadapter_enabled) { // enable the panadapter - - #ifdef ENABLE_PANADAPTER_PEAK_FREQ - g_panadapter_peak_freq = 0; - #endif - g_panadapter_vfo_mode = 0; -// g_panadapter_max_rssi = 0; -// g_panadapter_min_rssi = 0; -// memset(g_panadapter_rssi, 0, sizeof(g_panadapter_rssi)); + g_panadapter_vfo_tick = 0; panadapter_rssi_index = 0; - panadapter_delay = 3; // give the VCO/PLL/RSSI more time to settle + panadapter_delay = 3; // give the VCO/PLL/RSSI a little more time to settle +// g_panadapter_cycles = 0; g_panadapter_enabled = true; PAN_set_freq(); - g_update_display = true; return; } if (panadapter_rssi_index < 0) - { + { // guess we've just come out of TX mode PAN_set_freq(); - panadapter_rssi_index++; + panadapter_rssi_index = 0; return; } - if (g_panadapter_vfo_mode > 0) - { // we're paused on the VFO/center frequency + if (g_panadapter_vfo_tick > 0) + { // we're paused on/monitoring the VFO/center frequency - // save the current RSSI value + // save the current RSSI value into the center of the panadapter const int16_t rssi = g_current_rssi[g_eeprom.config.setting.tx_vfo_num]; g_panadapter_rssi[PANADAPTER_BINS] = (rssi > 255) ? 255 : (rssi < panadapter_min_rssi) ? panadapter_min_rssi : rssi; PAN_update_min_max(); - g_panadapter_vfo_mode = g_squelch_open ? 40 : g_panadapter_vfo_mode - 1; + // stay on the VFO/center frequency for a further 400ms after carrier drop + g_panadapter_vfo_tick = g_squelch_open ? 40 : g_panadapter_vfo_tick - 1; - if (g_panadapter_vfo_mode <= 0) - { + if (g_panadapter_vfo_tick <= 0) + { // back to scan/sweep mode PAN_set_freq(); - panadapter_delay = 3; // give the VCO/PLL/RSSI more time to settle + panadapter_delay = 3; // give the VCO/PLL/RSSI a little more time to settle + + if (g_panadapter_cycles > 0) + UI_DisplayMain_pan(true); + //g_update_display = true; } return; @@ -205,12 +201,12 @@ void PAN_process_10ms(void) // scanning/sweeping if (panadapter_delay > 0) - { + { // let the VCO/PLL/RSSI settle before sampling the RSSI panadapter_delay--; return; } - // save the current RSSI value + // save the current RSSI value into the panadapter const uint16_t rssi = BK4819_GetRSSI(); g_panadapter_rssi[panadapter_rssi_index] = (rssi > 255) ? 255 : (rssi < panadapter_min_rssi) ? panadapter_min_rssi : rssi; @@ -218,30 +214,35 @@ void PAN_process_10ms(void) if (++panadapter_rssi_index >= (int)ARRAY_SIZE(g_panadapter_rssi)) { panadapter_rssi_index = 0; - panadapter_delay = 3; // give the VCO/PLL/RSSI more time to settle + panadapter_delay = 3; // give the VCO/PLL/RSSI a little more time to settle } if (g_tx_vfo->channel.mod_mode == MOD_MODE_FM) { // switch back to the VFO/center frequency for 100ms once every 400ms - g_panadapter_vfo_mode = ((panadapter_rssi_index % 40) == 0) ? 10 : 0; + g_panadapter_vfo_tick = ((panadapter_rssi_index % 40) == 0) ? 10 : 0; } else { // switch back to the VFO/center frequency for 100ms once per full sweep/scan cycle - g_panadapter_vfo_mode = (panadapter_rssi_index == 0) ? 10 : 0; + g_panadapter_vfo_tick = (panadapter_rssi_index == 0) ? 10 : 0; } + // set the VCO/PLL frequency PAN_set_freq(); - if (panadapter_rssi_index == 0) - { // the last bin value .. only draw the panadapter once per full sweep/scan cycle + if (panadapter_rssi_index != 0) + return; - PAN_update_min_max(); + // completed a full sweep/scan, draw the panadapter on-screen - #ifdef ENABLE_PANADAPTER_PEAK_FREQ - PAN_find_peak(); - #endif + if (g_panadapter_cycles + 1) + g_panadapter_cycles++; - UI_DisplayMain_pan(true); - //g_update_display = true; - } + PAN_update_min_max(); + + #ifdef ENABLE_PANADAPTER_PEAK_FREQ + PAN_find_peak(); + #endif + + UI_DisplayMain_pan(true); + //g_update_display = true; } diff --git a/panadapter.h b/panadapter.h index ee25d1b..92e3697 100644 --- a/panadapter.h +++ b/panadapter.h @@ -28,12 +28,13 @@ #define PANADAPTER_MAX_STEP 2500 #define PANADAPTER_MIN_STEP 625 -extern bool g_panadapter_enabled; -extern uint32_t g_panadapter_peak_freq; -extern int g_panadapter_vfo_mode; -extern uint8_t g_panadapter_rssi[PANADAPTER_BINS + 1 + PANADAPTER_BINS]; -extern uint8_t g_panadapter_max_rssi; -extern uint8_t g_panadapter_min_rssi; +extern bool g_panadapter_enabled; +extern unsigned int g_panadapter_cycles; +extern uint32_t g_panadapter_peak_freq; +extern int g_panadapter_vfo_tick; +extern uint8_t g_panadapter_rssi[PANADAPTER_BINS + 1 + PANADAPTER_BINS]; +extern uint8_t g_panadapter_max_rssi; +extern uint8_t g_panadapter_min_rssi; bool PAN_scanning(void); void PAN_process_10ms(void); diff --git a/ui/main.c b/ui/main.c index fc19516..d7752d6 100644 --- a/ui/main.c +++ b/ui/main.c @@ -431,15 +431,18 @@ void big_freq(const uint32_t frequency, const unsigned int x, const unsigned int } // auto vertical scale - max_rssi = g_panadapter_max_rssi; - min_rssi = g_panadapter_min_rssi; - span_rssi = max_rssi - min_rssi; - if (span_rssi < 40) // minimum vertical range (20dB) + if (g_panadapter_cycles > 0) { - span_rssi = 40; - if (min_rssi > (255 - span_rssi)) - min_rssi = 255 - span_rssi; - max_rssi = min_rssi + span_rssi; + max_rssi = g_panadapter_max_rssi; + min_rssi = g_panadapter_min_rssi; + span_rssi = max_rssi - min_rssi; + if (span_rssi < 40) // minimum vertical range (20dB) + { + span_rssi = 40; + if (min_rssi > (255 - span_rssi)) + min_rssi = 255 - span_rssi; + max_rssi = min_rssi + span_rssi; + } } if (now) @@ -448,7 +451,7 @@ void big_freq(const uint32_t frequency, const unsigned int x, const unsigned int } #ifdef ENABLE_PANADAPTER_PEAK_FREQ - if (g_panadapter_peak_freq > 0) + if (g_panadapter_peak_freq > 0 && g_panadapter_cycles > 0) { // print the peak frequency char str[16]; sprintf(str, "%u.%05u", g_panadapter_peak_freq / 100000, g_panadapter_peak_freq % 100000); @@ -458,7 +461,7 @@ void big_freq(const uint32_t frequency, const unsigned int x, const unsigned int #endif // draw top center vertical marker (the VFO frequency) - base_line[PANADAPTER_BINS - (LCD_WIDTH * 2)] = 0x1F; + base_line[PANADAPTER_BINS - (LCD_WIDTH * 2)] = 0x3F; // draw top horizontal dotted line for (i = 0; i < PANADAPTER_BINS; i += 4) @@ -469,28 +472,31 @@ void big_freq(const uint32_t frequency, const unsigned int x, const unsigned int } // draw the panadapter vertical bins - for (i = 0; i < ARRAY_SIZE(g_panadapter_rssi); i++) + if (g_panadapter_cycles > 0) { - uint32_t pixels; - uint8_t rssi = g_panadapter_rssi[i]; - - #if 0 - rssi = (rssi < ((-129 + 160) * 2)) ? 0 : rssi - ((-129 + 160) * 2); // min of -129dBm (S3) - rssi = rssi >> 2; - #else - rssi = ((uint16_t)(rssi - min_rssi) * 21) / span_rssi; // 0 ~ 21 - #endif - - rssi += 2; // offset from the bottom - if (rssi > 22) - rssi = 22; // limit peak value - - pixels = (1u << rssi) - 1; // set the line pixels - pixels &= 0xfffffffe; // clear the bottom line - - base_line[i - (LCD_WIDTH * 2)] |= bit_reverse_8(pixels >> 16); - base_line[i - (LCD_WIDTH * 1)] |= bit_reverse_8(pixels >> 8); - base_line[i - (LCD_WIDTH * 0)] |= bit_reverse_8(pixels >> 0); + for (i = 0; i < ARRAY_SIZE(g_panadapter_rssi); i++) + { + uint32_t pixels; + uint8_t rssi = g_panadapter_rssi[i]; + + #if 0 + rssi = (rssi < ((-129 + 160) * 2)) ? 0 : rssi - ((-129 + 160) * 2); // min of -129dBm (S3) + rssi = rssi >> 2; + #else + rssi = ((uint16_t)(rssi - min_rssi) * 21) / span_rssi; // 0 ~ 21 + #endif + + rssi += 2; // offset from the bottom + if (rssi > 22) + rssi = 22; // limit peak value + + pixels = (1u << rssi) - 1; // set the line pixels + pixels &= 0xfffffffe; // clear the bottom line + + base_line[i - (LCD_WIDTH * 2)] |= bit_reverse_8(pixels >> 16); + base_line[i - (LCD_WIDTH * 1)] |= bit_reverse_8(pixels >> 8); + base_line[i - (LCD_WIDTH * 0)] |= bit_reverse_8(pixels >> 0); + } } if (now)