Merge pull request #57 from fagci/main

feat: squelch modes by 0, sticky (solid line) and non-sticky (dashed line)
pull/61/head release-60
Piotr Lewandowski (SQ9P) 2023-07-27 20:54:32 +02:00 zatwierdzone przez GitHub
commit 74da1c24ec
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
4 zmienionych plików z 28 dodań i 17 usunięć

Wyświetl plik

@ -22,4 +22,4 @@ void System::CopyDataSection()
extern "C" unsigned int __wrap___udivsi3(unsigned int a, unsigned int b)
{
return OrgFunc_01_26.IntDivide(a, b);
}
}

Wyświetl plik

@ -122,4 +122,4 @@ namespace System
};
}
extern "C" void __libc_init_array();
extern "C" void __libc_init_array();

Wyświetl plik

@ -120,6 +120,14 @@ public:
Fw.BK4819Write(0x30, Reg);
}
static void ToggleRXDSP(bool enabled) {
auto Reg = Fw.BK4819Read(0x30);
Reg &= ~1;
if (enabled)
Reg |= 1;
Fw.BK4819Write(0x30, Reg);
}
void SendSyncAirCopyMode72(unsigned char *p8Data) {
Fw.BK4819ConfigureAndStartTxFsk();
Fw.AirCopyFskSetup();

Wyświetl plik

@ -31,7 +31,7 @@ public:
CSpectrum()
: DisplayBuff(FwData.pDisplayBuffer), FontSmallNr(FwData.pSmallDigs),
Display(DisplayBuff), scanDelay(800), sampleZoom(2), scanStep(25_KHz),
frequencyChangeStep(100_KHz), rssiTriggerLevel(65) {
frequencyChangeStep(100_KHz), rssiTriggerLevel(65), stickyPeakTrigger(false) {
Display.SetFont(&FontSmallNr);
};
@ -47,17 +47,12 @@ public:
RadioDriver.ToggleAFDAC(true);
}
// measure peak for this moment
Listen(1000000);
highestPeakRssi = GetRssi(); // also sets freq for us
highestPeakRssi = GetRssi();
rssiHistory[highestPeakX >> sampleZoom] = highestPeakRssi;
if (highestPeakRssi >= rssiTriggerLevel) {
Listen(1000000);
return true;
}
return false;
return true;
}
inline void Scan() {
@ -67,6 +62,7 @@ public:
rssiMin = 255;
fMeasure = FStart;
RadioDriver.ToggleAFDAC(false);
Fw.BK4819Write(0x47, 0);
@ -124,7 +120,9 @@ public:
}
inline void DrawRssiTriggerLevel() {
Display.DrawLine(0, 127, Rssi2Y(rssiTriggerLevel));
for (u8 x = 0; x < 128; x += stickyPeakTrigger ? 2 : 4) {
Display.DrawLine(x, x + 2, Rssi2Y(rssiTriggerLevel));
}
}
inline void DrawTicks() {
@ -194,8 +192,9 @@ public:
break;
case 5:
ToggleBacklight();
default:
isUserInput = false;
case 0:
stickyPeakTrigger = !stickyPeakTrigger;
OnUserInput();
}
}
@ -261,7 +260,6 @@ public:
}
inline void OnUserInput() {
isUserInput = true;
u32 halfOfScanRange = scanStep << (6 - sampleZoom);
FStart = currentFreq - halfOfScanRange;
@ -316,7 +314,12 @@ private:
}
u8 GetRssi() {
Fw.BK4819Read(0x67); //reset RSSI =)
if (!stickyPeakTrigger) {
// reset RSSI register
RadioDriver.ToggleRXDSP(false);
RadioDriver.ToggleRXDSP(true);
}
Fw.DelayUs(scanDelay);
return Fw.BK4819Read(0x67);
}
@ -365,8 +368,8 @@ private:
u32 scanStep;
u32 frequencyChangeStep;
u8 rssiTriggerLevel;
bool stickyPeakTrigger;
bool working = false;
bool isUserInput = false;
bool bDisplayCleared = true;
};