""" 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": { "type": "object", # TODO: Check 000 "description": "Any addition fields/data to be added here", "example": {"payload": [1.2, 434]}, }, }, } 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"], "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", "description": "Current state executed by platform. E.g. " + "STOP, IDLE, ABORT.", "example": "ABORT", }, # TODO: Define enum with potential STATES of each platform "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.0, "default": 0.0, }, "altitude": { "type": "number", "format": "float", "description": "Target altitude in metres", "example": 20.0, }, "mission_track_ID": { "type": "integer", "description": "Track number - stage in mission (e.g. " + "4 --> Waypoint 3 to Waypoint 4)", "example": 4, }, "mission_plan_ID": { "type": "integer", "description": "Mission plan ID according to platform-C2 system", "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": "Speed over ground", "example": 124.3, }, "water_current_velocity": { "type": "string", "description": "Water current magnitude and direction", "example": "124.3NE", }, "thrust_applied": { "type": "number", "format": "float", "description": "Thrust applied", "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": "boolean", "description": "Health status where 0 is OK, 1 is platform has" + " an ERROR", "example": False, }, "localisation_north_error": { "type": "number", "format": "float", "description": "Difference in NORTH between deadreckoning" + " and USBL update.", "example": 0.000129, }, "localisation_east_error": { "type": "number", "format": "float", "description": "Difference in EAST between deadreckoning" + "and 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, }, "sensor_config": sensor_schema, }, "required": [ "message_type", "platform_ID", "status_source", "platform_timestamp", "latitude", "longitude", ], }