Use enum for Flaslight & return early

This commit is contained in:
Juan Antonio 2023-12-04 18:50:41 +01:00 committed by Krzysiek Egzmont
parent bafe372cbc
commit 103bdf212f
4 changed files with 28 additions and 21 deletions

View File

@ -43,14 +43,15 @@ static void ACTION_FlashLight(void)
{ {
switch (gFlashLightState) switch (gFlashLightState)
{ {
case 0: case FLASHLIGHT_OFF:
gFlashLightState++; gFlashLightState++;
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT); GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT);
break; break;
case 1: case FLASHLIGHT_ON:
case 2: case FLASHLIGHT_BLINK:
gFlashLightState++; gFlashLightState++;
break; break;
case FLASHLIGHT_SOS:
default: default:
gFlashLightState = 0; gFlashLightState = 0;
GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT); GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT);

View File

@ -2045,33 +2045,37 @@ Skip:
static void FlashlightTimeSlice() static void FlashlightTimeSlice()
{ {
if (gFlashLightState == FLASHLIGHT_BLINK && (gFlashLightBlinkCounter & 15u) == 0) if (gFlashLightState == FLASHLIGHT_BLINK && (gFlashLightBlinkCounter & 15u) == 0) {
GPIO_FlipBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT); GPIO_FlipBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT);
else if(gFlashLightState == FLASHLIGHT_SOS) { return;
}
if (gFlashLightState == FLASHLIGHT_SOS) {
const uint16_t u = 15; const uint16_t u = 15;
static uint8_t c; static uint8_t c;
static uint16_t next; static uint16_t next;
if(gFlashLightBlinkCounter - next > 7*u) { if (gFlashLightBlinkCounter - next > 7 * u) {
c = 0; c = 0;
next = gFlashLightBlinkCounter + 1; next = gFlashLightBlinkCounter + 1;
return;
} }
else if(gFlashLightBlinkCounter == next) {
if(c==0) { if (gFlashLightBlinkCounter == next) {
if (c==0) {
GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT); GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT);
} } else {
else
GPIO_FlipBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT); GPIO_FlipBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT);
if(c >= 18) {
next = gFlashLightBlinkCounter + 7*u;
c = 0;
} }
else if(c==7 || c==9 || c==11)
next = gFlashLightBlinkCounter + 3*u;
else
next = gFlashLightBlinkCounter + u;
if (c >= 18) {
next = gFlashLightBlinkCounter + 7 * u;
c = 0;
} else if(c==7 || c==9 || c==11) {
next = gFlashLightBlinkCounter + 3 * u;
} else {
next = gFlashLightBlinkCounter + u;
}
c++; c++;
} }
} }

4
misc.c
View File

@ -198,7 +198,9 @@ bool g_CxCSS_TAIL_Found;
uint16_t gVoxPauseCountdown; uint16_t gVoxPauseCountdown;
#endif #endif
bool g_SquelchLost; bool g_SquelchLost;
uint8_t gFlashLightState;
enum FlashlightMode_t gFlashLightState;
volatile uint16_t gFlashLightBlinkCounter; volatile uint16_t gFlashLightBlinkCounter;
bool gFlagEndTransmission; bool gFlagEndTransmission;
uint8_t gNextMrChannel; uint8_t gNextMrChannel;

4
misc.h
View File

@ -47,7 +47,7 @@ enum {
LAST_CHANNEL LAST_CHANNEL
}; };
enum { enum FlashlightMode_t {
FLASHLIGHT_OFF = 0, FLASHLIGHT_OFF = 0,
FLASHLIGHT_ON, FLASHLIGHT_ON,
FLASHLIGHT_BLINK, FLASHLIGHT_BLINK,
@ -285,7 +285,7 @@ extern bool g_CxCSS_TAIL_Found;
// true means we are receiving signal // true means we are receiving signal
extern bool g_SquelchLost; extern bool g_SquelchLost;
extern uint8_t gFlashLightState; extern enum FlashlightMode_t gFlashLightState;
extern volatile uint16_t gFlashLightBlinkCounter; extern volatile uint16_t gFlashLightBlinkCounter;
extern bool gFlagEndTransmission; extern bool gFlagEndTransmission;
extern uint8_t gNextMrChannel; extern uint8_t gNextMrChannel;