mirror of
https://github.com/egzumer/uv-k5-firmware-custom
synced 2024-11-21 17:19:57 +00:00
More frequency steps
This commit is contained in:
parent
140b5f4b4a
commit
61527d1281
@ -109,7 +109,7 @@ int MENU_GetLimits(uint8_t menu_id, int32_t *pMin, int32_t *pMax)
|
|||||||
|
|
||||||
case MENU_STEP:
|
case MENU_STEP:
|
||||||
*pMin = 0;
|
*pMin = 0;
|
||||||
*pMax = ARRAY_SIZE(StepFrequencyTable) - 1;
|
*pMax = ARRAY_SIZE(gStepFrequencyTable) - 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_ABR:
|
case MENU_ABR:
|
||||||
@ -381,7 +381,7 @@ void MENU_AcceptSetting(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_STEP:
|
case MENU_STEP:
|
||||||
gTxVfo->STEP_SETTING = gSubMenuSelection;
|
gTxVfo->STEP_SETTING = FREQUENCY_GetStepIdxFromSortedIdx(gSubMenuSelection);
|
||||||
if (IS_FREQ_CHANNEL(gTxVfo->CHANNEL_SAVE))
|
if (IS_FREQ_CHANNEL(gTxVfo->CHANNEL_SAVE))
|
||||||
{
|
{
|
||||||
gRequestSaveChannel = 1;
|
gRequestSaveChannel = 1;
|
||||||
@ -878,7 +878,7 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_STEP:
|
case MENU_STEP:
|
||||||
gSubMenuSelection = gTxVfo->STEP_SETTING;
|
gSubMenuSelection = FREQUENCY_GetSortedIdxFromStepIdx(gTxVfo->STEP_SETTING);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_TXP:
|
case MENU_TXP:
|
||||||
|
@ -61,13 +61,29 @@ const freq_band_table_t frequencyBandTable[7] =
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef ENABLE_12_5KHZ_STEP
|
|
||||||
// QS steps (*10 Hz)
|
const uint16_t gStepFrequencyTable[] = {
|
||||||
const uint16_t StepFrequencyTable[7] = {250, 500, 625, 1000, 1250, 2500, 833};
|
250, 500, 625, 1000, 1250, 2500, 833,
|
||||||
#else
|
1, 5, 10, 25, 50, 100, 125, 1500, 3000, 5000, 10000, 12500, 25000, 50000
|
||||||
// includes 1.25kHz step
|
};
|
||||||
const uint16_t StepFrequencyTable[7] = {125, 250, 625, 1000, 1250, 2500, 833};
|
|
||||||
#endif
|
|
||||||
|
const uint8_t StepSortedIndexes[] = {
|
||||||
|
STEP_0_01kHz, STEP_0_05kHz, STEP_0_1kHz, STEP_0_25kHz, STEP_0_5kHz, STEP_1kHz, STEP_1_25kHz, STEP_2_5kHz, STEP_5kHz, STEP_6_25kHz,
|
||||||
|
STEP_8_33kHz, STEP_10kHz, STEP_12_5kHz, STEP_15kHz, STEP_25kHz, STEP_30kHz, STEP_50kHz, STEP_100kHz,
|
||||||
|
STEP_125kHz, STEP_250kHz, STEP_500kHz
|
||||||
|
};
|
||||||
|
uint8_t FREQUENCY_GetStepIdxFromSortedIdx(uint8_t sortedIdx)
|
||||||
|
{
|
||||||
|
return StepSortedIndexes[sortedIdx];
|
||||||
|
}
|
||||||
|
uint8_t FREQUENCY_GetSortedIdxFromStepIdx(uint8_t stepIdx)
|
||||||
|
{
|
||||||
|
for(uint8_t i = 0; i < ARRAY_SIZE(gStepFrequencyTable); i++)
|
||||||
|
if(StepSortedIndexes[i] == stepIdx)
|
||||||
|
return i;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
FREQUENCY_Band_t FREQUENCY_GetBand(uint32_t Frequency)
|
FREQUENCY_Band_t FREQUENCY_GetBand(uint32_t Frequency)
|
||||||
{
|
{
|
||||||
@ -102,6 +118,8 @@ uint8_t FREQUENCY_CalculateOutputPower(uint8_t TxpLow, uint8_t TxpMid, uint8_t T
|
|||||||
|
|
||||||
static int32_t rnd(int32_t freq, uint16_t step)
|
static int32_t rnd(int32_t freq, uint16_t step)
|
||||||
{
|
{
|
||||||
|
if(step == 1)
|
||||||
|
return freq;
|
||||||
return (freq + (step + 1) / 2) / step * step;
|
return (freq + (step + 1) / 2) / step * step;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,8 +19,6 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#define ENABLE_12_5KHZ_STEP
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const uint32_t lower;
|
const uint32_t lower;
|
||||||
const uint32_t upper;
|
const uint32_t upper;
|
||||||
@ -31,7 +29,7 @@ extern const freq_band_table_t BX4819_band2;
|
|||||||
|
|
||||||
extern const freq_band_table_t frequencyBandTable[7];
|
extern const freq_band_table_t frequencyBandTable[7];
|
||||||
|
|
||||||
enum FREQUENCY_Band_t {
|
typedef enum {
|
||||||
BAND_NONE = -1,
|
BAND_NONE = -1,
|
||||||
BAND1_50MHz = 0,
|
BAND1_50MHz = 0,
|
||||||
BAND2_108MHz,
|
BAND2_108MHz,
|
||||||
@ -40,35 +38,35 @@ enum FREQUENCY_Band_t {
|
|||||||
BAND5_350MHz,
|
BAND5_350MHz,
|
||||||
BAND6_400MHz,
|
BAND6_400MHz,
|
||||||
BAND7_470MHz
|
BAND7_470MHz
|
||||||
};
|
} FREQUENCY_Band_t;
|
||||||
typedef enum FREQUENCY_Band_t FREQUENCY_Band_t;
|
|
||||||
|
|
||||||
#ifndef ENABLE_12_5KHZ_STEP
|
|
||||||
// QS steps
|
|
||||||
enum STEP_Setting_t {
|
|
||||||
STEP_2_5kHz = 0,
|
|
||||||
STEP_5_0kHz,
|
|
||||||
STEP_6_25kHz,
|
|
||||||
STEP_10_0kHz,
|
|
||||||
STEP_12_5kHz,
|
|
||||||
STEP_25_0kHz,
|
|
||||||
STEP_8_33kHz
|
|
||||||
};
|
|
||||||
#else
|
|
||||||
// includes 1.25kHz step
|
|
||||||
enum STEP_Setting_t {
|
|
||||||
STEP_1_25kHz = 0,
|
|
||||||
STEP_2_5kHz,
|
|
||||||
STEP_6_25kHz,
|
|
||||||
STEP_10_0kHz,
|
|
||||||
STEP_12_5kHz,
|
|
||||||
STEP_25_0kHz,
|
|
||||||
STEP_8_33kHz
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
typedef enum STEP_Setting_t STEP_Setting_t;
|
|
||||||
|
|
||||||
extern const uint16_t StepFrequencyTable[7];
|
typedef enum {
|
||||||
|
STEP_2_5kHz,
|
||||||
|
STEP_5kHz,
|
||||||
|
STEP_6_25kHz,
|
||||||
|
STEP_10kHz,
|
||||||
|
STEP_12_5kHz,
|
||||||
|
STEP_25kHz,
|
||||||
|
STEP_8_33kHz,
|
||||||
|
STEP_0_01kHz,
|
||||||
|
STEP_0_05kHz,
|
||||||
|
STEP_0_1kHz,
|
||||||
|
STEP_0_25kHz,
|
||||||
|
STEP_0_5kHz,
|
||||||
|
STEP_1kHz,
|
||||||
|
STEP_1_25kHz,
|
||||||
|
STEP_15kHz,
|
||||||
|
STEP_30kHz,
|
||||||
|
STEP_50kHz,
|
||||||
|
STEP_100kHz,
|
||||||
|
STEP_125kHz,
|
||||||
|
STEP_250kHz,
|
||||||
|
STEP_500kHz,
|
||||||
|
} STEP_Setting_t;
|
||||||
|
|
||||||
|
|
||||||
|
extern const uint16_t gStepFrequencyTable[21];
|
||||||
|
|
||||||
#ifdef ENABLE_NOAA
|
#ifdef ENABLE_NOAA
|
||||||
extern const uint32_t NoaaFrequencyTable[10];
|
extern const uint32_t NoaaFrequencyTable[10];
|
||||||
@ -78,6 +76,9 @@ 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_RoundToStep(uint32_t freq, uint16_t step);
|
uint32_t FREQUENCY_RoundToStep(uint32_t freq, uint16_t step);
|
||||||
|
|
||||||
|
uint8_t FREQUENCY_GetStepIdxFromSortedIdx(uint8_t sortedIdx);
|
||||||
|
uint8_t FREQUENCY_GetSortedIdxFromStepIdx(uint8_t step);
|
||||||
|
|
||||||
int TX_freq_check(const uint32_t Frequency);
|
int TX_freq_check(const uint32_t Frequency);
|
||||||
int RX_freq_check(const uint32_t Frequency);
|
int RX_freq_check(const uint32_t Frequency);
|
||||||
|
|
||||||
|
6
radio.c
6
radio.c
@ -122,7 +122,7 @@ void RADIO_InitInfo(VFO_Info_t *pInfo, const uint8_t ChannelSave, const uint32_t
|
|||||||
pInfo->SCANLIST1_PARTICIPATION = true;
|
pInfo->SCANLIST1_PARTICIPATION = true;
|
||||||
pInfo->SCANLIST2_PARTICIPATION = true;
|
pInfo->SCANLIST2_PARTICIPATION = true;
|
||||||
pInfo->STEP_SETTING = STEP_12_5kHz;
|
pInfo->STEP_SETTING = STEP_12_5kHz;
|
||||||
pInfo->StepFrequency = StepFrequencyTable[pInfo->STEP_SETTING];
|
pInfo->StepFrequency = gStepFrequencyTable[pInfo->STEP_SETTING];
|
||||||
pInfo->CHANNEL_SAVE = ChannelSave;
|
pInfo->CHANNEL_SAVE = ChannelSave;
|
||||||
pInfo->FrequencyReverse = false;
|
pInfo->FrequencyReverse = false;
|
||||||
pInfo->OUTPUT_POWER = OUTPUT_POWER_LOW;
|
pInfo->OUTPUT_POWER = OUTPUT_POWER_LOW;
|
||||||
@ -256,10 +256,10 @@ void RADIO_ConfigureChannel(const unsigned int VFO, const unsigned int configure
|
|||||||
gEeprom.VfoInfo[VFO].AM_mode = (Data[3] >> 4) & 1u;
|
gEeprom.VfoInfo[VFO].AM_mode = (Data[3] >> 4) & 1u;
|
||||||
|
|
||||||
Tmp = Data[6];
|
Tmp = Data[6];
|
||||||
if (Tmp >= ARRAY_SIZE(StepFrequencyTable))
|
if (Tmp >= ARRAY_SIZE(gStepFrequencyTable))
|
||||||
Tmp = STEP_12_5kHz;
|
Tmp = STEP_12_5kHz;
|
||||||
gEeprom.VfoInfo[VFO].STEP_SETTING = Tmp;
|
gEeprom.VfoInfo[VFO].STEP_SETTING = Tmp;
|
||||||
gEeprom.VfoInfo[VFO].StepFrequency = StepFrequencyTable[Tmp];
|
gEeprom.VfoInfo[VFO].StepFrequency = gStepFrequencyTable[Tmp];
|
||||||
|
|
||||||
Tmp = Data[7];
|
Tmp = Data[7];
|
||||||
if (Tmp > (ARRAY_SIZE(gSubMenu_SCRAMBLER) - 1))
|
if (Tmp > (ARRAY_SIZE(gSubMenu_SCRAMBLER) - 1))
|
||||||
|
@ -495,9 +495,11 @@ void UI_DisplayMenu(void)
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case MENU_STEP:
|
case MENU_STEP: {
|
||||||
sprintf(String, "%d.%02ukHz", StepFrequencyTable[gSubMenuSelection] / 100, abs(StepFrequencyTable[gSubMenuSelection]) % 100);
|
uint16_t step = gStepFrequencyTable[FREQUENCY_GetStepIdxFromSortedIdx(gSubMenuSelection)];
|
||||||
|
sprintf(String, "%d.%02ukHz", step / 100, step % 100);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case MENU_TXP:
|
case MENU_TXP:
|
||||||
strcpy(String, gSubMenu_TXP[gSubMenuSelection]);
|
strcpy(String, gSubMenu_TXP[gSubMenuSelection]);
|
||||||
|
Loading…
Reference in New Issue
Block a user