mirror of
https://github.com/armel/uv-k1-k5v3-firmware-custom.git
synced 2026-10-02 11:08:20 +00:00
Code refactoring (44 B)
This commit is contained in:
1 parent
0004074ffe
commit
679cf4ea1f
1 file changed
+41
-40
+41
-40
@@ -646,8 +646,9 @@ static void UpdateScanInfo()
|
||||
{
|
||||
scanInfo.rssiMin = scanInfo.rssi;
|
||||
settings.dbMin = Rssi2DBm(scanInfo.rssiMin);
|
||||
if (settings.dbMin > settings.dbMax - 10)
|
||||
settings.dbMin = settings.dbMax - 10;
|
||||
int dbMax = settings.dbMax - 10;
|
||||
if (settings.dbMin > dbMax)
|
||||
settings.dbMin = dbMax;
|
||||
redrawStatus = true;
|
||||
}
|
||||
}
|
||||
@@ -676,18 +677,15 @@ static void AutoTriggerLevel()
|
||||
|
||||
// Adaptive slew: follow noise floor changes with rate limiting.
|
||||
// Faster convergence when the gap is large (e.g. after filter BW change).
|
||||
int16_t diff = (int16_t)target - (int16_t)settings.rssiTriggerLevel;
|
||||
int16_t diff = (int16_t)target - (int16_t)settings.rssiTriggerLevel;
|
||||
bool diffSign = diff < 0;
|
||||
|
||||
diff = my_abs(diff);
|
||||
|
||||
if (diff > 4)
|
||||
{
|
||||
int16_t step = (diff > 12) ? 4 : ((diff > 6) ? 2 : 1);
|
||||
settings.rssiTriggerLevel += step;
|
||||
}
|
||||
else if (diff < -4)
|
||||
{
|
||||
int16_t absDiff = -diff;
|
||||
int16_t step = (absDiff > 12) ? 4 : ((absDiff > 6) ? 2 : 1);
|
||||
settings.rssiTriggerLevel -= step;
|
||||
settings.rssiTriggerLevel += diffSign ? -step : step;
|
||||
}
|
||||
// Dead zone ±4: hold steady to avoid jitter near target
|
||||
}
|
||||
@@ -731,10 +729,11 @@ static void SetRssiHistory(uint16_t idx, uint16_t rssi)
|
||||
return;
|
||||
}
|
||||
|
||||
uint16_t prev = rssiHistory[slot];
|
||||
|
||||
#ifdef ENABLE_SCAN_RANGES
|
||||
if (scanInfo.measurementsCount > ARRAY_SIZE(rssiHistory))
|
||||
{
|
||||
uint16_t prev = rssiHistory[slot];
|
||||
if (prev == RSSI_MAX_VALUE)
|
||||
return;
|
||||
// For large ranges: keep fast attack, soften decay to reduce flicker.
|
||||
@@ -746,7 +745,6 @@ static void SetRssiHistory(uint16_t idx, uint16_t rssi)
|
||||
}
|
||||
#endif
|
||||
// Attack/decay: instant rise, fast fall for stable display
|
||||
uint16_t prev = rssiHistory[slot];
|
||||
if (rssi >= prev) {
|
||||
rssiHistory[slot] = rssi; // Attack: instant
|
||||
} else {
|
||||
@@ -1124,26 +1122,33 @@ static void CalcCrest(const uint8_t *yArr, uint8_t x,
|
||||
*crestTop = y0;
|
||||
*crestBot = y0;
|
||||
|
||||
if (x > 0)
|
||||
{
|
||||
uint8_t n = yArr[x - 1];
|
||||
if (n != SPECTRUM_TOPY_SKIP && n <= DrawingEndY)
|
||||
{
|
||||
uint8_t mid = (y0 + n + 1) >> 1;
|
||||
if (mid < *crestTop) *crestTop = mid;
|
||||
if (mid > *crestBot) *crestBot = mid;
|
||||
}
|
||||
bool goBack = true;
|
||||
uint8_t n = 0;
|
||||
|
||||
if (x > 0) {
|
||||
n = yArr[x - 1];
|
||||
goto Start;
|
||||
}
|
||||
if (x + 1 < 128)
|
||||
{
|
||||
uint8_t n = yArr[x + 1];
|
||||
if (n != SPECTRUM_TOPY_SKIP && n <= DrawingEndY)
|
||||
{
|
||||
uint8_t mid = (y0 + n + 1) >> 1;
|
||||
if (mid < *crestTop) *crestTop = mid;
|
||||
if (mid > *crestBot) *crestBot = mid;
|
||||
}
|
||||
|
||||
Back:
|
||||
goBack = false;
|
||||
|
||||
if (x + 1 < 128) {
|
||||
n = yArr[x + 1];
|
||||
goto Start;
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
Start:
|
||||
if (n != SPECTRUM_TOPY_SKIP && n <= DrawingEndY) {
|
||||
uint8_t mid = (y0 + n + 1) >> 1;
|
||||
if (mid < *crestTop) *crestTop = mid;
|
||||
if (mid > *crestBot) *crestBot = mid;
|
||||
}
|
||||
|
||||
if (goBack)
|
||||
goto Back;
|
||||
}
|
||||
|
||||
// Draw the spectrum curve (solid crest + checkerboard body) and the peak hold
|
||||
@@ -1398,15 +1403,10 @@ static void DrawNums()
|
||||
if (currentState == SPECTRUM)
|
||||
{
|
||||
#ifdef ENABLE_SCAN_RANGES
|
||||
if (gScanRangeStart)
|
||||
{
|
||||
sprintf(String, "%ux", GetStepsCountDisplay());
|
||||
}
|
||||
else
|
||||
sprintf(String, "%ux", gScanRangeStart ? GetStepsCountDisplay() : GetStepsCount());
|
||||
#else
|
||||
sprintf(String, "%ux", GetStepsCount());
|
||||
#endif
|
||||
{
|
||||
sprintf(String, "%ux", GetStepsCount());
|
||||
}
|
||||
GUI_DisplaySmallest(String, 0, 1, false, true);
|
||||
sprintf(String, "%u.%02uk", GetScanStep() / 100, GetScanStep() % 100);
|
||||
GUI_DisplaySmallest(String, 0, 7, false, true);
|
||||
@@ -1905,8 +1905,9 @@ static void UpdateScan()
|
||||
redrawStatus = true;
|
||||
} else if (!manualSetFlag) {
|
||||
int newMax = Rssi2DBm(scanInfo.rssiMax) + 5;
|
||||
if (newMax < settings.dbMin + 10)
|
||||
newMax = settings.dbMin + 10;
|
||||
int dbMin = settings.dbMin + 10;
|
||||
if (newMax < dbMin)
|
||||
newMax = dbMin;
|
||||
if (newMax > 10)
|
||||
newMax = 10;
|
||||
settings.dbMax = newMax;
|
||||
|
||||
Reference in new issue
Block a user