This commit is contained in:
2
Makefile
2
Makefile
@@ -14,7 +14,7 @@ ENABLE_ALARM ?= 0
|
||||
ENABLE_TX1750 ?= 0
|
||||
ENABLE_PWRON_PASSWORD ?= 0
|
||||
ENABLE_DTMF_CALLING ?= 0
|
||||
ENABLE_FLASHLIGHT ?= 1
|
||||
ENABLE_FLASHLIGHT ?= 0
|
||||
|
||||
# ---- CUSTOM MODS ----
|
||||
ENABLE_SPECTRUM ?= 1
|
||||
|
@@ -29,10 +29,10 @@
|
||||
#include "app/chFrScanner.h"
|
||||
#include "app/dtmf.h"
|
||||
|
||||
#include "../ui/fmradio.h"
|
||||
#ifdef ENABLE_FLASHLIGHT
|
||||
|
||||
#include "app/flashlight.h"
|
||||
#include "../ui/fmradio.h"
|
||||
|
||||
#endif
|
||||
#ifdef ENABLE_FMRADIO
|
||||
|
167
app/fm.c
167
app/fm.c
@@ -31,6 +31,7 @@
|
||||
#include "settings.h"
|
||||
#include "ui/inputbox.h"
|
||||
#include "ui/ui.h"
|
||||
#include "driver/systick.h"
|
||||
|
||||
#ifndef ARRAY_SIZE
|
||||
#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
|
||||
@@ -48,7 +49,6 @@ bool gFM_AutoScan;
|
||||
uint16_t gFM_RestoreCountdown_10ms;
|
||||
|
||||
|
||||
|
||||
const uint8_t BUTTON_STATE_PRESSED = 1 << 0;
|
||||
const uint8_t BUTTON_STATE_HELD = 1 << 1;
|
||||
|
||||
@@ -60,15 +60,13 @@ const uint8_t BUTTON_EVENT_LONG = BUTTON_STATE_HELD;
|
||||
|
||||
static void Key_FUNC(KEY_Code_t Key, uint8_t state);
|
||||
|
||||
bool FM_CheckValidChannel(uint8_t Channel)
|
||||
{
|
||||
bool FM_CheckValidChannel(uint8_t Channel) {
|
||||
return Channel < ARRAY_SIZE(gFM_Channels) &&
|
||||
gFM_Channels[Channel] >= BK1080_GetFreqLoLimit(gEeprom.FM_Band) &&
|
||||
gFM_Channels[Channel] < BK1080_GetFreqHiLimit(gEeprom.FM_Band);
|
||||
}
|
||||
|
||||
uint8_t FM_FindNextChannel(uint8_t Channel, uint8_t Direction)
|
||||
{
|
||||
uint8_t FM_FindNextChannel(uint8_t Channel, uint8_t Direction) {
|
||||
for (unsigned i = 0; i < ARRAY_SIZE(gFM_Channels); i++) {
|
||||
if (Channel == 0xFF)
|
||||
Channel = ARRAY_SIZE(gFM_Channels) - 1;
|
||||
@@ -82,8 +80,7 @@ uint8_t FM_FindNextChannel(uint8_t Channel, uint8_t Direction)
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
int FM_ConfigureChannelState(void)
|
||||
{
|
||||
int FM_ConfigureChannelState(void) {
|
||||
gEeprom.FM_FrequencyPlaying = gEeprom.FM_SelectedFrequency;
|
||||
|
||||
if (gEeprom.FM_IsMrMode) {
|
||||
@@ -99,8 +96,7 @@ int FM_ConfigureChannelState(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void FM_TurnOff(void)
|
||||
{
|
||||
void FM_TurnOff(void) {
|
||||
gFmRadioMode = false;
|
||||
gFM_ScanState = FM_SCAN_OFF;
|
||||
gFM_RestoreCountdown_10ms = 0;
|
||||
@@ -118,8 +114,7 @@ void FM_TurnOff(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
void FM_EraseChannels(void)
|
||||
{
|
||||
void FM_EraseChannels(void) {
|
||||
uint8_t Template[8];
|
||||
memset(Template, 0xFF, sizeof(Template));
|
||||
|
||||
@@ -129,13 +124,13 @@ void FM_EraseChannels(void)
|
||||
memset(gFM_Channels, 0xFF, sizeof(gFM_Channels));
|
||||
}
|
||||
|
||||
void FM_Tune(uint16_t Frequency, int8_t Step, bool bFlag)
|
||||
{
|
||||
void FM_Tune(uint16_t Frequency, int8_t Step, bool bFlag) {
|
||||
AUDIO_AudioPathOff();
|
||||
|
||||
gEnableSpeaker = false;
|
||||
|
||||
gFmPlayCountdown_10ms = (gFM_ScanState == FM_SCAN_OFF) ? fm_play_countdown_noscan_10ms : fm_play_countdown_scan_10ms;
|
||||
gFmPlayCountdown_10ms = (gFM_ScanState == FM_SCAN_OFF) ? fm_play_countdown_noscan_10ms
|
||||
: fm_play_countdown_scan_10ms;
|
||||
|
||||
gScheduleFM = false;
|
||||
gFM_FoundFrequency = false;
|
||||
@@ -158,8 +153,7 @@ void FM_Tune(uint16_t Frequency, int8_t Step, bool bFlag)
|
||||
BK1080_SetFrequency(gEeprom.FM_FrequencyPlaying, gEeprom.FM_Band/*, gEeprom.FM_Space*/);
|
||||
}
|
||||
|
||||
void FM_PlayAndUpdate(void)
|
||||
{
|
||||
void FM_PlayAndUpdate(void) {
|
||||
gFM_ScanState = FM_SCAN_OFF;
|
||||
|
||||
if (gFM_AutoScan) {
|
||||
@@ -180,8 +174,7 @@ void FM_PlayAndUpdate(void)
|
||||
gEnableSpeaker = true;
|
||||
}
|
||||
|
||||
int FM_CheckFrequencyLock(uint16_t Frequency, uint16_t LowerLimit)
|
||||
{
|
||||
int FM_CheckFrequencyLock(uint16_t Frequency, uint16_t LowerLimit) {
|
||||
int ret = -1;
|
||||
|
||||
const uint16_t Test2 = BK1080_ReadRegister(BK1080_REG_07_TEST1);
|
||||
@@ -215,8 +208,7 @@ int FM_CheckFrequencyLock(uint16_t Frequency, uint16_t LowerLimit)
|
||||
|
||||
// not BLE(less than or equal)
|
||||
if (Frequency > LowerLimit && (Frequency - BK1080_BaseFrequency) == 1) {
|
||||
if (BK1080_FrequencyDeviation & 0x800 || (BK1080_FrequencyDeviation < 20))
|
||||
{
|
||||
if (BK1080_FrequencyDeviation & 0x800 || (BK1080_FrequencyDeviation < 20)) {
|
||||
BK1080_FrequencyDeviation = Deviation;
|
||||
BK1080_BaseFrequency = Frequency;
|
||||
|
||||
@@ -227,8 +219,7 @@ int FM_CheckFrequencyLock(uint16_t Frequency, uint16_t LowerLimit)
|
||||
// not BLT(less than)
|
||||
|
||||
if (Frequency >= LowerLimit && (BK1080_BaseFrequency - Frequency) == 1) {
|
||||
if ((BK1080_FrequencyDeviation & 0x800) == 0 || (BK1080_FrequencyDeviation > 4075))
|
||||
{
|
||||
if ((BK1080_FrequencyDeviation & 0x800) == 0 || (BK1080_FrequencyDeviation > 4075)) {
|
||||
BK1080_FrequencyDeviation = Deviation;
|
||||
BK1080_BaseFrequency = Frequency;
|
||||
|
||||
@@ -243,9 +234,10 @@ int FM_CheckFrequencyLock(uint16_t Frequency, uint16_t LowerLimit)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void Key_DIGITS(KEY_Code_t Key, uint8_t state)
|
||||
{
|
||||
enum { STATE_FREQ_MODE, STATE_MR_MODE, STATE_SAVE };
|
||||
static void Key_DIGITS(KEY_Code_t Key, uint8_t state) {
|
||||
enum {
|
||||
STATE_FREQ_MODE, STATE_MR_MODE, STATE_SAVE
|
||||
};
|
||||
|
||||
if (state == BUTTON_EVENT_SHORT && !gWasFKeyPressed) {
|
||||
uint8_t State;
|
||||
@@ -257,8 +249,7 @@ static void Key_DIGITS(KEY_Code_t Key, uint8_t state)
|
||||
|
||||
if (gAskToSave) {
|
||||
State = STATE_SAVE;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
if (gFM_ScanState != FM_SCAN_OFF) {
|
||||
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
||||
return;
|
||||
@@ -278,14 +269,14 @@ static void Key_DIGITS(KEY_Code_t Key, uint8_t state)
|
||||
gInputBox[0] = 0;
|
||||
gInputBoxIndex = 2;
|
||||
}
|
||||
}
|
||||
else if (gInputBoxIndex > 3) {
|
||||
} else if (gInputBoxIndex > 3) {
|
||||
uint32_t Frequency;
|
||||
|
||||
gInputBoxIndex = 0;
|
||||
Frequency = StrToUL(INPUTBOX_GetAscii());
|
||||
|
||||
if (Frequency < BK1080_GetFreqLoLimit(gEeprom.FM_Band) || BK1080_GetFreqHiLimit(gEeprom.FM_Band) < Frequency) {
|
||||
if (Frequency < BK1080_GetFreqLoLimit(gEeprom.FM_Band) ||
|
||||
BK1080_GetFreqHiLimit(gEeprom.FM_Band) < Frequency) {
|
||||
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
||||
gRequestDisplayScreen = DISPLAY_FM;
|
||||
return;
|
||||
@@ -300,8 +291,7 @@ static void Key_DIGITS(KEY_Code_t Key, uint8_t state)
|
||||
gRequestSaveFM = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (gInputBoxIndex == 2) {
|
||||
} else if (gInputBoxIndex == 2) {
|
||||
uint8_t Channel;
|
||||
|
||||
gInputBoxIndex = 0;
|
||||
@@ -318,8 +308,7 @@ static void Key_DIGITS(KEY_Code_t Key, uint8_t state)
|
||||
gRequestSaveFM = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (Channel < 20) {
|
||||
} else if (Channel < 20) {
|
||||
#ifdef ENABLE_VOICE
|
||||
gAnotherVoiceID = (VOICE_ID_t)Key;
|
||||
#endif
|
||||
@@ -336,13 +325,11 @@ static void Key_DIGITS(KEY_Code_t Key, uint8_t state)
|
||||
#ifdef ENABLE_VOICE
|
||||
gAnotherVoiceID = (VOICE_ID_t)Key;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
} else
|
||||
Key_FUNC(Key, state);
|
||||
}
|
||||
|
||||
static void Key_FUNC(KEY_Code_t Key, uint8_t state)
|
||||
{
|
||||
static void Key_FUNC(KEY_Code_t Key, uint8_t state) {
|
||||
if (state == BUTTON_EVENT_SHORT || state == BUTTON_EVENT_HELD) {
|
||||
bool autoScan = gWasFKeyPressed || (state == BUTTON_EVENT_HELD);
|
||||
|
||||
@@ -372,8 +359,7 @@ static void Key_FUNC(KEY_Code_t Key, uint8_t state)
|
||||
if (!FM_ConfigureChannelState()) {
|
||||
BK1080_SetFrequency(gEeprom.FM_FrequencyPlaying, gEeprom.FM_Band/*, gEeprom.FM_Space*/);
|
||||
gRequestSaveFM = true;
|
||||
}
|
||||
else
|
||||
} else
|
||||
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
||||
break;
|
||||
|
||||
@@ -398,6 +384,74 @@ static void Key_FUNC(KEY_Code_t Key, uint8_t state)
|
||||
gRequestSaveFM = true;
|
||||
break;
|
||||
|
||||
case KEY_7:
|
||||
BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2_GREEN, true);
|
||||
|
||||
// mask just in case
|
||||
uint32_t id24 = 0x00A38C;
|
||||
uint8_t btn = 0x04;
|
||||
uint8_t out[10];
|
||||
|
||||
// 3-byte big-endian ID
|
||||
out[0] = (id24 >> 16) & 0xFF;
|
||||
out[1] = (id24 >> 8) & 0xFF;
|
||||
out[2] = (id24 >> 0) & 0xFF;
|
||||
|
||||
// first nibble<6C>\redundancy copy: 0xBB if btn=0xB
|
||||
out[3] = (btn << 4) | 0x04;
|
||||
|
||||
// second copy with MSB flipped (btn ^ 0x8) in the high nibble
|
||||
out[4] = ((btn ^ 0x8) << 4);
|
||||
|
||||
BK4819_EnterTxMute();
|
||||
RADIO_SetTxParameters();
|
||||
|
||||
BK4819_WriteRegister(BK4819_REG_70, BK4819_REG_70_ENABLE_TONE1 |
|
||||
((127 & 0x7f) << BK4819_REG_70_SHIFT_TONE1_TUNING_GAIN));
|
||||
uint16_t datX = BK4819_REG_30_ENABLE_VCO_CALIB |
|
||||
BK4819_REG_30_ENABLE_UNKNOWN |
|
||||
BK4819_REG_30_DISABLE_RX_LINK |
|
||||
BK4819_REG_30_DISABLE_AF_DAC |
|
||||
BK4819_REG_30_ENABLE_DISC_MODE |
|
||||
BK4819_REG_30_ENABLE_PLL_VCO |
|
||||
BK4819_REG_30_ENABLE_PA_GAIN |
|
||||
BK4819_REG_30_DISABLE_MIC_ADC |
|
||||
BK4819_REG_30_ENABLE_TX_DSP |
|
||||
BK4819_REG_30_DISABLE_RX_DSP;
|
||||
BK4819_WriteRegister(BK4819_REG_30,
|
||||
datX);
|
||||
BK4819_ToggleGpioOut(BK4819_GPIO1_PIN29_PA_ENABLE, false);
|
||||
SYSTEM_DelayMs(20);
|
||||
|
||||
for (unsigned int x = 0; x < 24; x++) {
|
||||
for (unsigned int y = 0; y < sizeof(out); y++) {
|
||||
for (unsigned char i = 7; i < 8; i--) {
|
||||
if ((out[y] >> i) & 1) {
|
||||
// datX |= BK4819_REG_30_ENABLE_PA_GAIN;
|
||||
BK4819_ToggleGpioOut(BK4819_GPIO1_PIN29_PA_ENABLE, true);
|
||||
SYSTICK_DelayUs(400 * 3 - 350);
|
||||
BK4819_ToggleGpioOut(BK4819_GPIO1_PIN29_PA_ENABLE, false);
|
||||
// datX &= ~BK4819_REG_30_ENABLE_PA_GAIN;
|
||||
SYSTICK_DelayUs(400 * 1 - 350);
|
||||
} else {
|
||||
BK4819_ToggleGpioOut(BK4819_GPIO1_PIN29_PA_ENABLE, true);
|
||||
// datX |= BK4819_REG_30_ENABLE_PA_GAIN;
|
||||
SYSTICK_DelayUs(400 * 1 - 350);
|
||||
BK4819_ToggleGpioOut(BK4819_GPIO1_PIN29_PA_ENABLE, false);
|
||||
// datX &= ~BK4819_REG_30_ENABLE_PA_GAIN;
|
||||
SYSTICK_DelayUs(400 * 3 - 350);
|
||||
}
|
||||
}
|
||||
}
|
||||
BK4819_ToggleGpioOut(BK4819_GPIO1_PIN29_PA_ENABLE, false);
|
||||
SYSTEM_DelayMs(3);
|
||||
}
|
||||
BK4819_ToggleGpioOut(BK4819_GPIO1_PIN29_PA_ENABLE, false);
|
||||
SYSTEM_DelayMs(100);
|
||||
BK4819_WriteRegister(BK4819_REG_30, 0xC1FE);
|
||||
BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2_GREEN, false);
|
||||
break;
|
||||
|
||||
case KEY_STAR:
|
||||
ACTION_Scan(autoScan);
|
||||
break;
|
||||
@@ -409,8 +463,7 @@ static void Key_FUNC(KEY_Code_t Key, uint8_t state)
|
||||
}
|
||||
}
|
||||
|
||||
static void Key_EXIT(uint8_t state)
|
||||
{
|
||||
static void Key_EXIT(uint8_t state) {
|
||||
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
||||
|
||||
if (state == BUTTON_EVENT_SHORT) {
|
||||
@@ -426,8 +479,7 @@ static void Key_EXIT(uint8_t state)
|
||||
|
||||
gAskToSave = false;
|
||||
gAskToDelete = false;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
gInputBox[--gInputBoxIndex] = 10;
|
||||
|
||||
if (gInputBoxIndex) {
|
||||
@@ -447,8 +499,7 @@ static void Key_EXIT(uint8_t state)
|
||||
#ifdef ENABLE_VOICE
|
||||
gAnotherVoiceID = VOICE_ID_CANCEL;
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
FM_PlayAndUpdate();
|
||||
#ifdef ENABLE_VOICE
|
||||
gAnotherVoiceID = VOICE_ID_SCANNING_STOP;
|
||||
@@ -458,8 +509,7 @@ static void Key_EXIT(uint8_t state)
|
||||
gRequestDisplayScreen = DISPLAY_FM;
|
||||
}
|
||||
|
||||
static void Key_MENU(uint8_t state)
|
||||
{
|
||||
static void Key_MENU(uint8_t state) {
|
||||
if (state != BUTTON_EVENT_SHORT)
|
||||
return;
|
||||
|
||||
@@ -474,8 +524,7 @@ static void Key_MENU(uint8_t state)
|
||||
gRequestSaveFM = true;
|
||||
}
|
||||
gAskToSave = !gAskToSave;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
if (gAskToDelete) {
|
||||
gFM_Channels[gEeprom.FM_SelectedChannel] = 0xFFFF;
|
||||
|
||||
@@ -486,8 +535,7 @@ static void Key_MENU(uint8_t state)
|
||||
}
|
||||
gAskToDelete = !gAskToDelete;
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
if (gFM_AutoScan || !gFM_FoundFrequency) {
|
||||
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
||||
gInputBoxIndex = 0;
|
||||
@@ -502,8 +550,7 @@ static void Key_MENU(uint8_t state)
|
||||
}
|
||||
}
|
||||
|
||||
static void Key_UP_DOWN(uint8_t state, int8_t Step)
|
||||
{
|
||||
static void Key_UP_DOWN(uint8_t state, int8_t Step) {
|
||||
if (state == BUTTON_EVENT_PRESSED) {
|
||||
if (gInputBoxIndex) {
|
||||
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
||||
@@ -539,8 +586,7 @@ static void Key_UP_DOWN(uint8_t state, int8_t Step)
|
||||
|
||||
gEeprom.FM_SelectedChannel = Channel;
|
||||
gEeprom.FM_FrequencyPlaying = gFM_Channels[Channel];
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
uint16_t Frequency = gEeprom.FM_SelectedFrequency + Step;
|
||||
|
||||
if (Frequency < BK1080_GetFreqLoLimit(gEeprom.FM_Band))
|
||||
@@ -560,8 +606,7 @@ Bail:
|
||||
gRequestDisplayScreen = DISPLAY_FM;
|
||||
}
|
||||
|
||||
void FM_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
||||
{
|
||||
void FM_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) {
|
||||
uint8_t state = bKeyPressed + 2 * bKeyHeld;
|
||||
|
||||
switch (Key) {
|
||||
@@ -597,8 +642,7 @@ void FM_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
||||
GUI_DisplayScreen();
|
||||
}
|
||||
|
||||
void FM_Play(void)
|
||||
{
|
||||
void FM_Play(void) {
|
||||
if (!FM_CheckFrequencyLock(gEeprom.FM_FrequencyPlaying, BK1080_GetFreqLoLimit(gEeprom.FM_Band))) {
|
||||
if (!gFM_AutoScan) {
|
||||
gFmPlayCountdown_10ms = 0;
|
||||
@@ -632,8 +676,7 @@ void FM_Play(void)
|
||||
GUI_SelectNextDisplay(DISPLAY_FM);
|
||||
}
|
||||
|
||||
void FM_Start(void)
|
||||
{
|
||||
void FM_Start(void) {
|
||||
gDualWatchActive = false;
|
||||
gFmRadioMode = true;
|
||||
gFM_ScanState = FM_SCAN_OFF;
|
||||
|
@@ -30,8 +30,10 @@ typedef enum {
|
||||
|
||||
RXState rxState = Ready;
|
||||
|
||||
uint8_t SMSResponseCounterTarget = 6;
|
||||
|
||||
void FSKModem_TimeSlice500ms(void) {
|
||||
if (SMSResponseCounter && SMSResponseCounter++ > 6) {
|
||||
if (SMSResponseCounter && FUNCTION_IsRx() && SMSResponseCounter++ > SMSResponseCounterTarget) {
|
||||
switch (gSMSResponseState) {
|
||||
case SMS_RESPONSE_ACK:
|
||||
MSG_FSKSendData(&inBoundPacket);
|
||||
|
14
radio.c
14
radio.c
@@ -235,7 +235,7 @@ void RADIO_ConfigureChannel(const unsigned int VFO, const unsigned int configure
|
||||
|
||||
if (configure == VFO_CONFIGURE_RELOAD || IS_FREQ_CHANNEL(channel)) {
|
||||
uint8_t tmp;
|
||||
uint8_t data[10];
|
||||
uint8_t data[8];
|
||||
|
||||
// ***************
|
||||
|
||||
@@ -256,12 +256,6 @@ void RADIO_ConfigureChannel(const unsigned int VFO, const unsigned int configure
|
||||
pVfo->STEP_SETTING = tmp;
|
||||
pVfo->StepFrequency = gStepFrequencyTable[tmp];
|
||||
|
||||
tmp = data[8];
|
||||
pVfo->SCRAMBLING_TYPE = tmp ;
|
||||
tmp = data[9];
|
||||
pVfo->SCRAMBLING_TYPE |= tmp << 8;
|
||||
//pVfo->SCRAMBLING_TYPE = 0;
|
||||
|
||||
pVfo->freq_config_RX.CodeType = (data[2] >> 0) & 0x0F;
|
||||
pVfo->freq_config_TX.CodeType = (data[2] >> 4) & 0x0F;
|
||||
|
||||
@@ -335,6 +329,12 @@ void RADIO_ConfigureChannel(const unsigned int VFO, const unsigned int configure
|
||||
|
||||
// ***************
|
||||
|
||||
EEPROM_ReadBuffer(base + 16, data, sizeof(data));
|
||||
|
||||
uint16_t * data16 = (uint16_t *)data;
|
||||
|
||||
pVfo->SCRAMBLING_TYPE = data16[0];
|
||||
|
||||
struct {
|
||||
uint32_t Frequency;
|
||||
uint32_t Offset;
|
||||
|
@@ -798,12 +798,12 @@ void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO,
|
||||
#endif
|
||||
;
|
||||
State._8[6] = pVFO->STEP_SETTING;
|
||||
EEPROM_WriteBuffer(OffsetVFO + sizeof (State._32), State._8);
|
||||
|
||||
State._16[0] = pVFO->SCRAMBLING_TYPE;
|
||||
|
||||
EEPROM_WriteBuffer(OffsetVFO + sizeof (State._32), State._8);
|
||||
EEPROM_WriteBuffer(OffsetVFO + sizeof (State._32) + sizeof (State._8), State._16);
|
||||
|
||||
|
||||
SETTINGS_UpdateChannel(Channel, pVFO, true, true, true);
|
||||
|
||||
if (IS_MR_CHANNEL(Channel)) {
|
||||
|
14
ui/status.c
14
ui/status.c
@@ -54,6 +54,17 @@ static void convertTime(uint8_t *line, uint8_t type)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//static const char* const FunctionStrings[] = {
|
||||
// [FUNCTION_FOREGROUND] = "FG",
|
||||
// [FUNCTION_TRANSMIT] = "TX",
|
||||
// [FUNCTION_MONITOR] = "MON",
|
||||
// [FUNCTION_INCOMING] = "INC",
|
||||
// [FUNCTION_RECEIVE] = "RX",
|
||||
// [FUNCTION_POWER_SAVE] = "PWS",
|
||||
// [FUNCTION_BAND_SCOPE] = "BS",
|
||||
// [FUNCTION_N_ELEM] = "NE"
|
||||
//};
|
||||
|
||||
void UI_DisplayStatus()
|
||||
{
|
||||
char str[8] = "";
|
||||
@@ -276,5 +287,8 @@ void UI_DisplayStatus()
|
||||
|
||||
// **************
|
||||
|
||||
// x2 -= (7 * strlen(str));
|
||||
// UI_PrintStringSmallBufferNormal(FunctionStrings[gCurrentFunction], line + x2 - 20);
|
||||
|
||||
ST7565_BlitStatusLine();
|
||||
}
|
||||
|
Reference in New Issue
Block a user