~~ODT~~
===== MESSAGE DATA =====
==== Type 0x30, Message Data, Format 0 (Generic Message Data) ====
Message Data packets are
used to record data from sources that do not have a defined packet type in the Chapter 10
standard. Examples of this might be the H-009 bus found on older F-15 aircraft or the High
Speed Data Bus (HSDB) bus found on older F-16 aircraft. The Chapter 10 standard implies that
Message Data packets represent "serial" communications data. In practice, there are few
restrictions on the content or source of the data for Message Data packets.
Message Data packets do not contain any field to indicate what format or type of data
they contain or how to interpret the data contents. Message Data packets are distinguished by
their Channel ID and Subchannel values. The TMATS setup provides fields specifying a
subchannel name (R-x\MCNM-n-m) for each subchannel number (R-x\MSCN-m-n) and
Channel ID (R-x\TK1-m). Use the subchannel name to determine how to decode each Channel
ID / subchannel combination. There currently is no standard for subchannel names and no
registry of "well known" names.
Individual Message Data messages are restricted to no more than 65,536 (64k) bytes. A
Message Data packet can contain multiple data messages, a single data message, or a segment of
a large (greater than 64k) data message. A Message Data packet consists of a CSDW followed
by one or more messages. The layout of the CSDW is shown in Figure 6-34. The uType value
indicates whether the data is a complete message or a segment of a large message. The
uCounter value indicates either the number of data packets to follow or, for the segmented
case, the segment number of the large data packet segment that follows.
struct SuMessageF0_ChanSpec
{
uint32_t uCounter : 16; // Message/segment counter
uint32_t uType : 2; // Complete/segment type
uint32_t uReserved : 14;
} SuMessageF0_ChanSpec;
struct SuMessageF0_Header
{
uint64_t suIntraPckTime; // Reference time
uint32_t uMsgLength : 16; // Message length
uint32_t uSubChannel : 14; // Subchannel number
uint32_t bFmtError : 1; // Format error flag
uint32_t bDataError : 1; // Data error flag
};