Skip to content

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)