C-Arduino-Libraries
🚀 A collection of Arduino-focused C++ libraries with shared tooling, automated quality checks, and registry tracking.
Quick Start
- Libraries live under
lib/. - Most libraries include their own README with API and examples.
- Experimental UnoQ branch work is in
lib/__ArduinoUnoQLibraryDevelopment__Experimental/.
Automation-Driven Status
This repo now relies heavily on workflows for health and stability reporting.
- Library health summary: reports/library-health-report.md
- PlatformIO metrics report: PLATFORMIO_METRICS.md
- Library changelog index: reports/library-changelogs/README.md
- Host simulation and compile workflows:
.github/workflows/
Feature Snapshot
Expect practical building blocks rather than one giant framework:
- Storage and file friendly patterns: SD workflows (
SDList) and filesystem-oriented integration points (includingLittleFSwrapper paths in this repo). - Modern utility helpers:
Optional,Variant,TypeTraits,Predicates, and iterator/style support. - Data structures: maps, trees, lists, queues, stacks, vectors, and hash containers.
- Math and utility helpers:
MathLib,MatrixMath, timers, and lightweight support modules.
For deep details, check each library README and examples under lib/.
Library Health Badges
Auto-generated from workflow status results (2026-08-08T02:16:46.115Z).
Lint:
Compilation:
PlatformIO Registry Badges
Auto-generated from PlatformIO registry package data (2026-08-08 00:13 UTC).
Quick expectation notes: data structures, utility helpers (Optional, Variant, TypeTraits), and storage-facing support (SD/SDList and repo-level LittleFS integration paths).
Data Structures
- AVL Tree
- ArrayList
- BPlusTree
- BTree
- BasicLinkedList
- BinarySearchTree
- BinaryTree
- Dictionary
- DoubleLinkedList
- FenwickTree
- Hashtable
- HeapTree
- Initializer_List
- IntervalTree
- KDimensonalTree
- Map
- MyDictionary
- OcTree
- QuadTree
- RTree
- RedBlackTree
- SDList
- SegmentTree
- SimpleQueue
- SimpleStack
- SimpleVector
- SuffixTree
- TrieTree
- UnorderedMap
Language and Utility Helpers
Storage and IO
Math and Runtime Helpers
Health and Testing
Track quality and CI status from these workflow/report entry points:
- Cross-repo health status (SystemCommands issue buckets):
- Host-level simulation tests:
- Build and compile coverage:
- JSON host simulation tests:
- Aggregated health output: reports/library-health-report.md
- PlatformIO metrics and registry overview: PLATFORMIO_METRICS.md
Notes:
- Compile/testing pass-fail labels are synchronized to SystemCommands from the host simulation workflow jobs.
- Workflow badges reflect the latest run outcome, including
cancelledwhen a run is interrupted. - For debugging failures, open the workflow run and inspect step logs directly.
Testing Strategy and Confidence Levels
This repository uses multiple testing layers on purpose. Each layer catches different classes of failures.
1) Compile Validation
Primary signal:
- Compile Examples workflow
- Local workflow file: .github/workflows/compile-examples.yml
What it checks:
- Example sketches and library code still compile.
- Header/API changes did not break common include paths or usage patterns.
What it does not guarantee:
- Runtime behavior on real boards.
- Correct timing, interrupts, or peripheral behavior.
2) Host Simulation and Functional Tests
Primary signal:
- Arduino Host Simulation Tests workflow
- Local workflow file: .github/workflows/arduino-host-sim-tests.yml
Related signal:
- JSON Host Sim Tests workflow
- Local workflow file: .github/workflows/json-host-sim-tests.yml
What they check:
- Data-structure and algorithm correctness under repeatable host-side conditions.
- Serialization and parser behavior for JSON-oriented flows.
- Regressions in logic that do not require physical hardware.
What they do not guarantee:
- Exact SRAM/stack pressure behavior on 8-bit targets.
- Hardware-dependent timing and bus-level edge cases.
3) Memory and Resource-Oriented Testing
Primary signal:
- Host Sim Memory Profiles workflow
- Local workflow file: .github/workflows/host-sim-memory-profiles.yml
What it checks:
- Relative allocation trends, leak-like patterns, and growth behavior in host simulation.
- Useful early warnings when a change increases memory pressure.
What it does not guarantee:
- Exact AVR/ARM allocator behavior.
- Real board fragmentation patterns over long uptime.
Why a Passing CI Run Can Still Fail on Arduino Hardware
A green CI badge means strong baseline quality, but not full hardware certification.
Common reasons for hardware-only failures:
- Smaller SRAM/flash limits than host environment assumptions.
- Different compiler flags, ABI details, or core library implementations.
- Peripheral timing differences (SPI/I2C/UART), ISR interactions, or watchdog behavior.
- Electrical and board-specific factors (clock, wiring quality, power stability).
Practical confidence guide:
- Compile pass only: low-to-medium confidence for runtime on device.
- Compile + host sim pass: medium-to-high confidence for pure logic libraries.
- Compile + host sim + memory profile pass: higher confidence, but still verify on target board before release.
Recommended release gate:
- Pass compile workflow.
- Pass host simulation workflows.
- Review memory profile diffs for unusual growth.
- Run at least one real-board smoke test for each changed library family.
Issue Automation and Moderation Tools
This repository includes automated issue triage and duplicate-management workflows. They reduce manual work, but they also use protected labels and project-field updates that contributors should understand.
What Tools Exist
- Challenge handling: Challenge Handler
- Duplicate detection and AI training: Duplicate Detection
- Restricted label enforcement: Restricted Label Watchdog
- Reopen behavior integration: Issue Reopen Handler
Challenge System (When You Disagree With a Closure)
Use this when an issue was marked duplicate or closed and you believe it was incorrect.
Contributor path:
- Add the challenge label to the issue.
- Or comment with a challenge command such as /challenge, start challenge, or mention-style challenge text.
- Include specific reasons why your issue is unique.
What automation does:
- Moves issue status to Challenged.
- Temporarily removes duplicate-related labels during review.
- Reopens the issue for review if needed.
- Posts an automated challenge-status comment.
Maintainer resolution:
- Challenge upheld: apply challenge-upheld or use comment command such as /challenge-upheld.
- Challenge failed: apply challenge-failed or use comment command such as /challenge-failed followed by a reason.
Typical result:
- Upheld challenges return the issue to active triage.
- Failed challenges archive the issue in Failed Challenges and keep closure intent.
Duplicate Detection and Admin Override Labels
Duplicate detection runs on new issues, selected label events, comments, and scheduled retraining.
Auto outcomes:
- Potential duplicate labels may be added for human review.
- Parent-child duplicate relationships can be established.
- Parent issues get an aggregated duplicate list section.
Admin override labels:
- adminduplicate: confirms duplicate, closes issue, links parent-child, updates project status, records training data.
- adminduplicatenegative: confirms not-duplicate, removes auto duplicate labels, records negative training data.
Manual bot commands for maintainers:
- Duplicate check trigger: comment with a bot mention plus wording like test duplicate, check duplicate, or scan duplicate.
- Duplicate list refresh trigger: comment with a bot mention plus wording like refresh duplicates, update duplicates, or rebuild duplicates.
Restricted Label Watchdog
The label watchdog protects sensitive labels from unauthorized edits.
Restricted labels include:
- adminduplicate
- adminduplicatenegative
- challenge-upheld
- challenge-failed
- challenge-complete
- parent
- child
- ai-training
- ai-data
- ai-verified
- training-data
- auto-processed
Policy behavior:
- Unauthorized add: label is removed automatically.
- Unauthorized removal: label is restored automatically.
- Allowed actors: maintainers, admins, and trusted system actors.
What this means in practice:
- Contributors should not rely on manually toggling restricted labels.
- If you need a restricted-state change, request maintainer review in issue comments.
Recommended Maintainer Playbook
- For likely duplicates, let automation mark potential duplicates first.
- Confirm true duplicates with adminduplicate.
- Mark false positives with adminduplicatenegative.
- If challenged, resolve with challenge-upheld or challenge-failed and include rationale.
- If labels seem to revert unexpectedly, check the restricted label watchdog run before reapplying labels.
Core Links
- 📦 PlatformIO owner page: https://registry.platformio.org/search?q=owner%3Abraydenanderson2014
- 💬 Discussions: https://github.com/braydenanderson2014/C-Arduino-Libraries/discussions
- 🐛 Issues: https://github.com/braydenanderson2014/C-Arduino-Libraries/issues
Support
If these libraries help you, support is appreciated:
- ❤️ GoFundMe: https://gofund.me/923e5f10
- 💰 Patreon: https://www.patreon.com/posts/122298248
- ☕ Ko-fi: https://ko-fi.com/joesupercool15673
- 🤝 GitHub Sponsors button in this repository
Notes
- Legacy long-form status sections were reduced in favor of workflow-generated sources.
- For detailed per-library state, check each library README plus generated reports.
- Expect active changes, especially in experimental and development branches.