Improve power meter GUI

This commit is contained in:
3djc
2019-04-21 08:57:46 +02:00
parent 0e009d81d8
commit b079fd3bd1
14 changed files with 28 additions and 11 deletions
@@ -26,6 +26,7 @@ extern uint8_t g_moduleIdx;
enum PowerMeterFields {
POWER_METER_FREQ_RANGE,
POWER_METER_ATTENUATOR,
POWER_METER_MAX,
POWER_METER_POWER,
POWER_METER_PEAK,
POWER_METER_FIELDS_MAX
@@ -34,7 +35,7 @@ enum PowerMeterFields {
void menuRadioPowerMeter(event_t event)
{
SUBMENU(STR_MENU_POWER_METER, POWER_METER_FIELDS_MAX-1, {0, 0, READONLY_ROW, READONLY_ROW});
SUBMENU(STR_MENU_POWER_METER, POWER_METER_FIELDS_MAX-1, {0, 0, READONLY_ROW, READONLY_ROW, READONLY_ROW});
if (TELEMETRY_STREAMING()) {
lcdDrawCenteredText(LCD_H/2, STR_TURN_OFF_RECEIVER);
@@ -58,24 +59,17 @@ void menuRadioPowerMeter(event_t event)
if (moduleSettings[g_moduleIdx].mode != MODULE_MODE_POWER_METER) {
memclear(&reusableBuffer.powerMeter, sizeof(reusableBuffer.powerMeter));
reusableBuffer.powerMeter.freq = 2400000000;
#if defined(FRSKY_RELEASE)
reusableBuffer.powerMeter.attn = 4;
#endif
moduleSettings[g_moduleIdx].mode = MODULE_MODE_POWER_METER;
}
// The warning
lcdDrawText(3 * FW, FH + 3, STR_MAX, BOLD);
lcdDrawText(lcdLastRightPos, FH + 3, ": ", BOLD);
lcdDrawNumber(lcdLastRightPos, FH + 3, -10 + 10 * reusableBuffer.powerMeter.attn, BOLD);
lcdDrawText(lcdLastRightPos, FH + 3, "dBm ", BOLD);
lcdDrawText(lcdLastRightPos, FH + 3, "(", BOLD);
drawPower(lcdLastRightPos, FH + 3, -10 + 10 * reusableBuffer.powerMeter.attn, BOLD);
lcdDrawText(lcdLastRightPos, FH + 3, ")", BOLD);
if (reusableBuffer.powerMeter.attn != 0)
lcdDrawCenteredText(FH+2, STR_POWERMETER_ATTN_NEEDED, BOLD);
for (uint8_t i=0; i<POWER_METER_FIELDS_MAX; i++) {
LcdFlags attr = (menuVerticalPosition == i ? (s_editMode > 0 ? INVERS | BLINK : INVERS) : 0);
coord_t y = MENU_HEADER_HEIGHT + 2 * FH + i * FH;
coord_t y = MENU_HEADER_HEIGHT + 12 + i * FH;
switch (i) {
case POWER_METER_FREQ_RANGE:
@@ -100,6 +94,16 @@ void menuRadioPowerMeter(event_t event)
}
break;
case POWER_METER_MAX:
lcdDrawText(0, y, STR_MAX);
lcdDrawNumber(8 * FW, y, -10 + 10 * reusableBuffer.powerMeter.attn);
lcdDrawText(lcdLastRightPos, y, "dBm/ ");
drawPower(lcdLastRightPos, y, -10 + 10 * reusableBuffer.powerMeter.attn, 0);
if (attr) {
reusableBuffer.powerMeter.attn = checkIncDec(event, reusableBuffer.powerMeter.attn, 0, 5, 0);
}
break;
case POWER_METER_POWER:
lcdDrawText(0, y, STR_POWERMETER_POWER);
if (reusableBuffer.powerMeter.power) {