Skip to content

micss-lab/ember-bindings

Repository files navigation

ember-bindings

C-compatible FFI wrappers around the ember multi-agent framework.

This crate exposes a subset of ember's functionality through a C ABI, enabling use from C or C++ projects. The primary motivation being integration with the Arduino ESP32 toolchain allowing integration with the existing vast C/C++ ecosystem.

This crate is highly experimental. The API is unstable, coverage is incomplete, and support for future ember features is not guaranteed.


What is wrapped

Module Description
container Container initialisation and agent registration
agent Reactive agent creation
behaviour Reactive behaviour creation
context Agent context access and management
message Message construction, envelope, and filters
acc External communication channel registration (e.g. ESP-NOW via the Arduino library)

The ESP32-specific modules (esp/alloc, esp/critical_section) allow the user of the bindings to specify their own allocator and critical_section implementation. For example, using the Arduino built-in allocator allowing rust types to be allocated and managed on the same heap as native C/C++ types.


Intended use

The primary use case is linking ember into an Arduino ESP32 project as a static library. The xtensa-esp32-arduino-elf.json target spec and build.rs are configured for this workflow. See the justfile for the build commands used during development.


Prerequisites

  • Rust (see rust-toolchain.toml)
  • The Xtensa ESP32 toolchain (xtensa-esp32-arduino-elf)
  • An Arduino ESP32 project to link against

License

To be determined. Please contact the authors before reuse or redistribution.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors