Verified Commit 4a5d19a4 authored by Dan Jones's avatar Dan Jones
Browse files

refactor: new waypoints message

parent 58f07b32
......@@ -4,21 +4,20 @@
"timestamp": "2024-09-05T00:00:00Z",
"version": "v2.0.0-beta.1",
"source": "noc-sfmc",
"destination": "mas-dt.noc.slocum.unit_xxx.from_platform.platform_status",
"destination": "mas-dt.noc.slocum.unit_xxx.from_platform.waypoints",
"delivery_type": "publish",
"encoded": false
},
"payload":{
"message_type": "waypoint_status",
"message_type": "waypoints",
"platform_ID": "unit_xxx",
"platform_timestamp": "2024-09-05T00:00:00Z",
"status_source": "simulated",
"autonomy_engine_plan_ID": 1,
"mission_plan_ID": 1,
"mission_track_ID": 4,
"waypoint": {
"type": "Point",
"coordinates": [-10.122, 78.2, 50.0, 20.0]
}
"waypoints": [
{
"type": "Point",
"coordinates": [-10.122, 78.2, 50.0, 20.0]
}
]
}
}
{
"header":{
"message_ID": "b427003c-0000-11aa-a1eb-bvcdfghjgfdd",
"timestamp": "2024-09-05T00:00:00Z",
"version": "v2.0.0-beta.1",
"source": "noc-sfmc",
"destination": "mas-dt.noc.slocum.unit_xxx.from_platform.waypoints",
"delivery_type": "publish",
"encoded": false
},
"payload":{
"message_type": "waypoints",
"platform_ID": "unit_xxx",
"platform_timestamp": "2024-09-05T00:00:00Z",
"status_source": "simulated",
"waypoints": [
{
"latitude": 78.2,
"longitude": -10.122,
"depth": 50.0,
"altitude": 20.0
}
]
}
}
......@@ -16,7 +16,7 @@ payload_schema = {
"acknowledgement": "#/components/schemas/acknowledgement",
"survey": "#/components/schemas/survey",
"survey_encoded": "#/components/schemas/survey_encoded",
"waypoint_status": "#/components/schemas/waypoint_status",
"waypoints": "#/components/schemas/waypoints",
},
},
"oneOf": [
......@@ -32,6 +32,6 @@ payload_schema = {
{"$ref": "#/components/schemas/platform_status_encoded"},
{"$ref": "#/components/schemas/survey"},
{"$ref": "#/components/schemas/survey_encoded"},
{"$ref": "#/components/schemas/waypoint_status"},
{"$ref": "#/components/schemas/waypoints"},
],
}
......@@ -28,11 +28,30 @@ sensor_schema = {
platform_status_core_fields_schema = {
"type": "object",
"properties": {
},
}
platform_status_schema = {
"type": "object",
"properties": {
"message_type": {
"type": "string",
"description": "Type of message",
"example": "platform_status",
"enum": ["platform_status"],
},
"platform_ID": {
"type": "string",
"description": "Unique identifier for this platform",
"example": "reav-x-1",
},
"status_source": {
"type": "string",
"enum": ["usbl", "onboard_platform", "simulated"],
"description": "Indicate if this status message is from the"
+ " platform or USBL",
"example": "usbl",
},
"transmission_mode": {
"type": "string",
"enum": ["acoustics", "iridium", "wifi", "starlink"],
......@@ -159,26 +178,6 @@ platform_status_core_fields_schema = {
},
"sensor_config": sensor_schema,
},
}
platform_status_schema = {
"type": "object",
"properties": {
"message_type": {
"type": "string",
"description": "Type of message",
"example": "platform_status",
"enum": ["platform_status"],
},
"status_source": {
"type": "string",
"enum": ["usbl", "onboard_platform", "simulated"],
"description": "Indicate if this status message is from the"
+ " platform or USBL",
"example": "usbl",
},
},
"allOf": [platform_status_core_fields_schema],
"oneOf": [
{
"type": "object",
......
from formats.platform_status import platform_status_core_fields_schema
"""
Temporary message definition to handle the MAS-DT dry-run mode
waypoint_status_schema = {
In dry-run the SFMC adapter will receive misson_plan messages from ORI
These messages will be parsed and compiled into a goto file which will
not be sent on to the glider
To confirm the message flow is working the SFMC will instead publish
a waypoints message back to the backbone which C2 can receive and
process - adding simulated waypoints to C2 positions
"""
waypoint_schema = {
"type": "object",
"properties": {
"message_type": {
"type": "string",
"description": "Type of message",
"example": "waypoint_status",
"enum": ["waypoint_status"],
},
"status_source": {
"type": "string",
"enum": ["onboard_platform", "simulated", "autonomy"],
"description": "Indicate if this status message is from the"
+ " platform or USBL",
"example": "usbl",
},
},
"allOf": [platform_status_core_fields_schema],
"oneOf": [
{
"type": "object",
"properties": {
"position": {
"$ref": "https://geojson.org/schema/Point.json",
},
"waypoint": {
"$ref": "https://geojson.org/schema/Point.json",
},
},
"required": [
"waypoint",
],
"$ref": "https://geojson.org/schema/Point.json",
},
{
"type": "object",
......@@ -61,42 +44,52 @@ waypoint_status_schema = {
"description": "Target altitude in metres",
"example": 20.0,
},
"waypoint_latitude": {
"type": "number",
"format": "float",
"description": "Latitude (Y-coordinate) in decimal degrees.",
"example": 178.2,
},
"waypoint_longitude": {
"type": "number",
"format": "float",
"description": "Longitude (X-coordinate) in decimal degrees.",
"example": -10.122,
},
"waypoint_depth": {
"type": "number",
"format": "float",
"description": "Target depth in metres",
"example": 50.0,
"default": 0.0,
},
"waypoint_altitude": {
"type": "number",
"format": "float",
"description": "Target altitude in metres",
"example": 20.0,
},
},
"required": [
"waypoint_latitude",
"waypoint_longitude",
"latitude",
"longitude",
],
},
],
}
waypoints_schema = {
"type": "object",
"properties": {
"message_type": {
"type": "string",
"description": "Type of message",
"example": "waypoints",
"enum": ["waypoints"],
},
"platform_ID": {
"type": "string",
"description": "Unique identifier for this platform",
"example": "reav-x-1",
},
"status_source": {
"type": "string",
"enum": ["onboard_platform", "simulated", "autonomy"],
"description": "Indicate if this status message is from the"
+ " platform or USBL",
"example": "usbl",
},
"platform_timestamp": {
"type": "string",
"format": "date-time",
"description": "Timestamp for onboard platform status message",
"example": "2022-12-21T00:00:00Z",
},
"waypoints": {
"type": "array",
"items": waypoint_schema,
}
},
"required": [
"message_type",
"platform_ID",
"status_source",
"platform_timestamp",
"waypoints",
],
}
......@@ -7,7 +7,7 @@ from formats.observation_encoded import observation_encoded_schema
from formats.payload import payload_schema
from formats.planning_configuration import planning_configuration_schema
from formats.platform_status import platform_status_schema
from formats.waypoint_status import waypoint_status_schema
from formats.waypoints import waypoints_schema
from formats.platform_status_encoded import platform_status_encoded_schema
from formats.survey import survey_schema
from formats.survey_encoded import survey_encoded_schema
......@@ -75,7 +75,7 @@ def get_swagger_config(reload=False):
"alert": alert_schema,
"instruction_set": instruction_set_schema,
"config_file": config_file_schema,
"waypoint_status": waypoint_status_schema,
"waypoints": waypoints_schema,
}
},
}
......
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment