From 45aeb95a03182c7d690781c85a147dea49e12f72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20Misbach?= Date: Tue, 17 Dec 2024 16:52:09 +0100 Subject: [PATCH] [uss_qualifier/scenarios/netrid/nominal_behavior] Add checks for UA classification in DP (NET0470) --- .../netrid/common_dictionary_evaluator.py | 15 ++++++++---- .../astm/netrid/display_data_evaluator.py | 5 ++-- ..._dictionary_evaluator_dp_flight_details.md | 24 +++++++++++++++++++ .../suites/astm/netrid/f3411_22a.md | 12 +++++++++- .../suites/uspace/network_identification.md | 12 +++++++++- .../suites/uspace/required_services.md | 12 +++++++++- 6 files changed, 70 insertions(+), 10 deletions(-) diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/common_dictionary_evaluator.py b/monitoring/uss_qualifier/scenarios/astm/netrid/common_dictionary_evaluator.py index 418947c480..c4ae2a4cea 100644 --- a/monitoring/uss_qualifier/scenarios/astm/netrid/common_dictionary_evaluator.py +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/common_dictionary_evaluator.py @@ -136,7 +136,8 @@ def evaluate_dp_details( self, injected_details: injection.RIDFlightDetails, observed_details: Optional[observation_api.GetDetailsResponse], - participants: List[str], + participant_id: ParticipantID, + query_timestamp: datetime.datetime, ): """Implements fragment documented in `common_dictionary_evaluator_dp_flight_details.md`.""" @@ -148,13 +149,19 @@ def evaluate_dp_details( "uas_id", injected_details.get("serial_number", None) ), # fall back on seria number if no UAS ID observed_details.get("uas", {}).get("id", None), - participants, + [participant_id], + ) + self._evaluate_ua_classification( + _get_classification_fields(injected_details), + _get_classification_fields(observed_details.uas), + participant_id, + query_timestamp, ) operator_obs = observed_details.get("operator", {}) self._evaluate_operator_id( - injected_details.operator_id, operator_obs.get("id", None), participants + injected_details.operator_id, operator_obs.get("id", None), [participant_id] ) operator_altitude_obs = operator_obs.get("altitude", {}) @@ -169,7 +176,7 @@ def evaluate_dp_details( operator_obs.get("location", None), Altitude.w84m(value=operator_altitude_value_obs), operator_altitude_obs.get("altitude_type", None), - participants, + [participant_id], ) def _evaluate_uas_id(self, value: Optional[UASID], participants: List[str]): diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/display_data_evaluator.py b/monitoring/uss_qualifier/scenarios/astm/netrid/display_data_evaluator.py index 00ad2fce69..deb26aeba9 100644 --- a/monitoring/uss_qualifier/scenarios/astm/netrid/display_data_evaluator.py +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/display_data_evaluator.py @@ -485,9 +485,8 @@ def _evaluate_normal_observation( self._common_dictionary_evaluator.evaluate_dp_details( details_inj, details_obs, - participants=[ - observer.participant_id, - ], + observer.participant_id, + query.request.timestamp, ) def _evaluate_flight_presence( diff --git a/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/common_dictionary_evaluator_dp_flight_details.md b/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/common_dictionary_evaluator_dp_flight_details.md index b51e2736c6..992eb83b9e 100644 --- a/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/common_dictionary_evaluator_dp_flight_details.md +++ b/monitoring/uss_qualifier/scenarios/astm/netrid/v22a/common_dictionary_evaluator_dp_flight_details.md @@ -14,6 +14,30 @@ This fragment is implemented in `common_dictionary_evaluator.py:RIDCommonDiction If the UAS ID contained in flight details returned by a display provider does not correspond to the injected one, the DP is not providing accurate data and is thus in breach of **[astm.f3411.v22a.NET0450](../../../../requirements/astm/f3411/v22a.md)** +## ⚠️ UA classification type is consistent with injected one check + +**[astm.f3411.v22a.NET0470](../../../../requirements/astm/f3411/v22a.md)** requires that Net-RID Display Provider shall provide access to required and optional fields to Remote ID Display Applications according to the Common Dictionary. +The UA classification type is implicitly defined by the presence of an UA classification field, or left undefined by the absence of all of them. +Considering this, this check will fail only if it is inconsistent with the injected value, as per **[astm.f3411.v22a.NET0470,Table1,4](../../../../requirements/astm/f3411/v22a.md)**. +If the UA classification type reported for an observation does not correspond to the injected one, the DP is not providing timely and accurate data and is thus in breach of **[astm.f3411.v22a.NET0450](../../../../requirements/astm/f3411/v22a.md)** + +## ⚠️ UA classification type is consistent with Common Data Dictionary check + +**[astm.f3411.v22a.NET0470](../../../../requirements/astm/f3411/v22a.md)** requires that Net-RID Display Provider shall provide access to required and optional fields to Remote ID Display Applications according to the Common Dictionary. +The UA classification type is implicitly defined by the presence of an UA classification field, or left undefined by the absence of all of them. +This check will fail if more than one UA classification types are defined as per **[astm.f3411.v22a.NET0470,Table1,4](../../../../requirements/astm/f3411/v22a.md)**. + +## ⚠️ UA classification for 'European Union' type is consistent with injected one check + +**[astm.f3411.v22a.NET0470](../../../../requirements/astm/f3411/v22a.md)** requires that Net-RID Display Provider shall provide access to required and optional fields to Remote ID Display Applications according to the Common Dictionary. +The UA classification for 'European Union' type being an optional field, this check will fail only if it is inconsistent with the injected value, as per **[astm.f3411.v22a.NET0470,Table1,3](../../../../requirements/astm/f3411/v22a.md)**. +In addition, if the UA classification for 'European Union' type reported for an observation does not correspond to the injected one, the DP is not providing timely and accurate data and is thus in breach of **[astm.f3411.v22a.NET0450](../../../../requirements/astm/f3411/v22a.md)**. + +## ⚠️ UA classification for 'European Union' type is consistent with Common Data Dictionary check + +**[astm.f3411.v22a.NET0470](../../../../requirements/astm/f3411/v22a.md)** requires that Net-RID Display Provider shall provide access to required and optional fields to Remote ID Display Applications according to the Common Dictionary. +This check will fail if the observed UA type has an invalid value as per **[astm.f3411.v22a.NET0470,Table1,3](../../../../requirements/astm/f3411/v22a.md)**. + ## Operator ID consistency with Common Dictionary check **[astm.f3411.v22a.NET0470](../../../../requirements/astm/f3411/v22a.md)** requires that Net-RID Display Provider shall (NET0470) provide access to required and optional fields to Remote ID Display Applications according to the Common Dictionary. This check validates that the Operator ID, if present, is valid. (**[astm.f3411.v22a.NET0470,Table1,9](../../../../requirements/astm/f3411/v22a.md)**) diff --git a/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a.md b/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a.md index cf41609ece..a0dcc3ef6c 100644 --- a/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a.md +++ b/monitoring/uss_qualifier/suites/astm/netrid/f3411_22a.md @@ -21,7 +21,7 @@ Checked in - astm
.f3411
.v22a
+ astm
.f3411
.v22a
DSS0010 Implemented ASTM NetRID DSS: Token Validation @@ -476,6 +476,16 @@ Implemented ASTM NetRID nominal behavior + + NET0470,Table1,3 + Implemented + ASTM NetRID nominal behavior + + + NET0470,Table1,4 + Implemented + ASTM NetRID nominal behavior + NET0470,Table1,5 Implemented diff --git a/monitoring/uss_qualifier/suites/uspace/network_identification.md b/monitoring/uss_qualifier/suites/uspace/network_identification.md index 29769bbf00..5bdf28e3f2 100644 --- a/monitoring/uss_qualifier/suites/uspace/network_identification.md +++ b/monitoring/uss_qualifier/suites/uspace/network_identification.md @@ -17,7 +17,7 @@ Checked in - astm
.f3411
.v22a
+ astm
.f3411
.v22a
DSS0010 Implemented ASTM NetRID DSS: Token Validation @@ -472,6 +472,16 @@ Implemented ASTM NetRID nominal behavior + + NET0470,Table1,3 + Implemented + ASTM NetRID nominal behavior + + + NET0470,Table1,4 + Implemented + ASTM NetRID nominal behavior + NET0470,Table1,5 Implemented diff --git a/monitoring/uss_qualifier/suites/uspace/required_services.md b/monitoring/uss_qualifier/suites/uspace/required_services.md index 179ebccb91..2cd4a98d3d 100644 --- a/monitoring/uss_qualifier/suites/uspace/required_services.md +++ b/monitoring/uss_qualifier/suites/uspace/required_services.md @@ -18,7 +18,7 @@ Checked in - astm
.f3411
.v22a
+ astm
.f3411
.v22a
DSS0010 Implemented ASTM NetRID DSS: Token Validation @@ -473,6 +473,16 @@ Implemented ASTM NetRID nominal behavior + + NET0470,Table1,3 + Implemented + ASTM NetRID nominal behavior + + + NET0470,Table1,4 + Implemented + ASTM NetRID nominal behavior + NET0470,Table1,5 Implemented