The Ground Station is composed of different technologies all working together in a cohesive manner. This document attempts to outline these technologies.
groundstation/
dashboard/
consumers.py
- contains the WebSocket that the frontend connects tomodels.py
- contains Packet models for storing tests in the databaseurls.py
- contains url mappings for dashboard routesviews.py
- contains route callbacks
data/
bridge.py
- manager for flight software (FS) controllers; initializes controllers and starts threadscontrollers.py
- contains the FS controllers; connects & listens to their respective communication interfacespacket.py
- parses and unpacks packets sent by the flight software
static/
css/
- css-related filesimg/
- logos, P&IDsjs/
- JavaScript frontend files
asgi.py
- creates ASGI app; initializes WebSockets with Channelssettings.py
- Django related settingsexample_config.json/config.json
- Ground Station related settingsurls.py
- contains url mappings for entire project
Django is the web framework for the Ground Station. As Python is an easy language to learn and Django comes with a plethora of features to assist in development, this allows us to develop quickly and help other developers to learn the software quicker.
Daphne is the ASGI server to support Django Channels WebSockets. This allows us to serve a WebSocket that acts as a bridge between the flight software and the site.
XBee Python Library, also known as xbplib
and digi-xbee
, is the library we use to connect to the XBee devices. The library acts as a wrapper over the low-level pyserial
library and lets us easily interact with the XBee network in API mode.
Whitenoise is a middleware that lets us compress and cache static files in a Django production environment.