52 lines
2.9 KiB
Markdown
52 lines
2.9 KiB
Markdown
# Copilot Instructions for Target Simulator
|
|
|
|
## Project Overview
|
|
- **Target Simulator** is a Python desktop application (Tkinter GUI) for simulating radar targets and scenarios, with communication via TFTP and serial protocols.
|
|
- Main entry: `target_simulator/__main__.py` launches the GUI (`MainView`).
|
|
- Core logic is split into:
|
|
- `core/`: simulation engine, communication interfaces, scenario models
|
|
- `gui/`: Tkinter windows, frames, and widgets
|
|
- `utils/`: logging, config management, TFTP client
|
|
|
|
## Architecture & Data Flow
|
|
- **Simulation** runs in a background thread (`SimulationEngine`) and updates target states/scenarios.
|
|
- **Communication**: Supports both TFTP and serial, abstracted via `CommunicatorInterface` and implemented in `serial_communicator.py` and `tftp_communicator.py`.
|
|
- **Configuration**: Settings and scenarios are stored in `settings.json` (read/write via `ConfigManager`).
|
|
- **Logging**: Centralized, routed to both console and GUI (`logger.py`). GUI log widget uses colored levels.
|
|
- **Scenarios**: Defined in `settings.json` under `scenarios`, loaded and managed via GUI and core logic.
|
|
|
|
## Developer Workflows
|
|
- **Run app**: `python -m target_simulator` (from project root)
|
|
- **Debug**: Use Python debugger on `__main__.py` or GUI modules
|
|
- **Settings**: Edit `settings.json` for global config, connection, and scenario data
|
|
- **Logging**: Adjust `LOGGING_CONFIG` in `config.py` for format/colors
|
|
|
|
## Patterns & Conventions
|
|
- **Absolute imports** are used throughout (e.g., `from target_simulator.core...`).
|
|
- **PEP8** style, English for code/comments/docstrings
|
|
- **One statement per line**; concise, essential comments only
|
|
- **Modularization**: If a file grows >1000 lines, split by topic into new modules
|
|
- **Scenario/Settings**: All persistent config is managed via `ConfigManager` and stored in `settings.json`
|
|
- **GUI**: All Tkinter windows/frames are in `gui/`, main window is `MainView`
|
|
- **Logging**: Use `get_logger`, `setup_basic_logging`, and `add_tkinter_handler` for consistent logging
|
|
|
|
## Integration Points
|
|
- **External dependencies**: Tkinter, threading, TFTP/serial (no third-party packages required)
|
|
- **Temp files**: Written to `Temp/` for live updates and scenario init logs
|
|
- **C++ code**: `BupTFTP.cpp/h` present but not integrated with Python app
|
|
|
|
## Examples
|
|
- To add a new communication protocol, implement `CommunicatorInterface` in `core/` and update GUI logic in `main_view.py`.
|
|
- To add a new scenario, update `settings.json` and use `ConfigManager` methods.
|
|
- To extend logging, add new handlers in `logger.py` and update `config.py` for color/format.
|
|
|
|
## References
|
|
- Main entry: `target_simulator/__main__.py`
|
|
- Simulation: `core/simulation_engine.py`
|
|
- GUI: `gui/main_view.py`, other `gui/` modules
|
|
- Config: `utils/config_manager.py`, `settings.json`
|
|
- Logging: `utils/logger.py`, `config.py`
|
|
|
|
---
|
|
|
|
If any section is unclear or missing, please provide feedback to improve these instructions. |