The Command and Data Handling subsystem (CDH) is primarily responsible for writing and maintaining the services that bridge the gap between hardware and software. The flight software is installed on a System on Module (SoM). The SoM runs Debian, and we utilize as many built-in operating system features as possible, to reduce the amount of code we have to test and verify. CDH interacts with every aspect of the satellite, using different communication protocols including SPI, CAN, UART, and I2C. The CDH service is like the brain of the satellite, collecting telemetry data from each of the subsystems, and taking automatic corrective action if needed.
Our main focus is maintaining or updating the currently existing subsystem services, which are deployed as systemd services. The workflow consists of writing a new version of a service, building it and transferring the binary executable to the flight computer, and verifying that it works correctly in conjunction with all of the other services running. We must also make sure that our software fits strict requirements and guidelines to guarantee we are flight-ready.
Undergraduate researchers program in C++ on Linux, use Google Test and Makefile for testing, and use GitHub for version control. On top of that, researchers learn a lot about communication and group work skills.