kopia lustrzana https://github.com/piotr022/UV_K5_playground
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
commit
74da1c24ec
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -122,4 +122,4 @@ namespace System
|
|||
};
|
||||
}
|
||||
|
||||
extern "C" void __libc_init_array();
|
||||
extern "C" void __libc_init_array();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
Ładowanie…
Reference in New Issue