From 25410a60a79099f07ae0be149432709166b251b1 Mon Sep 17 00:00:00 2001 From: srcolley <88889579+srcolley@users.noreply.github.com> Date: Tue, 11 Jul 2023 09:02:04 +0100 Subject: [PATCH] BSI Flex 335 v1 SAPIENT The .proto files accompany the BSI Flex 335 v1 of the SAPIENT Interface Control Document (ICD). --- alert_ack.proto | 2 +- detection_report.proto | 11 +++--- location.proto | 10 +++-- range_bearing.proto | 15 ++++---- registration.proto | 29 +++++++------- status_report.proto | 5 ++- task.proto | 1 + velocity.proto | 86 ++---------------------------------------- 8 files changed, 43 insertions(+), 116 deletions(-) diff --git a/alert_ack.proto b/alert_ack.proto index 4e10fea..d3c5c4d 100644 --- a/alert_ack.proto +++ b/alert_ack.proto @@ -13,7 +13,7 @@ option java_outer_classname = "AlertAckProto"; // [START messages] message AlertAck { string alert_id = 1; // ULID for the message - optional AlertStatus alert_status = 2; // State of the information in this message + AlertStatus alert_status = 2; // State of the information in this message optional string reason = 3; // Reason why alert was not accepted enum AlertStatus { diff --git a/detection_report.proto b/detection_report.proto index 16eb452..de253fd 100644 --- a/detection_report.proto +++ b/detection_report.proto @@ -20,6 +20,7 @@ option java_outer_classname = "DetectionReportProto"; // [START messages] message DetectionReport { + reserved 17, 18, 20, 21; // These values were used in SAPIENT v7, but are not used in the current version string report_id = 1; // ULID for the message string object_id = 2; // ULID for the object detected in the environment optional string task_id = 3; // ULID of the task the ASM is currently performing @@ -39,11 +40,11 @@ message DetectionReport { repeated AssociatedDetection associated_detection = 15; // Other SAPIENT detections associated with this detection repeated DerivedDetection derived_detection = 16; // Other SAPIENT detections dervied from this detection oneof velocity_oneof { - RYPVelocity ryp_velocity = 17; // Velocity of object relative to sensor location and sensor pointing direction - GHCVelocity ghc_velocity = 18; // Velocity of object in global coordinates in the style of Air Traffic Management +// RYPVelocity ryp_velocity = 17; // Velocity of object relative to sensor location and sensor pointing direction +// GHCVelocity ghc_velocity = 18; // Velocity of object in global coordinates in the style of Air Traffic Management ENUVelocity enu_velocity = 19; // Velocity of object as a vector in global cartesian coordinates - SHPVelocity shp_velocity = 20; // Velocity of object as a vector in global spherical coordinates - RAEVelocity rae_velocity = 21; // Velocity of object relative to sensor location and ground plane +// SHPVelocity shp_velocity = 20; // Velocity of object as a vector in global spherical coordinates +// RAEVelocity rae_velocity = 21; // Velocity of object relative to sensor location and ground plane } optional string colour = 22; // Colour of the object being reported optional string id = 23; // ID of the object being reported (e.g. the tail number of aircraft) @@ -90,7 +91,7 @@ message DetectionReport { message DerivedDetection { optional google.protobuf.Timestamp timestamp = 1; // UTC timestamp the message was sent - string node_id = 2; // ULID for the node where the assoicated detection has originiated + string node_id = 2; // UUID for the node where the assoicated detection has originiated string object_id = 3; // ULID for the object detected in the environment } } diff --git a/location.proto b/location.proto index 1f369e0..85b70e9 100644 --- a/location.proto +++ b/location.proto @@ -21,16 +21,18 @@ message Location { optional double x_error = 4; // X-coordinate error optional double y_error = 5; // Y-coordinate error optional double z_error = 6; // Z-coordinate error - LocationCoordinateSystem coordinate_system = 7; // Coordinate system used - LocationDatum datum = 8; // Datum used + optional string utm_zone = 7; // For reporting locations in an adjacent UTM zone + LocationCoordinateSystem coordinate_system = 8; // Coordinate system used + LocationDatum datum = 9; // Datum used } enum LocationCoordinateSystem { + reserved 3, 4; // These values were used in SAPIENT upto version 7, but are no longer used due to use of non-SI units LOCATION_COORDINATE_SYSTEM_UNSPECIFIED = 0; // Co-ordinate system/units not defined LOCATION_COORDINATE_SYSTEM_LAT_LNG_DEG_M = 1; // Latitude/Longitude in decimal-degrees/metres LOCATION_COORDINATE_SYSTEM_LAT_LNG_RAD_M = 2; // Latitude/Longitude in radians/metres - LOCATION_COORDINATE_SYSTEM_LAT_LNG_DEG_F = 3; // Latitude/Longitude in decimal-degrees/feet - LOCATION_COORDINATE_SYSTEM_LAT_LNG_RAD_F = 4; // Latitude/Longitude in radians/feet +// LOCATION_COORDINATE_SYSTEM_LAT_LNG_DEG_F = 3; // Latitude/Longitude in decimal-degrees/feet - DEPRECATED +// LOCATION_COORDINATE_SYSTEM_LAT_LNG_RAD_F = 4; // Latitude/Longitude in radians/feet - DEPRECATED LOCATION_COORDINATE_SYSTEM_UTM_M = 5; // UTM with altitude in metres } diff --git a/range_bearing.proto b/range_bearing.proto index 5fa4980..f9f4b9b 100644 --- a/range_bearing.proto +++ b/range_bearing.proto @@ -37,13 +37,14 @@ message RangeBearingCone { } enum RangeBearingCoordinateSystem { - RANGE_BEARING_COORDINATE_SYSTEM_UNSPECIFIED = 0; // Co-ordinate system/units not defined - RANGE_BEARING_COORDINATE_SYSTEM_DEGREES_M = 1; // Values in decimal-degrees and meters - RANGE_BEARING_COORDINATE_SYSTEM_RADIANS_M = 2; // Values in radians and meters - RANGE_BEARING_COORDINATE_SYSTEM_DEGREES_KM = 3; // Values in decimal-degrees and kilometers - RANGE_BEARING_COORDINATE_SYSTEM_RADIANS_KM = 4; // Values in radians and kilometers - RANGE_BEARING_COORDINATE_SYSTEM_DEGREES_F = 5; // Values in decimal-degrees and feet - RANGE_BEARING_COORDINATE_SYSTEM_RADIANS_F = 6; // Values in radians and feet + reserved 5, 6; // These values were used in SAPIENT upto version 7, but are no longer used due to use of non-SI units + RANGE_BEARING_COORDINATE_SYSTEM_UNSPECIFIED = 0; // Co-ordinate system/units not defined + RANGE_BEARING_COORDINATE_SYSTEM_DEGREES_M = 1; // Values in decimal-degrees and meters + RANGE_BEARING_COORDINATE_SYSTEM_RADIANS_M = 2; // Values in radians and meters + RANGE_BEARING_COORDINATE_SYSTEM_DEGREES_KM = 3; // Values in decimal-degrees and kilometers + RANGE_BEARING_COORDINATE_SYSTEM_RADIANS_KM = 4; // Values in radians and kilometers +// RANGE_BEARING_COORDINATE_SYSTEM_DEGREES_F = 5; // Values in decimal-degrees and feet - DEPRECATED +// RANGE_BEARING_COORDINATE_SYSTEM_RADIANS_F = 6; // Values in radians and feet - DEPRECATED } enum RangeBearingDatum { diff --git a/registration.proto b/registration.proto index b5c484c..0092954 100644 --- a/registration.proto +++ b/registration.proto @@ -25,7 +25,7 @@ message Registration { message NodeDefinition { NodeType node_type = 1; // Description of major type of the node - repeated string node_sub_type = 2; // further description of node type + repeated string node_sub_type = 2; // further description of node type } enum NodeType { @@ -45,6 +45,8 @@ message Registration { NODE_TYPE_KINETIC = 13; // A system which has a physical effector (such as a missile or collision-based system) NODE_TYPE_JAMMER = 14; // A radio-frequency transmitter that disrupts other systems using power NODE_TYPE_CYBER = 15; // A system which uses network/communication protocols to detect or effect other systems + NODE_TYPE_LDEW = 16; // A Laser Directed Energy Weapon + NODE_TYPE_RFDEW = 17; // A Radio Frequency Directed Energy Weapon } message Capability { @@ -64,6 +66,7 @@ message Registration { } enum TimeUnits { + reserved 7; // These values were used in SAPIENT upto version 7, but are no longer used due to use of non-SI units TIME_UNITS_UNSPECIFIED = 0; // Time units not specified TIME_UNITS_NANOSECONDS = 1; // Nano Seconds TIME_UNITS_MICROSECONDS = 2; // Micro Seconds @@ -71,12 +74,12 @@ message Registration { TIME_UNITS_SECONDS = 4; // Seconds TIME_UNITS_MINUTES = 5; // Minutes TIME_UNITS_HOURS = 6; // Hours - TIME_UNITS_DAYS = 7; // Days +// TIME_UNITS_DAYS = 7; // Days } message Duration { TimeUnits units = 1; // Units that the duration are specified in - int32 value = 2; // Amount of time being specified for the duration + float value = 2; // Amount of time being specified for the duration } message ModeParameter { @@ -96,18 +99,15 @@ message Registration { optional string zone = 5; // If using UTM coordinates, provide the UTM zone in this field (e.g. 30N) } - // Specify how velocity is provided by specifying the coordinates system type and units in use +// Specify how velocity is provided by specifying the coordinates system type and units in use message VelocityType { oneof velocity_units_oneof { - GHCVelocityUnits ghc_velocity_units = 1; // Provide velocity in global coordinates in the style of Air Traffic Management and specify units - - RYPVelocityUnits ryp_units = 2; // Provide velocity relative to sensor location and sensor pointing direction and specify units - - RAEVelocityUnits rae_units = 3; // Provide velocity relative to sensor location and ground plane - - ENUVelocityUnits enu_velocity_units = 4; // Provide velocity as a vector in global spherical coordinates and specify units - - SHPVelocityUnits shp_velocity_units = 5; // Provide velocity as a vector in global spherical coordinates + reserved 1, 2, 3, 5; // These values were used in SAPIENT upto version 7, but not in the current version +// GHCVelocityUnits ghc_velocity_units = 1; // Provide velocity in global coordinates in the style of Air Traffic Management and specify units - DEPRECIATED +// RYPVelocityUnits ryp_units = 2; // Provide velocity relative to sensor location and sensor pointing direction and specify units - DEPRECIATED +// RAEVelocityUnits rae_units = 3; // Provide velocity relative to sensor location and ground plane - DEPRECIATED + ENUVelocityUnits enu_velocity_units = 4; // Provide velocity as a vector in global spherical coordinates and specify units +// SHPVelocityUnits shp_velocity_units = 5; // Provide velocity as a vector in global spherical coordinates - DEPRECIATED }; oneof datum_oneof { @@ -239,7 +239,6 @@ message Registration { optional int32 concurrent_tasks = 1; // The number of instances of this task that can be run at the same time RegionDefinition region_definition = 2; // Region definition for regions this task can operate on repeated Command command = 3; // Commands that can be issued as part of this task - string type = 4; // Type of task } message ClassFilterDefinition { @@ -265,7 +264,7 @@ message Registration { OPERATOR_ALL = 1; OPERATOR_GREATER_THAN = 2; OPERATOR_LESS_THAN = 3; - OPERATOR_EQUALS = 4; + OPERATOR_EQUAL = 4; } message BehaviourFilterDefinition { diff --git a/status_report.proto b/status_report.proto index 9d8d1af..da1738d 100644 --- a/status_report.proto +++ b/status_report.proto @@ -21,18 +21,19 @@ message StatusReport { optional string active_task_id = 4; // ULID of the task the ASM is currently performing optional string mode = 5; // The current mode of the ASM optional Power power = 6; // The power supply of the ASM - optional Location sensor_location = 7; // Current ASM location + optional Location node_location = 7; // Current ASM location optional LocationOrRangeBearing field_of_view = 8; // Area currently visible to ASM optional LocationOrRangeBearing coverage = 9; // Area that the ASM can cover repeated LocationOrRangeBearing obscuration = 10; // Area that the ASM cannot cover repeated Status status = 11; // Information about the ASM or the envionrment enum System { + reserved 4; // This value was used up to v7 SAPIENT, but was withdrawn after as it was not considered well-defined SYSTEM_UNSPECIFIED = 0; // The system state is unset SYSTEM_OK = 1; // The system is operating normally SYSTEM_WARNING = 2; // There is a potential issue with the system SYSTEM_ERROR = 3; // There is an issue with the system - SYSTEM_TAMPER = 4; // The system has been tampered with +// SYSTEM_TAMPER = 4; // The system has been tampered with - DEPRECIATED SYSTEM_GOODBYE = 5; // The system is about to disconnect } diff --git a/task.proto b/task.proto index 6dbeb68..ca66ffd 100644 --- a/task.proto +++ b/task.proto @@ -35,6 +35,7 @@ message Task { } message Command { + reserved 7; // This was a proposed 'custom' command that was never ratified oneof command { string request = 1; // The request being asked for DiscreteThreshold detection_threshold = 2; // The requested sensitivity of sensor during the task diff --git a/velocity.proto b/velocity.proto index 1572989..b5e10b3 100644 --- a/velocity.proto +++ b/velocity.proto @@ -12,15 +12,6 @@ option java_outer_classname = "SAPIENTCommon"; // [START messages] -// Provide velocity in global coordinates in the style of Air Traffic Management -message GHCVelocity { - optional double ground_speed = 1; // Speed over the ground - optional double heading = 2; // Azimuth angle of velocity vector - optional double climb_rate = 3; // Rate of change of altitude - optional double ground_speed_error = 4; // Error in the speed over the ground - optional double heading_error = 5; // Error in the azimuth angle of velocity vector - optional double climb_rate_error = 6; // Error in the rate of change of altitude -} // Provide velocity as a vector in global cartesian coordinates // This is a revision of the TIE22 LocationVelocity encoding velocity as per the Location field but with eastings, northings and up for clarity. @@ -34,89 +25,20 @@ message ENUVelocity { optional double up_rate_error = 6; // Error in the velocity in the up-axis } -// Provide velocity relative to sensor location and sensor pointing direction -message RYPVelocity { - optional double range_rate = 1; // Rate of change in range - optional double yaw_rate = 2; // Rate of change in yaw - optional double pitch_rate = 3; // Rate of change in pitch - optional double range_rate_error = 4; // Error in the rate of change in range - optional double yaw_rate_error = 5; // Error in the rate of change in yaw - optional double pitch_rate_error = 6; // Error in the rate of change in pitch -} - -// Provide velocity relative to sensor location and ground plane -message RAEVelocity { - optional double range_rate = 1; // Rate of change in range - optional double azimuth_rate = 2; // Rate of change in azimuth - optional double elevation_rate = 3; // Rate of change in elevation - optional double range_rate_error = 4; // Error in the rate of change in range - optional double azimuth_rate_error = 5; // Error in the rate of change in azimuth - optional double elevation_rate_error = 6; // Error in the rate of change in elevation -} - -// Provide velocity as a vector in global spherical coordinates -message SHPVelocity { - optional double speed = 1; // Scalar magnitude of velocity vector - optional double heading = 2; // Azimuth angle of velocity vector - optional double pitch = 3; // Pitch (elevation) angle of velocity vector - optional double speed_error = 4; // Error in the scalar magnitude of velocity vector - optional double heading_error = 5; // Error in the azimuth angle of velocity vector - optional double pitch_error = 6; // Error in the pitch/elevation angle of velocity vector -} - -// Specify units when GHCVelocity is in use -message GHCVelocityUnits { - optional SpeedUnits ground_speed_units = 1; // Units that ground speed is reported in - optional AngularUnits angular_units = 2; // Units that heading are reported in - optional SpeedUnits climb_rate_units = 3; // Units that climb rate is reported in -} - // Specify units when ENUVelocity is in use message ENUVelocityUnits { SpeedUnits east_north_rate_units = 1; // Units that velocity is reported in for east and north axis optional SpeedUnits up_rate_units = 2; // Units that velocity is reported in for up axis } -// Specify units when RYPVelocity is in use -message RYPVelocityUnits { - optional AngularVelocityUnits angular_units = 1; // Units that yaw and pitch rates are reported in - optional SpeedUnits range_rate_units = 2; // Units that range rate is reported in -} - -// Specify units when RAEVelocity is in use -message RAEVelocityUnits { - optional AngularVelocityUnits angular_units = 1; // Units that azimuth and elevation rates are reported in - optional SpeedUnits range_rate_units = 2; // Units that range rate is reported in -} - -// Specify units when SHPVelocity is in use -message SHPVelocityUnits { - optional AngularUnits angular_units = 1; // Units that heading and pitch angles are reported in - optional SpeedUnits speed_units = 2; // Units that speed is reported in -} - // This specifies the units of the scalar speed component of velocity being reported enum SpeedUnits { + reserved 3, 4; // These values were used in SAPIENT upto version 7, but are no longer used due to use of non-SI units SPEED_UNITS_UNSPECIFIED = 0; // Units not defined SPEED_UNITS_MS = 1; // Meters per second SPEED_UNITS_KPH = 2; // Kilometers per hour - SPEED_UNITS_MPH = 3; // Miles per hour - SPEED_UNITS_FS = 4; // Feet per second +// SPEED_UNITS_MPH = 3; // Miles per hour - DEPRECIATED +// SPEED_UNITS_FS = 4; // Feet per second - DEPRECIATED } -// This specifies the units for angles -enum AngularUnits { - ANGULAR_UNITS_UNSPECIFIED = 0; // Units not defined - ANGULAR_UNITS_RADIANS = 1; // Angles in radians - ANGULAR_UNITS_DEGREES = 2; // Angles in degrees -} - -// This specifies the units for rates of changes of angles -enum AngularVelocityUnits { - ANGULAR_VELOCITY_UNITS_UNSPECIFIED = 0; // Units not defined - ANGULAR_VELOCITY_UNITS_RS = 1; // Radians per second - ANGULAR_VELOCITY_UNITS_DS = 2; // Degrees per second -} - - - // [END messages] \ No newline at end of file +// [END messages] \ No newline at end of file