Bluejay is embedded firmware for Electronic Speed Controllers (ESCs) that control brushless motors in multirotor drones. It processes DShot digital signals (150/300/600) to regulate motor speed, provides bidirectional DShot telemetry for RPM data, and implements motor commutation, power management, and safety features. The architecture is a monolithic 8051 assembly program built for SiLabs EFM8 BB2/BB51 MCUs, using a superloop design with interrupt handlers for real-time signal processing. Key components include DShot decoding/encoding, six-step motor commutation, and a cooperative scheduler for background tasks like telemetry transmission and temperature monitoring.
EmuFlight is a real-time embedded flight controller firmware for multirotor drones, forked from Betaflight/Cleanflight. It runs on STM32F4/F7/H7 microcontrollers, providing sensor fusion (gyro, accelerometer, barometer, GPS), PID control, motor mixing, telemetry, and on-screen display. The architecture is bare-metal with a cooperative scheduler, modular driver abstraction (vtable patterns for serial ports, displays, VTX, sensors), and a persistent parameter group (PG) configuration system. Key data flows: sensor inputs → Kalman/dynamic notch filters → PID → mixer → motor outputs; RC input via various protocols; telemetry/blackbox logging output. External dependencies include STM32 HAL, CMSIS DSP, and MAVLink libraries. The codebase is well-structured with unit tests (Google Test) and CI, though it retains some legacy drivers and conditional complexity from the Betaflight lineage.