From 98b1029becb7444cb8139f31be080a68181799a6 Mon Sep 17 00:00:00 2001 From: 3djc Date: Thu, 16 Jun 2016 10:14:53 +0200 Subject: [PATCH] 3djc/chan mon improve (#3604) * Prepare for more flexibility (and a much better look) * [Horus] Preparation for a new Channels menu * monitor bar icons added * Add ICONS structure and populate for MONITOR pages * Restore old widget (had used it for temp work), will likely update to the newer look later Functionnal output monitor 1,2, still need extended and overrides * extended limits * Overrides are now managed * Back to Red ;) Add outL outR to hightlight out of limits values * Rewrite of posOnBar, as it was getting overly complex subtrin now fulland more logicaly managed * Fix overrides * Center bar drawn last to be always visible * Limits need to go through extend limits display calculation as well * remove debug printf * Add inverted output icon * Tidy up and cosmetics --- .../horus/THEMES/Default/mask_monitor.png | Bin 0 -> 1200 bytes .../THEMES/Default/mask_monitor_gvars.png | Bin 0 -> 698 bytes .../THEMES/Default/mask_monitor_inver.png | Bin 0 -> 543 bytes .../THEMES/Default/mask_monitor_lockch.png | Bin 0 -> 530 bytes .../THEMES/Default/mask_monitor_logsw.png | Bin 0 -> 1078 bytes .../THEMES/Default/mask_monitor_mixes1.png | Bin 0 -> 1090 bytes .../THEMES/Default/mask_monitor_mixes2.png | Bin 0 -> 1091 bytes .../THEMES/Default/mask_monitor_outL.png | Bin 0 -> 295 bytes .../THEMES/Default/mask_monitor_outR.png | Bin 0 -> 299 bytes .../THEMES/Default/mask_monitor_outputs1.png | Bin 0 -> 1083 bytes .../THEMES/Default/mask_monitor_outputs2.png | Bin 0 -> 1076 bytes radio/src/gui/horus/menu_general.cpp | 9 + radio/src/gui/horus/menu_model.cpp | 21 ++ radio/src/gui/horus/menus.h | 54 ++-- radio/src/gui/horus/navigation.cpp | 7 +- radio/src/gui/horus/themes/darkblue.cpp | 3 + radio/src/gui/horus/themes/default.cpp | 5 +- radio/src/gui/horus/view_channels.cpp | 231 ++++++++++-------- radio/src/gui/horus/view_statistics.cpp | 1 - 19 files changed, 197 insertions(+), 134 deletions(-) create mode 100644 radio/sdcard/horus/THEMES/Default/mask_monitor.png create mode 100644 radio/sdcard/horus/THEMES/Default/mask_monitor_gvars.png create mode 100644 radio/sdcard/horus/THEMES/Default/mask_monitor_inver.png create mode 100644 radio/sdcard/horus/THEMES/Default/mask_monitor_lockch.png create mode 100644 radio/sdcard/horus/THEMES/Default/mask_monitor_logsw.png create mode 100644 radio/sdcard/horus/THEMES/Default/mask_monitor_mixes1.png create mode 100644 radio/sdcard/horus/THEMES/Default/mask_monitor_mixes2.png create mode 100644 radio/sdcard/horus/THEMES/Default/mask_monitor_outL.png create mode 100644 radio/sdcard/horus/THEMES/Default/mask_monitor_outR.png create mode 100644 radio/sdcard/horus/THEMES/Default/mask_monitor_outputs1.png create mode 100644 radio/sdcard/horus/THEMES/Default/mask_monitor_outputs2.png diff --git a/radio/sdcard/horus/THEMES/Default/mask_monitor.png b/radio/sdcard/horus/THEMES/Default/mask_monitor.png new file mode 100644 index 0000000000000000000000000000000000000000..68ddd4516cbe5049f0f87997cfca728b1d41f8ed GIT binary patch literal 1200 zcmV;h1W)^kP)gDlIasi`S-D}Y5Ll}gd;_0r*R zP_Ne$fa;^y>*;Vf==FM;N~MZz%YtB^&&T%m_8frGXrwI5wA<~p+wGKPnMR{AN2k5L zoj#xM_rZ#y(B*Q8jZ7vJJsuB(!64J=be?`Xon|l?q{ri-$z&3CE|-gnqLc={zrSZ! zR~G?Lr_<5xb~6@>sTwDfNxr_m=B&kHF}mGu>U25+U{_Zc@9*ymgB3*)P)U;L_xn|W zFE1|~9UWz5WhDX7VzKb_^fX7u@Ap%ZBmw_<@*Hr+y^couaBwhB-|zPew`T_&$nTWNM6cWJ)`XJe z%F2o+xUH>C)yD01i)hcJ8c5RX^@`}#3Z#te?d@rT`}_M=y%$u7VS}YcpmzQ&Ob(PU*G^c`PKTfB!DD0=mvP=Nqak93yMgX+i z?Ig)~JkFt^A>kISKq@OMC0-Aa-q?CVH=G`vADR1(a}+yoScA#I&QYBGZG4g#L33T$MfF& z?CeYwg~`cDaffYfZ8=`q+S<}~btbrsMx*FF>+9>n`1<-<)ondJJp{n2sw!HoRyH;^ z=3R%)W)u29gG(pNGW2>q;_*1b;V=M*=>h+8#D8pp@S;=jBC zLgtsuySqD9R8$ZEJ32b}^z@YDvbniA0a#dA5dVFBeev+{kV{KTe0+Qq>zXA~tx3$! z&x_4#Yil_%F~Ql{S$21Ki*>Wv%=hK$&rx}%{*>yZsz6XWl?Cs zwwMvML11@xm%Y8cqL{R_v~X%_if?akMWH1P0%YOQCzJ12S64-WnUj`0`jFbg-v0i6 zN#H*k_Oeg@bG&srodlqIum8z-n=NVsy}@Akdjoy8{H;%zGV=fVX!{3_r~%$d-kw1K O0000nVj)`iGm?M^0mXc`*xTGa{Rclyw#oH7Z8jU4OeTyM2n0xyBwOrav7q^UPO(_* zcCzbs(sljQwy0DpwxJLXhjF=Fn7HY53ZKts4Gdk^ZSC||;QfA&;cy6^=NWjX)3IXK z>op`vLN=SVynhCNNKq6991I3=KA&+o91w{_kW40VKA)WjFPBTW-EIcnXfzOy#}SQ2 zaXcQGc*np1P$(1_FvoF_Wf`if+F~6A?{+)9zP>W>Znt|g_7?czKJN8;WEckHwOXzF z6FgFJzuyPX^T_A(w)PqhhhKBm^GlXJA|gQ$i0ApA6$8&-Z@+D!=K%KY g^sFb04g4&<0sb;)cxw)i(*OVf07*qoM6N<$f`H90A^-pY literal 0 HcmV?d00001 diff --git a/radio/sdcard/horus/THEMES/Default/mask_monitor_inver.png b/radio/sdcard/horus/THEMES/Default/mask_monitor_inver.png new file mode 100644 index 0000000000000000000000000000000000000000..64f251238afafc4d6e9b4d328bd635b935d2c0fb GIT binary patch literal 543 zcmV+)0^t3LP)HrkRpZB^i-Ntkihe0gX2_}=(X0wUis{REQ zqsb&#Od=M$!6GbJ#8nxBh6yr33~G4ZAou+c?>%tBIsDGyIUgS+dAr>(nM^PmjSz+* z9*+kej|U2c0ve45N~ID20JU0;wr#UqE^|7aaDGZQK6^0njjvXXkdiO;uIjLb5E=G)>Ou z^KZ?s1%_czQ504x6`oF~=ed7wqt$9L8jVsA1dc`{9*@Ugr~d_$WV6|%s;Y1QM8J#n hdOcW{^_m6%d;*MCblAkqugd@c002ovPDHLkV1gj`-nRe% literal 0 HcmV?d00001 diff --git a/radio/sdcard/horus/THEMES/Default/mask_monitor_lockch.png b/radio/sdcard/horus/THEMES/Default/mask_monitor_lockch.png new file mode 100644 index 0000000000000000000000000000000000000000..360923a093714e84a218ab12295eb959b077a9d4 GIT binary patch literal 530 zcmV+t0`2{YP)Gn#C}AlStJpjj476Prz$?7Z-vd+*~N_{zEG-gD381Ap**KIytHo6ROwRi$Z~ zoX_WcyjXg0^Y|C5)rtVvXf#NYDFArC->_{PymYLx(JS(dPKr_&(-8iv6*j+vGu3CraY!{HE@%LSHY zCDymw4Vg>^i^T$xBmti(yWNh8q6pTCqHw$2iofoIAPDF<4ojsH$Kx@BAQ0C20)>oI UpoSO5S307*qoM6N<$g7bCY@c;k- literal 0 HcmV?d00001 diff --git a/radio/sdcard/horus/THEMES/Default/mask_monitor_logsw.png b/radio/sdcard/horus/THEMES/Default/mask_monitor_logsw.png new file mode 100644 index 0000000000000000000000000000000000000000..dc63551434eeaa96992ac1b060ff5f5a6a7b9e3a GIT binary patch literal 1078 zcmV-61j+k}P)d4On@{G)o4vg~f4Jd% zT=(_6@BiUCT(h<(*Qdb(0N{C^Se7Nf-%pE+i!?DYk!{Tv#q&IwOeQiI45Uyf z=;7hvH8%jnVzKn9-rMm}kw^q5Cns>ZT;Mn^Z`?i6JqIGi;x8jV7y z(?K8*q~jQd!N|x60)fE4g2Ul(@!(`KiPqLu$Ye6Cudn0o?hYQ02P-QpsHv$zdwVv(uCK4N5?)&egPWR~Fg-n; z*G9YD4xLU1tJR8)jSVQ3N+^{|JUu;q9h^)iArgtOyStkg{85jOkEpDy#LUc0L2$vE z2?m3dN~MY_pNfhK(&=<$v)Ky96$DRBO_55aBCS?iFiA3*B&X9!x3{-MM5I!w$m{hI z$8q^5<+Iviv4Dthbaa%{(wmzbEH5vkr>6%}sT8%fwXj$$0D#%qSu{2_e(f8p)oKh6 z52q&w0s-vp?O}9u6jfDKkjv#58XCgZ))u^8Z^oipT3XQ8*Y`EBTrS7z>M8&r9*;vN zlcB4t3rkB&aJ${u-`|JN=gaBF_VzXe0s)*(XK~=?=VuTRY&KguSu&YSU%$M(pt`ym zD=5LhzLTV5SN#iIb+ObGo(^!abS+)AdyI5 zGMTax-rwItB9WxyJ3Bjbf{%}nK}7KRe4nr5l9CcqtJUOiII`Xu3Xn4$nW>l+S=Ox((DltDHIA4 wi^YGe27bQ1{c8=q0LVN${nQaA3;a|14Km00!+}?S)Bpeg07*qoM6N<$f+4Buq5uE@ literal 0 HcmV?d00001 diff --git a/radio/sdcard/horus/THEMES/Default/mask_monitor_mixes1.png b/radio/sdcard/horus/THEMES/Default/mask_monitor_mixes1.png new file mode 100644 index 0000000000000000000000000000000000000000..7b0c71f609acc5917933db281df10d0a429043ec GIT binary patch literal 1090 zcmV-I1ikx-P)>1HZM(%1Z3*?R^SNrBbk3t&m70qHl`^*VfjG1S%>jz_Ki|*(_F8R!~=0 zhlz;^ghC+zfXCwzji)FI!^6WkI5;Q{9F0cd@pw>HRtAMa0fu3a&1Nw+HU^W)1cqU- zwY3G6N`;Gy3jn~<(h>+E=;`S}Fc{2Pm4d+l5DJCBFbsH}huLh#$jAsXnT#Oj^?IRJ ztHCgg5M!R_^M<1+@Y^n(oScNwXvFL5YmT7T>qSjX4FZ9{r~9C2u+?hC;NT$Q@i-P2 z7jb@mo)@msXmELX`8D8$g#`=@4B+ME1pu(Uy$wPLy1Tovv$KPAI-LW*zrX)Ga3Ya_ zTrNi{l@bZ)^?G5PLZJXn)3~|00RYf64X4vtFgR~sjKyMvq9{U9l*q5uYK7;!yF0SG zyGxFbj|m}!=yW;~2n6z`O_pVIogXc=*=)wl%#85Y!C(*+ML{Z+!eB7q@bFORi$o&O zYPIlsy*aaee0)S>V`Jel<~R=h{r#Aoodp0`EEY^pPvh$9Do41fsR?ekI|s_LESj5} zMG2;$UCnVE`uh4{v)S_IZI)%x($a#Bjg7ojtzZ61I6p_p2(nkC;mSsWHG}LM}2q9lu)M_uh%OXPf-*G2M4jYxA!q{EEa>;>qT*KF;prQ7=}SMo5je;2+U?P7>2>d z#s(@YD{*#q1^`%CSO6geU0q!Wg+e*IQZN_*!r?F&hJhdmuvjb@8X7_-lM%&yJ|8q1 z4H$+IeJltxcpUTd z^Ef>{%?sCRwKzXN{~GYz+#LG)`tbDh1OV9F+yo&6ot>T7+S)=ooz8*Z-roKlIFU#| zsZ=7BN=XC^27@?GrBZ>WX!2k@9&F!(P$Jp zoen;qFK4y)_xGr;uP@xkJkO)Iw-?jX(*OXg)r!f|4 z3R0;Q%FD|oV}JhqDb{}_lH#}EYmuTTxZQ3^48FX)L^7F_oc8wi_Pp~y1+J~F#qsfR zK}i6|aj2-M_&c!GYK7nLm)u0}Su&YKM@PqpSN!88?^P%iBoc`btyW9)dOb-b691XV z@jOq=W-~cBI4CIbQz#U_qv3a@x8Ih~%U-{o{;wyD?7JRq{{WV&UL`9gV;ukh002ov JPDHLkV1f)D?KJ=Z literal 0 HcmV?d00001 diff --git a/radio/sdcard/horus/THEMES/Default/mask_monitor_outL.png b/radio/sdcard/horus/THEMES/Default/mask_monitor_outL.png new file mode 100644 index 0000000000000000000000000000000000000000..78b54ffe92740659a4e0bacf1f4a57367ffd905e GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VEX7WqAsj$Z!;#Vfk}U9uEC#B- z4#JF18nY{af|4b!5hcO-X(i=}MX3zs<>h*rdD+Fui3O>8`9DnXLE~Q7X*EFm6-b;APz2@?*AI)1BpK}HFJ?7eeJ2j$= zHU3i6;we>sY|eXV3YI^Z@!m zQzI{Zw|!o@>AiJm=tUD=!(-f&f`UX?6bP0l+XkKl~HhV literal 0 HcmV?d00001 diff --git a/radio/sdcard/horus/THEMES/Default/mask_monitor_outR.png b/radio/sdcard/horus/THEMES/Default/mask_monitor_outR.png new file mode 100644 index 0000000000000000000000000000000000000000..ec8a743c50f611f02ee2b60ca70d9046422282f9 GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VEX7WqAsj$Z!;#Vfk}U9uEC#B- z4#JF18nY{af|4b!5hcO-X(i=}MX3zs<>h*rdD+Fui3O>8`9_+a-KeiL$26kqR( zoA739FT|KfGoYqsXw-(^@>^4h*Cxy=jcW(H4JKbLh*2~7Zv`DyL| literal 0 HcmV?d00001 diff --git a/radio/sdcard/horus/THEMES/Default/mask_monitor_outputs1.png b/radio/sdcard/horus/THEMES/Default/mask_monitor_outputs1.png new file mode 100644 index 0000000000000000000000000000000000000000..b886fc1bc18e86a43c473fcea0f1d9d914c9c098 GIT binary patch literal 1083 zcmV-B1jPG^P)9Ec@K5o;UM{utitckq4Q@AsPd#^?LF>OOd%`?>F{=eh6q>V9M-i64OC z?Sdc(NT<`^N}^OMA(zXgi~JjrNQBeV(=-?i1n{k9Fc>&JJ7?r6%}Q~34(xyg#}DaO+l~MN+VzIzxvq2`4We}UqW_Uav93LN}rluytAB{#) zQc?l{NG6j|tJQziIGIf5bX7*9k-=b)Z{ct_*x1;}^Ye4QhiEh^=13-!|J3+*VvR;a ztyU|sf`S6kKQJ)B&mt${Xf&D;m`Ehp($XUC@p`=y|MvDaS5{USi^aZ|m?S+OkGRL- za7cW;y}bnRZW*!>E3$R!<>e*ZZZ|G2E?_hoF*Y^^lgR|H*NZ?PAlW-IGJ@9DR+N^O z=B_I5oj4QsxU)emcYc6OFqjb~Y;16AYm2qD zwFJPWr6mbzBobj`W1}QKX90PBe&*rfA?N1iI5adwyNWVSaud_4W1e`F!yCeAwOHMKBnI z*=&ZzVgUfeVlnje^uX`;=Pn>0nL?r9+S*!19aE{4*o3iIjBRagS#xB)>TK4~&_KW6 z|6%t&JUp<%qCnqP+Xf%>Fl}d%;;^GgbHy)3pudfe#dwXBk>dzt` zkF&G0Q*yF@J8=f_?~`CINF)-XWPXNN@jCbF^?Kag+`#R2=RE8^K0d-~wPI&y2k*`2 zZ=u)gp;RiRbM>DdZ+~o{m%V*E{i!F6?57@WzW`#-G|386iqeoEf)=$1%YuqRDk32wBne4cwUIWh3aX8?k#;WH6m4n| zvlgR{^%Y~DZ6V%q$rrE>c zFiJ~H0RZuM90dghf7Uo2kLQ#solZx;-_Q3lIXOwaUeAk*3w|Wwa9E5HkH`P6@$bM& zrIIR@Dn*NmibVUszyLohIRS^m;WWosEXJ0W7IBZ;?M|`p?CfxLb(N7wch(&ciA zdnP9*Q*1_~kpMm{LndHZrcS-Oy28T30xmBvq0{LwHZ}%>!2q}04WG}KvUg-;1g)*D zC@U+=omD5=0dQz&h;Fx=R;yLCkB*Mg z=kxL97?0grbeSl2_%(DsZyy3fGaC2qTj>A z1Dl(h)A&9kfsBujLnf0!5CkNXNeF^~U@(Z|<6{^M2F%aTqoJVz9*+kej|Y2ud+_`H zFqurSSS$d5NF;*Z-d=dU-rNZ!o62M|uCK4B)iIGsh)o!YMA+8WmN7=gRA viewMax) { - view = 0; - } - else { - switch (event) { - case EVT_KEY_FIRST(KEY_RIGHT): - if (++view > viewMax) - view = 0; - break; - case EVT_KEY_FIRST(KEY_LEFT): - if (--view < 0) - view = viewMax; - break; - } - } - - int skipCount = view*8; - for (int ch=0, index=0; index skipCount) { - // The black background - lcdDrawSolidFilledRect(x, y, CHANNEL_WIDTH, CHANNEL_HEIGHT, TEXT_BGCOLOR); - - // The label - unsigned int lenLabel = ZLEN(g_model.limitData[ch].name); - if (lenLabel > 0) - lcdDrawSizedText(x+CHANNEL_PADDING_HORZ, y+CHANNEL_PADDING_VERT, g_model.limitData[ch].name, sizeof(g_model.limitData[ch].name), ZCHAR); - else - putsChn(x+CHANNEL_PADDING_HORZ, y+CHANNEL_PADDING_VERT, ch+1, 0); - - int32_t val = channelOutputs[ch]; - - // The bar - lcdDrawSolidFilledRect(x+CHANNEL_PADDING_HORZ, y+15, BAR_WIDTH, 6, TEXT_INVERTED_BGCOLOR); - unsigned int lim = g_model.extendedLimits ? 640*2 : 512*2; - unsigned int len = limit(1, (abs(val) * BAR_WIDTH/2 + lim/2) / lim, BAR_WIDTH/2); - unsigned int x0 = (val>0) ? x+CHANNEL_PADDING_HORZ-1+BAR_WIDTH/2 : x+CHANNEL_PADDING_HORZ+BAR_WIDTH/2+1-len; - lcdDrawSolidFilledRect(x0, y+16, len, 4, TEXT_BGCOLOR); - - y += CHANNEL_HEIGHT + CHANNEL_MARGIN; - if (y >= 4*(CHANNEL_HEIGHT + CHANNEL_MARGIN)) { - x += CHANNEL_WIDTH + CHANNEL_MARGIN; - y = CHANNEL_MARGIN; - } - } - } - } - -#if 0 + char chanString[] = "CH 32"; + uint16_t limits = (g_model.extendedLimits ? 300 : 200); + int16_t chanVal = calcRESXto100(channelOutputs[Chan]); + LimitData *ld = limitAddress(Chan); -#if defined(CHANNELS_MONITOR_INV_HIDE) - //if channel output is inverted, show it with oposite sign - if (g_model.limitData[ch].revert) val = -val; -#endif + if (!locked_bmp) locked_bmp = BitmapBuffer::load(getThemePath("mask_monitor_lockch.png")); + if (!inver_bmp) inver_bmp = BitmapBuffer::load(getThemePath("mask_monitor_inver.png")); + if (!outL_bmp) outL_bmp = BitmapBuffer::load(getThemePath("mask_monitor_outL.png")); + if (!outR_bmp) outR_bmp = BitmapBuffer::load(getThemePath("mask_monitor_outR.png")); + + strAppend(chanString, "Ch "); + strAppendSigned(&chanString[3], Chan + 1, 2); + lcdDrawText(x + X_OFFSET, y + 1, chanString, TINSIZE | TEXT_COLOR | LEFT); + + lcdDrawSizedText(x + X_OFFSET + 50, y + 1, g_model.limitData[Chan].name, sizeof(g_model.limitData[Chan].name), TINSIZE | TEXT_COLOR | LEFT | ZCHAR); - // Value -#if defined(PPM_UNIT_US) - uint8_t wbar = (longNames ? 54 : 64); - lcdDrawNumber(x+LCD_W/2-3-wbar-ofs, y+1, PPM_CH_CENTER(ch)+val/2, TINSIZE); -#elif defined(PPM_UNIT_PERCENT_PREC1) - uint8_t wbar = (longNames ? 48 : 58); - lcdDrawNumber(x+LCD_W/2-3-wbar-ofs, y+1, calcRESXto1000(val), PREC1|TINSIZE); -#else - uint8_t wbar = (longNames ? 54 : 64); - lcdDrawNumber(x+LCD_W/2-3-wbar-ofs, y+1, calcRESXto1000(val)/10, TINSIZE); // G: Don't like the decimal part* -#endif -#endif + lcdColorTable[CUSTOM_COLOR_INDEX]= RGB(222, 222, 222); + lcdDrawSolidFilledRect(x + X_OFFSET, y + 11, COLLUMN_SIZE, BAR_HEIGHT, CUSTOM_COLOR); + + lcdColorTable[CUSTOM_COLOR_INDEX]= RGB(180, 180, 180); + lcdDrawText(x + X_OFFSET + posOnBar(-100 + ld->min/10)+2, y + 10, "]",TINSIZE| TEXT_COLOR | RIGHT); + lcdDrawText(x + X_OFFSET + posOnBar(100 + ld->max/10), y + 10, "[",TINSIZE| TEXT_COLOR); + lcd->drawSolidVerticalLine(x + X_OFFSET + posOnBar(calcRESXto100(ld->offset)), y + 11, BAR_HEIGHT , MAINVIEW_GRAPHICS_COLOR); + lcd->drawSolidVerticalLine(x + X_OFFSET + posOnBar(chanVal), y + 11, BAR_HEIGHT , HEADER_BGCOLOR); + + strAppendSigned(chanString, chanVal); + if (chanVal < -limits / 2) { + lcd->drawBitmap(x + X_OFFSET + COLLUMN_SIZE / 2 - 55, y + 8, outL_bmp); + chanVal = - limits / 2; + lcdDrawText(x + X_OFFSET + COLLUMN_SIZE - 2, y + 1, chanString, TINSIZE | TEXT_COLOR | RIGHT | INVERS); + } else if (chanVal > limits / 2){ + lcd->drawBitmap(x + X_OFFSET + COLLUMN_SIZE / 2 + 55, y + 8, outR_bmp); + chanVal = limits / 2; + lcdDrawText(x + X_OFFSET + COLLUMN_SIZE - 2, y + 1, chanString, TINSIZE | TEXT_COLOR | RIGHT | INVERS); + } else { + lcdDrawText(x + X_OFFSET + COLLUMN_SIZE - 2, y + 1, chanString, TINSIZE | TEXT_COLOR | RIGHT); + } + + if(posOnBar(chanVal) > posOnBar(calcRESXto100(ld->offset))){ + lcdDrawSolidFilledRect(x + X_OFFSET + posOnBar(calcRESXto100(ld->offset)), y + 11, posOnBar(chanVal) - posOnBar(calcRESXto100(ld->offset)), BAR_HEIGHT, MAINVIEW_GRAPHICS_COLOR); + } + else if (posOnBar(chanVal) < posOnBar(calcRESXto100(ld->offset))) { + uint16_t endpoint = x + X_OFFSET + posOnBar(calcRESXto100(ld->offset)); + uint16_t size = posOnBar(calcRESXto100(ld->offset)) - posOnBar(chanVal); + lcdDrawSolidFilledRect(endpoint - size, y + 11, size, BAR_HEIGHT, MAINVIEW_GRAPHICS_COLOR); + } + + if (safetyCh[Chan] != OVERRIDE_CHANNEL_UNDEFINED) lcd->drawBitmap(x + 3, y + 5, locked_bmp); + if (ld->revert) lcd->drawBitmap(x + 16, y + 5, inver_bmp); + lcd->drawSolidVerticalLine(x + X_OFFSET + COLLUMN_SIZE / 2, y + 11, BAR_HEIGHT , TEXT_COLOR); +} + +bool menuChannelsMonitor(evt_t event, uint8_t page) +{ return true; } + +bool menuChannels1(evt_t event) +{ + MENU("Channels monitor 1-16", MONITOR_ICONS, menuTabChannels, e_Channels1, 0, { 0 }); + lastChannelsPage = e_Channels1; + + int8_t Chan; + uint16_t x=0,y=0; + for(Chan=0, x=1, y=Y_OFFSET;Chan < 8; Chan++, y+=ROW_HEIGHT){ + drawSingleOutputBar(x, y, Chan); + } + for(Chan=8, x=1 + LCD_W/2, y=Y_OFFSET; Chan < 16;Chan++, y+=ROW_HEIGHT){ + drawSingleOutputBar(x, y, Chan); + } + return menuChannelsMonitor(event, 0); +} + +bool menuChannels2(evt_t event) +{ + MENU("Channels monitor 17-32", MONITOR_ICONS, menuTabChannels, e_Channels2, 0, { 0 }); + lastChannelsPage = e_Channels2; + + int8_t Chan; + uint16_t x,y; + for(Chan=16, x=1, y=Y_OFFSET; Chan < 24; Chan++, y+=ROW_HEIGHT){ + drawSingleOutputBar(x, y, Chan); + } + for(Chan=24, x=1 + LCD_W/2, y=Y_OFFSET; Chan < 32; Chan++, y+=ROW_HEIGHT){ + drawSingleOutputBar(x, y, Chan); + } + + return menuChannelsMonitor(event, 1); +} diff --git a/radio/src/gui/horus/view_statistics.cpp b/radio/src/gui/horus/view_statistics.cpp index 330b56b01..8fa12a2a0 100644 --- a/radio/src/gui/horus/view_statistics.cpp +++ b/radio/src/gui/horus/view_statistics.cpp @@ -25,7 +25,6 @@ #define MENU_STATS_COLUMN2 (LCD_W/2) #define MENU_STATS_COLUMN3 (LCD_W/2 + 120) - bool menuStatsGraph(evt_t event) { switch(event) {