From 0176cb4214aa47769ca6966e0d241d027d5f4bf4 Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Sun, 10 Sep 2023 10:28:30 +0100 Subject: [PATCH] Fixed channel display new bug --- Makefile | 1 + README.md | 1 + firmware | Bin 172692 -> 172692 bytes firmware.bin | Bin 56944 -> 57016 bytes firmware.packed.bin | Bin 56962 -> 57034 bytes font.c | 196 ++++++++++++++++++++++---------------------- font.h | 2 +- radio.c | 2 +- ui/helper.c | 12 +-- ui/main.c | 21 +++-- 10 files changed, 122 insertions(+), 113 deletions(-) diff --git a/Makefile b/Makefile index f97ba7b..08a3e36 100644 --- a/Makefile +++ b/Makefile @@ -99,6 +99,7 @@ CFLAGS += -DDISABLE_AIRCOPY CFLAGS += -DKEEP_MEM_NAME CFLAGS += -DDISABLE_ALARM CFLAGS += -DCHAN_NAME_FREQ +CFLAGS += -DSINGLE_VFO_CHAN #CFLAGS += -DBAND_SCOPE ifeq ($(DEBUG),1) diff --git a/README.md b/README.md index 1e388e9..b6ce7b0 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ You can edit those changes by (currently) editing the MakeFile, look for these l * CFLAGS += -DKEEP_MEM_NAME .. maintain the memory channel's name when re-saving the memory channel * CFLAGS += -DDISABLE_ALARM .. remove the ALARM transmit option from the firmware * CFLAGS += -DCHAN_NAME_FREQ .. show the channel frequency (as well as channel number/name) +* CFLAGS += -DSINGLE_VFO_CHAN .. only show a single VFO/CHANNEL if dual watch is disabled * #CFLAGS += -DBAND_SCOPE .. not yet implemented To enable the custom option just uncomment the line by removing the starting '#'. diff --git a/firmware b/firmware index 946d78e4bba9b041224ee6983bdfcee0dc281958..b7e296f92e14bc9ae64d68060c75613cf559945f 100644 GIT binary patch delta 8048 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 delta 8159 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 diff --git a/firmware.bin b/firmware.bin index ada096a28aa7b4140f92b220dc316e41672fb3b3..c07ad4138e438db4da00691fe6889fb803f77b1e 100644 GIT binary patch delta 4955 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 diff --git a/firmware.packed.bin b/firmware.packed.bin index 6d4914c81e103f143ae352c1945ed2989952ba4d..9b269faaf69ac0617eabac0041bc0ba60b3a9c2c 100644 GIT binary patch delta 13650 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 Y%;o>LpRdg>8%_G=Z90OHOyR}<0B7O-VgLXD delta 13577 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 diff --git a/font.c b/font.c index 37b4791..e529cee 100644 --- a/font.c +++ b/font.c @@ -355,109 +355,109 @@ const uint8_t gFont6x8[96][6] = }; /* // ASCII 5x7 font -const uint8_t gFont5x7[5 * 16 * 6] = +const uint8_t gFont5x7[96][5] = { - 0x00, 0x00, 0x00, 0x00, 0x00, // ' ' - 0x00, 0x00, 0x5F, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x07, 0x00, - 0x14, 0x7F, 0x14, 0x7F, 0x14, - 0x24, 0x2A, 0x7F, 0x2A, 0x12, - 0x23, 0x13, 0x08, 0x64, 0x62, - 0x36, 0x49, 0x56, 0x20, 0x50, - 0x00, 0x08, 0x07, 0x03, 0x00, - 0x00, 0x1C, 0x22, 0x41, 0x00, - 0x00, 0x41, 0x22, 0x1C, 0x00, - 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, - 0x08, 0x08, 0x3E, 0x08, 0x08, - 0x00, 0x80, 0x70, 0x30, 0x00, - 0x08, 0x08, 0x08, 0x08, 0x08, - 0x00, 0x00, 0x60, 0x60, 0x00, - 0x20, 0x10, 0x08, 0x04, 0x02, + {0x00, 0x00, 0x00, 0x00, 0x00}, // ' ' + {0x00, 0x00, 0x5F, 0x00, 0x00}, + {0x00, 0x07, 0x00, 0x07, 0x00}, + {0x14, 0x7F, 0x14, 0x7F, 0x14}, + {0x24, 0x2A, 0x7F, 0x2A, 0x12}, + {0x23, 0x13, 0x08, 0x64, 0x62}, + {0x36, 0x49, 0x56, 0x20, 0x50}, + {0x00, 0x08, 0x07, 0x03, 0x00}, + {0x00, 0x1C, 0x22, 0x41, 0x00}, + {0x00, 0x41, 0x22, 0x1C, 0x00}, + {0x2A, 0x1C, 0x7F, 0x1C, 0x2A}, + {0x08, 0x08, 0x3E, 0x08, 0x08}, + {0x00, 0x80, 0x70, 0x30, 0x00}, + {0x08, 0x08, 0x08, 0x08, 0x08}, + {0x00, 0x00, 0x60, 0x60, 0x00}, + {0x20, 0x10, 0x08, 0x04, 0x02}, -// 0x3E, 0x51, 0x49, 0x45, 0x3E, // '0' - 0x3E, 0x41, 0x41, 0x41, 0x3E, // '0' - 0x00, 0x42, 0x7F, 0x40, 0x00, - 0x72, 0x49, 0x49, 0x49, 0x46, - 0x21, 0x41, 0x49, 0x4D, 0x33, - 0x18, 0x14, 0x12, 0x7F, 0x10, - 0x27, 0x45, 0x45, 0x45, 0x39, - 0x3C, 0x4A, 0x49, 0x49, 0x31, - 0x41, 0x21, 0x11, 0x09, 0x07, - 0x36, 0x49, 0x49, 0x49, 0x36, - 0x46, 0x49, 0x49, 0x29, 0x1E, - 0x00, 0x00, 0x14, 0x00, 0x00, - 0x00, 0x40, 0x34, 0x00, 0x00, - 0x00, 0x08, 0x14, 0x22, 0x41, - 0x14, 0x14, 0x14, 0x14, 0x14, - 0x00, 0x41, 0x22, 0x14, 0x08, - 0x02, 0x01, 0x59, 0x09, 0x06, +// {0x3E, 0x51, 0x49, 0x45, 0x3E}, // '0' + {0x3E, 0x41, 0x41, 0x41, 0x3E}, // '0' + {0x00, 0x42, 0x7F, 0x40, 0x00}, + {0x72, 0x49, 0x49, 0x49, 0x46}, + {0x21, 0x41, 0x49, 0x4D, 0x33}, + {0x18, 0x14, 0x12, 0x7F, 0x10}, + {0x27, 0x45, 0x45, 0x45, 0x39}, + {0x3C, 0x4A, 0x49, 0x49, 0x31}, + {0x41, 0x21, 0x11, 0x09, 0x07}, + {0x36, 0x49, 0x49, 0x49, 0x36}, + {0x46, 0x49, 0x49, 0x29, 0x1E}, + {0x00, 0x00, 0x14, 0x00, 0x00}, + {0x00, 0x40, 0x34, 0x00, 0x00}, + {0x00, 0x08, 0x14, 0x22, 0x41}, + {0x14, 0x14, 0x14, 0x14, 0x14}, + {0x00, 0x41, 0x22, 0x14, 0x08}, + {0x02, 0x01, 0x59, 0x09, 0x06}, - 0x3E, 0x41, 0x5D, 0x59, 0x4E, // '@' - 0x7C, 0x12, 0x11, 0x12, 0x7C, // 'A' - 0x7F, 0x49, 0x49, 0x49, 0x36, - 0x3E, 0x41, 0x41, 0x41, 0x22, - 0x7F, 0x41, 0x41, 0x41, 0x3E, - 0x7F, 0x49, 0x49, 0x49, 0x41, - 0x7F, 0x09, 0x09, 0x09, 0x01, - 0x3E, 0x41, 0x41, 0x51, 0x73, - 0x7F, 0x08, 0x08, 0x08, 0x7F, - 0x00, 0x41, 0x7F, 0x41, 0x00, - 0x20, 0x40, 0x41, 0x3F, 0x01, - 0x7F, 0x08, 0x14, 0x22, 0x41, - 0x7F, 0x40, 0x40, 0x40, 0x40, - 0x7F, 0x02, 0x1C, 0x02, 0x7F, - 0x7F, 0x04, 0x08, 0x10, 0x7F, - 0x3E, 0x41, 0x41, 0x41, 0x3E, + {0x3E, 0x41, 0x5D, 0x59, 0x4E}, // '@' + {0x7C, 0x12, 0x11, 0x12, 0x7C}, // 'A' + {0x7F, 0x49, 0x49, 0x49, 0x36}, + {0x3E, 0x41, 0x41, 0x41, 0x22}, + {0x7F, 0x41, 0x41, 0x41, 0x3E}, + {0x7F, 0x49, 0x49, 0x49, 0x41}, + {0x7F, 0x09, 0x09, 0x09, 0x01}, + {0x3E, 0x41, 0x41, 0x51, 0x73}, + {0x7F, 0x08, 0x08, 0x08, 0x7F}, + {0x00, 0x41, 0x7F, 0x41, 0x00}, + {0x20, 0x40, 0x41, 0x3F, 0x01}, + {0x7F, 0x08, 0x14, 0x22, 0x41}, + {0x7F, 0x40, 0x40, 0x40, 0x40}, + {0x7F, 0x02, 0x1C, 0x02, 0x7F}, + {0x7F, 0x04, 0x08, 0x10, 0x7F}, + {0x3E, 0x41, 0x41, 0x41, 0x3E}, - 0x7F, 0x09, 0x09, 0x09, 0x06, - 0x3E, 0x41, 0x51, 0x21, 0x5E, - 0x7F, 0x09, 0x19, 0x29, 0x46, - 0x26, 0x49, 0x49, 0x49, 0x32, - 0x03, 0x01, 0x7F, 0x01, 0x03, - 0x3F, 0x40, 0x40, 0x40, 0x3F, - 0x1F, 0x20, 0x40, 0x20, 0x1F, - 0x3F, 0x40, 0x38, 0x40, 0x3F, - 0x63, 0x14, 0x08, 0x14, 0x63, - 0x03, 0x04, 0x78, 0x04, 0x03, - 0x61, 0x59, 0x49, 0x4D, 0x43, - 0x00, 0x7F, 0x41, 0x41, 0x41, - 0x02, 0x04, 0x08, 0x10, 0x20, - 0x00, 0x41, 0x41, 0x41, 0x7F, - 0x04, 0x02, 0x01, 0x02, 0x04, - 0x40, 0x40, 0x40, 0x40, 0x40, + {0x7F, 0x09, 0x09, 0x09, 0x06}, + {0x3E, 0x41, 0x51, 0x21, 0x5E}, + {0x7F, 0x09, 0x19, 0x29, 0x46}, + {0x26, 0x49, 0x49, 0x49, 0x32}, + {0x03, 0x01, 0x7F, 0x01, 0x03}, + {0x3F, 0x40, 0x40, 0x40, 0x3F}, + {0x1F, 0x20, 0x40, 0x20, 0x1F}, + {0x3F, 0x40, 0x38, 0x40, 0x3F}, + {0x63, 0x14, 0x08, 0x14, 0x63}, + {0x03, 0x04, 0x78, 0x04, 0x03}, + {0x61, 0x59, 0x49, 0x4D, 0x43}, + {0x00, 0x7F, 0x41, 0x41, 0x41}, + {0x02, 0x04, 0x08, 0x10, 0x20}, + {0x00, 0x41, 0x41, 0x41, 0x7F}, + {0x04, 0x02, 0x01, 0x02, 0x04}, + {0x40, 0x40, 0x40, 0x40, 0x40}, - 0x00, 0x03, 0x07, 0x08, 0x00, - 0x20, 0x54, 0x54, 0x78, 0x40, - 0x7F, 0x28, 0x44, 0x44, 0x38, - 0x38, 0x44, 0x44, 0x44, 0x28, - 0x38, 0x44, 0x44, 0x28, 0x7F, - 0x38, 0x54, 0x54, 0x54, 0x18, - 0x00, 0x08, 0x7E, 0x09, 0x02, - 0x18, 0xA4, 0xA4, 0x9C, 0x78, - 0x7F, 0x08, 0x04, 0x04, 0x78, - 0x00, 0x44, 0x7D, 0x40, 0x00, - 0x20, 0x40, 0x40, 0x3D, 0x00, - 0x7F, 0x10, 0x28, 0x44, 0x00, - 0x00, 0x41, 0x7F, 0x40, 0x00, - 0x7C, 0x04, 0x78, 0x04, 0x78, - 0x7C, 0x08, 0x04, 0x04, 0x78, - 0x38, 0x44, 0x44, 0x44, 0x38, + {0x00, 0x03, 0x07, 0x08, 0x00}, + {0x20, 0x54, 0x54, 0x78, 0x40}, + {0x7F, 0x28, 0x44, 0x44, 0x38}, + {0x38, 0x44, 0x44, 0x44, 0x28}, + {0x38, 0x44, 0x44, 0x28, 0x7F}, + {0x38, 0x54, 0x54, 0x54, 0x18}, + {0x00, 0x08, 0x7E, 0x09, 0x02}, + {0x18, 0xA4, 0xA4, 0x9C, 0x78}, + {0x7F, 0x08, 0x04, 0x04, 0x78}, + {0x00, 0x44, 0x7D, 0x40, 0x00}, + {0x20, 0x40, 0x40, 0x3D, 0x00}, + {0x7F, 0x10, 0x28, 0x44, 0x00}, + {0x00, 0x41, 0x7F, 0x40, 0x00}, + {0x7C, 0x04, 0x78, 0x04, 0x78}, + {0x7C, 0x08, 0x04, 0x04, 0x78}, + {0x38, 0x44, 0x44, 0x44, 0x38}, - 0xFC, 0x18, 0x24, 0x24, 0x18, - 0x18, 0x24, 0x24, 0x18, 0xFC, - 0x7C, 0x08, 0x04, 0x04, 0x08, - 0x48, 0x54, 0x54, 0x54, 0x24, - 0x04, 0x04, 0x3F, 0x44, 0x24, - 0x3C, 0x40, 0x40, 0x20, 0x7C, - 0x1C, 0x20, 0x40, 0x20, 0x1C, - 0x3C, 0x40, 0x30, 0x40, 0x3C, - 0x44, 0x28, 0x10, 0x28, 0x44, - 0x4C, 0x90, 0x90, 0x90, 0x7C, - 0x44, 0x64, 0x54, 0x4C, 0x44, - 0x00, 0x08, 0x36, 0x41, 0x00, - 0x00, 0x00, 0x77, 0x00, 0x00, - 0x00, 0x41, 0x36, 0x08, 0x00, - 0x02, 0x01, 0x02, 0x04, 0x02, - 0x3C, 0x26, 0x23, 0x26, 0x3C + {0xFC, 0x18, 0x24, 0x24, 0x18}, + {0x18, 0x24, 0x24, 0x18, 0xFC}, + {0x7C, 0x08, 0x04, 0x04, 0x08}, + {0x48, 0x54, 0x54, 0x54, 0x24}, + {0x04, 0x04, 0x3F, 0x44, 0x24}, + {0x3C, 0x40, 0x40, 0x20, 0x7C}, + {0x1C, 0x20, 0x40, 0x20, 0x1C}, + {0x3C, 0x40, 0x30, 0x40, 0x3C}, + {0x44, 0x28, 0x10, 0x28, 0x44}, + {0x4C, 0x90, 0x90, 0x90, 0x7C}, + {0x44, 0x64, 0x54, 0x4C, 0x44}, + {0x00, 0x08, 0x36, 0x41, 0x00}, + {0x00, 0x00, 0x77, 0x00, 0x00}, + {0x00, 0x41, 0x36, 0x08, 0x00}, + {0x02, 0x01, 0x02, 0x04, 0x02}, + {0x3C, 0x26, 0x23, 0x26, 0x3C} }; */ \ No newline at end of file diff --git a/font.h b/font.h index d594427..c525ff6 100644 --- a/font.h +++ b/font.h @@ -25,7 +25,7 @@ extern const uint8_t gFontSmallDigits[11][7]; //extern const uint64_t gFont8x8[16 * 6]; extern const uint8_t gFont6x8[96][6]; -//extern const uint8_t gFont5x7[5 * 16 * 6]; +//extern const uint8_t gFont5x7[96][5]; #endif diff --git a/radio.c b/radio.c index 8ff49ab..b3af4b4 100644 --- a/radio.c +++ b/radio.c @@ -497,7 +497,7 @@ void RADIO_SelectVfos(void) gTxVfo = &gEeprom.VfoInfo[gEeprom.TX_CHANNEL]; if (gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF) - gEeprom.RX_CHANNEL = gEeprom.TX_CHANNEL; + gEeprom.RX_CHANNEL = gEeprom.TX_CHANNEL; else gEeprom.RX_CHANNEL = (gEeprom.TX_CHANNEL == 0) ? 1 : 0; diff --git a/ui/helper.c b/ui/helper.c index 6d9c9e5..8adfee0 100644 --- a/ui/helper.c +++ b/ui/helper.c @@ -96,11 +96,11 @@ void UI_PrintStringSmall(const char *pString, uint8_t Start, uint8_t End, uint8_ { if (pString[i] >= 32) { - const unsigned int Index = ((unsigned int)pString[i] - 32) * 5; - if (Index < sizeof(gFont5x7)) + const unsigned int Index = ((unsigned int)pString[i] - 32); + if (Index < ARRAY_SIZE(gFont5x7)) { - const unsigned int ofs = (unsigned int)Start + (i * 8); - memcpy(gFrameBuffer[Line] + ofs, &gFont5x7[Index], 5); + const unsigned int ofs = (unsigned int)Start + (i * 6); + memcpy(gFrameBuffer[Line] + ofs, &gFont5x7[Index], ARRAY_SIZE(gFont5x7[Index])); } } } @@ -114,8 +114,8 @@ void UI_PrintStringSmall(const char *pString, uint8_t Start, uint8_t End, uint8_ const unsigned int Index = (unsigned int)pString[i] - 32; if (Index < ARRAY_SIZE(gFont6x8)) { - const unsigned int ofs = (unsigned int)Start + (i * 8); - memcpy(gFrameBuffer[Line] + ofs, &gFont6x8[Index], 6); + const unsigned int ofs = (unsigned int)Start + (i * 7); + memcpy(gFrameBuffer[Line] + ofs, &gFont6x8[Index], ARRAY_SIZE(gFont6x8[Index])); } } } diff --git a/ui/main.c b/ui/main.c index 539c1bf..17ee218 100644 --- a/ui/main.c +++ b/ui/main.c @@ -43,7 +43,11 @@ void UI_DisplayMain(void) return; } +//#ifndef SINGLE_VFO_CHAN for (vfo_num = 0; vfo_num < 2; vfo_num++) +//#else +// vfo_num = 0; +//#endif { uint8_t Channel = gEeprom.TX_CHANNEL; bool bIsSameVfo = !!(Channel == vfo_num); @@ -274,7 +278,11 @@ void UI_DisplayMain(void) { case MDF_FREQUENCY: NUMBER_ToDigits(frequency_Hz, String); + + // show the first lot of the frequency digits UI_DisplayFrequency(String, 31, vfo_num * 4, false, false); + // show the remaining 2 frequency digits + UI_DisplaySmallDigits(2, String + 6, 112, Line + 1); if (IS_MR_CHANNEL(gEeprom.ScreenChannel[vfo_num])) { @@ -285,12 +293,11 @@ void UI_DisplayMain(void) memcpy(pLine0 + 120, BITMAP_ScanList, sizeof(BITMAP_ScanList)); } - UI_DisplaySmallDigits(2, String + 6, 112, Line + 1); - frequency_Hz = 0; break; case MDF_CHANNEL: + sprintf(String, "CH-%03d", gEeprom.ScreenChannel[vfo_num] + 1); UI_PrintString(String, 31, 112, vfo_num * 4, 8, true); frequency_Hz = 0; break; @@ -313,13 +320,13 @@ void UI_DisplayMain(void) if (gEeprom.VfoInfo[vfo_num].Name[0] == 0 || gEeprom.VfoInfo[vfo_num].Name[0] == 0xFF) { // channel number sprintf(String, "CH-%03d", gEeprom.ScreenChannel[vfo_num] + 1); - UI_PrintStringSmall(gEeprom.VfoInfo[vfo_num].Name, 31 + 8, 0, (vfo_num * 4) + 1, false); + UI_PrintStringSmall(gEeprom.VfoInfo[vfo_num].Name, 31 + 16, 0, (vfo_num * 4) + 0, false); } else { // channel name memset(String, 0, sizeof(String)); memcpy(String, gEeprom.VfoInfo[vfo_num].Name, 8); - UI_PrintStringSmall(gEeprom.VfoInfo[vfo_num].Name, 31 + 8, 0, (vfo_num * 4) + 1, false); + UI_PrintStringSmall(gEeprom.VfoInfo[vfo_num].Name, 31 + 16, 0, (vfo_num * 4) + 0, false); } break; #endif @@ -460,13 +467,13 @@ void UI_DisplayMain(void) #ifdef CHAN_NAME_FREQ if (frequency_Hz > 0) - { // show the channel frequency above the channel number/name + { // show the channel frequency below the channel number/name #if 0 NUMBER_ToDigits(frequency_Hz, String); // 8 digits - UI_DisplayFrequencySmall(String, 31 + 8, (vfo_num * 4) + 0, false); + UI_DisplayFrequencySmall(String, 31 + 8, (vfo_num * 4) + 1, false); #else sprintf(String, "%9.5f", frequency_Hz * 0.00001); - UI_PrintStringSmall(String, 31 + 8, 0, (vfo_num * 4) + 0, false); + UI_PrintStringSmall(String, 31 + 16, 0, (vfo_num * 4) + 1, false); #endif } #endif