From 2d8c4787bf8caad0af046ea94f5e7aa8020804ad Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Sun, 10 Sep 2023 05:49:39 +0100 Subject: [PATCH] Channel frequency can be shown with name --- Makefile | 1 + README.md | 2 + driver/st7565.c | 5 +- firmware | Bin 167616 -> 167812 bytes firmware.bin | Bin 55504 -> 56332 bytes firmware.packed.bin | Bin 55522 -> 56350 bytes font.c | 105 +++++++++++++++++++ font.h | 2 + font5x7.png | Bin 0 -> 27909 bytes misc.c | 10 +- ui/helper.c | 112 +++++++++++++++----- ui/helper.h | 2 + ui/main.c | 243 +++++++++++++++++++++++--------------------- ui/rssi.c | 49 +++++---- version.c | 2 +- win_make.bat | 2 +- 16 files changed, 369 insertions(+), 166 deletions(-) create mode 100644 font5x7.png diff --git a/Makefile b/Makefile index 1ff162f..44887a6 100644 --- a/Makefile +++ b/Makefile @@ -96,6 +96,7 @@ CFLAGS += -DDISABLE_VOICE CFLAGS += -DDISABLE_AIRCOPY CFLAGS += -DKEEP_MEM_NAME CFLAGS += -DDISABLE_ALARM +CFLAGS += -DCHAN_NAME_FREQ #CFLAGS += -DBAND_SCOPE ifeq ($(DEBUG),1) diff --git a/README.md b/README.md index 8b012f9..1e388e9 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ You can edit those changes by (currently) editing the MakeFile, look for these l * CFLAGS += -DDISABLE_AIRCOPY .. remove AIRCOPY option * 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 += -DBAND_SCOPE .. not yet implemented To enable the custom option just uncomment the line by removing the starting '#'. @@ -25,6 +26,7 @@ To enable the custom option just uncomment the line by removing the starting '#' * Battery voltage boot screen now includes the percentage (as well as voltage). * Slightly less intense menu style. * AM RX allowed everywhere. Although the radio really doesn't do AM, the adverts are a con ! +* Finer RSSI bar steps * "MEM-CH" and "DEL-CH" menus now include channel name * "STEP" menu, added 1.25kHz option, removed 5kHz option diff --git a/driver/st7565.c b/driver/st7565.c index ee37138..da9685f 100644 --- a/driver/st7565.c +++ b/driver/st7565.c @@ -30,7 +30,9 @@ void ST7565_DrawLine(uint8_t Column, uint8_t Line, uint16_t Size, const uint8_t uint16_t i; SPI_ToggleMasterMode(&SPI0->CR, false); + ST7565_SelectColumnAndLine(Column + 4U, Line); + GPIO_SetBit(&GPIOB->DATA, GPIOB_PIN_ST7565_A0); if (!bIsClearMode) @@ -87,7 +89,8 @@ void ST7565_BlitFullScreen(void) } void ST7565_BlitStatusLine(void) -{ +{ // the top small text line on the display + unsigned int i; SPI_ToggleMasterMode(&SPI0->CR, false); diff --git a/firmware b/firmware index f951f327704769aa4dc8278ea31b0827d0373c2b..1b34bcb1021287305218908d244cad5beb7375b4 100644 GIT binary patch delta 18111 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 a#NaT!wU0?zBBPfHJVF2x24RpdKr{gUdiL%B delta 16961 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 diff --git a/firmware.bin b/firmware.bin index 08b7adc32001001bd6ce02b0701df390fbfcb782..02d232ccec5c57169c426e0415ea3a376fe7ce59 100644 GIT binary patch delta 9000 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 delta 8089 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 delta 24580 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 Y+Ojw4@twz-3=9kmp00i_>zopr05(_BQ~&?~ literal 0 HcmV?d00001 diff --git a/misc.c b/misc.c index 8814862..24cb914 100644 --- a/misc.c +++ b/misc.c @@ -170,9 +170,9 @@ uint8_t gIsLocked = 0xFF; void NUMBER_Get(char *pDigits, uint32_t *pInteger) { - uint8_t i; - uint32_t Multiplier = 10000000; - uint32_t Value = 0; + unsigned int i; + uint32_t Multiplier = 10000000; + uint32_t Value = 0; for (i = 0; i < 8; i++) { if (pDigits[i] > 9) @@ -185,14 +185,14 @@ void NUMBER_Get(char *pDigits, uint32_t *pInteger) void NUMBER_ToDigits(uint32_t Value, char *pDigits) { - uint8_t i; - + unsigned int i; for (i = 0; i < 8; i++) { const uint32_t Result = Value / 10U; pDigits[7 - i] = Value - (Result * 10U); Value = Result; } + pDigits[8] = 0; } uint8_t NUMBER_AddWithWraparound(uint8_t Base, int8_t Add, uint8_t LowerLimit, uint8_t UpperLimit) diff --git a/ui/helper.c b/ui/helper.c index b2633f4..e3c268e 100644 --- a/ui/helper.c +++ b/ui/helper.c @@ -15,6 +15,7 @@ */ #include + #include "driver/st7565.h" #include "external/printf/printf.h" #include "font.h" @@ -77,47 +78,112 @@ void UI_PrintString(const char *pString, uint8_t Start, uint8_t End, uint8_t Lin } } +void UI_PrintStringSmall(const char *pString, uint8_t Start, uint8_t End, uint8_t Line, bool bCentered) +{ + const size_t Length = strlen(pString); + size_t i; + + if (bCentered) + Start += (((End - Start) - (Length * 8)) + 1) / 2; + + for (i = 0; i < Length; i++) + { + if (pString[i] >= 32) + { + const unsigned int Index = ((unsigned int)pString[i] - 32) * 5; + if (Index < sizeof(gFont5x7)) + { + const unsigned int ofs = (unsigned int)Start + (i * 8); + memcpy(gFrameBuffer[Line] + ofs, &gFont5x7[Index], 5); + } + } + } +} + void UI_DisplayFrequency(const char *pDigits, uint8_t X, uint8_t Y, bool bDisplayLeadingZero, bool bFlag) { - unsigned int i; - uint8_t *pFb0 = gFrameBuffer[Y] + X;; - uint8_t *pFb1 = pFb0 + 128; - bool bCanDisplay = false; - - for (i = 0; i < 3; i++) + const unsigned int char_width = 13; + uint8_t *pFb0 = gFrameBuffer[Y] + X; + uint8_t *pFb1 = pFb0 + 128; + bool bCanDisplay = false; + unsigned int i = 0; + + // MHz + while (i < 3) { - const uint8_t Digit = pDigits[i]; - - if (bDisplayLeadingZero || bCanDisplay || Digit) + const unsigned int Digit = pDigits[i++]; + if (bDisplayLeadingZero || bCanDisplay || Digit > 0) { bCanDisplay = true; - memcpy(pFb0 + (i * 13), gFontBigDigits[Digit] + 0, 13); - memcpy(pFb1 + (i * 13), gFontBigDigits[Digit] + 13, 13); + memcpy(pFb0, gFontBigDigits[Digit], char_width); + memcpy(pFb1, gFontBigDigits[Digit] + char_width, char_width); } else if (bFlag) { - pFb1 -= 6; pFb0 -= 6; + pFb1 -= 6; + } + pFb0 += char_width; + pFb1 += char_width; + } + + // decimal point + *pFb1 = 0x60; pFb0++; pFb1++; + *pFb1 = 0x60; pFb0++; pFb1++; + *pFb1 = 0x60; pFb0++; pFb1++; + + // kHz + while (i < 6) + { + const unsigned int Digit = pDigits[i++]; + memcpy(pFb0, gFontBigDigits[Digit], char_width); + memcpy(pFb1, gFontBigDigits[Digit] + char_width, char_width); + pFb0 += char_width; + pFb1 += char_width; + } +} + +void UI_DisplayFrequencySmall(const char *pDigits, uint8_t X, uint8_t Y, bool bDisplayLeadingZero) +{ + const unsigned int char_width = 7; + uint8_t *pFb = gFrameBuffer[Y] + X; + bool bCanDisplay = false; + unsigned int i = 0; + + // MHz + while (i < 3) + { + const unsigned int Digit = pDigits[i++]; + if (bDisplayLeadingZero || bCanDisplay || Digit > 0) + { + bCanDisplay = true; + memcpy(pFb, gFontSmallDigits[Digit], char_width); + pFb += char_width; } } - pFb1[0x27] = 0x60; - pFb1[0x28] = 0x60; - pFb1[0x29] = 0x60; + // decimal point + pFb++; + pFb++; + *pFb++ = 0x60; + *pFb++ = 0x60; + pFb++; - for (i = 0; i < 3; i++) + // kHz + while (i < 8) { - const uint8_t Digit = pDigits[i + 3]; - memcpy(pFb0 + (i * 13) + 42, gFontBigDigits[Digit] + 0, 13); - memcpy(pFb1 + (i * 13) + 42, gFontBigDigits[Digit] + 13, 13); + const unsigned int Digit = pDigits[i++]; + memcpy(pFb, gFontSmallDigits[Digit], char_width); + pFb += char_width; } } void UI_DisplaySmallDigits(uint8_t Size, const char *pString, uint8_t X, uint8_t Y) { - unsigned int i; - for (i = 0; i < Size; i++) - memcpy(gFrameBuffer[Y] + (i * 7) + X, gFontSmallDigits[(uint8_t)pString[i]], 7); + const unsigned int char_width = 7; + unsigned int x = X; + unsigned int i; + for (i = 0; i < Size; i++, x += char_width) + memcpy(gFrameBuffer[Y] + x, gFontSmallDigits[(unsigned int)pString[i]], char_width); } - diff --git a/ui/helper.h b/ui/helper.h index 984e2b0..13a0b9f 100644 --- a/ui/helper.h +++ b/ui/helper.h @@ -23,7 +23,9 @@ void UI_GenerateChannelString(char *pString, const uint8_t Channel); void UI_GenerateChannelStringEx(char *pString, const bool bShowPrefix, const uint8_t ChannelNumber); void UI_PrintString(const char *pString, uint8_t Start, uint8_t End, uint8_t Line, uint8_t Width, bool bCentered); +void UI_PrintStringSmall(const char *pString, uint8_t Start, uint8_t End, uint8_t Line, bool bCentered); void UI_DisplayFrequency(const char *pDigits, uint8_t X, uint8_t Y, bool bDisplayLeadingZero, bool bFlag); +void UI_DisplayFrequencySmall(const char *pDigits, uint8_t X, uint8_t Y, bool bDisplayLeadingZero); void UI_DisplaySmallDigits(uint8_t Size, const char *pString, uint8_t X, uint8_t Y); #endif diff --git a/ui/main.c b/ui/main.c index c7e9807..10cf10c 100644 --- a/ui/main.c +++ b/ui/main.c @@ -30,8 +30,8 @@ void UI_DisplayMain(void) { - char String[16]; - uint8_t i; + char String[16]; + unsigned int vfo_num; memset(gFrameBuffer, 0, sizeof(gFrameBuffer)); @@ -43,34 +43,19 @@ void UI_DisplayMain(void) return; } - for (i = 0; i < 2; i++) + for (vfo_num = 0; vfo_num < 2; vfo_num++) { - uint8_t *pLine0; - uint8_t *pLine1; - uint8_t Line; - uint8_t Channel; - bool bIsSameVfo; - - if (i == 0) - { - pLine0 = gFrameBuffer[0]; - pLine1 = gFrameBuffer[1]; - Line = 0; - } - else - { - pLine0 = gFrameBuffer[4]; - pLine1 = gFrameBuffer[5]; - Line = 4; - } - - Channel = gEeprom.TX_CHANNEL; - bIsSameVfo = !!(Channel == i); + uint8_t Channel = gEeprom.TX_CHANNEL; + bool bIsSameVfo = !!(Channel == vfo_num); + uint8_t Line = (vfo_num == 0) ? 0 : 4; + uint8_t *pLine0 = gFrameBuffer[Line + 0]; + uint8_t *pLine1 = gFrameBuffer[Line + 1]; + uint32_t frequency_Hz = 0; if (gEeprom.DUAL_WATCH != DUAL_WATCH_OFF && gRxVfoIsActive) Channel = gEeprom.RX_CHANNEL; - if (Channel != i) + if (Channel != vfo_num) { if (gDTMF_CallState != DTMF_CALL_STATE_NONE || gDTMF_IsTx || gDTMF_InputMode) { @@ -105,7 +90,7 @@ void UI_DisplayMain(void) else sprintf(String, ">%s", gDTMF_InputBox); - UI_PrintString(String, 2, 127, i * 3, 8, false); + UI_PrintString(String, 2, 127, vfo_num * 3, 8, false); memset(String, 0, sizeof(String)); memset(Contact, 0, sizeof(Contact)); @@ -132,7 +117,7 @@ void UI_DisplayMain(void) sprintf(String, ">%s", gDTMF_String); } - UI_PrintString(String, 2, 127, 2 + (i * 3), 8, false); + UI_PrintString(String, 2, 127, 2 + (vfo_num * 3), 8, false); continue; } @@ -165,7 +150,7 @@ void UI_DisplayMain(void) else Channel = gEeprom.TX_CHANNEL; - if (Channel == i) + if (Channel == vfo_num) { SomeValue = 1; memcpy(pLine0 + 14, BITMAP_TX, sizeof(BITMAP_TX)); @@ -176,34 +161,34 @@ void UI_DisplayMain(void) { SomeValue = 2; - if ((gCurrentFunction == FUNCTION_RECEIVE || gCurrentFunction == FUNCTION_MONITOR) && gEeprom.RX_CHANNEL == i) + if ((gCurrentFunction == FUNCTION_RECEIVE || gCurrentFunction == FUNCTION_MONITOR) && gEeprom.RX_CHANNEL == vfo_num) memcpy(pLine0 + 14, BITMAP_RX, sizeof(BITMAP_RX)); } // 0x8F3C - if (IS_MR_CHANNEL(gEeprom.ScreenChannel[i])) + if (IS_MR_CHANNEL(gEeprom.ScreenChannel[vfo_num])) { memcpy(pLine1 + 2, BITMAP_M, sizeof(BITMAP_M)); - if (gInputBoxIndex == 0 || gEeprom.TX_CHANNEL != i) - NUMBER_ToDigits(gEeprom.ScreenChannel[i] + 1, String); + if (gInputBoxIndex == 0 || gEeprom.TX_CHANNEL != vfo_num) + NUMBER_ToDigits(gEeprom.ScreenChannel[vfo_num] + 1, String); else memcpy(String + 5, gInputBox, 3); UI_DisplaySmallDigits(3, String + 5, 10, Line + 1); } else - if (IS_FREQ_CHANNEL(gEeprom.ScreenChannel[i])) + if (IS_FREQ_CHANNEL(gEeprom.ScreenChannel[vfo_num])) { char c; memcpy(pLine1 + 14, BITMAP_F, sizeof(BITMAP_F)); - c = (gEeprom.ScreenChannel[i] - FREQ_CHANNEL_FIRST) + 1; + c = (gEeprom.ScreenChannel[vfo_num] - FREQ_CHANNEL_FIRST) + 1; UI_DisplaySmallDigits(1, &c, 22, Line + 1); } else { memcpy(pLine1 + 7, BITMAP_NarrowBand, sizeof(BITMAP_NarrowBand)); - if (gInputBoxIndex == 0 || gEeprom.TX_CHANNEL != i) + if (gInputBoxIndex == 0 || gEeprom.TX_CHANNEL != vfo_num) { - NUMBER_ToDigits((gEeprom.ScreenChannel[i] - NOAA_CHANNEL_FIRST) + 1, String); + NUMBER_ToDigits((gEeprom.ScreenChannel[vfo_num] - NOAA_CHANNEL_FIRST) + 1, String); } else { @@ -215,7 +200,7 @@ void UI_DisplayMain(void) // 0x8FEC - uint8_t State = VfoState[i]; + uint8_t State = VfoState[vfo_num]; #ifndef DISABLE_ALARM if (gCurrentFunction == FUNCTION_TRANSMIT && gAlarmState == ALARM_STATE_ALARM) @@ -224,7 +209,7 @@ void UI_DisplayMain(void) Channel = gEeprom.RX_CHANNEL; else Channel = gEeprom.TX_CHANNEL; - if (Channel == i) + if (Channel == vfo_num) State = VFO_STATE_ALARM; } #endif @@ -259,65 +244,86 @@ void UI_DisplayMain(void) break; } - UI_PrintString(String, 31, 111, i * 4, Width, true); + UI_PrintString(String, 31, 111, vfo_num * 4, Width, true); } else { - if (gInputBoxIndex && IS_FREQ_CHANNEL(gEeprom.ScreenChannel[i]) && gEeprom.TX_CHANNEL == i) + if (gInputBoxIndex && IS_FREQ_CHANNEL(gEeprom.ScreenChannel[vfo_num]) && gEeprom.TX_CHANNEL == vfo_num) { - UI_DisplayFrequency(gInputBox, 31, i * 4, true, false); + UI_DisplayFrequency(gInputBox, 31, vfo_num * 4, true, false); } else { - if (IS_MR_CHANNEL(gEeprom.ScreenChannel[i])) + if (IS_MR_CHANNEL(gEeprom.ScreenChannel[vfo_num])) { + if (gCurrentFunction == FUNCTION_TRANSMIT) + { + if (gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF) + Channel = gEeprom.RX_CHANNEL; + else + Channel = gEeprom.TX_CHANNEL; + if (Channel == vfo_num) + frequency_Hz = gEeprom.VfoInfo[vfo_num].pTX->Frequency; + else + frequency_Hz = gEeprom.VfoInfo[vfo_num].pRX->Frequency; + } + else + frequency_Hz = gEeprom.VfoInfo[vfo_num].pRX->Frequency; + switch (gEeprom.CHANNEL_DISPLAY_MODE) { case MDF_FREQUENCY: - if (gCurrentFunction == FUNCTION_TRANSMIT) + NUMBER_ToDigits(frequency_Hz, String); + UI_DisplayFrequency(String, 31, vfo_num * 4, false, false); + + if (IS_MR_CHANNEL(gEeprom.ScreenChannel[vfo_num])) { - if (gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF) - Channel = gEeprom.RX_CHANNEL; - else - Channel = gEeprom.TX_CHANNEL; - - if (Channel == i) - NUMBER_ToDigits(gEeprom.VfoInfo[i].pTX->Frequency, String); - else - NUMBER_ToDigits(gEeprom.VfoInfo[i].pRX->Frequency, String); - } - else - NUMBER_ToDigits(gEeprom.VfoInfo[i].pRX->Frequency, String); - - UI_DisplayFrequency(String, 31, i * 4, false, false); - - if (IS_MR_CHANNEL(gEeprom.ScreenChannel[i])) - { - const uint8_t Attributes = gMR_ChannelAttributes[gEeprom.ScreenChannel[i]]; - + const uint8_t Attributes = gMR_ChannelAttributes[gEeprom.ScreenChannel[vfo_num]]; if (Attributes & MR_CH_SCANLIST1) memcpy(pLine0 + 113, BITMAP_ScanList, sizeof(BITMAP_ScanList)); - if (Attributes & MR_CH_SCANLIST2) 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[i] + 1); - UI_PrintString(String, 31, 112, i * 4, 8, true); + sprintf(String, "CH-%03d", gEeprom.ScreenChannel[vfo_num] + 1); + #ifdef CHAN_NAME_FREQ + UI_PrintStringSmall(String, 31 + 8, 0, (vfo_num * 4) + 1, false); + #else + UI_PrintString(String, 31, 112, vfo_num * 4, 8, true); + #endif break; case MDF_NAME: - if (gEeprom.VfoInfo[i].Name[0] == 0 || gEeprom.VfoInfo[i].Name[0] == 0xFF) - { - sprintf(String, "CH-%03d", gEeprom.ScreenChannel[i] + 1); - UI_PrintString(String, 31, 112, i * 4, 8, true); - } - else - UI_PrintString(gEeprom.VfoInfo[i].Name, 31, 112, i * 4, 8, true); + #ifdef CHAN_NAME_FREQ + 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); + } + 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); + } + #else + 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_PrintString(String, 31, 112, vfo_num * 4, 8, true); + } + else + { // channel name + UI_PrintString(gEeprom.VfoInfo[vfo_num].Name, 31, 112, vfo_num * 4, 8, true); + } + #endif break; } } @@ -329,20 +335,20 @@ void UI_DisplayMain(void) Channel = gEeprom.RX_CHANNEL; else Channel = gEeprom.TX_CHANNEL; - - if (Channel == i) - NUMBER_ToDigits(gEeprom.VfoInfo[i].pTX->Frequency, String); + if (Channel == vfo_num) + frequency_Hz = gEeprom.VfoInfo[vfo_num].pTX->Frequency; else - NUMBER_ToDigits(gEeprom.VfoInfo[i].pRX->Frequency, String); + frequency_Hz = gEeprom.VfoInfo[vfo_num].pRX->Frequency; } else - NUMBER_ToDigits(gEeprom.VfoInfo[i].pRX->Frequency, String); + frequency_Hz = gEeprom.VfoInfo[vfo_num].pRX->Frequency; - UI_DisplayFrequency(String, 31, i * 4, false, false); + NUMBER_ToDigits(frequency_Hz, String); // 8 digits + UI_DisplayFrequency(String, 31, vfo_num * 4, false, false); - if (IS_MR_CHANNEL(gEeprom.ScreenChannel[i])) + if (IS_MR_CHANNEL(gEeprom.ScreenChannel[vfo_num])) { - const uint8_t Attributes = gMR_ChannelAttributes[gEeprom.ScreenChannel[i]]; + const uint8_t Attributes = gMR_ChannelAttributes[gEeprom.ScreenChannel[vfo_num]]; if (Attributes & MR_CH_SCANLIST1) memcpy(pLine0 + 113, BITMAP_ScanList, sizeof(BITMAP_ScanList)); @@ -352,6 +358,8 @@ void UI_DisplayMain(void) } UI_DisplaySmallDigits(2, String + 6, 112, Line + 1); + + frequency_Hz = 0; } } } @@ -372,37 +380,29 @@ void UI_DisplayMain(void) else if (SomeValue == 2) { - if (gVFO_RSSI_Level[i]) - Level = gVFO_RSSI_Level[i]; + if (gVFO_RSSI_Level[vfo_num]) + Level = gVFO_RSSI_Level[vfo_num]; } - // TODO: not quite how the original does it, but it's quite entangled in Ghidra - if (Level) + // show TX power level + if (Level >= 1) { - memcpy(pLine1 + 128 + 0, BITMAP_Antenna, sizeof(BITMAP_Antenna)); - memcpy(pLine1 + 128 + 5, BITMAP_AntennaLevel1, sizeof(BITMAP_AntennaLevel1)); + memcpy(pLine1 + 128 + 0, BITMAP_Antenna, sizeof(BITMAP_Antenna)); + memcpy(pLine1 + 128 + 5, BITMAP_AntennaLevel1, sizeof(BITMAP_AntennaLevel1)); if (Level >= 2) - { - memcpy(pLine1 + 128 + 8, BITMAP_AntennaLevel2, sizeof(BITMAP_AntennaLevel2)); - if (Level >= 3) - { - memcpy(pLine1 + 128 + 11, BITMAP_AntennaLevel3, sizeof(BITMAP_AntennaLevel3)); - if (Level >= 4) - { - memcpy(pLine1 + 128 + 14, BITMAP_AntennaLevel4, sizeof(BITMAP_AntennaLevel4)); - if (Level >= 5) - { - memcpy(pLine1 + 128 + 17, BITMAP_AntennaLevel5, sizeof(BITMAP_AntennaLevel5)); - if (Level >= 6) - memcpy(pLine1 + 128 + 20, BITMAP_AntennaLevel6, sizeof(BITMAP_AntennaLevel6)); - } - } - } - } + memcpy(pLine1 + 128 + 8, BITMAP_AntennaLevel2, sizeof(BITMAP_AntennaLevel2)); + if (Level >= 3) + memcpy(pLine1 + 128 + 11, BITMAP_AntennaLevel3, sizeof(BITMAP_AntennaLevel3)); + if (Level >= 4) + memcpy(pLine1 + 128 + 14, BITMAP_AntennaLevel4, sizeof(BITMAP_AntennaLevel4)); + if (Level >= 5) + memcpy(pLine1 + 128 + 17, BITMAP_AntennaLevel5, sizeof(BITMAP_AntennaLevel5)); + if (Level >= 6) + memcpy(pLine1 + 128 + 20, BITMAP_AntennaLevel6, sizeof(BITMAP_AntennaLevel6)); } // 0x931E - if (gEeprom.VfoInfo[i].IsAM) + if (gEeprom.VfoInfo[vfo_num].IsAM) { memcpy(pLine1 + 128 + 27, BITMAP_AM, sizeof(BITMAP_AM)); } @@ -410,7 +410,7 @@ void UI_DisplayMain(void) { const FREQ_Config_t *pConfig; - pConfig = (SomeValue == 1) ? gEeprom.VfoInfo[i].pTX : gEeprom.VfoInfo[i].pRX; + pConfig = (SomeValue == 1) ? gEeprom.VfoInfo[vfo_num].pTX : gEeprom.VfoInfo[vfo_num].pRX; switch (pConfig->CodeType) { @@ -427,38 +427,51 @@ void UI_DisplayMain(void) } // 0x936C - switch (gEeprom.VfoInfo[i].OUTPUT_POWER) + switch (gEeprom.VfoInfo[vfo_num].OUTPUT_POWER) { case OUTPUT_POWER_LOW: - memcpy(pLine1 + 128 + 44, BITMAP_PowerLow, sizeof(BITMAP_PowerLow)); + memcpy(pLine1 + 128 + 44, BITMAP_PowerLow, sizeof(BITMAP_PowerLow)); break; case OUTPUT_POWER_MID: - memcpy(pLine1 + 128 + 44, BITMAP_PowerMid, sizeof(BITMAP_PowerMid)); + memcpy(pLine1 + 128 + 44, BITMAP_PowerMid, sizeof(BITMAP_PowerMid)); break; case OUTPUT_POWER_HIGH: memcpy(pLine1 + 128 + 44, BITMAP_PowerHigh, sizeof(BITMAP_PowerHigh)); break; } - if (gEeprom.VfoInfo[i].ConfigRX.Frequency != gEeprom.VfoInfo[i].ConfigTX.Frequency) + if (gEeprom.VfoInfo[vfo_num].ConfigRX.Frequency != gEeprom.VfoInfo[vfo_num].ConfigTX.Frequency) { - if (gEeprom.VfoInfo[i].FREQUENCY_DEVIATION_SETTING == FREQUENCY_DEVIATION_ADD) + if (gEeprom.VfoInfo[vfo_num].FREQUENCY_DEVIATION_SETTING == FREQUENCY_DEVIATION_ADD) memcpy(pLine1 + 128 + 54, BITMAP_Add, sizeof(BITMAP_Add)); - if (gEeprom.VfoInfo[i].FREQUENCY_DEVIATION_SETTING == FREQUENCY_DEVIATION_SUB) + if (gEeprom.VfoInfo[vfo_num].FREQUENCY_DEVIATION_SETTING == FREQUENCY_DEVIATION_SUB) memcpy(pLine1 + 128 + 54, BITMAP_Sub, sizeof(BITMAP_Sub)); } - if (gEeprom.VfoInfo[i].FrequencyReverse) + if (gEeprom.VfoInfo[vfo_num].FrequencyReverse) memcpy(pLine1 + 128 + 64, BITMAP_ReverseMode, sizeof(BITMAP_ReverseMode)); - if (gEeprom.VfoInfo[i].CHANNEL_BANDWIDTH == BANDWIDTH_NARROW) + if (gEeprom.VfoInfo[vfo_num].CHANNEL_BANDWIDTH == BANDWIDTH_NARROW) memcpy(pLine1 + 128 + 74, BITMAP_NarrowBand, sizeof(BITMAP_NarrowBand)); - if (gEeprom.VfoInfo[i].DTMF_DECODING_ENABLE || gSetting_KILLED) + if (gEeprom.VfoInfo[vfo_num].DTMF_DECODING_ENABLE || gSetting_KILLED) memcpy(pLine1 + 128 + 84, BITMAP_DTMF, sizeof(BITMAP_DTMF)); - if (gEeprom.VfoInfo[i].SCRAMBLING_TYPE && gSetting_ScrambleEnable) + if (gEeprom.VfoInfo[vfo_num].SCRAMBLING_TYPE && gSetting_ScrambleEnable) memcpy(pLine1 + 128 + 110, BITMAP_Scramble, sizeof(BITMAP_Scramble)); + + #ifdef CHAN_NAME_FREQ + if (frequency_Hz > 0) + { // show the channel frequency above the channel number/name + #if 0 + NUMBER_ToDigits(frequency_Hz, String); // 8 digits + UI_DisplayFrequencySmall(String, 31 + 8, (vfo_num * 4) + 0, false); + #else + sprintf(String, "%9.5f", frequency_Hz * 0.00001); + UI_PrintStringSmall(String, 31 + 8, 0, (vfo_num * 4) + 0, false); + #endif + } + #endif } ST7565_BlitFullScreen(); diff --git a/ui/rssi.c b/ui/rssi.c index c317b5e..00095e7 100644 --- a/ui/rssi.c +++ b/ui/rssi.c @@ -27,7 +27,7 @@ static void Render(uint8_t RssiLevel, uint8_t VFO) { uint8_t *pLine; uint8_t Line; - bool bIsClearMode; + bool bIsClearMode = false; if (gCurrentFunction == FUNCTION_TRANSMIT || gScreenToDisplay != DISPLAY_MAIN) return; @@ -52,20 +52,19 @@ static void Render(uint8_t RssiLevel, uint8_t VFO) } else { - memcpy(pLine, BITMAP_Antenna, 5); - memcpy(pLine + 5, BITMAP_AntennaLevel1, sizeof(BITMAP_AntennaLevel1)); - if (RssiLevel >= 2) // 2 + memcpy(pLine, BITMAP_Antenna, 5); + if (RssiLevel >= 2) + memcpy(pLine + 5, BITMAP_AntennaLevel1, sizeof(BITMAP_AntennaLevel1)); + if (RssiLevel >= 3) memcpy(pLine + 8, BITMAP_AntennaLevel2, sizeof(BITMAP_AntennaLevel2)); - if (RssiLevel >= 3) // 3 + if (RssiLevel >= 4) memcpy(pLine + 11, BITMAP_AntennaLevel3, sizeof(BITMAP_AntennaLevel3)); - if (RssiLevel >= 4) // 4 + if (RssiLevel >= 5) memcpy(pLine + 14, BITMAP_AntennaLevel4, sizeof(BITMAP_AntennaLevel4)); - if (RssiLevel >= 5) // 5 + if (RssiLevel >= 6) memcpy(pLine + 17, BITMAP_AntennaLevel5, sizeof(BITMAP_AntennaLevel5)); - if (RssiLevel >= 6) // 6 + if (RssiLevel >= 7) memcpy(pLine + 20, BITMAP_AntennaLevel6, sizeof(BITMAP_AntennaLevel6)); - - bIsClearMode = false; } ST7565_DrawLine(0, Line, 23 , pLine, bIsClearMode); @@ -73,22 +72,32 @@ static void Render(uint8_t RssiLevel, uint8_t VFO) void UI_UpdateRSSI(uint16_t RSSI) { + //const int16_t dB = (int16_t)(RSSI / 2) - 160; + + const uint16_t level0 = gEEPROM_RSSI_CALIB[gRxVfo->Band][0]; + const uint16_t level1 = gEEPROM_RSSI_CALIB[gRxVfo->Band][1]; + const uint16_t level2 = gEEPROM_RSSI_CALIB[gRxVfo->Band][2]; + const uint16_t level3 = gEEPROM_RSSI_CALIB[gRxVfo->Band][3]; + const uint16_t level01 = (level0 + level1) / 2; + const uint16_t level12 = (level1 + level2) / 2; + const uint16_t level23 = (level2 + level3) / 2; + uint8_t Level = 0; - if (RSSI >= gEEPROM_RSSI_CALIB[gRxVfo->Band][3]) - Level = 6; + if (RSSI >= level3) Level = 7; else - if (RSSI >= gEEPROM_RSSI_CALIB[gRxVfo->Band][2]) - Level = 4; + if (RSSI >= level23) Level = 6; else - if (RSSI >= gEEPROM_RSSI_CALIB[gRxVfo->Band][1]) - Level = 2; + if (RSSI >= level2) Level = 5; else - if (RSSI >= gEEPROM_RSSI_CALIB[gRxVfo->Band][0]) - Level = 1; + if (RSSI >= level12) Level = 4; + else + if (RSSI >= level1) Level = 3; + else + if (RSSI >= level01) Level = 2; + else + if (RSSI >= level0) Level = 1; - //const int16_t dB = (int16_t)(RSSI / 2) - 160; - if (gVFO_RSSI_Level[gEeprom.RX_CHANNEL] != Level) { gVFO_RSSI_Level[gEeprom.RX_CHANNEL] = Level; diff --git a/version.c b/version.c index 0f9496f..0896fbe 100644 --- a/version.c +++ b/version.c @@ -2,5 +2,5 @@ #ifdef GIT_HASH const char Version[] = "OEFW-" GIT_HASH; #else - const char Version[] = "OEFW-230909"; + const char Version[] = "OEFW-230910"; #endif diff --git a/win_make.bat b/win_make.bat index 83906b2..5450646 100644 --- a/win_make.bat +++ b/win_make.bat @@ -13,7 +13,7 @@ del /S /Q *.o >nul 2>nul del /S /Q *.d >nul 2>nul ::python -m pip install --upgrade pip crcmod -fw-pack.py firmware.bin 230909 firmware.packed.bin +fw-pack.py firmware.bin 230910 firmware.packed.bin ::arm-none-eabi-size firmware