0
mirror of https://github.com/OneOfEleven/uv-k5-firmware-custom.git synced 2025-04-28 14:21:25 +03:00

fix up/dn frequency tx offset bug

This commit is contained in:
OneOfEleven 2023-10-27 14:34:52 +01:00
parent ab0c37290f
commit 2a7dbc1e73
13 changed files with 65 additions and 168 deletions

View File

@ -80,12 +80,12 @@ int FM_ConfigureChannelState(void)
{
g_eeprom.fm_frequency_playing = g_eeprom.fm_selected_frequency;
if (g_eeprom.fm_is_channel_mode)
if (g_eeprom.fm_channel_mode)
{
const uint8_t Channel = FM_FindNextChannel(g_eeprom.fm_selected_channel, FM_CHANNEL_UP);
if (Channel == 0xFF)
{
g_eeprom.fm_is_channel_mode = false;
g_eeprom.fm_channel_mode = false;
return -1;
}
@ -160,7 +160,7 @@ void FM_PlayAndUpdate(void)
if (g_fm_auto_scan)
{
g_eeprom.fm_is_channel_mode = true;
g_eeprom.fm_channel_mode = true;
g_eeprom.fm_selected_channel = 0;
}
@ -261,7 +261,7 @@ static void FM_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held)
if (g_fm_scan_state != FM_SCAN_OFF)
return;
State = g_eeprom.fm_is_channel_mode ? STATE_USER_MODE : STATE_FREQ_MODE;
State = g_eeprom.fm_channel_mode ? STATE_USER_MODE : STATE_FREQ_MODE;
}
INPUTBOX_append(Key);
@ -368,7 +368,7 @@ static void FM_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held)
break;
case KEY_3:
g_eeprom.fm_is_channel_mode = !g_eeprom.fm_is_channel_mode;
g_eeprom.fm_channel_mode = !g_eeprom.fm_channel_mode;
if (!FM_ConfigureChannelState())
{
@ -478,7 +478,7 @@ static void FM_Key_MENU(bool key_pressed, bool key_held)
if (g_fm_scan_state == FM_SCAN_OFF)
{ // not scanning
if (!g_eeprom.fm_is_channel_mode)
if (!g_eeprom.fm_channel_mode)
{ // frequency mode
if (g_ask_to_save)
@ -578,7 +578,7 @@ static void FM_Key_UP_DOWN(bool key_pressed, bool key_held, int8_t Step)
return;
}
if (g_eeprom.fm_is_channel_mode)
if (g_eeprom.fm_channel_mode)
{ // we're in channel mode
const uint8_t Channel = FM_FindNextChannel(g_eeprom.fm_selected_channel + Step, Step);
if (Channel == 0xFF || g_eeprom.fm_selected_channel == Channel)
@ -659,7 +659,7 @@ void FM_Play(void)
g_fm_play_count_down_10ms = 0;
g_fm_found_frequency = true;
if (!g_eeprom.fm_is_channel_mode)
if (!g_eeprom.fm_channel_mode)
g_eeprom.fm_selected_frequency = g_eeprom.fm_frequency_playing;
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER);

View File

@ -843,9 +843,20 @@ void MAIN_Key_UP_DOWN(bool key_pressed, bool key_held, scan_state_dir_t Directio
// find the first channel that contains this frequency
g_tx_vfo->freq_in_channel = BOARD_find_channel(g_tx_vfo->freq_config_rx.frequency);
// only update eeprom when the key is released - saves a LOT of wear and tear on the little eeprom
SETTINGS_save_channel(g_tx_vfo->channel_save, g_eeprom.tx_vfo, g_tx_vfo, 1);
RADIO_ApplyOffset(g_tx_vfo);
if (!g_tx_vfo->frequency_reverse)
{
g_tx_vfo->p_rx = &g_tx_vfo->freq_config_rx;
g_tx_vfo->p_tx = &g_tx_vfo->freq_config_tx;
}
else
{
g_tx_vfo->p_rx = &g_tx_vfo->freq_config_tx;
g_tx_vfo->p_tx = &g_tx_vfo->freq_config_rx;
}
#if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG)
// UART_printf("save chan\r\n");
#endif

View File

@ -560,7 +560,7 @@ void MENU_AcceptSetting(void)
g_eeprom.vox_switch = g_sub_menu_selection != 0;
if (g_eeprom.vox_switch)
g_eeprom.vox_level = g_sub_menu_selection - 1;
BOARD_EEPROM_LoadCalibration();
BOARD_eeprom_loadCalibration();
g_flag_reconfigure_vfos = true;
g_update_status = true;
break;
@ -658,7 +658,7 @@ void MENU_AcceptSetting(void)
case MENU_MIC_GAIN:
g_eeprom.mic_sensitivity = g_sub_menu_selection;
BOARD_EEPROM_LoadCalibration();
BOARD_eeprom_loadCalibration();
g_flag_reconfigure_vfos = true;
break;
@ -1898,7 +1898,7 @@ static void MENU_Key_UP_DOWN(bool key_pressed, bool key_held, int8_t Direction)
{
case MENU_OFFSET:
{
const int32_t max_freq = 100000000;
const int32_t max_freq = MAX_TX_OFFSET;
const int32_t step_size = g_tx_vfo->step_freq;
int32_t offset = (int32_t)g_sub_menu_selection + (Direction * step_size);

View File

@ -371,7 +371,7 @@ static void cmd_051D(const uint8_t *pBuffer)
#ifdef INCLUDE_AES
if (reload_eeprom)
BOARD_EEPROM_load();
BOARD_eeprom_load();
#endif
}

45
board.c
View File

@ -517,12 +517,12 @@ void BOARD_Init(void)
#endif
}
void BOARD_EEPROM_load(void)
void BOARD_eeprom_load(void)
{
unsigned int i;
uint8_t Data[16];
memset(Data, 0, sizeof(Data));
// memset(Data, 0, sizeof(Data));
// 0E70..0E77
EEPROM_ReadBuffer(0x0E70, Data, 8);
@ -533,7 +533,7 @@ void BOARD_EEPROM_load(void)
g_eeprom.noaa_auto_scan = (Data[3] < 2) ? Data[3] : false;
#endif
#ifdef ENABLE_KEYLOCK
g_eeprom.key_lock = (Data[4] < 2) ? Data[4] : false;
g_eeprom.key_lock = (Data[4] < 2) ? Data[4] : false;
#endif
#ifdef ENABLE_VOX
g_eeprom.vox_switch = (Data[5] < 2) ? Data[5] : false;
@ -556,35 +556,30 @@ void BOARD_EEPROM_load(void)
// 0E80..0E87
EEPROM_ReadBuffer(0x0E80, Data, 8);
g_eeprom.screen_channel[0] = IS_VALID_CHANNEL(Data[0]) ? Data[0] : (FREQ_CHANNEL_FIRST + BAND6_400MHz);
g_eeprom.screen_channel[1] = IS_VALID_CHANNEL(Data[3]) ? Data[3] : (FREQ_CHANNEL_FIRST + BAND6_400MHz);
g_eeprom.user_channel[0] = IS_USER_CHANNEL(Data[1]) ? Data[1] : USER_CHANNEL_FIRST;
g_eeprom.user_channel[1] = IS_USER_CHANNEL(Data[4]) ? Data[4] : USER_CHANNEL_FIRST;
g_eeprom.freq_channel[0] = IS_FREQ_CHANNEL(Data[2]) ? Data[2] : (FREQ_CHANNEL_FIRST + BAND6_400MHz);
g_eeprom.freq_channel[1] = IS_FREQ_CHANNEL(Data[5]) ? Data[5] : (FREQ_CHANNEL_FIRST + BAND6_400MHz);
g_eeprom.screen_channel[0] = IS_VALID_CHANNEL(Data[0]) ? Data[0] : (FREQ_CHANNEL_FIRST + BAND6_400MHz);
g_eeprom.screen_channel[1] = IS_VALID_CHANNEL(Data[3]) ? Data[3] : (FREQ_CHANNEL_FIRST + BAND6_400MHz);
g_eeprom.user_channel[0] = IS_USER_CHANNEL(Data[1]) ? Data[1] : USER_CHANNEL_FIRST;
g_eeprom.user_channel[1] = IS_USER_CHANNEL(Data[4]) ? Data[4] : USER_CHANNEL_FIRST;
g_eeprom.freq_channel[0] = IS_FREQ_CHANNEL(Data[2]) ? Data[2] : (FREQ_CHANNEL_FIRST + BAND6_400MHz);
g_eeprom.freq_channel[1] = IS_FREQ_CHANNEL(Data[5]) ? Data[5] : (FREQ_CHANNEL_FIRST + BAND6_400MHz);
#ifdef ENABLE_NOAA
g_eeprom.noaa_channel[0] = IS_NOAA_CHANNEL(Data[6]) ? Data[6] : NOAA_CHANNEL_FIRST;
g_eeprom.noaa_channel[1] = IS_NOAA_CHANNEL(Data[7]) ? Data[7] : NOAA_CHANNEL_FIRST;
g_eeprom.noaa_channel[0] = IS_NOAA_CHANNEL(Data[6]) ? Data[6] : NOAA_CHANNEL_FIRST;
g_eeprom.noaa_channel[1] = IS_NOAA_CHANNEL(Data[7]) ? Data[7] : NOAA_CHANNEL_FIRST;
#endif
#ifdef ENABLE_FMRADIO
{ // 0E88..0E8F
struct
{
uint16_t SelectedFrequency;
uint8_t SelectedChannel;
uint8_t IsMrMode;
uint8_t Padding[8];
} __attribute__((packed)) FM;
uint16_t freq;
uint8_t chan;
uint8_t chan_mode;
} __attribute__((packed)) fm;
EEPROM_ReadBuffer(0x0E88, &FM, 8);
if (FM.SelectedFrequency < FM_RADIO_BAND.lower || FM.SelectedFrequency > FM_RADIO_BAND.upper)
g_eeprom.fm_selected_frequency = 960;
else
g_eeprom.fm_selected_frequency = FM.SelectedFrequency;
g_eeprom.fm_selected_channel = FM.SelectedChannel;
g_eeprom.fm_is_channel_mode = (FM.IsMrMode < 2) ? FM.IsMrMode : false;
EEPROM_ReadBuffer(0x0E88, &fm, sizeof(fm));
g_eeprom.fm_selected_frequency = (fm.freq >= FM_RADIO_BAND.lower && fm.freq < FM_RADIO_BAND.upper) ? fm.freq : FM_RADIO_BAND.lower;
g_eeprom.fm_selected_channel = fm.chan;
g_eeprom.fm_channel_mode = fm.chan_mode ? true : false;
}
// 0E40..0E67
@ -794,7 +789,7 @@ void BOARD_EEPROM_load(void)
#endif
}
void BOARD_EEPROM_LoadCalibration(void)
void BOARD_eeprom_loadCalibration(void)
{
// uint8_t Mic;

View File

@ -25,8 +25,8 @@ void BOARD_PORTCON_Init(void);
void BOARD_ADC_Init(void);
void BOARD_ADC_GetBatteryInfo(uint16_t *pVoltage, uint16_t *pCurrent);
void BOARD_Init(void);
void BOARD_EEPROM_load(void);
void BOARD_EEPROM_LoadCalibration(void);
void BOARD_eeprom_load(void);
void BOARD_eeprom_loadCalibration(void);
unsigned int BOARD_find_channel(const uint32_t frequency);
uint32_t BOARD_fetchChannelFrequency(const int channel);
unsigned int BOARD_fetchChannelStepSetting(const int channel);

Binary file not shown.

Binary file not shown.

4
main.c
View File

@ -101,9 +101,9 @@ void Main(void)
BOARD_ADC_GetBatteryInfo(&g_usb_current_voltage, &g_usb_current);
BOARD_EEPROM_load();
BOARD_eeprom_load();
BOARD_EEPROM_LoadCalibration();
BOARD_eeprom_loadCalibration();
RADIO_configure_channel(0, VFO_CONFIGURE_RELOAD);
RADIO_configure_channel(1, VFO_CONFIGURE_RELOAD);

View File

@ -259,11 +259,15 @@ void RADIO_configure_channel(const unsigned int VFO, const unsigned int configur
EEPROM_ReadBuffer(Base, &m_channel, sizeof(m_channel));
p_vfo->freq_config_rx.frequency = m_channel.frequency;
p_vfo->tx_offset_freq = (m_channel.offset < 100000000) ? m_channel.offset : 0;
p_vfo->tx_offset_freq_dir = (m_channel.tx_offset_dir <= TX_OFFSET_FREQ_DIR_SUB) ? m_channel.tx_offset_dir : TX_OFFSET_FREQ_DIR_OFF;
p_vfo->tx_offset_freq = (m_channel.tx_offset < MAX_TX_OFFSET) ? m_channel.tx_offset : 0;
p_vfo->tx_offset_freq_dir = (m_channel.tx_offset_dir < TX_OFFSET_FREQ_DIR_LAST) ? m_channel.tx_offset_dir : TX_OFFSET_FREQ_DIR_OFF;
p_vfo->am_mode = m_channel.am_mode;
p_vfo->step_setting = (m_channel.step_setting < ARRAY_SIZE(STEP_FREQ_TABLE)) ? m_channel.step_setting : STEP_12_5kHz;
p_vfo->step_freq = STEP_FREQ_TABLE[p_vfo->step_setting];
p_vfo->scrambling_type = (m_channel.scrambler < ARRAY_SIZE(g_sub_menu_scrambler)) ? m_channel.scrambler : 0;
p_vfo->freq_config_rx.code_type = m_channel.rx_ctcss_cdcss_type;

View File

@ -44,7 +44,7 @@ eeprom_config_t g_eeprom;
memset(&state, 0xFF, sizeof(state));
state.channel = g_eeprom.fm_selected_channel;
state.frequency = g_eeprom.fm_selected_frequency;
state.is_channel_selected = g_eeprom.fm_is_channel_mode;
state.is_channel_selected = g_eeprom.fm_channel_mode;
EEPROM_WriteBuffer8(0x0E88, &state);
@ -75,121 +75,6 @@ void SETTINGS_save_vfo_indices(void)
EEPROM_WriteBuffer8(0x0E80, State);
}
// *************************************************
#if 0
const uint8_t calib1[] =
{ // my first radios calibration data
0x0A, 0x4B, 0x53, 0x56, 0x59, 0x5C, 0x5F, 0x62, 0x64, 0x66, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x46, 0x50, 0x53, 0x56, 0x59, 0x5C, 0x5F,
0x62, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5A, 0x2D, 0x29, 0x26,
0x23, 0x20, 0x1D, 0x1A, 0x17, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x64, 0x30, 0x2D, 0x29, 0x26, 0x23, 0x20, 0x1D, 0x1A, 0x17, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x5A, 0x14, 0x11, 0x0E, 0x0B, 0x08, 0x03, 0x02,
0x02, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0x11, 0x0E, 0x0B,
0x08, 0x05, 0x05, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x32, 0x68, 0x6B, 0x6E, 0x6F, 0x72, 0x75, 0x77, 0x79, 0x7B, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0x64, 0x67, 0x6A, 0x6C, 0x6E, 0x71, 0x73,
0x76, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0x32, 0x2D, 0x28,
0x24, 0x21, 0x1E, 0x1A, 0x17, 0x16, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x46, 0x37, 0x32, 0x2D, 0x28, 0x25, 0x22, 0x1E, 0x1B, 0x19, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x5A, 0x19, 0x0F, 0x0A, 0x09, 0x08, 0x07, 0x06,
0x05, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0x1E, 0x14, 0x0F,
0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x6E, 0x00, 0x78, 0x00, 0x82, 0x00, 0x8C, 0x00, 0x86, 0x00, 0xAA, 0x00,
0xCE, 0x00, 0xF2, 0x00, 0x32, 0x32, 0x32, 0x64, 0x64, 0x64, 0x8C, 0x8C,
0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x32, 0x32, 0x32, 0x64,
0x64, 0x64, 0x8C, 0x8C, 0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x5F, 0x5F, 0x5F, 0x69, 0x69, 0x69, 0x91, 0x91, 0x8F, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x32, 0x32, 0x32, 0x64, 0x64, 0x64, 0x8C, 0x8C,
0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5A, 0x5A, 0x5A, 0x64,
0x64, 0x64, 0x82, 0x82, 0x82, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x5A, 0x5A, 0x5A, 0x64, 0x64, 0x64, 0x8F, 0x91, 0x8A, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x32, 0x32, 0x32, 0x64, 0x64, 0x64, 0x8C, 0x8C,
0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0x04, 0xFA, 0x06,
0x45, 0x07, 0x5E, 0x07, 0xC5, 0x07, 0xFC, 0x08, 0xFF, 0xFF, 0xFF, 0xFF,
0x1E, 0x00, 0x32, 0x00, 0x46, 0x00, 0x5A, 0x00, 0x6E, 0x00, 0x82, 0x00,
0x96, 0x00, 0xAA, 0x00, 0xC8, 0x00, 0xE6, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
0x14, 0x00, 0x28, 0x00, 0x3C, 0x00, 0x50, 0x00, 0x64, 0x00, 0x78, 0x00,
0x8C, 0x00, 0xA0, 0x00, 0xBE, 0x00, 0xDC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
0x03, 0x08, 0x10, 0x18, 0x1F, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x46, 0x00,
0x50, 0x00, 0x2C, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
const uint8_t calib2[] =
{ // my 2nd radios calibration data
0x0A, 0x4B, 0x53, 0x56, 0x59, 0x5C, 0x5F, 0x62, 0x64, 0x66, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x46, 0x50, 0x53, 0x56, 0x59, 0x5C, 0x5F,
0x62, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5A, 0x2D, 0x29, 0x26,
0x23, 0x20, 0x1D, 0x1A, 0x17, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x64, 0x30, 0x2D, 0x29, 0x26, 0x23, 0x20, 0x1D, 0x1A, 0x17, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x5A, 0x14, 0x11, 0x0E, 0x0B, 0x08, 0x03, 0x02,
0x02, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0x11, 0x0E, 0x0B,
0x08, 0x05, 0x05, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x32, 0x68, 0x6B, 0x6E, 0x6F, 0x72, 0x75, 0x77, 0x79, 0x7B, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0x64, 0x67, 0x6A, 0x6C, 0x6E, 0x71, 0x73,
0x76, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0x32, 0x2D, 0x28,
0x24, 0x21, 0x1E, 0x1A, 0x17, 0x16, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x46, 0x37, 0x32, 0x2D, 0x28, 0x25, 0x22, 0x1E, 0x1B, 0x19, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x5A, 0x19, 0x0F, 0x0A, 0x09, 0x08, 0x07, 0x06,
0x05, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0x1E, 0x14, 0x0F,
0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x6E, 0x00, 0x78, 0x00, 0x82, 0x00, 0x8C, 0x00, 0x86, 0x00, 0xAA, 0x00,
0xCE, 0x00, 0xF2, 0x00, 0x32, 0x32, 0x32, 0x64, 0x64, 0x64, 0x8C, 0x8C,
0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x32, 0x32, 0x32, 0x64,
0x64, 0x64, 0x8C, 0x8C, 0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x5F, 0x5F, 0x5F, 0x69, 0x69, 0x69, 0x7B, 0x7D, 0x7F, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x32, 0x32, 0x32, 0x64, 0x64, 0x64, 0x8C, 0x8C,
0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5A, 0x5A, 0x5A, 0x64,
0x64, 0x64, 0x82, 0x82, 0x82, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x5A, 0x5A, 0x5A, 0x64, 0x64, 0x64, 0x8B, 0x8D, 0x8A, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x32, 0x32, 0x32, 0x64, 0x64, 0x64, 0x8C, 0x8C,
0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x04, 0x10, 0x07,
0x5A, 0x07, 0x73, 0x07, 0xD9, 0x07, 0xFC, 0x08, 0xFF, 0xFF, 0xFF, 0xFF,
0x1E, 0x00, 0x32, 0x00, 0x46, 0x00, 0x5A, 0x00, 0x6E, 0x00, 0x82, 0x00,
0x96, 0x00, 0xAA, 0x00, 0xC8, 0x00, 0xE6, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
0x14, 0x00, 0x28, 0x00, 0x3C, 0x00, 0x50, 0x00, 0x64, 0x00, 0x78, 0x00,
0x8C, 0x00, 0xA0, 0x00, 0xBE, 0x00, 0xDC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
0x03, 0x08, 0x0E, 0x13, 0x18, 0xFF, 0xFF, 0xFF, 0x05, 0x00, 0x46, 0x00,
0x50, 0x00, 0x2C, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
void SETTINGS_restore_calibration(void)
{
// const uint8_t buf[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
unsigned int index = 0;
while (index < sizeof(calib2))
{
const unsigned int addr = 0x1E00 + index;
EEPROM_WriteBuffer8(addr, &calib2[index]);
// EEPROM_WriteBuffer8(addr, buf);
index += 8;
}
}
#endif
// *************************************************
void SETTINGS_save(void)
{
uint8_t State[8];
@ -381,7 +266,7 @@ void SETTINGS_save_channel(const unsigned int channel, const unsigned int vfo, c
{
memset(&m_channel, 0, sizeof(m_channel));
m_channel.frequency = p_vfo->freq_config_rx.frequency;
m_channel.offset = p_vfo->tx_offset_freq;
m_channel.tx_offset = p_vfo->tx_offset_freq;
m_channel.rx_ctcss_cdcss_code = p_vfo->freq_config_rx.code;
m_channel.tx_ctcss_cdcss_code = p_vfo->freq_config_tx.code;
m_channel.rx_ctcss_cdcss_type = p_vfo->freq_config_rx.code_type;

View File

@ -63,10 +63,12 @@ enum {
DUAL_WATCH_CHAN_B
};
#define MAX_TX_OFFSET 100000000
enum {
TX_OFFSET_FREQ_DIR_OFF = 0,
TX_OFFSET_FREQ_DIR_ADD,
TX_OFFSET_FREQ_DIR_SUB
TX_OFFSET_FREQ_DIR_SUB,
TX_OFFSET_FREQ_DIR_LAST
};
enum {
@ -137,7 +139,7 @@ typedef struct {
// [0]
uint32_t frequency; //
// [4]
uint32_t offset; //
uint32_t tx_offset; //
// [8]
uint8_t rx_ctcss_cdcss_code; //
// [9]
@ -325,7 +327,7 @@ typedef struct {
uint8_t noaa_channel_b; //
uint8_t fm_selected_frequency; //
uint8_t fm_selected_channel; //
uint8_t fm_is_channel_mode; //
uint8_t fm_channel_mode; //
uint8_t unused5[5]; // 0xff's
// 0x0E90
@ -481,7 +483,7 @@ typedef struct {
#ifdef ENABLE_FMRADIO
uint16_t fm_selected_frequency;
uint8_t fm_selected_channel;
bool fm_is_channel_mode;
bool fm_channel_mode;
uint16_t fm_frequency_playing;
#endif

View File

@ -69,7 +69,7 @@ void UI_DisplayFM(void)
if (g_fm_scan_state == FM_SCAN_OFF)
{
if (!g_eeprom.fm_is_channel_mode)
if (!g_eeprom.fm_channel_mode)
{
for (i = 0; i < ARRAY_SIZE(g_fm_channels); i++)
{
@ -109,7 +109,7 @@ void UI_DisplayFM(void)
sprintf(String + strlen(String), " (%u.%u)", freq / 10, freq % 10);
}
else
if (g_eeprom.fm_is_channel_mode && g_input_box_index > 0)
if (g_eeprom.fm_channel_mode && g_input_box_index > 0)
{ // user is entering a channel number
UI_GenerateChannelString(String, g_fm_channel_position, ' ');
}