# Projekt: Lasertag Kommunikation (nRF52840)

Dieses Projekt beschreibt ein modulares Lasertag-System basierend auf dem nRF52840. Es nutzt **Dynamic Multiprotocol** (Bluetooth Low Energy & OpenThread), um eine nahtlose Kommunikation zwischen einer Weboberfläche (Game-Leader), Westen und Waffen zu ermöglichen.

## System-Architektur

* **Game-Leader:** Fungiert als Brücke (Bridge). Er kommuniziert via **BLE (Web Bluetooth)** mit einem Smartphone/Laptop und via **Thread (CoAP/UDP)** mit den Spielgeräten.
* **Westen/Waffen:** Reine Thread-Knoten, die Befehle empfangen und Statusmeldungen (Treffer) senden.
* **Bases:** Stationäre Geräte, die Spielmodi wie "Capture the Base" ermöglichen.

## Geplante Verzeichnisstruktur

Das Projekt ist als Zephyr-Workspace-Struktur angelegt, um Code-Redundanz zu vermeiden.

```text
lasertag/
├── apps/                   # Applikations-spezifischer Code (Binaries)
│   ├── leader_base/        # Kombinierte Firmware für Game-Leader & Bases
│   ├── weapon/             # Firmware für die Waffen-Einheit
│   └── vest/               # Firmware für die Westen-Einheit
├── libs/                   # Gemeinsame Bibliotheken (Zephyr Module)
│   ├── ble_mgmt/           # BLE Services & Advertising Profile
│   ├── thread_mgmt/        # CoAP Server/Client & Thread Stack Setup
│   └── game_logic/         # Treffer-Logik & Spielstatus-Management
├── boards/                 # Custom Board Definitions (PCBs)
├── common/                 # Gemeinsame Header (UUIDs, CoAP-Pfade, IDs)
└── scripts/                # Hilfsskripte (Provisioning, Shell-Tools)
```

## Roadmap

### Phase 1: Foundation (Struktur & Shell)
- [ ] Verzeichnisstruktur und `CMakeLists.txt` Verknüpfungen erstellen.
- [ ] Basis-Firmware mit **Zephyr Shell** zur Konfiguration.
- [ ] Implementierung von NVS (Non-Volatile Storage) zum Speichern von Gerätenamen und Team-IDs.

### Phase 2: Connectivity (BLE & Thread)
- [ ] **BLE-Provisioning:** Übertragung von Thread-Credentials via Bluetooth.
- [ ] **Thread-Setup:** Aufbau eines stabilen Mesh-Netzwerks zwischen Leader und Westen.
- [ ] **Web-Interface:** Verbindung der Chrome Web Bluetooth App mit dem Leader.

### Phase 3: Core Game Logic (CoAP Brücke)
- [ ] **Multicast-Broadcast:** "Spiel Start"-Kommando von Web-App -> Leader -> Thread-Mesh.
- [ ] **Unicast-Feedback:** Treffermeldung von Weste -> Leader -> Web-App.
- [ ] **Reliability:** Implementierung von CoAP Confirmable Messages für kritische Befehle (z. B. Waffe deaktivieren).

### Phase 4: Erweitert (Bases & NFC)
- [ ] **Rollen-Switch:** Leader-Hardware erkennt via GPIO (Schalter), ob sie als Base agiert.
- [ ] **Capture the Base:** Logik für Teambesitz und Zeitmessung.
- [ ] **NFC-Provisioning:** (Optional) Schnelles Zuweisen von IDs via Smartphone-NFC.

## Technologie-Stack
- **Hardware:** nRF52840 (DK & Custom PCBs)
- **OS:** Zephyr RTOS via nRF Connect SDK
- **Funk:** OpenThread (Mesh) & BLE 5.x
- **Protokolle:** CoAP über UDP, GATT (BLE)
- **Frontend:** Web Bluetooth API (JavaScript)