From 9651e52317bb787b3193b3b73749c845c99b31e2 Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Tue, 19 Sep 2023 14:48:09 +0100 Subject: [PATCH] Fix frequency display position --- README.md | 6 +-- app/menu.c | 126 ++++++++++++++++++++++---------------------- bitmaps.c | 32 +++++------ firmware | Bin 165592 -> 165592 bytes firmware.bin | Bin 49748 -> 49708 bytes firmware.packed.bin | Bin 49766 -> 49726 bytes ui/main.c | 28 ++++------ ui/menu.c | 23 ++++---- ui/menu.h | 8 +-- ui/status.c | 18 ++++--- 10 files changed, 117 insertions(+), 124 deletions(-) diff --git a/README.md b/README.md index 6605113..51f26f5 100644 --- a/README.md +++ b/README.md @@ -26,11 +26,11 @@ ENABLE_CHAN_NAME_FREQ := 1 show channel frequency below channel na ENABLE_WIDE_RX := 1 full 18MHz to 1300MHz RX (though frontend not tuned over full range) ENABLE_TX_WHEN_AM := 0 allow TX (always FM) when RX is set to AM ENABLE_CTCSS_TAIL_PHASE_SHIFT := 1 standard CTCSS tail phase shift rather than QS's own 55Hz tone method -ENABLE_MAIN_KEY_HOLD := 1 initial F-key press not needed, instead hold down keys 0-9 +ENABLE_MAIN_KEY_HOLD := 1 initial F-key press not needed, instead hold down keys 0-9 to access the functions ENABLE_BOOT_BEEPS := 0 give user audio feedback on volume knob position at boot-up -ENABLE_COMPANDER := 1 compander option - setting not yet saved +ENABLE_COMPANDER := 1 compander option - setting not yet saved (per channel) ENABLE_SHOW_CHARGE_LEVEL := 1 show the charge level when the radio is on charge -ENABLE_REVERSE_BAT_SYMBOL := 1 reverse the battery symbol on the status bar +ENABLE_REVERSE_BAT_SYMBOL := 1 mirror the battery symbol on the status bar (+ pole on the right) ENABLE_STATUSBAR_VOLTAGE := 0 show the battery voltage on the top status bar - when possible ENABLE_STATUSBAR_PERCENTAGE := 1 show the battery percentage on the top status bar - when possible #ENABLE_SINGLE_VFO_CHAN := 1 not yet implemented - single VFO on display when possible diff --git a/app/menu.c b/app/menu.c index d4843b7..e170330 100644 --- a/app/menu.c +++ b/app/menu.c @@ -48,79 +48,79 @@ #ifdef ENABLE_VOICE static const VOICE_ID_t MenuVoices[] = { - VOICE_ID_SQUELCH, - VOICE_ID_FREQUENCY_STEP, - VOICE_ID_POWER, - VOICE_ID_DCS, - VOICE_ID_CTCSS, - VOICE_ID_DCS, - VOICE_ID_CTCSS, - VOICE_ID_TX_OFFSET_FREQUENCY_DIRECTION, - VOICE_ID_TX_OFFSET_FREQUENCY, - VOICE_ID_CHANNEL_BANDWIDTH, - VOICE_ID_SCRAMBLER_ON, - VOICE_ID_BUSY_LOCKOUT, - VOICE_ID_MEMORY_CHANNEL, - VOICE_ID_SAVE_MODE, - VOICE_ID_VOX, - VOICE_ID_INVALID, - VOICE_ID_DUAL_STANDBY, - VOICE_ID_INVALID, - VOICE_ID_BEEP_PROMPT, - VOICE_ID_TRANSMIT_OVER_TIME, - #ifdef ENABLE_VOICE - VOICE_ID_VOICE_PROMPT, - #endif - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, + VOICE_ID_SQUELCH, // SQL + VOICE_ID_FREQUENCY_STEP, // STEP + VOICE_ID_POWER, // T-PWR + VOICE_ID_DCS, // R-DCS + VOICE_ID_CTCSS, // R-CTCS + VOICE_ID_DCS, // T-DCS + VOICE_ID_CTCSS, // T-CTCS + VOICE_ID_TX_OFFSET_FREQUENCY_DIRECTION, // T-DIR + VOICE_ID_TX_OFFSET_FREQUENCY, // T-OFFS + VOICE_ID_INVALID, // T-VFO + VOICE_ID_TRANSMIT_OVER_TIME, // T-TOUT + VOICE_ID_CHANNEL_BANDWIDTH, // W/N + VOICE_ID_SCRAMBLER_ON, // SCRAM + VOICE_ID_BUSY_LOCKOUT, // BUSYCL + VOICE_ID_MEMORY_CHANNEL, // CH-SAV + VOICE_ID_DELETE_CHANNEL, // CH-DEL + VOICE_ID_INVALID, // CH-DIS + VOICE_ID_SAVE_MODE, // BATSAV + VOICE_ID_VOX, // VOX + VOICE_ID_INVALID, // BACKLT + VOICE_ID_DUAL_STANDBY, // DUALRX + VOICE_ID_BEEP_PROMPT, // BEEP + #ifdef ENABLE_VOICE + VOICE_ID_VOICE_PROMPT, // VOICE + #endif + VOICE_ID_INVALID, // SC-REV + VOICE_ID_INVALID, // KEYLOC + VOICE_ID_INVALID, // S-ADD1 + VOICE_ID_INVALID, // S-ADD2 + VOICE_ID_INVALID, // STE + VOICE_ID_INVALID, // RP-STE + VOICE_ID_INVALID, // MIC #ifdef ENABLE_COMPANDER - VOICE_ID_INVALID, + VOICE_ID_INVALID, // COMPND #endif - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, + VOICE_ID_INVALID, // 1-CALL + VOICE_ID_INVALID, // SLIST + VOICE_ID_INVALID, // SLIST1 + VOICE_ID_INVALID, // SLIST2 #ifdef ENABLE_ALARM - VOICE_ID_INVALID, + VOICE_ID_INVALID, // AL-MOD #endif - VOICE_ID_ANI_CODE, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, + VOICE_ID_ANI_CODE, // ANI-ID + VOICE_ID_INVALID, // UPCODE + VOICE_ID_INVALID, // DWCODE + VOICE_ID_INVALID, // D-ST + VOICE_ID_INVALID, // D-RSP + VOICE_ID_INVALID, // D-HOLD + VOICE_ID_INVALID, // D-PRE + VOICE_ID_INVALID, // PTT-ID + VOICE_ID_INVALID, // D-DCD + VOICE_ID_INVALID, // D-LIST + VOICE_ID_INVALID, // D-LIVE + VOICE_ID_INVALID, // PONMSG + VOICE_ID_INVALID, // ROGER + VOICE_ID_INVALID, // BATVOL + VOICE_ID_INVALID, // MODE #ifdef ENABLE_NOAA - VOICE_ID_INVALID, + VOICE_ID_INVALID, // NOAA-S #endif - VOICE_ID_DELETE_CHANNEL, - VOICE_ID_INITIALISATION, + VOICE_ID_INITIALISATION, // RESET // hidden items - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, - VOICE_ID_INVALID, + VOICE_ID_INVALID, // F-LOCK + VOICE_ID_INVALID, // TX-200 + VOICE_ID_INVALID, // TX-350 + VOICE_ID_INVALID, // TX-500 + VOICE_ID_INVALID, // 350-EN + VOICE_ID_INVALID, // SCR-EN - VOICE_ID_INVALID, - VOICE_ID_INVALID + VOICE_ID_INVALID, // TX-EN + VOICE_ID_INVALID // F-CALI }; #endif diff --git a/bitmaps.c b/bitmaps.c index 02991ce..6063924 100644 --- a/bitmaps.c +++ b/bitmaps.c @@ -290,14 +290,12 @@ const uint8_t BITMAP_VOX[18] = 0b01000000, 0b00100000, 0b00011111, - 0b00000000, 0b00111110, 0b01000001, 0b01000001, 0b01000001, 0b00111110, - 0b00000000, 0b01100011, 0b00010100, @@ -315,7 +313,6 @@ const uint8_t BITMAP_VOX[18] = 0b00011000, 0b00100000, 0b01111111, - 0b00000000, 0b01100011, 0b00010100, @@ -324,7 +321,7 @@ const uint8_t BITMAP_VOX[18] = 0b01100011 }; #else - // 'XB' (cross-band) + // 'XB' (cross-band/cross-VFO) const uint8_t BITMAP_XB[12] = { // "XB" 0b00000000, @@ -333,7 +330,6 @@ const uint8_t BITMAP_VOX[18] = 0b00001000, 0b00010100, 0b01100011, - 0b00000000, 0b01111111, 0b01001001, @@ -351,7 +347,6 @@ const uint8_t BITMAP_TDR1[12] = 0b01000001, 0b01000001, 0b00111110, - 0b00000000, 0b01111111, 0b00100000, @@ -361,20 +356,19 @@ const uint8_t BITMAP_TDR1[12] = }; const uint8_t BITMAP_TDR2[12] = -{ // "--" +{ // "><" .. DW on hold 0b00000000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, - 0b00010000, + 0b00000000, + 0b00100010, + 0b00110110, + 0b00011100, + 0b00001000, + 0b00000000, + 0b00001000, + 0b00011100, + 0b00110110, + 0b00100010, + 0b00000000 }; #ifdef ENABLE_VOICE diff --git a/firmware b/firmware index 3616c90147317e0180af5476f7bcf105fa923bf2..f076d82408f736d67632376e2b9b1d2d01d484c2 100644 GIT binary patch delta 9428 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 delta 9453 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 diff --git a/firmware.bin b/firmware.bin index 4df151656163db898282b98de63edcbfad760279..06ca925d42f8d13c29250ce06f1e52855f5f6c26 100644 GIT binary patch delta 6961 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 delta 6981 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 Y-!ueffd+|sXMqDr9_!dZ((uCn0m`|S5dZ)H delta 15083 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 { @@ -339,7 +339,7 @@ void UI_DisplayMain(void) } } else - if (SomeValue == 2) + if (duff_beer == 2) { // RX signal level #ifdef ENABLE_DBM // dBm @@ -387,7 +387,7 @@ void UI_DisplayMain(void) } else { // or show the CTCSS/DCS symbol - const FREQ_Config_t *pConfig = (SomeValue == 1) ? gEeprom.VfoInfo[vfo_num].pTX : gEeprom.VfoInfo[vfo_num].pRX; + const FREQ_Config_t *pConfig = (duff_beer == 1) ? gEeprom.VfoInfo[vfo_num].pTX : gEeprom.VfoInfo[vfo_num].pRX; const unsigned int code_type = pConfig->CodeType; const char *code_list[] = {"", "CT", "DCS", "DCR"}; if (code_type >= 0 && code_type < ARRAY_SIZE(code_list)) @@ -448,15 +448,9 @@ void UI_DisplayMain(void) if (gChargingWithTypeC) { // charging .. show the battery state #ifdef ENABLE_SHOW_CHARGE_LEVEL - const uint16_t volts = (gBatteryVoltageAverage < gMin_bat_v) ? gMin_bat_v : - (gBatteryVoltageAverage > gMax_bat_v) ? gMax_bat_v : - gBatteryVoltageAverage; - - sprintf(String, "Charge %u.%02uV %u%%", - gBatteryVoltageAverage / 100, - gBatteryVoltageAverage % 100, - (100 * (volts - gMin_bat_v)) / (gMax_bat_v - gMin_bat_v)); - + const uint16_t volts = (gBatteryVoltageAverage < gMin_bat_v) ? gMin_bat_v : gBatteryVoltageAverage; + const uint16_t percent = (100 * (volts - gMin_bat_v)) / (gMax_bat_v - gMin_bat_v); + sprintf(String, "Charge %u.%02uV %u%%", gBatteryVoltageAverage / 100, gBatteryVoltageAverage % 100, percent); UI_PrintStringSmall(String, 2, 0, 3); #endif } diff --git a/ui/menu.c b/ui/menu.c index d5c3221..718101f 100644 --- a/ui/menu.c +++ b/ui/menu.c @@ -48,22 +48,23 @@ const char MenuList[][7] = "T-CTCS", // was "T_CTCS" "T-DIR", // was "SFT_D" "T-OFFS", // was "OFFSET" + "T-VFO", // was "WX" + "T-TOUT", // was "TOT" "W/N", "SCRAM", // was "SCR" "BUSYCL", // was "BCL" - "MEMSAV", // was "MEM-CH" + "CH-SAV", // was "MEM-CH" + "CH-DEL", // was "DEL-CH" + "CH-DIS", // was "MDF" "BATSAV", // was "SAVE" "VOX", "BACKLT", // was "ABR" "DUALRX", // was "TDR" - "T-VFO", // was "WX" "BEEP", - "T-TOUT", // was "TOT" #ifdef ENABLE_VOICE "VOICE", #endif "SC-REV", - "CHDISP", // was "MDF" "KEYLOC", // was "AUTOLk" "S-ADD1", "S-ADD2", @@ -98,11 +99,10 @@ const char MenuList[][7] = #ifdef ENABLE_NOAA "NOAA-S", #endif - "MEMDEL", // was "Del-CH" - "RESET", + "RESET", // might be better to move this to the hidden menu items ? - // hidden menu items from here on. - // enabled if pressing PTT and upper side button at power-on. + // hidden menu items from here on + // enabled if pressing both the PTT and upper side button at power-on "F-LOCK", "TX-200", // was "200TX" @@ -114,7 +114,7 @@ const char MenuList[][7] = "TX-EN", // enable TX "F-CALI", // reference xtal calibration - "" // end of list - DO NOT DELETE THIS ! + "" // end of list - DO NOT DELETE THIS ! .. I use this to compute this list size }; const char gSubMenu_TXP[3][5] = @@ -555,8 +555,9 @@ void UI_DisplayMenu(void) { // 2nd text line .. percentage UI_PrintString(String, 50, 127, 1, 8); - const uint16_t volts = (gBatteryVoltageAverage < gMin_bat_v) ? gMin_bat_v : gBatteryVoltageAverage; - sprintf(String, "%u%%", (100 * (volts - gMin_bat_v)) / (gMax_bat_v - gMin_bat_v)); + const uint16_t volts = (gBatteryVoltageAverage < gMin_bat_v) ? gMin_bat_v : gBatteryVoltageAverage; + const uint16_t percent = (100 * (volts - gMin_bat_v)) / (gMax_bat_v - gMin_bat_v); + sprintf(String, "%u%%", percent); UI_PrintString(String, 50, 127, 3, 8); #if 0 sprintf(String, "Curr %u", gBatteryCurrent); // needs scaling into mA diff --git a/ui/menu.h b/ui/menu.h index e130b31..914cee2 100644 --- a/ui/menu.h +++ b/ui/menu.h @@ -31,22 +31,23 @@ enum MENU_T_CTCS, MENU_SFT_D, MENU_OFFSET, + MENU_XB, + MENU_TOT, MENU_W_N, MENU_SCR, MENU_BCL, MENU_MEM_CH, + MENU_DEL_CH, + MENU_MDF, MENU_SAVE, MENU_VOX, MENU_ABR, MENU_TDR, - MENU_XB, MENU_BEEP, - MENU_TOT, #ifdef ENABLE_VOICE MENU_VOICE, #endif MENU_SC_REV, - MENU_MDF, MENU_AUTOLK, MENU_S_ADD1, MENU_S_ADD2, @@ -81,7 +82,6 @@ enum #ifdef ENABLE_NOAA MENU_NOAA_S, #endif - MENU_DEL_CH, MENU_RESET, // items after here are normally hidden diff --git a/ui/status.c b/ui/status.c index 5f13423..4b4ebb8 100644 --- a/ui/status.c +++ b/ui/status.c @@ -122,17 +122,21 @@ void UI_DisplayStatus(const bool test_display) UI_PrintStringSmallBuffer(s, line); //line += 8 * 4; #elif defined(ENABLE_STATUSBAR_PERCENTAGE) - char s[6]; - const uint16_t volts = (gBatteryVoltageAverage < gMin_bat_v) ? gMin_bat_v : gBatteryVoltageAverage; - sprintf(s, "%u%%", (100 * (volts - gMin_bat_v)) / (gMax_bat_v - gMin_bat_v)); - UI_PrintStringSmallBuffer(s, line); + const uint16_t volts = (gBatteryVoltageAverage < gMin_bat_v) ? gMin_bat_v : gBatteryVoltageAverage; + const uint16_t percent = (100 * (volts - gMin_bat_v)) / (gMax_bat_v - gMin_bat_v); + const unsigned int x = (percent >= 100) ? 0 : 4; // move to the right a bit + char s[8]; + sprintf(s, "%u%%", percent); + UI_PrintStringSmallBuffer(s, line + x); //line += 8 * 4; #endif } -// else -// line += sizeof(BITMAP_F_Key); - line = gStatusLine + LCD_WIDTH - sizeof(BITMAP_BatteryLevel5) - sizeof(BITMAP_USB_C); // point to right side of the screen + + + + // move to right side of the screen + line = gStatusLine + LCD_WIDTH - sizeof(BITMAP_BatteryLevel5) - sizeof(BITMAP_USB_C); // USB-C charge indicator if (gChargingWithTypeC || test_display)