Klucze komend kontrolnych
Każda komenda SET/GET zawiera pole key identyfikujące parametr.
Klucze dzielą się na:
- Uniwersalne (0x01–0x3F) — wspólna semantyka dla wszystkich modułów
- Moduł-specyficzne (0x40–0xFF) — znaczenie zależy od
module_idw nagłówku
Klucze uniwersalne (0x01–0x3F)
Identyczna semantyka niezależnie od modułu docelowego.
Lifecycle (0x01–0x0F)
Włączanie/wyłączanie modułów, informacje.
Kalibracja (0x10–0x1F)
Sekwencja kalibracji interaktywnej:
flowchart LR
A[CALIB_START] --> B[CALIB_CAPTURE × N]
B --> C[CALIB_COMMIT]
A --> D[CALIB_ABORT]
System (0x20–0x2F)
Tylko dla MODULE_SYSTEM (ID=0): firmware, uptime, błędy, factory reset.
Tabela kluczy uniwersalnych
| Klucz | Wartość | Opis |
|---|---|---|
KEY_MODULE_ENABLE |
0x01 |
SET value=1: włącz moduł, value=0: wyłącz moduł. GET: zwraca bieżący stan (1=włączony, 0=wyłączony). |
KEY_MODULE_INFO |
0x02 |
GET only — zwraca informacje o module (wersja sensora, capabilities). Format odpowiedzi jest zależny od modułu. |
KEY_CALIB_START |
0x10 |
SET only — rozpocznij interaktywną sesję kalibracji. Moduł przechodzi w stan kalibracji. Sesję kończy COMMIT lub ABORT. Zwraca BUSY jeśli sesja już trwa. |
KEY_CALIB_ABORT |
0x11 |
SET only — przerwij sesję kalibracji, przywróć poprzednią konfigurację. |
KEY_CALIB_CAPTURE |
0x12 |
SET value=step_index — zarejestruj punkt/próbkę kalibracyjną. Dotyczy kalibracji interaktywnej (np. selector: step 0..3). |
KEY_CALIB_COMMIT |
0x13 |
SET only — zakończ sesję kalibracji, oblicz i zastosuj wyniki. Automatycznie zapisuje do NVS. |
KEY_CALIB_GET |
0x14 |
GET only — zwraca pełny blob danych kalibracyjnych. Format zależy od modułu (np. magnetometr: hard_iron + soft_iron). |
KEY_CALIB_SET |
0x15 |
SET value=blob — zapisz pełne dane kalibracyjne (import z zewnątrz). Automatycznie zapisuje do NVS. |
KEY_CALIB_STATUS |
0x16 |
GET only — zwraca status kalibracji. value[0]: 0 = brak kalibracji (defaults), 1 = skalibrowany. Dodatkowe bajty zależne od modułu (np. quality metric). |
KEY_SYS_FW_VERSION |
0x20 |
GET only — wersja firmware (string, null-terminated). |
KEY_SYS_UPTIME |
0x21 |
GET only — uptime w sekundach (uint32_t LE). |
KEY_SYS_LAST_ERROR |
0x22 |
GET only — ostatni błąd (serialized error_t). |
KEY_SYS_FACTORY_RESET |
0x23 |
SET only — factory reset (wymaż NVS, reboot). value[0] = 0xA5 (magic byte, ochrona przed przypadkowym wywołaniem). |
KEY_SYS_ERROR_LOG |
0x24 |
GET only — flush kolejki błędów via NOTIFY. Reply value[0] = liczba błędów w kolejce. Błędy przychodzą jako data_frame z FLAG_ERROR. |
Klucze moduł-specyficzne (0x40–0xFF)
Te same wartości liczbowe mogą oznaczać różne parametry w różnych modułach — rozróżnia je pole module_id w nagłówku ramki.
Przykład
KEY_GNSS_UPDATE_RATE = 0x40 i KEY_AG_RANGE = 0x40 mają tę samą wartość,
ale dotyczą różnych modułów (GNSS vs Acc/Gyro).
| Klucz | Wartość | Moduł | Opis |
|---|---|---|---|
KEY_GNSS_UPDATE_RATE |
0x40 |
GNSS (MODULE_GNSS = 5) | SET/GET — częstotliwość aktualizacji pozycji [Hz, uint8_t, 1–20]. |
KEY_GNSS_DYNAMIC_MODEL |
0x41 |
GNSS (MODULE_GNSS = 5) | SET/GET — model dynamiczny UBX (uint8_t, 0=portable…8=bike). |
KEY_AG_RANGE |
0x40 |
Acc/Gyro (MODULE_ACC_GYRO = 2) | SET/GET — zakres pomiarowy. SET: value[0]=lsm6dsv32x_range_acc_t, value[1]=lsm6dsv32x_range_gyro_t. GET: identyczny format. |
KEY_AG_ODR |
0x41 |
Acc/Gyro (MODULE_ACC_GYRO = 2) | SET/GET — ODR (Output Data Rate). value[0]=lsm6dsv32x_odr_t, value[1]=lsm6dsv32x_haodr_sel_t. |
KEY_BARO_OSR |
0x40 |
Barometer (MODULE_BAROMETER = 3) | SET/GET — oversampling (OSR). value[0]=bmp581_osr_t (ciśnienie), value[1]=bmp581_osr_t (temperatura). |
KEY_BARO_IIR |
0x41 |
Barometer (MODULE_BAROMETER = 3) | SET/GET — filtr IIR. value[0]=bmp581_iir_t. |
KEY_TRIGGER_SENSITIVITY |
0x40 |
Trigger (MODULE_TRIGGER = 8) | SET/GET — czułość triggera (uint8_t, 1–8). |
KEY_TRIGGER_MODE |
0x41 |
Trigger (MODULE_TRIGGER = 8) | SET/GET — tryb triggera (uint8_t, trigger_mode_t). |
KEY_TRIGGER_BASES |
0x42 |
Trigger (MODULE_TRIGGER = 8) | GET only — bazowe wartości Z sensorów (int16_t LE × 2 = 4B). |
KEY_SELECTOR_HYSTERESIS |
0x40 |
Selector (MODULE_SELECTOR = 7) | SET/GET — próg histerezy Manhattan (uint8_t). |
KEY_KICKBACK_TIMING |
0x40 |
Kickback (MODULE_KICKBACK = 12) | SET/GET — parametry czasowe kickbacka. value[0]=on_time_ms (uint8_t), value[1]=off_time_ms (uint8_t). |