diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-09-19 16:43:41 +0200 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-12-14 11:00:25 +0100 |
commit | e11314b2e9fef34f569bb7b042b432aed661cdc0 (patch) | |
tree | aaaae4d5820238e53a555f290a0a1ea8faa28b9e /docs/part-1/2-Configuration.md | |
parent | f4fba8a2744991ff8c5cb8af4a67c7d9456f1057 (diff) |
Added documentation
Change-Id: Iaa6bb0470652d3d0dc97c6320dbf210567ccec80
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'docs/part-1/2-Configuration.md')
-rw-r--r-- | docs/part-1/2-Configuration.md | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/docs/part-1/2-Configuration.md b/docs/part-1/2-Configuration.md new file mode 100644 index 0000000..a68fd62 --- /dev/null +++ b/docs/part-1/2-Configuration.md @@ -0,0 +1,75 @@ +# Configuration + +Configuration defines all in **Signal composer** each signals and sources has to be defined in it. +At start, configuration will be searched in default binding configuration directory which should be +_/var/lib/afm/applications/signal-composer/1.0/etc/_. Binding search for a file name as _init-daemon*.json_. Others files could be used to split sections and don't have 1 big fat definitions file. + +Saying that you have 4 sections to define: + +- **metadata**: Main parts and the only one that can't be in a separates configuration. This must appears in the main configuration file. +- **plugins** (optionnal): Declare plugins that will be used by *sources* and *signals* for the subscription and composition. +- **sources**: Declare **low level** signals sources (eg. low-can, gps, mraa, ...). +- **signals**: Declare signals, virtuals and raw. + +## Metadata + +Here we define some metadata about **signal composer** binding. Fields to configure +are : + +- **label**: self-explanatory +- **version** (optionnal): self-explanatory +- **api**: name that the binding will be initialized to and later be accessible by **Application Framework** +- **info** (optionnal): self-explanatory +- **require** (optionnal): list of required external apis. +- **files** (optionnal): list of additionnals files. **ONLY NAME** or part of it without extension. These + files are loaded to find sections: *plugins*, *sources* and *signals*. + +## Plugins + +This section is the only which is optionnal, it is needed if you develop specifics C/C++ plugins +to be used with signal-composer. LUA and API consumption does not need plugins. + +Default path to search for a plugin is in the binding library directory in a subdirectory _plugins_ +_/var/lib/afm/applications/signal-composer/1.0/lib/plugins_. Else you could use the environment variable _CONTROL_PLUGIN_PATH_ with a semicolon separated list of +directory. + +Fields are: + +- **label**: Define the plugin name. This is that label that will be used on **sources** and + **signals** callbacks. +- **version** (optionnal): self-explanatory +- **info** (optionnal): self-explanatory +- **basename**: shared library file name **without** the extension. + +## Sources + +A source is a **low level** API that will be consume by the **signal composer** +to be able to expose those signals with additionnals treatments, filtering, +thinning,... and create new virtuals signals composed with basic raw signals. + +A source is defined with following fields: + +- **api**: Name of the source API. +- **info** (optionnal): self-explanatory +- **init** (optionnal): an **action** to take to initialize a source. May you have to call a verb from that API, of create a files etc. +- **getSignals** (optionnal); an **action** to take to get signals from that + source. These callback will be used for each signals defined later in the **signals** section. Dedicated arguments for each signal could be defined in + **signals**. + +## Signals + +A signal definition could be either a **raw** one or a **virtual** one. A **virtual signal** is a set of existing **raw signals** associated to an **action** +on reception which will compute the value of the signal. + +- **id**: Unique identifier used inside **signal composer**, used to compose virtual signals. +- **event**: specify a **raw signal** coming from **low level** sources. Couldn't + be used with **depends** field, only one of them is possible. +- **depends**: specify others signals **id** that compose it (eg: heading is + composed with longitude+latitude signals.). Couldn't be used with **event** field + at same time. +- **unit** (optionnal): Unit used to exprime the signal +- **frequency** (optionnal): Frequency maximum at which the signal could be + requested or sent. This is a thinning made at **high level** so not best suited for performance. Used **low level** native filtering capabilities when possible. +- **getSignalsArgs**: a JSON object used at subscription time. Meant to enabled + filtering capabilities at subscription and to be able to customize in general a subcription request by signal if needed. +- **onReceived**: an **action** to take when this signal is received! |