Ramka Data
Każda notyfikacja na charakterystyce Data zawiera jedną ramkę data_frame.
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