Embedded Infastructure
Getting Started
How to setup and get started working on the embedded code
STM32CubeMX
This page: the short, concrete workflow for using STM32CubeMX to configure an STM32 project and g...
Git Submodules
On this page 1. Why submodules?2. Key concepts3. Cloning a repo with submodules4. Adding ERC-Prot...
Gaslight your boss :D
(If you need help with abusive bosses reach out @mybrosky_nam, I couldnt do anything about it but...
Project Structure
How the code is structured and organized
Layout
Code Structure Architecture (Summary) Each board’s main.c acts strictly as an orchestrator. It in...
Post-Generation Scripts
Introduction We use one post code generation script. We do this because we do not want to write c...
Simple PIOC
Introduction This Python script processes a custom PlatformIO configuration file (platformio.pioc...
.pioc file
Introduction The platformio.pioc file is the central configurationhere file used to define build ...
Packet Dispatcher
High Level Overview
This Page PurposeHigh-level designExternal dependencies Purpose The packet dispatcher is used t...
Functions of the Packet Dispatcher
Public API The following functions are available for the boards to use outside of the library. Th...
Helper Macros for Handler Config
Purpose To reduce repetitive boilerplate when defining packet handlers, the module also provides ...
Recommended Usage Pattern
More information on the mentioned steps can be found in Functions of the Packet Dispatcher Typi...
Embedded Common Libraries
All Common Libraries used by all Microcontrollers in the Rover
Overview
This page gives a high-level overview of the shared libraries described so far, what each one is ...
Result Library
Purpose The result module defines a shared result code system for the codebase. Its job is to giv...
Logging
Purpose The logging library provides a simple UART-based logging interface for embedded firmware....
Priority Queue
Summary bucketed_pqueue is a simple, efficient strict-priority queue for FreeRTOS systems where: ...
Key-Value Pool
Purpose The kv_pool module implements a fixed-key key-value store backed by a custom memory pool....
Unit Testing
Purpose Unit tests in this repository are designed to validate component behavior, not entrypoint...