{"id":44638604,"url":"https://github.com/vpetrigo/smf","last_synced_at":"2026-02-14T18:07:03.616Z","repository":{"id":75832688,"uuid":"572379920","full_name":"vpetrigo/smf","owner":"vpetrigo","description":"Lightweight State Machine Framework in C","archived":false,"fork":false,"pushed_at":"2025-04-10T17:57:45.000Z","size":82,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-10T18:04:32.368Z","etag":null,"topics":["c","embedded-c","fsm","fsm-library","state-machine"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vpetrigo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-11-30T06:25:30.000Z","updated_at":"2025-04-10T17:57:49.000Z","dependencies_parsed_at":"2025-02-02T21:30:28.506Z","dependency_job_id":null,"html_url":"https://github.com/vpetrigo/smf","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/vpetrigo/smf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpetrigo%2Fsmf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpetrigo%2Fsmf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpetrigo%2Fsmf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpetrigo%2Fsmf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vpetrigo","download_url":"https://codeload.github.com/vpetrigo/smf/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpetrigo%2Fsmf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29452127,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T15:52:44.973Z","status":"ssl_error","status_checked_at":"2026-02-14T15:52:11.208Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-c","fsm","fsm-library","state-machine"],"created_at":"2026-02-14T18:07:02.766Z","updated_at":"2026-02-14T18:07:03.610Z","avatar_url":"https://github.com/vpetrigo.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CI](https://github.com/vpetrigo/smf/actions/workflows/ci.yml/badge.svg)](https://github.com/vpetrigo/smf/actions/workflows/ci.yml)\n\n# State Machine Framework\n\n-------------------------\nThis project is a fork of a library from [Zephyr][zephyr] project which is great to use as a standalone library\nfor making state machines easier and cleaner.\n\nThe `smf` library has one of the cleanest interface and it is quite easy to use.\n\nThis repository provides an integration for the CMake build system that allows to add the `smf` library\nto your project without a headache.\n\n## Library configuration\n\nThere are two options available:\n- `SMF_ANCESTOR_SUPPORT` enables/disables hierarchical state machine support\n- `SMF_CONFIG_FILE` a configuration filename that will be included into `smf`\n\nConfiguration file may provide the following stuff that `smf` would use:\n\n```c\n#ifndef MY_SMF_CONFIG_H\n#define MY_SMF_CONFIG_H\n\n// enable hierarchical state machine feature\n#define CONFIG_SMF_ANCESTOR_SUPPORT\n\n// ...\n\n// Logging macro that smf library uses\n#define LOG_WARN(...)\n\n#endif /* MY_SMF_CONFIG_H */\n```\n\n## Supported FSM types\n\n_Flat state machine example_:\n\n![flat_fsm](https://github.com/user-attachments/assets/57af1d45-0853-4f13-85fa-f77cb223be6c)\n\n\n_Hierarchical state machine example (`CONFIG_SMF_ANCESTOR_SUPPORT` enabled)_:\n\n![hierarchical_fsm](https://github.com/user-attachments/assets/df07612e-936f-4368-a939-a782485fdea9)\n\n\n# Documentation\n\n---------------\n\nYou may find the full-featured documentation\non [Zephyr project](https://docs.zephyrproject.org/latest/services/smf/index.html) page\n\n# Contribution\n\n--------------\nContributions are always welcome! If you have an idea, it's best to float it by me before working on it to ensure no\neffort is wasted. If there's already an open issue for it, knock yourself out. See the [contributing section](CONTRIBUTING.md) for\nadditional details\n\n# License\n\n---------\n\nThis project is licensed under:\n\n- [Apache-2.0](LICENSE.md)\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in time by you, as\ndefined in the Apache-2.0, shall be licensed as above, without any additional terms or\nconditions.\n\n[zephyr]: https://github.com/zephyrproject-rtos/zephyr\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpetrigo%2Fsmf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvpetrigo%2Fsmf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpetrigo%2Fsmf/lists"}