Fix #25: When you stop the scan with the PTT the Walkie stays in permanent TX
This commit is contained in:
11
app/app.c
11
app/app.c
@@ -1298,6 +1298,7 @@ void APP_CheckKeys(void)
|
||||
return;
|
||||
#endif
|
||||
|
||||
// -------------------- PTT ------------------------
|
||||
if (gPttIsPressed)
|
||||
{
|
||||
if (GPIO_CheckBit(&GPIOC->DATA, GPIOC_PIN_PTT) || gSerialConfigCountDown_500ms > 0)
|
||||
@@ -1313,8 +1314,7 @@ void APP_CheckKeys(void)
|
||||
else
|
||||
gPttDebounceCounter = 0;
|
||||
}
|
||||
else
|
||||
if (!GPIO_CheckBit(&GPIOC->DATA, GPIOC_PIN_PTT) && gSerialConfigCountDown_500ms == 0)
|
||||
else if (!GPIO_CheckBit(&GPIOC->DATA, GPIOC_PIN_PTT) && gSerialConfigCountDown_500ms == 0)
|
||||
{ // PTT pressed
|
||||
if (++gPttDebounceCounter >= 3) // 30ms
|
||||
{ // start transmitting
|
||||
@@ -2226,8 +2226,7 @@ static void APP_ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
if (gPttWasReleased)
|
||||
else if (gPttWasReleased)
|
||||
{
|
||||
if (bKeyHeld)
|
||||
bFlag = true;
|
||||
@@ -2331,6 +2330,7 @@ static void APP_ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
||||
switch (gScreenToDisplay)
|
||||
{
|
||||
case DISPLAY_MAIN:
|
||||
|
||||
MAIN_ProcessKeys(Key, bKeyPressed, bKeyHeld);
|
||||
// bKeyHeld = false; // allow the channel setting to be saved
|
||||
break;
|
||||
@@ -2369,8 +2369,7 @@ static void APP_ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
||||
{
|
||||
ACTION_Handle(Key, bKeyPressed, bKeyHeld);
|
||||
}
|
||||
else
|
||||
if (!bKeyHeld && bKeyPressed)
|
||||
else if (!bKeyHeld && bKeyPressed)
|
||||
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
||||
}
|
||||
|
||||
|
@@ -37,19 +37,19 @@ void GENERIC_Key_F(bool bKeyPressed, bool bKeyHeld)
|
||||
{
|
||||
if (gInputBoxIndex > 0)
|
||||
{
|
||||
if (!bKeyHeld && bKeyPressed)
|
||||
if (!bKeyHeld && bKeyPressed) // short pressed
|
||||
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
||||
return;
|
||||
}
|
||||
|
||||
if (bKeyHeld || !bKeyPressed)
|
||||
if (bKeyHeld || !bKeyPressed) // held or released
|
||||
{
|
||||
if (bKeyHeld || bKeyPressed)
|
||||
if (bKeyHeld || bKeyPressed) // held or pressed (cannot be held and not pressed I guess, so it checks only if HELD?)
|
||||
{
|
||||
if (!bKeyHeld)
|
||||
if (!bKeyHeld) // won't ever pass
|
||||
return;
|
||||
|
||||
if (!bKeyPressed)
|
||||
if (!bKeyPressed) // won't ever pass
|
||||
return;
|
||||
|
||||
if (gScreenToDisplay != DISPLAY_MENU &&
|
||||
@@ -65,7 +65,7 @@ void GENERIC_Key_F(bool bKeyPressed, bool bKeyHeld)
|
||||
gRequestSaveSettings = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
else // released
|
||||
{
|
||||
#ifdef ENABLE_FMRADIO
|
||||
if ((gFmRadioMode || gScreenToDisplay != DISPLAY_MAIN) && gScreenToDisplay != DISPLAY_FM)
|
||||
@@ -75,7 +75,7 @@ void GENERIC_Key_F(bool bKeyPressed, bool bKeyHeld)
|
||||
return;
|
||||
#endif
|
||||
|
||||
gWasFKeyPressed = !gWasFKeyPressed;
|
||||
gWasFKeyPressed = !gWasFKeyPressed; // toggle F function
|
||||
|
||||
if (gWasFKeyPressed)
|
||||
gKeyInputCountdown = key_input_timeout_500ms;
|
||||
@@ -88,7 +88,7 @@ void GENERIC_Key_F(bool bKeyPressed, bool bKeyHeld)
|
||||
gUpdateStatus = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
else // short pressed
|
||||
{
|
||||
if (gScreenToDisplay != DISPLAY_FM)
|
||||
{
|
||||
@@ -97,7 +97,7 @@ void GENERIC_Key_F(bool bKeyPressed, bool bKeyHeld)
|
||||
}
|
||||
|
||||
#ifdef ENABLE_FMRADIO
|
||||
if (gFM_ScanState == FM_SCAN_OFF)
|
||||
if (gFM_ScanState == FM_SCAN_OFF) // not scanning
|
||||
{
|
||||
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
||||
return;
|
||||
@@ -116,7 +116,6 @@ void GENERIC_Key_PTT(bool bKeyPressed)
|
||||
|
||||
if (!bKeyPressed || gSerialConfigCountDown_500ms > 0)
|
||||
{ // PTT released
|
||||
|
||||
if (gCurrentFunction == FUNCTION_TRANSMIT)
|
||||
{ // we are transmitting .. stop
|
||||
|
||||
@@ -255,7 +254,6 @@ start_tx:
|
||||
cancel_tx:
|
||||
if (gPttIsPressed)
|
||||
{
|
||||
gPttIsPressed = false;
|
||||
gPttWasPressed = true;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user