From f93f3659f945ba59ef64716c6868dc91c90a7dac Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Sat, 7 Oct 2023 11:20:36 +0100 Subject: [PATCH] F+4 freq scan rounded to nearest step multiple --- app/app.c | 12 ++++++++++-- firmware.bin | Bin 53756 -> 53784 bytes firmware.packed.bin | Bin 53774 -> 53802 bytes ui/scanner.c | 21 ++++++++++++++------- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/app/app.c b/app/app.c index 4da06e8..8578416 100644 --- a/app/app.c +++ b/app/app.c @@ -1568,9 +1568,17 @@ void APP_TimeSlice10ms(void) if (!BK4819_GetFrequencyScanResult(&Result)) break; - Delta = Result - gScanFrequency; - gScanFrequency = Result; + Delta = Result - gScanFrequency; + #if 0 + gScanFrequency = Result; + #else + { + const uint32_t step = StepFrequencyTable[gStepSetting]; + gScanFrequency = ((Result + (step / 2)) / step) * step; // round to nearest step multiple + } + #endif + if (Delta < 0) Delta = -Delta; if (Delta < 100) diff --git a/firmware.bin b/firmware.bin index f692137494dc389aee6fece8eecc9ce9b579fd36..b598b40ce28cb5f3e9a57bda0044ec197297f2f2 100644 GIT binary patch delta 5589 zcmX{)3s_Xu)_b3M10zi1$N(y5W+cE7oN+)#C(mJIj9BZ0}wTF zYa(cwkD`l~%*p!IOwwz8-mGTyH$^j13+z_6_uxM& zYB(l3by0-Ju$M#_r)ke3>-cE z8vGTJNwPG5^Qu8FLo~<-gWe4IFe#Q~QrffZc1Z)q#l#?+f&FZS>=4GyBv$bj9!@?` zFgS*NqWBGC6MHYRRfIRO_0cK{PhyX%Zi?_ovO$xH)udH(2@H|f`W?eBlZ4o6aRi6G z5+CdVbLS2!JX_C>BR@Kf!fzAIv{DnW|4ljR?zGuwS!9H zhJBCFc7*5*Nc={C5x|cE$Y%qC>L}bmYLgRiGC7_+6gRLplGkC$cmF`hO{S*aprV2# zWiSV8;*2Y>j;%Icz&M?qkd}mT6IqdNz_p}4Jqf=?J_C9YxdZ=CV?*g%vF(UI8}+lv zIoAKL&TJ&-8i7{>-{SX%`8~kL0Dsgk>Js$ZfmZ_G{F0R^aFupAMPIBlIK9 z8L;3l_A`qT!-~rp3-DBuoSBCQkfoUw_z8KK*<-#FI=tm$`U_nZD!0}m8FxMOg|1_Z zuCNw(8Fw{AZ@v6XyLhXhzeJQ-ODOF*@>HP z?PKXhx>;c0Thf!AfG-fu2p#^2%^LA5mI}oW`=8JGC;pLDjf%uVO${8q661Du=a?rL z-y@rHzsIB4sd-jPA!M`xc8ns2teN-lf>+IYqOE6x@UY@GLxPsiAmWY=Uep(UEC*zBgDUpw?EH1=9v7Z%JV7!1e z&q$_l5}7@7jWp=J(FOipoB0C1z^2Ypt(U9W&o>jBmR@TdDD zc}s#b8s?J}AtK?*$gJ)mLQQ!1AKH-ieiti3^oqX=b1fS6 zg^$lRap+cPKwH`_9P@c4*9ce6}FT43(w#`NZg|NsSWTQ!RFy@7``{Spx<#(VDf_@Bn zZ;@J`10m^8A^IdpS%7x{-UAT4YzEMNPJUQ4C2~|xHtK`E2B%tyd2uDyk=Dh!$WE`Q zAsQV7X$gCGu@2*DB=nLwGRvEdcDfen#M}vzvm{5eE3_536sUq|Zwh)Vtl2{9mMo!A z5BblM7iW|}C-kwjvi>2wu5PP_18ijlyF{ z(dtU!Zv1X_I>b7#I**FzCAqI0#_i<(D<9xhZ0(v0n0m_#vcBxRwWlZ?L!zBV{0Yf% zj>gq&h0}v6aZpf`()GQ%gMr>brPl9kQj~&3+`hn7Mu)7{6og5OOGHH6b7aGY1lYhf zY}i3zBb)R_GR8aEqRPt@)S&v!5dMT!Z|dpw8~kaHECXl$4oxDoq4z36-0ADg zfl~=i1rZr>JK{WkEqqAqC8gW6@Gz*@wjaMpRMiQ1AxW!FRE_C5$iz8Os@4;uS2c^c z;q2UMqwvMr8VNRtIE5EKe+Ev#0 zY^HD%{SK1HAbAA%D}e1l&jnZp;Qa<34S*+t{0JnBfW1bNy8SJDiJaM0WF=aeF~6}f-wkXX*!l+8v5#XSf_ zrK4+6&zn)yhy_|@GsRscdAo*2?T0&7=qHMc@{^6b2CDZ5V&IXZf(3g5M{EK1*I zOV|`>oY-VDIFV88X=D-r4|5*~>ubsVU2%8`>)WNmkw5u`?KGmeb`rZgG4d0bUwzOt zh+Znm+np5K>Nh&EQPf@-Hj(V1Q32>+;_Z$rKHwh5&Z zX(Y-C@&DO1Y~mn9>I*R1YVfSI{;&&$`fxBBGk_x$LQ#IXB_kmGw?uO z1i4wCF!?uMv_3r?!A@TvCR(R;LaurZhAXax)4RH;Gzr8^0TKA!hx7$di87!&eYc^r z-UaJ3!Gl=chiv*-&`I5EY*G4G3u&le z+Lt_teO*|ywL_|3VH;vz1y(e^v_UJG<eqPu#)HJ^$6=vlgoR@CYANR++~3r7Q;Cw0|=cW zbb~NWazK6nGUOzw`w~ZPg!}3UNG5^yBLHFcd;;19ko`7@&P9L+PzF;$E>wpX_`d_h zyV*DQ&7xqw-PvEF^9M1^STCRN-=)`~X=o>$>w&tJ8CYXNJ-jCXuLXGdV=fz}(+(kC+(|Ox5UUYh z2iR6tm%;!bCY|PG0Tc>*H9Th zyQakL&9`5xGL*n?u*P`IO^0;|jtZ-Y@q=%0I^jQ9j6WrFo2#*l{iRt&sSXAt=(!Y0 zyIOBT6Ksf^L}V>F*hH)?@5Mca{0x>LG)0c+bigku5RJeSCkeE~!p{!Pi3yqK!}H)3 zcYr?#b$yPBcbp4LuqVj>5ISR5Lv>2sIOmQ_?LbECIn5+GPLui*8m6@<#fefVH_uNE z4sm>BSHT^mcAtdZ5+hvlMx_UjxZ+YdP^#SXVWCJEVD7$p#H|e;1{=ri>Kdq7cierH zbd)?kp;_|o#D_vBxHb0=J=48({~+_e6Dl|zYWsd;5sgw2&r_jZ!{C|{)R-^1^)_?6 z#!%CkkFMkUJpX+UnUvu~LuR<~kZqo&^k2NxD?uVLx^b}MWxAUWg{VPwWW~w2oW_n= zgKV#u$n>J7k_dIK*x1j528o*PN`6yH$Q$;B==vNB9e#~%UD2;mE zFuE3HIJ)_tLY8tUPT8$t^mJP{e>0@f7em^-ohjhJgPxFKs$E2@9aHR(FvAqP#i4dg z209Od4k_&^0{lx?Ik;375<>H1r=4jNw?)me+Ms-#{>?5ancEf852KM`JUR4HVkPoa zc4acdU=)%3zMc$5>%=KBo=7LQ+;K%Zuu;-Z87z*WjMiZS7y|YOgFlPAkRj5+cj25S zm%2(w?7hw*%m61fdRhM5ygyv+ojB*ABPCpH$n&5R8ARY^kY5@UhWU?Brgs70kwU6J z9!(2FTp0Wag=D2LTxJ114`4h64-&xS*2n!Tg^4dr8e!_3vnik+;iq)x*=N+Q&i?_5 zN)>xP1Kc+iY6@KVKj$htSq2VNDTQoSbmr<#+12HBR(0u`&WE+w(&T!$DJMVLLvL)c zS^FDaZDDdzo0jKa2^cntV8`>XW~1Ip{!8Ec%$?dMnbLDSd@hmanEg2?^q~8wJyvKR z_YsKBk*7L0{M7>rex7>|^G^6WRa<9yc7sf06nUBeW8;+eU3N7}vk2>=-TQ5kfFs>+ z7b0jpnMY{KNU(}L``6Zi-Ki)o+l};ZG4WMZ;j@r@sV7&r!>+D+{n=@@7a75X$g?&4 zY06E}Jg@Wf{3tInY_S`mR8~R~HUq2!gX@U0HKFpQuuI6jyF;w6fc?Y@?+AAp(@@dN zzaLl|wiM@i70LpoXxuov&82l9C=f5N2pXMYa2V%cqr81-c%>NT#lGHb6y&FQ%fpfc z_mZM=Cbb69*j($1KqGTgt5hi7(aV3?JC{kQgg8XFjWq*|({D*V_V5XvjM>4Eh-Z=*Dh5+9gdKrq} zSd|!d>qOYuMZT;scibbPKX7>Y+rhv1sG#au%{AW2)kQzc(O%fAcAV-O!lc;;IH)vW zEDj@>R|1IW0RLI&^3TE(>Lh?r?h~O;gew@yrMaZdMQeo{S9mFvgQ5lKQ9v&TOrqF% zm7fObff9F&K}5&fRppUT;@!L^sI?8J%+^|$1Li_j0H#V%Q`pV#@mCr8+DfRU)+^f8 zv@NQePX*nfU<~NC_`CVtK{Q0>j?u~Oh<@5G-Ta>cq!X<44VY*d%%_-u<9u5Iijn4` zs!(VO`zw1F!;iABPY+0K4VoO@^WFRsAA${k3*wAy$Iq^112LTycQF6oce?pGJ`9>e ztn$-$#Ino<3r*RkVXW)yNLAckcu5?EC^Q3{0yqb73E&EmTs0~M?OotH0DdN;uWtVT K&0k;5l>8Trmh7DX delta 5538 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 diff --git a/firmware.packed.bin b/firmware.packed.bin index bbb472c24e9b3853e7954d79713c02e04edce1c8..5c7a47f08f6b0f2d4c6b2eac2d574affc30efd68 100644 GIT binary patch delta 13497 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 A?*IS* delta 13469 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 diff --git a/ui/scanner.c b/ui/scanner.c index a4f7984..a055a95 100644 --- a/ui/scanner.c +++ b/ui/scanner.c @@ -16,11 +16,14 @@ #include #include + #include "app/scanner.h" #include "dcs.h" #include "driver/st7565.h" #include "external/printf/printf.h" +#include "frequencies.h" #include "misc.h" +#include "radio.h" #include "ui/helper.h" #include "ui/scanner.h" @@ -34,15 +37,18 @@ void UI_DisplayScanner(void) memset(String, 0, sizeof(String)); if (gScanSingleFrequency || (gScanCssState != SCAN_CSS_STATE_OFF && gScanCssState != SCAN_CSS_STATE_FAILED)) - sprintf(String, "FREQ %u.%05u", gScanFrequency / 100000, gScanFrequency % 100000); + { + const uint32_t freq = gScanFrequency; + sprintf(String, "FREQ %u.%05u", freq / 100000, freq % 100000); + } else -// strcpy(String, "FREQ ***.*****"); + { strcpy(String, "FREQ scanning"); + } UI_PrintString(String, 2, 0, 1, 8); memset(String, 0, sizeof(String)); if (gScanCssState < SCAN_CSS_STATE_FOUND || !gScanUseCssResult) -// strcpy(String, " CTC ******"); strcpy(String, " CTC scanning"); else if (gScanCssResultType == CODE_TYPE_CONTINUOUS_TONE) @@ -69,20 +75,21 @@ void UI_DisplayScanner(void) else if (gScanCssState < SCAN_CSS_STATE_FOUND) { -// strcpy(String, "SCAN "); -// memset(String + 4, '.', 1 + (gScanProgressIndicator & 7u)); - memset(String, 0, sizeof(String)); memset(String, '.', 15); String[gScanProgressIndicator % 15] = '#'; } else if (gScanCssState == SCAN_CSS_STATE_FOUND) + { // strcpy(String, "SCAN CMP"); strcpy(String, " '*' to save"); + } else + { strcpy(String, "SCAN FAIL"); - + } + Start = 2; bCentered = 0; }