Codebase compiled with -Wall, -Wextra, -Wpedantic and -Werror.


Enjoy -std=c++17 on your MCU.


Codebase can be compiled for both host and target.


No need to suffer in #ifdef hell.


There are no macros.


Build from CLI or use any IDE.


Dynamic memory allocation on embedded systems comes with a couple of risks (system might run out-of-memory, malloc/new might take a unexpected long time due to running a heap defragmentation algorithm). Snowfox eliminates those risks by only allocating dynamic memory during the startup phase.

What?

Snowfox is a embedded software framework consisting of

  • Hardware Abstraction Layer
  • IO driver support for various sensors, actuators and communication controllers
  • Industrial communication stacks

written in C++ subjected to rigorous unit and integration tests.

Why #1?

The application of OO principles such as SOLID leads to a clean code base and minimizes coupling between modules. This enables the application of Test Driven Development which gives developers instantenous feedback on their code therefore eliminating tedious integration and bug fixing sessions typical for Debug-Later-Programming.


Why #2?

In his book 'Refactoring: Improving the Design of Existing Code' Martin Fowler frankly states that “Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” This project aims to do just that for the embedded domain. You are kindly invited to browse the code and form your own opinion about how well the code is adhering to our claim.

Complete codebase compilable for AVR, RISCV and x86.


All supported MCU configurations as well as all examples are build on every checkin.


Code functionality is verified with unit tests which are executed on every checkin.


High code quality is maintained through the whole project.