Moduły — Przegląd
Czym jest moduł?
Każdy moduł reprezentuje jeden element systemu — czujnik (np. Magnetometer), wyjście (np. Kickback), stan systemu (np. Diagnostics) lub wynik obliczeń (np. Quaternion).
Moduł jest niezależny od wariantu urządzenia — interfejs BLE jest identyczny niezależnie od hardware'u. Które moduły są aktywne zależy od wariantu urządzenia.
Moduł może:
- Przekazywać dane — jako notyfikacje na charakterystyce Data
- Przyjmować komendy — SET/GET na charakterystyce Control
- Raportować błędy — ramka Data z flagą
FLAG_ERROR
Identyfikacja
Każdy moduł ma unikalne module_id (uint8_t) używane w nagłówkach ramek Data i Control.
Lista modułów
| Moduł | ID | Opis |
|---|---|---|
MODULE_SYSTEM |
1 |
|
MODULE_ACC_GYRO |
2 |
|
MODULE_BAROMETER |
3 |
|
MODULE_BATTERY |
4 |
|
MODULE_GNSS |
5 |
|
MODULE_MAGNETOMETER |
6 |
|
MODULE_SELECTOR |
7 |
|
MODULE_TRIGGER |
8 |
|
MODULE_QUATERNION |
9 |
|
MODULE_PLAYER_STATE |
10 |
|
MODULE_UI |
11 |
|
MODULE_KICKBACK |
12 |
|
MODULE_DISPLACEMENT |
13 |
Numeracja
ID 0 nie jest używane. Numeracja zaczyna się od 1 (MODULE_SYSTEM).
Użycie module_id
| Kontekst | Pole | Znaczenie |
|---|---|---|
| Data frame | module_id (offset 0) |
Źródło danych / błędu |
| Control command | module_id (offset 1) |
Moduł docelowy komendy |
| Control reply | module_id (offset 1) |
Echo modułu z komendy |
MODULE_SYSTEM (ID = 1)
Specjalny moduł systemowy (nie wysyła ramek Data z danymi sensorycznymi).
Obsługuje KEY_CTRL_ENABLE (0x02) i KEY_CTRL_INFO (0x01).
Wersja firmware i inne metadane statyczne dostępne są w charakterystyce
Device Info (a203), poza protokołem Control.
Błędy systemowe są automatycznie flushowane po połączeniu BLE
jako ramki Data z flagą FLAG_ERROR (patrz Diagnostics).
Strony modułów
Każdy moduł ma dedykowaną stronę z opisem ramki Data (format payload) i komend Control (dostępne klucze):
| Moduł | Opis |
|---|---|
| Diagnostics | Błędy systemowe (error_t) |
| AccGyro | Akcelerometr + żyroskop (LSM6DSV32X) |
| Barometer | Ciśnienie + temperatura (BMP581) |
| Battery | Napięcie baterii [mV] |
| GNSS | Pozycja, prędkość, heading (ZED-F9P) |
| Magnetometer | Pole magnetyczne [µT] (MMC5983MA) |
| Selector | Pozycja selektora trybu ognia |
| Trigger | Stan spustu (pressed / released) |
| Quaternion | Orientacja z fuzji (Madgwick) |
| Player State | Stan gracza |
| UI | LED + buzzer |
| Kickback | Symulacja odrzutu (solenoid) |
| Displacement | Estymacja przemieszczenia (filtr Kalmana + ZUPT) |