__init__.py 2.84 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
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 = [
13
    "vehicle_status",
14 15 16 17 18
    "mission_plan_ecosub",
    "mission_plan_reav",
    "mission_plan_autosub",
]  # TODO: Add full range of message types once scoped out

19 20
full_message_schema = api.model(
    "FullMessageSchema",
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
    {
        "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",
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
            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,
73 74 75 76
        ),
    },
)

77 78
vehicle_schema = api.model(
    "vehicleSchema",
79
    {
80
        "vehicle_ID": fields.Integer(
81
            required=True,
82
            description="unique identifier for vehicle",
83 84 85 86
            example="ah-1",
        ),
        "serial": fields.Integer(
            required=True,
87
            description="vehicle serial number",
88 89 90 91
            example="ah-1",
        ),
        "model": fields.Integer(
            required=True,
92
            description="vehicle serial number",
93 94
            example="ah-1",
        ),
95
        "constraints": fields.Nested(constraints_schema),
96 97
        "active": fields.Boolean(
            required=False,
98
            description="When a vehicle is in deployment (executing a mission plan) this should be True",
99 100 101 102 103 104
            example=True,
        ),
    },
)
# TODO: Add generic positions schema
# TODO: Define units for all schemas