Elma is an event loop and process manager for embedded and reactive systems. Elma is structured as a C++ library of classes on top of which you build your own C++ project. It keeps track of processes, finite state machines, events, and communication channels, executing them at specified frequencies. Elma was developed as part of the University of Washington's ECE P 520 course on advanced embedded systems programming. More information on how Elma was designed can be found in the links below:
The source code for Elma is on Github.
To get started, you will need a C++ build environment. We have provided one with the Docker container elma
, which you can use as follows:
git clone https://github.com/klavinslab/elma.git
cd elma
docker run -v $PWD:/source -it klavins/elma:latest bash
make
examples/bin/basic
You can also build the docker environment, described in env/Dockerfile, yourself, with the following commands:
git clone https://github.com/klavinslab/elma.git
cd elma
docker build -t myelma .
docker run -v $PWD:/source -it myelma bash
make
examples/bin/basic
To install Elma without using Docker, you will need to install the following tools:
- gcc 4.9 or an equivalent C/C++ compiler that supports at least C++14
- Make (if you want to use the makefile. Alternatively, you can use some other build manager)
- Doxygen
- Google Test
- Neils Lohmann's JSON library: https://github.com/nlohmann/json
- My fork of yhirose's HTTP library
See the examples in the examples
directory for how to build new event loops with Elma.
This software is open source and uses the MIT license. Details can be found here.