0
mirror of https://github.com/OneOfEleven/uv-k5-firmware-custom.git synced 2025-04-28 06:11:24 +03:00

DTMF adjustments

This commit is contained in:
OneOfEleven 2023-09-18 00:48:40 +01:00
parent 66afde980a
commit 6cdd8f35b1
16 changed files with 278 additions and 111 deletions

View File

@ -311,8 +311,7 @@ void DTMF_Reply(void)
pString = gDTMF_String;
}
else
{
// append out ID code onto the end of the DTMF code to send
{ // append our ID code onto the end of the DTMF code to send
sprintf(String, "%s%c%s", gDTMF_String, gEeprom.DTMF_SEPARATE_CODE, gEeprom.ANI_DTMF_ID);
pString = String;
}

View File

@ -187,12 +187,16 @@ void GENERIC_Key_PTT(bool bKeyPressed)
gDTMF_InputBox[gDTMF_InputIndex] = 0;
#if 0
// append our DTMF ID to the inputted DTMF code -
// IF the user inputted code is exactly 3 digits long
if (gDTMF_InputIndex == 3)
gDTMF_CallMode = DTMF_CheckGroupCall(gDTMF_InputBox, 3); // this will cause our ID tobe appened to the DTMF code
gDTMF_CallMode = DTMF_CheckGroupCall(gDTMF_InputBox, 3);
else
#else
// append our DTMF ID to the inputted DTMF code -
// IF the user inputted code is exactly 3 digits long and D-DCD is enabled
if (gDTMF_InputIndex == 3 && gTxVfo->DTMF_DECODING_ENABLE > 0)
gDTMF_CallMode = DTMF_CheckGroupCall(gDTMF_InputBox, 3); // this will cause our ID tobe appened to the DTMF code
gDTMF_CallMode = DTMF_CheckGroupCall(gDTMF_InputBox, 3);
else
#endif
gDTMF_CallMode = DTMF_CALL_MODE_DTMF;

View File

@ -175,6 +175,33 @@ static void processFKeyFunction(const KEY_Code_t Key, const bool beep)
}
gRequestSaveVFO = true;
gVfoConfigureMode = VFO_CONFIGURE_RELOAD;
#else
// TODO: FIX ME .. not working for VFO, works for channel
switch (gTxVfo->CHANNEL_BANDWIDTH)
{
case BANDWIDTH_WIDE:
gTxVfo->CHANNEL_BANDWIDTH = BANDWIDTH_NARROW;
break;
default:
case BANDWIDTH_NARROW:
gTxVfo->CHANNEL_BANDWIDTH = BANDWIDTH_WIDE;
break;
}
if (IS_MR_CHANNEL(gTxVfo->CHANNEL_SAVE))
{
gRequestSaveChannel = 2;
}
else
// if (IS_FREQ_CHANNEL(gTxVfo->CHANNEL_SAVE))
{
gRequestSaveVFO = true;
gVfoConfigureMode = VFO_CONFIGURE_RELOAD;
}
BK4819_SetFilterBandwidth(gTxVfo->CHANNEL_BANDWIDTH);
gUpdateDisplay = true;
gRequestDisplayScreen = gScreenToDisplay;
#endif
break;

View File

@ -170,22 +170,22 @@ typedef enum BK4819_GPIO_PIN_t BK4819_GPIO_PIN_t;
// REG 24
#define BK4819_REG_24_SHIFT_UNKNOWN_15 15
#define BK4819_REG_24_SHIFT_THRESHOLD 7
#define BK4819_REG_24_SHIFT_UNKNOWN_6 6
#define BK4819_REG_24_SHIFT_ENABLE 5
#define BK4819_REG_24_SHIFT_SELECT 4
#define BK4819_REG_24_SHIFT_MAX_SYMBOLS 0
#define BK4819_REG_24_SHIFT_UNKNOWN_15 15
#define BK4819_REG_24_SHIFT_THRESHOLD 7
#define BK4819_REG_24_SHIFT_UNKNOWN_6 6
#define BK4819_REG_24_SHIFT_ENABLE 5
#define BK4819_REG_24_SHIFT_SELECT 4
#define BK4819_REG_24_SHIFT_MAX_SYMBOLS 0
#define BK4819_REG_24_MASK_THRESHOLD (0x2FU << BK4819_REG_24_SHIFT_THRESHOLD)
#define BK4819_REG_24_MASK_ENABLE (0x01U << BK4819_REG_24_SHIFT_ENABLE)
#define BK4819_REG_24_MASK_SELECT (0x04U << BK4819_REG_24_SHIFT_SELECT)
#define BK4819_REG_24_MASK_MAX_SYMBOLS (0x0FU << BK4819_REG_24_SHIFT_MAX_SYMBOLS)
#define BK4819_REG_24_MASK_THRESHOLD (0x2Fu << BK4819_REG_24_SHIFT_THRESHOLD)
#define BK4819_REG_24_MASK_ENABLE (0x01u << BK4819_REG_24_SHIFT_ENABLE)
#define BK4819_REG_24_MASK_SELECT (0x04u << BK4819_REG_24_SHIFT_SELECT)
#define BK4819_REG_24_MASK_MAX_SYMBOLS (0x0Fu << BK4819_REG_24_SHIFT_MAX_SYMBOLS)
#define BK4819_REG_24_ENABLE (0x01U << BK4819_REG_24_SHIFT_ENABLE)
#define BK4819_REG_24_DISABLE (0x00U << BK4819_REG_24_SHIFT_ENABLE)
#define BK4819_REG_24_SELECT_DTMF (0x01U << BK4819_REG_24_SHIFT_SELECT)
#define BK4819_REG_24_SELECT_SELCALL (0x00U << BK4819_REG_24_SHIFT_SELECT)
#define BK4819_REG_24_ENABLE (1u << BK4819_REG_24_SHIFT_ENABLE)
#define BK4819_REG_24_DISABLE (0u << BK4819_REG_24_SHIFT_ENABLE)
#define BK4819_REG_24_SELECT_DTMF (1u << BK4819_REG_24_SHIFT_SELECT)
#define BK4819_REG_24_SELECT_SELCALL (0u << BK4819_REG_24_SHIFT_SELECT)
// REG 30

View File

@ -23,6 +23,10 @@
#include "driver/system.h"
#include "driver/systick.h"
#ifndef ARRAY_SIZE
#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
#endif
static const uint16_t FSK_RogerTable[7] = {0xF1A2, 0x7446, 0x61A4, 0x6544, 0x4E8A, 0xE044, 0xEA84};
static uint16_t gBK4819_GpioOutState;
@ -56,22 +60,9 @@ void BK4819_Init(void)
// RX AF level
BK4819_WriteRegister(BK4819_REG_48, 0xB3A8);
BK4819_WriteRegister(BK4819_REG_09, 0x006F);
BK4819_WriteRegister(BK4819_REG_09, 0x106B);
BK4819_WriteRegister(BK4819_REG_09, 0x2067);
BK4819_WriteRegister(BK4819_REG_09, 0x3062);
BK4819_WriteRegister(BK4819_REG_09, 0x4050);
BK4819_WriteRegister(BK4819_REG_09, 0x5047);
BK4819_WriteRegister(BK4819_REG_09, 0x603A);
BK4819_WriteRegister(BK4819_REG_09, 0x702C);
BK4819_WriteRegister(BK4819_REG_09, 0x8041);
BK4819_WriteRegister(BK4819_REG_09, 0x9037);
BK4819_WriteRegister(BK4819_REG_09, 0xA025);
BK4819_WriteRegister(BK4819_REG_09, 0xB017);
BK4819_WriteRegister(BK4819_REG_09, 0xC0E4);
BK4819_WriteRegister(BK4819_REG_09, 0xD0CB);
BK4819_WriteRegister(BK4819_REG_09, 0xE0B5);
BK4819_WriteRegister(BK4819_REG_09, 0xF09F);
const uint8_t dtmf_coeffs[] = {0x6F,0x6B,0x67,0x62,0x50,0x47,0x3A,0x2C,0x41,0x37,0x25,0x17,0xE4,0xCB,0xB5,0x9F};
for (unsigned int i = 0; i < ARRAY_SIZE(dtmf_coeffs); i++)
BK4819_WriteRegister(BK4819_REG_09, (i << 12) | dtmf_coeffs[i]);
BK4819_WriteRegister(BK4819_REG_1F, 0x5454);
BK4819_WriteRegister(BK4819_REG_3E, 0xA037);
@ -346,7 +337,7 @@ void BK4819_SetCTCSSFrequency(uint32_t FreqControlWord)
Config = 0x904A; // 1 0 0 1 0 0 0 0 0 1001010
}
BK4819_WriteRegister(BK4819_REG_51, Config);
// REG_07 <15:0>
//
// When <13> = 0 for CTC1
@ -367,7 +358,7 @@ void BK4819_SetCTCSSFrequency(uint32_t FreqControlWord)
BK4819_WriteRegister(BK4819_REG_07, BK4819_REG_07_MODE_CTC1 | (((FreqControlWord * 2064888u) + 500000u) / 1000000u)); // with rounding
}
// freq_10Hz is CTCSS Hz * 10
// freq_10Hz is CTCSS Hz * 10
void BK4819_SetTailDetection(const uint32_t freq_10Hz)
{
// REG_07 <15:0>
@ -414,12 +405,97 @@ void BK4819_EnableVox(uint16_t VoxEnableThreshold, uint16_t VoxDisableThreshold)
void BK4819_SetFilterBandwidth(BK4819_FilterBandwidth_t Bandwidth)
{
// REG_43 <14:12> 4 RF filter bandwidth
// 0 = 1.7 kHz
// 1 = 2.0 kHz
// 2 = 2.5 kHz
// 3 = 3.0 kHz
// 4 = 3.75 kHz
// 5 = 4.0 kHz
// 6 = 4.25 kHz
// 7 = 4.5 kHz
// if REG_43 <5> == 1 RF filter bandwidth * 2
//
// REG_43 <11:9> 0 RF filter bandwidth when signal is weak
// 0 = 1.7 kHz
// 1 = 2.0 kHz
// 2 = 2.5 kHz
// 3 = 3.0 kHz
// 4 = 3.75 kHz
// 5 = 4.0 kHz
// 6 = 4.25 kHz
// 7 = 4.5 kHz
// if REG_43 <5> == 1 RF filter bandwidth * 2
//
// REG_43 <8:6> 1 AFTxLPF2 filter Band Width
// 1 = 2.5 kHz (for 12.5k Channel Space)
// 2 = 2.75 kHz
// 0 = 3.0 kHz (for 25k Channel Space)
// 3 = 3.5 kHz
// 4 = 4.5 kHz
// 5 = 4.25 kHz
// 6 = 4.0 kHz
// 7 = 3.75 kHz
//
// REG_43 <5:4> 0 BW Mode Selection
// 1 = 6.25k
// 0 = 12.5k
// 2 = 25k/20k
//
// REG_43 <2> 0 Gain after FM Demodulation
// 0 = 0dB
// 1 = 6dB
//
if (Bandwidth == BK4819_FILTER_BW_WIDE)
BK4819_WriteRegister(BK4819_REG_43, 0x3028);
{
BK4819_WriteRegister(BK4819_REG_43,
(0u << 15) | // 0
(3u << 12) | // 3 RF filter bandwidth
(3u << 9) | // 0 RF filter bandwidth when signal is weak
(0u << 6) | // 0 AFTxLPF2 filter Band Width
(2u << 4) | // 2 BW Mode Selection
(1u << 3) | // 1
(0u << 2) | // 0 Gain after FM Demodulation
(0u << 0)); // 0
}
else
if (Bandwidth == BK4819_FILTER_BW_NARROW)
BK4819_WriteRegister(BK4819_REG_43, 0x4048);
//BK4819_WriteRegister(BK4819_REG_43, 0x790C); // fastest squelch, https://github.com/fagci/uv-k5-firmware-fagci-mod
{
BK4819_WriteRegister(BK4819_REG_43, // 0x4048); // 0 100 000 001 00 1 0 00
(0u << 15) | // 0
(3u << 12) | // 4 RF filter bandwidth
(3u << 9) | // 0 RF filter bandwidth when signal is weak
(1u << 6) | // 1 AFTxLPF2 filter Band Width
(0u << 4) | // 0 BW Mode Selection
(1u << 3) | // 1
(0u << 2) | // 0 Gain after FM Demodulation
(0u << 0)); // 0
/*
// https://github.com/fagci/uv-k5-firmware-fagci-mod
//BK4819_WriteRegister(BK4819_REG_43, // 0x790C); // 0 111 100 100 00 1 1 00 squelch
(0u << 15) | // 0
(7u << 12) | // 7 RF filter bandwidth
(4u << 9) | // 4 RF filter bandwidth when signal is weak
(4u << 6) | // 4 AFTxLPF2 filter Band Width
(0u << 4) | // 0 BW Mode Selection
(1u << 3) | // 1
(1u << 2) | // 1 Gain after FM Demodulation
(0u << 0)); // 0
*/
}
else
if (Bandwidth == BK4819_FILTER_BW_NARROWER)
{
BK4819_WriteRegister(BK4819_REG_43, // 0 100 000 001 01 1 0 00
(0u << 15) | // 0
(4u << 12) | // 4 RF filter bandwidth
(0u << 9) | // 0 RF filter bandwidth when signal is weak
(1u << 6) | // 1 AFTxLPF2 filter Band Width
(1u << 4) | // 1 BW Mode Selection
(1u << 3) | // 1
(0u << 2) | // 0 Gain after FM Demodulation
(0u << 0)); // 0
}
}
void BK4819_SetupPowerAmplifier(uint16_t Bias, uint32_t Frequency)
@ -452,21 +528,47 @@ void BK4819_SetFrequency(uint32_t Frequency)
BK4819_WriteRegister(BK4819_REG_39, (Frequency >> 16) & 0xFFFF);
}
void BK4819_SetupSquelch(uint8_t SquelchOpenRSSIThresh, uint8_t SquelchCloseRSSIThresh, uint8_t SquelchOpenNoiseThresh, uint8_t SquelchCloseNoiseThresh, uint8_t SquelchCloseGlitchThresh, uint8_t SquelchOpenGlitchThresh)
void BK4819_SetupSquelch(
uint8_t SquelchOpenRSSIThresh,
uint8_t SquelchCloseRSSIThresh,
uint8_t SquelchOpenNoiseThresh,
uint8_t SquelchCloseNoiseThresh,
uint8_t SquelchCloseGlitchThresh,
uint8_t SquelchOpenGlitchThresh)
{
// REG_70 <15> 0 Enable TONE1
// 1 = Enable
// 0 = Disable
// REG_70 <14:8> 0 TONE1 tuning gain
// REG_70 <7> 0 Enable TONE2
// 1 = Enable
// 0 = Disable
// REG_70 <6:0> 0 TONE2/FSK tuning gain
//
BK4819_WriteRegister(BK4819_REG_70, 0);
// Glitch threshold for Squelch
//
BK4819_WriteRegister(BK4819_REG_4D, 0xA000 | SquelchCloseGlitchThresh);
// REG_4E <13:11> 5 Squelch = 1 Delay Setting
// REG_4E <10: 9> 7 Squelch = 0 Delay Setting
// REG_4E < 7: 0> 8 Glitch threshold for Squelch = 1
//
#if 1
BK4819_WriteRegister(BK4819_REG_4D, 0xA000 | SquelchCloseGlitchThresh);
BK4819_WriteRegister(BK4819_REG_4E, 0x6F00 | SquelchOpenGlitchThresh);
#else
// fastest squelch, https://github.com/fagci/uv-k5-firmware-fagci-mod this doesn't work
BK4819_WriteRegister(BK4819_REG_4D, 0b01000000 | SquelchCloseGlitchThresh);
// https://github.com/fagci/uv-k5-firmware-fagci-mod
BK4819_WriteRegister(BK4819_REG_4E, 0x0040 | SquelchOpenGlitchThresh);
#endif
// 0x6f = 0110 1111 meaning the default sql delays from the datasheet are used (101 and 111)
BK4819_WriteRegister(BK4819_REG_4E, 0x6F00 | SquelchOpenGlitchThresh);
BK4819_WriteRegister(BK4819_REG_4F, (SquelchCloseNoiseThresh << 8) | SquelchOpenNoiseThresh);
BK4819_WriteRegister(BK4819_REG_78, (SquelchOpenRSSIThresh << 8) | SquelchCloseRSSIThresh);
// REG_4F <14:8> 47 Ex-noise threshold for Squelch = 0
// REG_4F <6:0> 46 Ex-noise threshold for Squelch = 1
BK4819_WriteRegister(BK4819_REG_4F, ((uint16_t)SquelchCloseNoiseThresh << 8) | SquelchOpenNoiseThresh);
// REG_78 <15:8> 72 RSSI threshold for Squelch = 1 0.5dB/step
// REG_78 <7:0> 70 RSSI threshold for Squelch = 0 0.5dB/step
BK4819_WriteRegister(BK4819_REG_78, ((uint16_t)SquelchOpenRSSIThresh << 8) | SquelchCloseRSSIThresh);
BK4819_SetAF(BK4819_AF_MUTE);
@ -558,14 +660,14 @@ void BK4819_SetCompander(const unsigned int mode)
// mode 1 .. TX
// mode 2 .. RX
// mode 3 .. TX and RX
if (mode == 0)
{ // disable
const uint16_t Value = BK4819_ReadRegister(BK4819_REG_31);
BK4819_WriteRegister(BK4819_REG_31, Value & ~(1u < 3));
return;
}
// enable
val = BK4819_ReadRegister(BK4819_REG_31);
BK4819_WriteRegister(BK4819_REG_31, val | (1u < 3));
@ -581,7 +683,7 @@ void BK4819_SetCompander(const unsigned int mode)
const uint16_t compress_ratio = (mode == 1 || mode >= 3) ? 3 : 0; // 4:1
val = BK4819_ReadRegister(BK4819_REG_29);
BK4819_WriteRegister(BK4819_REG_29, (val & ~(3u < 14)) | (compress_ratio < 14));
// set the expander ratio
//
// REG_28 <15:14> 01 Expander (AF Rx) Ratio
@ -608,14 +710,25 @@ void BK4819_DisableDTMF(void)
void BK4819_EnableDTMF(void)
{
// no idea what this register does
BK4819_WriteRegister(BK4819_REG_21, 0x06D8);
// REG_24 <5> 0 DTMF/SelCall Enable
// 1 = Enable
// 0 = Disable
// REG_24 <4> 1 DTMF or SelCall Detection Mode
// 1 = for DTMF
// 0 = for SelCall
// REG_24 <3:0> 14 Max Symbol Number for SelCall Detection
//
BK4819_WriteRegister(BK4819_REG_24,
(1U << BK4819_REG_24_SHIFT_UNKNOWN_15)
| (24 << BK4819_REG_24_SHIFT_THRESHOLD)
| (1U << BK4819_REG_24_SHIFT_UNKNOWN_6)
| BK4819_REG_24_ENABLE
| BK4819_REG_24_SELECT_DTMF
| (14U << BK4819_REG_24_SHIFT_MAX_SYMBOLS));
(1u << BK4819_REG_24_SHIFT_UNKNOWN_15)
// | (24u << BK4819_REG_24_SHIFT_THRESHOLD) // original
| (31u << BK4819_REG_24_SHIFT_THRESHOLD) // hopefully reduced sensitivity
| (1u << BK4819_REG_24_SHIFT_UNKNOWN_6)
| BK4819_REG_24_ENABLE
| BK4819_REG_24_SELECT_DTMF
| (14u << BK4819_REG_24_SHIFT_MAX_SYMBOLS));
}
void BK4819_PlayTone(uint16_t Frequency, bool bTuningGainSwitch)
@ -748,6 +861,7 @@ void BK4819_EnterDTMF_TX(bool bLocalLoopback)
BK4819_EnableDTMF();
BK4819_EnterTxMute();
BK4819_SetAF(bLocalLoopback ? BK4819_AF_BEEP : BK4819_AF_MUTE);
BK4819_WriteRegister(BK4819_REG_70,
0
| BK4819_REG_70_MASK_ENABLE_TONE1
@ -809,7 +923,7 @@ void BK4819_PlayDTMF(char Code)
case '*': tone1 = 9715; tone2 = 12482; break; // 941Hz 1209Hz
case '#': tone1 = 9715; tone2 = 15249; break; // 941Hz 1477Hz
}
if (tone1 > 0 && tone2 > 0)
{
BK4819_WriteRegister(BK4819_REG_71, tone1);
@ -823,7 +937,7 @@ void BK4819_PlayDTMFString(const char *pString, bool bDelayFirst, uint16_t First
if (pString == NULL)
return;
for (i = 0; pString[i]; i++)
{
uint16_t Delay;
@ -854,7 +968,7 @@ void BK4819_TransmitTone(bool bLocalLoopback, uint32_t Frequency)
BK4819_EnableTXLink();
SYSTEM_DelayMs(50);
BK4819_ExitTxMute();
}
@ -926,7 +1040,7 @@ void BK4819_EnableCTCSS(void)
#else
BK4819_GenTail(4); // 55Hz tone freq
#endif
// REG_51 <15> 0
// 1 = Enable TxCTCSS/CDCSS
// 0 = Disable
@ -1123,10 +1237,10 @@ void BK4819_PlayRoger(void)
const uint32_t tone1_Hz = 1540;
const uint32_t tone2_Hz = 1310;
#endif
BK4819_EnterTxMute();
BK4819_SetAF(BK4819_AF_MUTE);
BK4819_WriteRegister(BK4819_REG_70, 0xE000); // 1110 0000 0000 0000
BK4819_WriteRegister(BK4819_REG_70, 0xE000); // 1110 0000 0000 0000
BK4819_EnableTXLink();
SYSTEM_DelayMs(50);

View File

@ -47,7 +47,8 @@ typedef enum BK4819_AF_Type_t BK4819_AF_Type_t;
enum BK4819_FilterBandwidth_t
{
BK4819_FILTER_BW_WIDE = 0,
BK4819_FILTER_BW_NARROW
BK4819_FILTER_BW_NARROW,
BK4819_FILTER_BW_NARROWER
};
typedef enum BK4819_FilterBandwidth_t BK4819_FilterBandwidth_t;

BIN
firmware

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -168,7 +168,9 @@ uint32_t FREQUENCY_FloorToStep(uint32_t Upper, uint32_t Step, uint32_t Lower)
}
int FREQUENCY_Check(VFO_Info_t *pInfo)
{
{ // return '0' if TX frequency is allowed
// otherwise return '-1'
const uint32_t Frequency = pInfo->pTX->Frequency;
#ifdef ENABLE_NOAA
@ -178,6 +180,22 @@ int FREQUENCY_Check(VFO_Info_t *pInfo)
switch (gSetting_F_LOCK)
{
case F_LOCK_OFF:
if (Frequency >= 13600000 && Frequency < 17400000)
return 0;
if (Frequency >= 17400000 && Frequency < 35000000)
if (gSetting_200TX)
return 0;
if (Frequency >= 35000000 && Frequency < 40000000)
if (gSetting_350TX && gSetting_350EN)
return 0;
if (Frequency >= 40000000 && Frequency < 47000000)
return 0;
if (Frequency >= 47000000 && Frequency <= 60000000)
if (gSetting_500TX)
return 0;
break;
case F_LOCK_FCC:
if (Frequency >= 14400000 && Frequency < 14800000)
return 0;
@ -210,23 +228,8 @@ int FREQUENCY_Check(VFO_Info_t *pInfo)
if (Frequency >= 40000000 && Frequency < 43800000)
return 0;
break;
default:
if (Frequency >= 13600000 && Frequency < 17400000)
return 0;
if (Frequency >= 35000000 && Frequency < 40000000)
if (gSetting_350TX && gSetting_350EN)
return 0;
if (Frequency >= 40000000 && Frequency < 47000000)
return 0;
if (Frequency >= 17400000 && Frequency < 35000000)
if (gSetting_200TX)
return 0;
if (Frequency >= 47000000 && Frequency <= 60000000)
if (gSetting_500TX)
return 0;
break;
}
// dis-allowed TX frequency
return -1;
}

28
radio.c
View File

@ -318,7 +318,7 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg)
if (Data[4] == 0xFF)
{
gEeprom.VfoInfo[VFO].FrequencyReverse = false;
gEeprom.VfoInfo[VFO].CHANNEL_BANDWIDTH = 0;
gEeprom.VfoInfo[VFO].CHANNEL_BANDWIDTH = BK4819_FILTER_BW_WIDE;
gEeprom.VfoInfo[VFO].OUTPUT_POWER = OUTPUT_POWER_LOW;
gEeprom.VfoInfo[VFO].BUSY_CHANNEL_LOCK = false;
}
@ -547,10 +547,16 @@ void RADIO_SetupRegisters(bool bSwitchToFunction0)
BK4819_ToggleGpioOut(BK4819_GPIO0_PIN28_GREEN, false);
Bandwidth = gRxVfo->CHANNEL_BANDWIDTH;
if (Bandwidth != BK4819_FILTER_BW_WIDE)
Bandwidth = BK4819_FILTER_BW_NARROW;
BK4819_SetFilterBandwidth(Bandwidth);
switch (Bandwidth)
{
default:
Bandwidth = BK4819_FILTER_BW_WIDE;
case BK4819_FILTER_BW_WIDE:
case BK4819_FILTER_BW_NARROW:
BK4819_SetFilterBandwidth(Bandwidth);
break;
}
BK4819_ToggleGpioOut(BK4819_GPIO1_PIN29_RED, false);
BK4819_SetupPowerAmplifier(0, 0);
@ -785,9 +791,15 @@ void RADIO_SetTxParameters(void)
BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2, false);
Bandwidth = gCurrentVfo->CHANNEL_BANDWIDTH;
if (Bandwidth != BK4819_FILTER_BW_WIDE)
Bandwidth = BK4819_FILTER_BW_NARROW;
BK4819_SetFilterBandwidth(Bandwidth);
switch (Bandwidth)
{
default:
Bandwidth = BK4819_FILTER_BW_WIDE;
case BK4819_FILTER_BW_WIDE:
case BK4819_FILTER_BW_NARROW:
BK4819_SetFilterBandwidth(Bandwidth);
break;
}
BK4819_SetFrequency(gCurrentVfo->pTX->Frequency);

View File

@ -432,10 +432,17 @@ void UI_DisplayMain(void)
if (gEeprom.VfoInfo[vfo_num].FrequencyReverse)
UI_PrintStringSmall("R", display_width + 62, 0, Line + 1);
// show the narrow band symbol
if (gEeprom.VfoInfo[vfo_num].CHANNEL_BANDWIDTH == BANDWIDTH_NARROW)
UI_PrintStringSmall("N", display_width + 70, 0, Line + 1);
{ // show the narrow band symbol
String[0] = '?';
switch (gEeprom.VfoInfo[vfo_num].CHANNEL_BANDWIDTH)
{
case BANDWIDTH_WIDE: String[0] = 'W'; break;
case BANDWIDTH_NARROW: String[0] = 'N'; break;
}
String[1] = '\0';
UI_PrintStringSmall(String, display_width + 70, 0, Line + 1);
}
// show the DTMF decoding symbol
if (gEeprom.VfoInfo[vfo_num].DTMF_DECODING_ENABLE || gSetting_KILLED)
UI_PrintStringSmall("DTMF", display_width + 78, 0, Line + 1);

View File

@ -41,13 +41,13 @@ const char MenuList[][7] =
{
"SQL",
"STEP",
"TXPWR", // was "TXP"
"RXDCS", // was "R_DCS"
"RXCTCS", // was "R_CTCS"
"TXDCS", // was "T_DCS"
"TXCTCS", // was "T_CTCS"
"TXDIR", // was "SFT_D"
"TXOFFS", // was "OFFSET"
"T-PWR", // was "TXP"
"R-DCS", // was "R_DCS"
"R-CTCS", // was "R_CTCS"
"T-DCS", // was "T_DCS"
"T-CTCS", // was "T_CTCS"
"T-DIR", // was "SFT_D"
"T-OFFS", // was "OFFSET"
"W/N",
"SCRAM", // was "SCR"
"BUSYCL", // was "BCL"
@ -56,9 +56,9 @@ const char MenuList[][7] =
"VOX",
"BACKLT", // was "ABR"
"DUALRX", // was "TDR"
"TXVFO", // was "WX"
"T-VFO", // was "WX"
"BEEP",
"TXTOUT", // was "TOT"
"T-TOUT", // was "TOT"
#ifdef ENABLE_VOICE
"VOICE",
#endif
@ -100,13 +100,13 @@ const char MenuList[][7] =
"MEMDEL", // was "Del-CH"
"RESET",
// normally hidden menu items from here on.
// enabled if pressing PTT and side button below PTT at power-on.
// hidden menu items from here on.
// enabled if pressing PTT and upper side button at power-on.
"350-TX", // was "350TX"
"F-LOCK",
"200-TX", // was "200TX"
"500-TX", // was "500TX"
"T-200", // was "200TX"
"T-350", // was "350TX"
"T-500", // was "500TX"
"350-EN", // was "350EN"
"SCR-EN", // was "SCREN"

View File

@ -83,11 +83,11 @@ enum
MENU_DEL_CH,
MENU_RESET,
// items after here are normally hidden
// items after here are hidden
MENU_350TX,
MENU_F_LOCK,
MENU_200TX,
MENU_350TX,
MENU_500TX,
MENU_350EN,
MENU_SCREN,

View File

@ -2,7 +2,7 @@
#ifdef GIT_HASH
#define VER GIT_HASH
#else
#define VER "230917"
#define VER "230918"
#endif
const char Version[] = "OEFW-"VER;

View File

@ -13,7 +13,7 @@ del /S /Q *.o >nul 2>nul
del /S /Q *.d >nul 2>nul
::python -m pip install --upgrade pip crcmod
fw-pack.py firmware.bin 230917 firmware.packed.bin
fw-pack.py firmware.bin 230918 firmware.packed.bin
::arm-none-eabi-size firmware