Make Flashlight optional
This commit is contained in:
committed by
Krzysiek Egzmont
parent
c76a96c3ad
commit
754d2ce5fb
7
Makefile
7
Makefile
@@ -20,6 +20,7 @@ ENABLE_ALARM := 0
|
|||||||
ENABLE_TX1750 := 0
|
ENABLE_TX1750 := 0
|
||||||
ENABLE_PWRON_PASSWORD := 0
|
ENABLE_PWRON_PASSWORD := 0
|
||||||
ENABLE_DTMF_CALLING := 1
|
ENABLE_DTMF_CALLING := 1
|
||||||
|
ENABLE_FLASHLIGHT := 1
|
||||||
|
|
||||||
# ---- CUSTOM MODS ----
|
# ---- CUSTOM MODS ----
|
||||||
ENABLE_BIG_FREQ := 1
|
ENABLE_BIG_FREQ := 1
|
||||||
@@ -113,6 +114,9 @@ OBJS += app/app.o
|
|||||||
OBJS += app/chFrScanner.o
|
OBJS += app/chFrScanner.o
|
||||||
OBJS += app/common.o
|
OBJS += app/common.o
|
||||||
OBJS += app/dtmf.o
|
OBJS += app/dtmf.o
|
||||||
|
ifeq ($(ENABLE_FLASHLIGHT),1)
|
||||||
|
OBJS += app/flashlight.o
|
||||||
|
endif
|
||||||
ifeq ($(ENABLE_FMRADIO),1)
|
ifeq ($(ENABLE_FMRADIO),1)
|
||||||
OBJS += app/fm.o
|
OBJS += app/fm.o
|
||||||
endif
|
endif
|
||||||
@@ -363,6 +367,9 @@ endif
|
|||||||
ifeq ($(ENABLE_AGC_SHOW_DATA),1)
|
ifeq ($(ENABLE_AGC_SHOW_DATA),1)
|
||||||
CFLAGS += -DENABLE_AGC_SHOW_DATA
|
CFLAGS += -DENABLE_AGC_SHOW_DATA
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(ENABLE_FLASHLIGHT),1)
|
||||||
|
CFLAGS += -DENABLE_FLASHLIGHT
|
||||||
|
endif
|
||||||
|
|
||||||
LDFLAGS =
|
LDFLAGS =
|
||||||
LDFLAGS += -z noexecstack -mcpu=cortex-m0 -nostartfiles -Wl,-T,firmware.ld -Wl,--gc-sections
|
LDFLAGS += -z noexecstack -mcpu=cortex-m0 -nostartfiles -Wl,-T,firmware.ld -Wl,--gc-sections
|
||||||
|
@@ -104,6 +104,7 @@ ENABLE_ALARM := 0 TX alarms
|
|||||||
ENABLE_TX1750 := 0 side key 1750Hz TX tone (older style repeater access)
|
ENABLE_TX1750 := 0 side key 1750Hz TX tone (older style repeater access)
|
||||||
ENABLE_PWRON_PASSWORD := 0 power-on password stuff
|
ENABLE_PWRON_PASSWORD := 0 power-on password stuff
|
||||||
ENABLE_DTMF_CALLING := 1 DTMF calling fuctionality, sending calls, receiving calls, group calls, contacts list etc.
|
ENABLE_DTMF_CALLING := 1 DTMF calling fuctionality, sending calls, receiving calls, group calls, contacts list etc.
|
||||||
|
ENABLE_FLASHLIGHT := 1 enable top flashlight LED (on, blink, SOS)
|
||||||
|
|
||||||
ENABLE_BIG_FREQ := 1 big font frequencies (like original QS firmware)
|
ENABLE_BIG_FREQ := 1 big font frequencies (like original QS firmware)
|
||||||
ENABLE_SMALL_BOLD := 1 bold channel name/no. (when name + freq channel display mode)
|
ENABLE_SMALL_BOLD := 1 bold channel name/no. (when name + freq channel display mode)
|
||||||
|
26
app/action.c
26
app/action.c
@@ -21,6 +21,9 @@
|
|||||||
#include "app/chFrScanner.h"
|
#include "app/chFrScanner.h"
|
||||||
#include "app/common.h"
|
#include "app/common.h"
|
||||||
#include "app/dtmf.h"
|
#include "app/dtmf.h"
|
||||||
|
#ifdef ENABLE_FLASHLIGHT
|
||||||
|
#include "app/flashlight.h"
|
||||||
|
#endif
|
||||||
#ifdef ENABLE_FMRADIO
|
#ifdef ENABLE_FMRADIO
|
||||||
#include "app/fm.h"
|
#include "app/fm.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -39,25 +42,6 @@
|
|||||||
#include "ui/inputbox.h"
|
#include "ui/inputbox.h"
|
||||||
#include "ui/ui.h"
|
#include "ui/ui.h"
|
||||||
|
|
||||||
static void ACTION_FlashLight(void)
|
|
||||||
{
|
|
||||||
switch (gFlashLightState)
|
|
||||||
{
|
|
||||||
case FLASHLIGHT_OFF:
|
|
||||||
gFlashLightState++;
|
|
||||||
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT);
|
|
||||||
break;
|
|
||||||
case FLASHLIGHT_ON:
|
|
||||||
case FLASHLIGHT_BLINK:
|
|
||||||
gFlashLightState++;
|
|
||||||
break;
|
|
||||||
case FLASHLIGHT_SOS:
|
|
||||||
default:
|
|
||||||
gFlashLightState = 0;
|
|
||||||
GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ACTION_Power(void)
|
void ACTION_Power(void)
|
||||||
{
|
{
|
||||||
if (++gTxVfo->OUTPUT_POWER > OUTPUT_POWER_HIGH)
|
if (++gTxVfo->OUTPUT_POWER > OUTPUT_POWER_HIGH)
|
||||||
@@ -399,8 +383,10 @@ void ACTION_Handle(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
case ACTION_OPT_NONE:
|
case ACTION_OPT_NONE:
|
||||||
break;
|
break;
|
||||||
case ACTION_OPT_FLASHLIGHT:
|
case ACTION_OPT_FLASHLIGHT:
|
||||||
|
#ifdef ENABLE_FLASHLIGHT
|
||||||
ACTION_FlashLight();
|
ACTION_FlashLight();
|
||||||
break;
|
#endif
|
||||||
|
break;
|
||||||
case ACTION_OPT_POWER:
|
case ACTION_OPT_POWER:
|
||||||
ACTION_Power();
|
ACTION_Power();
|
||||||
break;
|
break;
|
||||||
|
@@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
#include "driver/keyboard.h"
|
#include "driver/keyboard.h"
|
||||||
|
|
||||||
//static void ACTION_FlashLight(void)
|
|
||||||
void ACTION_Power(void);
|
void ACTION_Power(void);
|
||||||
void ACTION_Monitor(void);
|
void ACTION_Monitor(void);
|
||||||
void ACTION_Scan(bool bRestart);
|
void ACTION_Scan(bool bRestart);
|
||||||
@@ -41,4 +40,3 @@ void ACTION_BlminTmpOff(void);
|
|||||||
void ACTION_Handle(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld);
|
void ACTION_Handle(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
74
app/app.c
74
app/app.c
@@ -25,6 +25,9 @@
|
|||||||
#include "app/app.h"
|
#include "app/app.h"
|
||||||
#include "app/chFrScanner.h"
|
#include "app/chFrScanner.h"
|
||||||
#include "app/dtmf.h"
|
#include "app/dtmf.h"
|
||||||
|
#ifdef ENABLE_FLASHLIGHT
|
||||||
|
#include "app/flashlight.h"
|
||||||
|
#endif
|
||||||
#ifdef ENABLE_FMRADIO
|
#ifdef ENABLE_FMRADIO
|
||||||
#include "app/fm.h"
|
#include "app/fm.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -67,7 +70,8 @@
|
|||||||
#include "debugging.h"
|
#include "debugging.h"
|
||||||
|
|
||||||
static void ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld);
|
static void ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld);
|
||||||
static void FlashlightTimeSlice();
|
|
||||||
|
|
||||||
|
|
||||||
static void CheckForIncoming(void)
|
static void CheckForIncoming(void)
|
||||||
{
|
{
|
||||||
@@ -1142,10 +1146,10 @@ void APP_TimeSlice10ms(void)
|
|||||||
|
|
||||||
if (gCurrentFunction == FUNCTION_TRANSMIT)
|
if (gCurrentFunction == FUNCTION_TRANSMIT)
|
||||||
{ // transmitting
|
{ // transmitting
|
||||||
#ifdef ENABLE_AUDIO_BAR
|
#ifdef ENABLE_AUDIO_BAR
|
||||||
if (gSetting_mic_bar && (gFlashLightBlinkCounter % (150 / 10)) == 0) // once every 150ms
|
if (gSetting_mic_bar && (gFlashLightBlinkCounter % (150 / 10)) == 0) // once every 150ms
|
||||||
UI_DisplayAudioBar();
|
UI_DisplayAudioBar();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gUpdateDisplay)
|
if (gUpdateDisplay)
|
||||||
@@ -1159,20 +1163,22 @@ void APP_TimeSlice10ms(void)
|
|||||||
|
|
||||||
// Skipping authentic device checks
|
// Skipping authentic device checks
|
||||||
|
|
||||||
#ifdef ENABLE_FMRADIO
|
#ifdef ENABLE_FMRADIO
|
||||||
if (gFmRadioMode && gFmRadioCountdown_500ms > 0) // 1of11
|
if (gFmRadioMode && gFmRadioCountdown_500ms > 0) // 1of11
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_FLASHLIGHT
|
||||||
FlashlightTimeSlice();
|
FlashlightTimeSlice();
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_VOX
|
#ifdef ENABLE_VOX
|
||||||
if (gVoxResumeCountdown > 0)
|
if (gVoxResumeCountdown > 0)
|
||||||
gVoxResumeCountdown--;
|
gVoxResumeCountdown--;
|
||||||
|
|
||||||
if (gVoxPauseCountdown > 0)
|
if (gVoxPauseCountdown > 0)
|
||||||
gVoxPauseCountdown--;
|
gVoxPauseCountdown--;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (gCurrentFunction == FUNCTION_TRANSMIT)
|
if (gCurrentFunction == FUNCTION_TRANSMIT)
|
||||||
{
|
{
|
||||||
@@ -2036,41 +2042,3 @@ Skip:
|
|||||||
|
|
||||||
gUpdateDisplay = true;
|
gUpdateDisplay = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FlashlightTimeSlice()
|
|
||||||
{
|
|
||||||
if (gFlashLightState == FLASHLIGHT_BLINK && (gFlashLightBlinkCounter & 15u) == 0) {
|
|
||||||
GPIO_FlipBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gFlashLightState == FLASHLIGHT_SOS) {
|
|
||||||
const uint16_t u = 15;
|
|
||||||
static uint8_t c;
|
|
||||||
static uint16_t next;
|
|
||||||
|
|
||||||
if (gFlashLightBlinkCounter - next > 7 * u) {
|
|
||||||
c = 0;
|
|
||||||
next = gFlashLightBlinkCounter + 1;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gFlashLightBlinkCounter == next) {
|
|
||||||
if (c==0) {
|
|
||||||
GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT);
|
|
||||||
} else {
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
c++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
66
app/flashlight.c
Normal file
66
app/flashlight.c
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
#ifdef ENABLE_FLASHLIGHT
|
||||||
|
|
||||||
|
#include "driver/gpio.h"
|
||||||
|
#include "bsp/dp32g030/gpio.h"
|
||||||
|
|
||||||
|
#include "flashlight.h"
|
||||||
|
|
||||||
|
enum FlashlightMode_t gFlashLightState;
|
||||||
|
|
||||||
|
void FlashlightTimeSlice()
|
||||||
|
{
|
||||||
|
if (gFlashLightState == FLASHLIGHT_BLINK && (gFlashLightBlinkCounter & 15u) == 0) {
|
||||||
|
GPIO_FlipBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gFlashLightState == FLASHLIGHT_SOS) {
|
||||||
|
const uint16_t u = 15;
|
||||||
|
static uint8_t c;
|
||||||
|
static uint16_t next;
|
||||||
|
|
||||||
|
if (gFlashLightBlinkCounter - next > 7 * u) {
|
||||||
|
c = 0;
|
||||||
|
next = gFlashLightBlinkCounter + 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gFlashLightBlinkCounter == next) {
|
||||||
|
if (c==0) {
|
||||||
|
GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT);
|
||||||
|
} else {
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
c++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ACTION_FlashLight(void)
|
||||||
|
{
|
||||||
|
switch (gFlashLightState) {
|
||||||
|
case FLASHLIGHT_OFF:
|
||||||
|
gFlashLightState++;
|
||||||
|
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT);
|
||||||
|
break;
|
||||||
|
case FLASHLIGHT_ON:
|
||||||
|
case FLASHLIGHT_BLINK:
|
||||||
|
gFlashLightState++;
|
||||||
|
break;
|
||||||
|
case FLASHLIGHT_SOS:
|
||||||
|
default:
|
||||||
|
gFlashLightState = 0;
|
||||||
|
GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
23
app/flashlight.h
Normal file
23
app/flashlight.h
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#ifndef APP_FLASHLIGHT_H
|
||||||
|
#define APP_FLASHLIGHT_H
|
||||||
|
|
||||||
|
#ifdef ENABLE_FLASHLIGHT
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
enum FlashlightMode_t {
|
||||||
|
FLASHLIGHT_OFF = 0,
|
||||||
|
FLASHLIGHT_ON,
|
||||||
|
FLASHLIGHT_BLINK,
|
||||||
|
FLASHLIGHT_SOS
|
||||||
|
};
|
||||||
|
|
||||||
|
extern enum FlashlightMode_t gFlashLightState;
|
||||||
|
extern volatile uint16_t gFlashLightBlinkCounter;
|
||||||
|
|
||||||
|
void FlashlightTimeSlice(void);
|
||||||
|
void ACTION_FlashLight(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
3
misc.c
3
misc.c
@@ -199,9 +199,8 @@ bool g_CxCSS_TAIL_Found;
|
|||||||
#endif
|
#endif
|
||||||
bool g_SquelchLost;
|
bool g_SquelchLost;
|
||||||
|
|
||||||
enum FlashlightMode_t gFlashLightState;
|
|
||||||
|
|
||||||
volatile uint16_t gFlashLightBlinkCounter;
|
volatile uint16_t gFlashLightBlinkCounter;
|
||||||
|
|
||||||
bool gFlagEndTransmission;
|
bool gFlagEndTransmission;
|
||||||
uint8_t gNextMrChannel;
|
uint8_t gNextMrChannel;
|
||||||
ReceptionMode_t gRxReceptionMode;
|
ReceptionMode_t gRxReceptionMode;
|
||||||
|
10
misc.h
10
misc.h
@@ -47,13 +47,6 @@ enum {
|
|||||||
LAST_CHANNEL
|
LAST_CHANNEL
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FlashlightMode_t {
|
|
||||||
FLASHLIGHT_OFF = 0,
|
|
||||||
FLASHLIGHT_ON,
|
|
||||||
FLASHLIGHT_BLINK,
|
|
||||||
FLASHLIGHT_SOS
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
VFO_CONFIGURE_NONE = 0,
|
VFO_CONFIGURE_NONE = 0,
|
||||||
VFO_CONFIGURE,
|
VFO_CONFIGURE,
|
||||||
@@ -285,8 +278,9 @@ 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 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;
|
||||||
extern ReceptionMode_t gRxReceptionMode;
|
extern ReceptionMode_t gRxReceptionMode;
|
||||||
|
@@ -120,7 +120,7 @@ void SETTINGS_InitEEPROM(void)
|
|||||||
gEeprom.BEEP_CONTROL = Data[0] & 1;
|
gEeprom.BEEP_CONTROL = Data[0] & 1;
|
||||||
gEeprom.KEY_M_LONG_PRESS_ACTION = ((Data[0] >> 1) < ACTION_OPT_LEN) ? (Data[0] >> 1) : ACTION_OPT_NONE;
|
gEeprom.KEY_M_LONG_PRESS_ACTION = ((Data[0] >> 1) < ACTION_OPT_LEN) ? (Data[0] >> 1) : ACTION_OPT_NONE;
|
||||||
gEeprom.KEY_1_SHORT_PRESS_ACTION = (Data[1] < ACTION_OPT_LEN) ? Data[1] : ACTION_OPT_MONITOR;
|
gEeprom.KEY_1_SHORT_PRESS_ACTION = (Data[1] < ACTION_OPT_LEN) ? Data[1] : ACTION_OPT_MONITOR;
|
||||||
gEeprom.KEY_1_LONG_PRESS_ACTION = (Data[2] < ACTION_OPT_LEN) ? Data[2] : ACTION_OPT_FLASHLIGHT;
|
gEeprom.KEY_1_LONG_PRESS_ACTION = (Data[2] < ACTION_OPT_LEN) ? Data[2] : ACTION_OPT_NONE;
|
||||||
gEeprom.KEY_2_SHORT_PRESS_ACTION = (Data[3] < ACTION_OPT_LEN) ? Data[3] : ACTION_OPT_SCAN;
|
gEeprom.KEY_2_SHORT_PRESS_ACTION = (Data[3] < ACTION_OPT_LEN) ? Data[3] : ACTION_OPT_SCAN;
|
||||||
gEeprom.KEY_2_LONG_PRESS_ACTION = (Data[4] < ACTION_OPT_LEN) ? Data[4] : ACTION_OPT_NONE;
|
gEeprom.KEY_2_LONG_PRESS_ACTION = (Data[4] < ACTION_OPT_LEN) ? Data[4] : ACTION_OPT_NONE;
|
||||||
gEeprom.SCAN_RESUME_MODE = (Data[5] < 3) ? Data[5] : SCAN_RESUME_CO;
|
gEeprom.SCAN_RESUME_MODE = (Data[5] < 3) ? Data[5] : SCAN_RESUME_CO;
|
||||||
|
@@ -337,7 +337,9 @@ const char gSubMenu_SCRAMBLER[][7] =
|
|||||||
const t_sidefunction SIDEFUNCTIONS[] =
|
const t_sidefunction SIDEFUNCTIONS[] =
|
||||||
{
|
{
|
||||||
{"NONE", ACTION_OPT_NONE},
|
{"NONE", ACTION_OPT_NONE},
|
||||||
|
#ifdef ENABLE_FLASHLIGHT
|
||||||
{"FLASH\nLIGHT", ACTION_OPT_FLASHLIGHT},
|
{"FLASH\nLIGHT", ACTION_OPT_FLASHLIGHT},
|
||||||
|
#endif
|
||||||
{"POWER", ACTION_OPT_POWER},
|
{"POWER", ACTION_OPT_POWER},
|
||||||
{"MONITOR", ACTION_OPT_MONITOR},
|
{"MONITOR", ACTION_OPT_MONITOR},
|
||||||
{"SCAN", ACTION_OPT_SCAN},
|
{"SCAN", ACTION_OPT_SCAN},
|
||||||
|
Reference in New Issue
Block a user