From 179a0ea8b8aee4d84ed918ec0581d672f8d57b28 Mon Sep 17 00:00:00 2001 From: Armel FAUVEAU Date: Sun, 18 Jan 2026 23:04:04 +0100 Subject: [PATCH] Refactoring ScList, ScPri, 1 Call, etc. --- App/app/chFrScanner.c | 2 +- App/app/menu.c | 4 +-- App/radio.c | 4 +-- App/settings.c | 67 ++++++++++++++----------------------------- App/settings.h | 4 +-- App/ui/status.c | 4 +-- 6 files changed, 30 insertions(+), 55 deletions(-) diff --git a/App/app/chFrScanner.c b/App/app/chFrScanner.c index 8236b762..b4cb6e89 100644 --- a/App/app/chFrScanner.c +++ b/App/app/chFrScanner.c @@ -250,7 +250,7 @@ static void NextFreqChannel(void) static void NextMemChannel(void) { static uint16_t prev_mr_chan = 0; - const bool enabled = (gEeprom.SCAN_LIST_DEFAULT > 0 && gEeprom.SCAN_LIST_DEFAULT <= MR_CHANNELS_LIST + 1) ? gEeprom.SCAN_LIST_ENABLED[0] : true; + const bool enabled = (gEeprom.SCAN_LIST_DEFAULT > 0 && gEeprom.SCAN_LIST_DEFAULT <= MR_CHANNELS_LIST + 1) ? gEeprom.SCAN_LIST_ENABLED : true; const int16_t chan1 = (gEeprom.SCAN_LIST_DEFAULT > 0 && gEeprom.SCAN_LIST_DEFAULT <= MR_CHANNELS_LIST + 1 && gEeprom.SCANLIST_PRIORITY_CH[0] != MR_CHANNELS_MAX) ? gEeprom.SCANLIST_PRIORITY_CH[0] : -1; const int16_t chan2 = (gEeprom.SCAN_LIST_DEFAULT > 0 && gEeprom.SCAN_LIST_DEFAULT <= MR_CHANNELS_LIST + 1 && gEeprom.SCANLIST_PRIORITY_CH[1] != MR_CHANNELS_MAX) ? gEeprom.SCANLIST_PRIORITY_CH[1] : -1; const uint16_t prev_chan = gNextMrChannel; diff --git a/App/app/menu.c b/App/app/menu.c index f1854899..38ef390a 100644 --- a/App/app/menu.c +++ b/App/app/menu.c @@ -721,7 +721,7 @@ void MENU_AcceptSetting(void) break; case MENU_S_PRI: - gEeprom.SCAN_LIST_ENABLED[0] = gSubMenuSelection; + gEeprom.SCAN_LIST_ENABLED = gSubMenuSelection; break; #ifdef ENABLE_ALARM @@ -1208,7 +1208,7 @@ void MENU_ShowCurrentSetting(void) break; case MENU_S_PRI: - gSubMenuSelection = gEeprom.SCAN_LIST_ENABLED[0]; + gSubMenuSelection = gEeprom.SCAN_LIST_ENABLED; break; case MENU_S_PRI_CH_1: diff --git a/App/radio.c b/App/radio.c index e3783bf5..a0d0d9dc 100644 --- a/App/radio.c +++ b/App/radio.c @@ -70,9 +70,9 @@ bool RADIO_CheckValidChannel(uint16_t channel, bool checkScanList, uint8_t scanL return false; } - // Exclude priority channels ONLY if SCAN_LIST_ENABLED[0] is active + // Exclude priority channels ONLY if SCAN_LIST_ENABLED is active // Otherwise, treat them as normal channels in the list - if (gEeprom.SCAN_LIST_ENABLED[0]) + if (gEeprom.SCAN_LIST_ENABLED) { const uint16_t PriorityCh1 = gEeprom.SCANLIST_PRIORITY_CH[0]; const uint16_t PriorityCh2 = gEeprom.SCANLIST_PRIORITY_CH[1]; diff --git a/App/settings.c b/App/settings.c index dc0604b0..56c01bfc 100644 --- a/App/settings.c +++ b/App/settings.c @@ -35,7 +35,6 @@ void SETTINGS_InitEEPROM(void) uint8_t Data[16] = {0}; // 0E70..0E77 PY25Q16_ReadBuffer(0x00A000, Data, 8); - gEeprom.CHAN_1_CALL = IS_MR_CHANNEL(Data[0]) ? Data[0] : MR_CHANNEL_FIRST; gEeprom.SQUELCH_LEVEL = (Data[1] < 10) ? Data[1] : 1; gEeprom.TX_TIMEOUT_TIMER = (Data[2] > 4 && Data[2] < 180) ? Data[2] : 11; #ifdef ENABLE_NOAA @@ -255,36 +254,21 @@ gEeprom.FreqChannel[1] = IS_FREQ_CHANNEL(Data16[5]) ? Data16[5] : (FREQ_CHANNE // 0F18..0F1F PY25Q16_ReadBuffer(0x00A130, Data, 8); - gEeprom.SCAN_LIST_DEFAULT = (Data[0] <= (MR_CHANNELS_LIST + 1)) ? Data[0] : 0; // we now have 'all' channel scan option - // Fake data - /* - gEeprom.SCAN_LIST_ENABLED[0] = 0; - gEeprom.SCAN_LIST_ENABLED[1] = 0; - gEeprom.SCAN_LIST_ENABLED[2] = 0; + gEeprom.SCAN_LIST_DEFAULT = ((Data[0] & 0x7F) <= (MR_CHANNELS_LIST + 1)) ? (Data[0] & 0x7F) : 0; + gEeprom.SCAN_LIST_ENABLED = (Data[0] >> 7) & 0x01; - gEeprom.SCANLIST_PRIORITY_CH[0] = 0; - gEeprom.SCANLIST_PRIORITY_CH[1] = 2; + gEeprom.SCANLIST_PRIORITY_CH[0] = + (uint16_t)Data[1] | + ((uint16_t)Data[2] << 8); - gEeprom.SCANLIST_PRIORITY_CH[2] = 14; - gEeprom.SCANLIST_PRIORITY_CH[3] = 15; + gEeprom.SCANLIST_PRIORITY_CH[1] = + (uint16_t)Data[3] | + ((uint16_t)Data[4] << 8); - gEeprom.SCANLIST_PRIORITY_CH[4] = 40; - gEeprom.SCANLIST_PRIORITY_CH[5] = 41; - */ - - // Fix me probably after Chirp update... - for (unsigned int i = 0; i < 3; i++) - { - gEeprom.SCAN_LIST_ENABLED[i] = (Data[1] >> i) & 1; - } - - for (uint8_t i = 0; i < 6; i++) - { - gEeprom.SCANLIST_PRIORITY_CH[i] = - (uint16_t)Data[2 + (i * 2)] | - ((uint16_t)Data[2 + (i * 2) + 1] << 8); - } + gEeprom.CHAN_1_CALL = + (uint16_t)Data[5] | + ((uint16_t)Data[6] << 8); // 0F40..0F47 PY25Q16_ReadBuffer(0x00A150, Data, 8); @@ -637,7 +621,6 @@ void SETTINGS_SaveSettings(void) // 0x0E70 State = SecBuf; - State[0] = gEeprom.CHAN_1_CALL; State[1] = gEeprom.SQUELCH_LEVEL; State[2] = gEeprom.TX_TIMEOUT_TIMER; #ifdef ENABLE_NOAA @@ -777,32 +760,24 @@ void SETTINGS_SaveSettings(void) // ------------------------- // 0f18 - 0f20 - memset(SecBuf, 0xff, 0x10); + memset(SecBuf, 0xff, 0x08); // 0x0F18 State = SecBuf; - State[0] = gEeprom.SCAN_LIST_DEFAULT; - tmp = 0; + State[0] = (gEeprom.SCAN_LIST_DEFAULT & 0x7F) + | ((gEeprom.SCAN_LIST_ENABLED & 0x01) << 7); - if (gEeprom.SCAN_LIST_ENABLED[0] == 1) - tmp = tmp | (1 << 0); - if (gEeprom.SCAN_LIST_ENABLED[1] == 1) - tmp = tmp | (1 << 1); - if (gEeprom.SCAN_LIST_ENABLED[2] == 1) - tmp = tmp | (1 << 2); + State[1] = (uint8_t)(gEeprom.SCANLIST_PRIORITY_CH[0] & 0xFF); + State[2] = (uint8_t)(gEeprom.SCANLIST_PRIORITY_CH[0] >> 8); - State[1] = tmp; - - for (uint8_t i = 0; i < 6; i++) - { - uint16_t v = gEeprom.SCANLIST_PRIORITY_CH[i]; + State[3] = (uint8_t)(gEeprom.SCANLIST_PRIORITY_CH[1] & 0xFF); + State[4] = (uint8_t)(gEeprom.SCANLIST_PRIORITY_CH[1] >> 8); - State[2 + (i * 2) + 0] = (uint8_t)(v & 0xFF); - State[2 + (i * 2) + 1] = (uint8_t)(v >> 8); - } + State[5] = (uint8_t)(gEeprom.CHAN_1_CALL & 0xFF); + State[6] = (uint8_t)(gEeprom.CHAN_1_CALL >> 8); - PY25Q16_WriteBuffer(0x00A130, SecBuf, 0x10, false); + PY25Q16_WriteBuffer(0x00A130, SecBuf, 0x08, false); // --------------------- // 0f40 - 0f48 diff --git a/App/settings.h b/App/settings.h index 4fc77042..bdcdf2d0 100644 --- a/App/settings.h +++ b/App/settings.h @@ -215,7 +215,7 @@ typedef struct { uint8_t BACKLIGHT_TIME; uint8_t SCAN_RESUME_MODE; uint8_t SCAN_LIST_DEFAULT; - bool SCAN_LIST_ENABLED[3]; + bool SCAN_LIST_ENABLED; uint16_t SCANLIST_PRIORITY_CH[6]; //#ifdef ENABLE_FEAT_F4HWN_RESUME_STATE // Fix me !!! What the hell is this? uint8_t CURRENT_STATE; @@ -241,7 +241,7 @@ typedef struct { uint8_t KEY_2_LONG_PRESS_ACTION; uint8_t MIC_SENSITIVITY; uint8_t MIC_SENSITIVITY_TUNING; - uint8_t CHAN_1_CALL; + uint16_t CHAN_1_CALL; #ifdef ENABLE_DTMF_CALLING char ANI_DTMF_ID[8]; char KILL_CODE[8]; diff --git a/App/ui/status.c b/App/ui/status.c index fed6d4fe..05f3ea32 100644 --- a/App/ui/status.c +++ b/App/ui/status.c @@ -99,7 +99,7 @@ void UI_DisplayStatus() if(gEeprom.SCAN_LIST_DEFAULT == MR_CHANNELS_LIST + 1) { - if(gEeprom.SCAN_LIST_ENABLED[0]==1) { + if(gEeprom.SCAN_LIST_ENABLED==1) { sprintf(str, "%s+", "ALL"); end = 19; } @@ -111,7 +111,7 @@ void UI_DisplayStatus() } else { - if(gEeprom.SCAN_LIST_ENABLED[0]==1) { + if(gEeprom.SCAN_LIST_ENABLED==1) { sprintf(str, "%02d+", gEeprom.SCAN_LIST_DEFAULT); end = 15; }