Skip to content
Snippets Groups Projects
Commit 09ea2d6c authored by Francesco Pham's avatar Francesco Pham
Browse files

README.md: Add EDDIE structure section and build prerequisites


- Add EDDIE structure section
- add build prerequisites section
- add reference to doxygen docs

Signed-off-by: default avatarJacopo Zorzetto <jacopo.zorzetto@mail.polimi.it>
Signed-off-by: default avatarFrancesco Pham <francesco.pham@huawei.com>

Co-authored-by: default avatarJacopo Zorzetto <jacopo.zorzetto@mail.polimi.it>
parent faa80b95
No related branches found
No related tags found
1 merge request!50README.md: Add EDDIE structure section, build prerequisites, merge in zephyr README
......@@ -35,8 +35,90 @@ See the `LICENSES` subdirectory.
See the `SECURITY.md` file.
## EDDIE structure
The structure of the EDDIE project is vertically divided into layers and
this division reflects the structure of the EDDIE repository.
While the communication and the virtualization layer are detailed below and already present in the EDDIE repository,
an intelligent layer is planned, to enable reasoning and smart resource distribution across the EDDIE network.
Currently, there is only a mocked version of this layer.
Lastly an application management layer is also planned, providing advanced functionalities for process management
in both local and remote EDDIE nodes.
### Layers
In the following paragraphs there is a more detailed description of the layers of EDDIE.
- **Communication Layer**
The bottommost component of EDDIE is the communication layer: it is responsible for all the networking bits of EDDIE,
from the creation and setup of the connection to the message dispatching to other nodes.
Every device that runs EDDIE has a server component, application logic that describes what capabilities (resources) that device has and answers to requests from other nodes.
Alongside the server element, a EDDIE device is equipped with a client component, allowing the device to comunicate actively in the network, performing requests to other devices.
Additionally, one node in the EDDIE network is elected as Resource Directory (RD): a new EDDIE node that wants to connect to the network should post its resources description in the RD, while from the RD it can retreive the descriptions of other nodes.
The communication layer exposes a list of APIs to the higher layers of EDDIE, allowing complex actions and queries to be executed in the EDDIE network.
- **Virtualization layer**
The Virtualization layer is responsible for the interaction between the EDDIE network (through the communication layer) and the single EDDIE-enabled application running on the device.
This layer is composed of two elements that are communicating through the IPC mechanism of d-bus:
- a receiver component that exposes its API on d-bus, allowing multiple applications to interact with EDDIE at the same time.
The API is composed of a single function `PerformAction` that models the action that the application wants to execute on the network, like changing or getting the status of a resource.
- a sender component is also present in the virtualization directory with the role of transmitting the requests generated by EDDIE-enabled application to the EDDIE service on the device.
### Examples
Examples on how to use the EDDIE APIs can be found in `/linux/examples`.
For more details, take a look at the [doxygen API documentations](https://docs.svc.ostc-eu.dev/).
## Build instructions
- If you want to run EDDIE on your local machine build the CMake project.
### Prerequisites
The following part of the document details how to install
and configure all packages and libraries required to have
a working copy of EDDIE.
- libcoap
libcoap is a C implementation of the application-level protocol CoAP.
The version of libcoap currently used by EDDIE is `version 4.3.0`.
If libcoap is already installed in your system you can skip the following installation procedure.
libcoap itself requires some packages to correctly complete its installation procedure:
they can be installed with the following commands:
```console
$ (sudo) apt-get install autoconf -y
$ (sudo) apt-get install libtool -y
```
Then launch these commands to install libcoap in your machine:
```console
$ git clone https://github.com/obgm/libcoap.git
$ git checkout release-4.3.0
$ cd libcoap
$ ./configure --disable-documentation --disable-dtls
$ make
$ (sudo) make install
$ (sudo) ldconfig
```
For further details on libcoap have a look at the [github repository](https://github.com/obgm/libcoap)
and at the [official libcoap documentation page](https://libcoap.net/).
- Glib
Installation instructions for Glib and its requirements can be found at the
[Glib installation page](https://github.com/GNOME/glib/blob/main/INSTALL.md?plain=1).
### Build
- If you want to run EDDIE on your local machine build the CMake project:
```console
$ mkdir build && cd build
$ cmake ..
......@@ -44,16 +126,16 @@ $ make
```
- Then you can find some binaries in the `build/linux/` subdirectory:
- `eddie-endpoint` is used to test the Eddie communication layer by
initializing an `EddieEndpoint` for the CoAP communication and resource
initializing an [EddieEndpoint](https://docs.svc.ostc-eu.dev/classEddieEndpoint.html) for the CoAP communication and resource
registration and discovery. In this executable
a resource directory discovery request is sent and if a one is not found, a new
resource directory is initialized. If `--example-res` flag is set, the node will
publish some example resources, and finally, the node will retrieve the available
resources in the resource directory. Run `eddie-endpoint --help` for more information.
- `eddie-virt-server` runs a `VirtualizationReceiver` which starts a DBus
server and initializes an `EddieEndpoint`.
server and initializes an [EddieEndpoint](https://docs.svc.ostc-eu.dev/classEddieEndpoint.html).
- `eddie-virt-client` is an example of application side code that,
using `VirtualizationSender`, runs a DBus client to communicate with the
virtualization server side.
- If you want to build the Oniro Blueprint for the EDDIE project, and run on an Oniro supported target: follow the instructions in the [EDDIE blueprint git repository](https://gitlab.eclipse.org/eclipse/oniro-blueprints/meta-oniro-blueprints-eddie).
\ No newline at end of file
- If you want to build the Oniro Blueprint for the EDDIE project, and run on an Oniro supported target: follow the instructions in the [EDDIE blueprint git repository](https://gitlab.eclipse.org/eclipse/oniro-blueprints/meta-oniro-blueprints-eddie).
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment