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 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 format and sends it to the flight.
GroundReceive Module
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 and send it to the GUI.
GroundSend Module
The GroudSend 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 format to facilitate data transfer back to the flight.
Next Steps
Understand how the XBeesInterface class works so that both the GroundSend and GroundReceive Module can be built
Figure out how to format and encode the data across the workflow