Skip to content

Commit

Permalink
BSI Flex 335 v1 SAPIENT
Browse files Browse the repository at this point in the history
The .proto files accompany the BSI Flex 335 v1 of the SAPIENT Interface Control Document (ICD).
  • Loading branch information
srcolley authored Jul 11, 2023
1 parent 6efcea2 commit 25410a6
Show file tree
Hide file tree
Showing 8 changed files with 43 additions and 116 deletions.
2 changes: 1 addition & 1 deletion alert_ack.proto
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
11 changes: 6 additions & 5 deletions detection_report.proto
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
Expand Down Expand Up @@ -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
}
}
Expand Down
10 changes: 6 additions & 4 deletions location.proto
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand Down
15 changes: 8 additions & 7 deletions range_bearing.proto
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
29 changes: 14 additions & 15 deletions registration.proto
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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 {
Expand All @@ -64,19 +66,20 @@ 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
TIME_UNITS_MILLISECONDS = 3; // Milli Seconds
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 {
Expand All @@ -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 {
Expand Down Expand Up @@ -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 {
Expand All @@ -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 {
Expand Down
5 changes: 3 additions & 2 deletions status_report.proto
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand Down
1 change: 1 addition & 0 deletions task.proto
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
86 changes: 4 additions & 82 deletions velocity.proto
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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]
// [END messages]

0 comments on commit 25410a6

Please sign in to comment.