SDEC - Sun Devil Rocketry

Most of SDR's work is open source. See this project for yourself.

Source Code

Before reading this page, I highly recommend reading about the Flight Computer.

About

Capabilities

SDEC is our primary way of communicating with SDR's embedded computers. It is a command line interface written in Python that provides a number of commands to interact with our hardware over USB. Below is a non-exhaustive list of some of our most important commands.

Command Subcommand Description
Connect [none] Manages a serial connection with the attached board.
Comports [none] List the serial ports on your PC to identify where the hardware is connected.
Preset Upload Parse a preset data file, serialize the contents, and pass it to the flight computer to be used in flight. Computes a checksum for data validity.
Preset Download Download the presets that are currently on the flight computer, deserialize the contents, and write it to a file.
Preset Verify Tell the flight computer to recompute the checksum over the presets, compare it to the original, and send the result.
Flash Erase Clear the entirety of flash.
Flash Extract Download the contents of flash memory, including preset data (if applicable) and sensor data.
Sensor Poll Check specific sensor values and log them to console continuously.
Sensor Dump Output all sensor values to console continuously. Used extensively in the Flight Dashboard, which is in development by the software team.

My Contributions

The development of SDEC is tightly coupled with the flight computer's firmware. If we add a sensor, we need to update SDEC at the same time to recognize the difference in the schema. Because of this, even though the firmware is my main focus, I've done a fair amount of work on SDEC.

  • Developed a feature to parse preset data on both the original Canard application and now for our most recent app's more comprehensive config system.
  • Designed and built a system to upload configuration data instead of needing to change source code.
  • Updated the flash parser to let programs decide what data they want to log in flight, increasing practical runtime.
  • Fixed a longtime bug where flash extract would hang while parsing due to flight computer timeouts and a non-empty serial buffer.