Advanced Search
Search Results
19 total results found
New Page
Priority Queue
Summary bucketed_pqueue is a simple, efficient strict-priority queue for FreeRTOS systems where: items fall into a small fixed set of priority levelsproducers may be tasks or ISRsa single consumer drains work in priority order Its design is intentionally light...
Logging
Purpose The logging library provides a simple UART-based logging interface for embedded firmware. Its main job is to let the application print formatted log messages such as: [INFO] MOTOR: Initialization complete [WARNING] SENSOR: Value out of range: 8123 [ERR...
Result Library
Purpose The result module defines a shared result code system for the codebase. Its job is to give functions a consistent way to report success and failure without inventing random local conventions like: 0 means success here1 means success therenegative value...
Key-Value Pool
Purpose The kv_pool module implements a fixed-key key-value store backed by a custom memory pool. It is designed for systems where: keys are known as integer indices in a fixed rangevalues are variable-sized blobs of bytesdynamic allocation from the general he...
Overview
This page gives a high-level overview of the shared libraries described so far, what each one is for, how they fit together, and how they are meant to be used in the codebase. The goal is not to replace the detailed documentation for each module. These librar...
Overview
The debugging board is a dedicated auxiliary system whose only job is to make the rest of the robot less painful to work with. It is not part of the rover’s core functionality. Purpose At a high level, the debugging board serves roles: Visibility Provide real-...
Display - ILI9341 Hardware Configuratoin
The debugging board incorporates a graphical display based on the ILI9341 controller. This display serves as the primary local interface for presenting system state, diagnostics, and user feedback. The ILI9341 is a widely used TFT LCD controller that integrate...
Display - ILI9341 Library
Purpose The ili9341 library provides the low-level and mid-level drawing interface for the ILI9341-based display used on the debugging board. Its role is to hide the raw command sequence and SPI transaction details of the display controller behind a set of fun...
Gaslight your boss :D
(If you need help with abusive bosses reach out @mybrosky_nam, I couldnt do anything about it but I'll try to help you so you don't suffer as well ☮️)
Menu Driver - Overview
Purpose The menu driver is a page-based UI framework for an embedded display (ILI9341). It defines: how UI is structured into pageshow state is stored per pagehow navigation workshow rendering is organized Architecture Position [ Application Logic ] ↓...
Menu Driver - Configuration Layer
Visual Configuration #define MENU_DRIVER_BACKGROUND_COLOR 0x0000 #define MENU_DRIVER_FOREGROUND_COLOR 0xFFFF Black background, white foreground. Layout Constraints #define MENU_SIDEBAR_WIDTH 38 Sidebar (ribbon) width. Capacity Limits List Pages #define MAX_LI...
Menu Driver - Core Data Structures
Page State Types A page state is: The persistent data container that represents everything a UI page needs to function between frames. Not just data. It’s: memory of what the user didmemory of what was renderedmemory of external data (diagnostics, etc.) List P...
Menu Driver - Overview Page
Introduction The List Page is a navigation-oriented page type within the menu driver. It provides a structured interface for selecting between multiple entries, typically representing: subpagesactionssystem modules It is the primary mechanism for user-driven n...
Layout
Code Structure Architecture (Summary) Each board’s main.c acts strictly as an orchestrator. It initializes the runtime, creates tasks, and delegates all functional behavior to component modules. Core Design Contract The repository enforces a strict separation ...
Unit Testing
Purpose Unit tests in this repository are designed to validate component behavior, not entrypoint wiring. Tests target logic in components/common/* and components/<board>/*.src/<board>/main.c remains focused on initialization and task orchestration.Test owners...
Post-Generation Scripts
Introduction We use one post code generation script. We do this because we do not want to write code inside the auto-generated code, and this helps with that. If you are on Linux or (possibly, untested but likely) mac, you can refer to the script in the cubeMX...
Simple PIOC
Introduction This Python script processes a custom PlatformIO configuration file (platformio.pioc) and generates a standard platformio.ini file. It extends PlatformIO’s configuration capabilities by: Supporting dynamic include paths using glob patternsExtracti...