From 71375f31b216108a8d3b9f0be48b58c33e5f35a3 Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Sun, 17 Sep 2023 15:36:23 +0100 Subject: [PATCH] Bargraph level resolution fix --- app/app.c | 2 +- driver/bk4819.h | 33 ++++++++++++++++---------- firmware | Bin 165092 -> 165176 bytes firmware.bin | Bin 48812 -> 48844 bytes firmware.packed.bin | Bin 48830 -> 48862 bytes misc.c | 3 +++ misc.h | 3 +++ ui/main.c | 48 +++++++++++++++++++++++++------------ ui/rssi.c | 56 ++++++++++++++++++++++++++++++++++---------- 9 files changed, 105 insertions(+), 40 deletions(-) diff --git a/app/app.c b/app/app.c index 783a60e..b87fbf0 100644 --- a/app/app.c +++ b/app/app.c @@ -452,7 +452,7 @@ void APP_StartListening(FUNCTION_Type_t Function) // help improve AM RX audio by reducing the PGA gain // - // I think the solution is to set the RX AGC to limit the front end gain + // I think the solution is to set the RX AGC to limit the front end/I.F gain // // LNA_SHORT .. 0dB // LNA ........ 14dB diff --git a/driver/bk4819.h b/driver/bk4819.h index 5438026..a06c5d6 100644 --- a/driver/bk4819.h +++ b/driver/bk4819.h @@ -24,30 +24,39 @@ enum BK4819_AF_Type_t { - BK4819_AF_MUTE = 0U, - BK4819_AF_OPEN = 1U, - BK4819_AF_ALAM = 2U, - BK4819_AF_BEEP = 3U, - BK4819_AF_CTCO = 6U, - BK4819_AF_AM = 7U, - BK4819_AF_FSKO = 8U, + BK4819_AF_MUTE = 0u, + BK4819_AF_OPEN = 1u, + BK4819_AF_ALAM = 2u, + BK4819_AF_BEEP = 3u, + BK4819_AF_UNKNOWN1 = 4u, + BK4819_AF_UNKNOWN2 = 5u, + BK4819_AF_CTCO = 6u, + BK4819_AF_AM = 7u, + BK4819_AF_FSKO = 8u, + BK4819_AF_UNKNOWN3 = 9u, + BK4819_AF_UNKNOWN4 = 10u, + BK4819_AF_UNKNOWN5 = 11u, + BK4819_AF_UNKNOWN6 = 12u, + BK4819_AF_UNKNOWN7 = 13u, + BK4819_AF_UNKNOWN8 = 14u, + BK4819_AF_UNKNOWN9 = 15u }; typedef enum BK4819_AF_Type_t BK4819_AF_Type_t; enum BK4819_FilterBandwidth_t { - BK4819_FILTER_BW_WIDE = 0U, - BK4819_FILTER_BW_NARROW = 1U, + BK4819_FILTER_BW_WIDE = 0, + BK4819_FILTER_BW_NARROW }; typedef enum BK4819_FilterBandwidth_t BK4819_FilterBandwidth_t; enum BK4819_CssScanResult_t { - BK4819_CSS_RESULT_NOT_FOUND = 0U, - BK4819_CSS_RESULT_CTCSS = 1U, - BK4819_CSS_RESULT_CDCSS = 2U, + BK4819_CSS_RESULT_NOT_FOUND = 0, + BK4819_CSS_RESULT_CTCSS, + BK4819_CSS_RESULT_CDCSS }; typedef enum BK4819_CssScanResult_t BK4819_CssScanResult_t; diff --git a/firmware b/firmware index b75429de5a70df29d51656e78a2d8acbfa748223..df10284f80da9609ba61be3f3f92bc491a7bd3a6 100644 GIT binary patch delta 11102 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 diff --git a/firmware.bin b/firmware.bin index 2409f83c9139249385653313d2841b3c6b159132..e906558434abe6f6d9b0de33a8579d6625fe7980 100644 GIT binary patch delta 7060 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 delta 6972 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 TaxwV3x`pdPxtj}jMzaC{AqdO> diff --git a/firmware.packed.bin b/firmware.packed.bin index 787e1eabc77f03a3cf80fd9f5229815d5b3c95db..533fde5090cc7235d8e38d5fef628edb8cd13aad 100644 GIT binary patch delta 16009 zcmdn@m+9VLrVTQTjJGGtGD)w?-t~x3u|odmwL;|_;_-y%5_e|`EnMo?ldaBo*b(xDJ|+| znPjZ5^mjtE%cZDwzOOvD?o3G3R+8H~TX6D3Re4^$Ury5sLixA7K5VnZWbn4hhd=*LfOU*gZK^{W)X*WLu5doN0F(mE^pm zG*(Z3s4rzRQ;PbUcn_PBV+RJWzCUGOMn>ywI{~cVBI^St>6qDk1H2CZOGf^QYy6T;OAqq zi^Vqw>-sV!)*4Rt-j%|0J3{!;OOIIhld3I?>8z*fI{!$uG-q8|CU8g4Y29w68zR|^@V5E?%LV*mU`kMcP6ba zp3G=)m2uhT>jsAz8Q)EwZDh$c4yLR zP_XL8cx+M4PWZj^sZWjI=7|=@jEu~ak6Owz3Qm4%sm%NNTEcD3P@fw0jbhy;lSQo( z1!EoUxun%yXDs~e&UvyadU?y_cB`X|$0z$*Co_JWywN&bS1~)`xA#k*m`vwut3}?c z9!S2-5Fhp`MD>BebngvyT)VdmJbHOF#{FdXZ>MSNCY#zQGj5t3X_L(8HhHg2Fk|*) zLED>*b(>$?N-{DYn#^ji&iHAvuD!G;|H=ZXnL_i}*F{AKX3mwfxNxUYiRoVy2kV7h zwJGO*9Fv(6VDpe$@Y`IgFFb6!YG(^5Ym_tHnY8+|-hra(5RWYl8416ay!VL_nLN?{ zJ)`~PMu+!|dnOk;s`7VBZT=|`yx+Pe;$7GBYlkK;b+l$=o&3;IoALK#UMEQ=CWg%# zPAeFNf3B)7oPA$bRXU|fq55gE#B}Y1$&Z~A9d9IVn7?^lfmD~kJofVu(SbW=$XVFm zZB$z55~TrhUGMpS%hpT_uvy0;_)WF*i_S0Z+TGlW8s!`FCv}6eg81ZCm-mW~ch=7S zq@+>4Fn>~avBrU-Sa-iGHa8P)3%~G*3Hp4k`|9MWuJMwG_tnnsSI{VbeQVO{M8yL| zMX?@R)@3F9{ymx3?Kxx5H8AY{Ugs5g3PWPUc%X534z@wLi@$M&2Og8jf&AaVe6o=~d zUA4c@{aeO7`K4zfvxfDLl7V2|RkaIoAE;FNW3L5hBjh z{A+AlUQf35HDpwsobPMOxN`DRUvEaY$sc|HGUji7@3)XiQ^M`q>J86T4|H5*hzGg& zpTTtR)hRr;R|-6Oc{j%WdeWC!Nr0f9;hB@xyle< z{XRrB$8fs0$>gQM#*9{zZw9}%6-k2>8_T5Uv9m@-2NukbvoN~VsC4E_6i4gDUA0fn z{#)igA;6~X@srDu7Z^3u**||!50tMj=bKh-w3#vVG$W((VIbhj||9X~(W5ZkWG)U4hg&;d$(t5z&E%=gV0%-ECC5>Jg~XdV76oiu~mC_8fuD z+2Jo41-51CCLH?PbonmVmrGN$H!Pi;68Xb++Q%r4fa|+zFP{3hEO%;v&1QbVZ@aC& z@a)@HJG*GUMmQ)x9M?QhG&9;`OLb1dZ{L?bF=rjFt=500dcb7z%&1_-(vDrs*s$MkU4fL9@I3aui0HtT^W-e#?>8!0evjhVH~C@g za^92K3BUip_K68_ytcYv^3=HHoc+2F^Dd>O9lJ5vHNIZj?C^&Dxf%UO(-tM(ka`wk zWuqb(__3~eq8jg=$@k+;c|${09|&Axi0^+HqPldlVuCee-sISX!`zn+Zq1&d{^!xw zS63!$CrWdlb9u6~K)Oj{*7fAcfr;IWTPEL4v}T+$* zl{RgAe)#0clFEfU84JAK;@P*HZnQ5kyM33**w_8pY$Y#`)zN`go2-`POD?YLnJ`7n z>eRfZPxg~za}NiuG@S0;k;-$sQSi~rm$B|ASN(FDw%(C{+WSK`ORRMt=C!A#9aFE| zuz%H}0xLIxdFr4fAvs%4!tZXQ(zH)e8u}M@)fN=|YvXPXkg4Sm{I+;zq;FqBs)Q=*NGVoSJXX_+j$Wd{EWFS)k3hd$MUkK4bgjr3ISWZ1=>ZgpIaOQIq(n zHuHzp-)fCX+9pe$-&k_w!d-*-R_Va=`kFiw{WsNl@0t9wK#?(IvUK5I#^%X43yl>e zU--nV0wqH$aao?0WA$fVgs6sn{hR$k@E5D!^miw=PS!25XPhxPx5%8=Bo$IUKaO!f zd1&&+B5hHT?@=84FYc=KJo9f^;?w|}37|H>5`{;jANz3*xisS8tU9}=-|1G;XCBP<(Q}Ej#i!VH&a@|)^qg*IqQg^K4fuhDZ zk1dIr3BR|z@`?FAS+K;E@!DkflBK+$hEl%G7oK^$YiA2g{#nv1uaUV;yJmHLoKMWH zT|H%|xSuXtbb%qh{(Xq*e8cJ9C6kwysxvO0e701PNm6t2htdGn^(o-IR+i5CC&vAx z-sX*E`iz308YpEaW1F>RfXwo3g4g0Fe=HYfbehasQO&x2`hlRQn_DX!85#RFAFrIs zCxA+U6 z7@x@#>x4xQr1IQ8BKYWKe2DwYIiH=jWk>T*)1JJuZa*ie$r*Kb((2ih8|%$E`wv0d zKITojiDi|mnSc5P!@f8XT$!LYYU{BgyyjyiHZ)~I8V;v@Z_5f z+Kj4`SsPc2g4)O?;r!b`=IHA@%(JdfSQftdXrn))=$_}Q2UcBRh@ZCq_VFD}oq0Ve zJhwY1Yc^~1s?L|QIB};@$@*Uu$MVUE&B3hypYcyip1iYpKjW>*l`W}?r>_5+`$)(A zSkuy8+?{$$EmzH^>fN?4Uz6i zQVG9q-t#@Nn^9%5ajP$*+T_MoYu1+e5B=6pKG-TQn|-%YDfn9y$MXxjY6Z{!TlRf= zfDHqO;J3ThUwGIje{IcYJyid%ZQta~w)2b;lP%kgS=F}+UTd0M*zV2=DuCC{f9TgY z`Cz-fvC%EVtud*-catwovH{huxo+21_l2rH=t^LyuZs#{mFw@$-f>jCd7sqxlgGo{ zt9CG|O*ZcEG+eK_x!W=GL~>MV!IX-MMD15HKF@E~SWiCxnEPc!yxX6$2SWMr7k-mhB^s^DK8wppS)=b>NS)wE}i z(>Bb1w6Z|TLvS8@b~L2Z(R8m-N#JV~$Fam+u?FY<*jD+9oy?kmwt!vgW)dxSWGQ?ku3}MYTobG+#2G4KK&5usb zdgK0*|F2X1G|Q*_(>?{M{kfL=%gow^-E4DKM~|#{nc%YnAvuz#8aS-3d7k{`yP8QU z&y{n+j~db0h9y(8{y=2BlZ6n;+%+H~k(xxQXRfy5yYIlot!TO?YDYZNA*Z;IF*>?9) zvh}`AY!k9J&n|d^dvrh(eqw&Hu?sa!v2C3ahtTwbAs(|cr`p* zcOdP0;r!aHwv!U!ieIb_T^2gH=*pU3C0(3#n@_C>XStbpKWfGDJ@b4%sIF6)6+S1a zV%o0L>_U^v3?2zMY`eKgxqj`<2l?mt_kI$#mXT$tV)u$q7dts|hsxZ=rSJDP%wX-2 zQg+;sQunxYu4KL9)%zbNXrEe=aP!I5h^HODotYcwuRHMLn){|ItxXA<%NOfU6>wGZ zkq-O6Kl#t>j34p`ecm6>{@ZQs@}AAZX*Scm8=QLY9#8sUqAu3FYt!T3W(#YD>I21s zrli-g*nP9yQ7^y$b&hUauHV90Gh8H{N){@n?w4_|s9dpyKP~XZx~^5q=hxofpfE8u z<;hpQC41Mue)U7~+JVZiclLPu?l#hNl~Y!`RFtE1D9B9C*~V>pj)Ko)pSb_oca_ge zFO*KP6Nue^D1PmWQ^zN4`ObE8x%SJ%1Isqo3+IXzZL<{PON%q$X_48!m)&Z9h5Yi5 zoA%FnQ$5M|eaT&+0`1_9>=u?cuSq>sNsC~f!u3WhJtp~9^TvQP^-l!9E}8K?rdU(| zlS+t2jUoFK0XNPK&1!b;wmTE57kysJXnv$}lS7D(U5Ee9WXnA#0`3-D9W&m2jFHhH_5|0?wpBLHs^s1t0=(EKR8`Dqny-wR@wKaT8QAOd*DFqq4 zii>|rPJQ6OG;@1zLhOZaGoA#R`&}0PJMqC6z8a~x-JKj+>UR~J3Y>RFYsA+0x=cz) z_<8YAvWfcM3k4?ScC&pyv96o*I7D4vdXKXI%nyuP8-H#+SYPX6F=isqWrP>n1IB`Fx;0 zrmb{}d;8@HC9{3qqdC?`866BVEWF7OE3m@1_M=sthC!TY_lBg$^}jhp-EQq}ESfW= z&vshuE8cA!VVC{7VoRq@^6>91{dh>iRZF*cr{sSNrUSczzSkLr?b%il(6xAX{$xXi z`qupccGXHEbpgj0T@yJ~JHh&=Lg~)=e23jGajo_(_1L=QM517uP>nY@ZzeeOku}=hkBN6#or*-=A;IzOirJ z5(#S^$qVWgL1qQIQ{5z1U6W&O{_|7w=Pmh|Gsi>Qb>~{h9%s68J;hK}w{o+e5$U5o{W^XzDhn#K-!-WbAKNT$407=l8&BieUZ!U;W#~&T3BT&EvnavHn!M z-j)F@i^R%s0ou;rU1xGh#WvfZlq;xAQ@p4^Xbo-Uavy!01(^rj4YK*$B zC10N&Qa-aTy97LTI5$ec>qk(`@?SYWH50XuNte`I^O|tTKxVdl{Y|F&->Z&1dMUZf z_p{o$`sEE$FCHIgE5DuX>^Cv>>)n2}xwhLSc!lSS`g$K&bhzpa%TGtE4My|7YbACa z-n&_5)90tb(w|qxFeh{E`0o5w_tS)z0rm=IO^a(>=bkQ@81X6A(KxMes(6m7*MW*# z?b5{;IlL!joj$+h#x9f6jl#+gTyApJZ+;xbdcOEw&ouS=YMJT5)AgRqoAAxqVI0U} zu6h6aBb(6jgGbl{J6QWRDQ}o^tVHzgjKIGK3<9D93unk#$lPyK;`kZGvEb&e*snGJ z+KlD}$n0Jvce*rw(7oQHmYuBJW9yRc!u zuzZ14+M;>t$uFY|@94=%6y-EBsoa~G_<8f>9P`%qiQZR@ON@-Vt}VX)g-_&G&hF*2 zuP$iU{P@^SN$Nqw|Lw_dX6&`Suu5NKVzqDgDK4eMA0{M;Kf1*3CVS^Ab3K$Vq*SwtiRw@=)anS71pmTqKeiB>KGV! z|C4^5=xw{F?n?j8#D`xVgsyp7ypN$$<5bbai=Sd0rPB(hhUcnyo&3$}xha`v&Z!AU zSB3E0NV*pFflK$0YXR%^{lY7LRo|IZ?;)U`H~E|P#;*Jgj;GXjDBQEji@6%FKj(Zs z`@dt%`DtRzQ#$s0h>J+?deL@MGx&gov0B!@#QBf1{LdWJV71j2VPDt1U1HAtU)3tb z`>ZQJwlun~cCl*ID2e^DV3qq;`=tTve{Q?PvFX;w-+#|N&Qh$|DW-5(XjZq0$*M)N zH?8WY&ptfC=J%%VtcHWj){E@Sa@h7zjLVMEuA^G6?{Th+Z^-clfBigkqe>)?TCHK5 zB^~|DKl#`5BL-`9*mQ!p-~H^UNeTU}*Rp)w>s5b}=3c9Ow}kI!iLuH;gYX?wrbYPM z1q#IWMRXWmV)?oLXKPvq=e25nq41S{H(9THid_5kuwHWdkFB9nvO7&4N$PKNJ9YGO z!Stl>{0y9Sebo}I^Kv--nAR=$3Y;pFYDVP zsc-&;J-!;crTFuE&E>+~e6EvgHLMzSa_%THm83)+&Wx#X_IaUQy*U3w_L>WsD_0uS ziyxGl$l~HCa^+Y3DW|Otd-fY`-uQ~k>|~vT!KO>LQ_|1aZr{;pvH$7Ci5n%vUC*xB z-TwVp=!&D83}*flDo_dD$gX3#YhJ769WJZun-)(fs}VnYcE*zc^YqJtUzW|*i>r~Y z?5s=FSgx;m`H)Y?(O;_IMgHsWSDtoEne27E7yEN2@sA zT`(7v4Xr<1>%JML`e0u&Lw(VU`Vdtf!|C4csXVvWu6=aU;*I-DcWp zF6%$cv%8Y^%;Lg^{l}L6w*D10QC;Lkbm4M+If*+7jZA#rQ5vQRyJFX!`nQZtEkNeS zPQh!vR$q8>Ics-cQqm~Ddw0@mW32;4PH#M>fQGOm&ibr9y!PG-gL>uLfi^rLd+Uv> z^gwf0w`f!XG`kUNG12HcW8p9V!;aT)7GGOrW~+PH_&39w`rbnUc26eN^sW-(JzyLuCNW!S1>f!q z6IhbIe@xtDo|`PpG%v^6C*=5oe_O?mOzt~-`B_fH-OBKl8GFa@o&61W-sd4MUYn!FkY7h5SO-wueVAs~U z&z1%k?|M;nOS-On;ihf&fs;-*e)`W4!McTeR&4r{2j{!j1iV@HPw4lmmsfO3CZv5b zk>Wi^rwZ1FO~8BVH|SxXUd#kNt9dbl~hsaux#h zjZA+-qBMMqcE#?^|JN338X&V^mEg7dnO}5bx7E(}pJOkxV}0uZF(nQLZ@D&^JukF_ zA7^{VW^kN~WcwQY!ngjx2HQ1;p*Efs?K{_$XMEnE?9_d##qEO9X0MbU_mFwtJ}fyV z@#SIuWL^E`nK!n7iTe4cV&@6=;#&`wv|Y;1Tbg#aQHkq&6i4HQUA2y9{w+)1r?9eE zX?mKi!P=B^r`vA&+!|#Hb(5-}-Jd4OEgk%3qjw6I&upLYDYLFFsInA42nCr_gI~?RDuCUDh|H@{WB>Tg=md6wC#?8IsbgjKWddG%& z*OS*(aBkQydvN>QSyf8c3VvRlwBu`vnN4-~{s6l|B|+DIJLU*%mLcQM}cUcSTT z?vZBoKb {H$Ed%_l1CnkVqz!D`nFhC5op*ADOAD)-`{?kc7Q{$+`ii+xt@wsK5d zd96BhVWeK4l1BHOm{pXSai3nkDa*pQpC5kTpqjcmKK%Y4?a$^+gH1O(V-3g(<2Hb zB>%VPN&Jp({FQm||Bb7SN*ljMaWG%rRr}%Gzh%l&fiiA81h1J}eBn{&tlhm{QKLK{ zcTzX&%mYEk<2|-$WF-9F?CDd}{P9|MLA|@`1MMV+`r{EHtQAJny~ERaZm(YW=wy7H z`^h6-PTSr;;h)xC!*o(!EiuR1&+plSS$xia-(@@PH=h4psy=?<&TVEAr{*_)s%K0} z?pnO7ELHs9s&=0!yB;N#dFv0vTyXv`cGR9pvrXyOv}kXJPty7F9x31EoL-uL!guYB zv`f+THs`ojCQoGOZ<60%`BHG&t_@Bc+KVmDHN2H`m+a(yc`Chx&;9#T#SkHu6YN6j zX=0tzW`4PQw?J_B$$8vz%|XG_?^*_YQk(yeWt(Hb)DOE`Q(k=to4BteG~8QIZO<8= z+t<8#*<`_O!h&dDhKJIP8+`U}-dOarVAaCew-c|_M=71NUb)1MDP*saoBG${lAblH z;>{Zk86+>4#4Jb?Yx;0Dl7E}q0h=XrdLH`urKBB`&)F~^G`<(Rai03w(C9!XTR91_ z3yn&5L!vYi?(V9s&-vHZK0Cl>Czs&2?pa@SD!10o?p4qz=dYR69j^+RXIpS8;dX$h zPfh28`fJ_6ZmJJvTwsVlev0&@g^>`qF8?Z z5{F-@HHV5nnMA6|>8;~C>GJ8cQcRi4{S^X}F+Q$il`2ZNRGuRD z!d-WlAMeS^fJq-&b5jdS~~%>%Ob*92V@avWY(X&{2uE;o|DsyUwP^K0e=Vvg~!n59v?q zg+H|9ZDN{fzxUdLV%=HFu8jK&V#_=j{HJRvWF0WBkGqk5^sqt2ZE=33A00;0Yd&o_ zWZDz$#}Ty9;?W7Sg|(t#7lWqcf8(FdV8>B$=Aa_S#LTo~U73(HFm2sD^-EFFf%BE* zBocEQnRdEGX?#iA6`Nc<^+5F7aQz}B&THYvYpxdXxALVY7s^;{%c|LM%Vz1uwHuOW z%ru+s|G3_#XYI!8-2!j!id!m7h~0mj&Euu?(d-#{JluO8ZfZYQl69i%qmx_0lHE@k z?To6zGuE(i<8~KR^-cDeE44T)tqhl{TXVzYiAmssy=Yt zK*ovr;<Nf!*|Q$@eFI=3;!Zs43XW!+>YfR;Q=GS!F zh6kuChGgoczSq{+m~(c?289=qvHBAQqZU<7xyQ6%IuqB*{n5XrZdbXRweRiYxEFZd zg8AZ^zlB@P$`fk-=4Mz322IS(ahraiD0cadochgo7tGB+wR_FFwad;JuhLs=%*zn_ z=ke1^bO<-Ct=<-|;~we)mR;y8c7)XI4*Fa@_MqR@RmK_10F-Igea6=w_K}W-G1p zeO~d>SdzzVqG0?Yi>WFn5{@@MTK#3FqSVaYed~|g&AE8@vgi*-0ag`56EoG%cAK_j zYqn%w51J^Nd^q}Ay{M=AuEYfgZ5Q>I1an-E`2FVTFS!}b*{R_1a|qiEF%+{sq-Xh`3DIl;Ahp zVPWCgvtGxx$v*8}mUv^0rSraygh>}pehS?OiL zugN*@bY?%R=~$V4v29V7*4gdzkJblqdwT41*f`xL>#Dn{h$GD#^+mq8_yVdHx zY+=QOosSE6E^a!dF_oFg?UJMNChm+<7Qas?vt~*2NY1nNS+#3dR?O?;)1Fm0pUgWT zSrS&*KSetF-?b(tp1q}6ySUcJmi)fluYapv)<@c8-==_xE?SpvTwdgP*52rm|LZ8F z`U{B0`atw56h6`(N-&!LTW-6AIpPE{~My)pCCQ zw8!+)zu7<5?YolAVx&C7XOEBe?#WU2P9CiBv}}3zW#8ra)fe8LRG3+xbg*Zp?kw}g zej7UrmcCYQiI_dVh*d>ZL+Y+lML=`YguUp6XE~c!p zcH*%g5ducZf<5)VpAHAbm3ftH2+p3FWgNzGBSAk(?=tUvH{?b3cjk$E#d zCpCL5+Z{dS*p z;Y!lv*Gqj5?BKm-vh}U%fp;2i+|o?~3CSgwyG>f8rZ4?-CgO}(+MWE3fm{3TKcC8c zqNVk{dZfR1PTsG1A#1iDdtxXtgQrVhN=L=Nzk^ADSMz_3+(9RUcT09DOC4+a)%-+5 zhPha9+j)cUnjG8fb~|KbipgB7f4e%KX@8KNvqQtB1o=s7tEy^_XH8qJ|3-Qt?+m;8 zJKtjjyN-%oQ~f#OoyW1`Gs_pxaAG#|Ts}~p0{i(29$8&+|y4Lu8n$-HNn&D+p09y8yrirH{|jB{t&US_eYrf z%jT_&U)19Hrycvvzd=v!p`Uer+Oq{&8}@&m=*-bAF;878IJ$7-6gi2YX)#Qf{GzAhEO>hI&bF%1XWq=$Z4Txh&uIS3Afs_!C&1y|#BVGcc_P{;MxOiL{6g`A8$UE;;H`Am#|Yc+P~!0%Iax9u%(~Ye8|>7v z+@!xdOS7;(yyDuqZWX1aLFVDAQ|>1S-IjW6R-|Z4YkVoK`RM_yentm0`AI z-m>2^Qo$#S!alv^`S^R=?f8?^>`s1cIj3gf_b|WpnOj!mevPFqR{j#{>cT;R1-qv5 zO1{26o0%%m$CP9L+EzCB zm=!Zi-kWIgN2h#~?QQvbO^tA+d$XGTl@0{Onrlqin4s{x{~GE5xn~ULBHVNtNVhsIY@b3-t@s{S5W>6cFz3t=NFT=?m0HuviNi0 z3UwPPA&VcYD z^IcEOZO!*>COyJ>^ZcsxB$q$T+AzQUiNE!3iHG`Pj#Y*mU&lpkns$&W_J5qt3yx6 ze@*HFo@Wdd?TbZh-&w8DZiw?ava#~p!IMrZFZcd5+LsW||9x3Q?aN4XTd0UPjTk28wFJ_s#l)iuJ(m8SxzYa|m zi`yF&GWGtx(3E4}E?qxSAX97;I_Y)67ai~VPqx3AH8rAzrY&lBSNbEAD_$~Xql(9A z_vJn{SESl*^Sn`AqS5PPz5j8H@d`*HY}qLF=;XmLw)>ktI&DggW}o!^B-7ET^aTah z`6@FXWNp~LW&Pj`1$-0Y6Wz)58gU?dawRa`TpTFbH3d#j5 ziaxPI9N_+P*F>e0688DizMr&dVYW&?vG?Tzg&3g?`;Xn`kGx&^->ur%x^UwZHkL0J z*jtuZFAJD>dzWj>wt3GV{Z&@ZWfr`q|3Rca#(!P2t345X8oW{cQL-{Y{(iHH)ij?Qu4{yzedFlv{>pl#Ym+9|2QM_XF|%B~E+OG|e)5?=5vRhqH@s1O;B%9)Zr`I&mKWBr za^Mjt4ZPg-(P>+{{`b80lQu2VYQI9Q^V5FJ%i7R*1L6R6DdE+PA5-2%e7ZDGR_&3i z&O>FRORwY3wY5%&Q1Rvw+jhR*;LDormueRq>uZNuottF6|J9C1cf;Mg7Z&Cpsehc~ zbj<5ow*lAz4E6gTZ~6Ms2;>0nFDtnooje#9FBt`LfWP?64<~Jo++LR0SDl~!czNdL z9fy||SXJEs)df)n+a}9Pe!A8ODhD(s-kz0MaqM4P^PB*gVrIeX_3I43>XvP;-3^X{ zYm>U&t!@OxhI>re_+Y{A{ND~$x4o}*9}v;aU{U-~zu}LY$WPT7*%RWvFoV*-MYo7= zs~!fe%fEj7-SLwOvpCE@hAG$AA)2ZHu4k6=-p&~Q89PfYgt*sI46|n!>u6(UU;xqLht-ic-%ZZV9%;3Qe%b|< z-!>GjakslV!OQ8vJPX#~=)!f~&mJ_HIsUr!*VTOD?cGk*YJBs$TNeDOFJ_TDw_oG8 zcD+}t@%D=m;YKHWXS*vMShO_WVUFj7gewJ~16Y=`-YY(lvR1<8ra;1i$DvZ+x!y0f zcxG~Xqu9Tj7u_SC?>ZUfH{acS+V_(>vsug@ZabWx_AFx3h7C8jCTJ}cPrEM_9NpK3-6Zai{UUzLl)`A5$w-#9Knh}>Cb$Pbo#@h!wk~IG@ zX|XO^aZ%bTw&do+w&wa~f0<(ElYAftlrKtJq7NzwuU!hBuXMm@@AVVe=Q3s}=O_2r z+=x0k#rU=551*SH?e333l~H@i`Z^x#!dpq4jMv=1E&Uj~t-`@Sth}?vWwzSGK$ZNo zpZi}G{BL`@Vb?D4MsqG_m%5K3^CC8hF)}S;TDqh0$kw|{+V-*4JKqTq&Jk|Z4A`*c z&G#Zu2v~U79-GwdwunJU78C**l_zSy29(U;QY$W411bsm6W0HZIjU(jeRV+|&zE&v zpN`#gbJwi;=v1~mo`2$xiz?kR&lLTv^OvbDNL|1D#NK?LH+W-^xG-n2y5@@Om)6Z{c2_zO6yy=nvN0iH zvG`-3nj2o%rs%&>ec*DjqTfC_g!QLZN6Lmgna4YsK3zN+<_;+b;`yg_ojlf(rNZfZ zGkekdhnXApy9F^@`OFDaUvoLAfPEH+6ifeOhACI3YYEn~Mjd%kKez4hmRB;HAAP;1 z-&LV&uIRb*{)_#gkKSJGU=O_=ba&31DI1@zzr8-$wN}FAK&Qbr_eVV+&eqzyzh+wL z+mpRHP3G}BsYfRl&U&=?scpd4JFRy!Q@6Ff?^jvndpW1*+48Ji``0aLvA!qqO^rV| zvT)}VGl@qR=4+{6RnnM!dtXFK{jq;--^>DJ1Xc=O`#0;0j)z3;ZaZ)qnAH7f_JN?@ zcOFwxZYJE`6y;N6@cCNzfl$>4yAl}crJ_PuUp7q7-h74U_qGL(PWDO)yxg^i`%`+n z`~3}#Hm73~9;RC7r=4Dqwc$noLsP3=5*N}u7)8`J-j0a-bgeP03e+g=d=y)sa_rxw z+nbqOihaT-tgqjtQ~uZbuf2p&n$q(XJKcqUCB~)|E!e29HaGvVPt9zm=|}U|sxD@k z;ivHTF@x93${X2_wR!eFj^7Nb4Oe~IzyoR#-PqPr*&?m>kfBP+cflw94Id}Jw6WUd zbv-jSI9mD3ks!xUQ_h8D{f$b$K6h7rtXk))w&t7i9>vVTGk;fn$x`}fxVxw-KU}Hd z?s0deK3QQQkK5nX5^m>jWVW6waqU>idesL${cZ;P7fE=&EWN0^LBoH?#>nL-4+^rr z+;z0DEj`<2-S=6!CqN}(hPCpx1z8(j&-<#Lu}k7ieVhPC;l^Wb(aWY@Vk%oImwo7V z{VqTI@%wcgc_j10rK4nd^;TOH#8Ek3cO4lacU@2&nj}7NK_{dUudj2|2!*1?| z?xMAYn|b>gG(YSHWy7mlpH&^!Z;adC(aR$L^4&_24;u0OS2p$Jv`DLM70XvJ-n78- z^Q0*c)U196+{*K0j<))8HYj}KwM+WRJLM!N)^|*oQD{2TcHx95s6KA_FT1?LXp_OG z8c-UTdiR)kPD@Zu75CM@Itd-htK>Cqc(op{++TRnr_0Ce&Gt0b6(#rFeroZodl)q~3z2XAGyf-!)sdi{> z_o;bZ|7=;x7S&~mQ~hneJWeycDSp^^L$uB5IexoNeo8Js@_)b6Qx#sN%R5h2t&B)t z%MR8i2EvyF$3p03q$v@U-(Kk%no z`Cp5_87y+CQX3ZSR#W+|>54GtXVCGO^%mt{L0nG)c; zZ&ssU?!J0Kjmv#6SyEc|Us`-Y-n%&5^V{pn<+-N+EOuunqzdIWAM0kzYh(}zm%IJf z#9^}95|*0Ta@Wom?^j*I-_2n2Z@q--vi!r&k8EQuZH!#p+FQo4=iNuPM_Q8lht@yL zzZj8v!mr+1dqIQUi~U`vQ9hb1OCzqAj|&Tq%P)^Tn&-IrwA99~1_}2C z|4yeLP3Mojf9$j5N9nT7?3|&_lNabb`ZaxisQ(n(bwc^UvdUkMsu}V00=A@;y8PqY6%>AjhJ7d|) z3%UhAFNKy>?Y5Yc!)Sfj=-}mhanIE1+nqY@$0c{~-d&g8^Zs4Oediixmx~iNANZ7$ z?o|ETnoCR8c;CzuAx;}aYnS_7+2oi!F@15oNHFKs6UsfI%X2i@>~|ju^Zykjqp_H; zX3xY|PdcZRxGh>R(dc9Sdd_RHuWipWx=rL%pP#U7v8TqLV`mv^cUaEKjSBXV+<9ec z^sD-*6O)2=&B~joy+=0X-S6PhDjnedpEGbOj#gv)&6 zu-j5C%_lWa`_i%n3ubNmf2*aWz)GUmUr6|Z(aP(574=OM9bJ@oV=@}^_QlRNoKo4m zW%b!I<9CWK=l`Z(-j#U!z`ckScNNc+xN})IN63Wy@teL+#pfiGF(aGJrS3RgP`*F-BUw(3dhv=Nr0Pp)2wtN2`I`=|Q z$$C<@vyxS~@1yO>KjtU=o*+`ttiJb2$$9Cs@-aCq_4^L5{N~gKNfj%b;IJ=LWaA+e$BKGs&*E41Tq3nb%#e zTi3Twm@87VjD2au9Iuiv5AJPU)$d$_ex~1+N;0x%pWE?zH=}fryM506)eN(LYM z*;AIT;##ravOU{uRYY$(gOr2y&iXHM77w@8eZ9);HMLWFSL~Bx|BlVi36S~DEI6(I zz!#nWn`(bc-_!_ScWu&Xf29LLs^K12O4Ac=3qSU;vGKjuE$~EjLB>S}`~KGf{Y{f7$la=^H2tywBORyl#8Ncm90tGSE07w0ErjbWKzNm*3QH(!AFi InV!i304m!Z8UO$Q delta 15976 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 diff --git a/misc.c b/misc.c index 8d07fab..28b0a10 100644 --- a/misc.c +++ b/misc.c @@ -99,7 +99,10 @@ uint8_t gUpdateStatus; uint8_t gFoundCTCSS; uint8_t gFoundCDCSS; bool gEndOfRxDetectedMaybe; + +uint16_t gVFO_RSSI[2]; uint8_t gVFO_RSSI_Level[2]; + uint8_t gReducedService; uint8_t gBatteryVoltageIndex; CssScanMode_t gCssScanMode; diff --git a/misc.h b/misc.h index 8b1627e..96ad66f 100644 --- a/misc.h +++ b/misc.h @@ -159,7 +159,10 @@ extern uint8_t gUpdateStatus; extern uint8_t gFoundCTCSS; extern uint8_t gFoundCDCSS; extern bool gEndOfRxDetectedMaybe; + +extern uint16_t gVFO_RSSI[2]; extern uint8_t gVFO_RSSI_Level[2]; + extern uint8_t gReducedService; extern uint8_t gBatteryVoltageIndex; extern CssScanMode_t gCssScanMode; diff --git a/ui/main.c b/ui/main.c index 919e08e..9856e75 100644 --- a/ui/main.c +++ b/ui/main.c @@ -57,7 +57,7 @@ void UI_DisplayMain(void) #ifdef ENABLE_DTMF_DECODER bool show_dtmf_rx = true; #endif - + for (vfo_num = 0; vfo_num < 2; vfo_num++) { uint8_t Channel = gEeprom.TX_CHANNEL; @@ -131,7 +131,7 @@ void UI_DisplayMain(void) #ifdef ENABLE_DTMF_DECODER show_dtmf_rx = false; #endif - + continue; } @@ -354,32 +354,49 @@ void UI_DisplayMain(void) else if (SomeValue == 2) { // RX signal level - if (gVFO_RSSI_Level[vfo_num]) - Level = gVFO_RSSI_Level[vfo_num]; + #ifdef ENABLE_DBM + // dBm + // + // this doesn't yet quite fit into the available screen space + const uint16_t rssi = gVFO_RSSI[vfo_num]; + if (rssi > 0) + { + const int16_t dBm = (int16_t)(rssi / 2) - 160; + sprintf(String, "%-3d", dBm); + UI_PrintStringSmall(String, 2, 0, Line + 2); + } + #else + // bar graph + if (gVFO_RSSI_Level[vfo_num] > 0) + Level = gVFO_RSSI_Level[vfo_num]; + #endif } if (Level >= 1) { - memmove(pLine1 + display_width + 0, BITMAP_Antenna, sizeof(BITMAP_Antenna)); - memmove(pLine1 + display_width + 5, BITMAP_AntennaLevel1, sizeof(BITMAP_AntennaLevel1)); + uint8_t *pLine = pLine1 + display_width; + memmove(pLine + 0, BITMAP_Antenna, sizeof(BITMAP_Antenna)); if (Level >= 2) - memmove(pLine1 + display_width + 8, BITMAP_AntennaLevel2, sizeof(BITMAP_AntennaLevel2)); + memmove(pLine + 5, BITMAP_AntennaLevel1, sizeof(BITMAP_AntennaLevel1)); if (Level >= 3) - memmove(pLine1 + display_width + 11, BITMAP_AntennaLevel3, sizeof(BITMAP_AntennaLevel3)); + memmove(pLine + 8, BITMAP_AntennaLevel2, sizeof(BITMAP_AntennaLevel2)); if (Level >= 4) - memmove(pLine1 + display_width + 14, BITMAP_AntennaLevel4, sizeof(BITMAP_AntennaLevel4)); + memmove(pLine + 11, BITMAP_AntennaLevel3, sizeof(BITMAP_AntennaLevel3)); if (Level >= 5) - memmove(pLine1 + display_width + 17, BITMAP_AntennaLevel5, sizeof(BITMAP_AntennaLevel5)); + memmove(pLine + 14, BITMAP_AntennaLevel4, sizeof(BITMAP_AntennaLevel4)); if (Level >= 6) - memmove(pLine1 + display_width + 20, BITMAP_AntennaLevel6, sizeof(BITMAP_AntennaLevel6)); + memmove(pLine + 17, BITMAP_AntennaLevel5, sizeof(BITMAP_AntennaLevel5)); + if (Level >= 7) + memmove(pLine + 20, BITMAP_AntennaLevel6, sizeof(BITMAP_AntennaLevel6)); } } // ************ + String[0] = '\0'; if (gEeprom.VfoInfo[vfo_num].IsAM) { // show the AM symbol - UI_PrintStringSmall("AM", display_width + 27, 0, Line + 1); + strcpy(String, "AM"); } else { // show the CTCSS/DCS symbol @@ -387,8 +404,9 @@ void UI_DisplayMain(void) const unsigned int code_type = pConfig->CodeType; const char *code_list[] = {"", "CT", "DCS", "DCR"}; if (code_type >= 0 && code_type < ARRAY_SIZE(code_list)) - UI_PrintStringSmall(code_list[code_type], display_width + 24, 0, Line + 1); + strcpy(String, code_list[code_type]); } + UI_PrintStringSmall(String, display_width + 24, 0, Line + 1); { // show the TX power const char pwr_list[] = "LMH"; @@ -423,7 +441,7 @@ void UI_DisplayMain(void) UI_PrintStringSmall("DTMF", display_width + 78, 0, Line + 1); // show the audio scramble symbol - if (gEeprom.VfoInfo[vfo_num].SCRAMBLING_TYPE && gSetting_ScrambleEnable) + if (gEeprom.VfoInfo[vfo_num].SCRAMBLING_TYPE > 0 && gSetting_ScrambleEnable) UI_PrintStringSmall("SCR", display_width + 106, 0, Line + 1); } @@ -433,6 +451,6 @@ void UI_DisplayMain(void) UI_PrintStringSmall(gDTMF_ReceivedSaved, 8, 0, 3); } #endif - + ST7565_BlitFullScreen(); } diff --git a/ui/rssi.c b/ui/rssi.c index 0aa7cc3..49f07b5 100644 --- a/ui/rssi.c +++ b/ui/rssi.c @@ -15,19 +15,48 @@ */ #include + #include "bitmaps.h" #include "driver/st7565.h" +#include "external/printf/printf.h" #include "functions.h" #include "misc.h" #include "settings.h" +#include "ui/helper.h" #include "ui/rssi.h" #include "ui/ui.h" -static void Render(uint8_t RssiLevel, uint8_t VFO) -{ +#ifdef ENABLE_DBM + +void UI_UpdateRSSI(uint16_t RSSI) +{ // dBm + // + // this doesn't yet quite fit into the available screen space + + char s[8]; + const uint8_t line = (gEeprom.RX_CHANNEL == 0) ? 3 : 7; + + gVFO_RSSI[gEeprom.RX_CHANNEL] = RSSI; + gVFO_RSSI_Level[gEeprom.RX_CHANNEL] = 0; + + if (RSSI > 0) + { // drop the '.5' + const int16_t dBm = (int16_t)(RSSI / 2) - 160; + sprintf(s, "%-3d", dBm); + } + else + strcpy(s, " "); + + UI_PrintStringSmall(s, 2, 0, line); +} + +#else + +void Render(const uint8_t rssi, const uint8_t RssiLevel, const uint8_t VFO) +{ // bar graph + uint8_t *pLine; uint8_t Line; - bool bIsClearMode = false; if (gCurrentFunction == FUNCTION_TRANSMIT || gScreenToDisplay != DISPLAY_MAIN) return; @@ -36,7 +65,6 @@ static void Render(uint8_t RssiLevel, uint8_t VFO) { pLine = gFrameBuffer[2]; Line = 3; -// Line = 4; } else { @@ -45,15 +73,15 @@ static void Render(uint8_t RssiLevel, uint8_t VFO) } memset(pLine, 0, 23); - + if (RssiLevel == 0) { - pLine = NULL; - bIsClearMode = true; + pLine = NULL; } else { - memmove(pLine, BITMAP_Antenna, 5); + //if (RssiLevel >= 1) + memmove(pLine, BITMAP_Antenna, 5); if (RssiLevel >= 2) memmove(pLine + 5, BITMAP_AntennaLevel1, sizeof(BITMAP_AntennaLevel1)); if (RssiLevel >= 3) @@ -68,14 +96,16 @@ static void Render(uint8_t RssiLevel, uint8_t VFO) memmove(pLine + 20, BITMAP_AntennaLevel6, sizeof(BITMAP_AntennaLevel6)); } - ST7565_DrawLine(0, Line, 23 , pLine, bIsClearMode); + ST7565_DrawLine(0, Line, 23, pLine, (pLine == NULL) ? true : false); } void UI_UpdateRSSI(uint16_t RSSI) { - //const int16_t dB = (int16_t)(RSSI / 2) - 160; + gVFO_RSSI[gEeprom.RX_CHANNEL] = RSSI; + + //const int16_t dBm = (int16_t)(RSSI / 2) - 160; -// const unsigned int band = gRxVfo->Band; + //const unsigned int band = gRxVfo->Band; const unsigned int band = 0; const uint16_t level0 = gEEPROM_RSSI_CALIB[band][0]; @@ -105,6 +135,8 @@ void UI_UpdateRSSI(uint16_t RSSI) if (gVFO_RSSI_Level[gEeprom.RX_CHANNEL] != Level) { gVFO_RSSI_Level[gEeprom.RX_CHANNEL] = Level; - Render(Level, gEeprom.RX_CHANNEL); + Render(RSSI, Level, gEeprom.RX_CHANNEL); } } + +#endif