Manikin Software Libraries V3 is a modular embedded C library designed for high-reliability systems like the Manikin CPR simulator platform. It provides a unified API layer for hardware modules such as sensors, memory, I2C, SPI, and system control — all optimized for safety-critical environments.
This library adheres to MISRA-inspired best practices to ensure deterministic behavior, testability, and maintainability. Features include:
- 🧱 Modular architecture (sensors, memory, I2C, etc.)
- 🛡️ No dynamic memory allocation or runtime polymorphism
- ⚡ Bare-metal friendly: fast, lightweight, and portable
- 🧪 Easily testable APIs with clear separation of concerns
| Module | Description | Docs & Diagrams |
|---|---|---|
sensors/ |
Driver interface for Manikin sensors | Sensor Module Docs |
memory/ |
SPI NOR flash memory abstraction (W25QXX) | Memory Module Docs |
i2c/ |
Platform-agnostic I2C communication layer | I2C Module Docs |
spi/ |
SPI wrapper (if applicable) | (TBD) |
system/ |
Reset control, timers, utility functions | (TBD) |
This library is designed to integrate easily into existing embedded toolchains.
- Standard-compliant C99 compiler
- Minimal HAL dependencies (e.g., STM32 HAL or platform-specific SPI/I2C)
- No RTOS required
#include "manikin_types.h"
#include "sensors/<sensor>.h"
#include "memory/w25qxx128.h"
#include "i2c/i2c.h"Visual API and call sequence diagrams are included per module:
Full documentation is available in the
docs/directory.
Each module can be unit-tested independently using mocks for bus interfaces. Tests can be written using:
- FFF / Catch2
- Platform-specific hardware test benches
We welcome contributions from the community! To contribute:
- Fork this repo
- Create a branch:
feature/your-change - Write clear, testable code
- Submit a pull request
Please follow existing formatting and naming conventions.
Licensed under the Apache License 2.0.
Copyright © 2025 RobotPatient