= 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. ||<-32 rowclass="bits">M-Stream Header|| ||<:>word #||<:>byte offset||<:>bits||<:>description|| ||<:|4>0||<:|4>0||31:24||[[DeviceId|Device ID]]|| ||23:18||Flags|| ||17:16||Subtype|| ||15:0||Fragment length|| ||<:|2>1||<:|2>4||31:24||Fragment ID|| ||23:0||Fragment offset (bytes)|| ||<-3 rowclass="bits">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 == ||<-32 rowclass="bits">M-Stream Header|| ||<:>word #||<:>byte offset||<:>bits||<:>description|| ||<:|4>0||<:|4>0||31:24||[[DeviceId|Device ID]]|| ||23:18||Flags|| ||17:16||Subtype (0)|| ||15:0||Fragment length, 4*(N-2)|| ||<:|2>1||<:|2>4||31:24||Fragment ID|| ||23:0||Fragment offset (bytes)|| ||<:>2||<:>8||31:0||Device serial number|| ||<:|2>3||<:|2>12||31:24||User defined bits|| ||23:0||Event number|| ||<-32 rowclass="bits">M-Stream Subtype 0 Payload|| ||<:>4||<:>16||31:0||Event timestamp, TAI seconds|| ||<:|2>5||<:|2>20||31:2||Event timestamp, TAI nanoseconds|| ||1:0||Event timestamp, TAI flags|| ||<:>6||<:>24||31:0||<|3>User defined payload|| ||<:-3>...|| ||<:>N-1||<:>4*(N-1)||31:0|| TAI flags: 2 - timecode is valid, otherwise invalid. == Subtype 1: User Data, Channel-Based Readout == ||<-32 rowclass="bits">M-Stream Header|| ||<:>word #||<:>byte offset||<:>bits||<:>description|| ||<:|4>0||<:|4>0||31:24||[[DeviceId|Device ID]]|| ||23:18||Flags|| ||17:16||Subtype (1)|| ||15:0||Fragment length, 4*(N-2)|| ||<:|2>1||<:|2>4||31:24||Fragment ID|| ||23:0||Fragment offset (bytes)|| ||<:>2||<:>8||31:0||Device serial number|| ||<:|2>3||<:|2>12||31:24||Channel number|| ||23:0||Event number|| ||<-32 rowclass="bits">M-Stream Subtype 1 Payload|| ||<:>4||<:>16||31:0||<|3>User defined payload|| ||<:-3>...|| ||<:>N-1||<:>4*(N-1)||31:0|| ---- [[CategoryMlink|MLink]] [[CategoryMStream|MStream]] [[CategoryRawData|RawData]]