Skip to content

Ramka Data

Każda notyfikacja na charakterystyce Data zawiera jedną ramkę data_frame.

Format nagłówka (12 bajtów)

Header (12B) Payload
Module ID Flags Frame Number Sample Count Timestamp First [µs] Timestamp Last Δ [µs] Payload
1B 1B 1B 1B 5B (uint40 LE) 3B (uint24 LE) 1–232B
byte 0 byte 1 byte 2 byte 3 byte 4–8 byte 9–11 byte 12+
Offset Rozmiar Pole Opis
0 1B module_id ID modułu — patrz Moduły
1 1B flags Flagi nagłówka (patrz niżej)
2 1B frame_number Numer ramki (inkrementowany per-moduł, 0–255 z zawijaniem)
3 1B sample_count Liczba próbek w payload
4 5B timestamp_first Timestamp pierwszej próbki [µs] (uint40, LE)
9 3B timestamp_last_delta Delta do ostatniej próbki [µs] (uint24, LE)
12 1–232B payload Dane sensorowe (format zależy od modułu)

Flagi

Bit Nazwa Opis
7 (MSB) FLAG_ERROR Ramka zawiera serializowany error_t zamiast danych sensorów. module_id identyfikuje moduł źródłowy błędu.
0–6 Zarezerwowane

Stałe

Stała Wartość Opis
DATA_FRAME_HEADER_SIZE 12
DATA_FRAME_PAYLOAD_MIN 1
DATA_FRAME_PAYLOAD_MAX 232
DATA_FRAME_MODULE_ID_INDEX 0
DATA_FRAME_FLAGS_INDEX 1
DATA_FRAME_FRAME_NUMBER_INDEX 2
DATA_FRAME_SAMPLE_COUNT_INDEX 3
DATA_FRAME_TIMESTAMP_FIRST_INDEX 4
DATA_FRAME_TIMESTAMP_LAST_DELTA_INDEX 9
DATA_FRAME_PAYLOAD_INDEX 12

Rozmiary

  • Minimalna ramka: 13B (12B header + 1B payload)
  • Maksymalna ramka: 244B (12B header + 232B payload)
  • MTU requirement: ≥ 247B (244 + 3B ATT overhead)

Timestamp

  • timestamp_first — absolutny czas pierwszej próbki w mikrosekundach (od startu systemu)
  • timestamp_last_delta — różnica czasu między pierwszą a ostatnią próbką w payload (µs)
  • Timestamp ostatniej próbki = timestamp_first + timestamp_last_delta