Skip to content

Protokół Control

Protokół Control służy do konfiguracji modułów urządzenia.
Klient wysyła komendy Write na charakterystykę Control, urządzenie odpowiada Indicate.

Typy komend

Komenda Wartość Opis
CONTROL_CMD_SET 1
CONTROL_CMD_GET 2

Format ramek

SET Command (Klient → Urządzenie)

[transaction_id][module_id][SET=1][key][value_0 .. value_n]
Offset Pole Rozmiar Opis
0 transaction_id 1B Identyfikator transakcji (klient wybiera, odpowiedź zwraca ten sam)
1 module_id 1B ID modułu docelowego — patrz Moduły
2 command 1B 1 (SET)
3 key 1B Klucz parametru — patrz Klucze
4+ value 0–239B Wartość do ustawienia (format zależy od klucza)

SET Reply (Urządzenie → Klient)

[transaction_id][module_id][SET=1][key][status]
Offset Pole Rozmiar Opis
0–3 nagłówek 4B Taki sam jak w komendzie
4 status 1B Kod statusu — patrz niżej

GET Command (Klient → Urządzenie)

[transaction_id][module_id][GET=2][key]
Offset Pole Rozmiar Opis
0–3 nagłówek 4B Jak wyżej, command = 2 (GET)

GET Reply (Urządzenie → Klient)

[transaction_id][module_id][GET=2][key][status][value_0 .. value_n]
Offset Pole Rozmiar Opis
0–3 nagłówek 4B Echo z komendy
4 status 1B Kod statusu
5+ value 0–239B Wartość (tylko jeśli status = OK)

Kody statusu

Status Wartość Opis
CONTROL_STATUS_OK 1 Operacja zakończona sukcesem
CONTROL_STATUS_UNKNOWN_ERROR 2 Nieznany błąd
CONTROL_STATUS_NOT_CALIBRATED 3 Moduł nie skalibrowany
CONTROL_STATUS_UNKNOWN_COMMAND 4 Nieznana komenda
CONTROL_STATUS_UNSUPPORTED_KEY 5 Moduł nie obsługuje tego klucza
CONTROL_STATUS_INVALID_VALUE 6 Wartość poza zakresem / niepoprawna
CONTROL_STATUS_BUSY 7 Operacja w toku (np. kalibracja)
CONTROL_STATUS_NOT_READY 8 Moduł nie zainicjalizowany
CONTROL_STATUS_HARDWARE_ERROR 9 Błąd sprzętowy (np. I2C/SPI)

Stałe rozmiarów

Przykłady

Włączenie modułu Magnetometer

Komenda SET:

TX: [0x01] [0x06] [0x01] [0x01] [0x01]
      tid    mag    SET   ENABLE  value=1

Odpowiedź:

RX: [0x01] [0x06] [0x01] [0x01] [0x01]
      tid    mag    SET   ENABLE  OK

Odczyt wersji firmware

Komenda GET:

TX: [0x02] [0x00] [0x02] [0x20]
      tid   system  GET   FW_VER

Odpowiedź:

RX: [0x02] [0x00] [0x02] [0x20] [0x01] [0x31] [0x2E] [0x30] [0x00]
      tid   system  GET   FW_VER  OK     '1'    '.'    '0'    '\0'

Transaction ID

transaction_id jest wybierany przez klienta i kopiowany do odpowiedzi. Pozwala to dopasować odpowiedź do komendy, gdy wysyłasz wiele komend jednocześnie.