320 lines
13 KiB
Markdown
320 lines
13 KiB
Markdown
|
|
---
|
||
|
|
source_files:
|
||
|
|
- Common/DTS.Common/Enums/Sensors/SensorChangeTypes.cs
|
||
|
|
- Common/DTS.Common/Enums/Sensors/SensorStatus.cs
|
||
|
|
- Common/DTS.Common/Enums/Sensors/PossibleFilters.cs
|
||
|
|
- Common/DTS.Common/Enums/Sensors/LinearizationFormula.cs
|
||
|
|
- Common/DTS.Common/Enums/Sensors/CalibrationEnforcement.cs
|
||
|
|
- Common/DTS.Common/Enums/Sensors/SensitivityInspection.cs
|
||
|
|
- Common/DTS.Common/Enums/Sensors/CalibrationBehaviors.cs
|
||
|
|
- Common/DTS.Common/Enums/Sensors/InitialOffsetTypes.cs
|
||
|
|
- Common/DTS.Common/Enums/Sensors/FilterClassType.cs
|
||
|
|
- Common/DTS.Common/Enums/Sensors/ZeroMethodType.cs
|
||
|
|
- Common/DTS.Common/Enums/Sensors/CSVImportTags.cs
|
||
|
|
- Common/DTS.Common/Enums/Sensors/SensorConstants.cs
|
||
|
|
generated_at: "2026-04-16T03:20:17.284188+00:00"
|
||
|
|
model: "Qwen/Qwen3-Coder-Next-FP8"
|
||
|
|
schema_version: 1
|
||
|
|
sha256: "fb4f3c61e14ed27e"
|
||
|
|
---
|
||
|
|
|
||
|
|
# Sensor Enums and Constants Documentation
|
||
|
|
|
||
|
|
## 1. Purpose
|
||
|
|
|
||
|
|
This module defines core enumerations and static constants used throughout the DTS system to represent sensor metadata, configuration, calibration behavior, filtering, and import/export semantics. It serves as the canonical source of truth for sensor-related data types, ensuring consistency across data import/export (especially CSV), channel configuration, calibration enforcement, and system behavior validation. The enums and constants support legacy compatibility, versioned CSV schema evolution, and domain-specific requirements (e.g., GM-ISF, TSR AIR, IR-TRACC).
|
||
|
|
|
||
|
|
## 2. Public Interface
|
||
|
|
|
||
|
|
### Enumerations
|
||
|
|
|
||
|
|
#### `SensorChangeTypes`
|
||
|
|
- **`OffsetTolerance`**: Represents a change type related to sensor offset tolerance.
|
||
|
|
|
||
|
|
#### `SensorStatus`
|
||
|
|
- **`Available`**: Sensor is available for use.
|
||
|
|
- **`InUse`**: Sensor is currently in use.
|
||
|
|
- **`OutForService`**: Sensor is out for service.
|
||
|
|
- **`OutForCalibration`**: Sensor is out for calibration.
|
||
|
|
- **`Retired`**: Sensor is retired and no longer usable.
|
||
|
|
|
||
|
|
#### `PossibleFilters`
|
||
|
|
- **`All`**: Include all channel/sensor types.
|
||
|
|
- **`Analog`**: Analog channels.
|
||
|
|
- **`Squib`**: Squib channels.
|
||
|
|
- **`DigitalIn`**: Digital input channels.
|
||
|
|
- **`DigitalOut`**: Digital output channels.
|
||
|
|
- **`UART`**: UART channels.
|
||
|
|
- **`StreamOut`**: Stream output channels.
|
||
|
|
- **`StreamIn`**: Stream input channels.
|
||
|
|
- **`CAN`**: CAN channels.
|
||
|
|
|
||
|
|
#### `NonLinearStyles`
|
||
|
|
- **`IRTraccManual`**
|
||
|
|
- **`IRTraccDiagnosticsZero`**
|
||
|
|
- **`IRTraccZeroMMmV`**
|
||
|
|
- **`IRTraccAverageOverTime`**
|
||
|
|
- **`Polynomial`**
|
||
|
|
- **`IRTraccCalFactor`**
|
||
|
|
|
||
|
|
#### `NonLinearSLICEWareStyles`
|
||
|
|
- **`Manual`**
|
||
|
|
- **`DiagnosticZeroMMmV`**
|
||
|
|
- **`ZeroMMmV`**
|
||
|
|
- **`AverageOverTime`**
|
||
|
|
- **`Polynomial`**
|
||
|
|
|
||
|
|
#### `CalibrationEnforcement`
|
||
|
|
- **`None`**: No calibration enforcement.
|
||
|
|
- **`NonLinear`**: Enforce non-linear calibration.
|
||
|
|
- **`Linear`**: Enforce linear calibration.
|
||
|
|
|
||
|
|
#### `SensitivityInspectionType`
|
||
|
|
- **`NotSet`**: Inspection status not set (value `0`).
|
||
|
|
- **`Required`**: Inspection required (value `1`).
|
||
|
|
- **`Cleared`**: Inspection cleared (value `2`).
|
||
|
|
|
||
|
|
#### `CalibrationBehaviors`
|
||
|
|
- **`LinearIfAvailable`**: Prefer linear calibration if available.
|
||
|
|
- **`NonLinearIfAvailable`**: Prefer non-linear calibration if available.
|
||
|
|
- **`UseBothIfAvailable`**: Use both linear and non-linear calibrations if available.
|
||
|
|
|
||
|
|
#### `InitialOffsetTypes`
|
||
|
|
- **`None`**: No initial offset (value `0`).
|
||
|
|
- **`EU`**: Offset specified in engineering units (EU) (value `1`).
|
||
|
|
- **`EUAtMV`**: Offset specified in EU at a specific mV (value `2`).
|
||
|
|
- **`LHS`**: Left-hand side offset (value `3`).
|
||
|
|
- **`RHS`**: Right-hand side offset (value `4`).
|
||
|
|
- **`FRONTAL`**: Frontal offset (value `5`).
|
||
|
|
|
||
|
|
#### `FilterClassType`
|
||
|
|
- **`None`**: No filter (code `P` unless `UseZeroForUnfiltered` is true, then `0`) (value `0`).
|
||
|
|
- **`AdHoc`**: Ad-hoc filter (value `-1`).
|
||
|
|
- **`Unfiltered`**: Unfiltered (code `0`) (value `-2`).
|
||
|
|
- **`CFC10`**: 17 Hz cutoff (code `17`) (value `17`).
|
||
|
|
- **`CFC60`**: 100 Hz cutoff, code `D` (value `100`).
|
||
|
|
- **`CFC180`**: 300 Hz cutoff, code `C` (value `300`).
|
||
|
|
- **`CFC600`**: 1000 Hz cutoff, code `B` (value `1000`).
|
||
|
|
- **`CFC1000`**: 1650 Hz cutoff, code `A` (value `1650`).
|
||
|
|
|
||
|
|
#### `ZeroMethodType`
|
||
|
|
- **`AverageOverTime`**: Calculate zero using average over time (value `0`).
|
||
|
|
- **`UsePreEventDiagnosticsZero`**: Calculate zero using pre-event diagnostics (value `1`).
|
||
|
|
- **`None`**: No software zero (injected value) (value `2`).
|
||
|
|
|
||
|
|
#### `OriginalZeroMethodType`
|
||
|
|
- **`AverageOverTime`**
|
||
|
|
- **`UsePreCalZero`**
|
||
|
|
- **`None`**
|
||
|
|
|
||
|
|
#### `CSVImportTags.Tags`
|
||
|
|
A large set of tags used for CSV import/export, each annotated with `[Display(Name = "...")]` and `[Version(n)]`. Key examples:
|
||
|
|
- **`DatabaseReferenceNumber`** (v0)
|
||
|
|
- **`SensorSN`** (v0)
|
||
|
|
- **`ChannelName`** (v0)
|
||
|
|
- **`FilterClass`** (v0)
|
||
|
|
- **`SoftwareZeroReference`** (v0)
|
||
|
|
- **`Version`** (v1)
|
||
|
|
- **`InitialOffset`** (v2)
|
||
|
|
- **`ZeroMethod`** (v2)
|
||
|
|
- **`DASSerialNumber`** (v4)
|
||
|
|
- **`ClockMasterInputType`** (v5)
|
||
|
|
- **`PTPDomainId`** (v6)
|
||
|
|
|
||
|
|
Static methods:
|
||
|
|
- **`IsSensorTag(int version)`**: Returns `true` if `version` is in `{0, 2, 3, 4}`.
|
||
|
|
- **`GetVersionTags(int version)`**: Returns array of `Tags` valid for given `version`.
|
||
|
|
- **`GetStringForTag(Tags tag)`**: Returns display string for `tag`.
|
||
|
|
- **`GetTagForString(string s)`**: Returns `Tags` for display string `s`; `Tags.Unknown` if not found.
|
||
|
|
- **`GetVersionForTag(Tags t)`**: Returns version `int` for `tag`; `int.MaxValue` if not annotated.
|
||
|
|
|
||
|
|
#### `SensorConstants.SensorSettings`
|
||
|
|
Enum of sensor configuration settings (used internally, not for serialization):
|
||
|
|
- **`Range`, `CFC`, `Polarity`, `Position`, `LimitDuration` (deprecated), `Duration` (deprecated), `Delay` (deprecated), `OutputMode`, `SQMode`, `DIMode`, `DefaultValue`, `ActiveValue`**
|
||
|
|
- **`SquibLimitDuration`, `SquibDuration`, `SquibDelay`, `DigitalOutLimitDuration`, `DigitalOutDuration`, `DigitalOutDelay`, `SquibCurrent`**
|
||
|
|
- **`ZeroMethod`, `ZeroMethodStart`, `ZeroMethodEnd`, `UserValue1`, `UserValue2`, `UserValue3`, `InitialOffset`, `FilterClass`**
|
||
|
|
- **`UartBaudRate`, `UartDataBits`, `UartStopBits`, `UartParity`, `UartFlowControl`, `UartDataFormat`**
|
||
|
|
- **`StreamOutUDPProfile`, `StreamOutUDPAddress`, `StreamOutUDPTimeChannelId`, `StreamOutUDPDataChannelId`, `StreamOutUDPTmNSConfig`, `StreamOutIRIGTimeDataPacketIntervalMs`**
|
||
|
|
- **`StreamInUDPAddress`, `ACCouplingEnabled`, `BridgeType`**
|
||
|
|
|
||
|
|
#### `SensorConstants.SensorType`
|
||
|
|
- **`Analog`**
|
||
|
|
- **`DigitalIn`**
|
||
|
|
- **`DigitalOut`**
|
||
|
|
- **`Squib`**
|
||
|
|
- **`Clock`**
|
||
|
|
- **`UART`**
|
||
|
|
- **`StreamOut`**
|
||
|
|
- **`StreamIn`**
|
||
|
|
- **`Thermocoupler`**
|
||
|
|
|
||
|
|
#### `SensorConstants.SensUnits`
|
||
|
|
- **`NONE`**: Polynomial sensor (value `0`)
|
||
|
|
- **`mV`**: Sensitivity in mV (value `1`)
|
||
|
|
- **`mVperV`**: Sensitivity in mV/V (value `2`)
|
||
|
|
- **`mVperVperEU`**: Sensitivity in mV/V/EU (value `3`)
|
||
|
|
- **`mVperEU`**: Sensitivity in mV/EU (value `4`)
|
||
|
|
|
||
|
|
#### `SensorConstants.BridgeType`
|
||
|
|
Bitmask enum:
|
||
|
|
- **`IEPE`** (`1 << 0`)
|
||
|
|
- **`QuarterBridge`** (`1 << 1`)
|
||
|
|
- **`HalfBridge`** (`1 << 2`)
|
||
|
|
- **`FullBridge`** (`1 << 3`)
|
||
|
|
- **`DigitalInput`** (`1 << 4`)
|
||
|
|
- **`SQUIB`** (`1 << 5`)
|
||
|
|
- **`TOMDigital`** (`1 << 6`)
|
||
|
|
- **`HalfBridge_SigPlus`** (`1 << 7`)
|
||
|
|
- **`RTC`** (`1 << 8`)
|
||
|
|
- **`UART`** (`1 << 9`)
|
||
|
|
- **`StreamOut`** (`1 << 10`)
|
||
|
|
- **`StreamIn`** (`1 << 11`)
|
||
|
|
- **`Thermocoupler`** (`1 << 12`)
|
||
|
|
- **`CAN`** (`1 << 13`)
|
||
|
|
|
||
|
|
Static helpers:
|
||
|
|
- **`ConvertIntToBridgeType(int bridge)`**: Maps integer to `BridgeType`.
|
||
|
|
- **`ConvertBridgeToInt(BridgeType bridge)`**: Maps `BridgeType` to integer (legacy DB storage).
|
||
|
|
|
||
|
|
#### `SensorConstants.SensorCalPolicy`
|
||
|
|
- **`AllowAlways`**: Allow sensors regardless of calibration status.
|
||
|
|
- **`DONT_ALLOW`**: Reject out-of-cal sensors.
|
||
|
|
|
||
|
|
#### `SensorConstants.CouplingModes`
|
||
|
|
- **`AC`** (`0`)
|
||
|
|
- **`DC`**
|
||
|
|
|
||
|
|
### Constants (Static Fields)
|
||
|
|
|
||
|
|
#### Global Settings (Runtime Cache)
|
||
|
|
- **`UseInitSignalTOM`**: `bool`, default `false`.
|
||
|
|
- **`UseSensorFirstUseDate`**: `bool`, default `false`.
|
||
|
|
- **`DontAllowDataCollectionIfOverused`**: `bool`, default `false`.
|
||
|
|
- **`AllowInspectBeforeUse`**: `bool`, default `false`.
|
||
|
|
- **`UsageRemainingForWarning`**: `int`, default `5`.
|
||
|
|
- **`DefaultMaxUsageAllowed`**: `int`, default `2500`.
|
||
|
|
- **`UseISOCodeFilterMapping`**: `bool`, default `true`.
|
||
|
|
- **`DefaultZeroMethodType`**: `ZeroMethodType`, default `AverageOverTime`.
|
||
|
|
- **`DefaultZeroMethodStart`**: `double`, default `-0.05`.
|
||
|
|
- **`DefaultZeroMethodEnd`**: `double`, default `-0.02`.
|
||
|
|
- **`DefaultRangeHiG`**: `double`, default `400`.
|
||
|
|
- **`DefaultRangeLowG`**: `double`, default `64`.
|
||
|
|
- **`DefaultRangeLowGDisplay`**: `double`, default `50`.
|
||
|
|
- **`DefaultRangeARS`**: `double`, default `2000`.
|
||
|
|
- **`DefaultRangeTemperature`**: `double`, default `85`.
|
||
|
|
- **`DefaultRangeHumidity`**: `double`, default `100`.
|
||
|
|
- **`DefaultRangePressure`**: `double`, default `16`.
|
||
|
|
- **`SensorCalOutOfDateWarningPeriodDays`**: `int`, default `14`.
|
||
|
|
- **`SensorCalPolicyCurrent`**: `SensorCalPolicy`, default `DONT_ALLOW`.
|
||
|
|
- **`DisableAutoSense`**: `bool`, default `false`.
|
||
|
|
- **`DefaultBridgeOffsetMVTolLow/High`**: `-100` / `100`.
|
||
|
|
- **`DefaultIEPEOffsetMVTolLow/High`**: `-2000` / `2000`.
|
||
|
|
|
||
|
|
#### IR-TRACC Constants
|
||
|
|
- **`δThorax`**: `15.65`
|
||
|
|
- **`δAbdomen`**: `0`
|
||
|
|
- **`D0Thorax`**: `141.8`
|
||
|
|
- **`D0Abdomen`**: `150.9`
|
||
|
|
- **`δThoraxLower`**: `-15.65`
|
||
|
|
- **`D0ThoraxLower`**: `141.8`
|
||
|
|
|
||
|
|
#### Unit Strings
|
||
|
|
- **`VOLTAGE_INSERTION_UNIT`**: `"mV"`
|
||
|
|
- **`TSRAIR_ACCEL_UNIT`**: `"g"`
|
||
|
|
- **`TSRAIR_ARS_UNIT`**: `"deg/sec"`
|
||
|
|
- **`TSRAIR_TEMPERATURE_UNIT`**: `"C"`
|
||
|
|
- **`TSRAIR_HUMIDITY_UNIT`**: `"%"`
|
||
|
|
- **`TSRAIR_PRESSURE_UNIT`**: `"PSI"`
|
||
|
|
- **`DEGREES`**: `"deg"`
|
||
|
|
- **`DEGREE_ANGLE`**: `"deg-ang"`
|
||
|
|
- **`POTUnits`**: `new[] { "deg", "deg-ang" }`
|
||
|
|
|
||
|
|
#### Bridge Resistance Limits
|
||
|
|
- **`MIN_BRIDGE_RESISTANCE_OHMS`**: `1`
|
||
|
|
- **`MAX_BRIDGE_RESISTANCE_OHMS`**: `32000`
|
||
|
|
|
||
|
|
#### Sensor Defaults
|
||
|
|
- **`SENSOR_FIRST_USE_DEFAULT`**: `false`
|
||
|
|
- **`ALLOW_INSPECT_BEFORE_USE_DEFAULT`**: `false`
|
||
|
|
- **`SENSOR_OVERUSE_DEFAULT`**: `false`
|
||
|
|
- **`SENSOR_USAGE_REMAINING_FOR_WARNING_DEFAULT`**: `5`
|
||
|
|
- **`SENSOR_DEFAULT_MAX_USAGE_DEFAULT`**: `2500`
|
||
|
|
- **`CAL_SENSOR_POLICY_DEFAULT`**: `DONT_ALLOW`
|
||
|
|
- **`CAL_SENSOR_POLICY_WARNING_DAYS_DEFAULT`**: `14`
|
||
|
|
|
||
|
|
#### Squib Defaults (Legacy)
|
||
|
|
- **`SQUIB_DELAY_CONSTANT`**: `0`
|
||
|
|
- **`SQUIB_LIMIT_DURATION_CONSTANT`**: `true`
|
||
|
|
- **`SQUIB_DURATION_CONSTANT`**: `10`
|
||
|
|
- **`SQUIB_LOW_TOLERANCE_CONSTANT`**: `1`
|
||
|
|
- **`SQUIB_HIGH_TOLERANCE_CONSTANT`**: `10`
|
||
|
|
- **`SQUIB_FIREMODE_CONSTANT`**: `SquibFireMode.CAP`
|
||
|
|
- **`SQUIB_CURRENT_CONSTANT`**: `1.5`
|
||
|
|
|
||
|
|
#### Digital Output Defaults (Legacy)
|
||
|
|
- **`DIGITALOUT_MODE_CONSTANT`**: `DigitalOutputModes.FVLH`
|
||
|
|
- **`DIGITALOUT_DELAY_CONSTANT`**: `0`
|
||
|
|
- **`DIGITALOUT_LIMITDURATION_CONSTANT`**: `true`
|
||
|
|
- **`DIGITALOUT_DURATION_CONSTANT`**: `10`
|
||
|
|
|
||
|
|
#### UART Defaults (Legacy)
|
||
|
|
- **`UART_DATABITS_CONSTANT`**: `8`
|
||
|
|
- **`UART_STOPBITS_CONSTANT`**: `StopBits.One`
|
||
|
|
- **`UART_PARITY_CONSTANT`**: `Parity.None`
|
||
|
|
- **`UART_FLOWCONTROL_CONSTANT`**: `Handshake.None`
|
||
|
|
- **`UART_DATAFORMAT_CONSTANT`**: `UartDataFormat.Binary`
|
||
|
|
|
||
|
|
#### Stream Defaults (Legacy)
|
||
|
|
- **`STREAMIN_ADDRESS_CONSTANT`**: `"UDP://239.1.2.10:8400"`
|
||
|
|
- **`STREAMOUT_PROFILE_CONSTANT`**: `UDPStreamProfile.CH10_PCM_128BIT_2HDR`
|
||
|
|
- **`STREAMOUT_ADDRESS_CONSTANT`**: `"UDP://239.1.2.10:8400"`
|
||
|
|
- **`STREAMOUT_TIME_CHID_CONSTANT`**: `1`
|
||
|
|
- **`STREAMOUT_DATA_CHID_CONSTANT`**: `3`
|
||
|
|
- **`STREAMOUT_TMNS_CONFIG_CONSTANT`**: `"(1,6,60,0,0,0,0,0)"`
|
||
|
|
- **`STREAMOUT_IRIG_TDP_INTERVAL_CONSTANT`**: `500`
|
||
|
|
|
||
|
|
#### Test-Specific Serial Number Prefixes
|
||
|
|
- **`TEST_SPECIFIC_DOUT`**: `"TSD_"`
|
||
|
|
- **`TEST_SPECIFIC_SQUIB`**: `"TSQ_"`
|
||
|
|
- **`TEST_SPECIFIC_DIN`**: `"TSI_"`
|
||
|
|
- **`TEST_SPECIFIC_EMB`**: `"TSA_"`
|
||
|
|
- **`TEST_SPECIFIC_THERMO`**: `"TST_"`
|
||
|
|
- **`TEST_SPECIFIC_EMB_CLK`**: `"TSC_"`
|
||
|
|
- **`TEST_SPECIFIC_UART`**: `"TSU_"`
|
||
|
|
- **`TEST_SPECIFIC_STREAM_OUT`**: `"TSS_"`
|
||
|
|
- **`TEST_SPECIFIC_STREAM_IN`**: `"TSN_"`
|
||
|
|
- **`TEST_SPECIFIC_CAN`**: `"TSF_"`
|
||
|
|
|
||
|
|
Static helper methods:
|
||
|
|
- **`IsTestSpecificDigitalOut(string sn)`**
|
||
|
|
- **`IsTestSpecificSquib(string sn)`**
|
||
|
|
- **`IsTestSpecificDigitalIn(string sn)`**
|
||
|
|
- **`IsTestSpecificEmbedded(string sn)`**
|
||
|
|
- **`IsTestSpecificThermoCouple(string sn)`**
|
||
|
|
- **`IsTestSpecificEmbeddedClock(string sn)`**
|
||
|
|
- **`IsTestSpecificStreamOut(string sn)`**
|
||
|
|
- **`IsTestSpecificStreamIn(string sn)`**
|
||
|
|
- **`IsTestSpecificUart(string sn)`**
|
||
|
|
- **`IsTestSpecificThermocoupler(string sn)`**
|
||
|
|
- **`IsTestSpecificCAN(string sn)`**
|
||
|
|
|
||
|
|
#### Other Constants
|
||
|
|
- **`LinearValuesSeparator`**: `"||"` (used for encoding added linear calibration with non-linear sensor)
|
||
|
|
- **`EditObjectSensorChannelDragFormat`**: `"EditObjectSensorsChannelTable.UserData []"`
|
||
|
|
- **`TSRAirTemperatureChannel`**: `9`
|
||
|
|
- **`TSRAirHumidityChannel`**: `10`
|
||
|
|
- **`TSRAirPressureChannel`**: `11`
|
||
|
|
- **`ARS2000`**, **`LowG64`**: `2000`, `64`
|
||
|
|
- **`HighG`**, **`LowG`**, **`ARS`**, **`Atm`**: `"-High g"`, `"-Low g"`, `"-ARS"`, `"-Atm"`
|
||
|
|
- **`IsTSRAirHighGChannel`, `IsTSRAirLowGChannel`, `IsTSRAirARSChannel`, `IsTSRAirAtmChannel`, `IsTSRAirHumidityChannel`**: Helper methods.
|
||
|
|
|
||
|
|
## 3. Invariants
|
||
|
|
|
||
|
|
- **CSV Import Versions**: Valid versions are `0` through `6`. Only versions `{0, 2, 3, 4}` are considered sensor tag versions (`IsSensorTag`).
|
||
|
|
- **`ZeroMethodType` ordering**: The values `0`, `1`, `2` are critical for legacy compatibility (e.g., GM-ISF import).
|
||
|
|
- **`BridgeType` bitmask**: Values are powers of two; `ConvertBridgeToInt` maps to legacy integer storage (e.g., `FullBridge` → `3`).
|
||
|
|
- **`SensitivityInspectionType` values**: `NotSet=0`, `Required=1`, `Cleared=2`.
|
||
|
|
- **`FilterClassType` codes**: Values map to SAE filter class codes (e.g., `CFC60` → `100` → code `D`).
|
||
|
|
- **`CalibrationEnforcement` and `CalibrationBehaviors`**: Must be used consistently with `NonLinearStyles` and `NonLinearSLICEWareStyles`.
|
||
|
|
- **`InitialOffsetTypes`**: Values `EU`, `EUAtMV`, `LHS`, `RHS`, `FRONTAL` are mutually exclusive and context-dependent.
|
||
|
|
- **`
|