from flask_restx import fields from . import api import os __all__ = [ os.path.splitext(os.path.basename(x))[0] for x in os.listdir(os.path.dirname(__file__)) if x.endswith(".py") and x != "__init__.py" ] # TODO: Define units for all schemas message_types = [ "platform_status", "mission_plan_ecosub", "mission_plan_reav", "mission_plan_autosub", ] # TODO: Add full range of message types once scoped out full_message_schema = api.model( "FullMessageSchema", { "message_ID": fields.String( required=True, description="UUID assigned to this message", example="b427003c-7bc8-11ed-a1eb-0242ac120002", ), "timestamp": fields.DateTime( required=True, description="Timestamp of message", example="2022-11-16T00:00:00Z", ), "version": fields.Float( required=True, description="Version of comms bacbone messaging format protocol", example=2.0, ), "source": fields.String( required=True, description="Where is this message from", example="autonomy_engine", ), "destination": fields.String( required=True, description="What is the destination of this message", example="ah-1", ), "encoded": fields.Boolean( required=True, description="Indicate that message raw (encoded) or decoded. " + "Options: encoded=True, decoded=False", example=False, ), "type": fields.String( required=True, description="Type of message", example="platform_status", ), "payload": fields.Raw( required=True, description="Content of Message", # example="{}", ), }, ) constraints_schema = api.model( "ConstraintsSchema", { "min_altitude": fields.Float( required=True, description="Minimum altitude set for squad.", example=15.2, ), "min_velocity": fields.Float( required=True, description="Minimum velocity set for squad.", example=0.1, ), "max_velocity": fields.Float( required=True, description="Maximum altitude set for squad.", example=0.9, ), }, ) platform_schema = api.model( "PlatformSchema", { "platform_ID": fields.Integer( required=True, description="unique identifier for platform", example=1, ), "serial": fields.String( required=True, description="platform serial number", example="reav-60", ), "model": fields.String( required=True, description="platform serial number", example="reav", ), "constraints": fields.Nested(constraints_schema), }, )