From e5c7c81276767f6fef3362569170266962e14e79 Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Sat, 16 Sep 2023 14:53:55 +0100 Subject: [PATCH] Small font complete --- README.md | 6 +- firmware | Bin 164920 -> 164924 bytes firmware.bin | Bin 48424 -> 48652 bytes firmware.packed.bin | Bin 48442 -> 48670 bytes font.c | 406 +++++++++++--------------------------------- font.h | 4 +- ui/helper.c | 50 +----- ui/main.c | 9 +- 8 files changed, 111 insertions(+), 364 deletions(-) diff --git a/README.md b/README.md index 89af051..7da9519 100644 --- a/README.md +++ b/README.md @@ -9,12 +9,12 @@ A cool achievement # User customization You can customize the firmware by enabling/disabling various compile options. -You'll find the options at the top of "makefile" ('0' = disable, '1' = enable) .. +You'll find the options at the top of "Makefile" ('0' = disable, '1' = enable) .. ``` ENABLE_SWD := 0 only needed if using CPU's SWD port (debugging/programming) ENABLE_OVERLAY := 1 cpu FLASH stuff -ENABLE_UART := 1 without this you can't configure the radio via PC +ENABLE_UART := 1 without this you can't configure radio via PC ENABLE_AIRCOPY := 0 easier to just enter frequency ENABLE_FMRADIO := 0 WBFM VHF band 2 RX ENABLE_NOAA := 0 Everything NOAA @@ -27,7 +27,7 @@ ENABLE_WIDE_RX := 1 full 18MHz to 1300MHz RX (though fronte 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_BOOT_BEEPS := 1 give user audio feedback on the volume knob position at boot-up +ENABLE_BOOT_BEEPS := 1 give user audio feedback on volume knob position at boot-up ENABLE_COMPANDER := 1 compander option - setting not yet saved #ENABLE_SINGLE_VFO_CHAN := 1 not yet implemented - single VFO on display when possible #ENABLE_BAND_SCOPE := 1 not yet implemented - spectrum/pan-adapter diff --git a/firmware b/firmware index e1fc53e86e3127b471b2327df84174c441624677..380988ed8b23092cc1f5233bf4b5cd3a9cb5c2f7 100644 GIT binary patch delta 12997 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 GZvPL}MD2J0 diff --git a/firmware.bin b/firmware.bin index ec905c6e423f395cfe1dbfbe1acc088161ef1c01..44a068c1b69f00612a134aee6a30d269fa43cce7 100644 GIT binary patch delta 5637 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 DH=>`9 delta 5413 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 ZwE5RMRQhz+V85&?lQp`@{&K_Jbj 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 z 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 I@u#T&2Z5okCjbBd delta 14408 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 - {0x02, 0x01, 0x51, 0x09, 0x06}, // ? - {0x32, 0x49, 0x79, 0x41, 0x3E}, // @ - {0x7E, 0x11, 0x11, 0x11, 0x7E}, // A - {0x7F, 0x49, 0x49, 0x49, 0x36}, // B - {0x3E, 0x41, 0x41, 0x41, 0x22}, // C - {0x7F, 0x41, 0x41, 0x22, 0x1C}, // D - {0x7F, 0x49, 0x49, 0x49, 0x41}, // E - {0x7F, 0x09, 0x09, 0x01, 0x01}, // F - {0x3E, 0x41, 0x41, 0x51, 0x32}, // G - {0x7F, 0x08, 0x08, 0x08, 0x7F}, // H - {0x00, 0x41, 0x7F, 0x41, 0x00}, // I - {0x20, 0x40, 0x41, 0x3F, 0x01}, // J - {0x7F, 0x08, 0x14, 0x22, 0x41}, // K - {0x7F, 0x40, 0x40, 0x40, 0x40}, // L - {0x7F, 0x02, 0x04, 0x02, 0x7F}, // M - {0x7F, 0x04, 0x08, 0x10, 0x7F}, // N - {0x3E, 0x41, 0x41, 0x41, 0x3E}, // O - {0x7F, 0x09, 0x09, 0x09, 0x06}, // P - {0x3E, 0x41, 0x51, 0x21, 0x5E}, // Q - {0x7F, 0x09, 0x19, 0x29, 0x46}, // R - {0x46, 0x49, 0x49, 0x49, 0x31}, // S - {0x01, 0x01, 0x7F, 0x01, 0x01}, // T - {0x3F, 0x40, 0x40, 0x40, 0x3F}, // U - {0x1F, 0x20, 0x40, 0x20, 0x1F}, // V - {0x7F, 0x20, 0x18, 0x20, 0x7F}, // W - {0x63, 0x14, 0x08, 0x14, 0x63}, // X - {0x03, 0x04, 0x78, 0x04, 0x03}, // Y - {0x61, 0x51, 0x49, 0x45, 0x43}, // Z - {0x00, 0x00, 0x7F, 0x41, 0x41}, // [ - {0x02, 0x04, 0x08, 0x10, 0x20}, // "\" - {0x41, 0x41, 0x7F, 0x00, 0x00}, // ] - {0x04, 0x02, 0x01, 0x02, 0x04}, // ^ - {0x40, 0x40, 0x40, 0x40, 0x40}, // _ - {0x00, 0x01, 0x02, 0x04, 0x00}, // ` - {0x20, 0x54, 0x54, 0x54, 0x78}, // a - {0x7F, 0x48, 0x44, 0x44, 0x38}, // b - {0x38, 0x44, 0x44, 0x44, 0x20}, // c - {0x38, 0x44, 0x44, 0x48, 0x7F}, // d - {0x38, 0x54, 0x54, 0x54, 0x18}, // e - {0x08, 0x7E, 0x09, 0x01, 0x02}, // f - {0x08, 0x14, 0x54, 0x54, 0x3C}, // g - {0x7F, 0x08, 0x04, 0x04, 0x78}, // h - {0x00, 0x44, 0x7D, 0x40, 0x00}, // i - {0x20, 0x40, 0x44, 0x3D, 0x00}, // j - {0x00, 0x7F, 0x10, 0x28, 0x44}, // k - {0x00, 0x41, 0x7F, 0x40, 0x00}, // l - {0x7C, 0x04, 0x18, 0x04, 0x78}, // m - {0x7C, 0x08, 0x04, 0x04, 0x78}, // n - {0x38, 0x44, 0x44, 0x44, 0x38}, // o - {0x7C, 0x14, 0x14, 0x14, 0x08}, // p - {0x08, 0x14, 0x14, 0x18, 0x7C}, // q - {0x7C, 0x08, 0x04, 0x04, 0x08}, // r - {0x48, 0x54, 0x54, 0x54, 0x20}, // s - {0x04, 0x3F, 0x44, 0x40, 0x20}, // t - {0x3C, 0x40, 0x40, 0x20, 0x7C}, // u - {0x1C, 0x20, 0x40, 0x20, 0x1C}, // v - {0x3C, 0x40, 0x30, 0x40, 0x3C}, // w - {0x44, 0x28, 0x10, 0x28, 0x44}, // x - {0x0C, 0x50, 0x50, 0x50, 0x3C}, // y - {0x44, 0x64, 0x54, 0x4C, 0x44}, // z - {0x00, 0x08, 0x36, 0x41, 0x00}, // { - {0x00, 0x00, 0x7F, 0x00, 0x00}, // | - {0x00, 0x41, 0x36, 0x08, 0x00}, // } - {0x08, 0x08, 0x2A, 0x1C, 0x08}, // -> - {0x08, 0x1C, 0x2A, 0x08, 0x08} // <- -}; \ No newline at end of file diff --git a/font.h b/font.h index b6373d1..fc4c8a8 100644 --- a/font.h +++ b/font.h @@ -23,9 +23,7 @@ extern const uint8_t gFontBig[95][15]; extern const uint8_t gFontBigDigits[11][26]; extern const uint8_t gFontSmallDigits[11][7]; - -extern const uint8_t gFont5x8[95][5]; -extern const uint8_t gFont5x7[96][5]; +extern const uint8_t gFontSmall[95][7]; #endif diff --git a/ui/helper.c b/ui/helper.c index 7500f12..8510eef 100644 --- a/ui/helper.c +++ b/ui/helper.c @@ -90,52 +90,18 @@ void UI_PrintStringSmall(const char *pString, uint8_t Start, uint8_t End, uint8_ if (End > Start) Start += (((End - Start) - (Length * 8)) + 1) / 2; - #if 1 - { // 5x7 font - const unsigned int char_width = ARRAY_SIZE(gFont5x7[0]); - const unsigned int char_spacing = char_width + 1; - uint8_t *pFb = gFrameBuffer[Line] + Start; - for (i = 0; i < Length; i++) - { - if (pString[i] >= 32) - { - const unsigned int Index = ((unsigned int)pString[i] - 32); - if (Index < ARRAY_SIZE(gFont5x7)) - memcpy(pFb + (i * char_spacing), &gFont5x7[Index], char_width); - } - } - } - #elif 1 - { // 5x8 font - this one - const unsigned int char_width = ARRAY_SIZE(gFont5x8[0]); - const unsigned int char_spacing = char_width + 1; - uint8_t *pFb = gFrameBuffer[Line] + Start; - for (i = 0; i < Length; i++) - { - if (pString[i] >= 32) - { - const unsigned int Index = (unsigned int)pString[i] - 32; - if (Index < ARRAY_SIZE(gFont5x8)) - memcpy(pFb + (i * char_spacing), &gFont5x8[Index], char_width); - } - } - } - #else + const unsigned int char_width = ARRAY_SIZE(gFontSmall[0]); + const unsigned int char_spacing = char_width + 0; + uint8_t *pFb = gFrameBuffer[Line] + Start; + for (i = 0; i < Length; i++) { - const unsigned int char_width = ARRAY_SIZE(gFont6x8[0]); - const unsigned int char_spacing = char_width + 1; - uint8_t *pFb = gFrameBuffer[Line] + Start; - for (i = 0; i < Length; i++) + if (pString[i] >= 32) { - if (pString[i] >= 32) - { - const unsigned int Index = (unsigned int)pString[i] - 32; - if (Index < ARRAY_SIZE(gFont6x8)) - memcpy(pFb + (i * char_spacing), &gFont6x8[Index], char_width); - } + const unsigned int Index = (unsigned int)pString[i] - 32; + if (Index < ARRAY_SIZE(gFontSmall)) + memcpy(pFb + (i * char_spacing), &gFontSmall[Index], char_width); } } - #endif } void UI_DisplayFrequency(const char *pDigits, uint8_t X, uint8_t Y, bool bDisplayLeadingZero, bool bFlag) diff --git a/ui/main.c b/ui/main.c index bd03d52..245a8b1 100644 --- a/ui/main.c +++ b/ui/main.c @@ -331,13 +331,8 @@ void UI_DisplayMain(void) } // show the channel frequency below the channel number/name - #if 1 - NUMBER_ToDigits(frequency_Hz, String); // 8 digits - UI_DisplayFrequencySmall(String, 31 + 8, Line + 1, false); - #else - sprintf(String, "%03u.%05u", frequency_Hz / 100000, frequency_Hz % 100000); - UI_PrintStringSmall(String, 31 + 8, 0, Line + 1); - #endif + sprintf(String, "%03u.%05u", frequency_Hz / 100000, frequency_Hz % 100000); + UI_PrintStringSmall(String, 31 + 8, 0, Line + 1); break; #endif