M-Stream 2.0

* MStream_ChangeLog

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

Device ID

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

Device ID

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

Device ID

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


MLink MStream RawData

MStream_2_0 (last edited 2021-09-03 10:18:20 by islepnev)