mirror of
https://github.com/smittix/intercept.git
synced 2026-04-24 06:40:00 -07:00
Backend changes (routes/aprs.py): - Remove -q h flag from direwolf to enable audio level output - Add parse_audio_level() to extract levels from direwolf output - Add rate-limiting (max 10 updates/sec, min 2-level change) - Push meter events to SSE queue as type='meter' Frontend changes: - Add signal meter widget to APRS sidebar - Horizontal bar gauge with gradient (green->cyan->yellow->red) - Numeric level display (0-100) - "BURST" indicator for levels >70 - Status text (weak/moderate/strong signal) - "No RF activity" state after 5 seconds of silence - CSS styles in static/css/modes/aprs.css Also added UK region to dropdown (same freq as Europe: 144.800) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
72 lines
4.7 KiB
HTML
72 lines
4.7 KiB
HTML
<!-- APRS MODE -->
|
|
<div id="aprsMode" class="mode-content">
|
|
<div class="section">
|
|
<h3>APRS Tracking</h3>
|
|
<p style="color: var(--text-secondary); font-size: 11px; line-height: 1.5; margin-bottom: 15px;">
|
|
Decode APRS (Automatic Packet Reporting System) amateur radio position reports on VHF.
|
|
</p>
|
|
<div style="background: rgba(255,193,7,0.1); border: 1px solid var(--accent-yellow); border-radius: 4px; padding: 8px; margin-bottom: 10px; font-size: 10px;">
|
|
<strong style="color: var(--accent-yellow);">Amateur Radio</strong><br>
|
|
<span style="color: var(--text-secondary);">APRS operates on 144.390 MHz (N. America) or 144.800 MHz (Europe). Decodes position, weather, and messages from ham radio operators.</span>
|
|
</div>
|
|
</div>
|
|
<div class="section">
|
|
<h3>Configuration</h3>
|
|
<div class="form-group">
|
|
<label>Region</label>
|
|
<select id="aprsRegion">
|
|
<option value="north_america">North America (144.390)</option>
|
|
<option value="europe">Europe (144.800)</option>
|
|
<option value="uk">UK (144.800)</option>
|
|
<option value="australia">Australia (145.175)</option>
|
|
<option value="japan">Japan (144.640)</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Gain (dB)</label>
|
|
<input type="text" id="aprsGain" value="40" placeholder="40">
|
|
</div>
|
|
<div class="info-text" style="margin-top: 8px; display: grid; grid-template-columns: auto auto; gap: 4px 8px; align-items: center;">
|
|
<span>direwolf:</span><span class="tool-status" id="direwolfStatus">Checking...</span>
|
|
<span>multimon-ng:</span><span class="tool-status" id="aprsMultimonStatus">Checking...</span>
|
|
</div>
|
|
</div>
|
|
<button class="run-btn" id="startAprsBtn" onclick="startAprs()">
|
|
Start APRS
|
|
</button>
|
|
<button class="stop-btn" id="stopAprsBtn" onclick="stopAprs()" style="display: none;">
|
|
Stop APRS
|
|
</button>
|
|
<!-- APRS Status Bar -->
|
|
<div id="aprsStatusBar" class="aprs-status-bar" style="display: none;">
|
|
<div class="aprs-status-indicator">
|
|
<span class="aprs-status-dot" id="aprsStatusDot"></span>
|
|
<span class="aprs-status-text" id="aprsStatusText">STANDBY</span>
|
|
</div>
|
|
<div class="aprs-status-stats">
|
|
<span class="aprs-stat"><span class="aprs-stat-label">FREQ:</span> <span id="aprsStatusFreq">--</span></span>
|
|
<span class="aprs-stat"><span class="aprs-stat-label">STATIONS:</span> <span id="aprsStatusStations">0</span></span>
|
|
<span class="aprs-stat"><span class="aprs-stat-label">PACKETS:</span> <span id="aprsStatusPackets">0</span></span>
|
|
</div>
|
|
</div>
|
|
<!-- Signal Meter -->
|
|
<div id="aprsSignalMeter" class="aprs-signal-meter" style="display: none;">
|
|
<div class="aprs-meter-header">
|
|
<span class="aprs-meter-label">SIGNAL</span>
|
|
<span class="aprs-meter-value" id="aprsMeterValue">--</span>
|
|
<span class="aprs-meter-burst" id="aprsMeterBurst" style="display: none;">BURST</span>
|
|
</div>
|
|
<div class="aprs-meter-bar-container">
|
|
<div class="aprs-meter-bar" id="aprsMeterBar"></div>
|
|
<div class="aprs-meter-ticks">
|
|
<span>0</span>
|
|
<span>25</span>
|
|
<span>50</span>
|
|
<span>75</span>
|
|
<span>100</span>
|
|
</div>
|
|
</div>
|
|
<div class="aprs-meter-status" id="aprsMeterStatus">Waiting for signal...</div>
|
|
</div>
|
|
</div>
|