mirror of
https://github.com/smittix/intercept.git
synced 2026-07-05 08:08:14 -07:00
feat(tscm): add custom frequency range option to RF sweep
Adds a "Custom Range" sweep type that lets users specify start/end MHz instead of using a fixed preset. Useful in dense RF environments where a full or standard sweep returns too many signals and causes slowdown. UI shows start/end MHz inputs when "Custom Range" is selected. Range is validated (0 < start < end ≤ 6000 MHz) before the sweep starts. Backend threads the ranges through to _scan_rf_signals(), which already supports arbitrary frequency bands. Closes #172
This commit is contained in:
@@ -12082,6 +12082,12 @@
|
||||
async function startTscmSweep() {
|
||||
const sweepType = document.getElementById('tscmSweepType').value;
|
||||
const baselineId = document.getElementById('tscmBaselineSelect').value || null;
|
||||
const customRanges = sweepType === 'custom' ? [{
|
||||
start: parseFloat(document.getElementById('tscmCustomStartMhz').value),
|
||||
end: parseFloat(document.getElementById('tscmCustomEndMhz').value),
|
||||
step: 0.1,
|
||||
name: `Custom ${document.getElementById('tscmCustomStartMhz').value}–${document.getElementById('tscmCustomEndMhz').value} MHz`
|
||||
}] : null;
|
||||
const wifiEnabled = document.getElementById('tscmWifiEnabled').checked;
|
||||
const btEnabled = document.getElementById('tscmBtEnabled').checked;
|
||||
const rfEnabled = document.getElementById('tscmRfEnabled').checked;
|
||||
@@ -12122,7 +12128,8 @@
|
||||
wifi_interface: wifiInterface,
|
||||
bt_interface: btInterface,
|
||||
sdr_device: sdrDevice ? parseInt(sdrDevice) : null,
|
||||
verbose_results: verboseResults
|
||||
verbose_results: verboseResults,
|
||||
custom_ranges: customRanges
|
||||
})
|
||||
});
|
||||
|
||||
@@ -12891,7 +12898,7 @@
|
||||
if (tscmSweepStartTime) {
|
||||
const elapsed = (Date.now() - tscmSweepStartTime) / 1000;
|
||||
const sweepType = document.getElementById('tscmSweepType')?.value || 'standard';
|
||||
const durations = { quick: 120, standard: 300, full: 900 };
|
||||
const durations = { quick: 120, standard: 300, full: 900, custom: 300 };
|
||||
const maxDuration = durations[sweepType] || 300;
|
||||
const progress = Math.min(95, (elapsed / maxDuration) * 100);
|
||||
updateTscmProgress({ progress: Math.round(progress), phase: 'Scanning' });
|
||||
|
||||
@@ -6,14 +6,28 @@
|
||||
|
||||
<div class="form-group">
|
||||
<label>Sweep Type</label>
|
||||
<select id="tscmSweepType">
|
||||
<select id="tscmSweepType" onchange="document.getElementById('tscmCustomRangeControls').style.display = this.value === 'custom' ? 'block' : 'none'">
|
||||
<option value="quick">Quick Scan (2 min)</option>
|
||||
<option value="standard" selected>Standard (5 min)</option>
|
||||
<option value="full">Full Sweep (15 min)</option>
|
||||
<option value="wireless_cameras">Wireless Cameras</option>
|
||||
<option value="body_worn">Body-Worn Devices</option>
|
||||
<option value="gps_trackers">GPS Trackers</option>
|
||||
<option value="custom">Custom Range</option>
|
||||
</select>
|
||||
<div id="tscmCustomRangeControls" style="display: none; margin-top: 8px;">
|
||||
<div style="display: flex; gap: 8px;">
|
||||
<div style="flex: 1;">
|
||||
<label style="font-size: 10px; color: var(--text-dim);">Start (MHz)</label>
|
||||
<input type="number" id="tscmCustomStartMhz" value="400" min="1" max="6000" step="1">
|
||||
</div>
|
||||
<div style="flex: 1;">
|
||||
<label style="font-size: 10px; color: var(--text-dim);">End (MHz)</label>
|
||||
<input type="number" id="tscmCustomEndMhz" value="500" min="1" max="6000" step="1">
|
||||
</div>
|
||||
</div>
|
||||
<p class="info-text" style="font-size: 10px; color: var(--text-dim); margin-top: 3px;">Step: 100 kHz. Duration: ~5 min.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
|
||||
Reference in New Issue
Block a user