Implement Track mode (Phase 6) with rotctld server
TUI-compatible Hamlib rotctld TCP server that works with the existing SerialBridge/DemoDevice interface. F2 Control's Track tab now starts/stops a real TCP server on the configured port. Status callbacks report connection state, move count, and command rate back to the TrackingPanel via thread-safe call_from_thread. Includes 7 pilot tests exercising the full protocol path through asyncio TCP clients against the DemoDevice.
This commit is contained in:
parent
ce24f7c478
commit
a249c98208
4 changed files with 689 additions and 9 deletions
34
tui/scripts/take_screenshots.py
Normal file
34
tui/scripts/take_screenshots.py
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
"""Take screenshots of all TUI screens in demo mode for documentation."""
|
||||
|
||||
import asyncio
|
||||
|
||||
from birdcage_tui.app import BirdcageApp
|
||||
|
||||
SCREENS = {
|
||||
"f1": "dashboard",
|
||||
"f2": "control",
|
||||
"f3": "signal",
|
||||
"f4": "system",
|
||||
}
|
||||
|
||||
OUT_DIR = "/home/rpm/claude/ham/satellite/winegard-travler/site/public/screenshots"
|
||||
|
||||
|
||||
async def main():
|
||||
for key, name in SCREENS.items():
|
||||
app = BirdcageApp()
|
||||
app.demo_mode = True
|
||||
|
||||
async with app.run_test(size=(120, 40)) as pilot:
|
||||
await pilot.pause()
|
||||
await pilot.press(key)
|
||||
await pilot.pause()
|
||||
# Let workers populate data.
|
||||
await asyncio.sleep(1.5)
|
||||
|
||||
path = f"{OUT_DIR}/tui-{name}.svg"
|
||||
app.save_screenshot(path)
|
||||
print(f"Saved {path}")
|
||||
|
||||
|
||||
asyncio.run(main())
|
||||
Loading…
Add table
Add a link
Reference in a new issue