Preliminary Architecture
...
The data telemetry system would facilitate seamless data transfer from the flight and ground station using XBees. On the ground - side, we would receive the data from the flight through the GroundReceive module which decodes the data from MavLink the Array of Bytes format and send it to the GUI. The GUI will then send back the data to the GroundSend module, which encodes the data back to MavLink the Array of Bytes format and sends it to the flight.
...
The GroundReceive module has an XBeesInterface to read in the data from the other XBees device on the flight using the read_data() function. After reading the data, we would have a GroundReceiveWorker() function that will be passed as a callback to the interface to decode data from MavLink Array of Bytes and send it to the GUI.
GroundSend Module
...
The GroudSend GroundSend module has an XBeesInterface to send encoded data back to the flight using the write_data() function. Before sending the data, we would have a pipeline from the GUI that sends the data to this module. The GroundSendWorker function will take in this data and encode it back to the Mavlink Array of Bytes format to facilitate data transfer back to the flight.
...
Understand how the XBeesInterface class works so that both the GroundSend and GroundReceive Module can be built
Document the format of data being sent from the flight controller
Figure out how to format and encode the data across the workflow
...