mirror of
https://github.com/OneOfEleven/uv-k5-firmware-custom.git
synced 2025-04-28 14:21:25 +03:00
Fixed WX/Cross-band display indicator, some menu renames
This commit is contained in:
parent
4dfa882770
commit
f436a84bd5
@ -74,6 +74,7 @@ static void ACTION_Monitor(void)
|
|||||||
|
|
||||||
RADIO_SetupRegisters(true);
|
RADIO_SetupRegisters(true);
|
||||||
APP_StartListening(FUNCTION_MONITOR);
|
APP_StartListening(FUNCTION_MONITOR);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,7 +89,7 @@ static void ACTION_Monitor(void)
|
|||||||
if (gEeprom.DUAL_WATCH == DUAL_WATCH_OFF && gIsNoaaMode)
|
if (gEeprom.DUAL_WATCH == DUAL_WATCH_OFF && gIsNoaaMode)
|
||||||
{
|
{
|
||||||
gNOAA_Countdown = 500;
|
gNOAA_Countdown = 500;
|
||||||
gScheduleNOAA = false;
|
gScheduleNOAA = false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -207,6 +208,7 @@ void ACTION_FM(void)
|
|||||||
if (gFmRadioMode)
|
if (gFmRadioMode)
|
||||||
{
|
{
|
||||||
FM_TurnOff();
|
FM_TurnOff();
|
||||||
|
|
||||||
gInputBoxIndex = 0;
|
gInputBoxIndex = 0;
|
||||||
gVoxResumeCountdown = 80;
|
gVoxResumeCountdown = 80;
|
||||||
gFlagReconfigureVfos = true;
|
gFlagReconfigureVfos = true;
|
||||||
@ -216,7 +218,9 @@ void ACTION_FM(void)
|
|||||||
|
|
||||||
RADIO_SelectVfos();
|
RADIO_SelectVfos();
|
||||||
RADIO_SetupRegisters(true);
|
RADIO_SetupRegisters(true);
|
||||||
|
|
||||||
FM_Start();
|
FM_Start();
|
||||||
|
|
||||||
gInputBoxIndex = 0;
|
gInputBoxIndex = 0;
|
||||||
gRequestDisplayScreen = DISPLAY_FM;
|
gRequestDisplayScreen = DISPLAY_FM;
|
||||||
}
|
}
|
||||||
@ -246,6 +250,7 @@ void ACTION_Handle(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
#ifndef DISABLE_VOICE
|
#ifndef DISABLE_VOICE
|
||||||
gAnotherVoiceID = VOICE_ID_CANCEL;
|
gAnotherVoiceID = VOICE_ID_CANCEL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
gRequestDisplayScreen = DISPLAY_MAIN;
|
gRequestDisplayScreen = DISPLAY_MAIN;
|
||||||
gDTMF_InputMode = false;
|
gDTMF_InputMode = false;
|
||||||
}
|
}
|
||||||
@ -286,6 +291,7 @@ void ACTION_Handle(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
switch (Short)
|
switch (Short)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
|
case ACTION_OPT_NONE:
|
||||||
break;
|
break;
|
||||||
case ACTION_OPT_FLASHLIGHT:
|
case ACTION_OPT_FLASHLIGHT:
|
||||||
ACTION_FlashLight();
|
ACTION_FlashLight();
|
||||||
|
42
app/app.c
42
app/app.c
@ -421,7 +421,6 @@ void APP_StartListening(FUNCTION_Type_t Function)
|
|||||||
|
|
||||||
#ifndef DISABLE_VOICE
|
#ifndef DISABLE_VOICE
|
||||||
if (gVoiceWriteIndex == 0)
|
if (gVoiceWriteIndex == 0)
|
||||||
// BK4819_SetAF(gRxVfo->IsAM ? BK4819_AF_AM : BK4819_AF_OPEN);
|
|
||||||
#endif
|
#endif
|
||||||
BK4819_SetAF(gRxVfo->IsAM ? BK4819_AF_AM : BK4819_AF_OPEN);
|
BK4819_SetAF(gRxVfo->IsAM ? BK4819_AF_AM : BK4819_AF_OPEN);
|
||||||
|
|
||||||
@ -685,7 +684,11 @@ static void APP_HandleVox(void)
|
|||||||
gVoxPauseCountdown = 0;
|
gVoxPauseCountdown = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gCurrentFunction != FUNCTION_RECEIVE && gCurrentFunction != FUNCTION_MONITOR && gScanState == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF && !gFmRadioMode)
|
if (gCurrentFunction != FUNCTION_RECEIVE &&
|
||||||
|
gCurrentFunction != FUNCTION_MONITOR &&
|
||||||
|
gScanState == SCAN_OFF &&
|
||||||
|
gCssScanMode == CSS_SCAN_MODE_OFF &&
|
||||||
|
!gFmRadioMode)
|
||||||
{
|
{
|
||||||
if (gVOX_NoiseDetected)
|
if (gVOX_NoiseDetected)
|
||||||
{
|
{
|
||||||
@ -704,6 +707,7 @@ static void APP_HandleVox(void)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
APP_EndTransmission();
|
APP_EndTransmission();
|
||||||
|
|
||||||
if (gEeprom.REPEATER_TAIL_TONE_ELIMINATION == 0)
|
if (gEeprom.REPEATER_TAIL_TONE_ELIMINATION == 0)
|
||||||
FUNCTION_Select(FUNCTION_FOREGROUND);
|
FUNCTION_Select(FUNCTION_FOREGROUND);
|
||||||
else
|
else
|
||||||
@ -727,7 +731,9 @@ static void APP_HandleVox(void)
|
|||||||
if (gCurrentFunction != FUNCTION_TRANSMIT)
|
if (gCurrentFunction != FUNCTION_TRANSMIT)
|
||||||
{
|
{
|
||||||
gDTMF_ReplyState = DTMF_REPLY_NONE;
|
gDTMF_ReplyState = DTMF_REPLY_NONE;
|
||||||
|
|
||||||
RADIO_PrepareTX();
|
RADIO_PrepareTX();
|
||||||
|
|
||||||
gUpdateDisplay = true;
|
gUpdateDisplay = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -749,9 +755,13 @@ void APP_Update(void)
|
|||||||
{
|
{
|
||||||
gTxTimeoutReached = false;
|
gTxTimeoutReached = false;
|
||||||
gFlagEndTransmission = true;
|
gFlagEndTransmission = true;
|
||||||
|
|
||||||
APP_EndTransmission();
|
APP_EndTransmission();
|
||||||
|
|
||||||
AUDIO_PlayBeep(BEEP_500HZ_60MS_DOUBLE_BEEP);
|
AUDIO_PlayBeep(BEEP_500HZ_60MS_DOUBLE_BEEP);
|
||||||
|
|
||||||
RADIO_SetVfoState(VFO_STATE_TIMEOUT);
|
RADIO_SetVfoState(VFO_STATE_TIMEOUT);
|
||||||
|
|
||||||
GUI_DisplayScreen();
|
GUI_DisplayScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -809,6 +819,7 @@ void APP_Update(void)
|
|||||||
{
|
{
|
||||||
NOAA_IncreaseChannel();
|
NOAA_IncreaseChannel();
|
||||||
RADIO_SetupRegisters(false);
|
RADIO_SetupRegisters(false);
|
||||||
|
|
||||||
gScheduleNOAA = false;
|
gScheduleNOAA = false;
|
||||||
gNOAA_Countdown = 7;
|
gNOAA_Countdown = 7;
|
||||||
}
|
}
|
||||||
@ -840,7 +851,11 @@ void APP_Update(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gFM_ScanState != FM_SCAN_OFF && gScheduleFM && gCurrentFunction != FUNCTION_MONITOR && gCurrentFunction != FUNCTION_RECEIVE && gCurrentFunction != FUNCTION_TRANSMIT)
|
if (gFM_ScanState != FM_SCAN_OFF &&
|
||||||
|
gScheduleFM &&
|
||||||
|
gCurrentFunction != FUNCTION_MONITOR &&
|
||||||
|
gCurrentFunction != FUNCTION_RECEIVE &&
|
||||||
|
gCurrentFunction != FUNCTION_TRANSMIT)
|
||||||
{
|
{
|
||||||
FM_Play();
|
FM_Play();
|
||||||
gScheduleFM = false;
|
gScheduleFM = false;
|
||||||
@ -852,7 +867,14 @@ void APP_Update(void)
|
|||||||
if (gSchedulePowerSave)
|
if (gSchedulePowerSave)
|
||||||
{
|
{
|
||||||
#ifndef DISABLE_NOAA
|
#ifndef DISABLE_NOAA
|
||||||
if (gEeprom.BATTERY_SAVE == 0 || gScanState != SCAN_OFF || gCssScanMode != CSS_SCAN_MODE_OFF || gFmRadioMode || gPttIsPressed || gScreenToDisplay != DISPLAY_MAIN || gKeyBeingHeld || gDTMF_CallState != DTMF_CALL_STATE_NONE)
|
if (gEeprom.BATTERY_SAVE == 0 ||
|
||||||
|
gScanState != SCAN_OFF ||
|
||||||
|
gCssScanMode != CSS_SCAN_MODE_OFF ||
|
||||||
|
gFmRadioMode ||
|
||||||
|
gPttIsPressed ||
|
||||||
|
gScreenToDisplay != DISPLAY_MAIN ||
|
||||||
|
gKeyBeingHeld ||
|
||||||
|
gDTMF_CallState != DTMF_CALL_STATE_NONE)
|
||||||
gBatterySaveCountdown = 1000;
|
gBatterySaveCountdown = 1000;
|
||||||
else
|
else
|
||||||
if ((IS_NOT_NOAA_CHANNEL(gEeprom.ScreenChannel[0]) && IS_NOT_NOAA_CHANNEL(gEeprom.ScreenChannel[1])) || !gIsNoaaMode)
|
if ((IS_NOT_NOAA_CHANNEL(gEeprom.ScreenChannel[0]) && IS_NOT_NOAA_CHANNEL(gEeprom.ScreenChannel[1])) || !gIsNoaaMode)
|
||||||
@ -860,7 +882,14 @@ void APP_Update(void)
|
|||||||
else
|
else
|
||||||
gBatterySaveCountdown = 1000;
|
gBatterySaveCountdown = 1000;
|
||||||
#else
|
#else
|
||||||
if (gEeprom.BATTERY_SAVE == 0 || gScanState != SCAN_OFF || gCssScanMode != CSS_SCAN_MODE_OFF || gFmRadioMode || gPttIsPressed || gScreenToDisplay != DISPLAY_MAIN || gKeyBeingHeld || gDTMF_CallState != DTMF_CALL_STATE_NONE)
|
if (gEeprom.BATTERY_SAVE == 0 ||
|
||||||
|
gScanState != SCAN_OFF ||
|
||||||
|
gCssScanMode != CSS_SCAN_MODE_OFF ||
|
||||||
|
gFmRadioMode ||
|
||||||
|
gPttIsPressed ||
|
||||||
|
gScreenToDisplay != DISPLAY_MAIN ||
|
||||||
|
gKeyBeingHeld ||
|
||||||
|
gDTMF_CallState != DTMF_CALL_STATE_NONE)
|
||||||
gBatterySaveCountdown = 1000;
|
gBatterySaveCountdown = 1000;
|
||||||
else
|
else
|
||||||
FUNCTION_Select(FUNCTION_POWER_SAVE);
|
FUNCTION_Select(FUNCTION_POWER_SAVE);
|
||||||
@ -889,6 +918,7 @@ void APP_Update(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
FUNCTION_Init();
|
FUNCTION_Init();
|
||||||
|
|
||||||
gBatterySave = 10;
|
gBatterySave = 10;
|
||||||
gRxIdleMode = false;
|
gRxIdleMode = false;
|
||||||
}
|
}
|
||||||
@ -923,7 +953,7 @@ void APP_Update(void)
|
|||||||
// called every 10ms
|
// called every 10ms
|
||||||
void APP_CheckKeys(void)
|
void APP_CheckKeys(void)
|
||||||
{
|
{
|
||||||
const uint16_t key_repeat_delay = 70; // 700ms
|
const uint16_t key_repeat_delay = 60; // 600ms
|
||||||
KEY_Code_t Key;
|
KEY_Code_t Key;
|
||||||
|
|
||||||
#ifndef DISABLE_AIRCOPY
|
#ifndef DISABLE_AIRCOPY
|
||||||
|
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
Binary file not shown.
194
functions.c
194
functions.c
@ -42,12 +42,7 @@ void FUNCTION_Init(void)
|
|||||||
{
|
{
|
||||||
gCurrentCodeType = gSelectedCodeType;
|
gCurrentCodeType = gSelectedCodeType;
|
||||||
if (gCssScanMode == CSS_SCAN_MODE_OFF)
|
if (gCssScanMode == CSS_SCAN_MODE_OFF)
|
||||||
{
|
gCurrentCodeType = gRxVfo->IsAM ? CODE_TYPE_OFF : gRxVfo->pRX->CodeType;
|
||||||
if (gRxVfo->IsAM)
|
|
||||||
gCurrentCodeType = CODE_TYPE_OFF;
|
|
||||||
else
|
|
||||||
gCurrentCodeType = gRxVfo->pRX->CodeType;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#ifndef DISABLE_NOAA
|
#ifndef DISABLE_NOAA
|
||||||
else
|
else
|
||||||
@ -77,108 +72,119 @@ void FUNCTION_Init(void)
|
|||||||
void FUNCTION_Select(FUNCTION_Type_t Function)
|
void FUNCTION_Select(FUNCTION_Type_t Function)
|
||||||
{
|
{
|
||||||
FUNCTION_Type_t PreviousFunction;
|
FUNCTION_Type_t PreviousFunction;
|
||||||
bool bWasPowerSave;
|
bool bWasPowerSave;
|
||||||
uint16_t Countdown = 0;
|
uint16_t Countdown = 0;
|
||||||
|
|
||||||
PreviousFunction = gCurrentFunction;
|
PreviousFunction = gCurrentFunction;
|
||||||
bWasPowerSave = (PreviousFunction == FUNCTION_POWER_SAVE);
|
bWasPowerSave = (PreviousFunction == FUNCTION_POWER_SAVE);
|
||||||
gCurrentFunction = Function;
|
gCurrentFunction = Function;
|
||||||
|
|
||||||
if (bWasPowerSave) {
|
if (bWasPowerSave)
|
||||||
if (Function != FUNCTION_POWER_SAVE) {
|
{
|
||||||
|
if (Function != FUNCTION_POWER_SAVE)
|
||||||
|
{
|
||||||
BK4819_Conditional_RX_TurnOn_and_GPIO6_Enable();
|
BK4819_Conditional_RX_TurnOn_and_GPIO6_Enable();
|
||||||
gRxIdleMode = false;
|
gRxIdleMode = false;
|
||||||
UI_DisplayStatus();
|
UI_DisplayStatus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (Function) {
|
switch (Function)
|
||||||
case FUNCTION_FOREGROUND:
|
{
|
||||||
if (gDTMF_ReplyState != DTMF_REPLY_NONE) {
|
case FUNCTION_FOREGROUND:
|
||||||
RADIO_PrepareCssTX();
|
if (gDTMF_ReplyState != DTMF_REPLY_NONE)
|
||||||
}
|
RADIO_PrepareCssTX();
|
||||||
if (PreviousFunction == FUNCTION_TRANSMIT) {
|
|
||||||
gVFO_RSSI_Level[0] = 0;
|
|
||||||
gVFO_RSSI_Level[1] = 0;
|
|
||||||
} else if (PreviousFunction == FUNCTION_RECEIVE) {
|
|
||||||
if (gFmRadioMode) {
|
|
||||||
Countdown = 500;
|
|
||||||
}
|
|
||||||
if (gDTMF_CallState == DTMF_CALL_STATE_CALL_OUT || gDTMF_CallState == DTMF_CALL_STATE_RECEIVED) {
|
|
||||||
gDTMF_AUTO_RESET_TIME = 1 + (gEeprom.DTMF_AUTO_RESET_TIME * 2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
|
|
||||||
case FUNCTION_MONITOR:
|
|
||||||
case FUNCTION_INCOMING:
|
|
||||||
case FUNCTION_RECEIVE:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FUNCTION_POWER_SAVE:
|
|
||||||
gBatterySave = gEeprom.BATTERY_SAVE * 10;
|
|
||||||
gRxIdleMode = true;
|
|
||||||
BK4819_DisableVox();
|
|
||||||
BK4819_Sleep();
|
|
||||||
BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2, false);
|
|
||||||
gBatterySaveCountdownExpired = false;
|
|
||||||
gUpdateStatus = true;
|
|
||||||
GUI_SelectNextDisplay(DISPLAY_MAIN);
|
|
||||||
return;
|
|
||||||
|
|
||||||
case FUNCTION_TRANSMIT:
|
|
||||||
if (gFmRadioMode)
|
|
||||||
BK1080_Init(0, false);
|
|
||||||
|
|
||||||
#ifndef DISABLE_ALARM
|
|
||||||
if (gAlarmState == ALARM_STATE_TXALARM && gEeprom.ALARM_MODE != ALARM_MODE_TONE)
|
|
||||||
{
|
|
||||||
gAlarmState = ALARM_STATE_ALARM;
|
|
||||||
GUI_DisplayScreen();
|
|
||||||
GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH);
|
|
||||||
SYSTEM_DelayMs(20);
|
|
||||||
BK4819_PlayTone(500, 0);
|
|
||||||
SYSTEM_DelayMs(2);
|
|
||||||
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH);
|
|
||||||
gEnableSpeaker = true;
|
|
||||||
SYSTEM_DelayMs(60);
|
|
||||||
BK4819_ExitTxMute();
|
|
||||||
gAlarmToneCounter = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
GUI_DisplayScreen();
|
|
||||||
RADIO_SetTxParameters();
|
|
||||||
BK4819_ToggleGpioOut(BK4819_GPIO1_PIN29_RED, true);
|
|
||||||
|
|
||||||
DTMF_Reply();
|
|
||||||
|
|
||||||
#ifndef DISABLE_ALARM
|
|
||||||
if (gAlarmState != ALARM_STATE_OFF)
|
|
||||||
{
|
|
||||||
if (gAlarmState == ALARM_STATE_TX1750)
|
|
||||||
BK4819_TransmitTone(true, 1750);
|
|
||||||
else
|
|
||||||
BK4819_TransmitTone(true, 500);
|
|
||||||
|
|
||||||
SYSTEM_DelayMs(2);
|
if (PreviousFunction == FUNCTION_TRANSMIT)
|
||||||
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH);
|
{
|
||||||
gAlarmToneCounter = 0;
|
gVFO_RSSI_Level[0] = 0;
|
||||||
gEnableSpeaker = true;
|
gVFO_RSSI_Level[1] = 0;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
#endif
|
else
|
||||||
|
if (PreviousFunction == FUNCTION_RECEIVE)
|
||||||
|
{
|
||||||
|
if (gFmRadioMode)
|
||||||
|
Countdown = 500;
|
||||||
|
|
||||||
|
if (gDTMF_CallState == DTMF_CALL_STATE_CALL_OUT || gDTMF_CallState == DTMF_CALL_STATE_RECEIVED)
|
||||||
|
gDTMF_AUTO_RESET_TIME = 1 + (gEeprom.DTMF_AUTO_RESET_TIME * 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
case FUNCTION_MONITOR:
|
||||||
|
case FUNCTION_INCOMING:
|
||||||
|
case FUNCTION_RECEIVE:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FUNCTION_POWER_SAVE:
|
||||||
|
gBatterySave = gEeprom.BATTERY_SAVE * 10;
|
||||||
|
gRxIdleMode = true;
|
||||||
|
|
||||||
|
BK4819_DisableVox();
|
||||||
|
BK4819_Sleep();
|
||||||
|
BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2, false);
|
||||||
|
|
||||||
|
gBatterySaveCountdownExpired = false;
|
||||||
|
gUpdateStatus = true;
|
||||||
|
|
||||||
|
GUI_SelectNextDisplay(DISPLAY_MAIN);
|
||||||
|
return;
|
||||||
|
|
||||||
|
case FUNCTION_TRANSMIT:
|
||||||
|
if (gFmRadioMode)
|
||||||
|
BK1080_Init(0, false);
|
||||||
|
|
||||||
|
#ifndef DISABLE_ALARM
|
||||||
|
if (gAlarmState == ALARM_STATE_TXALARM && gEeprom.ALARM_MODE != ALARM_MODE_TONE)
|
||||||
|
{
|
||||||
|
gAlarmState = ALARM_STATE_ALARM;
|
||||||
|
GUI_DisplayScreen();
|
||||||
|
GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH);
|
||||||
|
SYSTEM_DelayMs(20);
|
||||||
|
BK4819_PlayTone(500, 0);
|
||||||
|
SYSTEM_DelayMs(2);
|
||||||
|
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH);
|
||||||
|
gEnableSpeaker = true;
|
||||||
|
SYSTEM_DelayMs(60);
|
||||||
|
BK4819_ExitTxMute();
|
||||||
|
gAlarmToneCounter = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
GUI_DisplayScreen();
|
||||||
|
|
||||||
|
RADIO_SetTxParameters();
|
||||||
|
|
||||||
|
BK4819_ToggleGpioOut(BK4819_GPIO1_PIN29_RED, true);
|
||||||
|
|
||||||
|
DTMF_Reply();
|
||||||
|
|
||||||
|
#ifndef DISABLE_ALARM
|
||||||
|
if (gAlarmState != ALARM_STATE_OFF)
|
||||||
|
{
|
||||||
|
BK4819_TransmitTone(true, (gAlarmState == ALARM_STATE_TX1750) ? 1750 : 500);
|
||||||
|
|
||||||
if (gCurrentVfo->SCRAMBLING_TYPE && gSetting_ScrambleEnable)
|
SYSTEM_DelayMs(2);
|
||||||
BK4819_EnableScramble(gCurrentVfo->SCRAMBLING_TYPE - 1U);
|
|
||||||
else
|
|
||||||
BK4819_DisableScramble();
|
|
||||||
|
|
||||||
break;
|
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH);
|
||||||
|
|
||||||
|
gAlarmToneCounter = 0;
|
||||||
|
gEnableSpeaker = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (gCurrentVfo->SCRAMBLING_TYPE && gSetting_ScrambleEnable)
|
||||||
|
BK4819_EnableScramble(gCurrentVfo->SCRAMBLING_TYPE - 1U);
|
||||||
|
else
|
||||||
|
BK4819_DisableScramble();
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
gBatterySaveCountdown = 1000;
|
gBatterySaveCountdown = 1000;
|
||||||
gSchedulePowerSave = false;
|
gSchedulePowerSave = false;
|
||||||
gFM_RestoreCountdown = Countdown;
|
gFM_RestoreCountdown = Countdown;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,6 +74,9 @@ void BOOT_ProcessMode(BOOT_Mode_t Mode)
|
|||||||
#ifdef DISABLE_VOICE
|
#ifdef DISABLE_VOICE
|
||||||
gMenuListCount--;
|
gMenuListCount--;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef DISABLE_ALARM
|
||||||
|
gMenuListCount--;
|
||||||
|
#endif
|
||||||
#ifdef DISABLE_NOAA
|
#ifdef DISABLE_NOAA
|
||||||
gMenuListCount--;
|
gMenuListCount--;
|
||||||
#endif
|
#endif
|
||||||
|
@ -46,7 +46,7 @@ void UI_DisplayAircopy(void)
|
|||||||
{
|
{
|
||||||
NUMBER_ToDigits(gRxVfo->ConfigRX.Frequency, String);
|
NUMBER_ToDigits(gRxVfo->ConfigRX.Frequency, String);
|
||||||
UI_DisplayFrequency(String, 16, 2, 0, 0);
|
UI_DisplayFrequency(String, 16, 2, 0, 0);
|
||||||
UI_DisplaySmallDigits(2, String + 6, 97, 3);
|
UI_DisplaySmallDigits(2, String + 6, 97, 3, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
UI_DisplayFrequency(gInputBox, 16, 2, 1, 0);
|
UI_DisplayFrequency(gInputBox, 16, 2, 1, 0);
|
||||||
|
18
ui/helper.c
18
ui/helper.c
@ -217,11 +217,21 @@ void UI_DisplayFrequencySmall(const char *pDigits, uint8_t X, uint8_t Y, bool bD
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI_DisplaySmallDigits(uint8_t Size, const char *pString, uint8_t X, uint8_t Y)
|
void UI_DisplaySmallDigits(const uint8_t size, const char *str, const uint8_t x, const uint8_t y, const bool display_leading_zeros)
|
||||||
{
|
{
|
||||||
const unsigned int char_width = 7;
|
const unsigned int char_width = 7;
|
||||||
unsigned int x = X;
|
bool display = display_leading_zeros;
|
||||||
|
unsigned int xx;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
for (i = 0; i < Size; i++, x += char_width)
|
for (i = 0, xx = x; i < size; i++)
|
||||||
memcpy(gFrameBuffer[Y] + x, gFontSmallDigits[(unsigned int)pString[i]], char_width);
|
{
|
||||||
|
const unsigned int c = (unsigned int)str[i];
|
||||||
|
if (c > 0)
|
||||||
|
display = true;
|
||||||
|
if (display && c < ARRAY_SIZE(gFontSmallDigits))
|
||||||
|
{
|
||||||
|
memcpy(gFrameBuffer[y] + xx, gFontSmallDigits[c], char_width);
|
||||||
|
xx += char_width;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ 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);
|
void UI_PrintStringSmall(const char *pString, uint8_t Start, uint8_t End, uint8_t Line);
|
||||||
void UI_DisplayFrequency(const char *pDigits, uint8_t X, uint8_t Y, bool bDisplayLeadingZero, bool bFlag);
|
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_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);
|
void UI_DisplaySmallDigits(const uint8_t size, const char *str, const uint8_t x, const uint8_t y, const bool display_leading_zeros);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
15
ui/main.c
15
ui/main.c
@ -116,8 +116,9 @@ void UI_DisplayMain(void)
|
|||||||
// highlight the selected/used VFO with a marker
|
// highlight the selected/used VFO with a marker
|
||||||
if (!single_vfo && bIsSameVfo)
|
if (!single_vfo && bIsSameVfo)
|
||||||
memcpy(pLine0 + 2, BITMAP_VFO_Default, sizeof(BITMAP_VFO_Default));
|
memcpy(pLine0 + 2, BITMAP_VFO_Default, sizeof(BITMAP_VFO_Default));
|
||||||
//else
|
else
|
||||||
// memcpy(pLine0 + 2, BITMAP_VFO_NotDefault, sizeof(BITMAP_VFO_NotDefault));
|
if (gEeprom.CROSS_BAND_RX_TX != CROSS_BAND_OFF)
|
||||||
|
memcpy(pLine0 + 2, BITMAP_VFO_NotDefault, sizeof(BITMAP_VFO_NotDefault));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (!single_vfo)
|
if (!single_vfo)
|
||||||
@ -169,7 +170,7 @@ void UI_DisplayMain(void)
|
|||||||
NUMBER_ToDigits(gEeprom.ScreenChannel[vfo_num] + 1, String);
|
NUMBER_ToDigits(gEeprom.ScreenChannel[vfo_num] + 1, String);
|
||||||
else
|
else
|
||||||
memcpy(String + 5, gInputBox, 3);
|
memcpy(String + 5, gInputBox, 3);
|
||||||
UI_DisplaySmallDigits(3, String + 5, x + sizeof(BITMAP_M), Line + 1);
|
UI_DisplaySmallDigits(3, String + 5, x + sizeof(BITMAP_M), Line + 1, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (IS_FREQ_CHANNEL(gEeprom.ScreenChannel[vfo_num]))
|
if (IS_FREQ_CHANNEL(gEeprom.ScreenChannel[vfo_num]))
|
||||||
@ -179,7 +180,7 @@ void UI_DisplayMain(void)
|
|||||||
char c;
|
char c;
|
||||||
memcpy(pLine1 + x, BITMAP_FB, sizeof(BITMAP_FB));
|
memcpy(pLine1 + x, BITMAP_FB, sizeof(BITMAP_FB));
|
||||||
c = (gEeprom.ScreenChannel[vfo_num] - FREQ_CHANNEL_FIRST) + 1;
|
c = (gEeprom.ScreenChannel[vfo_num] - FREQ_CHANNEL_FIRST) + 1;
|
||||||
UI_DisplaySmallDigits(1, &c, x + sizeof(BITMAP_FB), Line + 1);
|
UI_DisplaySmallDigits(1, &c, x + sizeof(BITMAP_FB), Line + 1, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -195,7 +196,7 @@ void UI_DisplayMain(void)
|
|||||||
String[6] = gInputBox[0];
|
String[6] = gInputBox[0];
|
||||||
String[7] = gInputBox[1];
|
String[7] = gInputBox[1];
|
||||||
}
|
}
|
||||||
UI_DisplaySmallDigits(2, String + 6, 15, Line + 1);
|
UI_DisplaySmallDigits(2, String + 6, 15, Line + 1, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ************
|
// ************
|
||||||
@ -285,7 +286,7 @@ void UI_DisplayMain(void)
|
|||||||
// show the main large frequency digits
|
// show the main large frequency digits
|
||||||
UI_DisplayFrequency(String, 31, Line, false, false);
|
UI_DisplayFrequency(String, 31, Line, false, false);
|
||||||
// show the remaining 2 small frequency digits
|
// show the remaining 2 small frequency digits
|
||||||
UI_DisplaySmallDigits(2, String + 6, 112, Line + 1);
|
UI_DisplaySmallDigits(2, String + 6, 112, Line + 1, true);
|
||||||
#else
|
#else
|
||||||
// show the frequency in the main font
|
// show the frequency in the main font
|
||||||
sprintf(String, "%9.5f", frequency_Hz * 0.00001);
|
sprintf(String, "%9.5f", frequency_Hz * 0.00001);
|
||||||
@ -346,7 +347,7 @@ void UI_DisplayMain(void)
|
|||||||
// show the main large frequency digits
|
// show the main large frequency digits
|
||||||
UI_DisplayFrequency(String, 31, Line, false, false);
|
UI_DisplayFrequency(String, 31, Line, false, false);
|
||||||
// show the remaining 2 small frequency digits
|
// show the remaining 2 small frequency digits
|
||||||
UI_DisplaySmallDigits(2, String + 6, 112, Line + 1);
|
UI_DisplaySmallDigits(2, String + 6, 112, Line + 1, true);
|
||||||
#else
|
#else
|
||||||
// show the frequency in the main font
|
// show the frequency in the main font
|
||||||
sprintf(String, "%9.5f", frequency_Hz * 0.00001);
|
sprintf(String, "%9.5f", frequency_Hz * 0.00001);
|
||||||
|
40
ui/menu.c
40
ui/menu.c
@ -34,22 +34,22 @@ static const char MenuList[][7] =
|
|||||||
{
|
{
|
||||||
"SQL",
|
"SQL",
|
||||||
"STEP",
|
"STEP",
|
||||||
"TX-PWR",
|
"TX-PWR", // was "TXP"
|
||||||
"R_DCS",
|
"R-DCS", // was "R_DCS"
|
||||||
"R_CTCS",
|
"R-CTCS", // was "R_CTCS"
|
||||||
"T_DCS",
|
"T-DCS", // was "T_DCS"
|
||||||
"T_CTCS",
|
"T-CTCS", // was "T_CTCS"
|
||||||
"SFT-D",
|
"SFT-D",
|
||||||
"OFFSET",
|
"OFFSET",
|
||||||
"W/N",
|
"W/N",
|
||||||
"SCRAM",
|
"SCRAM", // was "SCR"
|
||||||
"BCL",
|
"BCL",
|
||||||
"MEM-CH",
|
"MEM-CH",
|
||||||
"B-SAVE",
|
"B-SAVE", // was "SAVE"
|
||||||
"VOX",
|
"VOX",
|
||||||
"BAK-LT",
|
"BAK-LT", // was "ABR"
|
||||||
"TDR",
|
"DUAL-W", // was "TDR"
|
||||||
"CROS-B",
|
"CROS-B", // was "WX"
|
||||||
"BEEP",
|
"BEEP",
|
||||||
"TOT",
|
"TOT",
|
||||||
#ifndef DISABLE_VOICE
|
#ifndef DISABLE_VOICE
|
||||||
@ -82,8 +82,8 @@ static const char MenuList[][7] =
|
|||||||
"D-LIST",
|
"D-LIST",
|
||||||
"PONMSG",
|
"PONMSG",
|
||||||
"ROGER",
|
"ROGER",
|
||||||
"BATVOL",
|
"BATVOL", // was "VOL"
|
||||||
"MODE",
|
"MODE", // was "AM"
|
||||||
#ifndef DISABLE_NOAA
|
#ifndef DISABLE_NOAA
|
||||||
"NOAA_S",
|
"NOAA_S",
|
||||||
#endif
|
#endif
|
||||||
@ -93,12 +93,12 @@ static const char MenuList[][7] =
|
|||||||
// normally hidden menu items from here on.
|
// normally hidden menu items from here on.
|
||||||
// enabled if pressing PTT and side button below PTT at power-on.
|
// enabled if pressing PTT and side button below PTT at power-on.
|
||||||
|
|
||||||
"350TX",
|
"350-TX", // was "350TX"
|
||||||
"F-LOCK",
|
"F-LOCK",
|
||||||
"200TX",
|
"200-TX", // was "200TX"
|
||||||
"500TX",
|
"500-TX", // was "500TX"
|
||||||
"350EN",
|
"350-EN", // was "350EN"
|
||||||
"SCREN"
|
"SCR-EN" // was "SCREN"
|
||||||
};
|
};
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
@ -293,7 +293,7 @@ void UI_DisplayMenu(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
NUMBER_ToDigits(gMenuCursor + 1, String);
|
NUMBER_ToDigits(gMenuCursor + 1, String);
|
||||||
UI_DisplaySmallDigits(2, String + 6, 33, 6);
|
UI_DisplaySmallDigits(2, String + 6, 33, 6, false);
|
||||||
|
|
||||||
if (gIsInSubMenu)
|
if (gIsInSubMenu)
|
||||||
memcpy(gFrameBuffer[0] + 50, BITMAP_CurrentIndicator, sizeof(BITMAP_CurrentIndicator));
|
memcpy(gFrameBuffer[0] + 50, BITMAP_CurrentIndicator, sizeof(BITMAP_CurrentIndicator));
|
||||||
@ -628,10 +628,10 @@ void UI_DisplayMenu(void)
|
|||||||
gMenuCursor == MENU_T_DCS ||
|
gMenuCursor == MENU_T_DCS ||
|
||||||
gMenuCursor == MENU_D_LIST)
|
gMenuCursor == MENU_D_LIST)
|
||||||
{
|
{
|
||||||
uint8_t Offset;
|
unsigned int Offset;
|
||||||
NUMBER_ToDigits((uint8_t)gSubMenuSelection, String);
|
NUMBER_ToDigits((uint8_t)gSubMenuSelection, String);
|
||||||
Offset = (gMenuCursor == MENU_D_LIST) ? 2 : 3;
|
Offset = (gMenuCursor == MENU_D_LIST) ? 2 : 3;
|
||||||
UI_DisplaySmallDigits(Offset, String + (8 - Offset), 105, 0);
|
UI_DisplaySmallDigits(Offset, String + (8 - Offset), 105, 0, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gMenuCursor == MENU_SLIST1 || gMenuCursor == MENU_SLIST2)
|
if (gMenuCursor == MENU_SLIST1 || gMenuCursor == MENU_SLIST2)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user