M-Stream 2.0
M-Stream data has packet structure. Large packets may be split to fragments with same Fragment ID to fit in encapsulating frame.
M-Stream 2.0 defines M-Stream Header, Event Header and User Payload data objects. In fragmentation process, M-Stream Header is persistent and should be present in all fragments. Event Header should be present in first fragment only.
M-Stream Header |
|||||||||||||||||||||||||||||||
word # |
byte offset |
bits |
description |
||||||||||||||||||||||||||||
0 |
0 |
31:24 |
|||||||||||||||||||||||||||||
23:18 |
Flags |
||||||||||||||||||||||||||||||
17:16 |
Subtype |
||||||||||||||||||||||||||||||
15:0 |
Fragment length |
||||||||||||||||||||||||||||||
1 |
4 |
31:24 |
Fragment ID |
||||||||||||||||||||||||||||
23:0 |
Fragment offset (bytes) |
Flags bits |
||
bit |
value |
|
5 |
LF (last fragment) |
|
4 |
ACK |
|
3:0 |
reserved |
Fragment length is defined as number of bytes starting at offset 8. For M-Stream frame of size N 32-bit words, fragment length value is 4*(N-2).
Subtype 0: Trigger and User Data
M-Stream Header |
|||||||||||||||||||||||||||||||
word # |
byte offset |
bits |
description |
||||||||||||||||||||||||||||
0 |
0 |
31:24 |
|||||||||||||||||||||||||||||
23:18 |
Flags |
||||||||||||||||||||||||||||||
17:16 |
Subtype (0) |
||||||||||||||||||||||||||||||
15:0 |
Fragment length, 4*(N-2) |
||||||||||||||||||||||||||||||
1 |
4 |
31:24 |
Fragment ID |
||||||||||||||||||||||||||||
23:0 |
Fragment offset (bytes) |
||||||||||||||||||||||||||||||
2 |
8 |
31:0 |
Device serial number |
||||||||||||||||||||||||||||
3 |
12 |
31:24 |
User defined bits |
||||||||||||||||||||||||||||
23:0 |
Event number |
||||||||||||||||||||||||||||||
M-Stream Subtype 0 Payload |
|||||||||||||||||||||||||||||||
4 |
16 |
31:0 |
Event timestamp, TAI seconds |
||||||||||||||||||||||||||||
5 |
20 |
31:2 |
Event timestamp, TAI nanoseconds |
||||||||||||||||||||||||||||
1:0 |
Event timestamp, TAI flags |
||||||||||||||||||||||||||||||
6 |
24 |
31:0 |
User defined payload |
||||||||||||||||||||||||||||
... |
|||||||||||||||||||||||||||||||
N-1 |
4*(N-1) |
31:0 |
TAI flags: 2 - timecode is valid, otherwise invalid.
Subtype 1: User Data, Channel-Based Readout
M-Stream Header |
|||||||||||||||||||||||||||||||
word # |
byte offset |
bits |
description |
||||||||||||||||||||||||||||
0 |
0 |
31:24 |
|||||||||||||||||||||||||||||
23:18 |
Flags |
||||||||||||||||||||||||||||||
17:16 |
Subtype (1) |
||||||||||||||||||||||||||||||
15:0 |
Fragment length, 4*(N-2) |
||||||||||||||||||||||||||||||
1 |
4 |
31:24 |
Fragment ID |
||||||||||||||||||||||||||||
23:0 |
Fragment offset (bytes) |
||||||||||||||||||||||||||||||
2 |
8 |
31:0 |
Device serial number |
||||||||||||||||||||||||||||
3 |
12 |
31:24 |
Channel number |
||||||||||||||||||||||||||||
23:0 |
Event number |
||||||||||||||||||||||||||||||
M-Stream Subtype 1 Payload |
|||||||||||||||||||||||||||||||
4 |
16 |
31:0 |
User defined payload |
||||||||||||||||||||||||||||
... |
|||||||||||||||||||||||||||||||
N-1 |
4*(N-1) |
31:0 |