""" schema: platform-specific decoded status message """ sensor_schema = { "type": "object", "description": "Scanning sensor on platform available" + " to be controlled by the Autonomy Engine", "properties": { "sensor_serial": { "type": "string", "description": "serial number of sensor", "example": "mbes-002a", }, "sensor_on": { "type": "boolean", "description": "Sensor switched on (True) or off (False)", "example": True, }, "additional_data": { "description": "Any addition fields/data to be added here", "example": {"payload": [1.2, 434]}, }, }, } platform_status_message_schema = { "type": "object", "properties": { "message_type": { "type": "string", "description": "Type of message", "example": "platform_status", }, # "platform_ID": { # "type": "integer", # "description": "Identifier for platform", # "example": 1, # }, # "status_source": { # "type": "string", # "enum": ["usbl", "onboard_platform"], # "description": "Indicate if this status message is from the" # + " platform or USBL", # "example": "usbl", # }, # "transmission_mode": { # "type": "string", # "enum": ["acoustics", "iridium", "wifi", "starlink"], # "description": "Mode in which status message was transmitted" # + " when on the surface (e.g. iridium/wifi) or underwater" # + " (e.g. acoustics)", # "example": "wifi", # }, # "platform_timestamp": { # "type": "string", # "format": "date-time", # "description": "Timestamp for onboard platform status message", # "example": "2022-12-21T00:00:00Z", # }, # "platform_state": { # "type": "string", # TODO: Define enum with potential STATES of each platform # "description": "Current state executed by platform. E.g. " # + "STOP, IDLE, ABORT.", # "example": "ABORT", # }, # "autonomy_engine_plan_ID": { # "type": "integer", # "description": "Last mission plan ID (according to Autonomy" # + " Engine's mission plan number sent) executed by platform", # "example": 1, # }, # "latitude": { # "type": "number", # "format": "float", # "description": "Latitude in decimal degrees.", # "example": 178.2, # }, # "longitude": { # "type": "number", # "format": "float", # "description": "Longitude in decimal degrees.", # "example": -10.122, # }, # "depth": { # "type": "number", # "format": "float", # "description": "Target depth in metres", # "example": 50, # "default": 0, # }, # "altitude": { # "type": "number", # "format": "float", # "description": "Target altitude in metres", # "example": 20, # }, # "mission_track_ID": { # "type": "integer", # "description": "Track number - stage in mission (e.g. " # + "4 --> Waypoint 3 to Waypoint 4)", # "example": 4, # }, # "mission_action_ID": { # "type": "integer", # "description": "", # TODO: Add description # "example": 1, # }, # "range_to_go": { # "type": "number", # "format": "float", # "description": "Estimated distance to reach next waypoint", # "example": 124.3, # }, # "speed_over_ground": { # "type": "number", # "format": "float", # "description": "", # TODO: Add description # "example": 124.3, # }, # "water_current_velocity": { # "type": "number", # "format": "float", # "description": "", # TODO: Add description # "example": 124.3, # }, # "thrust_applied": { # "type": "number", # "format": "float", # "description": "", # TODO: Add description # "example": 124.3, # }, # "heading": { # "type": "number", # "format": "float", # "description": "Angular distance relative to north, usually 000°" # + " at north, clockwise through 359°, in degrees", # "example": 124.3, # }, # "health_status": { # "type": "string", # "description": "Health status extracted by respective platform " # + "if any diagnosis is available to check sensors", # "example": "Warning", # }, # "localisation_error": { # "type": "number", # "format": "float", # "description": "Localisation error at last USBL update.", # "example": 0.000129, # }, # "usbl_fix_seconds_ago": { # "type": "number", # "format": "float", # "description": "USBL Fix received x second ago.", # "example": 10.0, # }, # "battery_remaining_capacity": { # "type": "number", # "format": "float", # "description": "Battery remaining % provided by respective C2", # "example": 80.2, # }, # "current_pitch": { # "type": "number", # "format": "float", # "description": "Current pitch of platform", # "example": -4.0, # }, "sensor_config": sensor_schema, }, "required": [ "message_type", # "platform_ID", # "status_source", # "platform_timestamp", # "latitude", # "longitude", ], }