From b93aa24c40091269c90c9a6c3012c9b7ac6e872c Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Tue, 12 Sep 2023 19:53:54 +0100 Subject: [PATCH] RX can now be set from 18MHz to 1300MHz, though TX is still restricted. --- Makefile | 1 + README.md | 1 + app/app.c | 8 +++--- app/main.c | 3 +- app/menu.c | 6 ++-- app/scanner.h | 48 ++++++++++++++++--------------- bitmaps.c | 67 ++++++++++++++++++++++++++++++++++---------- bitmaps.h | 11 +++++++- firmware | Bin 172892 -> 172976 bytes firmware.bin | Bin 56736 -> 56696 bytes firmware.packed.bin | Bin 56754 -> 56714 bytes frequencies.c | 47 ++++++++++++++++++++----------- frequencies.h | 15 ++++++---- radio.c | 18 ++++++------ ui/main.c | 1 + ui/menu.c | 2 +- ui/menu.h | 2 +- ui/scanner.c | 58 ++++++++++++++++++++------------------ ui/status.c | 2 +- 19 files changed, 183 insertions(+), 107 deletions(-) diff --git a/Makefile b/Makefile index 65b6a5e..3909a88 100644 --- a/Makefile +++ b/Makefile @@ -100,6 +100,7 @@ CFLAGS += -DDISABLE_AIRCOPY CFLAGS += -DDISABLE_ALARM CFLAGS += -DKEEP_MEM_NAME CFLAGS += -DCHAN_NAME_FREQ +CFLAGS += -DRX_ANY_FREQ #CFLAGS += -DENABLE_TX_WHEN_AM #CFLAGS += -DSINGLE_VFO_CHAN #CFLAGS += -DBAND_SCOPE diff --git a/README.md b/README.md index 72d1c7e..e9e3ff4 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ You can edit those changes by (currently) editing the MakeFile, look for these l * CFLAGS += -DDISABLE_ALARM .. remove the ALARM transmit option from the firmware * CFLAGS += -DKEEP_MEM_NAME .. keep the memory channels name when re-saving a channel * CFLAGS += -DCHAN_NAME_FREQ .. show the channel frequency (as well as channel number/name) +* CFLAGS += -DRX_ANY_FREQ .. allow RX on any frequency from 18MHz to 1300MHz * #CFLAGS += -DENABLE_TX_WHEN_AM .. enable TX when radio set to AM (radio does NOT do AM, the adverts are false) * #CFLAGS += -DSINGLE_VFO_CHAN .. (not yet implemented) show a single VFO/CHANNEL if dual-watch/cross-band are disabled * #CFLAGS += -DBAND_SCOPE .. (not yet implemented) add a band scope/spectrum/panadapter option diff --git a/app/app.c b/app/app.c index c6e06aa..88afaa4 100644 --- a/app/app.c +++ b/app/app.c @@ -440,12 +440,12 @@ void APP_SetFrequencyByStep(VFO_Info_t *pInfo, int8_t Step) { uint32_t Frequency = pInfo->ConfigRX.Frequency + (Step * pInfo->StepFrequency); - if (Frequency > gUpperLimitFrequencyBandTable[pInfo->Band]) - Frequency = gLowerLimitFrequencyBandTable[pInfo->Band]; - else if (Frequency < gLowerLimitFrequencyBandTable[pInfo->Band]) Frequency = FREQUENCY_FloorToStep(gUpperLimitFrequencyBandTable[pInfo->Band], pInfo->StepFrequency, gLowerLimitFrequencyBandTable[pInfo->Band]); - + else + if (Frequency > gUpperLimitFrequencyBandTable[pInfo->Band]) + Frequency = gLowerLimitFrequencyBandTable[pInfo->Band]; + pInfo->ConfigRX.Frequency = Frequency; } diff --git a/app/main.c b/app/main.c index 8630fd0..b37ca1c 100644 --- a/app/main.c +++ b/app/main.c @@ -104,7 +104,7 @@ static void MAIN_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) unsigned int i; for (i = 0; i < 7; i++) { - if (Frequency <= gUpperLimitFrequencyBandTable[i] && (gLowerLimitFrequencyBandTable[i] <= Frequency)) + if (Frequency >= gLowerLimitFrequencyBandTable[i] && Frequency <= gUpperLimitFrequencyBandTable[i]) { #ifndef DISABLE_VOICE gAnotherVoiceID = (VOICE_ID_t)Key; @@ -129,6 +129,7 @@ static void MAIN_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) return; } } + } } #ifndef DISABLE_NOAA diff --git a/app/menu.c b/app/menu.c index a3de621..cd613ae 100644 --- a/app/menu.c +++ b/app/menu.c @@ -160,7 +160,7 @@ int MENU_GetLimits(uint8_t Cursor, uint8_t *pMin, uint8_t *pMax) case MENU_TXP: case MENU_SFT_D: case MENU_TDR: - case MENU_WX: + case MENU_XB: #ifndef DISABLE_VOICE case MENU_VOICE: #endif @@ -419,7 +419,7 @@ void MENU_AcceptSetting(void) gUpdateStatus = true; return; - case MENU_WX: + case MENU_XB: #ifndef DISABLE_NOAA if (IS_NOAA_CHANNEL(gEeprom.ScreenChannel[0])) return; @@ -767,7 +767,7 @@ void MENU_ShowCurrentSetting(void) gSubMenuSelection = gEeprom.DUAL_WATCH; break; - case MENU_WX: + case MENU_XB: gSubMenuSelection = gEeprom.CROSS_BAND_RX_TX; break; diff --git a/app/scanner.h b/app/scanner.h index c5f5086..cb4ebe2 100644 --- a/app/scanner.h +++ b/app/scanner.h @@ -20,36 +20,38 @@ #include "dcs.h" #include "driver/keyboard.h" -enum SCAN_CssState_t { - SCAN_CSS_STATE_OFF = 0U, - SCAN_CSS_STATE_SCANNING = 1U, - SCAN_CSS_STATE_FOUND = 2U, - SCAN_CSS_STATE_FAILED = 3U, +enum SCAN_CssState_t +{ + SCAN_CSS_STATE_OFF = 0, + SCAN_CSS_STATE_SCANNING, + SCAN_CSS_STATE_FOUND, + SCAN_CSS_STATE_FAILED }; typedef enum SCAN_CssState_t SCAN_CssState_t; -enum { - SCAN_OFF = 0U, +enum +{ + SCAN_OFF = 0, }; -extern DCS_CodeType_t gScanCssResultType; -extern uint8_t gScanCssResultCode; -extern bool gFlagStartScan; -extern bool gFlagStopScan; -extern bool gScanSingleFrequency; -extern uint8_t gScannerEditState; -extern uint8_t gScanChannel; -extern uint32_t gScanFrequency; -extern bool gScanPauseMode; -extern SCAN_CssState_t gScanCssState; -extern volatile bool gScheduleScanListen; +extern DCS_CodeType_t gScanCssResultType; +extern uint8_t gScanCssResultCode; +extern bool gFlagStartScan; +extern bool gFlagStopScan; +extern bool gScanSingleFrequency; +extern uint8_t gScannerEditState; +extern uint8_t gScanChannel; +extern uint32_t gScanFrequency; +extern bool gScanPauseMode; +extern SCAN_CssState_t gScanCssState; +extern volatile bool gScheduleScanListen; extern volatile uint16_t ScanPauseDelayIn10msec; -extern uint8_t gScanProgressIndicator; -extern uint8_t gScanHitCount; -extern bool gScanUseCssResult; -extern uint8_t gScanState; -extern bool bScanKeepFrequency; +extern uint8_t gScanProgressIndicator; +extern uint8_t gScanHitCount; +extern bool gScanUseCssResult; +extern uint8_t gScanState; +extern bool bScanKeepFrequency; void SCANNER_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld); void SCANNER_Start(void); diff --git a/bitmaps.c b/bitmaps.c index a40c4dd..d0bec09 100644 --- a/bitmaps.c +++ b/bitmaps.c @@ -174,12 +174,14 @@ const uint8_t BITMAP_VOX[] = 0b01000000, 0b00100000, 0b00011111, + 0b00000000, 0b00111110, 0b01000001, 0b01000001, 0b01000001, 0b00111110, + 0b00000000, 0b01100011, 0b00010100, @@ -188,21 +190,42 @@ const uint8_t BITMAP_VOX[] = 0b01100011 }; -const uint8_t BITMAP_WX[] = -{ - 0b00000000, - 0b01111111, - 0b00100000, - 0b00011000, - 0b00100000, - 0b01111111, - 0b00000000, - 0b01100011, - 0b00010100, - 0b00001000, - 0b00010100, - 0b01100011 -}; +#if 0 + const uint8_t BITMAP_WX[] = + { + 0b00000000, + 0b01111111, + 0b00100000, + 0b00011000, + 0b00100000, + 0b01111111, + + 0b00000000, + 0b01100011, + 0b00010100, + 0b00001000, + 0b00010100, + 0b01100011 + }; +#else + // 'XB' (cross-band) + const uint8_t BITMAP_XB[] = + { + 0b00000000, + 0b01100011, + 0b00010100, + 0b00001000, + 0b00010100, + 0b01100011, + + 0b00000000, + 0b01111111, + 0b01001001, + 0b01001001, + 0b01001001, + 0b00110110 + }; +#endif const uint8_t BITMAP_TDR[] = { @@ -212,6 +235,7 @@ const uint8_t BITMAP_TDR[] = 0b01000001, 0b01000001, 0b00111110, + 0b00000000, 0b01111111, 0b00100000, @@ -243,6 +267,7 @@ const uint8_t BITMAP_FM[] = 0b00001001, 0b00001001, 0b00000001, + 0b00000000, 0b01111111, 0b00000010, @@ -260,6 +285,7 @@ const uint8_t BITMAP_FM[] = 0b00001000, 0b00010000, 0b01111111, + 0b00000000, 0b01000110, 0b01001001, @@ -366,6 +392,7 @@ const uint8_t BITMAP_TX[] = 0b00000001, 0b00000001, 0b00000001, + 0b00000000, 0b01100011, 0b00100010, @@ -386,6 +413,7 @@ const uint8_t BITMAP_RX[] = 0b00011001, 0b00101001, 0b01000110, + 0b00000000, 0b01100011, 0b00100010, @@ -461,18 +489,21 @@ const uint8_t BITMAP_DTMF[] = 0b01000001, 0b01000001, 0b00111110, + 0b00000000, 0b00000001, 0b00000001, 0b01111111, 0b00000001, 0b00000001, + 0b00000000, 0b01111111, 0b00000010, 0b00001100, 0b00000010, 0b01111111, + 0b00000000, 0b01111111, 0b00001001, @@ -489,12 +520,14 @@ const uint8_t BITMAP_Scramble[] = 0b01001001, 0b01001001, 0b00110010, + 0b00000000, 0b00111110, 0b01000001, 0b01000001, 0b01000001, 0b00100010, + 0b00000000, 0b01111111, 0b00001001, @@ -571,6 +604,7 @@ const uint8_t BITMAP_AM[] = 0b00010001, 0b00010010, 0b01111100, + 0b00000000, 0b01111111, 0b00000010, @@ -587,6 +621,7 @@ const uint8_t BITMAP_CT[] = 0b01000001, 0b01000001, 0b00100010, + 0b00000000, 0b00000001, 0b00000001, @@ -603,12 +638,14 @@ const uint8_t BITMAP_DCS[] = 0b01000001, 0b01000001, 0b00111110, + 0b00000000, 0b00111110, 0b01000001, 0b01000001, 0b01000001, 0b00100010, + 0b00000000, 0b00100110, 0b01001001, diff --git a/bitmaps.h b/bitmaps.h index 7fa284a..c94c76a 100644 --- a/bitmaps.h +++ b/bitmaps.h @@ -13,19 +13,27 @@ extern const uint8_t BITMAP_BatteryLevel4[18]; extern const uint8_t BITMAP_BatteryLevel5[18]; extern const uint8_t BITMAP_USB_C[9]; + extern const uint8_t BITMAP_KeyLock[9]; extern const uint8_t BITMAP_F_Key[10]; extern const uint8_t BITMAP_VOX[18]; -extern const uint8_t BITMAP_WX[12]; +#if 0 + extern const uint8_t BITMAP_WX[12]; +#else + extern const uint8_t BITMAP_XB[12]; +#endif + extern const uint8_t BITMAP_TDR[12]; + #ifndef DISABLE_VOICE extern const uint8_t BITMAP_VoicePrompt[9]; #endif extern const uint8_t BITMAP_FM[12]; + #ifndef DISABLE_NOAA extern const uint8_t BITMAP_NOAA[12]; #endif @@ -54,6 +62,7 @@ extern const uint8_t BITMAP_ReverseMode[8]; extern const uint8_t BITMAP_NarrowBand[8]; extern const uint8_t BITMAP_DTMF[24]; + extern const uint8_t BITMAP_Scramble[18]; extern const uint8_t BITMAP_Add[8]; diff --git a/firmware b/firmware index d60bb5d2cf6616eed6afcb8db6339efdfabf61cf..944902f16de4ab38ab7244a1da37c64a8326d307 100644 GIT binary patch delta 17170 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 diff --git a/firmware.bin b/firmware.bin index f35bb526b71d5b9ac38fe92ec31e317a88c7fda5..d223b534a8d8d176710567a72b6a3b184567d8ed 100644 GIT binary patch delta 5059 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 delta 5220 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 diff --git a/firmware.packed.bin b/firmware.packed.bin index 63710d00b888aa07a23a453bac1c2d67a042e22d..43d8a301d2a29f7d4febfd65906a02d6e0c70574 100644 GIT binary patch delta 21555 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 delta 21596 zcmX6^Wn5JM*JMehyK@m(LP9!3dg(6d2I&+L@X{y^i*$EL_oA>gNC^mtNVlNU9nby! zpLc$Ib@=X?b7tnujp@W_?8Hctf_NuCUxB=CVt|xCh730i;9fk2WH)^w{|AAHG}TaY zV6&i^F;Ww7y5FS>o50+k7(mAe@1uD2wdpA*ex-lC6aUlJbVi?ujjoZ`6vY}t0EufN z5m14UxLiJyQO(WZ_AU1f{3{sa8rJ0UYzG&Th|qhkhO>L!Baxp?hbVpi5l1(W7JIX+ z3?VDMgQK*$vDaT_jo^F1iN3*!FnRF_a*V){QG-w*^kkmmkT3Um8<#&rM9YYy^Q0nr zWq2W3h$9(!bk8z`h%7r(B&MUWNNOmX-Jd(dNY|t-A7-vHJYZ7aKl7c7_<{l=P?mvC z1DY+=)vM+g?4?E8k~fA{FR>%eUJdLuLbjWlWZfVTd<2U;9aYlunj19}YgIUDeJaY& zlN>o5Hb`H5fzXp@MfZ?Jype}-aG}!FK2Sc!BV6rikPcQ7Lrz-{Is`r0zW9xE3Nzg7 zNERmX6+D}>wB z1fjqvcE+xQFok#PVFJlh<{CG0=@{*-c{c)blZ7sXE7e`lsZ-l{JO>Y9=?HP96Tz3I(@o7*D8GUA;QpcaF;(qe;nH!*4Jp_BN|_$OL3LTnKWdUX&�UMCkSB-@eRHy; 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 5000000 && Frequency < 10800000) - return BAND1_50MHz; - if (Frequency >= 10800000 && Frequency < 13600000) - return BAND2_108MHz; - if (Frequency >= 13600000 && Frequency < 17400000) - return BAND3_136MHz; - if (Frequency >= 17400000 && Frequency < 35000000) - return BAND4_174MHz; - if (Frequency >= 35000000 && Frequency < 40000000) - return BAND5_350MHz; - if (Frequency >= 40000000 && Frequency < 47000000) - return BAND6_400MHz; - if (Frequency >= 47000000 && Frequency < 60000000) +// if (Frequency >= 60000000 && Frequency <= bx_max_Hz) +// return BAND7_470MHz; + if (Frequency >= 47000000) return BAND7_470MHz; + if (Frequency >= 40000000) + return BAND6_400MHz; + if (Frequency >= 35000000) + return BAND5_350MHz; + if (Frequency >= 17400000) + return BAND4_174MHz; + if (Frequency >= 13600000) + return BAND3_136MHz; + if (Frequency >= 10800000) + return BAND2_108MHz; +// if (Frequency >= 5000000) +// return BAND1_50MHz; +// if (Frequency >= bx_min_Hz) + return BAND1_50MHz; // TODO: Double check the assembly - return BAND6_400MHz; +// return BAND6_400MHz; } uint8_t FREQUENCY_CalculateOutputPower(uint8_t TxpLow, uint8_t TxpMid, uint8_t TxpHigh, int32_t LowerLimit, int32_t Middle, int32_t UpperLimit, int32_t Frequency) diff --git a/frequencies.h b/frequencies.h index 20eba98..1d64099 100644 --- a/frequencies.h +++ b/frequencies.h @@ -21,6 +21,9 @@ #include "radio.h" +extern const uint32_t bx_min_Hz; +extern const uint32_t bx_max_Hz; + enum FREQUENCY_Band_t { BAND1_50MHz = 0, @@ -34,13 +37,15 @@ enum FREQUENCY_Band_t typedef enum FREQUENCY_Band_t FREQUENCY_Band_t; -extern const uint32_t LowerLimitFrequencyBandTable[7]; -extern const uint32_t MiddleFrequencyBandTable[7]; -extern const uint32_t UpperLimitFrequencyBandTable[7]; +extern const uint32_t LowerLimitFrequencyBandTable[7]; +extern const uint32_t MiddleFrequencyBandTable[7]; +extern const uint32_t UpperLimitFrequencyBandTable[7]; + #ifndef DISABLE_NOAA - extern const uint32_t NoaaFrequencyTable[10]; + extern const uint32_t NoaaFrequencyTable[10]; #endif -extern const uint16_t StepFrequencyTable[6]; + +extern const uint16_t StepFrequencyTable[6]; FREQUENCY_Band_t FREQUENCY_GetBand(uint32_t Frequency); uint8_t FREQUENCY_CalculateOutputPower(uint8_t TxpLow, uint8_t TxpMid, uint8_t TxpHigh, int32_t LowerLimit, int32_t Middle, int32_t UpperLimit, int32_t Frequency); diff --git a/radio.c b/radio.c index 4ba9066..6e357c5 100644 --- a/radio.c +++ b/radio.c @@ -351,6 +351,7 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg) else if (Channel >= FREQ_CHANNEL_FIRST) Frequency = FREQUENCY_FloorToStep(Frequency, gEeprom.VfoInfo[VFO].StepFrequency, gLowerLimitFrequencyBandTable[Band]); + pRadio->ConfigRX.Frequency = Frequency; if (Frequency >= 10800000 && Frequency < 13600000) @@ -438,15 +439,14 @@ void RADIO_ConfigureSquelchAndOutputPower(VFO_Info_t *pInfo) EEPROM_ReadBuffer(0x1ED0 + (Band * 16) + (pInfo->OUTPUT_POWER * 3), Txp, 3); - pInfo->TXP_CalculatedSetting = - FREQUENCY_CalculateOutputPower( - Txp[0], - Txp[1], - Txp[2], - LowerLimitFrequencyBandTable[Band], - MiddleFrequencyBandTable[Band], - UpperLimitFrequencyBandTable[Band], - pInfo->pTX->Frequency); + pInfo->TXP_CalculatedSetting = FREQUENCY_CalculateOutputPower( + Txp[0], + Txp[1], + Txp[2], + LowerLimitFrequencyBandTable[Band], + MiddleFrequencyBandTable[Band], + UpperLimitFrequencyBandTable[Band], + pInfo->pTX->Frequency); } void RADIO_ApplyOffset(VFO_Info_t *pInfo) diff --git a/ui/main.c b/ui/main.c index 8fbc57c..bffa730 100644 --- a/ui/main.c +++ b/ui/main.c @@ -126,6 +126,7 @@ void UI_DisplayMain(void) if (bIsSameVfo) memcpy(pLine0 + 2, BITMAP_VFO_Default, sizeof(BITMAP_VFO_Default)); else + //if (gEeprom.CROSS_BAND_RX_TX != CROSS_BAND_OFF) memcpy(pLine0 + 2, BITMAP_VFO_NotDefault, sizeof(BITMAP_VFO_NotDefault)); } diff --git a/ui/menu.c b/ui/menu.c index d588895..ff7a288 100644 --- a/ui/menu.c +++ b/ui/menu.c @@ -438,7 +438,7 @@ void UI_DisplayMenu(void) break; case MENU_TDR: - case MENU_WX: + case MENU_XB: strcpy(String, gSubMenu_CHAN[gSubMenuSelection]); break; diff --git a/ui/menu.h b/ui/menu.h index abb3f68..626115a 100644 --- a/ui/menu.h +++ b/ui/menu.h @@ -39,7 +39,7 @@ enum MENU_VOX, MENU_ABR, MENU_TDR, - MENU_WX, + MENU_XB, MENU_BEEP, MENU_TOT, #ifndef DISABLE_VOICE diff --git a/ui/scanner.c b/ui/scanner.c index c953774..738260d 100644 --- a/ui/scanner.c +++ b/ui/scanner.c @@ -26,56 +26,60 @@ void UI_DisplayScanner(void) { - char String[16]; - bool bCentered; + char String[16]; + bool bCentered; uint8_t Start; memset(gFrameBuffer, 0, sizeof(gFrameBuffer)); - memset(String, 0, sizeof(String)); - if (gScanSingleFrequency || (gScanCssState != SCAN_CSS_STATE_OFF && gScanCssState != SCAN_CSS_STATE_FAILED)) { + memset(String, 0, sizeof(String)); + if (gScanSingleFrequency || (gScanCssState != SCAN_CSS_STATE_OFF && gScanCssState != SCAN_CSS_STATE_FAILED)) sprintf(String, "FREQ:%.5f", gScanFrequency * 1e-05); - } else { + else sprintf(String, "FREQ:**.*****"); - } UI_PrintString(String, 2, 0, 1, 8); - memset(String, 0, sizeof(String)); - if (gScanCssState < SCAN_CSS_STATE_FOUND || !gScanUseCssResult) { + memset(String, 0, sizeof(String)); + if (gScanCssState < SCAN_CSS_STATE_FOUND || !gScanUseCssResult) sprintf(String, "CTC:******"); - } else if (gScanCssResultType == CODE_TYPE_CONTINUOUS_TONE) { + else + if (gScanCssResultType == CODE_TYPE_CONTINUOUS_TONE) sprintf(String, "CTC:%.1fHz", CTCSS_Options[gScanCssResultCode] * 0.1); - } else { + else sprintf(String, "DCS:D%03oN", DCS_Options[gScanCssResultCode]); - } - UI_PrintString(String, 2, 0, 3, 8); - memset(String, 0, sizeof(String)); - if (gScannerEditState == 2) { + memset(String, 0, sizeof(String)); + if (gScannerEditState == 2) + { strcpy(String, "SAVE?"); - Start = 0; + + Start = 0; bCentered = 1; - } else { - if (gScannerEditState == 1) { + } + else + { + if (gScannerEditState == 1) + { strcpy(String, "SAVE:"); UI_GenerateChannelStringEx(String + 5, gShowChPrefix, gScanChannel); - } else if (gScanCssState < SCAN_CSS_STATE_FOUND) { + } + else + if (gScanCssState < SCAN_CSS_STATE_FOUND) + { strcpy(String, "SCAN"); memset(String + 4, '.', (gScanProgressIndicator & 7) + 1); - } else { - if (gScanCssState == SCAN_CSS_STATE_FOUND) { - strcpy(String, "SCAN CMP."); - } else { - strcpy(String, "SCAN FAIL."); - } } - Start = 2; + else + if (gScanCssState == SCAN_CSS_STATE_FOUND) + strcpy(String, "SCAN CMP."); + else + strcpy(String, "SCAN FAIL."); + + Start = 2; bCentered = 0; } - UI_PrintString(String, Start, bCentered ? 127 : 0, 5, 8); ST7565_BlitFullScreen(); } - diff --git a/ui/status.c b/ui/status.c index f19c4af..2e91bf3 100644 --- a/ui/status.c +++ b/ui/status.c @@ -65,7 +65,7 @@ void UI_DisplayStatus(void) memcpy(gStatusLine + 71, BITMAP_VOX, sizeof(BITMAP_VOX)); if (gEeprom.CROSS_BAND_RX_TX != CROSS_BAND_OFF) - memcpy(gStatusLine + 58, BITMAP_WX, sizeof(BITMAP_WX)); + memcpy(gStatusLine + 58, BITMAP_XB, sizeof(BITMAP_XB)); if (gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) memcpy(gStatusLine + 45, BITMAP_TDR, sizeof(BITMAP_TDR));