@@ -57,8 +57,8 @@ PeakInfo peak;
|
||||
ScanInfo scanInfo;
|
||||
KeyboardState kbd = {KEY_INVALID, KEY_INVALID, 0};
|
||||
|
||||
const char *bwOptions[] = {"25k", "12.5k", "6.25k"};
|
||||
const char *modulationTypeOptions[] = {"FM", "AM", "USB"};
|
||||
const char *bwOptions[] = {" 25k", "12.5k", "6.25k"};
|
||||
const char *modulationTypeOptions[] = {" FM", " AM", "USB"};
|
||||
const uint8_t modulationTypeTuneSteps[] = {100, 50, 10};
|
||||
const uint8_t modTypeReg47Values[] = {1, 7, 5};
|
||||
|
||||
@@ -66,7 +66,7 @@ SpectrumSettings settings = {STEPS_64,
|
||||
S_STEP_25_0kHz,
|
||||
80000,
|
||||
3200,
|
||||
0,
|
||||
150,
|
||||
true,
|
||||
BK4819_FILTER_BW_WIDE,
|
||||
BK4819_FILTER_BW_WIDE,
|
||||
@@ -259,8 +259,9 @@ static void SetF(uint32_t f) {
|
||||
|
||||
BK4819_SetFrequency(fMeasure);
|
||||
BK4819_PickRXFilterPathBasedOnFrequency(fMeasure);
|
||||
uint16_t reg = BK4819_ReadRegister(BK4819_REG_30);
|
||||
BK4819_WriteRegister(BK4819_REG_30, 0);
|
||||
BK4819_WriteRegister(BK4819_REG_30, 0xbff1);
|
||||
BK4819_WriteRegister(BK4819_REG_30, reg);
|
||||
}
|
||||
|
||||
// Spectrum related
|
||||
@@ -294,12 +295,16 @@ static void DeInitSpectrum() {
|
||||
isInitialized = false;
|
||||
}
|
||||
|
||||
uint8_t GetBWRegValueForScan() { return scanStepBWRegValues[0]; }
|
||||
uint8_t GetBWRegValueForScan() {
|
||||
return scanStepBWRegValues[settings.scanStepIndex];
|
||||
}
|
||||
|
||||
uint16_t GetRssi() {
|
||||
SYSTICK_DelayUs(settings.scanDelay);
|
||||
/* while ((BK4819_ReadRegister(0x63) & 0b11111111) >= 255)
|
||||
; */
|
||||
// SYSTICK_DelayUs(800);
|
||||
// testing autodelay based on Glitch value
|
||||
while ((BK4819_ReadRegister(0x63) & 0b11111111) >= 255) {
|
||||
SYSTICK_DelayUs(100);
|
||||
}
|
||||
return BK4819_GetRSSI();
|
||||
}
|
||||
|
||||
@@ -361,7 +366,9 @@ static void RelaunchScan() {
|
||||
InitScan();
|
||||
ResetPeak();
|
||||
ToggleRX(false);
|
||||
#ifdef SPECTRUM_AUTOMATIC_SQUELCH
|
||||
settings.rssiTriggerLevel = RSSI_MAX_VALUE;
|
||||
#endif
|
||||
preventKeypress = true;
|
||||
scanInfo.rssiMin = RSSI_MAX_VALUE;
|
||||
}
|
||||
@@ -409,6 +416,7 @@ static void UpdateRssiTriggerLevel(bool inc) {
|
||||
else
|
||||
settings.rssiTriggerLevel -= 2;
|
||||
redrawScreen = true;
|
||||
redrawStatus = true;
|
||||
}
|
||||
|
||||
static void UpdateDBMax(bool inc) {
|
||||
@@ -419,8 +427,8 @@ static void UpdateDBMax(bool inc) {
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
// RelaunchScan();
|
||||
redrawStatus = true;
|
||||
redrawScreen = true;
|
||||
SYSTEM_DelayMs(20);
|
||||
}
|
||||
|
||||
@@ -435,7 +443,7 @@ static void UpdateScanStep(bool inc) {
|
||||
settings.frequencyChangeStep = GetBW() >> 1;
|
||||
RelaunchScan();
|
||||
ResetBlacklist();
|
||||
redrawStatus = true;
|
||||
redrawScreen = true;
|
||||
}
|
||||
|
||||
static void UpdateCurrentFreq(bool inc) {
|
||||
@@ -511,7 +519,7 @@ static void ToggleStepsCount() {
|
||||
settings.frequencyChangeStep = GetBW() >> 1;
|
||||
RelaunchScan();
|
||||
ResetBlacklist();
|
||||
redrawStatus = true;
|
||||
redrawScreen = true;
|
||||
}
|
||||
|
||||
static void ResetFreqInput() {
|
||||
@@ -584,14 +592,15 @@ static void Blacklist() {
|
||||
|
||||
// Draw things
|
||||
|
||||
// applied x2 to prevent initial rounding
|
||||
uint8_t Rssi2PX(uint16_t rssi, uint8_t pxMin, uint8_t pxMax) {
|
||||
const int DB_MIN = settings.dbMin;
|
||||
const int DB_MAX = settings.dbMax;
|
||||
const int DB_MIN = settings.dbMin << 1;
|
||||
const int DB_MAX = settings.dbMax << 1;
|
||||
const int DB_RANGE = DB_MAX - DB_MIN;
|
||||
|
||||
const uint8_t PX_RANGE = pxMax - pxMin;
|
||||
|
||||
int dbm = clamp(Rssi2DBm(rssi), DB_MIN, DB_MAX);
|
||||
int dbm = clamp(rssi - (160 << 1), DB_MIN, DB_MAX);
|
||||
|
||||
return ((dbm - DB_MIN) * PX_RANGE + DB_RANGE / 2) / DB_RANGE + pxMin;
|
||||
}
|
||||
@@ -610,8 +619,14 @@ static void DrawSpectrum() {
|
||||
}
|
||||
|
||||
static void DrawStatus() {
|
||||
#ifdef SPECTRUM_EXTRA_VALUES
|
||||
sprintf(String, "%d/%d P:%d T:%d", settings.dbMin, settings.dbMax,
|
||||
Rssi2DBm(peak.rssi), Rssi2DBm(settings.rssiTriggerLevel));
|
||||
#else
|
||||
sprintf(String, "%d/%d", settings.dbMin, settings.dbMax);
|
||||
GUI_DisplaySmallest(String, 0, 2, true, true);
|
||||
#endif
|
||||
GUI_DisplaySmallest(String, 0, 1, true, true);
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
BOARD_ADC_GetBatteryInfo(&gBatteryVoltages[i], &gBatteryCurrent);
|
||||
}
|
||||
@@ -653,19 +668,15 @@ static void DrawStatus() {
|
||||
|
||||
static void DrawF(uint32_t f) {
|
||||
sprintf(String, "%u.%05u", f / 100000, f % 100000);
|
||||
UI_PrintStringSmall(String, 0, 127, 0);
|
||||
UI_PrintStringSmall(String, 8, 127, 0);
|
||||
|
||||
sprintf(String, "%s", modulationTypeOptions[settings.modulationType]);
|
||||
GUI_DisplaySmallest(String, 115, 1, false, true);
|
||||
GUI_DisplaySmallest(String, 116, 1, false, true);
|
||||
sprintf(String, "%s", bwOptions[settings.listenBw]);
|
||||
GUI_DisplaySmallest(String, 107, 7, false, true);
|
||||
GUI_DisplaySmallest(String, 108, 7, false, true);
|
||||
}
|
||||
|
||||
static void DrawNums() {
|
||||
sprintf(String, "P:%d", Rssi2DBm(peak.rssi));
|
||||
GUI_DisplaySmallest(String, 32, 8, false, true);
|
||||
sprintf(String, "T:%d", Rssi2DBm(settings.rssiTriggerLevel));
|
||||
GUI_DisplaySmallest(String, 64, 8, false, true);
|
||||
|
||||
if (currentState == SPECTRUM) {
|
||||
sprintf(String, "%ux", GetStepsCount());
|
||||
@@ -966,8 +977,6 @@ static void RenderStill() {
|
||||
GUI_DisplaySmallest(String, 4, 25, false, true);
|
||||
sprintf(String, "%d dBm", dbm);
|
||||
GUI_DisplaySmallest(String, 28, 25, false, true);
|
||||
sprintf(String, "V: %d", scanInfo.rssi);
|
||||
GUI_DisplaySmallest(String, 64, 25, false, true);
|
||||
|
||||
if (!monitorMode) {
|
||||
uint8_t x = Rssi2PX(settings.rssiTriggerLevel, 0, 121);
|
||||
@@ -1107,7 +1116,6 @@ static void UpdateListening() {
|
||||
}
|
||||
|
||||
if (currentState == SPECTRUM) {
|
||||
SetF(fMeasure);
|
||||
BK4819_WriteRegister(0x43, GetBWRegValueForScan());
|
||||
Measure();
|
||||
BK4819_WriteRegister(0x43, listenBWRegValues[settings.listenBw]);
|
||||
@@ -1167,7 +1175,7 @@ void APP_RunSpectrum() {
|
||||
redrawScreen = false; // we will wait until scan done
|
||||
newScanStart = true;
|
||||
|
||||
ToggleRX(false);
|
||||
ToggleRX(true), ToggleRX(false); // hack to prevent noise when squelch off
|
||||
SetModulation(settings.modulationType = MOD_FM);
|
||||
BK4819_SetFilterBandwidth(settings.listenBw = BK4819_FILTER_BW_WIDE, false);
|
||||
|
||||
|
Reference in New Issue
Block a user