This commit is contained in:
63
settings.c
63
settings.c
@@ -53,12 +53,9 @@ void SETTINGS_InitEEPROM(void) {
|
||||
gEeprom.NOAA_AUTO_SCAN = (Data[3] < 2) ? Data[3] : false;
|
||||
#endif
|
||||
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
||||
gEeprom.KEY_LOCK = (Data[4] & 0x01) != 0;
|
||||
gEeprom.MENU_LOCK = (Data[4] & 0x02) != 0;
|
||||
gEeprom.SET_KEY = ((Data[4] >> 2) & 0x0F) > 4 ? 0 : (Data[4] >> 2) & 0x0F;
|
||||
#else
|
||||
gEeprom.KEY_LOCK = (Data[4] < 2) ? Data[4] : false;
|
||||
#endif
|
||||
gEeprom.KEY_LOCK = (Data[4] < 2) != 0 && Data[4];
|
||||
#ifdef ENABLE_VOX
|
||||
gEeprom.VOX_SWITCH = (Data[5] < 2) ? Data[5] : false;
|
||||
gEeprom.VOX_LEVEL = (Data[6] < 10) ? Data[6] : 1;
|
||||
@@ -77,12 +74,8 @@ void SETTINGS_InitEEPROM(void) {
|
||||
gEeprom.BATTERY_SAVE = (Data[3] < 6) ? Data[3] : 4;
|
||||
gEeprom.DUAL_WATCH = (Data[4] < 3) ? Data[4] : DUAL_WATCH_CHAN_A;
|
||||
gEeprom.BACKLIGHT_TIME = (Data[5] < 62) ? Data[5] : 12;
|
||||
#ifdef ENABLE_FEAT_F4HWN_NARROWER
|
||||
gEeprom.TAIL_TONE_ELIMINATION = Data[6] & 0x01;
|
||||
gSetting_set_nfm = (Data[6] >> 1) & 0x01;
|
||||
#else
|
||||
gEeprom.TAIL_TONE_ELIMINATION = (Data[6] < 2) ? Data[6] : false;
|
||||
#endif
|
||||
|
||||
gEeprom.TAIL_TONE_ELIMINATION = (Data[6] < 2) != 0 && Data[6];
|
||||
|
||||
#ifdef ENABLE_FEAT_F4HWN_RESUME_STATE
|
||||
gEeprom.VFO_OPEN = Data[7] & 0x01;
|
||||
@@ -274,10 +267,11 @@ void SETTINGS_InitEEPROM(void) {
|
||||
gEeprom.FSKSRCAddress |= Data[1] << 8;
|
||||
gEeprom.FSKSRCAddress |= Data[2] << 16;
|
||||
gEeprom.FSKSRCAddress |= Data[3] << 24;
|
||||
#ifdef ENABLE_FMRADIO
|
||||
gEeprom.BK1080_AGC_ENABLED = Data[4] & 0x01;
|
||||
gEeprom.BK1080_BLEND_CONFIG = (Data[4] >> 1) & 0x03;
|
||||
gEeprom.BK1080_DEEMPHASIS_CONFIG = (Data[4] >> 3) & 0x03;
|
||||
|
||||
#endif
|
||||
// 0F40..0F47
|
||||
EEPROM_ReadBuffer(0x0F40, Data, 8);
|
||||
gSetting_F_LOCK = (Data[0] < F_LOCK_LEN) ? Data[0] : F_LOCK_DEF;
|
||||
@@ -331,9 +325,6 @@ void SETTINGS_InitEEPROM(void) {
|
||||
EEPROM_ReadBuffer(0x1FF0, Data, 8);
|
||||
gSetting_set_ptt = (((Data[7] & 0x0F)) < 2) ? ((Data[7] & 0x0F)) : 0;
|
||||
|
||||
gSetting_set_tot = (((Data[6] & 0xF0) >> 4) < 4) ? ((Data[6] & 0xF0) >> 4) : 0;
|
||||
gSetting_set_eot = (((Data[6] & 0x0F)) < 4) ? ((Data[6] & 0x0F)) : 0;
|
||||
|
||||
/*
|
||||
int tmp = ((Data[5] & 0xF0) >> 4);
|
||||
|
||||
@@ -427,7 +418,7 @@ uint32_t SETTINGS_FetchChannelFrequency(const int channel) {
|
||||
uint32_t offset;
|
||||
} __attribute__((packed)) info;
|
||||
|
||||
EEPROM_ReadBuffer(channel * 16, &info, sizeof(info));
|
||||
EEPROM_ReadBuffer(channel * 20, &info, sizeof(info));
|
||||
|
||||
return info.frequency;
|
||||
}
|
||||
@@ -444,7 +435,7 @@ void SETTINGS_FetchChannelName(char *s, const int channel) {
|
||||
if (!RADIO_CheckValidChannel(channel, false, 0))
|
||||
return;
|
||||
|
||||
EEPROM_ReadBuffer(0x0F50 + (channel * 16), s, 10);
|
||||
EEPROM_ReadBuffer(0x0F50 + (channel * 20), s, 10);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < 10; i++)
|
||||
@@ -570,12 +561,7 @@ void SETTINGS_SaveSettings(void) {
|
||||
State[3] = false;
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
||||
State[4] = (gEeprom.KEY_LOCK ? 0x01 : 0) | (gEeprom.MENU_LOCK ? 0x02 :0) | ((gEeprom.SET_KEY & 0x0F) << 2);
|
||||
#else
|
||||
State[4] = gEeprom.KEY_LOCK;
|
||||
#endif
|
||||
|
||||
State[4] = (gEeprom.KEY_LOCK ? 0x01 : 0);
|
||||
#ifdef ENABLE_VOX
|
||||
State[5] = gEeprom.VOX_SWITCH;
|
||||
State[6] = gEeprom.VOX_LEVEL;
|
||||
@@ -606,11 +592,7 @@ void SETTINGS_SaveSettings(void) {
|
||||
State[5] = gEeprom.BACKLIGHT_TIME;
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_FEAT_F4HWN_NARROWER
|
||||
State[6] = (gEeprom.TAIL_TONE_ELIMINATION & 0x01) | ((gSetting_set_nfm & 0x03) << 1);
|
||||
#else
|
||||
State[6] = gEeprom.TAIL_TONE_ELIMINATION;
|
||||
#endif
|
||||
State[6] = gEeprom.TAIL_TONE_ELIMINATION & 0x01;
|
||||
|
||||
#ifdef ENABLE_FEAT_F4HWN_RESUME_STATE
|
||||
State[7] = (gEeprom.VFO_OPEN & 0x01) | ((gEeprom.CURRENT_STATE & 0x07) << 1) |
|
||||
@@ -703,9 +685,11 @@ void SETTINGS_SaveSettings(void) {
|
||||
State[1] = (gEeprom.FSKSRCAddress >> 8) & 0xFF;
|
||||
State[2] = (gEeprom.FSKSRCAddress >> 16) & 0xFF;
|
||||
State[3] = (gEeprom.FSKSRCAddress >> 24) & 0xFF;
|
||||
#ifdef ENABLE_FMRADIO
|
||||
State[4] = ((gEeprom.BK1080_AGC_ENABLED & 0x01) |
|
||||
((gEeprom.BK1080_BLEND_CONFIG & 0x03) << 1) |
|
||||
((gEeprom.BK1080_DEEMPHASIS_CONFIG & 0x03) << 3));
|
||||
#endif
|
||||
|
||||
EEPROM_WriteBuffer(0x0F20, State);
|
||||
|
||||
@@ -763,7 +747,6 @@ void SETTINGS_SaveSettings(void) {
|
||||
tmp = (gSetting_set_inv << 0);
|
||||
|
||||
State[5] = (tmp << 4);
|
||||
State[6] = ((gSetting_set_tot << 4) | (gSetting_set_eot & 0x0F));
|
||||
State[7] = gSetting_set_ptt & 0x0F;
|
||||
|
||||
EEPROM_WriteBuffer(0x1FF0, State);
|
||||
@@ -780,10 +763,10 @@ void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO,
|
||||
return;
|
||||
#endif
|
||||
|
||||
uint16_t OffsetVFO = Channel * 16;
|
||||
uint16_t OffsetVFO = Channel * 24;
|
||||
|
||||
if (IS_FREQ_CHANNEL(Channel)) { // it's a VFO, not a channel
|
||||
OffsetVFO = (VFO == 0) ? 0x0C80 : 0x0C90;
|
||||
OffsetVFO = (VFO == 0) ? 0x0C80 : 0x0C98;
|
||||
OffsetVFO += (Channel - FREQ_CHANNEL_FIRST) * 32;
|
||||
}
|
||||
|
||||
@@ -791,6 +774,7 @@ void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO,
|
||||
union {
|
||||
uint8_t _8[8];
|
||||
uint32_t _32[2];
|
||||
uint16_t _16[4];
|
||||
} State;
|
||||
|
||||
State._32[0] = pVFO->freq_config_RX.Frequency;
|
||||
@@ -802,8 +786,8 @@ void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO,
|
||||
State._8[2] = (pVFO->freq_config_TX.CodeType << 4) | pVFO->freq_config_RX.CodeType;
|
||||
State._8[3] = (pVFO->Modulation << 4) | pVFO->TX_OFFSET_FREQUENCY_DIRECTION;
|
||||
State._8[4] = 0
|
||||
| (pVFO->BUSY_CHANNEL_LOCK << 5)
|
||||
| (pVFO->OUTPUT_POWER << 2)
|
||||
| (pVFO->BUSY_CHANNEL_LOCK << 6)
|
||||
| (pVFO->OUTPUT_POWER << 3)
|
||||
| (pVFO->CHANNEL_BANDWIDTH << 1)
|
||||
| (pVFO->FrequencyReverse << 0);
|
||||
State._8[5] = ((pVFO->DTMF_PTT_ID_TX_MODE & 7u) << 1)
|
||||
@@ -813,8 +797,10 @@ void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO,
|
||||
;
|
||||
State._8[6] = pVFO->STEP_SETTING;
|
||||
|
||||
State._8[7] = pVFO->SCRAMBLING_TYPE;
|
||||
EEPROM_WriteBuffer(OffsetVFO + 8, State._8);
|
||||
State._16[0] = pVFO->SCRAMBLING_TYPE;
|
||||
|
||||
EEPROM_WriteBuffer(OffsetVFO + sizeof (State._32), State._8);
|
||||
EEPROM_WriteBuffer(OffsetVFO + sizeof (State._32) + sizeof (State._8), State._16);
|
||||
|
||||
SETTINGS_UpdateChannel(Channel, pVFO, true, true, true);
|
||||
|
||||
@@ -842,7 +828,7 @@ void SETTINGS_SaveBatteryCalibration(const uint16_t *batteryCalibration) {
|
||||
}
|
||||
|
||||
void SETTINGS_SaveChannelName(uint8_t channel, const char *name) {
|
||||
uint16_t offset = channel * 16;
|
||||
uint16_t offset = channel * 24;
|
||||
uint8_t buf[16] = {0};
|
||||
memcpy(buf, name, MIN(strlen(name), 10u));
|
||||
EEPROM_WriteBuffer(0x0F50 + offset, buf);
|
||||
@@ -950,10 +936,7 @@ void SETTINGS_WriteBuildOptions(void) {
|
||||
#ifdef ENABLE_SPECTRUM
|
||||
| (1 << 5)
|
||||
#endif
|
||||
#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS
|
||||
| (1 << 6)
|
||||
#endif
|
||||
;
|
||||
| (1 << 6);
|
||||
EEPROM_WriteBuffer(0x1FF0, State);
|
||||
}
|
||||
|
||||
@@ -986,7 +969,7 @@ void SETTINGS_WriteCurrentVol(void) {
|
||||
void SETTINGS_ResetTxLock(void) {
|
||||
uint8_t State[8];
|
||||
for (uint8_t channel = 0; channel < 200; channel++) {
|
||||
uint16_t OffsetVFO = channel * 16;
|
||||
uint16_t OffsetVFO = channel * 24;
|
||||
EEPROM_ReadBuffer(OffsetVFO + 8, State, sizeof(State));
|
||||
State[4] |= (1 << 6);
|
||||
EEPROM_WriteBuffer(OffsetVFO + 8, State);
|
||||
|
Reference in New Issue
Block a user