mirror of
https://github.com/smittix/intercept.git
synced 2026-04-24 06:40:00 -07:00
feat(ook): add persistent frequency presets with add/remove/reset
Replace hardcoded frequency buttons with localStorage-backed presets. Default presets are standard ISM frequencies (433.920, 315, 868, 915 MHz). Users can add custom frequencies, right-click to remove, and reset to defaults — matching the pager module pattern. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,8 @@
|
|||||||
var OokMode = (function () {
|
var OokMode = (function () {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
var DEFAULT_FREQ_PRESETS = ['433.920', '315.000', '868.000', '915.000'];
|
||||||
|
|
||||||
var state = {
|
var state = {
|
||||||
running: false,
|
running: false,
|
||||||
initialized: false,
|
initialized: false,
|
||||||
@@ -28,6 +30,7 @@ var OokMode = (function () {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
state.initialized = true;
|
state.initialized = true;
|
||||||
|
renderPresets();
|
||||||
checkStatus();
|
checkStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -392,6 +395,58 @@ var OokMode = (function () {
|
|||||||
if (el) el.value = mhz;
|
if (el) el.value = mhz;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ---- Frequency presets (localStorage) ----
|
||||||
|
|
||||||
|
function loadPresets() {
|
||||||
|
var saved = localStorage.getItem('ookFreqPresets');
|
||||||
|
return saved ? JSON.parse(saved) : DEFAULT_FREQ_PRESETS.slice();
|
||||||
|
}
|
||||||
|
|
||||||
|
function savePresets(presets) {
|
||||||
|
localStorage.setItem('ookFreqPresets', JSON.stringify(presets));
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderPresets() {
|
||||||
|
var container = document.getElementById('ookPresetButtons');
|
||||||
|
if (!container) return;
|
||||||
|
var presets = loadPresets();
|
||||||
|
container.innerHTML = presets.map(function (freq) {
|
||||||
|
return '<button class="preset-btn" onclick="OokMode.setFreq(\'' + freq + '\')" ' +
|
||||||
|
'oncontextmenu="OokMode.removePreset(\'' + freq + '\'); return false;" ' +
|
||||||
|
'title="Right-click to remove">' + freq + '</button>';
|
||||||
|
}).join('');
|
||||||
|
}
|
||||||
|
|
||||||
|
function addPreset() {
|
||||||
|
var input = document.getElementById('ookNewPresetFreq');
|
||||||
|
if (!input) return;
|
||||||
|
var freq = input.value.trim();
|
||||||
|
if (!freq || isNaN(parseFloat(freq))) {
|
||||||
|
alert('Enter a valid frequency (MHz)');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var presets = loadPresets();
|
||||||
|
if (presets.indexOf(freq) === -1) {
|
||||||
|
presets.push(freq);
|
||||||
|
savePresets(presets);
|
||||||
|
renderPresets();
|
||||||
|
}
|
||||||
|
input.value = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
function removePreset(freq) {
|
||||||
|
if (!confirm('Remove preset ' + freq + ' MHz?')) return;
|
||||||
|
var presets = loadPresets().filter(function (p) { return p !== freq; });
|
||||||
|
savePresets(presets);
|
||||||
|
renderPresets();
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetPresets() {
|
||||||
|
if (!confirm('Reset to default presets?')) return;
|
||||||
|
savePresets(DEFAULT_FREQ_PRESETS.slice());
|
||||||
|
renderPresets();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply a timing preset — fills all six pulse timing fields at once.
|
* Apply a timing preset — fills all six pulse timing fields at once.
|
||||||
* @param {number} s Short pulse (µs)
|
* @param {number} s Short pulse (µs)
|
||||||
@@ -495,6 +550,10 @@ var OokMode = (function () {
|
|||||||
start: start,
|
start: start,
|
||||||
stop: stop,
|
stop: stop,
|
||||||
setFreq: setFreq,
|
setFreq: setFreq,
|
||||||
|
addPreset: addPreset,
|
||||||
|
removePreset: removePreset,
|
||||||
|
resetPresets: resetPresets,
|
||||||
|
renderPresets: renderPresets,
|
||||||
setEncoding: setEncoding,
|
setEncoding: setEncoding,
|
||||||
setTiming: setTiming,
|
setTiming: setTiming,
|
||||||
setBitOrder: setBitOrder,
|
setBitOrder: setBitOrder,
|
||||||
|
|||||||
@@ -16,17 +16,15 @@
|
|||||||
<input type="number" id="ookFrequency" value="433.920" step="0.001" min="1" max="1766">
|
<input type="number" id="ookFrequency" value="433.920" step="0.001" min="1" max="1766">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Presets</label>
|
<label>Presets <span style="font-size:9px; color:#555;">(right-click to remove)</span></label>
|
||||||
<div style="display: flex; flex-wrap: wrap; gap: 4px;">
|
<div id="ookPresetButtons" style="display: flex; flex-wrap: wrap; gap: 4px;">
|
||||||
<button class="preset-btn" onclick="OokMode.setFreq(433.200)">433.2</button>
|
<!-- Populated by OokMode.renderPresets() -->
|
||||||
<button class="preset-btn" onclick="OokMode.setFreq(433.500)">433.5</button>
|
</div>
|
||||||
<button class="preset-btn" onclick="OokMode.setFreq(433.600)">433.6</button>
|
<div style="margin-top: 6px; display: flex; gap: 4px;">
|
||||||
<button class="preset-btn" onclick="OokMode.setFreq(433.700)">433.7</button>
|
<input type="text" id="ookNewPresetFreq" placeholder="MHz"
|
||||||
<button class="preset-btn" onclick="OokMode.setFreq(433.800)">433.8</button>
|
style="width: 80px; background: #111; border: 1px solid #222; border-radius: 3px; color: var(--text-dim); font-family: var(--font-mono); font-size: 11px; padding: 3px 6px;">
|
||||||
<button class="preset-btn" onclick="OokMode.setFreq(433.920)">433.9</button>
|
<button class="preset-btn" onclick="OokMode.addPreset()" style="background: #2ecc71; color: #000;">Add</button>
|
||||||
<button class="preset-btn" onclick="OokMode.setFreq(315.000)">315</button>
|
<button class="preset-btn" onclick="OokMode.resetPresets()" style="font-size: 10px;">Reset</button>
|
||||||
<button class="preset-btn" onclick="OokMode.setFreq(868.000)">868</button>
|
|
||||||
<button class="preset-btn" onclick="OokMode.setFreq(915.000)">915</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user