Libmbb
Embedded Building Bricks - Hierarchical State Machines, Timers, Queues, Unit Tests
Install / Use
/learn @jawebada/LibmbbREADME
<img style="display: block; margin: auto;" src="docs/mbb.png" alt"Logo libmbb"/>
libmbb - Embedded Building Bricks
Synopsis
libmbb is a MIT-licensed C library targeted at embedded systems.
The upstream repository is at https://github.com/jawebada/libmbb/.
Features
- Hierarchical state machines (HSMs), including timers
- Fixed-cacpacity queues
- Debugging macros
- Unit tests
libmbb does not allocate memory dynamically. It is up to the developer to decide how memory is allocated. The HSM module supports both purely event-driven and non-blocking, real-time suitable processing.
Tools
The tools sub directory contains the following command line tools:
mhsm_scaffoldadds event processing function stubs to source filesmunt_maingenerates main functions for unit tests
Building
libmbb uses the autotools for building. If you clone its upstream repository
you will have to call ./autogen.sh to build the configure script.
autogen.sh just calls autoreconf which depends on autoconf and automake
being installed. If the configure script is built it is the usual game of
./configure
make
make install
The install target will install the examples and unit tests along with libmbb
itself. These programs have rather unspecific names like test_hsm. Calling
./configure --program-prefix=mbb_ will install them as mbb_test_hsm
instead. Alternatively, you might specify ./configure --prefix=/opt/mbb to
install everything into /opt/mbb.
Call make check to run the unit tests.
Call ./configure --host=arm-linux to cross-compile for arm-linux.
Call ./configure --help for a general help message.
Dependencies
- The libev timers backend and the
examples using it are only compiled if
libevand its header files are installed on your system. - The tools are written in and thus depend on Ruby.
Examples
- debugging: debugging macros
- monostable: multiple HSM instances, libev timers
- pelican: Miro Samek's PEdestrian LIght CONtrolled (PELICAN) Crossing Example, periodic timers
Note that the terminal interfaces of some of the examples (pelican and
monostable) will be interfered with by the stderr output of the debugging
macros. You can either add -DNDEBUG to CPPFLAGS to disable these debugging
macros or redirect stderr like this:
examples/pelican 2> log
Related Skills
node-connect
338.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
338.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.6kCommit, push, and open a PR
