Do some stuff
All checks were successful
Build Firmware / build (push) Successful in 2m19s

This commit is contained in:
2025-03-28 22:07:50 +01:00
parent 4fe99744e1
commit 85fb527020
23 changed files with 258 additions and 658 deletions

View File

@@ -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);