4.9 KiB
4.9 KiB
ARTOS - Advanced Radar Test & Orchestration System
Modular GUI application for testing and controlling MIL-STD-1553B radar systems over UDP.
Features
- Modular Docking GUI: Resizable, minimizable panels for each subsystem
- MCS Control: Mission Control System with radar modes, functions, and parameters
- 1553 Bus Communication: UDP-based MIL-STD-1553B message handling
- Layered Architecture: Clear separation between hardware (L0), orchestration (L1), algorithms (L2), and tests (L3)
- Zero External Dependencies: Pure Tkinter stdlib for maximum reliability
- Workspace Persistence: Save/load custom panel layouts
Quick Start
Installation
# Clone repository
git clone <repo-url>
cd SXXXXXXX_PyMsc
# Create virtual environment
python -m venv .venv
.venv\Scripts\Activate.ps1
# Install dependencies
pip install -r requirements.txt
Running ARTOS
# Launch the modular docking GUI
python -m pymsc
# Alternative: Use the launcher script
python scripts\launch_docking_gui.py
First-Time Setup
- Start ARTOS:
python -m pymsc - The GUI will launch with MCS dock on the left
- Use View menu to toggle other module panels
- Use System → Start System to begin 1553 communication
- Save your workspace layout: File → Save Layout
Architecture
ARTOS follows a 4-layer design:
- L0: Hardware abstraction (1553 Bus Module)
- L1: Test orchestration (TestContext - planned)
- L2: Algorithm library (planned)
- L3: Test execution (scripts + GUI sequences)
See ARTOS Architecture Decisions for detailed design rationale.
GUI Structure
┌─────────────┬──────────────────────────┐
│ │ Right Top │
│ MCS │ ┌────────────────────┐ │
│ Dock │ │ Navigation (TBD) │ │
│ │ └────────────────────┘ │
│ Control │ ┌────────────────────┐ │
│ Mission │ │ IRST (TBD) │ │
│ │ └────────────────────┘ │
│ ├──────────────────────────┤
│ │ Logger & Status (TBD) │
└─────────────┴──────────────────────────┘
Project Structure
SXXXXXXX_PyMsc/
├── pymsc/ # Main application package
│ ├── core/ # Business logic & 1553 module
│ ├── gui/
│ │ ├── docking/ # Modular docking system
│ │ ├── components/ # Reusable widgets
│ │ └── pages/ # Control & Mission pages
│ └── utils/ # Helpers and profiler
├── scripts/ # Launcher scripts
├── doc/ # Architecture & design docs
├── tests/ # Unit and integration tests
└── logs/ # Runtime logs
Development
Adding a New Dock Module
See Docking System README for detailed guide.
Quick example:
from pymsc.gui.docking import DockFrame
class MyModuleDock(DockFrame):
def __init__(self, parent, **kwargs):
super().__init__(parent, title="My Module", **kwargs)
def populate_content(self):
# Add your widgets here
label = ttk.Label(self.content_frame, text="My content")
label.pack()
Running Tests
pytest # Run all tests
pytest tests/test_imports.py # Quick smoke test
Configuration
1553 Bus Settings
Edit in pymsc/main.py:
config = {
'udp_send_ip': '127.0.0.1',
'udp_send_port': 51553,
'udp_recv_ip': '0.0.0.0',
'udp_recv_port': 61553
}
Workspace Layouts
Saved to layouts/user_layout.json via File → Save Layout.
Documentation
- Architecture Decisions - Design rationale and roadmap
- Docking System - GUI module guide
- English Manual - User manual
- ICD Document - 1553 protocol spec
Contributing
- Follow PEP 8 style guide
- Add docstrings to public methods
- Update tests for new features
- Document architectural decisions in ADR
License
Internal project - © 2025
Status: v0.1.0 - Modular docking GUI implemented ✅
Next Phase: TestContext implementation (L1 orchestration layer)