{"id":32512559,"url":"https://github.com/jawebada/libmbb","last_synced_at":"2025-10-27T22:29:17.210Z","repository":{"id":27226705,"uuid":"30697965","full_name":"jawebada/libmbb","owner":"jawebada","description":"Embedded Building Bricks - Hierarchical State Machines, Timers, Queues, Unit Tests","archived":false,"fork":false,"pushed_at":"2018-06-04T14:34:26.000Z","size":155,"stargazers_count":21,"open_issues_count":0,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2023-02-27T14:16:37.318Z","etag":null,"topics":["c","embedded-systems","hierarchical-state-machines"],"latest_commit_sha":null,"homepage":"https://jawebada.github.io/libmbb/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jawebada.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-02-12T10:41:49.000Z","updated_at":"2023-01-16T13:08:10.000Z","dependencies_parsed_at":"2022-09-17T14:52:51.151Z","dependency_job_id":null,"html_url":"https://github.com/jawebada/libmbb","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/jawebada/libmbb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jawebada%2Flibmbb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jawebada%2Flibmbb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jawebada%2Flibmbb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jawebada%2Flibmbb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jawebada","download_url":"https://codeload.github.com/jawebada/libmbb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jawebada%2Flibmbb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281354069,"owners_count":26486892,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-27T02:00:05.855Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","embedded-systems","hierarchical-state-machines"],"created_at":"2025-10-27T22:29:15.120Z","updated_at":"2025-10-27T22:29:17.205Z","avatar_url":"https://github.com/jawebada.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg style=\"display: block; margin: auto;\" src=\"docs/mbb.png\" alt\"Logo libmbb\"/\u003e\n\nlibmbb - Embedded Building Bricks\n=================================\n\nSynopsis\n--------\n\n*libmbb* is a [MIT-licensed](LICENSE.txt) C library targeted at embedded\nsystems.\n\nThe upstream repository is at \u003chttps://github.com/jawebada/libmbb/\u003e.\n\nFeatures\n--------\n\n* [Hierarchical state machines (HSMs)](docs/HSM.md), including timers\n* [Fixed-cacpacity queues](docs/Queue.md)\n* [Debugging macros](docs/Debug.md)\n* [Unit tests](docs/Test.md)\n\n*libmbb* does not allocate memory dynamically. It is up to the developer to\ndecide how memory is allocated. The HSM module supports both purely\nevent-driven and non-blocking, real-time suitable processing.\n\nTools\n-----\n\nThe tools sub directory contains the following command line tools:\n\n* `mhsm_scaffold` adds event processing function stubs to source files\n* `munt_main` generates main functions for unit tests\n\nBuilding\n--------\n\n*libmbb* uses the autotools for building. If you clone its upstream repository\nyou will have to call `./autogen.sh` to build the `configure` script.\n`autogen.sh` just calls `autoreconf` which depends on `autoconf` and `automake`\nbeing installed. If the `configure` script is built it is the usual game of\n\n\t./configure\n\tmake\n\tmake install\n\nThe `install` target will install the examples and unit tests along with libmbb\nitself. These programs have rather unspecific names like `test_hsm`. Calling\n`./configure --program-prefix=mbb_` will install them as `mbb_test_hsm`\ninstead. Alternatively, you might specify `./configure --prefix=/opt/mbb` to\ninstall everything into `/opt/mbb`.\n\nCall `make check` to run the unit tests.\n\nCall `./configure --host=arm-linux` to cross-compile for arm-linux.\n\nCall `./configure --help` for a general help message.\n\nDependencies\n------------\n\n* The [libev](http://software.schmorp.de/pkg/libev.html) timers backend and the\n  examples using it are only compiled if `libev` and its header files are\n  installed on your system.\n* The tools are written in and thus depend on\n  [Ruby](https://www.ruby-lang.org/).\n\nExamples\n--------\n\n* [debugging](examples/debugging.c): debugging macros\n* [monostable](examples/monostable.c): multiple HSM instances, libev timers\n* [pelican](examples/pelican.c): [Miro Samek's](http://www.state-machine.com/)\n  [PEdestrian LIght CONtrolled (PELICAN) Crossing\n  Example](http://www.state-machine.com/resources/AN_PELICAN.pdf), periodic\n  timers\n\nNote that the terminal interfaces of some of the examples (`pelican` and\n`monostable`) will be interfered with by the `stderr` output of the debugging\nmacros. You can either add `-DNDEBUG` to `CPPFLAGS` to disable these debugging\nmacros or redirect `stderr` like this:\n\n\texamples/pelican 2\u003e log \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjawebada%2Flibmbb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjawebada%2Flibmbb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjawebada%2Flibmbb/lists"}