0
mirror of https://github.com/OneOfEleven/uv-k5-firmware-custom.git synced 2025-06-19 14:48:03 +03:00

Added channel names to SLIST1/2 menus

This commit is contained in:
OneOfEleven
2023-09-19 11:44:49 +01:00
parent 8aafba846d
commit f4a65c5b87
5 changed files with 259 additions and 250 deletions

View File

@ -109,9 +109,9 @@
#endif #endif
VOICE_ID_DELETE_CHANNEL, VOICE_ID_DELETE_CHANNEL,
VOICE_ID_INITIALISATION, VOICE_ID_INITIALISATION,
// hidden items // hidden items
VOICE_ID_INVALID, VOICE_ID_INVALID,
VOICE_ID_INVALID, VOICE_ID_INVALID,
VOICE_ID_INVALID, VOICE_ID_INVALID,
@ -130,11 +130,11 @@ void MENU_StartCssScan(int8_t Direction)
gUpdateStatus = true; gUpdateStatus = true;
gMenuScrollDirection = Direction; gMenuScrollDirection = Direction;
RADIO_SelectVfos(); RADIO_SelectVfos();
MENU_SelectNextCode(); MENU_SelectNextCode();
ScanPauseDelayIn_10ms = 50; ScanPauseDelayIn_10ms = 50;
gScheduleScanListen = false; gScheduleScanListen = false;
} }
@ -170,40 +170,40 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
*pMin = 0; *pMin = 0;
*pMax = ARRAY_SIZE(gSubMenu_F_LOCK) - 1; *pMax = ARRAY_SIZE(gSubMenu_F_LOCK) - 1;
break; break;
case MENU_MDF: case MENU_MDF:
*pMin = 0; *pMin = 0;
*pMax = ARRAY_SIZE(gSubMenu_MDF) - 1; *pMax = ARRAY_SIZE(gSubMenu_MDF) - 1;
break; break;
case MENU_TXP: case MENU_TXP:
*pMin = 0; *pMin = 0;
*pMax = ARRAY_SIZE(gSubMenu_TXP) - 1; *pMax = ARRAY_SIZE(gSubMenu_TXP) - 1;
break; break;
case MENU_SFT_D: case MENU_SFT_D:
*pMin = 0; *pMin = 0;
*pMax = ARRAY_SIZE(gSubMenu_SFT_D) - 1; *pMax = ARRAY_SIZE(gSubMenu_SFT_D) - 1;
break; break;
case MENU_TDR: case MENU_TDR:
case MENU_XB: case MENU_XB:
*pMin = 0; *pMin = 0;
*pMax = ARRAY_SIZE(gSubMenu_CHAN) - 1; *pMax = ARRAY_SIZE(gSubMenu_CHAN) - 1;
break; break;
#ifdef ENABLE_VOICE #ifdef ENABLE_VOICE
case MENU_VOICE: case MENU_VOICE:
*pMin = 0; *pMin = 0;
*pMax = ARRAY_SIZE(gSubMenu_VOICE) - 1; *pMax = ARRAY_SIZE(gSubMenu_VOICE) - 1;
break; break;
#endif #endif
case MENU_SC_REV: case MENU_SC_REV:
*pMin = 0; *pMin = 0;
*pMax = ARRAY_SIZE(gSubMenu_SC_REV) - 1; *pMax = ARRAY_SIZE(gSubMenu_SC_REV) - 1;
break; break;
case MENU_ROGER: case MENU_ROGER:
*pMin = 0; *pMin = 0;
*pMax = ARRAY_SIZE(gSubMenu_ROGER) - 1; *pMax = ARRAY_SIZE(gSubMenu_ROGER) - 1;
@ -220,13 +220,13 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
*pMax = 208; *pMax = 208;
//*pMax = (ARRAY_SIZE(DCS_Options) * 2); //*pMax = (ARRAY_SIZE(DCS_Options) * 2);
break; break;
case MENU_R_CTCS: case MENU_R_CTCS:
case MENU_T_CTCS: case MENU_T_CTCS:
*pMin = 0; *pMin = 0;
*pMax = ARRAY_SIZE(CTCSS_Options) - 1; *pMax = ARRAY_SIZE(CTCSS_Options) - 1;
break; break;
case MENU_W_N: case MENU_W_N:
*pMin = 0; *pMin = 0;
*pMax = ARRAY_SIZE(gSubMenu_W_N) - 1; *pMax = ARRAY_SIZE(gSubMenu_W_N) - 1;
@ -273,7 +273,7 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
*pMin = 0; *pMin = 0;
*pMax = ARRAY_SIZE(gSubMenu_OFF_ON) - 1; *pMax = ARRAY_SIZE(gSubMenu_OFF_ON) - 1;
break; break;
case MENU_SCR: case MENU_SCR:
case MENU_VOX: case MENU_VOX:
case MENU_TOT: case MENU_TOT:
@ -281,51 +281,57 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
*pMin = 0; *pMin = 0;
*pMax = 10; *pMax = 10;
break; break;
case MENU_MEM_CH: case MENU_MEM_CH:
case MENU_1_CALL: case MENU_1_CALL:
case MENU_SLIST1: // case MENU_SLIST1:
case MENU_SLIST2: // case MENU_SLIST2:
case MENU_DEL_CH: case MENU_DEL_CH:
*pMin = 0; *pMin = 0;
*pMax = 199; *pMax = 199;
break; break;
case MENU_SLIST1:
case MENU_SLIST2:
*pMin = -1;
*pMax = 199;
break;
case MENU_SAVE: case MENU_SAVE:
*pMin = 0; *pMin = 0;
*pMax = ARRAY_SIZE(gSubMenu_SAVE) - 1; *pMax = ARRAY_SIZE(gSubMenu_SAVE) - 1;
break; break;
case MENU_MIC: case MENU_MIC:
*pMin = 0; *pMin = 0;
*pMax = 4; *pMax = 4;
break; break;
case MENU_S_LIST: case MENU_S_LIST:
*pMin = 1; *pMin = 1;
*pMax = 2; *pMax = 2;
break; break;
case MENU_D_RSP: case MENU_D_RSP:
*pMin = 0; *pMin = 0;
*pMax = ARRAY_SIZE(gSubMenu_D_RSP) - 1; *pMax = ARRAY_SIZE(gSubMenu_D_RSP) - 1;
break; break;
case MENU_PTT_ID: case MENU_PTT_ID:
*pMin = 0; *pMin = 0;
*pMax = ARRAY_SIZE(gSubMenu_PTT_ID) - 1; *pMax = ARRAY_SIZE(gSubMenu_PTT_ID) - 1;
break; break;
case MENU_D_HOLD: case MENU_D_HOLD:
*pMin = 5; *pMin = 5;
*pMax = 60; *pMax = 60;
break; break;
case MENU_D_PRE: case MENU_D_PRE:
*pMin = 3; *pMin = 3;
*pMax = 99; *pMax = 99;
break; break;
case MENU_D_LIST: case MENU_D_LIST:
*pMin = 1; *pMin = 1;
*pMax = 16; *pMax = 16;
@ -335,7 +341,7 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
*pMin = -1000; *pMin = -1000;
*pMax = +1000; *pMax = +1000;
break; break;
default: default:
return -1; return -1;
} }
@ -364,7 +370,7 @@ void MENU_AcceptSetting(void)
gRequestSaveSettings = true; gRequestSaveSettings = true;
gVfoConfigureMode = VFO_CONFIGURE_1; gVfoConfigureMode = VFO_CONFIGURE_1;
return; return;
case MENU_STEP: case MENU_STEP:
if (IS_FREQ_CHANNEL(gTxVfo->CHANNEL_SAVE)) if (IS_FREQ_CHANNEL(gTxVfo->CHANNEL_SAVE))
{ {
@ -374,12 +380,12 @@ void MENU_AcceptSetting(void)
} }
gSubMenuSelection = gTxVfo->STEP_SETTING; gSubMenuSelection = gTxVfo->STEP_SETTING;
return; return;
case MENU_TXP: case MENU_TXP:
gTxVfo->OUTPUT_POWER = gSubMenuSelection; gTxVfo->OUTPUT_POWER = gSubMenuSelection;
gRequestSaveChannel = 2; gRequestSaveChannel = 2;
return; return;
case MENU_T_DCS: case MENU_T_DCS:
pConfig = &gTxVfo->ConfigTX; pConfig = &gTxVfo->ConfigTX;
@ -407,11 +413,11 @@ void MENU_AcceptSetting(void)
pConfig->CodeType = CODE_TYPE_REVERSE_DIGITAL; pConfig->CodeType = CODE_TYPE_REVERSE_DIGITAL;
Code = gSubMenuSelection - 105; Code = gSubMenuSelection - 105;
} }
pConfig->Code = Code; pConfig->Code = Code;
gRequestSaveChannel = 1; gRequestSaveChannel = 1;
return; return;
case MENU_T_CTCS: case MENU_T_CTCS:
pConfig = &gTxVfo->ConfigTX; pConfig = &gTxVfo->ConfigTX;
@ -436,42 +442,42 @@ void MENU_AcceptSetting(void)
pConfig->Code = Code; pConfig->Code = Code;
gRequestSaveChannel = 1; gRequestSaveChannel = 1;
return; return;
case MENU_SFT_D: case MENU_SFT_D:
gTxVfo->TX_OFFSET_FREQUENCY_DIRECTION = gSubMenuSelection; gTxVfo->TX_OFFSET_FREQUENCY_DIRECTION = gSubMenuSelection;
gRequestSaveChannel = 1; gRequestSaveChannel = 1;
return; return;
case MENU_OFFSET: case MENU_OFFSET:
gTxVfo->TX_OFFSET_FREQUENCY = gSubMenuSelection; gTxVfo->TX_OFFSET_FREQUENCY = gSubMenuSelection;
gRequestSaveChannel = 1; gRequestSaveChannel = 1;
return; return;
case MENU_W_N: case MENU_W_N:
gTxVfo->CHANNEL_BANDWIDTH = gSubMenuSelection; gTxVfo->CHANNEL_BANDWIDTH = gSubMenuSelection;
gRequestSaveChannel = 2; gRequestSaveChannel = 2;
return; return;
case MENU_SCR: case MENU_SCR:
gTxVfo->SCRAMBLING_TYPE = gSubMenuSelection; gTxVfo->SCRAMBLING_TYPE = gSubMenuSelection;
gRequestSaveChannel = 2; gRequestSaveChannel = 2;
return; return;
case MENU_BCL: case MENU_BCL:
gTxVfo->BUSY_CHANNEL_LOCK = gSubMenuSelection; gTxVfo->BUSY_CHANNEL_LOCK = gSubMenuSelection;
gRequestSaveChannel = 2; gRequestSaveChannel = 2;
return; return;
case MENU_MEM_CH: case MENU_MEM_CH:
gTxVfo->CHANNEL_SAVE = gSubMenuSelection; gTxVfo->CHANNEL_SAVE = gSubMenuSelection;
gRequestSaveChannel = 2; gRequestSaveChannel = 2;
gEeprom.MrChannel[0] = gSubMenuSelection; gEeprom.MrChannel[0] = gSubMenuSelection;
return; return;
case MENU_SAVE: case MENU_SAVE:
gEeprom.BATTERY_SAVE = gSubMenuSelection; gEeprom.BATTERY_SAVE = gSubMenuSelection;
break; break;
case MENU_VOX: case MENU_VOX:
gEeprom.VOX_SWITCH = gSubMenuSelection != 0; gEeprom.VOX_SWITCH = gSubMenuSelection != 0;
if (gEeprom.VOX_SWITCH) if (gEeprom.VOX_SWITCH)
@ -481,7 +487,7 @@ void MENU_AcceptSetting(void)
gRequestSaveSettings = true; gRequestSaveSettings = true;
gUpdateStatus = true; gUpdateStatus = true;
return; return;
case MENU_ABR: case MENU_ABR:
gEeprom.BACKLIGHT = gSubMenuSelection; gEeprom.BACKLIGHT = gSubMenuSelection;
if (gSubMenuSelection == 0) if (gSubMenuSelection == 0)
@ -489,14 +495,14 @@ void MENU_AcceptSetting(void)
else else
BACKLIGHT_TurnOn(); BACKLIGHT_TurnOn();
break; break;
case MENU_TDR: case MENU_TDR:
gEeprom.DUAL_WATCH = gSubMenuSelection; gEeprom.DUAL_WATCH = gSubMenuSelection;
gFlagReconfigureVfos = true; gFlagReconfigureVfos = true;
gRequestSaveSettings = true; gRequestSaveSettings = true;
gUpdateStatus = true; gUpdateStatus = true;
return; return;
case MENU_XB: case MENU_XB:
#ifdef ENABLE_NOAA #ifdef ENABLE_NOAA
if (IS_NOAA_CHANNEL(gEeprom.ScreenChannel[0])) if (IS_NOAA_CHANNEL(gEeprom.ScreenChannel[0]))
@ -504,21 +510,21 @@ void MENU_AcceptSetting(void)
if (IS_NOAA_CHANNEL(gEeprom.ScreenChannel[1])) if (IS_NOAA_CHANNEL(gEeprom.ScreenChannel[1]))
return; return;
#endif #endif
gEeprom.CROSS_BAND_RX_TX = gSubMenuSelection; gEeprom.CROSS_BAND_RX_TX = gSubMenuSelection;
gFlagReconfigureVfos = true; gFlagReconfigureVfos = true;
gRequestSaveSettings = true; gRequestSaveSettings = true;
gUpdateStatus = true; gUpdateStatus = true;
return; return;
case MENU_BEEP: case MENU_BEEP:
gEeprom.BEEP_CONTROL = gSubMenuSelection; gEeprom.BEEP_CONTROL = gSubMenuSelection;
break; break;
case MENU_TOT: case MENU_TOT:
gEeprom.TX_TIMEOUT_TIMER = gSubMenuSelection; gEeprom.TX_TIMEOUT_TIMER = gSubMenuSelection;
break; break;
#ifdef ENABLE_VOICE #ifdef ENABLE_VOICE
case MENU_VOICE: case MENU_VOICE:
gEeprom.VOICE_PROMPT = gSubMenuSelection; gEeprom.VOICE_PROMPT = gSubMenuSelection;
@ -526,49 +532,49 @@ void MENU_AcceptSetting(void)
gUpdateStatus = true; gUpdateStatus = true;
return; return;
#endif #endif
case MENU_SC_REV: case MENU_SC_REV:
gEeprom.SCAN_RESUME_MODE = gSubMenuSelection; gEeprom.SCAN_RESUME_MODE = gSubMenuSelection;
break; break;
case MENU_MDF: case MENU_MDF:
gEeprom.CHANNEL_DISPLAY_MODE = gSubMenuSelection; gEeprom.CHANNEL_DISPLAY_MODE = gSubMenuSelection;
break; break;
case MENU_AUTOLK: case MENU_AUTOLK:
gEeprom.AUTO_KEYPAD_LOCK = gSubMenuSelection; gEeprom.AUTO_KEYPAD_LOCK = gSubMenuSelection;
gKeyLockCountdown = 30; gKeyLockCountdown = 30;
break; break;
case MENU_S_ADD1: case MENU_S_ADD1:
gTxVfo->SCANLIST1_PARTICIPATION = gSubMenuSelection; gTxVfo->SCANLIST1_PARTICIPATION = gSubMenuSelection;
SETTINGS_UpdateChannel(gTxVfo->CHANNEL_SAVE, gTxVfo, true); SETTINGS_UpdateChannel(gTxVfo->CHANNEL_SAVE, gTxVfo, true);
gVfoConfigureMode = VFO_CONFIGURE_1; gVfoConfigureMode = VFO_CONFIGURE_1;
gFlagResetVfos = true; gFlagResetVfos = true;
return; return;
case MENU_S_ADD2: case MENU_S_ADD2:
gTxVfo->SCANLIST2_PARTICIPATION = gSubMenuSelection; gTxVfo->SCANLIST2_PARTICIPATION = gSubMenuSelection;
SETTINGS_UpdateChannel(gTxVfo->CHANNEL_SAVE, gTxVfo, true); SETTINGS_UpdateChannel(gTxVfo->CHANNEL_SAVE, gTxVfo, true);
gVfoConfigureMode = VFO_CONFIGURE_1; gVfoConfigureMode = VFO_CONFIGURE_1;
gFlagResetVfos = true; gFlagResetVfos = true;
return; return;
case MENU_STE: case MENU_STE:
gEeprom.TAIL_NOTE_ELIMINATION = gSubMenuSelection; gEeprom.TAIL_NOTE_ELIMINATION = gSubMenuSelection;
break; break;
case MENU_RP_STE: case MENU_RP_STE:
gEeprom.REPEATER_TAIL_TONE_ELIMINATION = gSubMenuSelection; gEeprom.REPEATER_TAIL_TONE_ELIMINATION = gSubMenuSelection;
break; break;
case MENU_MIC: case MENU_MIC:
gEeprom.MIC_SENSITIVITY = gSubMenuSelection; gEeprom.MIC_SENSITIVITY = gSubMenuSelection;
BOARD_EEPROM_LoadMoreSettings(); BOARD_EEPROM_LoadMoreSettings();
gRequestSaveSettings = true; gRequestSaveSettings = true;
gFlagReconfigureVfos = true; gFlagReconfigureVfos = true;
return; return;
#ifdef ENABLE_COMPANDER #ifdef ENABLE_COMPANDER
case MENU_COMPAND: case MENU_COMPAND:
gTxVfo->Compander = gSubMenuSelection; gTxVfo->Compander = gSubMenuSelection;
@ -579,43 +585,43 @@ void MENU_AcceptSetting(void)
case MENU_1_CALL: case MENU_1_CALL:
gEeprom.CHAN_1_CALL = gSubMenuSelection; gEeprom.CHAN_1_CALL = gSubMenuSelection;
break; break;
case MENU_S_LIST: case MENU_S_LIST:
gEeprom.SCAN_LIST_DEFAULT = gSubMenuSelection - 1; gEeprom.SCAN_LIST_DEFAULT = gSubMenuSelection - 1;
break; break;
#ifdef ENABLE_ALARM #ifdef ENABLE_ALARM
case MENU_AL_MOD: case MENU_AL_MOD:
gEeprom.ALARM_MODE = gSubMenuSelection; gEeprom.ALARM_MODE = gSubMenuSelection;
break; break;
#endif #endif
case MENU_D_ST: case MENU_D_ST:
gEeprom.DTMF_SIDE_TONE = gSubMenuSelection; gEeprom.DTMF_SIDE_TONE = gSubMenuSelection;
break; break;
case MENU_D_RSP: case MENU_D_RSP:
gEeprom.DTMF_DECODE_RESPONSE = gSubMenuSelection; gEeprom.DTMF_DECODE_RESPONSE = gSubMenuSelection;
break; break;
case MENU_D_HOLD: case MENU_D_HOLD:
gEeprom.DTMF_AUTO_RESET_TIME = gSubMenuSelection; gEeprom.DTMF_AUTO_RESET_TIME = gSubMenuSelection;
break; break;
case MENU_D_PRE: case MENU_D_PRE:
gEeprom.DTMF_PRELOAD_TIME = gSubMenuSelection * 10; gEeprom.DTMF_PRELOAD_TIME = gSubMenuSelection * 10;
break; break;
case MENU_PTT_ID: case MENU_PTT_ID:
gTxVfo->DTMF_PTT_ID_TX_MODE = gSubMenuSelection; gTxVfo->DTMF_PTT_ID_TX_MODE = gSubMenuSelection;
gRequestSaveChannel = 1; gRequestSaveChannel = 1;
return; return;
case MENU_D_DCD: case MENU_D_DCD:
gTxVfo->DTMF_DECODING_ENABLE = gSubMenuSelection; gTxVfo->DTMF_DECODING_ENABLE = gSubMenuSelection;
gRequestSaveChannel = 1; gRequestSaveChannel = 1;
return; return;
case MENU_D_LIVE_DEC: case MENU_D_LIVE_DEC:
gSetting_live_DTMF_decoder = gSubMenuSelection; gSetting_live_DTMF_decoder = gSubMenuSelection;
gRequestSaveSettings = true; gRequestSaveSettings = true;
@ -632,20 +638,20 @@ void MENU_AcceptSetting(void)
gRequestDisplayScreen = DISPLAY_INVALID; gRequestDisplayScreen = DISPLAY_INVALID;
} }
return; return;
case MENU_PONMSG: case MENU_PONMSG:
gEeprom.POWER_ON_DISPLAY_MODE = gSubMenuSelection; gEeprom.POWER_ON_DISPLAY_MODE = gSubMenuSelection;
break; break;
case MENU_ROGER: case MENU_ROGER:
gEeprom.ROGER = gSubMenuSelection; gEeprom.ROGER = gSubMenuSelection;
break; break;
case MENU_AM: case MENU_AM:
gTxVfo->AM_CHANNEL_MODE = gSubMenuSelection; gTxVfo->AM_CHANNEL_MODE = gSubMenuSelection;
gRequestSaveChannel = 2; gRequestSaveChannel = 2;
return; return;
#ifdef ENABLE_NOAA #ifdef ENABLE_NOAA
case MENU_NOAA_S: case MENU_NOAA_S:
gEeprom.NOAA_AUTO_SCAN = gSubMenuSelection; gEeprom.NOAA_AUTO_SCAN = gSubMenuSelection;
@ -653,40 +659,40 @@ void MENU_AcceptSetting(void)
gFlagReconfigureVfos = true; gFlagReconfigureVfos = true;
return; return;
#endif #endif
case MENU_DEL_CH: case MENU_DEL_CH:
SETTINGS_UpdateChannel(gSubMenuSelection, NULL, false); SETTINGS_UpdateChannel(gSubMenuSelection, NULL, false);
gVfoConfigureMode = VFO_CONFIGURE_RELOAD; gVfoConfigureMode = VFO_CONFIGURE_RELOAD;
gFlagResetVfos = true; gFlagResetVfos = true;
return; return;
case MENU_RESET: case MENU_RESET:
BOARD_FactoryReset(gSubMenuSelection); BOARD_FactoryReset(gSubMenuSelection);
return; return;
case MENU_350TX: case MENU_350TX:
gSetting_350TX = gSubMenuSelection; gSetting_350TX = gSubMenuSelection;
break; break;
case MENU_F_LOCK: case MENU_F_LOCK:
gSetting_F_LOCK = gSubMenuSelection; gSetting_F_LOCK = gSubMenuSelection;
break; break;
case MENU_200TX: case MENU_200TX:
gSetting_200TX = gSubMenuSelection; gSetting_200TX = gSubMenuSelection;
break; break;
case MENU_500TX: case MENU_500TX:
gSetting_500TX = gSubMenuSelection; gSetting_500TX = gSubMenuSelection;
break; break;
case MENU_350EN: case MENU_350EN:
gSetting_350EN = gSubMenuSelection; gSetting_350EN = gSubMenuSelection;
gRequestSaveSettings = true; gRequestSaveSettings = true;
gVfoConfigureMode = VFO_CONFIGURE_RELOAD; gVfoConfigureMode = VFO_CONFIGURE_RELOAD;
gFlagResetVfos = true; gFlagResetVfos = true;
return; return;
case MENU_SCREN: case MENU_SCREN:
gSetting_ScrambleEnable = gSubMenuSelection; gSetting_ScrambleEnable = gSubMenuSelection;
gRequestSaveSettings = true; gRequestSaveSettings = true;
@ -697,7 +703,7 @@ void MENU_AcceptSetting(void)
gSetting_TX_EN = gSubMenuSelection; gSetting_TX_EN = gSubMenuSelection;
gRequestSaveSettings = true; gRequestSaveSettings = true;
return; return;
case MENU_F_CALI: case MENU_F_CALI:
gEeprom.BK4819_XTAL_FREQ_LOW = gSubMenuSelection; gEeprom.BK4819_XTAL_FREQ_LOW = gSubMenuSelection;
BK4819_WriteRegister(BK4819_REG_3B, 22656 + gEeprom.BK4819_XTAL_FREQ_LOW); BK4819_WriteRegister(BK4819_REG_3B, 22656 + gEeprom.BK4819_XTAL_FREQ_LOW);
@ -710,7 +716,7 @@ void MENU_AcceptSetting(void)
uint8_t VOLUME_GAIN; uint8_t VOLUME_GAIN;
uint8_t DAC_GAIN; uint8_t DAC_GAIN;
} __attribute__((packed)) Misc; } __attribute__((packed)) Misc;
// radio 1 .. 04 00 46 00 50 00 2C 0E // radio 1 .. 04 00 46 00 50 00 2C 0E
// radio 2 .. 05 00 46 00 50 00 2C 0E // radio 2 .. 05 00 46 00 50 00 2C 0E
EEPROM_ReadBuffer(0x1F88, &Misc, 8); EEPROM_ReadBuffer(0x1F88, &Misc, 8);
@ -718,7 +724,7 @@ void MENU_AcceptSetting(void)
EEPROM_WriteBuffer(0x1F88, &Misc); EEPROM_WriteBuffer(0x1F88, &Misc);
} }
return; return;
default: default:
return; return;
} }
@ -789,15 +795,15 @@ void MENU_ShowCurrentSetting(void)
case MENU_SQL: case MENU_SQL:
gSubMenuSelection = gEeprom.SQUELCH_LEVEL; gSubMenuSelection = gEeprom.SQUELCH_LEVEL;
break; break;
case MENU_STEP: case MENU_STEP:
gSubMenuSelection = gTxVfo->STEP_SETTING; gSubMenuSelection = gTxVfo->STEP_SETTING;
break; break;
case MENU_TXP: case MENU_TXP:
gSubMenuSelection = gTxVfo->OUTPUT_POWER; gSubMenuSelection = gTxVfo->OUTPUT_POWER;
break; break;
case MENU_R_DCS: case MENU_R_DCS:
switch (gTxVfo->ConfigRX.CodeType) switch (gTxVfo->ConfigRX.CodeType)
{ {
@ -812,15 +818,15 @@ void MENU_ShowCurrentSetting(void)
break; break;
} }
break; break;
case MENU_RESET: case MENU_RESET:
gSubMenuSelection = 0; gSubMenuSelection = 0;
break; break;
case MENU_R_CTCS: case MENU_R_CTCS:
gSubMenuSelection = (gTxVfo->ConfigRX.CodeType == CODE_TYPE_CONTINUOUS_TONE) ? gTxVfo->ConfigRX.Code + 1 : 0; gSubMenuSelection = (gTxVfo->ConfigRX.CodeType == CODE_TYPE_CONTINUOUS_TONE) ? gTxVfo->ConfigRX.Code + 1 : 0;
break; break;
case MENU_T_DCS: case MENU_T_DCS:
switch (gTxVfo->ConfigTX.CodeType) switch (gTxVfo->ConfigTX.CodeType)
{ {
@ -835,31 +841,31 @@ void MENU_ShowCurrentSetting(void)
break; break;
} }
break; break;
case MENU_T_CTCS: case MENU_T_CTCS:
gSubMenuSelection = (gTxVfo->ConfigTX.CodeType == CODE_TYPE_CONTINUOUS_TONE) ? gTxVfo->ConfigTX.Code + 1 : 0; gSubMenuSelection = (gTxVfo->ConfigTX.CodeType == CODE_TYPE_CONTINUOUS_TONE) ? gTxVfo->ConfigTX.Code + 1 : 0;
break; break;
case MENU_SFT_D: case MENU_SFT_D:
gSubMenuSelection = gTxVfo->TX_OFFSET_FREQUENCY_DIRECTION; gSubMenuSelection = gTxVfo->TX_OFFSET_FREQUENCY_DIRECTION;
break; break;
case MENU_OFFSET: case MENU_OFFSET:
gSubMenuSelection = gTxVfo->TX_OFFSET_FREQUENCY; gSubMenuSelection = gTxVfo->TX_OFFSET_FREQUENCY;
break; break;
case MENU_W_N: case MENU_W_N:
gSubMenuSelection = gTxVfo->CHANNEL_BANDWIDTH; gSubMenuSelection = gTxVfo->CHANNEL_BANDWIDTH;
break; break;
case MENU_SCR: case MENU_SCR:
gSubMenuSelection = gTxVfo->SCRAMBLING_TYPE; gSubMenuSelection = gTxVfo->SCRAMBLING_TYPE;
break; break;
case MENU_BCL: case MENU_BCL:
gSubMenuSelection = gTxVfo->BUSY_CHANNEL_LOCK; gSubMenuSelection = gTxVfo->BUSY_CHANNEL_LOCK;
break; break;
case MENU_MEM_CH: case MENU_MEM_CH:
#if 0 #if 0
gSubMenuSelection = gEeprom.MrChannel[0]; gSubMenuSelection = gEeprom.MrChannel[0];
@ -867,73 +873,73 @@ void MENU_ShowCurrentSetting(void)
gSubMenuSelection = gEeprom.MrChannel[gEeprom.TX_CHANNEL]; gSubMenuSelection = gEeprom.MrChannel[gEeprom.TX_CHANNEL];
#endif #endif
break; break;
case MENU_SAVE: case MENU_SAVE:
gSubMenuSelection = gEeprom.BATTERY_SAVE; gSubMenuSelection = gEeprom.BATTERY_SAVE;
break; break;
case MENU_VOX: case MENU_VOX:
gSubMenuSelection = gEeprom.VOX_SWITCH ? gEeprom.VOX_LEVEL + 1 : 0; gSubMenuSelection = gEeprom.VOX_SWITCH ? gEeprom.VOX_LEVEL + 1 : 0;
break; break;
case MENU_ABR: case MENU_ABR:
gSubMenuSelection = gEeprom.BACKLIGHT; gSubMenuSelection = gEeprom.BACKLIGHT;
break; break;
case MENU_TDR: case MENU_TDR:
gSubMenuSelection = gEeprom.DUAL_WATCH; gSubMenuSelection = gEeprom.DUAL_WATCH;
break; break;
case MENU_XB: case MENU_XB:
gSubMenuSelection = gEeprom.CROSS_BAND_RX_TX; gSubMenuSelection = gEeprom.CROSS_BAND_RX_TX;
break; break;
case MENU_BEEP: case MENU_BEEP:
gSubMenuSelection = gEeprom.BEEP_CONTROL; gSubMenuSelection = gEeprom.BEEP_CONTROL;
break; break;
case MENU_TOT: case MENU_TOT:
gSubMenuSelection = gEeprom.TX_TIMEOUT_TIMER; gSubMenuSelection = gEeprom.TX_TIMEOUT_TIMER;
break; break;
#ifdef ENABLE_VOICE #ifdef ENABLE_VOICE
case MENU_VOICE: case MENU_VOICE:
gSubMenuSelection = gEeprom.VOICE_PROMPT; gSubMenuSelection = gEeprom.VOICE_PROMPT;
break; break;
#endif #endif
case MENU_SC_REV: case MENU_SC_REV:
gSubMenuSelection = gEeprom.SCAN_RESUME_MODE; gSubMenuSelection = gEeprom.SCAN_RESUME_MODE;
break; break;
case MENU_MDF: case MENU_MDF:
gSubMenuSelection = gEeprom.CHANNEL_DISPLAY_MODE; gSubMenuSelection = gEeprom.CHANNEL_DISPLAY_MODE;
break; break;
case MENU_AUTOLK: case MENU_AUTOLK:
gSubMenuSelection = gEeprom.AUTO_KEYPAD_LOCK; gSubMenuSelection = gEeprom.AUTO_KEYPAD_LOCK;
break; break;
case MENU_S_ADD1: case MENU_S_ADD1:
gSubMenuSelection = gTxVfo->SCANLIST1_PARTICIPATION; gSubMenuSelection = gTxVfo->SCANLIST1_PARTICIPATION;
break; break;
case MENU_S_ADD2: case MENU_S_ADD2:
gSubMenuSelection = gTxVfo->SCANLIST2_PARTICIPATION; gSubMenuSelection = gTxVfo->SCANLIST2_PARTICIPATION;
break; break;
case MENU_STE: case MENU_STE:
gSubMenuSelection = gEeprom.TAIL_NOTE_ELIMINATION; gSubMenuSelection = gEeprom.TAIL_NOTE_ELIMINATION;
break; break;
case MENU_RP_STE: case MENU_RP_STE:
gSubMenuSelection = gEeprom.REPEATER_TAIL_TONE_ELIMINATION; gSubMenuSelection = gEeprom.REPEATER_TAIL_TONE_ELIMINATION;
break; break;
case MENU_MIC: case MENU_MIC:
gSubMenuSelection = gEeprom.MIC_SENSITIVITY; gSubMenuSelection = gEeprom.MIC_SENSITIVITY;
break; break;
#ifdef ENABLE_COMPANDER #ifdef ENABLE_COMPANDER
case MENU_COMPAND: case MENU_COMPAND:
gSubMenuSelection = gTxVfo->Compander; gSubMenuSelection = gTxVfo->Compander;
@ -943,53 +949,53 @@ void MENU_ShowCurrentSetting(void)
case MENU_1_CALL: case MENU_1_CALL:
gSubMenuSelection = gEeprom.CHAN_1_CALL; gSubMenuSelection = gEeprom.CHAN_1_CALL;
break; break;
case MENU_S_LIST: case MENU_S_LIST:
gSubMenuSelection = gEeprom.SCAN_LIST_DEFAULT + 1; gSubMenuSelection = gEeprom.SCAN_LIST_DEFAULT + 1;
break; break;
case MENU_SLIST1: case MENU_SLIST1:
gSubMenuSelection = RADIO_FindNextChannel(0, 1, true, 0); gSubMenuSelection = RADIO_FindNextChannel(0, 1, true, 0);
break; break;
case MENU_SLIST2: case MENU_SLIST2:
gSubMenuSelection = RADIO_FindNextChannel(0, 1, true, 1); gSubMenuSelection = RADIO_FindNextChannel(0, 1, true, 1);
break; break;
#ifdef ENABLE_ALARM #ifdef ENABLE_ALARM
case MENU_AL_MOD: case MENU_AL_MOD:
gSubMenuSelection = gEeprom.ALARM_MODE; gSubMenuSelection = gEeprom.ALARM_MODE;
break; break;
#endif #endif
case MENU_D_ST: case MENU_D_ST:
gSubMenuSelection = gEeprom.DTMF_SIDE_TONE; gSubMenuSelection = gEeprom.DTMF_SIDE_TONE;
break; break;
case MENU_D_RSP: case MENU_D_RSP:
gSubMenuSelection = gEeprom.DTMF_DECODE_RESPONSE; gSubMenuSelection = gEeprom.DTMF_DECODE_RESPONSE;
break; break;
case MENU_D_HOLD: case MENU_D_HOLD:
gSubMenuSelection = gEeprom.DTMF_AUTO_RESET_TIME; gSubMenuSelection = gEeprom.DTMF_AUTO_RESET_TIME;
break; break;
case MENU_D_PRE: case MENU_D_PRE:
gSubMenuSelection = gEeprom.DTMF_PRELOAD_TIME / 10; gSubMenuSelection = gEeprom.DTMF_PRELOAD_TIME / 10;
break; break;
case MENU_PTT_ID: case MENU_PTT_ID:
gSubMenuSelection = gTxVfo->DTMF_PTT_ID_TX_MODE; gSubMenuSelection = gTxVfo->DTMF_PTT_ID_TX_MODE;
break; break;
case MENU_D_DCD: case MENU_D_DCD:
gSubMenuSelection = gTxVfo->DTMF_DECODING_ENABLE; gSubMenuSelection = gTxVfo->DTMF_DECODING_ENABLE;
break; break;
case MENU_D_LIST: case MENU_D_LIST:
gSubMenuSelection = gDTMFChosenContact + 1; gSubMenuSelection = gDTMFChosenContact + 1;
break; break;
case MENU_D_LIVE_DEC: case MENU_D_LIVE_DEC:
gSubMenuSelection = gSetting_live_DTMF_decoder; gSubMenuSelection = gSetting_live_DTMF_decoder;
break; break;
@ -997,21 +1003,21 @@ void MENU_ShowCurrentSetting(void)
case MENU_PONMSG: case MENU_PONMSG:
gSubMenuSelection = gEeprom.POWER_ON_DISPLAY_MODE; gSubMenuSelection = gEeprom.POWER_ON_DISPLAY_MODE;
break; break;
case MENU_ROGER: case MENU_ROGER:
gSubMenuSelection = gEeprom.ROGER; gSubMenuSelection = gEeprom.ROGER;
break; break;
case MENU_AM: case MENU_AM:
gSubMenuSelection = gTxVfo->AM_CHANNEL_MODE; gSubMenuSelection = gTxVfo->AM_CHANNEL_MODE;
break; break;
#ifdef ENABLE_NOAA #ifdef ENABLE_NOAA
case MENU_NOAA_S: case MENU_NOAA_S:
gSubMenuSelection = gEeprom.NOAA_AUTO_SCAN; gSubMenuSelection = gEeprom.NOAA_AUTO_SCAN;
break; break;
#endif #endif
case MENU_DEL_CH: case MENU_DEL_CH:
#if 0 #if 0
gSubMenuSelection = RADIO_FindNextChannel(gEeprom.MrChannel[0], 1, false, 1); gSubMenuSelection = RADIO_FindNextChannel(gEeprom.MrChannel[0], 1, false, 1);
@ -1019,27 +1025,27 @@ void MENU_ShowCurrentSetting(void)
gSubMenuSelection = RADIO_FindNextChannel(gEeprom.MrChannel[gEeprom.TX_CHANNEL], 1, false, 1); gSubMenuSelection = RADIO_FindNextChannel(gEeprom.MrChannel[gEeprom.TX_CHANNEL], 1, false, 1);
#endif #endif
break; break;
case MENU_350TX: case MENU_350TX:
gSubMenuSelection = gSetting_350TX; gSubMenuSelection = gSetting_350TX;
break; break;
case MENU_F_LOCK: case MENU_F_LOCK:
gSubMenuSelection = gSetting_F_LOCK; gSubMenuSelection = gSetting_F_LOCK;
break; break;
case MENU_200TX: case MENU_200TX:
gSubMenuSelection = gSetting_200TX; gSubMenuSelection = gSetting_200TX;
break; break;
case MENU_500TX: case MENU_500TX:
gSubMenuSelection = gSetting_500TX; gSubMenuSelection = gSetting_500TX;
break; break;
case MENU_350EN: case MENU_350EN:
gSubMenuSelection = gSetting_350EN; gSubMenuSelection = gSetting_350EN;
break; break;
case MENU_SCREN: case MENU_SCREN:
gSubMenuSelection = gSetting_ScrambleEnable; gSubMenuSelection = gSetting_ScrambleEnable;
break; break;
@ -1047,7 +1053,7 @@ void MENU_ShowCurrentSetting(void)
case MENU_TX_EN: case MENU_TX_EN:
gSubMenuSelection = gSetting_TX_EN; gSubMenuSelection = gSetting_TX_EN;
break; break;
case MENU_F_CALI: case MENU_F_CALI:
gSubMenuSelection = gEeprom.BK4819_XTAL_FREQ_LOW; gSubMenuSelection = gEeprom.BK4819_XTAL_FREQ_LOW;
break; break;
@ -1132,7 +1138,7 @@ static void MENU_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
gRequestDisplayScreen = DISPLAY_MENU; gRequestDisplayScreen = DISPLAY_MENU;
return; return;
} }
gInputBoxIndex = 0; gInputBoxIndex = 0;
Value = ((gInputBox[0] * 100) + (gInputBox[1] * 10) + gInputBox[2]) - 1; Value = ((gInputBox[0] * 100) + (gInputBox[1] * 10) + gInputBox[2]) - 1;
@ -1167,7 +1173,7 @@ static void MENU_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
Value = (gInputBox[0] * 100) + (gInputBox[1] * 10) + gInputBox[2]; Value = (gInputBox[0] * 100) + (gInputBox[1] * 10) + gInputBox[2];
break; break;
} }
if (Offset == gInputBoxIndex) if (Offset == gInputBoxIndex)
gInputBoxIndex = 0; gInputBoxIndex = 0;
@ -1190,7 +1196,7 @@ static void MENU_Key_EXIT(bool bKeyPressed, bool bKeyHeld)
if (!bKeyHeld && bKeyPressed) if (!bKeyHeld && bKeyPressed)
{ {
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL; gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
if (gCssScanMode == CSS_SCAN_MODE_OFF) if (gCssScanMode == CSS_SCAN_MODE_OFF)
{ {
if (gIsInSubMenu) if (gIsInSubMenu)
@ -1236,14 +1242,14 @@ static void MENU_Key_MENU(bool bKeyPressed, bool bKeyHeld)
{ {
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL; gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
gRequestDisplayScreen = DISPLAY_MENU; gRequestDisplayScreen = DISPLAY_MENU;
if (!gIsInSubMenu) if (!gIsInSubMenu)
{ {
#ifdef ENABLE_VOICE #ifdef ENABLE_VOICE
if (gMenuCursor != MENU_SCR) if (gMenuCursor != MENU_SCR)
gAnotherVoiceID = MenuVoices[gMenuCursor]; gAnotherVoiceID = MenuVoices[gMenuCursor];
#endif #endif
gAskForConfirmation = 0; gAskForConfirmation = 0;
gIsInSubMenu = true; gIsInSubMenu = true;
} }
@ -1268,7 +1274,7 @@ static void MENU_Key_MENU(bool bKeyPressed, bool bKeyHeld)
AUDIO_PlaySingleVoice(true); AUDIO_PlaySingleVoice(true);
#endif #endif
MENU_AcceptSetting(); MENU_AcceptSetting();
#if defined(ENABLE_OVERLAY) #if defined(ENABLE_OVERLAY)
overlay_FLASH_RebootToBootloader(); overlay_FLASH_RebootToBootloader();
#else #else
@ -1286,10 +1292,10 @@ static void MENU_Key_MENU(bool bKeyPressed, bool bKeyHeld)
gFlagAcceptSetting = true; gFlagAcceptSetting = true;
gIsInSubMenu = false; gIsInSubMenu = false;
} }
gCssScanMode = CSS_SCAN_MODE_OFF; gCssScanMode = CSS_SCAN_MODE_OFF;
gUpdateStatus = true; gUpdateStatus = true;
#ifdef ENABLE_VOICE #ifdef ENABLE_VOICE
if (gMenuCursor == MENU_SCR) if (gMenuCursor == MENU_SCR)
gAnotherVoiceID = (gSubMenuSelection == 0) ? VOICE_ID_SCRAMBLER_OFF : VOICE_ID_SCRAMBLER_ON; gAnotherVoiceID = (gSubMenuSelection == 0) ? VOICE_ID_SCRAMBLER_OFF : VOICE_ID_SCRAMBLER_ON;

BIN
firmware

Binary file not shown.

Binary file not shown.

Binary file not shown.

223
ui/menu.c
View File

@ -308,6 +308,8 @@ void UI_DisplayMenu(void)
memset(String, 0, sizeof(String)); memset(String, 0, sizeof(String));
bool already_printed = false;
switch (gMenuCursor) switch (gMenuCursor)
{ {
case MENU_SQL: case MENU_SQL:
@ -356,20 +358,26 @@ void UI_DisplayMenu(void)
if (!gIsInSubMenu || gInputBoxIndex == 0) if (!gIsInSubMenu || gInputBoxIndex == 0)
{ {
sprintf(String, "%d.%05u", gSubMenuSelection / 100000, abs(gSubMenuSelection) % 100000); sprintf(String, "%d.%05u", gSubMenuSelection / 100000, abs(gSubMenuSelection) % 100000);
break; UI_PrintString(String, 50, 127, 1, 8);
}
else
{
for (i = 0; i < 3; i++)
String[i ] = (gInputBox[i] == 10) ? '-' : gInputBox[i] + '0';
String[3] = '.';
for (i = 3; i < 6; i++)
String[i + 1] = (gInputBox[i] == 10) ? '-' : gInputBox[i] + '0';
String[ 7] = '-';
String[ 8] = '-';
String[ 9] = 0;
String[10] = 0;
String[11] = 0;
UI_PrintString(String, 50, 127, 1, 8);
} }
for (i = 0; i < 3; i++) UI_PrintString("MHz", 50, 127, 3, 8);
String[i ] = (gInputBox[i] == 10) ? '-' : gInputBox[i] + '0';
String[3] = '.'; already_printed = true;
for (i = 3; i < 6; i++)
String[i + 1] = (gInputBox[i] == 10) ? '-' : gInputBox[i] + '0';
String[ 7] = '-';
String[ 8] = '-';
String[ 9] = 0;
String[10] = 0;
String[11] = 0;
break; break;
case MENU_W_N: case MENU_W_N:
@ -445,8 +453,10 @@ void UI_DisplayMenu(void)
case MENU_1_CALL: case MENU_1_CALL:
case MENU_DEL_CH: case MENU_DEL_CH:
UI_GenerateChannelStringEx(String, RADIO_CheckValidChannel(gSubMenuSelection, false, 0), gSubMenuSelection); UI_GenerateChannelStringEx(String, RADIO_CheckValidChannel(gSubMenuSelection, false, 0), gSubMenuSelection);
UI_PrintString(String, 50, 127, 0, 8);
already_printed = true;
break; break;
case MENU_SAVE: case MENU_SAVE:
strcpy(String, gSubMenu_SAVE[gSubMenuSelection]); strcpy(String, gSubMenu_SAVE[gSubMenuSelection]);
break; break;
@ -539,7 +549,22 @@ void UI_DisplayMenu(void)
break; break;
case MENU_VOL: case MENU_VOL:
// 1st text line
sprintf(String, "%u.%02uV", gBatteryVoltageAverage / 100, gBatteryVoltageAverage % 100); sprintf(String, "%u.%02uV", gBatteryVoltageAverage / 100, gBatteryVoltageAverage % 100);
UI_PrintString(String, 50, 127, 1, 8);
{ // 2nd text line .. percentage
UI_PrintString(String, 50, 127, 1, 8);
const uint16_t volts = (gBatteryVoltageAverage < gMin_bat_v) ? gMin_bat_v : gBatteryVoltageAverage;
sprintf(String, "%u%%", (100 * (volts - gMin_bat_v)) / (gMax_bat_v - gMin_bat_v));
UI_PrintString(String, 50, 127, 3, 8);
#if 0
sprintf(String, "Curr %u", gBatteryCurrent); // needs scaling into mA
UI_PrintString(String, 50, 127, 5, 8);
#endif
}
already_printed = true;
break; break;
case MENU_RESET: case MENU_RESET:
@ -552,91 +577,94 @@ void UI_DisplayMenu(void)
case MENU_F_CALI: case MENU_F_CALI:
{ {
const uint32_t value = 22656 + gSubMenuSelection;
//gEeprom.BK4819_XTAL_FREQ_LOW = gSubMenuSelection; // already set when the user was adjusting the value
BK4819_WriteRegister(BK4819_REG_3B, value);
sprintf(String, "%d", gSubMenuSelection); sprintf(String, "%d", gSubMenuSelection);
UI_PrintString(String, 50, 127, 0, 8); UI_PrintString(String, 50, 127, 0, 8);
const uint32_t value = 22656 + gSubMenuSelection;
//gEeprom.BK4819_XTAL_FREQ_LOW = gSubMenuSelection;
BK4819_WriteRegister(BK4819_REG_3B, value);
const uint32_t xtal_Hz = (0x4f0000u + value) * 5; const uint32_t xtal_Hz = (0x4f0000u + value) * 5;
sprintf(String, "%u.%06u", xtal_Hz / 1000000, xtal_Hz % 1000000); sprintf(String, "%u.%06u", xtal_Hz / 1000000, xtal_Hz % 1000000);
UI_PrintString(String, 50, 127, 2, 8); UI_PrintString(String, 50, 127, 2, 8);
UI_PrintString("MHz", 50, 127, 4, 8); UI_PrintString("MHz", 50, 127, 4, 8);
already_printed = true;
} }
break; break;
} }
if (gMenuCursor == MENU_AM) if (!already_printed)
{ // the radio doesn't really do AM
UI_PrintString(String, 50, 127, 1, 8);
#if 0
if (gSubMenuSelection > 0)
{
UI_PrintString("not", 50, 127, 3, 8);
UI_PrintString("really", 50, 127, 5, 8);
}
#endif
}
else
if (gMenuCursor == MENU_VOL)
{ // 2nd text line .. percentage
UI_PrintString(String, 50, 127, 1, 8);
const uint16_t volts = (gBatteryVoltageAverage < gMin_bat_v) ? gMin_bat_v :
(gBatteryVoltageAverage > gMax_bat_v) ? gMax_bat_v :
gBatteryVoltageAverage;
sprintf(String, "%u%%", (100 * (volts - gMin_bat_v)) / (gMax_bat_v - gMin_bat_v));
UI_PrintString(String, 50, 127, 3, 8);
#if 0
sprintf(String, "Curr %u", gBatteryCurrent); // needs scaling into mA
UI_PrintString(String, 50, 127, 5, 8);
#endif
}
else
if (gMenuCursor == MENU_OFFSET)
{
UI_PrintString(String, 50, 127, 1, 8);
UI_PrintString("MHz", 50, 127, 3, 8);
}
else
if (gMenuCursor != MENU_F_CALI)
{
UI_PrintString(String, 50, 127, 2, 8); UI_PrintString(String, 50, 127, 2, 8);
if (gMenuCursor == MENU_SLIST1 || gMenuCursor == MENU_SLIST2)
{
i = (gMenuCursor == MENU_SLIST1) ? 0 : 1;
// if (gSubMenuSelection == 0xFF)
if (gSubMenuSelection < 0)
strcpy(String, "NULL");
else
UI_GenerateChannelStringEx(String, true, gSubMenuSelection);
// if (gSubMenuSelection == 0xFF || !gEeprom.SCAN_LIST_ENABLED[i])
if (gSubMenuSelection < 0 || !gEeprom.SCAN_LIST_ENABLED[i])
{
UI_PrintString(String, 50, 127, 0, 8);
}
else
{
UI_PrintString(String, 50, 127, 0, 8);
if (IS_MR_CHANNEL(gEeprom.SCANLIST_PRIORITY_CH1[i]))
{
sprintf(String, "PRI1:%u", gEeprom.SCANLIST_PRIORITY_CH1[i] + 1);
UI_PrintString(String, 50, 127, 2, 8);
}
if (IS_MR_CHANNEL(gEeprom.SCANLIST_PRIORITY_CH2[i]))
{
sprintf(String, "PRI2:%u", gEeprom.SCANLIST_PRIORITY_CH2[i] + 1);
UI_PrintString(String, 50, 127, 4, 8);
}
}
} }
if ((gMenuCursor == MENU_RESET || gMenuCursor == MENU_MEM_CH || gMenuCursor == MENU_DEL_CH) && gAskForConfirmation) if (gMenuCursor == MENU_MEM_CH ||
{ // display confirmation gMenuCursor == MENU_DEL_CH ||
strcpy(String, (gAskForConfirmation == 1) ? "SURE?" : "WAIT!"); gMenuCursor == MENU_1_CALL ||
UI_PrintString(String, 50, 127, 4, 8); gMenuCursor == MENU_SLIST1 ||
} gMenuCursor == MENU_SLIST2)
else
if ((gMenuCursor == MENU_MEM_CH || gMenuCursor == MENU_DEL_CH) && !gAskForConfirmation)
{ // display the channel name { // display the channel name
const uint16_t channel = (uint16_t)gSubMenuSelection; if (gSubMenuSelection >= 0)
const bool valid = RADIO_CheckValidChannel(channel, false, 0); {
if (valid) const uint16_t channel = (uint16_t)gSubMenuSelection;
{ // 16 bytes allocated to the channel name but only 12 used const bool valid = RADIO_CheckValidChannel(channel, false, 0);
char s[17] = {0}; if (valid)
EEPROM_ReadBuffer(0x0F50 + (channel * 16), s + 0, 8); { // 16 bytes allocated to the channel name but only 12 used
EEPROM_ReadBuffer(0x0F58 + (channel * 16), s + 8, 2); char s[17] = {0};
{ // make invalid chars '0' EEPROM_ReadBuffer(0x0F50 + (channel * 16), s + 0, 8);
i = 0; EEPROM_ReadBuffer(0x0F58 + (channel * 16), s + 8, 2);
while (i < sizeof(s)) { // make invalid chars '0'
{ i = 0;
if (s[i] < 32 || s[i] >= 128) while (i < sizeof(s))
break; {
i++; if (s[i] < 32 || s[i] >= 128)
} break;
while (i < sizeof(s)) i++;
s[i++] = 0; }
while (--i > 0) while (i < sizeof(s))
{ s[i++] = 0;
if (s[i] != 0 && s[i] != 32) while (--i > 0)
break; {
s[i] = 0; if (s[i] != 0 && s[i] != 32)
break;
s[i] = 0;
}
} }
UI_PrintString(s, 50, 127, 2, 8);
} }
UI_PrintString(s, 50, 127, 4, 8);
} }
} }
@ -671,35 +699,10 @@ void UI_DisplayMenu(void)
UI_DisplaySmallDigits(Offset, String + (8 - Offset), 105, 0, false); UI_DisplaySmallDigits(Offset, String + (8 - Offset), 105, 0, false);
} }
if (gMenuCursor == MENU_SLIST1 || gMenuCursor == MENU_SLIST2) if ((gMenuCursor == MENU_RESET || gMenuCursor == MENU_MEM_CH || gMenuCursor == MENU_DEL_CH) && gAskForConfirmation)
{ { // display confirmation
i = gMenuCursor - MENU_SLIST1; strcpy(String, (gAskForConfirmation == 1) ? "SURE?" : "WAIT!");
UI_PrintString(String, 50, 127, 5, 8);
if (gSubMenuSelection == 0xFF)
strcpy(String, "NULL");
else
UI_GenerateChannelStringEx(String, true, gSubMenuSelection);
if (gSubMenuSelection == 0xFF || !gEeprom.SCAN_LIST_ENABLED[i])
{
UI_PrintString(String, 50, 127, 2, 8);
}
else
{
UI_PrintString(String, 50, 127, 0, 8);
if (IS_MR_CHANNEL(gEeprom.SCANLIST_PRIORITY_CH1[i]))
{
sprintf(String, "PRI1:%u", gEeprom.SCANLIST_PRIORITY_CH1[i] + 1);
UI_PrintString(String, 50, 127, 2, 8);
}
if (IS_MR_CHANNEL(gEeprom.SCANLIST_PRIORITY_CH2[i]))
{
sprintf(String, "PRI2:%u", gEeprom.SCANLIST_PRIORITY_CH2[i] + 1);
UI_PrintString(String, 50, 127, 4, 8);
}
}
} }
ST7565_BlitFullScreen(); ST7565_BlitFullScreen();