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" ] message_types = [ "vehicle_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", { "timestamp": fields.DateTime( required=True, description="Timestamp of message", example="2022-11-16T00:00:00Z", ), "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="vehicle_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, ), }, ) vehicle_schema = api.model( "vehicleSchema", { "vehicle_ID": fields.Integer( required=True, description="unique identifier for vehicle", example="ah-1", ), "serial": fields.Integer( required=True, description="vehicle serial number", example="ah-1", ), "model": fields.Integer( required=True, description="vehicle serial number", example="ah-1", ), "constraints": fields.Nested(constraints_schema), "active": fields.Boolean( required=False, description="When a vehicle is in deployment (executing a mission plan) this should be True", example=True, ), }, ) # TODO: Add generic positions schema # TODO: Define units for all schemas