mirror of
https://github.com/OneOfEleven/uv-k5-firmware-custom.git
synced 2025-06-18 22:29:50 +03:00
Fix DTM TX-UP only
This commit is contained in:
2
Makefile
2
Makefile
@ -22,7 +22,7 @@ ENABLE_CTCSS_TAIL_PHASE_SHIFT := 1
|
|||||||
ENABLE_MAIN_KEY_HOLD := 1
|
ENABLE_MAIN_KEY_HOLD := 1
|
||||||
ENABLE_BOOT_BEEPS := 0
|
ENABLE_BOOT_BEEPS := 0
|
||||||
ENABLE_COMPANDER := 1
|
ENABLE_COMPANDER := 1
|
||||||
ENABLE_SHOW_CHARGE_LEVEL := 1
|
ENABLE_SHOW_CHARGE_LEVEL := 0
|
||||||
ENABLE_REVERSE_BAT_SYMBOL := 1
|
ENABLE_REVERSE_BAT_SYMBOL := 1
|
||||||
ENABLE_CODE_SCAN_TIMEOUT := 0
|
ENABLE_CODE_SCAN_TIMEOUT := 0
|
||||||
ENABLE_AM_FIX := 1
|
ENABLE_AM_FIX := 1
|
||||||
|
19
app/app.c
19
app/app.c
@ -641,9 +641,11 @@ static void FREQ_NextChannel(void)
|
|||||||
RADIO_ConfigureSquelchAndOutputPower(gRxVfo);
|
RADIO_ConfigureSquelchAndOutputPower(gRxVfo);
|
||||||
RADIO_SetupRegisters(true);
|
RADIO_SetupRegisters(true);
|
||||||
|
|
||||||
gUpdateDisplay = true;
|
// ScanPauseDelayIn_10ms = scan_pause_delay_in_6_10ms;
|
||||||
ScanPauseDelayIn_10ms = scan_pause_delay_in_6_10ms;
|
ScanPauseDelayIn_10ms = 10; // 100ms
|
||||||
bScanKeepFrequency = false;
|
|
||||||
|
bScanKeepFrequency = false;
|
||||||
|
gUpdateDisplay = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MR_NextChannel(void)
|
static void MR_NextChannel(void)
|
||||||
@ -723,7 +725,7 @@ static void MR_NextChannel(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ScanPauseDelayIn_10ms = scan_pause_delay_in_3_10ms;
|
// ScanPauseDelayIn_10ms = scan_pause_delay_in_3_10ms;
|
||||||
ScanPauseDelayIn_10ms = 8; // 100ms .. <= ~60ms it misses signals (squelch response and/or PLL lock time) ?
|
ScanPauseDelayIn_10ms = 8; // 80ms .. <= ~60ms it misses signals (squelch response and/or PLL lock time) ?
|
||||||
|
|
||||||
bScanKeepFrequency = false;
|
bScanKeepFrequency = false;
|
||||||
|
|
||||||
@ -1780,11 +1782,18 @@ void APP_TimeSlice500ms(void)
|
|||||||
BATTERY_GetReadings(true);
|
BATTERY_GetReadings(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// regular statusbar updates (once every 2 sec) if need be
|
// regular display updates (once every 2 sec) - if need be
|
||||||
if ((gBatteryCheckCounter & 3) == 0)
|
if ((gBatteryCheckCounter & 3) == 0)
|
||||||
|
{
|
||||||
if (gChargingWithTypeC || gSetting_battery_text > 0)
|
if (gChargingWithTypeC || gSetting_battery_text > 0)
|
||||||
gUpdateStatus = true;
|
gUpdateStatus = true;
|
||||||
|
|
||||||
|
#ifdef ENABLE_SHOW_CHARGE_LEVEL
|
||||||
|
if (gChargingWithTypeC)
|
||||||
|
gUpdateDisplay = true;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
if (gCurrentFunction != FUNCTION_POWER_SAVE)
|
if (gCurrentFunction != FUNCTION_POWER_SAVE)
|
||||||
updateRSSI(gEeprom.RX_CHANNEL);
|
updateRSSI(gEeprom.RX_CHANNEL);
|
||||||
|
|
||||||
|
32
app/dtmf.c
32
app/dtmf.c
@ -159,7 +159,7 @@ DTMF_CallMode_t DTMF_CheckGroupCall(const char *pMsg, const unsigned int size)
|
|||||||
for (i = 0; i < size; i++)
|
for (i = 0; i < size; i++)
|
||||||
if (pMsg[i] == gEeprom.DTMF_GROUP_CALL_CODE)
|
if (pMsg[i] == gEeprom.DTMF_GROUP_CALL_CODE)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
return (i < size) ? DTMF_CALL_MODE_GROUP : DTMF_CALL_MODE_NOT_GROUP;
|
return (i < size) ? DTMF_CALL_MODE_GROUP : DTMF_CALL_MODE_NOT_GROUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -189,7 +189,7 @@ void DTMF_HandleRequest(void)
|
|||||||
DTMF_clear_RX();
|
DTMF_clear_RX();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gRxVfo->DTMF_DECODING_ENABLE && !gSetting_KILLED)
|
if (!gRxVfo->DTMF_DECODING_ENABLE && !gSetting_KILLED)
|
||||||
{ // D-DCD is disabled or we're alive
|
{ // D-DCD is disabled or we're alive
|
||||||
DTMF_clear_RX();
|
DTMF_clear_RX();
|
||||||
@ -207,7 +207,7 @@ void DTMF_HandleRequest(void)
|
|||||||
|
|
||||||
if (DTMF_CompareMessage(gDTMF_RX + Offset, String, strlen(String), true))
|
if (DTMF_CompareMessage(gDTMF_RX + Offset, String, strlen(String), true))
|
||||||
{ // bugger
|
{ // bugger
|
||||||
|
|
||||||
if (gEeprom.PERMIT_REMOTE_KILL)
|
if (gEeprom.PERMIT_REMOTE_KILL)
|
||||||
{
|
{
|
||||||
gSetting_KILLED = true; // oooerr !
|
gSetting_KILLED = true; // oooerr !
|
||||||
@ -238,17 +238,17 @@ void DTMF_HandleRequest(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gDTMF_RX_index >= 9)
|
if (gDTMF_RX_index >= 9)
|
||||||
{ // look for the REVIVE code
|
{ // look for the REVIVE code
|
||||||
|
|
||||||
sprintf(String, "%s%c%s", gEeprom.ANI_DTMF_ID, gEeprom.DTMF_SEPARATE_CODE, gEeprom.REVIVE_CODE);
|
sprintf(String, "%s%c%s", gEeprom.ANI_DTMF_ID, gEeprom.DTMF_SEPARATE_CODE, gEeprom.REVIVE_CODE);
|
||||||
|
|
||||||
Offset = gDTMF_RX_index - strlen(String);
|
Offset = gDTMF_RX_index - strlen(String);
|
||||||
|
|
||||||
if (DTMF_CompareMessage(gDTMF_RX + Offset, String, strlen(String), true))
|
if (DTMF_CompareMessage(gDTMF_RX + Offset, String, strlen(String), true))
|
||||||
{ // shit, we're back !
|
{ // shit, we're back !
|
||||||
|
|
||||||
gSetting_KILLED = false;
|
gSetting_KILLED = false;
|
||||||
|
|
||||||
DTMF_clear_RX();
|
DTMF_clear_RX();
|
||||||
@ -268,7 +268,7 @@ void DTMF_HandleRequest(void)
|
|||||||
{ // look for ACK reply
|
{ // look for ACK reply
|
||||||
|
|
||||||
strcpy(String, "AB");
|
strcpy(String, "AB");
|
||||||
|
|
||||||
Offset = gDTMF_RX_index - strlen(String);
|
Offset = gDTMF_RX_index - strlen(String);
|
||||||
|
|
||||||
if (DTMF_CompareMessage(gDTMF_RX + Offset, String, strlen(String), true))
|
if (DTMF_CompareMessage(gDTMF_RX + Offset, String, strlen(String), true))
|
||||||
@ -290,7 +290,7 @@ void DTMF_HandleRequest(void)
|
|||||||
gDTMF_CallMode == DTMF_CALL_MODE_NOT_GROUP &&
|
gDTMF_CallMode == DTMF_CALL_MODE_NOT_GROUP &&
|
||||||
gDTMF_RX_index >= 9)
|
gDTMF_RX_index >= 9)
|
||||||
{ // waiting for a reply
|
{ // waiting for a reply
|
||||||
|
|
||||||
sprintf(String, "%s%c%s", gDTMF_String, gEeprom.DTMF_SEPARATE_CODE, "AAAAA");
|
sprintf(String, "%s%c%s", gDTMF_String, gEeprom.DTMF_SEPARATE_CODE, "AAAAA");
|
||||||
|
|
||||||
Offset = gDTMF_RX_index - strlen(String);
|
Offset = gDTMF_RX_index - strlen(String);
|
||||||
@ -373,25 +373,27 @@ void DTMF_Reply(void)
|
|||||||
pString = String;
|
pString = String;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DTMF_REPLY_AB:
|
case DTMF_REPLY_AB:
|
||||||
pString = "AB";
|
pString = "AB";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DTMF_REPLY_AAAAA:
|
case DTMF_REPLY_AAAAA:
|
||||||
sprintf(String, "%s%c%s", gEeprom.ANI_DTMF_ID, gEeprom.DTMF_SEPARATE_CODE, "AAAAA");
|
sprintf(String, "%s%c%s", gEeprom.ANI_DTMF_ID, gEeprom.DTMF_SEPARATE_CODE, "AAAAA");
|
||||||
pString = String;
|
pString = String;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
case DTMF_REPLY_NONE:
|
case DTMF_REPLY_NONE:
|
||||||
if (gDTMF_CallState != DTMF_CALL_STATE_NONE ||
|
if (gDTMF_CallState != DTMF_CALL_STATE_NONE ||
|
||||||
gCurrentVfo->DTMF_PTT_ID_TX_MODE == PTT_ID_OFF ||
|
gCurrentVfo->DTMF_PTT_ID_TX_MODE == PTT_ID_OFF ||
|
||||||
gCurrentVfo->DTMF_PTT_ID_TX_MODE == PTT_ID_BOT)
|
gCurrentVfo->DTMF_PTT_ID_TX_MODE == PTT_ID_EOT)
|
||||||
{
|
{
|
||||||
gDTMF_ReplyState = DTMF_REPLY_NONE;
|
gDTMF_ReplyState = DTMF_REPLY_NONE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// send TX-UP DTMF
|
||||||
pString = gEeprom.DTMF_UP_CODE;
|
pString = gEeprom.DTMF_UP_CODE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -400,16 +402,16 @@ void DTMF_Reply(void)
|
|||||||
|
|
||||||
if (pString == NULL)
|
if (pString == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Delay = gEeprom.DTMF_PRELOAD_TIME;
|
Delay = gEeprom.DTMF_PRELOAD_TIME;
|
||||||
|
|
||||||
if (gEeprom.DTMF_SIDE_TONE)
|
if (gEeprom.DTMF_SIDE_TONE)
|
||||||
{ // the will also hear the transmitted tones
|
{ // the will also hear the transmitted tones
|
||||||
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH);
|
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH);
|
||||||
gEnableSpeaker = true;
|
gEnableSpeaker = true;
|
||||||
Delay = (gEeprom.DTMF_PRELOAD_TIME < 60) ? 60 : gEeprom.DTMF_PRELOAD_TIME;
|
Delay = (gEeprom.DTMF_PRELOAD_TIME < 60) ? 60 : gEeprom.DTMF_PRELOAD_TIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
SYSTEM_DelayMs(Delay);
|
SYSTEM_DelayMs(Delay);
|
||||||
|
|
||||||
BK4819_EnterDTMF_TX(gEeprom.DTMF_SIDE_TONE);
|
BK4819_EnterDTMF_TX(gEeprom.DTMF_SIDE_TONE);
|
||||||
|
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
Binary file not shown.
@ -25,6 +25,7 @@ const freq_band_table_t BX4819_band2 = {84000000, 130000000};
|
|||||||
const freq_band_table_t frequencyBandTable[7] =
|
const freq_band_table_t frequencyBandTable[7] =
|
||||||
{
|
{
|
||||||
#ifndef ENABLE_WIDE_RX
|
#ifndef ENABLE_WIDE_RX
|
||||||
|
// QS original
|
||||||
{ 5000000, 7600000},
|
{ 5000000, 7600000},
|
||||||
{10800000, 13600000},
|
{10800000, 13600000},
|
||||||
{13600000, 17400000},
|
{13600000, 17400000},
|
||||||
@ -33,6 +34,7 @@ const freq_band_table_t frequencyBandTable[7] =
|
|||||||
{40000000, 47000000},
|
{40000000, 47000000},
|
||||||
{47000000, 60000000}
|
{47000000, 60000000}
|
||||||
#else
|
#else
|
||||||
|
// extended range
|
||||||
{ 1800000, 10800000},
|
{ 1800000, 10800000},
|
||||||
{10800000, 13600000},
|
{10800000, 13600000},
|
||||||
{13600000, 17400000},
|
{13600000, 17400000},
|
||||||
@ -59,28 +61,12 @@ const freq_band_table_t frequencyBandTable[7] =
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
#ifndef ENABLE_12_5KHZ_STEP
|
||||||
const uint16_t StepFrequencyTable[7] =
|
// QS steps (*10 Hz)
|
||||||
{
|
const uint16_t StepFrequencyTable[7] = {250, 500, 625, 1000, 1250, 2500, 833};
|
||||||
250,
|
|
||||||
500,
|
|
||||||
625,
|
|
||||||
1000,
|
|
||||||
1250,
|
|
||||||
2500,
|
|
||||||
833
|
|
||||||
};
|
|
||||||
#else
|
#else
|
||||||
const uint16_t StepFrequencyTable[7] =
|
// includes 1.25kHz step
|
||||||
{
|
const uint16_t StepFrequencyTable[7] = {125, 250, 625, 1000, 1250, 2500, 833};
|
||||||
125,
|
|
||||||
250,
|
|
||||||
625,
|
|
||||||
1000,
|
|
||||||
1250,
|
|
||||||
2500,
|
|
||||||
833
|
|
||||||
};
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
FREQUENCY_Band_t FREQUENCY_GetBand(uint32_t Frequency)
|
FREQUENCY_Band_t FREQUENCY_GetBand(uint32_t Frequency)
|
||||||
@ -89,7 +75,8 @@ FREQUENCY_Band_t FREQUENCY_GetBand(uint32_t Frequency)
|
|||||||
for (band = ARRAY_SIZE(frequencyBandTable) - 1; band >= 0; band--)
|
for (band = ARRAY_SIZE(frequencyBandTable) - 1; band >= 0; band--)
|
||||||
if (Frequency >= frequencyBandTable[band].lower)
|
if (Frequency >= frequencyBandTable[band].lower)
|
||||||
// if (Frequency < frequencyBandTable[band].upper)
|
// if (Frequency < frequencyBandTable[band].upper)
|
||||||
return band;
|
return (FREQUENCY_Band_t)band;
|
||||||
|
|
||||||
return BAND1_50MHz;
|
return BAND1_50MHz;
|
||||||
// return BAND_NONE;
|
// return BAND_NONE;
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
//#include "radio.h"
|
#define ENABLE_12_5KHZ_STEP
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const uint32_t lower;
|
const uint32_t lower;
|
||||||
@ -43,7 +43,8 @@ enum FREQUENCY_Band_t {
|
|||||||
};
|
};
|
||||||
typedef enum FREQUENCY_Band_t FREQUENCY_Band_t;
|
typedef enum FREQUENCY_Band_t FREQUENCY_Band_t;
|
||||||
|
|
||||||
#if 0
|
#ifndef ENABLE_12_5KHZ_STEP
|
||||||
|
// QS steps
|
||||||
enum STEP_Setting_t {
|
enum STEP_Setting_t {
|
||||||
STEP_2_5kHz = 0,
|
STEP_2_5kHz = 0,
|
||||||
STEP_5_0kHz,
|
STEP_5_0kHz,
|
||||||
@ -54,6 +55,7 @@ typedef enum FREQUENCY_Band_t FREQUENCY_Band_t;
|
|||||||
STEP_8_33kHz
|
STEP_8_33kHz
|
||||||
};
|
};
|
||||||
#else
|
#else
|
||||||
|
// includes 1.25kHz step
|
||||||
enum STEP_Setting_t {
|
enum STEP_Setting_t {
|
||||||
STEP_1_25kHz = 0,
|
STEP_1_25kHz = 0,
|
||||||
STEP_2_5kHz,
|
STEP_2_5kHz,
|
||||||
@ -66,12 +68,12 @@ typedef enum FREQUENCY_Band_t FREQUENCY_Band_t;
|
|||||||
#endif
|
#endif
|
||||||
typedef enum STEP_Setting_t STEP_Setting_t;
|
typedef enum STEP_Setting_t STEP_Setting_t;
|
||||||
|
|
||||||
|
extern const uint16_t StepFrequencyTable[7];
|
||||||
|
|
||||||
#ifdef ENABLE_NOAA
|
#ifdef ENABLE_NOAA
|
||||||
extern const uint32_t NoaaFrequencyTable[10];
|
extern const uint32_t NoaaFrequencyTable[10];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern const uint16_t StepFrequencyTable[7];
|
|
||||||
|
|
||||||
FREQUENCY_Band_t FREQUENCY_GetBand(uint32_t Frequency);
|
FREQUENCY_Band_t FREQUENCY_GetBand(uint32_t Frequency);
|
||||||
uint8_t FREQUENCY_CalculateOutputPower(uint8_t TxpLow, uint8_t TxpMid, uint8_t TxpHigh, int32_t LowerLimit, int32_t Middle, int32_t UpperLimit, int32_t Frequency);
|
uint8_t FREQUENCY_CalculateOutputPower(uint8_t TxpLow, uint8_t TxpMid, uint8_t TxpHigh, int32_t LowerLimit, int32_t Middle, int32_t UpperLimit, int32_t Frequency);
|
||||||
uint32_t FREQUENCY_FloorToStep(uint32_t Upper, uint32_t Step, uint32_t Lower);
|
uint32_t FREQUENCY_FloorToStep(uint32_t Upper, uint32_t Step, uint32_t Lower);
|
||||||
@ -80,4 +82,3 @@ int TX_freq_check(const uint32_t Frequency);
|
|||||||
int RX_freq_check(const uint32_t Frequency);
|
int RX_freq_check(const uint32_t Frequency);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
8
radio.h
8
radio.h
@ -43,10 +43,10 @@ enum {
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum PTT_ID_t {
|
enum PTT_ID_t {
|
||||||
PTT_ID_OFF = 0,
|
PTT_ID_OFF = 0, // OFF
|
||||||
PTT_ID_BOT,
|
PTT_ID_BOT, // BEGIN OF TX
|
||||||
PTT_ID_EOT,
|
PTT_ID_EOT, // END OF TX
|
||||||
PTT_ID_BOTH
|
PTT_ID_BOTH // BOTH
|
||||||
};
|
};
|
||||||
typedef enum PTT_ID_t PTT_ID_t;
|
typedef enum PTT_ID_t PTT_ID_t;
|
||||||
|
|
||||||
|
@ -455,7 +455,7 @@ void UI_DisplayMenu(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
case MENU_STEP:
|
case MENU_STEP:
|
||||||
sprintf(String, "%d.%02uKHz", StepFrequencyTable[gSubMenuSelection] / 100, abs(StepFrequencyTable[gSubMenuSelection]) % 100);
|
sprintf(String, "%d.%02ukHz", StepFrequencyTable[gSubMenuSelection] / 100, abs(StepFrequencyTable[gSubMenuSelection]) % 100);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_TXP:
|
case MENU_TXP:
|
||||||
|
Reference in New Issue
Block a user