diff --git a/osi_detectedlandmark.proto b/osi_detectedlandmark.proto index d77d98c39..a85357525 100644 --- a/osi_detectedlandmark.proto +++ b/osi_detectedlandmark.proto @@ -13,53 +13,69 @@ package osi; // message DetectedTrafficSign { - // Header attributes of detected traffic sign. - // - optional DetectedObjectHeader header = 1; - - // Specific ID of the traffic sign as assigned by the sensor internally. Need not match with ground_truth_id. + // Specific ID of the traffic sign as assigned by the sensor internally. + // Need not match with ground_truth_id. // optional Identifier tracking_id = 2; // The ID of the original traffic sign in the ground truth. - // In case of a ghost sign (no corresponding ground truth), this field should be unset. + // In case of a ghost sign (no corresponding ground truth), this field + // should be unset. + // optional Identifier ground_truth_id = 3; // A list of candidates for this traffic sign as estimated by the sensor. // repeated CandidateSign candidate_sign = 4; - // A list of candidates for (a) possible supplementary sign(s) as estimated by the sensor. - // + // A list of candidates for (a) possible supplementary sign(s) as estimated + // by the sensor. + // repeated CandidateSupplementarySign candidate_supplementary_sign = 5; // The detected geometry of the traffic sign. // optional Geometry geometry = 6; - // The estimated probability that this traffic sign really exists, not based on history. + // The estimated probability that this traffic sign really exists, not based + // on history. + // + // \note Use as confidence measure where a low value means less confidence + // and a high value indicates strong confidence. // - // \note Use as confidence measure where a low value means less confidence and a high value indicates - // strong confidence. optional double existence_probability = 7; // The measurement state. // optional MeasurementState measurement_state = 8; - // The root mean squared error of the base parameters of the detected traffic sign. + + // The root mean squared error of the base parameters of the detected + // traffic sign. // optional BaseStationary rmse = 9; // Links to the corresponding lanes. // repeated RelevantLane relevant_lane = 10; + + // A list of sensors which detected this detected entity. + // + // If SensorData has detected entities and all detections are missing, then + // e.g. the number of sensors can confirm the existence_probability. + // + // \note This information can be determined via the detected entities' + // detections ( \c ...Detection::object_id = 'this detected entity' ) and + // the sensors (their IDs) to which these detections belong. + // + repeated Identifier sensor_id = 11; // Definition of traffic sign geometries. // enum Geometry { - // Geometry of the traffic sign is unknown (must not be used in ground truth). - // + // Geometry of the traffic sign is unknown (must not be used in ground + // truth). + // GEOMETRY_UNKNOWN = 0; // Geometry of the traffic sign is unspecified (but known). @@ -100,14 +116,17 @@ message DetectedTrafficSign // Traffic sign has a rectangle geometry. (width is bigger than height) // E.g. one-way + // GEOMETRY_RECTANGLE = 10; // Traffic sign that has a pole geometry. (height is bigger than width) // E.g. pole indicating highways exit in xx m. + // GEOMETRY_POLE = 11; // Traffic sign that has an oversize rectangle geometry. // E.g. direction plates on highway or city signs. + // GEOMETRY_PLATE = 12; } } @@ -118,12 +137,14 @@ message DetectedTrafficSign message CandidateSign { // The definition of the candidate's properties. - // The sign.id values of all CandidateSigns within one DetectedTrafficSign correspond to the tracking ID and must - // be identical. + // The sign.id values of all \c CandidateSign within one + // \c DetectedTrafficSign correspond to the tracking ID and must be identical. + // optional TrafficSign sign = 1; - // The estimated probability that this candidate is the true value. Range [0,1]. - // The sum of all candidate_probabilities must be one. + // The estimated probability that this candidate is the true value. + // Range [0,1]. The sum of all candidate_probabilities must be one. + // optional double candidate_probability = 2; // The amount of time that this detected object has been currently @@ -134,16 +155,18 @@ message CandidateSign } // -// \brief A candidate for (a) detected supplementary sign(s) as estimated by the sensor. -// +// \brief A candidate for (a) detected supplementary sign(s) as estimated by the +// sensor. message CandidateSupplementarySign { - // The definition of one of more supplementary signs that together define this candidate. + // The definition of one of more supplementary signs that together define + // this candidate. // repeated SupplementarySign sign = 1; - // The estimated probability that this candidate is the true value. Range [0,1]. - // The sum of all candidate_probabilities must be one. + // The estimated probability that this candidate is the true value. + // Range [0,1]. The sum of all candidate_probabilities must be one. + // optional double candidate_probability = 2; // The amount of time that this detected object has been currently @@ -158,16 +181,15 @@ message CandidateSupplementarySign // message DetectedTrafficLight { - // Header attributes of detected traffic light. - // - optional DetectedObjectHeader header = 1; - - // Specific ID of the traffic light as assigned by the sensor internally. Need not match with ground_truth_id. + // Specific ID of the traffic light as assigned by the sensor internally. + // Need not match with ground_truth_id. // optional Identifier tracking_id = 2; // The ID of the original traffic light in the ground truth. - // In case of a ghost detection (no corresponding ground truth), this field should be unset. + // In case of a ghost detection (no corresponding ground truth), this field + // should be unset. + // optional Identifier ground_truth_id = 3; // Description of the detected traffic light. @@ -182,18 +204,33 @@ message DetectedTrafficLight // repeated RelevantLane relevant_lane = 6; - // The estimated probability that this traffic light really exists, not based on history. + // The estimated probability that this traffic light really exists, not + // based on history. + // + // \note Use as confidence measure where a low value means less confidence + // and a high value indicates strong confidence. // - // \note Use as confidence measure where a low value means less confidence and a high value indicates - // strong confidence. optional double existence_probability = 7; // The measurement state. // optional MeasurementState measurement_state = 8; - // The root mean squared error of the base parameters of the detected traffic light. + + // The root mean squared error of the base parameters of the detected + // traffic light. // optional BaseStationary rmse = 9; + + // A list of sensors which detected this detected entity. + // + // If SensorData has detected entities and all detections are missing, then + // e.g. the number of sensors can confirm the existence_probability. + // + // \note This information can be determined via the detected entities' + // detections ( \c ...Detection::object_id = 'this detected entity' ) and + // the sensors (their IDs) to which these detections belong. + // + repeated Identifier sensor_id = 10; // // \brief Further specifies the relevant directions of the traffic light. @@ -215,15 +252,19 @@ message DetectedTrafficLight // Direction is unknown (must not be used in ground truth). // DIRECTION_UNKNOWN = 0; + // Other (unspecified but known) direction. // DIRECTION_OTHER = 1; + // Direction is straight. // DIRECTION_STRAIGHT = 2; + // Direction is left. // DIRECTION_LEFT = 3; + // Direction is right. // DIRECTION_RIGHT = 4; @@ -250,26 +291,27 @@ message RelevantLane // message DetectedRoadMarking { - // Header attributes of detected road marking. - // - optional DetectedObjectHeader header = 1; - - // Specific ID of the road marking as assigned by the sensor internally. Need not match with ground_truth_id. + // Specific ID of the road marking as assigned by the sensor internally. + // Need not match with ground_truth_id. // optional Identifier tracking_id = 2; // The ID of the original road marking in the ground truth. - // In case of a ghost detection (no corresponding ground truth), this field should be unset. + // In case of a ghost detection (no corresponding ground truth), this field + // should be unset. + // optional Identifier ground_truth_id = 3; // A list of candidates for this road marking as estimated by the sensor. // repeated CandidateRoadMarking candidate_road_marking = 4; - // The estimated probability that this road marking really exists, not based on history. + // The estimated probability that this road marking really exists, not based + // on history. + // + // \note Use as confidence measure where a low value means less confidence + // and a high value indicates strong confidence. // - // \note Use as confidence measure where a low value means less confidence and a high value indicates - // strong confidence. optional double existence_probability = 5; // Links to the corresponding lanes. @@ -279,9 +321,22 @@ message DetectedRoadMarking // The measurement state. // optional MeasurementState measurement_state = 7; - // The root mean squared error of the base parameters of the detected road marking. + + // The root mean squared error of the base parameters of the detected road + // marking. // optional BaseStationary rmse = 8; + + // A list of sensors which detected this detected entity. + // + // If SensorData has detected entities and all detections are missing, then + // e.g. the number of sensors can confirm the existence_probability. + // + // \note This information can be determined via the detected entities' + // detections ( \c ...Detection::object_id = 'this detected entity' ) and + // the sensors (their IDs) to which these detections belong. + // + repeated Identifier sensor_id = 11; } // @@ -293,8 +348,9 @@ message CandidateRoadMarking // optional RoadMarking road_marking = 1; - // The estimated probability that this candidate is the true value. Range [0,1]. - // The sum of all candidate_probabilities must be one. + // The estimated probability that this candidate is the true value. + // Range [0,1]. The sum of all candidate_probabilities must be one. + // optional double candidate_probability = 2; // The amount of time that this detected object has been currently diff --git a/osi_detectedlane.proto b/osi_detectedlane.proto index 87c49685e..a1a8ead2f 100644 --- a/osi_detectedlane.proto +++ b/osi_detectedlane.proto @@ -13,17 +13,14 @@ package osi; // message DetectedLane { - // Header attributes of detected lane. - // - optional DetectedObjectHeader header = 1; - - // Specific ID of the detected lane as assigned by the sensor internally. Need not match with ground_truth_id. - // + // Specific ID of the detected lane as assigned by the sensor internally. + // Need not match with ground_truth_id. optional Identifier tracking_id = 2; // The ID of the original lane in the ground truth. - // Multiple entries if the detected lane is a merge of multiple lanes in ground truth (as lane segment definitions - // may vary between sensor and ground truth). + // Multiple entries if the detected lane is a merge of multiple lanes in + // ground truth (as lane segment definitions may vary between sensor and + // ground truth). repeated Identifier ground_truth_id = 3; // The amount of time that this detected object has been currently @@ -40,11 +37,22 @@ message DetectedLane // optional Lane lane = 4; - // The estimated probability that this lane really exists, not based on history. + // The estimated probability that this lane really exists, not based on + // history. // - // \note Use as confidence measure where a low value means less confidence and a high value indicates - // strong confidence. + // \note Use as confidence measure where a low value means less confidence + // and a high value indicates strong confidence. optional double existence_probability = 5; + + // A list of sensors which detected this detected entity. + // + // If SensorData has detected entities and all detections are missing, then + // e.g. the number of sensors can confirm the existence_probability. + // + // \note This information can be determined via the detected entities' + // detections ( \c ...Detection::object_id = 'this detected entity' ) and + // the sensors (their IDs) to which these detections belong. + repeated Identifier sensor_id = 6; } // @@ -52,12 +60,8 @@ message DetectedLane // message DetectedLaneBoundary { - // Header attributes of detected lane boundary. - // - optional DetectedObjectHeader header = 1; - - // Specific ID of the detected lane boundary as assigned by the sensor internally. Need not match with ground_truth_id. - // + // Specific ID of the detected lane boundary as assigned by the sensor + // internally. Need not match with ground_truth_id. optional Identifier tracking_id = 2; // The ID of the original LaneBoundary in the ground truth. @@ -72,8 +76,8 @@ message DetectedLaneBoundary // Unit: [s] optional double age = 1000; - // State of the measurement. Lane boundary measured in the current image or Lane boundary predicted (no measurement in current image). - // + // State of the measurement. Lane boundary measured in the current image or + // lane boundary predicted (no measurement in current image). optional MeasurementState measurement_state = 5; // The basic measured lane boundary. @@ -102,4 +106,14 @@ message DetectedLaneBoundary // Confidence of the segments of the BoundaryPoint information from a LaneBoundary. // For every \c lane_boundary.boundary_line point exact one \c boundary_line_confidence confidence value is specified. repeated double boundary_line_point_confidences = 10; + + // A list of sensors which detected this detected entity. + // + // If SensorData has detected entities and all detections are missing, then + // e.g. the number of sensors can confirm the existence_probability. + // + // \note This information can be determined via the detected entities' + // detections ( \c ...Detection::object_id = 'this detected entity' ) and + // the sensors (their IDs) to which these detections belong. + repeated Identifier sensor_id = 11; } diff --git a/osi_detectedobject.proto b/osi_detectedobject.proto index fb05a4b3c..62c772f1e 100644 --- a/osi_detectedobject.proto +++ b/osi_detectedobject.proto @@ -14,34 +14,30 @@ package osi; // message DetectedObject { - // Header attributes of detected object. - // - optional DetectedObjectHeader header = 1; - // Specific ID of the object as assigned by the sensor internally. Need not // match with ground_truth_id. - optional Identifier tracking_id = 2; + optional Identifier tracking_id = 1; // The ID of the original object in the ground truth list of vehicles / // objects etc. Multiple entries if detected object is a merge of multiple // ground truth objects. - repeated Identifier ground_truth_id = 3; + repeated Identifier ground_truth_id = 2; // The amount of time that this object has been currently observed/tracked. // Unit: [s] - optional double age = 4; + optional double age = 3; // The measurement state of the detected object. // - optional MeasurementState measurement_state = 5; + optional MeasurementState measurement_state = 4; // Base parameters of the object. object.position is the middle of the // bounding box of the target object. - optional BaseMoving object = 6; + optional BaseMoving object = 5; // The root mean squared error of the base parameters in object (cross // correlations are currently neglected). - optional BaseMoving object_rmse = 7; + optional BaseMoving object_rmse = 6; // Reference point location specification of the sensor measurement // (required to decouple sensor measurement, position and bounding box @@ -50,22 +46,22 @@ message DetectedObject // \note Note that the value of this field has no impact on the value of // object.position, which always references the center of the object / // bounding box. - optional ReferencePoint reference_point = 8; + optional ReferencePoint reference_point = 7; // Actual movement state w.r.t. the moving object history. // - optional MovementState movement_state = 9; + optional MovementState movement_state = 8; // The estimated probability that this object really exists, not based on // history. // // \note Use as confidence measure where a low value means less confidence // and a high value indicates strong confidence. - optional double existence_probability = 10; + optional double existence_probability = 9; // Current state of lights as perceived by sensor, only relevant if the // object is estimated to be an object that has lights. - optional Vehicle.LightState light_state = 11; + optional Vehicle.LightState light_state = 10; // Additional internal data and state flags required and used by the // sensor-models, should not be used by subscribers to SensorData. Generally @@ -73,32 +69,32 @@ message DetectedObject // // \note optional. List of used detections to recognize this object. // Detections have also an identifier to reference to the detected object. - optional ModelInternalObject model_internal_object = 12; + optional ModelInternalObject model_internal_object = 11; // Additional data that is specific to radar sensors. // // \note Field need not be set if simulated sensor is not a radar sensor. - optional RadarSpecificObjectData radar_specifics = 13; + optional RadarSpecificObjectData radar_specifics = 12; // Additional data that is specific to lidar sensors. // // \note Field need not be set if simulated sensor is not a lidar sensor. - optional LidarSpecificObjectData lidar_specifics = 14; + optional LidarSpecificObjectData lidar_specifics = 13; // Additional data that is specific to camera sensors. // // \note Field need not be set if simulated sensor is not a camera sensor. - optional CameraSpecificObjectData camera_specifics = 15; + optional CameraSpecificObjectData camera_specifics = 14; // Additional data that is specific to ultrasonic sensors. // // \note Field need not be set if simulated sensor is not an ultrasonic // sensor. - optional UltrasonicSpecificObjectData ultrasonic_specifics = 16; + optional UltrasonicSpecificObjectData ultrasonic_specifics = 15; // The estimated probabilities for the object to belong to a specific class. // - optional ClassProbability class_probability = 17; + optional ClassProbability class_probability = 16; // Pedestrian head pose for behaviour prediction. Describes the head // orientation w.r.t. the host vehicle orientation. @@ -110,7 +106,7 @@ message DetectedObject // // \par References: // [1] https://en.wikipedia.org/wiki/Anatomical_terms_of_location - optional Orientation3d head_pose = 18; + optional Orientation3d head_pose = 17; // Pedestrian upper body pose for behaviour prediction. Describes the // upper body orientation w.r.t. the host vehicle orientation. @@ -123,17 +119,27 @@ message DetectedObject // // \par References: // [2] https://en.wikipedia.org/wiki/Anatomical_terms_of_location - optional Orientation3d upper_body_pose = 19; + optional Orientation3d upper_body_pose = 18; // Percentage side lane left. // // Percentage value of the object width in the corresponding lane. - optional double percentage_side_lane_left = 20; + optional double percentage_side_lane_left = 19; // Percentage side lane right. // // Percentage value of the object width in the corresponding lane. - optional double percentage_side_lane_right = 21; + optional double percentage_side_lane_right = 20; + + // A list of sensors which detected this detected entity. + // + // If SensorData has detected entities and all detections are missing, then + // e.g. the number of sensors can confirm the existence_probability. + // + // \note This information can be determined via the detected entities' + // detections ( \c ...Detection::object_id = 'this detected entity' ) and + // the sensors (their IDs) to which these detections belong. + repeated Identifier sensor_id = 21; // Definition of available reference points. Left/middle/right and // front/middle/rear indicate the position in y- and x-direction @@ -295,86 +301,6 @@ message DetectedObject } } -// -// \brief The header attributes of each detected object. -// -message DetectedObjectHeader -{ - // Version number of used detected object messages (DetectedObject etc.). - // - optional InterfaceVersion version = 1; - - // Time stamp at which the measurement was taken (not the time at which it - // was processed or at which it is transmitted) in the global synchronized - // time. - // - // \note See SensorData::timestamp and SensorData::last_measurement_time - // for detailed discussions on the semantics of time-related fields. - optional Timestamp measurement_time = 2; - - // Continuous up counter to identify the cycle. - // - optional uint32 cycle_counter = 3; - - // Data Qualifier expresses to what extent the content of this event can be - // relied on. - optional DataQualifier data_qualifier = 4; - - // - // \brief Data qualifier communicates the overall availability of the - // interface. - // - enum DataQualifier - { - // Unknown (must not be used in ground truth). - // - DATA_QUALIFIER_UNKNOWN = 0; - - // Other (unspecified but known). - // - DATA_QUALIFIER_OTHER = 1; - - // Data is available. - // - DATA_QUALIFIER_AVAILABLE = 2; - - // Reduced data is available. - // - DATA_QUALIFIER_AVAILABLE_REDUCED = 3; - - // Data is not available. - // - DATA_QUALIFIER_NOT_AVAILABLE = 4; - - // Sensor is blind. - // - DATA_QUALIFIER_BLINDNESS = 5; - - // Sensor temporary available. - // - DATA_QUALIFIER_TEMPORARY_AVAILABLE = 6; - } - - // - // \brief Version of detected object messages ( \c DetectedObject - // etc.). - // - message InterfaceVersion - { - // Major version number. - // - optional uint32 version_major = 1; - - // Minor version number. - // - optional uint32 version_minor = 2; - - // Patch version number. - // - optional uint32 version_patch = 3; - } -} - // Definition of measurement states. // enum MeasurementState diff --git a/osi_detectedoccupant.proto b/osi_detectedoccupant.proto index f52df062d..feea5d44e 100644 --- a/osi_detectedoccupant.proto +++ b/osi_detectedoccupant.proto @@ -13,12 +13,8 @@ package osi; // message DetectedOccupant { - // Header attributes of detected occupant. - // - optional DetectedObjectHeader header = 1; - - // Specific ID of the occupant as assigned by the sensor internally. Need not match with ground_truth_id. - // + // Specific ID of the occupant as assigned by the sensor internally. Need + // not match with ground_truth_id. optional Identifier tracking_id = 2; // The ID of the original vehicle occupant in the ground truth. @@ -41,7 +37,17 @@ message DetectedOccupant // The estimated probability that this occupant really exists, not based on history. // - // \note Use as confidence measure where a low value means less confidence and a high value indicates - // strong confidence. + // \note Use as confidence measure where a low value means less confidence + // and a high value indicates strong confidence. optional double existence_probability = 5; + + // A list of sensors which detected this detected entity. + // + // If SensorData has detected entities and all detections are missing, then + // e.g. the number of sensors can confirm the existence_probability. + // + // \note This information can be determined via the detected entities' + // detections ( \c ...Detection::object_id = 'this detected entity' ) and + // the sensors (their IDs) to which these detections belong. + repeated Identifier sensor_id = 7; } diff --git a/osi_featuredata.proto b/osi_featuredata.proto index 6689c2a25..ae4e94c40 100644 --- a/osi_featuredata.proto +++ b/osi_featuredata.proto @@ -91,6 +91,12 @@ message SensorDetectionHeader // // \note This value has to be set if the list contains invalid detections. optional uint32 number_of_valid_detections = 7; + + // The ID of the sensor at host vehicle's mounting_position. + // + // This ID can equal \c SensorData::sensor_id, if SensorData hold only data + // from one sensor/sensor model. + optional Identifier sensor_id = 8; // \brief Data qualifier communicates the overall availability of the // interface. diff --git a/osi_sensordata.proto b/osi_sensordata.proto index ad08fbf59..b55b70130 100644 --- a/osi_sensordata.proto +++ b/osi_sensordata.proto @@ -26,9 +26,12 @@ package osi; // message SensorData { - // The ID of the sensor. + // The ID of the sensor at host vehicle's mounting_position. // - optional Identifier id = 1; + // This ID can equal \c DetectionHeader::sensor_id, if SensorData holds only + // data from one sensor/sensor model. + // + optional Identifier sensor_id = 1; // The timestamp of the sensor data. Zero time is arbitrary but must be // identical for all messages. Zero time does not need to coincide with @@ -54,6 +57,7 @@ message SensorData // For a sensor model that does not know its own internal latencies (e.g. // a dumb sensor with no internal time concept), the two timestamps might // also be identical, but delayed from the GroundTruth timestamp. + // optional Timestamp timestamp = 2; // Ground truth w.r.t. global coordinate system @@ -107,40 +111,68 @@ message SensorData // feature data \c SensorDetectionHeader::measurement_time fields. // optional Timestamp last_measurement_time = 8; + + // General information about the \c DetectedObject . + // + optional DetectedEntityHeader object_header = 100; // The list of objects detected by the sensor as perceived by the sensor. // repeated DetectedObject object = 9; + + // General information about the \c DetectedTrafficSign . + // + optional DetectedEntityHeader traffic_sign_header = 101; // The list of traffic signs detected by the sensor // repeated DetectedTrafficSign traffic_sign = 10; - + + // General information about the \c DetectedTrafficLight . + // + optional DetectedEntityHeader traffic_light_header = 102; + // The list of traffic lights detected by the sensor // repeated DetectedTrafficLight traffic_light = 11; + // General information about the \c DetectedRoadMarking . + // + optional DetectedEntityHeader road_marking_header = 103; + // The list of road marking detected by the sensor. // This excludes lane boundary markings. // repeated DetectedRoadMarking road_marking = 12; + + // General information about the \c DetectedLane . + // + optional DetectedEntityHeader lane_header = 104; // The list of lane detected by the sensor // repeated DetectedLane lane = 13; + + // General information about the \c DetectedLaneBoundary . + // + optional DetectedEntityHeader lane_boundary_header = 105; // The list of lane boundary markings detected by the sensor. // repeated DetectedLaneBoundary lane_boundary = 14; + + // General information about the \c DetectedOccupant . + // + optional DetectedEntityHeader occupant_header = 106; + + // The list of occupants of the host vehicle + // + repeated DetectedOccupant occupant = 16; // The ID of the lane the host vehicle travels on in the DetectedLane data, // relative to the sensor. // optional Identifier host_vehicle_lane_id = 15; - - // The list of occupants of the host vehicle - // - repeated DetectedOccupant occupant = 16; // Low level feature data interface. // @@ -155,5 +187,65 @@ message SensorData // Host vehicle data is data that the host vehicle knows about itself, // e.g. from location sensors, internal sensors and ECU bus data, etc., // that is made available to sensors as input. + // optional HostVehicleData host_vehicle_data_id = 18; } + +// +// \brief The header attributes of each detected entity. +// +message DetectedEntityHeader +{ + // Time stamp at which the measurement was taken (not the time at which it + // was processed or at which it is transmitted) in the global synchronized + // time. + // + // \note See SensorData::timestamp and SensorData::last_measurement_time + // for detailed discussions on the semantics of time-related fields. + // + optional Timestamp measurement_time = 1; + + // Continuous up counter to identify the cycle. + // + optional uint32 cycle_counter = 2; + + // Data Qualifier expresses to what extent the content of this event can be + // relied on. + // + optional DataQualifier data_qualifier = 3; + + // + // \brief Data qualifier communicates the overall availability of the + // interface. + // + enum DataQualifier + { + // Unknown (must not be used in ground truth). + // + DATA_QUALIFIER_UNKNOWN = 0; + + // Other (unspecified but known). + // + DATA_QUALIFIER_OTHER = 1; + + // Data is available. + // + DATA_QUALIFIER_AVAILABLE = 2; + + // Reduced data is available. + // + DATA_QUALIFIER_AVAILABLE_REDUCED = 3; + + // Data is not available. + // + DATA_QUALIFIER_NOT_AVAILABLE = 4; + + // Sensor is blind. + // + DATA_QUALIFIER_BLINDNESS = 5; + + // Sensor temporary available. + // + DATA_QUALIFIER_TEMPORARY_AVAILABLE = 6; + } +}