Skip to content

Ramka Data

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

Format nagłówka (12 bajtów)

packet-beta
title data_frame (Header 12B + Payload)
0-7: "Module ID (1B)"
8-15: "Flags (1B)"
16-23: "Frame Number (1B)"
24-31: "Sample Count (1B)"
32-71: "Timestamp First [µs] (5B)"
72-95: "Timestamp Last Δ [µs] (3B)"
96-127: "Payload (1–232B)"
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