Skip to content

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_id w 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).