Sign inSign up

klavins/elma

By klavins

•Updated over 6 years ago

The Elma Event Loop Manager

Image
0

1.7K

klavins/elma repository overview

⁠Elma

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:

⁠Installation

The source code for Elma is on Github⁠.

⁠From Dockerhub

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

⁠From the Dockerfile

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

⁠Manual Installation

To install Elma without using Docker, you will need to install the following tools:

⁠Installation on Unix systems (e.g. Raspbian)

First install required packages available through apt-get

sudo apt-get update
sudo apt-get install -y cmake
sudo apt-get install -y cppcheck
sudo apt-get install -y graphviz
sudo apt-get install -y doxygen
sudo apt-get install -y cmake
sudo apt-get install -y libssl-dev

Next, install Google Test

cd /usr/src
sudo git clone https://github.com/google/googletest.git
cd googletest
sudo mkdir install
cd install
sudo cmake ../
sudo make
sudo make install

Next, install the json library

sudo mkdir /usr/local/include/json
cd /usr/local/include/json
sudo curl -O -J -L https://github.com/nlohmann/json/releases/download/v3.5.0/json.hpp
sudo mv json.hpp json.h

Next, install httplib

cd /tmp
git clone https://github.com/klavins/cpp-httplib.git
sudo mkdir /usr/local/include/httplib
sudo mv /tmp/cpp-httplib/httplib.h /usr/local/include/httplib

Now you should be ready to install elma:

cd ~
mkdir Code
cd Code
git clone https://github.com/klavinslab/elma.git
cd elma
make

Note that the Makefile should detect if you are on a pi by using the command

uname -m

which on a pi 3 model B+ returns 'armv71'. If your pi is different, you might need to change the ifeq statments in test/Makefile and examples/Makefile.

If you would like to treat elma as a library, so you can link in other code, you should link to the relevant files in to the unversal system resources (usr) as follows:

ln -s include /usr/local/include/elma
ln -s lib/libelma.a /usr/local/lib/libelma.a

Then you can do

#include "elma/elma.h"

in your code and use the -lelma flag while linking. See the example elma project⁠ for an example.

⁠Usage

See the examples in the examples directory for how to build new event loops with Elma.

⁠License

This software is open source and uses the MIT license. Details can be found here⁠.

Tag summary

Content type

Image

Digest

Size

516.6 MB

Last updated

over 6 years ago

docker pull klavins/elma