This is a follow-up to yesterday's post. As promised, I wanted to provide some information about the C++ firmware running on this little quadcopter.
Following in the Baseflight / Cleanflight / Raceflight / Betaflight naming tradition of the 32-bit Multwii lineage, I call this firmware "Hackflight". Hackflight is simple C++ firmware for inexpensive quadcopter flight controllers. It is geared toward people like me who want to tinker with flight-control firmware, and use it to teach students about ideas like inertial measurement and PID tuning.
If you are in the 99% percent of users who just want to get your vehicle flying without getting into firmware hacking, I would stay away from Hackflight. Go with Cleanflight (great for getting started when you're on a budget) or the Ardupilot suite (the gold standard for sophisticated mission planning with waypoint navigation and the like). In addition to big user communities and loads of great features, these platforms have safety mechanisms that Hackflight lacks, which will help avoid injury to you and damage to your vehicle.
Hackflight currently works only on STM32F103 flight-controller boards (Naze32 and clones like Flip32, MultiRC, etc.) The original Hackflight idea was to write firmware for flight controllers built from the Arduino / Teensy hardware. As you'll see, the code follows the Arduino design pattern of a startup() routine that calls the init() method of a few objects (IMU, RC, PID, Board) and a loop routine that calls the update() method and other methods of those objects. But with all the features you can now get onboard an inexpensive STM32F103 board (barometer, magnetometer, flash RAM), there seems little point in building your own board, unless you're interested in hardware hacking. So Hackflight currently supports only the STM32F103 boards, while keeping the Arduino design principles. The code provides abstraction (through the Board class) that should make it easy to use on other boards.
For more info and download, see the github repository.