Files
2026-04-17 14:55:32 -04:00

7.4 KiB
Raw Permalink Blame History

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
Common/DTS.Common.Serialization/IRIGCH10/Enums/Enums.cs
2026-04-16T03:42:48.006856+00:00 Qwen/Qwen3-Coder-Next-FP8 1 cc430983f5236d17

Documentation: DTS.Serialization.IRIGCH10.Enums Namespace

1. Purpose

This module defines a set of strongly-typed enumerations used to represent standardized IRIG-106 Chapter 10 data types, time sources, time formats, and related metadata as specified in the IRIG-106 standard. These enums serve as the semantic foundation for parsing and serializing IRIG-106-compliant binary data files, mapping raw packet header values (e.g., data type codes, checksum types, time formats) to human-readable and type-safe enum members. They are used internally by serialization/deserialization logic to interpret and construct IRIG-106 packets correctly.

2. Public Interface

All types are public enums in the DTS.Serialization.IRIGCH10.Enums namespace. No classes, interfaces, or methods are exposed.

DataFileDataTypes

  • Description: Enumerates all defined IRIG-106 Chapter 10 data format types (e.g., PCM, MIL-STD-1553, Video, Ethernet), identified by a PacketHeaderValue (1-byte code) and a DataTypeVersionValue.
  • Key Members:
    • ComputerGeneratedDataFormat0 (0x00), ComputerGeneratedDataFormat1 (0x01), ..., ComputerGeneratedDataFormat7 (0x07)
    • PCMDataFormat1 (0x09) — Chapter 4 or 8
    • TimeDataFormat1 (0x11) — RCC/GPS/RTC
    • MILSTD1553DataFormat1 (0x19) — MIL-STD-1553B
    • AnalogDataFormat1 (0x21) — Analog Data
    • DiscreteDataFormat1 (0x29) — Discrete Data
    • MessageDataFormat0 (0x30) — Generic Message Data
    • ARINC429DataFormat0 (0x38) — ARINC-429 Data
    • VideoDataFormat0 (0x40) — MPEG-2/H.264 Video
    • VideoDataFormat1 (0x41) — ISO 13818-1 MPEG-2
    • VideoDataFormat2 (0x42) — ISO 14496 MPEG-4 Part10 110 AVC/H.264
    • VideoDataFormat3 (0x43) — MJPEG (version 0x07)
    • VideoDataFormat4 (0x44) — MJPEG 2000 (version 0x07)
    • ImageDataFormat0 (0x48) — Image Data
    • ImageDataFormat1 (0x49) — Still Imagery
    • ImageDataFormat2 (0x4A) — Dynamic Imagery
    • UARTDataFormat0 (0x50) — UART Data
    • IEEE1394DataFormat0 (0x58) — IEEE 1394 Transaction
    • IEEE1394DataFormat1 (0x59) — IEEE 1394 Physical Layer
    • ParallelDataFormat0 (0x60) — Parallel Data
    • EthernetDataFormat0 (0x68) — Ethernet Data (version 0x07)
    • EthernetDataFormat1 (0x69) — Ethernet UDP Payload
    • TSPI_CTSDataFormat0 (0x70) — GPS NMEA-RTCM
    • TSPI_CTSDataFormat1 (0x71) — EAG ACMI
    • TSPI_CTSDataFormat2 (0x72) — ACTTS
    • ControllerAreaNetworkBus (0x78) — CAN Bus
    • FibreChannelDataFormat0 (0x79) — Fibre Channel Data (version 0x07)
  • Note: All formats follow a pattern: XxxDataFormatN, where N (07) allows for vendor-specific or variant definitions. Only Format1 variants (e.g., AnalogDataFormat1) are standardized; others are reserved.

TimeSource

  • Description: Specifies the origin of time metadata in a packet.
  • Members:
    • Internal (0x00) — Time derived from a clock in the recorder
    • External (0x01) — Time derived from a clock not in the recorder
    • InternalFromRMM (0x02) — Internal from RMM (Time derived from the clock in the RMM)
    • None (0x0F) — No time source

TimeFormats

  • Description: Specifies the encoding format of time data (e.g., IRIG-B, UTC, GPS).
  • Members:
    • IRIGB (0x00) — IRIG-B
    • IRIGA (0x01) — IRIG-A
    • IRIGG (0x02) — IRIG-G
    • RTC (0x03) — Real-Time Clock
    • UTC (0x04) — UTC Time from GPS
    • GPS (0x05) — Native GPS Time
    • None (0x0F) — No time format

DataTypeVersion

  • Description: Represents the version of the IRIG-106 standard used for the data type definition.
  • Members:
    • InitialRelease (0x01) — Initial Release (IRIG-106-04)
    • TG78 (0x02) — TG-78 (IRIG-106-05)
    • IRIG106_07 (0x03) — IRIG-106-07

SecondaryHeaderTimeFormat

  • Description: Indicates the binary format of time in the secondary header (if present).
  • Members:
    • IRIG106Chapter4 (0x00) — IRIG 106 Chapter 4 binary weighted 48-bit time format
    • IEEE1588 (0x01) — IEEE-1588 Time format

DataCheckSumType

  • Description: Specifies the checksum algorithm used for packet integrity.
  • Members:
    • None (0x00)
    • EightBit (0x01)
    • SixteenBit (0x02)
    • ThirtyTwoBit (0x03)

3. Invariants

  • PacketHeaderValue is unique per enum member: Each enum value is annotated with [PacketHeaderValue(byte)], and no two members share the same value. This ensures unambiguous mapping between raw bytes and enum members.
  • DataTypeVersionValue is consistent per DataFileDataTypes member: Every DataFileDataTypes member has exactly one [DataTypeVersionValue(byte)] attribute. Values observed are 0x06 (most common) and 0x07 (e.g., ComputerGeneratedDataFormat1, VideoDataFormat3, VideoDataFormat4, EthernetDataFormat0, FibreChannelDataFormat0).
  • Reserved formats are strictly reserved: All enum members with descriptions containing “Reserved for future use” must not be interpreted as active data types. Their PacketHeaderValues are contiguous in blocks (e.g., 0x040x07, 0x0A0x0F, etc.), but their usage is undefined.
  • No overlapping PacketHeaderValues across enums: While not enforced in code, the values are allocated per IRIG-106 spec to avoid ambiguity (e.g., TimeSource.None = 0x0F does not conflict with TimeFormats.None = 0x0F because they apply to different contexts).

4. Dependencies

  • Internal dependencies:
    • DTS.Serialization.IRIGCh10.Attributes — Custom attributes [PacketHeaderValue], [DataTypeVersionValue], and [Description] are defined here (not shown, but referenced).
  • External dependencies:
    • System.ComponentModel — Used for [Description] attribute.
  • Consumers (inferred from naming and structure):
    • Serialization/deserialization logic for IRIG-106 Chapter 10 files (e.g., packet header parsers, metadata extractors).
    • Likely used in Packet or Stream classes in sibling namespaces (e.g., DTS.Serialization.IRIGCH10.Packets).

5. Gotchas

  • Typo in enum member name: FibreChannelDataFormats1, FibreChannelDataFormats2, etc. (note the trailing s in Formats) — inconsistent with naming pattern (FibreChannelDataFormat0). Likely a typo; verify usage in deserialization logic.
  • Version inconsistency: Most DataFileDataTypes use DataTypeVersionValue(0x06), but ComputerGeneratedDataFormat1, VideoDataFormat3, VideoDataFormat4, EthernetDataFormat0, and all FibreChannelDataFormats* use 0x07. Ensure deserialization logic handles version-specific parsing.
  • None values are context-sensitive: TimeSource.None (0x0F) and TimeFormats.None (0x0F) are distinct and valid in their respective contexts (e.g., absence of time metadata), but must not be confused.
  • No validation of reserved ranges: The enum does not prevent invalid or future-use values (e.g., 0x800xFF are undefined). Consumers must handle unknown values gracefully.
  • Missing Description attributes: Some members (e.g., MILSTD1553DataFormat0, AnalogDataFormat0) lack [Description], relying solely on naming. This may cause issues if Description is used for logging or UI.