__init__.py 2.06 KB
Newer Older
1 2
from flask_restx import Api, fields
from flask import Flask
3 4 5 6 7 8 9 10
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"
]
11 12 13 14 15

app = Flask(__name__)
api = Api(app)

message_types = [
16
    "platform_status"
17 18 19 20 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
]  # TODO: Add full range of message types once scoped out

message_header_schema = api.model(
    "MessageHeader",
    {
        "timestamp": fields.String(  # TODO: Update to Datetime UTC format
            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
            example="platform_status",
47 48 49 50
        ),
    },
)

51 52
platform_schema = api.model(
    "PlatformSchema",
53
    {
54
        "platform_ID": fields.Integer(
55
            required=True,
56
            description="unique identifier for platform",
57 58 59 60
            example="ah-1",
        ),
        "serial": fields.Integer(
            required=True,
61
            description="platform serial number",
62 63 64 65
            example="ah-1",
        ),
        "model": fields.Integer(
            required=True,
66
            description="platform serial number",
67 68 69 70
            example="ah-1",
        ),
        "active": fields.Boolean(
            required=False,
71
            description="platform in mission",
72 73 74 75 76 77
            example=True,
        ),
    },
)
# TODO: Add generic positions schema
# TODO: Define units for all schemas