68 lines
4.5 KiB
Markdown
68 lines
4.5 KiB
Markdown
---
|
|
source_files:
|
|
- Common/DTS.Common/Classes/Sensors/StreamOut/UDPStreamProfilePacket.cs
|
|
generated_at: "2026-04-16T03:18:20.383714+00:00"
|
|
model: "Qwen/Qwen3-Coder-Next-FP8"
|
|
schema_version: 1
|
|
sha256: "d7985184134cc083"
|
|
---
|
|
|
|
# StreamOut
|
|
|
|
## 1. Purpose
|
|
The `UDPStreamProfilePacket` class defines the structural metadata for a UDP-based stream profile packet used in sensor data transmission. It encapsulates fixed-size header and payload configuration parameters—such as header lengths, channel-specific data identifiers, timing information, and payload scaling—required to correctly serialize/deserialize or interpret raw UDP packets conforming to a proprietary sensor streaming protocol. This class serves as a data contract for constructing or parsing stream profile packets in the DTS sensor infrastructure.
|
|
|
|
## 2. Public Interface
|
|
All members are public properties with `int` type and default values initialized inline.
|
|
|
|
- **`TransHeader`** (`int`, default `4`)
|
|
Represents the size (in bytes) of the transport header. Default value is `4`.
|
|
|
|
- **`TimeHeader`** (`int`, default `24`)
|
|
Represents the size (in bytes) of the primary timestamp header. Default value is `24`.
|
|
|
|
- **`SecondTimeHeader`** (`int`, default `0`)
|
|
Represents the size (in bytes) of a secondary timestamp header, if present. Default is `0`, indicating absence.
|
|
|
|
- **`ChannelSpecificDataWord`** (`int`, default `0`)
|
|
Identifier or size (in bytes) for channel-specific data word; semantics unclear from source. Default is `0`.
|
|
|
|
- **`PCMChannelSpecificDataWord`** (`int`, default `0`)
|
|
Identifier or size (in bytes) for PCM (Pulse Code Modulation) channel-specific data word; semantics unclear from source. Default is `0`.
|
|
|
|
- **`Id`** (`int`, default `0`)
|
|
Packet or stream identifier. Default is `0`.
|
|
|
|
- **`SampleTime`** (`int`, default `0`)
|
|
Timestamp or sample time value (units unclear—likely milliseconds or microseconds). Default is `0`.
|
|
|
|
- **`PayloadFactor`** (`int`, default `2`)
|
|
Multiplicative factor applied to derive payload size or configure payload layout. Default is `2`.
|
|
|
|
- **`Trailer`** (`int`, default `0`)
|
|
Size (in bytes) of the packet trailer (e.g., checksum, padding, or footer). Default is `0`.
|
|
|
|
## 3. Invariants
|
|
- All properties are nullable-free value types (`int`) and always hold a non-null integer value.
|
|
- No explicit validation is enforced on property values (e.g., negative sizes or zero `PayloadFactor` are allowed unless constrained elsewhere).
|
|
- No ordering guarantees are implied (e.g., `TransHeader + TimeHeader + SecondTimeHeader + ...` is not validated against total packet size).
|
|
- Default values are statically assigned and immutable unless explicitly modified by consumer code.
|
|
|
|
## 4. Dependencies
|
|
- **Imports**:
|
|
- `System`, `System.Collections.Generic`, `System.Linq`, `System.Runtime.Remoting.Channels`, `System.Text`, `System.Threading.Tasks`
|
|
- `System.Runtime.Remoting.Channels` is imported but unused (no remoting types referenced in the class).
|
|
- **Namespace usage**:
|
|
- Nested under `DTS.Common.Classes.Sensors.StreamOut`, implying integration with other sensor/streaming components (e.g., `UDPStreamProfile`, `SensorStreamManager`).
|
|
- **Depended upon**:
|
|
- Inferred to be used by serialization/deserialization logic for UDP sensor streams (e.g., packet builders, parsers, or configuration modules), though no direct references are visible in this file.
|
|
|
|
## 5. Gotchas
|
|
- **Ambiguous semantics**: Units and exact meaning of fields (e.g., `PayloadFactor`, `ChannelSpecificDataWord`, `SampleTime`) are not documented in this class. Their interpretation depends on external protocol specs or companion code.
|
|
- **Unused import**: `System.Runtime.Remoting.Channels` is imported but unused—likely legacy or accidental.
|
|
- **No immutability or validation**: Properties are mutable and lack validation; consumers must ensure consistency (e.g., non-negative header/trailer sizes).
|
|
- **No constructor or factory pattern**: Relies on default initialization; no compile-time guarantee of valid combinations (e.g., `SecondTimeHeader > 0` may require `TimeHeader > 0`, but no enforcement exists).
|
|
- **Hardcoded defaults**: Default values (`TransHeader=4`, `TimeHeader=24`, `PayloadFactor=2`) may reflect legacy protocol versions; changing them without coordinated updates could break interoperability.
|
|
- **No documentation**: XML comments or inline explanations are absent, increasing reliance on external documentation or reverse engineering.
|
|
|
|
None identified beyond the above. |