Architecture - microsoft/ExpressivePixels GitHub Wiki
The Expressive Pixels authoring app produces animations in the Expressive Pixels Animation Format which is a compression codec optimized for transmitting and storing image frames for constrained microcontrollers.
An animation package in the Expressive Pixels Animation format can also be consumed directly by the Expressive Pixels MakeCode Extension
The Expressive Pixels MakeCode package is implemented in TypeScript. The rendering of an animation in the Expressive Pixels Animation Format is surfaced to a MakeCode Block/Javascript program.
An animation package in the Expressive Pixels Animation format can be transferred over USB or Bluetooth connection to an Expressive Pixels compatible device.
Communication with an Expressive Pixels compatible device that is running the Expressive Pixels Firmware with the communication layers enabled, is done using the COBS streaming protocol. COBS (Consistent Overhead Byte Stuffing) is a communication streaming protocol that provides resilient transfer and recovery of data packets between two devices.
The Expressive Pixels Firmware is split into two parts: The application logic in ExpressivePixelsCore that implements the features of Expressive Pixels such as animation rendering, file Storage, & behaviors; A hardware/platform abstraction layer in ExpressivePixelsPlatform, provides system level capabilities to ExpressivePixelsCore isolating the application logic from the underlying type of microprocessor and development toolchain such as Arduino, Nordic SDK, or other platforms that Makers can implement for.