mirror of
https://github.com/OneOfEleven/uv-k5-firmware-custom.git
synced 2025-05-03 16:51:25 +03:00
Some variable renames
This commit is contained in:
parent
bcfe977b36
commit
fa3dcf0015
2
Makefile
2
Makefile
@ -7,7 +7,7 @@ ENABLE_SWD := 0
|
|||||||
ENABLE_OVERLAY := 1
|
ENABLE_OVERLAY := 1
|
||||||
ENABLE_UART := 1
|
ENABLE_UART := 1
|
||||||
ENABLE_AIRCOPY := 0
|
ENABLE_AIRCOPY := 0
|
||||||
ENABLE_FMRADIO := 1
|
ENABLE_FMRADIO := 0
|
||||||
ENABLE_NOAA := 0
|
ENABLE_NOAA := 0
|
||||||
ENABLE_VOICE := 0
|
ENABLE_VOICE := 0
|
||||||
ENABLE_ALARM := 0
|
ENABLE_ALARM := 0
|
||||||
|
12
README.md
12
README.md
@ -6,6 +6,18 @@ https://github.com/DualTachyon/uv-k5-firmware
|
|||||||
|
|
||||||
A cool achievement
|
A cool achievement
|
||||||
|
|
||||||
|
# Radio performance
|
||||||
|
|
||||||
|
Please note that the Quansheng uv-k radios are not professional quality transceivers, their
|
||||||
|
performance is strictly limited, somewhat below that of a decent transceiver. The RX front
|
||||||
|
end has no track-tuned band pass filtering at all, and so are wide band/wide open to any
|
||||||
|
and all signals over a wide frequency range. Using the radio in high intensity RF environments
|
||||||
|
will nearly always destroy your reception, the receiver simply doesn't have a great dynamic
|
||||||
|
range, though are quite sensitive (weak signal wise).
|
||||||
|
|
||||||
|
Saying that, they are nice toys for the price, fun to play with, though limited due to
|
||||||
|
absolute minimal cost hardware design (£13 all in china to UK).
|
||||||
|
|
||||||
# User customization
|
# User customization
|
||||||
|
|
||||||
You can customize the firmware by enabling/disabling various compile options.
|
You can customize the firmware by enabling/disabling various compile options.
|
||||||
|
@ -144,8 +144,8 @@ static void AIRCOPY_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
gRxVfo->Band = i;
|
gRxVfo->Band = i;
|
||||||
Frequency += 75;
|
Frequency += 75;
|
||||||
Frequency = FREQUENCY_FloorToStep(Frequency, gRxVfo->StepFrequency, 0);
|
Frequency = FREQUENCY_FloorToStep(Frequency, gRxVfo->StepFrequency, 0);
|
||||||
gRxVfo->ConfigRX.Frequency = Frequency;
|
gRxVfo->freq_config_RX.Frequency = Frequency;
|
||||||
gRxVfo->ConfigTX.Frequency = Frequency;
|
gRxVfo->freq_config_TX.Frequency = Frequency;
|
||||||
RADIO_ConfigureSquelchAndOutputPower(gRxVfo);
|
RADIO_ConfigureSquelchAndOutputPower(gRxVfo);
|
||||||
gCurrentVfo = gRxVfo;
|
gCurrentVfo = gRxVfo;
|
||||||
RADIO_SetupRegisters(true);
|
RADIO_SetupRegisters(true);
|
||||||
|
@ -563,7 +563,7 @@ void APP_StartListening(FUNCTION_Type_t Function, const bool reset_am_fix)
|
|||||||
|
|
||||||
void APP_SetFrequencyByStep(VFO_Info_t *pInfo, int8_t Step)
|
void APP_SetFrequencyByStep(VFO_Info_t *pInfo, int8_t Step)
|
||||||
{
|
{
|
||||||
uint32_t Frequency = pInfo->ConfigRX.Frequency + (Step * pInfo->StepFrequency);
|
uint32_t Frequency = pInfo->freq_config_RX.Frequency + (Step * pInfo->StepFrequency);
|
||||||
|
|
||||||
if (pInfo->StepFrequency == 833)
|
if (pInfo->StepFrequency == 833)
|
||||||
{
|
{
|
||||||
@ -584,7 +584,7 @@ void APP_SetFrequencyByStep(VFO_Info_t *pInfo, int8_t Step)
|
|||||||
if (Frequency < LowerLimitFrequencyBandTable[pInfo->Band])
|
if (Frequency < LowerLimitFrequencyBandTable[pInfo->Band])
|
||||||
Frequency = FREQUENCY_FloorToStep(UpperLimitFrequencyBandTable[pInfo->Band], pInfo->StepFrequency, LowerLimitFrequencyBandTable[pInfo->Band]);
|
Frequency = FREQUENCY_FloorToStep(UpperLimitFrequencyBandTable[pInfo->Band], pInfo->StepFrequency, LowerLimitFrequencyBandTable[pInfo->Band]);
|
||||||
|
|
||||||
pInfo->ConfigRX.Frequency = Frequency;
|
pInfo->freq_config_RX.Frequency = Frequency;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FREQ_NextChannel(void)
|
static void FREQ_NextChannel(void)
|
||||||
@ -1912,7 +1912,7 @@ void CHANNEL_Next(bool bFlag, int8_t Direction)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (bFlag)
|
if (bFlag)
|
||||||
gRestoreFrequency = gRxVfo->ConfigRX.Frequency;
|
gRestoreFrequency = gRxVfo->freq_config_RX.Frequency;
|
||||||
FREQ_NextChannel();
|
FREQ_NextChannel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
42
app/main.c
42
app/main.c
@ -56,6 +56,43 @@ static void processFKeyFunction(const KEY_Code_t Key, const bool beep)
|
|||||||
// TODO: do something useful with the key
|
// TODO: do something useful with the key
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ENABLE_COPY_CHAN_VFO
|
||||||
|
{ // copy channel to VFO
|
||||||
|
int channel = -1;
|
||||||
|
int vfo = -1;
|
||||||
|
if (IS_FREQ_CHANNEL(gTxVfo->CHANNEL_SAVE))
|
||||||
|
{ // VFO mode
|
||||||
|
if (IS_MR_CHANNEL(gRxVfo->CHANNEL_SAVE))
|
||||||
|
{ // other vfo is in channel mode
|
||||||
|
channel = gRxVfo->CHANNEL_SAVE;
|
||||||
|
vfo = gTxVfo->CHANNEL_SAVE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (IS_FREQ_CHANNEL((gRxVfo->CHANNEL_SAVE + 1) & 1))
|
||||||
|
{ // VFO mode
|
||||||
|
if (IS_MR_CHANNEL(gTxVfo->CHANNEL_SAVE))
|
||||||
|
{ // other vfo is in channel mode
|
||||||
|
channel = gTxVfo->CHANNEL_SAVE;
|
||||||
|
vfo = gRxVfo->CHANNEL_SAVE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (channel >= 0 && vfo >= 0)
|
||||||
|
{ // copy the channel into the VFO
|
||||||
|
|
||||||
|
gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL;
|
||||||
|
|
||||||
|
|
||||||
|
// gRequestSaveVFO = true;
|
||||||
|
// gVfoConfigureMode = VFO_CONFIGURE_RELOAD;
|
||||||
|
// gRequestDisplayScreen = DISPLAY_MAIN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -71,7 +108,7 @@ static void processFKeyFunction(const KEY_Code_t Key, const bool beep)
|
|||||||
Band = gTxVfo->Band + 1;
|
Band = gTxVfo->Band + 1;
|
||||||
if (gSetting_350EN || Band != BAND5_350MHz)
|
if (gSetting_350EN || Band != BAND5_350MHz)
|
||||||
{
|
{
|
||||||
if (BAND7_470MHz < Band)
|
if (Band > BAND7_470MHz)
|
||||||
Band = BAND1_50MHz;
|
Band = BAND1_50MHz;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -80,6 +117,7 @@ static void processFKeyFunction(const KEY_Code_t Key, const bool beep)
|
|||||||
|
|
||||||
gEeprom.ScreenChannel[Vfo] = FREQ_CHANNEL_FIRST + Band;
|
gEeprom.ScreenChannel[Vfo] = FREQ_CHANNEL_FIRST + Band;
|
||||||
gEeprom.FreqChannel[Vfo] = FREQ_CHANNEL_FIRST + Band;
|
gEeprom.FreqChannel[Vfo] = FREQ_CHANNEL_FIRST + Band;
|
||||||
|
|
||||||
gRequestSaveVFO = true;
|
gRequestSaveVFO = true;
|
||||||
gVfoConfigureMode = VFO_CONFIGURE_RELOAD;
|
gVfoConfigureMode = VFO_CONFIGURE_RELOAD;
|
||||||
gRequestDisplayScreen = DISPLAY_MAIN;
|
gRequestDisplayScreen = DISPLAY_MAIN;
|
||||||
@ -361,7 +399,7 @@ static void MAIN_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
|
|
||||||
Frequency += 75;
|
Frequency += 75;
|
||||||
|
|
||||||
gTxVfo->ConfigRX.Frequency = FREQUENCY_FloorToStep(Frequency, gTxVfo->StepFrequency, LowerLimitFrequencyBandTable[gTxVfo->Band]);
|
gTxVfo->freq_config_RX.Frequency = FREQUENCY_FloorToStep(Frequency, gTxVfo->StepFrequency, LowerLimitFrequencyBandTable[gTxVfo->Band]);
|
||||||
|
|
||||||
gRequestSaveChannel = 1;
|
gRequestSaveChannel = 1;
|
||||||
return;
|
return;
|
||||||
|
22
app/menu.c
22
app/menu.c
@ -293,7 +293,7 @@ void MENU_AcceptSetting(void)
|
|||||||
int32_t Min;
|
int32_t Min;
|
||||||
int32_t Max;
|
int32_t Max;
|
||||||
uint8_t Code;
|
uint8_t Code;
|
||||||
FREQ_Config_t *pConfig = &gTxVfo->ConfigRX;
|
FREQ_Config_t *pConfig = &gTxVfo->freq_config_RX;
|
||||||
|
|
||||||
if (!MENU_GetLimits(gMenuCursor, &Min, &Max))
|
if (!MENU_GetLimits(gMenuCursor, &Min, &Max))
|
||||||
{
|
{
|
||||||
@ -328,7 +328,7 @@ void MENU_AcceptSetting(void)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
case MENU_T_DCS:
|
case MENU_T_DCS:
|
||||||
pConfig = &gTxVfo->ConfigTX;
|
pConfig = &gTxVfo->freq_config_TX;
|
||||||
|
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
|
|
||||||
@ -360,7 +360,7 @@ void MENU_AcceptSetting(void)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
case MENU_T_CTCS:
|
case MENU_T_CTCS:
|
||||||
pConfig = &gTxVfo->ConfigTX;
|
pConfig = &gTxVfo->freq_config_TX;
|
||||||
|
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
|
|
||||||
@ -778,13 +778,13 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_R_DCS:
|
case MENU_R_DCS:
|
||||||
switch (gTxVfo->ConfigRX.CodeType)
|
switch (gTxVfo->freq_config_RX.CodeType)
|
||||||
{
|
{
|
||||||
case CODE_TYPE_DIGITAL:
|
case CODE_TYPE_DIGITAL:
|
||||||
gSubMenuSelection = gTxVfo->ConfigRX.Code + 1;
|
gSubMenuSelection = gTxVfo->freq_config_RX.Code + 1;
|
||||||
break;
|
break;
|
||||||
case CODE_TYPE_REVERSE_DIGITAL:
|
case CODE_TYPE_REVERSE_DIGITAL:
|
||||||
gSubMenuSelection = gTxVfo->ConfigRX.Code + 105;
|
gSubMenuSelection = gTxVfo->freq_config_RX.Code + 105;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
gSubMenuSelection = 0;
|
gSubMenuSelection = 0;
|
||||||
@ -797,17 +797,17 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_R_CTCS:
|
case MENU_R_CTCS:
|
||||||
gSubMenuSelection = (gTxVfo->ConfigRX.CodeType == CODE_TYPE_CONTINUOUS_TONE) ? gTxVfo->ConfigRX.Code + 1 : 0;
|
gSubMenuSelection = (gTxVfo->freq_config_RX.CodeType == CODE_TYPE_CONTINUOUS_TONE) ? gTxVfo->freq_config_RX.Code + 1 : 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_T_DCS:
|
case MENU_T_DCS:
|
||||||
switch (gTxVfo->ConfigTX.CodeType)
|
switch (gTxVfo->freq_config_TX.CodeType)
|
||||||
{
|
{
|
||||||
case CODE_TYPE_DIGITAL:
|
case CODE_TYPE_DIGITAL:
|
||||||
gSubMenuSelection = gTxVfo->ConfigTX.Code + 1;
|
gSubMenuSelection = gTxVfo->freq_config_TX.Code + 1;
|
||||||
break;
|
break;
|
||||||
case CODE_TYPE_REVERSE_DIGITAL:
|
case CODE_TYPE_REVERSE_DIGITAL:
|
||||||
gSubMenuSelection = gTxVfo->ConfigTX.Code + 105;
|
gSubMenuSelection = gTxVfo->freq_config_TX.Code + 105;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
gSubMenuSelection = 0;
|
gSubMenuSelection = 0;
|
||||||
@ -816,7 +816,7 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_T_CTCS:
|
case MENU_T_CTCS:
|
||||||
gSubMenuSelection = (gTxVfo->ConfigTX.CodeType == CODE_TYPE_CONTINUOUS_TONE) ? gTxVfo->ConfigTX.Code + 1 : 0;
|
gSubMenuSelection = (gTxVfo->freq_config_TX.CodeType == CODE_TYPE_CONTINUOUS_TONE) ? gTxVfo->freq_config_TX.Code + 1 : 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_SFT_D:
|
case MENU_SFT_D:
|
||||||
|
@ -227,11 +227,11 @@ static void SCANNER_Key_MENU(bool bKeyPressed, bool bKeyHeld)
|
|||||||
|
|
||||||
if (gScanUseCssResult)
|
if (gScanUseCssResult)
|
||||||
{
|
{
|
||||||
gTxVfo->ConfigRX.CodeType = gScanCssResultType;
|
gTxVfo->freq_config_RX.CodeType = gScanCssResultType;
|
||||||
gTxVfo->ConfigRX.Code = gScanCssResultCode;
|
gTxVfo->freq_config_RX.Code = gScanCssResultCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
gTxVfo->ConfigTX = gTxVfo->ConfigRX;
|
gTxVfo->freq_config_TX = gTxVfo->freq_config_RX;
|
||||||
gTxVfo->STEP_SETTING = gStepSetting;
|
gTxVfo->STEP_SETTING = gStepSetting;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -239,10 +239,10 @@ static void SCANNER_Key_MENU(bool bKeyPressed, bool bKeyHeld)
|
|||||||
RADIO_ConfigureChannel(0, 2);
|
RADIO_ConfigureChannel(0, 2);
|
||||||
RADIO_ConfigureChannel(1, 2);
|
RADIO_ConfigureChannel(1, 2);
|
||||||
|
|
||||||
gTxVfo->ConfigRX.CodeType = gScanCssResultType;
|
gTxVfo->freq_config_RX.CodeType = gScanCssResultType;
|
||||||
gTxVfo->ConfigRX.Code = gScanCssResultCode;
|
gTxVfo->freq_config_RX.Code = gScanCssResultCode;
|
||||||
gTxVfo->ConfigTX.CodeType = gScanCssResultType;
|
gTxVfo->freq_config_TX.CodeType = gScanCssResultType;
|
||||||
gTxVfo->ConfigTX.Code = gScanCssResultCode;
|
gTxVfo->freq_config_TX.Code = gScanCssResultCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_MR_CHANNEL(gTxVfo->CHANNEL_SAVE))
|
if (IS_MR_CHANNEL(gTxVfo->CHANNEL_SAVE))
|
||||||
@ -431,7 +431,7 @@ void SCANNER_Stop(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gRxVfo->ConfigRX.Frequency = gRestoreFrequency;
|
gRxVfo->freq_config_RX.Frequency = gRestoreFrequency;
|
||||||
RADIO_ApplyOffset(gRxVfo);
|
RADIO_ApplyOffset(gRxVfo);
|
||||||
RADIO_ConfigureSquelchAndOutputPower(gRxVfo);
|
RADIO_ConfigureSquelchAndOutputPower(gRxVfo);
|
||||||
}
|
}
|
||||||
|
@ -376,8 +376,8 @@ static void CMD_052F(const uint8_t *pBuffer)
|
|||||||
gEeprom.RX_CHANNEL = 0;
|
gEeprom.RX_CHANNEL = 0;
|
||||||
gEeprom.DTMF_SIDE_TONE = false;
|
gEeprom.DTMF_SIDE_TONE = false;
|
||||||
gEeprom.VfoInfo[0].FrequencyReverse = false;
|
gEeprom.VfoInfo[0].FrequencyReverse = false;
|
||||||
gEeprom.VfoInfo[0].pRX = &gEeprom.VfoInfo[0].ConfigRX;
|
gEeprom.VfoInfo[0].pRX = &gEeprom.VfoInfo[0].freq_config_RX;
|
||||||
gEeprom.VfoInfo[0].pTX = &gEeprom.VfoInfo[0].ConfigTX;
|
gEeprom.VfoInfo[0].pTX = &gEeprom.VfoInfo[0].freq_config_TX;
|
||||||
gEeprom.VfoInfo[0].TX_OFFSET_FREQUENCY_DIRECTION = TX_OFFSET_FREQUENCY_DIRECTION_OFF;
|
gEeprom.VfoInfo[0].TX_OFFSET_FREQUENCY_DIRECTION = TX_OFFSET_FREQUENCY_DIRECTION_OFF;
|
||||||
gEeprom.VfoInfo[0].DTMF_PTT_ID_TX_MODE = PTT_ID_OFF;
|
gEeprom.VfoInfo[0].DTMF_PTT_ID_TX_MODE = PTT_ID_OFF;
|
||||||
gEeprom.VfoInfo[0].DTMF_DECODING_ENABLE = false;
|
gEeprom.VfoInfo[0].DTMF_DECODING_ENABLE = false;
|
||||||
|
5
board.c
5
board.c
@ -12,7 +12,6 @@
|
|||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -871,8 +870,8 @@ void BOARD_FactoryReset(bool bIsAll)
|
|||||||
for (i = 0; i < ARRAY_SIZE(gDefaultFrequencyTable); i++)
|
for (i = 0; i < ARRAY_SIZE(gDefaultFrequencyTable); i++)
|
||||||
{
|
{
|
||||||
const uint32_t Frequency = gDefaultFrequencyTable[i];
|
const uint32_t Frequency = gDefaultFrequencyTable[i];
|
||||||
gRxVfo->ConfigRX.Frequency = Frequency;
|
gRxVfo->freq_config_RX.Frequency = Frequency;
|
||||||
gRxVfo->ConfigTX.Frequency = Frequency;
|
gRxVfo->freq_config_TX.Frequency = Frequency;
|
||||||
gRxVfo->Band = FREQUENCY_GetBand(Frequency);
|
gRxVfo->Band = FREQUENCY_GetBand(Frequency);
|
||||||
SETTINGS_SaveChannel(MR_CHANNEL_FIRST + i, 0, gRxVfo, 2);
|
SETTINGS_SaveChannel(MR_CHANNEL_FIRST + i, 0, gRxVfo, 2);
|
||||||
}
|
}
|
||||||
|
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
Binary file not shown.
4
main.c
4
main.c
@ -39,10 +39,6 @@
|
|||||||
#include "ui/menu.h"
|
#include "ui/menu.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
|
||||||
#ifndef ARRAY_SIZE
|
|
||||||
#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void _putchar(char c)
|
void _putchar(char c)
|
||||||
{
|
{
|
||||||
UART_Send((uint8_t *)&c, 1);
|
UART_Send((uint8_t *)&c, 1);
|
||||||
|
50
radio.c
50
radio.c
@ -34,10 +34,6 @@
|
|||||||
#include "radio.h"
|
#include "radio.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
|
|
||||||
#ifndef ARRAY_SIZE
|
|
||||||
#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
VFO_Info_t *gTxVfo;
|
VFO_Info_t *gTxVfo;
|
||||||
VFO_Info_t *gRxVfo;
|
VFO_Info_t *gRxVfo;
|
||||||
VFO_Info_t *gCurrentVfo;
|
VFO_Info_t *gCurrentVfo;
|
||||||
@ -129,10 +125,10 @@ void RADIO_InitInfo(VFO_Info_t *pInfo, uint8_t ChannelSave, uint8_t Band, uint32
|
|||||||
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;
|
||||||
pInfo->ConfigRX.Frequency = Frequency;
|
pInfo->freq_config_RX.Frequency = Frequency;
|
||||||
pInfo->ConfigTX.Frequency = Frequency;
|
pInfo->freq_config_TX.Frequency = Frequency;
|
||||||
pInfo->pRX = &pInfo->ConfigRX;
|
pInfo->pRX = &pInfo->freq_config_RX;
|
||||||
pInfo->pTX = &pInfo->ConfigTX;
|
pInfo->pTX = &pInfo->freq_config_TX;
|
||||||
pInfo->TX_OFFSET_FREQUENCY = 1000000;
|
pInfo->TX_OFFSET_FREQUENCY = 1000000;
|
||||||
#ifdef ENABLE_COMPANDER
|
#ifdef ENABLE_COMPANDER
|
||||||
pInfo->Compander = 0; // off
|
pInfo->Compander = 0; // off
|
||||||
@ -274,15 +270,15 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg)
|
|||||||
Tmp = 0;
|
Tmp = 0;
|
||||||
gEeprom.VfoInfo[VFO].SCRAMBLING_TYPE = Tmp;
|
gEeprom.VfoInfo[VFO].SCRAMBLING_TYPE = Tmp;
|
||||||
|
|
||||||
gEeprom.VfoInfo[VFO].ConfigRX.CodeType = (Data[2] >> 0) & 0x0F;
|
gEeprom.VfoInfo[VFO].freq_config_RX.CodeType = (Data[2] >> 0) & 0x0F;
|
||||||
gEeprom.VfoInfo[VFO].ConfigTX.CodeType = (Data[2] >> 4) & 0x0F;
|
gEeprom.VfoInfo[VFO].freq_config_TX.CodeType = (Data[2] >> 4) & 0x0F;
|
||||||
|
|
||||||
Tmp = Data[0];
|
Tmp = Data[0];
|
||||||
switch (gEeprom.VfoInfo[VFO].ConfigRX.CodeType)
|
switch (gEeprom.VfoInfo[VFO].freq_config_RX.CodeType)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case CODE_TYPE_OFF:
|
case CODE_TYPE_OFF:
|
||||||
gEeprom.VfoInfo[VFO].ConfigRX.CodeType = CODE_TYPE_OFF;
|
gEeprom.VfoInfo[VFO].freq_config_RX.CodeType = CODE_TYPE_OFF;
|
||||||
Tmp = 0;
|
Tmp = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -297,14 +293,14 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg)
|
|||||||
Tmp = 0;
|
Tmp = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
gEeprom.VfoInfo[VFO].ConfigRX.Code = Tmp;
|
gEeprom.VfoInfo[VFO].freq_config_RX.Code = Tmp;
|
||||||
|
|
||||||
Tmp = Data[1];
|
Tmp = Data[1];
|
||||||
switch (gEeprom.VfoInfo[VFO].ConfigTX.CodeType)
|
switch (gEeprom.VfoInfo[VFO].freq_config_TX.CodeType)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case CODE_TYPE_OFF:
|
case CODE_TYPE_OFF:
|
||||||
gEeprom.VfoInfo[VFO].ConfigTX.CodeType = CODE_TYPE_OFF;
|
gEeprom.VfoInfo[VFO].freq_config_TX.CodeType = CODE_TYPE_OFF;
|
||||||
Tmp = 0;
|
Tmp = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -319,7 +315,7 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg)
|
|||||||
Tmp = 0;
|
Tmp = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
gEeprom.VfoInfo[VFO].ConfigTX.Code = Tmp;
|
gEeprom.VfoInfo[VFO].freq_config_TX.Code = Tmp;
|
||||||
|
|
||||||
if (Data[4] == 0xFF)
|
if (Data[4] == 0xFF)
|
||||||
{
|
{
|
||||||
@ -356,14 +352,14 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg)
|
|||||||
|
|
||||||
EEPROM_ReadBuffer(Base, &Info, sizeof(Info));
|
EEPROM_ReadBuffer(Base, &Info, sizeof(Info));
|
||||||
|
|
||||||
pRadio->ConfigRX.Frequency = Info.Frequency;
|
pRadio->freq_config_RX.Frequency = Info.Frequency;
|
||||||
|
|
||||||
if (Info.Offset >= 100000000)
|
if (Info.Offset >= 100000000)
|
||||||
Info.Offset = 1000000;
|
Info.Offset = 1000000;
|
||||||
gEeprom.VfoInfo[VFO].TX_OFFSET_FREQUENCY = Info.Offset;
|
gEeprom.VfoInfo[VFO].TX_OFFSET_FREQUENCY = Info.Offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
Frequency = pRadio->ConfigRX.Frequency;
|
Frequency = pRadio->freq_config_RX.Frequency;
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
// fix previously set incorrect band
|
// fix previously set incorrect band
|
||||||
@ -379,7 +375,7 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg)
|
|||||||
if (Channel >= FREQ_CHANNEL_FIRST)
|
if (Channel >= FREQ_CHANNEL_FIRST)
|
||||||
Frequency = FREQUENCY_FloorToStep(Frequency, gEeprom.VfoInfo[VFO].StepFrequency, LowerLimitFrequencyBandTable[Band]);
|
Frequency = FREQUENCY_FloorToStep(Frequency, gEeprom.VfoInfo[VFO].StepFrequency, LowerLimitFrequencyBandTable[Band]);
|
||||||
|
|
||||||
pRadio->ConfigRX.Frequency = Frequency;
|
pRadio->freq_config_RX.Frequency = Frequency;
|
||||||
|
|
||||||
if (Frequency >= 10800000 && Frequency < 13600000)
|
if (Frequency >= 10800000 && Frequency < 13600000)
|
||||||
gEeprom.VfoInfo[VFO].TX_OFFSET_FREQUENCY_DIRECTION = TX_OFFSET_FREQUENCY_DIRECTION_OFF;
|
gEeprom.VfoInfo[VFO].TX_OFFSET_FREQUENCY_DIRECTION = TX_OFFSET_FREQUENCY_DIRECTION_OFF;
|
||||||
@ -398,13 +394,13 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg)
|
|||||||
|
|
||||||
if (!gEeprom.VfoInfo[VFO].FrequencyReverse)
|
if (!gEeprom.VfoInfo[VFO].FrequencyReverse)
|
||||||
{
|
{
|
||||||
gEeprom.VfoInfo[VFO].pRX = &gEeprom.VfoInfo[VFO].ConfigRX;
|
gEeprom.VfoInfo[VFO].pRX = &gEeprom.VfoInfo[VFO].freq_config_RX;
|
||||||
gEeprom.VfoInfo[VFO].pTX = &gEeprom.VfoInfo[VFO].ConfigTX;
|
gEeprom.VfoInfo[VFO].pTX = &gEeprom.VfoInfo[VFO].freq_config_TX;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gEeprom.VfoInfo[VFO].pRX = &gEeprom.VfoInfo[VFO].ConfigTX;
|
gEeprom.VfoInfo[VFO].pRX = &gEeprom.VfoInfo[VFO].freq_config_TX;
|
||||||
gEeprom.VfoInfo[VFO].pTX = &gEeprom.VfoInfo[VFO].ConfigRX;
|
gEeprom.VfoInfo[VFO].pTX = &gEeprom.VfoInfo[VFO].freq_config_RX;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gSetting_350EN)
|
if (!gSetting_350EN)
|
||||||
@ -419,8 +415,8 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg)
|
|||||||
gEeprom.VfoInfo[VFO].IsAM = true;
|
gEeprom.VfoInfo[VFO].IsAM = true;
|
||||||
gEeprom.VfoInfo[VFO].SCRAMBLING_TYPE = 0;
|
gEeprom.VfoInfo[VFO].SCRAMBLING_TYPE = 0;
|
||||||
gEeprom.VfoInfo[VFO].DTMF_DECODING_ENABLE = false;
|
gEeprom.VfoInfo[VFO].DTMF_DECODING_ENABLE = false;
|
||||||
gEeprom.VfoInfo[VFO].ConfigRX.CodeType = CODE_TYPE_OFF;
|
gEeprom.VfoInfo[VFO].freq_config_RX.CodeType = CODE_TYPE_OFF;
|
||||||
gEeprom.VfoInfo[VFO].ConfigTX.CodeType = CODE_TYPE_OFF;
|
gEeprom.VfoInfo[VFO].freq_config_TX.CodeType = CODE_TYPE_OFF;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
gEeprom.VfoInfo[VFO].IsAM = false;
|
gEeprom.VfoInfo[VFO].IsAM = false;
|
||||||
@ -513,7 +509,7 @@ void RADIO_ConfigureSquelchAndOutputPower(VFO_Info_t *pInfo)
|
|||||||
|
|
||||||
void RADIO_ApplyOffset(VFO_Info_t *pInfo)
|
void RADIO_ApplyOffset(VFO_Info_t *pInfo)
|
||||||
{
|
{
|
||||||
uint32_t Frequency = pInfo->ConfigRX.Frequency;
|
uint32_t Frequency = pInfo->freq_config_RX.Frequency;
|
||||||
|
|
||||||
switch (pInfo->TX_OFFSET_FREQUENCY_DIRECTION)
|
switch (pInfo->TX_OFFSET_FREQUENCY_DIRECTION)
|
||||||
{
|
{
|
||||||
@ -542,7 +538,7 @@ void RADIO_ApplyOffset(VFO_Info_t *pInfo)
|
|||||||
Frequency = UpperLimitFrequencyBandTable[ARRAY_SIZE(UpperLimitFrequencyBandTable) - 1];
|
Frequency = UpperLimitFrequencyBandTable[ARRAY_SIZE(UpperLimitFrequencyBandTable) - 1];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
pInfo->ConfigTX.Frequency = Frequency;
|
pInfo->freq_config_TX.Frequency = Frequency;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void RADIO_SelectCurrentVfo(void)
|
static void RADIO_SelectCurrentVfo(void)
|
||||||
|
19
radio.h
19
radio.h
@ -99,38 +99,51 @@ typedef struct
|
|||||||
|
|
||||||
typedef struct VFO_Info_t
|
typedef struct VFO_Info_t
|
||||||
{
|
{
|
||||||
FREQ_Config_t ConfigRX;
|
FREQ_Config_t freq_config_RX;
|
||||||
FREQ_Config_t ConfigTX;
|
FREQ_Config_t freq_config_TX;
|
||||||
FREQ_Config_t *pRX;
|
FREQ_Config_t *pRX;
|
||||||
FREQ_Config_t *pTX;
|
FREQ_Config_t *pTX;
|
||||||
|
|
||||||
uint32_t TX_OFFSET_FREQUENCY;
|
uint32_t TX_OFFSET_FREQUENCY;
|
||||||
uint16_t StepFrequency;
|
uint16_t StepFrequency;
|
||||||
|
|
||||||
uint8_t CHANNEL_SAVE;
|
uint8_t CHANNEL_SAVE;
|
||||||
|
|
||||||
uint8_t TX_OFFSET_FREQUENCY_DIRECTION;
|
uint8_t TX_OFFSET_FREQUENCY_DIRECTION;
|
||||||
|
|
||||||
uint8_t SquelchOpenRSSIThresh;
|
uint8_t SquelchOpenRSSIThresh;
|
||||||
uint8_t SquelchOpenNoiseThresh;
|
uint8_t SquelchOpenNoiseThresh;
|
||||||
uint8_t SquelchCloseGlitchThresh;
|
uint8_t SquelchCloseGlitchThresh;
|
||||||
uint8_t SquelchCloseRSSIThresh;
|
uint8_t SquelchCloseRSSIThresh;
|
||||||
uint8_t SquelchCloseNoiseThresh;
|
uint8_t SquelchCloseNoiseThresh;
|
||||||
uint8_t SquelchOpenGlitchThresh;
|
uint8_t SquelchOpenGlitchThresh;
|
||||||
|
|
||||||
STEP_Setting_t STEP_SETTING;
|
STEP_Setting_t STEP_SETTING;
|
||||||
uint8_t OUTPUT_POWER;
|
uint8_t OUTPUT_POWER;
|
||||||
uint8_t TXP_CalculatedSetting;
|
uint8_t TXP_CalculatedSetting;
|
||||||
bool FrequencyReverse;
|
bool FrequencyReverse;
|
||||||
|
|
||||||
uint8_t SCRAMBLING_TYPE;
|
uint8_t SCRAMBLING_TYPE;
|
||||||
uint8_t CHANNEL_BANDWIDTH;
|
uint8_t CHANNEL_BANDWIDTH;
|
||||||
|
|
||||||
uint8_t SCANLIST1_PARTICIPATION;
|
uint8_t SCANLIST1_PARTICIPATION;
|
||||||
uint8_t SCANLIST2_PARTICIPATION;
|
uint8_t SCANLIST2_PARTICIPATION;
|
||||||
|
|
||||||
uint8_t Band;
|
uint8_t Band;
|
||||||
|
|
||||||
uint8_t DTMF_DECODING_ENABLE;
|
uint8_t DTMF_DECODING_ENABLE;
|
||||||
PTT_ID_t DTMF_PTT_ID_TX_MODE;
|
PTT_ID_t DTMF_PTT_ID_TX_MODE;
|
||||||
|
|
||||||
uint8_t BUSY_CHANNEL_LOCK;
|
uint8_t BUSY_CHANNEL_LOCK;
|
||||||
|
|
||||||
uint8_t AM_CHANNEL_MODE;
|
uint8_t AM_CHANNEL_MODE;
|
||||||
bool IsAM;
|
bool IsAM;
|
||||||
|
|
||||||
#ifdef ENABLE_COMPANDER
|
#ifdef ENABLE_COMPANDER
|
||||||
uint8_t Compander;
|
uint8_t Compander;
|
||||||
#endif
|
#endif
|
||||||
char Name[10 + 1];
|
|
||||||
|
char Name[16];
|
||||||
} VFO_Info_t;
|
} VFO_Info_t;
|
||||||
|
|
||||||
extern VFO_Info_t *gTxVfo;
|
extern VFO_Info_t *gTxVfo;
|
||||||
|
17
settings.c
17
settings.c
@ -177,6 +177,10 @@ void SETTINGS_SaveSettings(void)
|
|||||||
EEPROM_WriteBuffer(0x0F40, State);
|
EEPROM_WriteBuffer(0x0F40, State);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SETTINGS_LoadChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO, uint8_t Mode)
|
void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO, uint8_t Mode)
|
||||||
{
|
{
|
||||||
#ifdef ENABLE_NOAA
|
#ifdef ENABLE_NOAA
|
||||||
@ -187,23 +191,24 @@ void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO,
|
|||||||
uint16_t OffsetVFO = OffsetMR;
|
uint16_t OffsetVFO = OffsetMR;
|
||||||
|
|
||||||
if (!IS_MR_CHANNEL(Channel))
|
if (!IS_MR_CHANNEL(Channel))
|
||||||
{
|
{ // it's a VFO, not a channel
|
||||||
OffsetVFO = (VFO == 0) ? 0x0C80 : 0x0C90;
|
OffsetVFO = (VFO == 0) ? 0x0C80 : 0x0C90;
|
||||||
OffsetVFO += (Channel - FREQ_CHANNEL_FIRST) * 32;
|
OffsetVFO += (Channel - FREQ_CHANNEL_FIRST) * 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Mode >= 2 || !IS_MR_CHANNEL(Channel))
|
if (Mode >= 2 || !IS_MR_CHANNEL(Channel))
|
||||||
{
|
{ // copy VFO to a channel
|
||||||
|
|
||||||
uint32_t State32[2];
|
uint32_t State32[2];
|
||||||
uint8_t State8[8];
|
uint8_t State8[8];
|
||||||
|
|
||||||
State32[0] = pVFO->ConfigRX.Frequency;
|
State32[0] = pVFO->freq_config_RX.Frequency;
|
||||||
State32[1] = pVFO->TX_OFFSET_FREQUENCY;
|
State32[1] = pVFO->TX_OFFSET_FREQUENCY;
|
||||||
EEPROM_WriteBuffer(OffsetVFO + 0, State32);
|
EEPROM_WriteBuffer(OffsetVFO + 0, State32);
|
||||||
|
|
||||||
State8[0] = pVFO->ConfigRX.Code;
|
State8[0] = pVFO->freq_config_RX.Code;
|
||||||
State8[1] = pVFO->ConfigTX.Code;
|
State8[1] = pVFO->freq_config_TX.Code;
|
||||||
State8[2] = (pVFO->ConfigTX.CodeType << 4) | pVFO->ConfigRX.CodeType;
|
State8[2] = (pVFO->freq_config_TX.CodeType << 4) | pVFO->freq_config_RX.CodeType;
|
||||||
State8[3] = (pVFO->AM_CHANNEL_MODE << 4) | pVFO->TX_OFFSET_FREQUENCY_DIRECTION;
|
State8[3] = (pVFO->AM_CHANNEL_MODE << 4) | pVFO->TX_OFFSET_FREQUENCY_DIRECTION;
|
||||||
State8[4] = 0
|
State8[4] = 0
|
||||||
| (pVFO->BUSY_CHANNEL_LOCK << 4)
|
| (pVFO->BUSY_CHANNEL_LOCK << 4)
|
||||||
|
@ -44,7 +44,7 @@ void UI_DisplayAircopy(void)
|
|||||||
|
|
||||||
if (gInputBoxIndex == 0)
|
if (gInputBoxIndex == 0)
|
||||||
{
|
{
|
||||||
NUMBER_ToDigits(gRxVfo->ConfigRX.Frequency, String);
|
NUMBER_ToDigits(gRxVfo->freq_config_RX.Frequency, String);
|
||||||
UI_DisplayFrequency(String, 16, 2, 0, 0);
|
UI_DisplayFrequency(String, 16, 2, 0, 0);
|
||||||
UI_DisplaySmallDigits(2, String + 6, 97, 3, true);
|
UI_DisplaySmallDigits(2, String + 6, 97, 3, true);
|
||||||
}
|
}
|
||||||
|
@ -35,10 +35,6 @@
|
|||||||
#include "ui/main.h"
|
#include "ui/main.h"
|
||||||
#include "ui/ui.h"
|
#include "ui/ui.h"
|
||||||
|
|
||||||
#ifndef ARRAY_SIZE
|
|
||||||
#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ENABLE_AUDIO_BAR
|
#ifdef ENABLE_AUDIO_BAR
|
||||||
void UI_DisplayAudioBar(void)
|
void UI_DisplayAudioBar(void)
|
||||||
{
|
{
|
||||||
@ -463,7 +459,7 @@ void UI_DisplayMain(void)
|
|||||||
UI_PrintStringSmall(String, LCD_WIDTH + 46, 0, Line + 1);
|
UI_PrintStringSmall(String, LCD_WIDTH + 46, 0, Line + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gEeprom.VfoInfo[vfo_num].ConfigRX.Frequency != gEeprom.VfoInfo[vfo_num].ConfigTX.Frequency)
|
if (gEeprom.VfoInfo[vfo_num].freq_config_RX.Frequency != gEeprom.VfoInfo[vfo_num].freq_config_TX.Frequency)
|
||||||
{ // show the TX offset symbol
|
{ // show the TX offset symbol
|
||||||
const char dir_list[] = "\0+-";
|
const char dir_list[] = "\0+-";
|
||||||
const unsigned int i = gEeprom.VfoInfo[vfo_num].TX_OFFSET_FREQUENCY_DIRECTION;
|
const unsigned int i = gEeprom.VfoInfo[vfo_num].TX_OFFSET_FREQUENCY_DIRECTION;
|
||||||
|
@ -35,6 +35,9 @@
|
|||||||
#include "ui/menu.h"
|
#include "ui/menu.h"
|
||||||
#include "ui/ui.h"
|
#include "ui/ui.h"
|
||||||
|
|
||||||
|
// NOTE. this menu list is half way through a change, what might seem
|
||||||
|
// pointless at this time is for there for a reason.
|
||||||
|
//
|
||||||
const t_menu_item MenuList[] =
|
const t_menu_item MenuList[] =
|
||||||
{
|
{
|
||||||
// name, voice ID, menu ID
|
// name, voice ID, menu ID
|
||||||
@ -112,7 +115,7 @@ const t_menu_item MenuList[] =
|
|||||||
#endif
|
#endif
|
||||||
{"RESET", VOICE_ID_INITIALISATION, MENU_RESET }, // might be better to move this to the hidden menu items ?
|
{"RESET", VOICE_ID_INITIALISATION, MENU_RESET }, // might be better to move this to the hidden menu items ?
|
||||||
|
|
||||||
// hidden menu items from here on (center param set to '1')
|
// hidden menu items from here on
|
||||||
// enabled if pressing both the PTT and upper side button at power-on
|
// enabled if pressing both the PTT and upper side button at power-on
|
||||||
|
|
||||||
{"F-LOCK", VOICE_ID_INVALID, MENU_F_LOCK },
|
{"F-LOCK", VOICE_ID_INVALID, MENU_F_LOCK },
|
||||||
|
Loading…
x
Reference in New Issue
Block a user