Add Device, Stream, and Config screens to TUI (F6-F8)
Expand from 5 to 8 mode screens. F6 Device provides firmware management, EEPROM flash with full safety state machine (C2 validation, auto-backup, 3s countdown, page write, byte verify), and diagnostics (boot test, I2C scan, register dump). F7 Stream does live TS capture with PID distribution and PAT/PMT tree. F8 Config manages LNB power, DiSEqC switching, and modulation/FEC. Foundation: 12 new SkyWalker1 methods (device info, FX2 RAM, EEPROM I2C, diagnostics), matching DemoDevice synthetics with realistic C2 image and TS packets, 20 bridge wrappers (RLock).
This commit is contained in:
parent
5d9dfa7794
commit
567bf4d9e0
13 changed files with 3304 additions and 5 deletions
|
|
@ -1,9 +1,9 @@
|
|||
"""SkyWalker-1 TUI — main application.
|
||||
|
||||
Provides mode switching between 5 RF operating modes via a sidebar and F-key
|
||||
shortcuts. Each mode is a Screen subclass that manages its own workers.
|
||||
Provides mode switching between 8 operating modes via a sidebar and F-key
|
||||
shortcuts. Each mode is a Container subclass that manages its own workers.
|
||||
|
||||
Note: We use "rf_mode" terminology for our 5 operating modes to avoid colliding
|
||||
Note: We use "rf_mode" terminology for our operating modes to avoid colliding
|
||||
with Textual's built-in App.mode / _current_mode / _screen_stacks system.
|
||||
"""
|
||||
|
||||
|
|
@ -24,6 +24,9 @@ from skywalker_tui.screens.scan import ScanScreen
|
|||
from skywalker_tui.screens.monitor import MonitorScreen
|
||||
from skywalker_tui.screens.lband import LBandScreen
|
||||
from skywalker_tui.screens.track import TrackScreen
|
||||
from skywalker_tui.screens.device import DeviceScreen
|
||||
from skywalker_tui.screens.stream import StreamScreen
|
||||
from skywalker_tui.screens.config import ConfigScreen
|
||||
|
||||
|
||||
MODES = {
|
||||
|
|
@ -32,6 +35,9 @@ MODES = {
|
|||
"monitor": ("F3 Monitor", MonitorScreen),
|
||||
"lband": ("F4 L-Band", LBandScreen),
|
||||
"track": ("F5 Track", TrackScreen),
|
||||
"device": ("F6 Device", DeviceScreen),
|
||||
"stream": ("F7 Stream", StreamScreen),
|
||||
"config": ("F8 Config", ConfigScreen),
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -48,6 +54,9 @@ class SkyWalkerApp(App):
|
|||
Binding("f3", "rf_mode('monitor')", "Monitor", show=True),
|
||||
Binding("f4", "rf_mode('lband')", "L-Band", show=True),
|
||||
Binding("f5", "rf_mode('track')", "Track", show=True),
|
||||
Binding("f6", "rf_mode('device')", "Device", show=True),
|
||||
Binding("f7", "rf_mode('stream')", "Stream", show=True),
|
||||
Binding("f8", "rf_mode('config')", "Config", show=True),
|
||||
Binding("q", "quit", "Quit", show=True),
|
||||
Binding("d", "toggle_dark", "Theme", show=True),
|
||||
Binding("ctrl+w", "starwars", "Star Wars", show=False),
|
||||
|
|
@ -100,7 +109,7 @@ class SkyWalkerApp(App):
|
|||
self.call_later(self._init_mode_screens)
|
||||
|
||||
def _init_mode_screens(self) -> None:
|
||||
"""Mount all 5 mode screens into the content switcher."""
|
||||
"""Mount all 8 mode screens into the content switcher."""
|
||||
switcher = self.query_one("#content-area", ContentSwitcher)
|
||||
for mode_key, (_label, cls) in MODES.items():
|
||||
screen = cls(self._bridge, id=f"screen-{mode_key}")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue