diff --git a/Makefile b/Makefile index 1d7e0f8..3aa8688 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ ENABLE_OVERLAY := 0 ENABLE_LTO := 1 # UART Programming 2.9 kB ENABLE_UART := 1 -ENABLE_UART_DEBUG := 1 +ENABLE_UART_DEBUG := 0 # AirCopy 2.5 kB ENABLE_AIRCOPY := 1 ENABLE_AIRCOPY_REMEMBER_FREQ := 1 diff --git a/firmware.bin b/firmware.bin index 63548fd..4e4640a 100644 Binary files a/firmware.bin and b/firmware.bin differ diff --git a/firmware.packed.bin b/firmware.packed.bin index 6712c80..3b34ec2 100644 Binary files a/firmware.packed.bin and b/firmware.packed.bin differ diff --git a/ui/helper.c b/ui/helper.c index 212a47b..5fe950d 100644 --- a/ui/helper.c +++ b/ui/helper.c @@ -204,6 +204,7 @@ void UI_DisplayFrequency(const char *pDigits, uint8_t X, uint8_t Y, bool bDispla uint8_t *pFb0 = g_frame_buffer[Y] + X; uint8_t *pFb1 = pFb0 + 128; bool bCanDisplay = false; + unsigned int len = 6; unsigned int i = 0; // MHz @@ -231,8 +232,20 @@ void UI_DisplayFrequency(const char *pDigits, uint8_t X, uint8_t Y, bool bDispla *pFb1 = 0x60; pFb0++; pFb1++; *pFb1 = 0x60; pFb0++; pFb1++; +#ifdef ENABLE_TRIM_TRAILING_ZEROS + if (pDigits[len + 1] == 0 && pDigits[len + 2] == 0) + { + if (pDigits[len - 1] == 0) + { + len--; + if (pDigits[len - 1] == 0) + len--; + } + } +#endif + // kHz - while (i < 6) + while (i < len) { const unsigned int Digit = pDigits[i++]; memcpy(pFb0, g_font_big_digits[Digit], char_width); diff --git a/ui/main.c b/ui/main.c index 7a95b20..885745a 100644 --- a/ui/main.c +++ b/ui/main.c @@ -663,11 +663,28 @@ void UI_DisplayMain(void) case MDF_FREQUENCY: // just channel frequency #ifdef ENABLE_BIG_FREQ + NUMBER_ToDigits(frequency, str); + // show the main large frequency digits UI_DisplayFrequency(str, x, line, false, false); + // show the remaining 2 small frequency digits - UI_Displaysmall_digits(2, str + 6, x + 81, line + 1, true); + #ifdef ENABLE_TRIM_TRAILING_ZEROS + { + unsigned int small_num = 2; + if (str[7] == 0) + { + small_num--; + if (str[6] == 0) + small_num--; + } + UI_Displaysmall_digits(small_num, str + 6, x + 81, line + 1, true); + } + #else + UI_Displaysmall_digits(2, str + 6, x + 81, line + 1, true); + #endif + #else // show the frequency in the main font sprintf(str, "%03u.%05u", frequency / 100000, frequency % 100000); @@ -726,14 +743,27 @@ void UI_DisplayMain(void) // if (IS_FREQ_CHANNEL(g_eeprom.screen_channel[vfo_num])) { // frequency mode #ifdef ENABLE_BIG_FREQ - + NUMBER_ToDigits(frequency, str); // 8 digits // show the main large frequency digits UI_DisplayFrequency(str, x, line, false, false); // show the remaining 2 small frequency digits - UI_Displaysmall_digits(2, str + 6, x + 81, line + 1, true); + #ifdef ENABLE_TRIM_TRAILING_ZEROS + { + unsigned int small_num = 2; + if (str[7] == 0) + { + small_num--; + if (str[6] == 0) + small_num--; + } + UI_Displaysmall_digits(small_num, str + 6, x + 81, line + 1, true); + } + #else + UI_Displaysmall_digits(2, str + 6, x + 81, line + 1, true); + #endif #else // show the frequency in the main font