Commit 04128aa8 authored by Trishna Saeharaseelan's avatar Trishna Saeharaseelan
Browse files

feat: support binary payload

{
"header": {
"message_ID": "t1237003c-0000-11aa-a1eb-bvcdfghjgfdd",
"timestamp": "2023-03-16T00:00:00Z",
"version": 2,
"source": "autonomy_engine",
"destination": "soar.hermes.autosub.alr-52.send.mission_plan_encoded",
"delivery_type": "publish",
"encoded": true
},
"payload": {
"message_type": "mission_plan_encoded",
"data": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBlB/tRYQW3nez5HWYFBAAD+zwBySUAAAADVek72v1N2lUQAAAABAQAAAAAAAAAAAAAAAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"file_name": "ah1_03837434286438.sbd",
"is_binary": true
}
}
{
"header": {
"message_ID": "e1237003c-0000-11aa-a1eb-bvcdfghjgfdd",
"timestamp": "2023-03-16T00:00:00Z",
"version": 2,
"source": "hermes.ecosub2",
"destination": "soar.planet-ocean.ecosub.ecosub-2.receive.observation_encoded",
"delivery_type": "publish",
"encoded": true
},
"payload": {
"message_type": "observation_encoded",
"data": "T1N2lUQAAAABAQAAAAAAAAAAAAAAAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"file_name": "ecosub1_200002114.txt",
"is_binary": true
}
}
{
"header": {
"message_ID": "t1237003c-0000-11aa-a1eb-bvcdfghjgfdd",
"timestamp": "2023-03-16T00:00:00Z",
"version": 2,
"source": "hermes.ah1",
"destination": "soar.noc.autosub.alr-52.receive.platform_status_encoded",
"delivery_type": "publish",
"encoded": true
},
"payload": {
"message_type": "platform_status_encoded",
"data": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBlB/tRYQW3nez5HWYFBAAD+zwBySUAAAADVek72v1N2lUQAAAABAQAAAAAAAAAAAAAAAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"file_name": "ah1_03837434286438.sbd",
"is_binary": true
}
}
{
"header": {
"message_ID": "e1237003c-0000-11aa-a1eb-bvcdfghjgfdd",
"timestamp": "2023-03-16T00:00:00Z",
"version": 2,
"source": "hermes.ecosub2",
"destination": "soar.planet-ocean.ecosub.ecosub-2.receive.observation_encoded",
"delivery_type": "publish",
"encoded": true
},
"payload": {
"message_type": "observation_encoded",
"data": "T1N2lUQAAAABAQAAAAAAAAAAAAAAAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"file_name": "ecosub1_200002114.txt",
"is_binary": true
}
}
"""
schemas: Encoded (compiled) type messages that are applicable to compiled
platform statuses and observations (from the platform), and compiled
mission plans (to the platform). This encoded schema is applicable to the
different message types: mission_plan_encoded, observation_encoded, and
platform_status_encoded.
"""
encoded_schema = {
"type": "object",
"properties": {
"message_type": {
"type": "string",
"description": "Type of message",
"example": "mission_plan",
"enum": [
"mission_plan_encoded",
"observation_encoded",
"platform_status_encoded",
],
},
"data": {
"type": "string",
"description": "Base64 encoded string",
"example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcB"
+ "AAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
},
"file_name": {
"type": "string",
"description": "Name of file",
"example": "ah1-0238126349247372.bin",
},
"mime_type": {
"type": "string",
"description": "MIME type",
"example": "", # TODO: Add example
},
"is_binary": {
"type": "boolean",
"description": "Base64 encrypted binary data",
"example": True,
},
},
"required": ["data", "is_binary"],
}
from formats import message_header
from formats.encoded import encoded_schema
from formats.mission_plan import mission_plan_schema
from formats.observation import observation_schema
from formats.planning_configuration import planning_configuration_schema
......@@ -51,26 +52,38 @@ swagger_config = {
"propertyName": "message_type",
"mapping": {
"mission_plan": "#/components/schemas/mission_plan",
"mission_plan_encoded": "#/components/schemas/"
+ "mission_plan_encoded",
"observation": "#/components/schemas/observation",
"observation_encoded": "#/components/schemas/"
+ "observation_encoded",
"planning_configuration": "#/components/schemas/"
+ "planning_configuration",
"platform_status": "#/components/schemas/platform_status",
"platform_status_encoded": "#/components/schemas/"
+ "platform_status_encoded",
"acknowledgement": "#/components/schemas/acknowledgement",
},
},
"oneOf": [
{"$ref": "#/components/schemas/acknowledgement"},
{"$ref": "#/components/schemas/mission_plan"},
{"$ref": "#/components/schemas/mission_plan_encoded"},
{"$ref": "#/components/schemas/observation"},
{"$ref": "#/components/schemas/observation_encoded"},
{"$ref": "#/components/schemas/planning_configuration"},
{"$ref": "#/components/schemas/platform_status"},
{"$ref": "#/components/schemas/platform_status_encoded"},
],
},
"header": message_header,
"mission_plan": mission_plan_schema,
"mission_plan_encoded": encoded_schema,
"observation": observation_schema,
"observation_encoded": encoded_schema,
"planning_configuration": planning_configuration_schema,
"platform_status": platform_status_schema,
"platform_status_encoded": encoded_schema,
"acknowledgement": acknowledgement_schema,
}
},
......
......@@ -30,9 +30,11 @@
},
"message_type":{
"description":"Type of message",
"enum":[
"acknowledgement"
],
"example":"acknowledgement",
"type":"string",
"enum": ["acknowledgement"]
"type":"string"
},
"platform_ID":{
"description":"Unique identifier for this platform",
......@@ -107,9 +109,11 @@
},
"message_type":{
"description":"Type of message",
"enum":[
"mission_plan"
],
"example":"mission_plan",
"type":"string",
"enum": ["mission_plan"]
"type":"string"
},
"plan":{
"items":{
......@@ -124,12 +128,6 @@
"example":true,
"type":"boolean"
},
"timeout": {
"description": "Timeout set to perform action",
"example": 1800.0,
"format": "float",
"type": "number"
},
"altitude":{
"description":"Altitude of next action",
"example":15.0,
......@@ -165,6 +163,12 @@
"example":50.37072283932642,
"format":"float",
"type":"number"
},
"timeout":{
"description":"Timeout set to perform action",
"example":1800.0,
"format":"float",
"type":"number"
}
},
"required":[
......@@ -189,6 +193,45 @@
],
"type":"object"
},
"mission_plan_encoded":{
"properties":{
"data":{
"description":"Base64 encoded string",
"example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type":"string"
},
"file_name":{
"description":"Name of file",
"example":"ah1-0238126349247372.bin",
"type":"string"
},
"is_binary":{
"description":"Base64 encrypted binary data",
"example":true,
"type":"boolean"
},
"message_type":{
"description":"Type of message",
"enum":[
"mission_plan_encoded",
"observation_encoded",
"platform_status_encoded"
],
"example":"mission_plan",
"type":"string"
},
"mime_type":{
"description":"MIME type",
"example":"",
"type":"string"
}
},
"required":[
"data",
"is_binary"
],
"type":"object"
},
"observation":{
"properties":{
"additional_data":{
......@@ -199,9 +242,11 @@
},
"message_type":{
"description":"Type of message",
"enum":[
"observation"
],
"example":"observation",
"type":"string",
"enum": ["observation"]
"type":"string"
},
"platform_ID":{
"description":"Unique identifier for this platform",
......@@ -251,14 +296,56 @@
],
"type":"object"
},
"observation_encoded":{
"properties":{
"data":{
"description":"Base64 encoded string",
"example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type":"string"
},
"file_name":{
"description":"Name of file",
"example":"ah1-0238126349247372.bin",
"type":"string"
},
"is_binary":{
"description":"Base64 encrypted binary data",
"example":true,
"type":"boolean"
},
"message_type":{
"description":"Type of message",
"enum":[
"mission_plan_encoded",
"observation_encoded",
"platform_status_encoded"
],
"example":"mission_plan",
"type":"string"
},
"mime_type":{
"description":"MIME type",
"example":"",
"type":"string"
}
},
"required":[
"data",
"is_binary"
],
"type":"object"
},
"payload":{
"discriminator":{
"mapping":{
"acknowledgement":"#/components/schemas/acknowledgement",
"mission_plan":"#/components/schemas/mission_plan",
"mission_plan_encoded":"#/components/schemas/mission_plan_encoded",
"observation":"#/components/schemas/observation",
"observation_encoded":"#/components/schemas/observation_encoded",
"planning_configuration":"#/components/schemas/planning_configuration",
"platform_status":"#/components/schemas/platform_status"
"platform_status":"#/components/schemas/platform_status",
"platform_status_encoded":"#/components/schemas/platform_status_encoded"
},
"propertyName":"message_type"
},
......@@ -269,14 +356,23 @@
{
"$ref":"#/components/schemas/mission_plan"
},
{
"$ref":"#/components/schemas/mission_plan_encoded"
},
{
"$ref":"#/components/schemas/observation"
},
{
"$ref":"#/components/schemas/observation_encoded"
},
{
"$ref":"#/components/schemas/planning_configuration"
},
{
"$ref":"#/components/schemas/platform_status"
},
{
"$ref":"#/components/schemas/platform_status_encoded"
}
]
},
......@@ -317,9 +413,11 @@
},
"message_type":{
"description":"Type of message",
"enum":[
"planning_configuration"
],
"example":"planning_configuration",
"type":"string",
"enum": ["planning_configuration"]
"type":"string"
},
"planning_config_ID":{
"description":"Unique identifier tagged to version of this configuration plan",
......@@ -343,7 +441,8 @@
"example":{
"scan_type":"DVL",
"swath_width":10.0
}
},
"type":"object"
},
"emergency":{
"properties":{
......@@ -351,8 +450,7 @@
"description":"Any addition fields/data to be added here",
"example":{
},
"type":"object"
}
},
"safe_command":{
"description":"Command/Action that is native to respective partner's platform/C2",
......@@ -563,9 +661,11 @@
},
"message_type":{
"description":"Type of message",
"enum":[
"platform_status"
],
"example":"platform_status",
"type":"string",
"enum": ["platform_status"]
"type":"string"
},
"mission_plan_ID":{
"description":"Mission plan ID according to platform-C2 system",
......@@ -678,6 +778,45 @@
"longitude"
],
"type":"object"
},
"platform_status_encoded":{
"properties":{
"data":{
"description":"Base64 encoded string",
"example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type":"string"
},
"file_name":{
"description":"Name of file",
"example":"ah1-0238126349247372.bin",
"type":"string"
},
"is_binary":{
"description":"Base64 encrypted binary data",
"example":true,
"type":"boolean"
},
"message_type":{
"description":"Type of message",
"enum":[
"mission_plan_encoded",
"observation_encoded",
"platform_status_encoded"
],
"example":"mission_plan",
"type":"string"
},
"mime_type":{
"description":"MIME type",
"example":"",
"type":"string"
}
},
"required":[
"data",
"is_binary"
],
"type":"object"
}
}
},
......
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