summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--book.json85
-rw-r--r--docs/0-introduction.md44
-rw-r--r--docs/1-afm-daemons.md48
-rw-r--r--docs/_layouts/ebook/page.html36
-rw-r--r--docs/_layouts/ebook/pdf_footer.html13
-rw-r--r--docs/_layouts/ebook/pdf_header.html13
-rw-r--r--docs/_layouts/ebook/summary.html58
-rw-r--r--docs/_layouts/layout.html28
-rwxr-xr-xdocs/cover.jpgbin289438 -> 0 bytes
-rw-r--r--docs/cover_small.jpgbin19752 -> 0 bytes
-rw-r--r--docs/resources/cover.svg212
-rw-r--r--docs/resources/ebook.css386
-rwxr-xr-xdocs/resources/make_cover.sh27
-rwxr-xr-xgendocs.sh85
14 files changed, 47 insertions, 988 deletions
diff --git a/book.json b/book.json
index 49831c1..8212b89 100644
--- a/book.json
+++ b/book.json
@@ -7,88 +7,5 @@
"website": "http://iot.bzh",
"published": "September 2017",
"version": "4.99-EERC1",
-
- "gitbook": "3.2.2",
- "root": "docs",
- "pdf": {
- "fontFamily": "Verdana",
- "fontSize": 12,
- "paperSize": "a4",
- "pageBreaksBefore": "//h:div[@class=\"page-break\"]"
- },
- "styles": {
- "website": "resources/ebook.css",
- "ebook": "resources/ebook.css",
- "pdf": "resources/ebook.css"
- },
-
- "hidepageheaders": [],
- "hidepagefooters": [],
-
- "plugins": [
- "regexplace"
- ],
- "pluginsConfig": {
- "regexplace": {
- "removeFirstPartsInSectionNumber": true,
- "substitutes": [{
- "pattern": "<!-- pagebreak -->",
- "flags": "g",
- "substitute": "<div class=\"page-break\"></div>"
- },
- {
- "pattern": "<!-- clear -->",
- "flags": "g",
- "substitute": "<div class=\"clear\"></div>"
- },
- {
- "pattern": "<!-- nopagebreak -->",
- "flags": "g",
- "substitute": "<div class=\"nopb\">"
- },
- {
- "pattern": "<!-- endnopagebreak -->",
- "flags": "g",
- "substitute": "</div>"
- },
- {
- "pattern": "<!-- note -->",
- "flags": "g",
- "substitute": "<div class=\"note\">"
- },
- {
- "pattern": "<!-- endnote -->",
- "flags": "g",
- "substitute": "</div>"
- },
- {
- "pattern": "!\\[(.*?)\\]\\((.*?)(?:\\s+\"(.*)\")?\\){0,}{caption=1([^\\}]*)}",
- "flags": "gmi",
- "substitute": "<figure id=\"fig_PAGE_LEVEL_._INDEX_\"><img $3 alt=\"$1\" title=\"$1\" href=\"$2\"><figcaption></figcaption></figure>",
- "decode": true
- },
- {
- "pattern": "<img ([^>]*) {0,}\/{0,}> {0,}{caption=1([^\\}]*)}",
- "flags": "g",
- "substitute": "<figure id=\"fig_PAGE_LEVEL_._INDEX_\"><img $2 $1><figcaption></figcaption></figure>",
- "decode": true
- },
- {
- "pattern": "<img (.*)alt=\"([^\"]*)\"(.*) {0,1}\/{0,1}><figcaption></figcaption>",
- "flags": "g",
- "substitute": "<img$1alt=\"$2\"$3><figcaption><span>Picture _PAGE_LEVEL_._INDEX_</span>: $2</figcaption>",
- "store": {
- "substitute": "<a href=\"_PAGE_PATH_#fig_PAGE_LEVEL_._INDEX_\">Pic. _PAGE_LEVEL_._INDEX_</a> <span>$2</span>",
- "variable_name": "pictures"
- }
- },
- {
- "pattern": "<img ([^>]*)> {0,}{style {1,}([^}]*)}",
- "flags": "g",
- "substitute": "<img $1 style=\"$2\">",
- "decode": true
- }
- ]
- }
- }
+ "pdf_filename": "Application-Framework-Service-Guide"
}
diff --git a/docs/0-introduction.md b/docs/0-introduction.md
index e78c091..42324f5 100644
--- a/docs/0-introduction.md
+++ b/docs/0-introduction.md
@@ -2,7 +2,7 @@
## Foreword
-This document describes what we intend to do.
+This document describes what we intend to do.
It may happen that our current implementation and the content of this document differ.
In case of differences, it is assumed that this document is right
@@ -25,7 +25,7 @@ Here is a minimal list of what was needed:
- platform/core/appfw/pkgmgr-info
- platform/core/appfw/slp-pkgmgr
-But this list isn't complete because many dependencies are hidden.
+But this list isn't complete because many dependencies are hidden.
Those hidden dependencies are including some common libraries but also many
tizen specific sub-components:
@@ -37,12 +37,12 @@ tizen specific sub-components:
- vconf-buxton
- ...
-This is an issue because AGL is not expected to be Tizen.
+This is an issue because AGL is not expected to be Tizen.
Taking it would either need to patch it for removing unwanted components or to take all of them.
However, a careful study of the core components of the security framework
of Tizen showed that their dependencies to Tizen are light (and since some
-of our work, there is no more dependency to tizen).
+of our work, there is no more dependency to tizen).
Those components are :
- **cynara**
@@ -50,9 +50,9 @@ Those components are :
- **D-Bus aware of cynara**
Luckily, these core security components of Tizen are provided
-by [meta-intel-iot-security][meta-intel], a set of yocto layers.
+by [meta-intel-iot-security][meta-intel], a set of yocto layers.
These layers were created by Intel to isolate Tizen specific security
-components from the initial port of Tizen to Yocto.
+components from the initial port of Tizen to Yocto.
The 3 layers are providing components for:
- Implementing Smack LSM
@@ -81,13 +81,13 @@ They provides infrastructure for installing, uninstalling,
launching, terminating, pausing and resuming applications in
a multi user secure environment.
-A third component exists in the framework, the binder **afb-daemon**.
+A third component exists in the framework, the binder **afb-daemon**.
The binder provides the easiest way to provide secured API for
-any tier.
+any tier.
Currently, the use of the binder is not absolutely mandatory.
This documentation explains the framework created by IoT.bzh
-by rewriting the Tizen Application Framework.
+by rewriting the Tizen Application Framework.
Be aware of the previous foreword.
<!-- pagebreak -->
@@ -99,7 +99,7 @@ and their interactions going through the following scenario:
- APPLICATION installs an other application and then launch it.
-![AppFW-APP_install_sequences][AppFW-APP_install_sequences]{style width:70%}
+![AppFW-APP_install_sequences][AppFW-APP_install_sequences]{:: style="width:70%;"}
Let follow the sequence of calls:
@@ -140,7 +140,7 @@ Let follow the sequence of calls:
1. **afm-user-daemon** launches the OTHER application.
-This scenario does not cover all the features of the frameworks.
+This scenario does not cover all the features of the frameworks.
Shortly because details will be revealed in the next chapters,
the components are:
@@ -173,7 +173,7 @@ security and to the tools that are provided for implementing that model.
The security model refers to how DAC (Discretionary Access Control),
MAC (Mandatory Access Control) and Capabilities are used by the system
-to ensure security and privacy.
+to ensure security and privacy.
It also includes features of reporting using audit features and by managing
logs and alerts.
@@ -191,31 +191,31 @@ to ensure the security and the privacy of the applications that
it manages.
The application framework must be compliant with the underlying
-security model/framework.
+security model/framework.
But it should hide it to the applications.
## The security framework
-The implemented security model is the security model of Tizen 3.
+The implemented security model is the security model of Tizen 3.
This model is described [here][tizen-secu-3].
The security framework then comes from Tizen 3 but through
-the [meta-intel].
+the [meta-intel].
It includes:
- **Security-Manager**
- **Cynara**
- **D-Bus** compliant to Cynara.
-Two patches are applied to the security-manager.
-The goal of these patches is to remove specific dependencies with Tizen packages that are not needed by AGL.
+Two patches are applied to the security-manager.
+The goal of these patches is to remove specific dependencies with Tizen packages that are not needed by AGL.
None of these patches adds or removes any behaviour.
**In theory, the security framework/model is an implementation details
that should not impact the layers above the application framework**.
The security framework of Tizen provides "nice lad" a valuable component to
-scan log files and analyse auditing.
+scan log files and analyse auditing.
This component is still in development.
## The application framework
@@ -230,12 +230,12 @@ the security framework to the applications.
For the reasons explained in introduction, we did not used the
application framework of Tizen as is but used an adaptation of it.
-The basis is kept identical:
+The basis is kept identical:
-- The applications are distributed in a digitally signed container that must
+- The applications are distributed in a digitally signed container that must
match the specifications of widgets (web applications).
-
-This is described by the technical recommendations [widgets] and
+
+This is described by the technical recommendations [widgets] and
[widgets-digsig] of the W3 consortium.
This model allows:
diff --git a/docs/1-afm-daemons.md b/docs/1-afm-daemons.md
index 11781d5..a02c9f9 100644
--- a/docs/1-afm-daemons.md
+++ b/docs/1-afm-daemons.md
@@ -3,13 +3,13 @@
## Foreword
This document describes application framework daemons
-FCS (Fully Conform to Specification) implementation is still under development.
+FCS (Fully Conform to Specification) implementation is still under development.
It may happen that current implementation somehow diverges with specifications.
## Introduction
Daemons ***afm-user-daemon*** and ***afm-system-daemon*** handle applications
-life.
+life.
Understand that they will manage operations like:
- ***installation***
@@ -28,14 +28,14 @@ depending upon ***D-Bus*** destination.
The figure below summarizes the situation of both **afm-system-daemon** and
**afm-user-daemon** in the system.
-![afm-daemons][afm-daemons]{style width:65%;}
+![afm-daemons][afm-daemons]{:: style="width:65%;"}
## The D-Bus interface
### Overview of the dbus interface
The ***afm daemons*** takes theirs orders from the session instance
-of D-Bus.
+of D-Bus.
The use of D-Bus is great because it allows to implement
discovery and signaling.
@@ -66,15 +66,15 @@ And for ***afm-user-daemon***:
- ***install***
- ***uninstall***
-D-Bus is mainly used for signaling and discovery.
+D-Bus is mainly used for signaling and discovery.
Its optimized typed protocol is not used except for transmitting
only one string in both directions.
The client and the service are using JSON serialization to
-exchange data.
+exchange data.
Signature of any member of the D-Bus interface is
-***string -> string*** for ***JSON -> JSON***.
-This is the normal case, if there is an error, current implementation
+***string -> string*** for ***JSON -> JSON***.
+This is the normal case, if there is an error, current implementation
returns a dbus error that is a string.
Here are examples using *dbus-send*, here to install an application from a
@@ -424,7 +424,7 @@ Use **org.AGL.afm.user.resume** instead.
**Input**: The *runid* (integer) of the running instance inspected.
-**output**: An object describing instance state.
+**output**: An object describing instance state.
It contains:
- the runid (integer)
@@ -458,7 +458,7 @@ the method ***org.AGL.afm.user.state***.
## Starting **afm daemons**
***afm-system-daemon*** and ***afm-user-daemon*** are launched as systemd
-services attached to system and user respectively.
+services attached to system and user respectively.
Normally, service files are locatedat */lib/systemd/system/afm-system-daemon.service* and
*/usr/lib/systemd/user/afm-user-daemon.service*.
@@ -562,12 +562,12 @@ applications and load in memory a list of available applications
accessible by current user.
When **afm-system-daemon** installs or removes an application.
-On success it sends the signal *org.AGL.afm.system.changed*.
+On success it sends the signal *org.AGL.afm.system.changed*.
When receiving such a signal, **afm-user-daemon** rebuilds its
applications list.
**afm-user-daemon** provides the data it collects about
-applications to its clients.
+applications to its clients.
Clients may either request the full list
of available applications or a more specific information about a
given application.
@@ -579,7 +579,7 @@ Systemd builds a secure environment for the application
before starting it.
Once launched, running instances of application receive
-a runid that identify them.
+a runid that identify them.
To make interface with systemd evident, the pid is the runid.
### Managing instances of running applications
@@ -589,7 +589,7 @@ that it launched.
When owning the right permissions, a client can get the list
of running instances and details about a specific
-running instance.
+running instance.
It can also terminate a given application.
### Installing and uninstalling applications
@@ -601,7 +601,7 @@ to **afm-system-daemon**.
## Using ***afm-util***
The command line tool ***afm-util*** uses dbus-send to send
-orders to **afm-user-daemon**.
+orders to **afm-user-daemon**.
This small scripts allows to send command to ***afm-user-daemon*** either
interactively at shell prompt or scriptically.
@@ -611,31 +611,31 @@ The syntax is simple:
Here is the summary of ***afm-util***:
-- **afm-util runnables **:
+- **afm-util runnables **:
list the runnable widgets installed
-- **afm-util install wgt **:
+- **afm-util install wgt **:
install the wgt file
-- **afm-util uninstall id **:
+- **afm-util uninstall id **:
remove the installed widget of id
-- **afm-util detail id **:
+- **afm-util detail id **:
print detail about the installed widget of id
-- **afm-util runners **:
+- **afm-util runners **:
list the running instance
-- **afm-util start id **:
+- **afm-util start id **:
start an instance of the widget of id
-- **afm-util once id **:
+- **afm-util once id **:
run once an instance of the widget of id
-- **afm-util terminate rid **:
+- **afm-util terminate rid **:
terminate the running instance rid
-- **afm-util state rid **:
+- **afm-util state rid **:
get status of the running instance rid
Here is how to list applications using ***afm-util***:
diff --git a/docs/_layouts/ebook/page.html b/docs/_layouts/ebook/page.html
deleted file mode 100644
index bf325e9..0000000
--- a/docs/_layouts/ebook/page.html
+++ /dev/null
@@ -1,36 +0,0 @@
-{% extends "layout.html" %}
-
-{% block title %}{{ page.title }}{% endblock %}
-{% block description %}{{ page.description }}{% endblock %}
-
-{% block style %}
- {### Include theme css before plugins css ###}
- {% if not fileExists(config.styles.print) %}
- {% if options.format %}
- <link rel="stylesheet" href="{{ (options.format + ".css")|resolveAsset }}">
- {% else %}
- <link rel="stylesheet" href="{{ "ebook.css"|resolveAsset }}">
- {% endif %}
- {% endif %}
-
- {{ super() }}
-
- {### Custom stylesheets for the book ###}
-
- {% for type, style in config.styles %}
- {% if fileExists(style) and (type == "ebook" or type == "print" or type == options.format) %}
- <link rel="stylesheet" href="{{ style|resolveFile }}">
- {% endif %}
- {% endfor %}
-{% endblock %}
-
-{% block body %}
-<div class="page">
- {% block page %}
- <h1 class="book-chapter book-chapter-{{ page.depth }}">{{ page.title }}</h1>
- <div class="section">
- {{ page.content|safe }}
- </div>
- {% endblock %}
-</div>
-{% endblock %}
diff --git a/docs/_layouts/ebook/pdf_footer.html b/docs/_layouts/ebook/pdf_footer.html
deleted file mode 100644
index 679e562..0000000
--- a/docs/_layouts/ebook/pdf_footer.html
+++ /dev/null
@@ -1,13 +0,0 @@
-{% extends "./page.html" %}
-{% block body %}
-<div id="pdf-footer" class="pdf-footer">
- <span class="footer-left">Version {{ config.version }}</span>
- <span class="footer-right">{{ page.num }}</span>
- <span class="footer-center">{{ config.published }}</span>
-</div>
-
-<!-- Allow to hide footer for some pages using hidepagefooters config in book.json -->
-<script>
- if (({% for num in config.hidepagefooters %}{{ page.num }} == {{ num }} || {% endfor %}false)) document.getElementById('pdf-footer').style.display = 'none'
-</script>
-{% endblock %}
diff --git a/docs/_layouts/ebook/pdf_header.html b/docs/_layouts/ebook/pdf_header.html
deleted file mode 100644
index ef49641..0000000
--- a/docs/_layouts/ebook/pdf_header.html
+++ /dev/null
@@ -1,13 +0,0 @@
-{% extends "./page.html" %}
-{% block body %}
-<div id="pdf-header" class="pdf-header">
- <span class="header-left">IoT.Bzh</span>
- <span class="header-right">{{ config.title }}</span>
-</div>
-
-<!-- Allow to hide header for some pages using hidepageheaders config in book.json -->
-<script>
- if (({% for num in config.hidepageheaders %}{{ page.num }} == {{ num }} || {% endfor %}false)) document.getElementById('pdf-header').style.display = 'none'
-</script>
-
-{% endblock %} \ No newline at end of file
diff --git a/docs/_layouts/ebook/summary.html b/docs/_layouts/ebook/summary.html
deleted file mode 100644
index be328a4..0000000
--- a/docs/_layouts/ebook/summary.html
+++ /dev/null
@@ -1,58 +0,0 @@
-{% extends "./page.html" %}
-
-{% block title %}{{ "SUMMARY"|t }}{% endblock %}
-
-{% macro articles(_articles) %}
- {% for article in _articles %}
- <li>
- <span class="inner">
- {% if article.path or article.url %}
- {% if article.path %}
- <a href="{{ article.path|contentURL }}{{ article.anchor }}">{{ article.title }}</a>
- {% else %}
- <a target="_blank" href="{{ article.url }}">{{ article.title }}</a>
- {% endif %}
- {% else %}
- <span>{{ article.title }}</span>
- {% endif %}
- {% if 1 %}
- <span class="page">{{ article.level }}</span>
- {% endif %}
- </span>
- {% if article.articles.length > 0 %}
- <ol>
- {{ articles(article.articles) }}
- </ol>
- {% endif %}
- </li>
- {% endfor %}
-{% endmacro %}
-
-{% block page %}
-<div class="section toc">
- <h1>{{ "SUMMARY"|t }}</h1>
- <ol>
- {% for part in summary.parts %}
- {% if part.title %}
- <li class="part-title">
- <h2>{{ part.title }}</h2>
- </li>
- {% endif %}
- {{ articles(part.articles) }}
-
- {% if not loop.last %}
- <li class="divider"></li>
- {% endif %}
- {% endfor %}
-
- {% if glossary.path %}
- <li>
- <span class="inner">
- <a href="{{ ('/' + glossary.path)|contentURL }}">{{ "GLOSSARY"|t }}</a>
- </span>
- </li>
- {% endif %}
- </ol>
-</div>
-{% endblock %}
-
diff --git a/docs/_layouts/layout.html b/docs/_layouts/layout.html
deleted file mode 100644
index 3d5aca6..0000000
--- a/docs/_layouts/layout.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML>
-<html lang="{{ config.language }}" {% if page.dir == "rtl" %}dir="rtl"{% endif %}>
- <head>
- <meta charset="UTF-8">
- <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
- <title>{% block title %}{{ config.title|d("GitBook", true) }}{% endblock %}</title>
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
- <meta name="description" content="{% block description %}{% endblock %}">
- <meta name="generator" content="GitBook {{ gitbook.version }}">
- {% if config.author %}<meta name="author" content="{{ config.author }}">{% endif %}
- {% if config.isbn %}<meta name="identifier" content="{{ config.isbn }}" scheme="ISBN">{% endif %}
- {% block style %}
- {% for resource in plugins.resources.css %}
- {% if resource.url %}
- <link rel="stylesheet" href="{{ resource.url }}">
- {% else %}
- <link rel="stylesheet" href="{{ resource.path|resolveAsset }}">
- {% endif %}
- {% endfor %}
- {% endblock %}
-
- {% block head %}{% endblock %}
- </head>
- <body>
- {% block body %}{% endblock %}
- {% block javascript %}{% endblock %}
- </body>
-</html>
diff --git a/docs/cover.jpg b/docs/cover.jpg
deleted file mode 100755
index 54665f6..0000000
--- a/docs/cover.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/cover_small.jpg b/docs/cover_small.jpg
deleted file mode 100644
index b1f821b..0000000
--- a/docs/cover_small.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/resources/cover.svg b/docs/resources/cover.svg
deleted file mode 100644
index 55509c7..0000000
--- a/docs/resources/cover.svg
+++ /dev/null
@@ -1,212 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="1800"
- height="2360"
- viewBox="0 0 1800 2360"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="cover.svg">
- <defs
- id="defs4175">
- <filter
- style="color-interpolation-filters:sRGB"
- inkscape:label="Drop Shadow"
- id="filter4000">
- <feFlood
- result="flood"
- flood-color="rgb(0,0,0)"
- flood-opacity="0.475"
- id="feFlood4002" />
- <feComposite
- result="composite1"
- operator="in"
- in="flood"
- in2="SourceGraphic"
- id="feComposite4004" />
- <feGaussianBlur
- result="blur"
- stdDeviation="5"
- id="feGaussianBlur4006" />
- <feOffset
- result="offset"
- dy="8"
- dx="8"
- id="feOffset4008" />
- <feComposite
- result="composite2"
- operator="over"
- in="SourceGraphic"
- in2="offset"
- id="feComposite4010" />
- </filter>
- <filter
- style="color-interpolation-filters:sRGB"
- id="filter4000-6"
- inkscape:label="Drop Shadow">
- <feFlood
- id="feFlood4002-4"
- flood-opacity="0.475"
- flood-color="rgb(0,0,0)"
- result="flood" />
- <feComposite
- id="feComposite4004-6"
- in2="SourceGraphic"
- in="flood"
- operator="in"
- result="composite1" />
- <feGaussianBlur
- id="feGaussianBlur4006-2"
- stdDeviation="5"
- result="blur" />
- <feOffset
- id="feOffset4008-8"
- dx="8"
- dy="8"
- result="offset" />
- <feComposite
- id="feComposite4010-9"
- in2="offset"
- in="SourceGraphic"
- operator="over"
- result="composite2" />
- </filter>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="0.24748737"
- inkscape:cx="303.38436"
- inkscape:cy="1108.7164"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:snap-text-baseline="false"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1171"
- inkscape:window-x="1920"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- showguides="false" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,1307.6379)">
- <g
- id="iotbzh-logo"
- transform="matrix(2.3917866,0,0,2.3917866,216.6324,-1946.4393)"
- inkscape:export-filename="/home/sdx/Pictures/Logo/logo_iot_bzh_100dpi.png"
- inkscape:export-xdpi="100.22011"
- inkscape:export-ydpi="100.22011"
- style="display:inline;filter:url(#filter4000-6)">
- <text
- sodipodi:linespacing="125%"
- id="text3557-5-3-7-0-7-3"
- y="519.50671"
- x="27.886671"
- style="font-style:normal;font-weight:normal;font-size:97.09867096px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none"
- xml:space="preserve"><tspan
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:97.09867096px;line-height:125%;font-family:FreeEuro;-inkscape-font-specification:'FreeEuro Bold';text-align:start;writing-mode:lr-tb;text-anchor:start"
- y="519.50671"
- x="27.886671"
- id="tspan3559-5-4-1-5-0-6"
- sodipodi:role="line">IOT</tspan></text>
- <path
- inkscape:connector-curvature="0"
- d="m 286.73007,473.23356 c 28.21686,16.29102 28.75566,58.73779 0.99693,78.53831 -7.67688,5.47598 -8.77935,4.91028 -1.99529,-1.0238 17.47377,-15.28453 17.98492,-42.17775 1.08522,-57.09786 l -3.91266,-3.45435 0.72312,-3.71053 c 0.39771,-2.04076 0.5997,-5.73115 0.44885,-8.20083 -0.33876,-5.54623 0.15803,-6.49185 2.65383,-5.05094 z m -64.76568,11.40332 c 7.06047,-7.74198 18.64659,-14.16089 29.04027,-16.08874 l 6.87489,-1.27521 0.87404,2.89709 c 0.4807,1.59343 0.67439,5.2245 0.43037,8.06906 l -0.44364,5.17195 -6.13887,1.6918 c -10.91241,3.00731 -20.4022,10.85909 -25.4533,21.05979 l -2.41633,4.87984 -2.74281,-0.41238 c -5.14252,-0.77316 -12.72985,-3.97645 -12.79123,-5.40033 -0.092,-2.13451 8.34659,-15.74625 12.76661,-20.59287 z m 33.20546,36.39493 c -28.21687,16.29101 -65.24624,-4.46574 -68.51461,-38.40577 -0.9039,-9.38637 0.13723,-10.0583 1.88428,-1.21608 4.49989,22.77499 27.53453,36.66428 48.90556,29.48876 l 4.94788,-1.66128 2.85184,2.48149 c 1.56852,1.36481 4.66349,3.38493 6.87772,4.48914 4.97257,2.47973 5.54308,3.38282 3.04733,4.82374 z m 22.50729,-61.79039 c 3.17451,9.98553 2.94038,23.22889 -0.58688,33.19399 l -2.33309,6.59143 -2.94597,-0.69161 c -1.6203,-0.38041 -4.86173,-2.02821 -7.2032,-3.6618 l -4.25721,-2.97018 1.60429,-6.16234 c 2.85178,-10.95404 0.79685,-23.09833 -5.51167,-32.57307 l -3.01788,-4.53253 1.72854,-2.16916 c 3.24083,-4.06698 9.80863,-9.03614 11.07242,-8.37738 1.89457,0.98756 9.46336,15.1015 11.45065,21.35265 z m -48.80223,10.31437 c 0,-32.58201 36.49058,-54.27201 67.51771,-40.1325 8.58077,3.9104 8.6421,5.148 0.11108,2.23988 -21.97368,-7.49048 -45.51946,5.51348 -49.99082,27.6091 l -1.03521,5.11561 -3.57498,1.22902 c -1.96621,0.67596 -5.26316,2.34622 -7.32655,3.71171 -4.63379,3.06649 -5.70115,3.10904 -5.70115,0.22718 z m 42.25842,50.3871 c -10.23499,-2.24356 -21.58699,-9.06801 -28.45341,-17.10525 l -4.5418,-5.31622 2.07194,-2.20549 c 1.13957,-1.21302 4.18733,-3.19628 6.77282,-4.40726 l 4.70085,-2.20176 4.53458,4.47053 c 8.06061,7.94674 19.60535,12.23927 30.96496,11.51329 l 5.43422,-0.34731 1.01427,2.58154 c 1.90169,4.84014 2.92124,13.01261 1.71883,13.77769 -1.80254,1.14695 -17.80995,0.64475 -24.21726,-0.75976 z"
- style="display:inline;fill:#5a2ca0"
- id="path3415-4-2-2-5-0-3-7-4-4-1-5" />
- <text
- sodipodi:linespacing="125%"
- id="text3557-5-3-7-46-7-3-7"
- y="519.50671"
- x="317.95816"
- style="font-style:normal;font-weight:normal;font-size:97.09867096px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none"
- xml:space="preserve"><tspan
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:97.09867096px;line-height:125%;font-family:FreeEuro;-inkscape-font-specification:'FreeEuro Bold';text-align:start;writing-mode:lr-tb;text-anchor:start"
- y="519.50671"
- x="317.95816"
- id="tspan3559-5-4-1-90-0-2-9"
- sodipodi:role="line">BZH</tspan></text>
- </g>
- <flowRoot
- xml:space="preserve"
- id="root-title"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- transform="matrix(2.3469382,0,0,2.3469382,464.13874,-1125.3671)"><flowRegion
- id="flowRegion4303"><rect
- id="rect4305"
- width="679.99994"
- height="141.42853"
- x="-154.28572"
- y="359.50504"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1" /></flowRegion><flowPara
- id="title"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:87.5px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1">{title}</flowPara></flowRoot> <flowRoot
- xml:space="preserve"
- id="root-subtitle"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- transform="matrix(1.8523279,0,0,1.8523279,553.97647,-524.84064)"><flowRegion
- id="flowRegion4303-6"><rect
- id="rect4305-0"
- width="852.32806"
- height="154.51677"
- x="-239.3591"
- y="346.41681"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1" /></flowRegion><flowPara
- id="subtitle"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:62.5px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1">{subtitle}</flowPara></flowRoot> <flowRoot
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:173.28189087px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="root-version"
- xml:space="preserve"
- transform="translate(-2.0185547,164)"><flowRegion
- id="flowRegion4169"><rect
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:173.28189087px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1"
- y="501.68909"
- x="343.32947"
- height="99.591171"
- width="1117.3768"
- id="rect4171" /></flowRegion><flowPara
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:68.75px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1"
- id="version">{version}</flowPara></flowRoot> <flowRoot
- xml:space="preserve"
- id="root-date"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- transform="matrix(4.3320472,0,0,4.3320472,1023.8272,-788.11995)"><flowRegion
- id="flowRegion4303-6-5"><rect
- id="rect4305-0-8"
- width="251.40364"
- height="23.922138"
- x="-154.28572"
- y="359.50504"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1" /></flowRegion><flowPara
- id="date"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:15.87009525px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Bold';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1">{date}</flowPara></flowRoot> </g>
-</svg>
diff --git a/docs/resources/ebook.css b/docs/resources/ebook.css
deleted file mode 100644
index 39f126c..0000000
--- a/docs/resources/ebook.css
+++ /dev/null
@@ -1,386 +0,0 @@
-/* IoT.Bzh theaming */
-
-h1 {
- color: #330066;
- border-bottom: 2px solid #330066;
-}
-
-h2 {
- color: #330066;
-}
-
-h3 {
- color: #330066;
-}
-
-h4 {
- color: #330066;
-}
-
-
-/* GENERAL ELEMENTS */
-
-/* clear both */
-
-.clear {
- clear: both;
-}
-
-.section> :last-child {
- margin-bottom: 0 !important;
-}
-
-.section> :first-child {
- margin-top: 0 !important;
-}
-
-
-/* SPECIAL ELEMENTS */
-
-
-/* page break always after element on pdf/print definition */
-
-div.pagebreak {
- page-break-after: always;
-}
-
-
-/* no page break inside element on pdf/print definition */
-
-div.nopb {
- page-break-inside: avoid !important;
- margin: 4px 0 4px 0;
-}
-
-
-/* note blocks */
-
-div.note {
- background: #FCF8E3 none repeat scroll 0% 0%;
- color: #8A6D3B;
- padding: 15px;
- margin-bottom: 10px;
- border-bottom: 5px solid #DDD;
- border-color: #FAEBCC;
- page-break-inside: avoid;
-}
-
-div.note p {
- padding-bottom: 0;
- margin-bottom: 0;
-}
-
-
-/* images, figures and captions */
-
-p img {
- /* center all images */
- display: block;
- margin: 0 auto;
- padding: 10px 0;
-}
-
-figure {
- margin: 1.0em 0px;
- padding: 10px 0;
- text-align: center;
- page-break-inside: avoid;
- display: block;
-}
-
-figure img {
- display: block;
- margin: 0 auto;
-}
-
-figcaption {
- clear: left;
- margin: 1.0em 0 0 0;
- text-align: center;
- font-style: italic;
- line-height: 1.5em;
- font-size: 80%;
- color: #666;
- display: block;
-}
-
-.page .section p img {
- margin-top: 10px;
-}
-
-
-/* ul, ol list margin fix */
-
-.page .section ol,
-.page .section ul {
- margin-bottom: 10px;
-}
-
-
-/* blockquotes */
-
-.page .section blockquote {
- margin: 0 0 0 5%;
- font-style: italic;
-}
-
-
-/* PAGE SPECIFIC */
-
-
-/* set summary page to right side of the paper */
-
-.page .toc h1 {
- page-break-before: right;
-}
-
-.page .section.toc {
- page-break-inside: always;
-}
-
-/* table headers */
-
-div#README\.md table {
- margin-top: 30px;
- font-size: 95%;
-}
-
-div#README\.md table thead {
- display: none;
-}
-
-
-
-/* CITATION AND IMAGES */
-
-
-/* math image styles */
-
-.page .section p img.svg,
-.page .section p img.png {
- margin-top: 0px;
- margin-bottom: -2px;
-}
-
-.page .section p img.math {
- vertical-align: middle;
- height: auto;
- width: auto;
- margin-top: -4px;
- max-height: 15px;
-}
-
-.page .section p img.math.line1 {
- margin-top: -7px;
- max-height: 19px;
-}
-
-.page .section p img.math.line2 {
- margin-top: -1px;
- max-height: 30px;
-}
-
-
-/* credits page */
-
-.page .section ul.pictures {
- margin-left: -30px;
-}
-
-.page .section ul.pictures li {
- list-style: outside none none;
-}
-
-.page .section ul.pictures li a {
- float: left;
-}
-
-.page .section ul.pictures li span {
- display: block;
- margin-left: 100px;
-}
-
-
-
-/* sub and super script */
-
-.page .section sub {
- font-size: 80%;
- margin-left: 1px;
-}
-
-
-/* citations and references */
-
-.page .section sup {
- margin-left: -1px;
- margin-right: 2px;
- font-size: 80%;
-}
-
-.page .section sup:before {
- content: " ";
-}
-
-.page .section ul.citations,
-.page .section ul.references {
- margin-left: -30px;
-}
-
-
-.page .section ul.citations li:nth-child(1) {
- margin-top: 20px;
- padding-top: 20px;
- border-top: 1px solid #BBB;
-}
-
-.page .section ul.citations li,
-.page .section ul.references li {
- list-style: outside none none;
-}
-
-.page .section ul.citations li {
- font-size: 80%;
-}
-
-.page .section ul.citations li>span:nth-child(1),
-.page .section ul.references li>span:nth-child(1) {
- display: block;
- float: left;
- text-align: left;
- width: 70px
-}
-
-.page .section ul.citations li>span:nth-child(1) {
- width: 50px
-}
-
-.page .section ul.references li div {
- margin-left: 70px;
-}
-
-.page .section ul.citations li div {
- margin-left: 50px;
-}
-
-.page .section a[href="#"],
-.page .section a[href="#"]:link,
-.page .section a[href="#"]:visited,
-.page .section a[href="#"]:hover,
-.page .section a[href="#"]:focus {
- text-decoration: none;
- color: inherit;
- cursor: text;
- font-style: italic;
-}
-
-
-/* self referential footnotes */
-
-.page .section div[type="selfref"] a[href="#"],
-.page .section div[type="selfref"] a[href="#"]:link,
-.page .section div[type="selfref"] a[href="#"]:visited,
-.page .section div[type="selfref"] a[href="#"]:hover,
-.page .section div[type="selfref"] a[href="#"]:focus {
- font-style: normal;
-}
-
-.page .section div[type="selfref"] span:nth-child(1) {
- display: none;
-}
-
-
-/* page break always after element on pdf/print definition */
-
-div.page-break {
- page-break-inside: always;
-}
-
-div.page-break:before {
- content: ' ';
-}
-
-
-/* no page break inside element on pdf/print definition */
-
-div.nopb {
- page-break-inside: avoid;
-}
-
-/* justify text */
-p {
- text-align: justify;
-}
-
-/* page header and footer */
-
-.pdf-footer,
-.pdf-header {
- margin-top: 20px;
- color: #aaa;
-}
-
-.pdf-header .header-left {
- float: left;
- margin-left: 2em;
- margin-right: auto;
-}
-
-.pdf-header .header-right {
- display: table;
- margin-left: auto;
- margin-right: 2em;
-}
-
-.pdf-footer .sub {
- padding-top: 8px;
- font-size: 70%;
-}
-
-.pdf-header .sub {
- padding-top: 2px;
- font-size: 70%;
-}
-
-.pdf-footer {
- padding-top: 10px;
- border-top: 1px solid #eee;
-}
-
-.pdf-footer .footer-left {
- float: left;
- margin-left: 2em;
- margin-right: auto;
-}
-
-.pdf-footer .footer-center {
- display: table;
- margin-left: auto;
- margin-right: auto;
-}
-
-.pdf-footer .footer-right {
- float: right;
- margin-left: auto;
- margin-right: 2em;
-}
-
-.pdf-header {
- padding-bottom: 10px;
- border-bottom: 1px solid #eee;
-}
-
-.pdf-header .header-pages-count {
- float: right;
- text-align: right;
-}
-
-.pdf-header .header-pages-count a,
-.pdf-header .header-pages-count a:visited,
-.pdf-header .header-pages-count a:active,
-.pdf-header .header-pages-count a:focus,
-.pdf-header .header-pages-count a:link {
- text-decoration: none;
- color: #aaa;
- cursor: text;
-}
diff --git a/docs/resources/make_cover.sh b/docs/resources/make_cover.sh
deleted file mode 100755
index 1026ecb..0000000
--- a/docs/resources/make_cover.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-DOCS_DIR=$(cd $(dirname $0)/.. && pwd)
-BOOKFILE=$DOCS_DIR/../book.json
-
-TITLE=$(grep '"title":' $BOOKFILE | cut -d'"' -f 4)
-SUBTITLE=$(grep '"subtitle":' $BOOKFILE | cut -d'"' -f 4)
-VERSION="Version $(grep '"version":' $BOOKFILE | cut -d'"' -f 4)"
-DATE=$(grep '"published":' $BOOKFILE | cut -d'"' -f 4)
-
-[ -z "$TITLE" ] && { echo "Error TITLE not set!" ; exit 1; }
-[ -z "$VERSION" ] && { echo "Error VERSION not set!" ; exit 1; }
-[ -z "$DATE" ] && { echo "Error DATE not set!" ; exit 1; }
-
-
-cat $(dirname $0)/cover.svg | sed -e "s/{title}/$TITLE/g" \
- -e "s/font-size:87.5px/font-size:54px/g" \
- -e "s/{subtitle}/$SUBTITLE/g" \
- -e "s/font-size:62.5px/font-size:40px/g" \
- -e "s/{version}/$VERSION/g" \
- -e "s/{date}/$DATE/g" \
- > /tmp/cover.svg
-
-# use imagemagick convert tool (cover size must be 1800x2360)
-convert -resize "1600x2160!" -border 100 -bordercolor white -background white \
- -flatten -quality 100 /tmp/cover.svg $DOCS_DIR/cover.jpg
-
-convert -resize "200x262!" $DOCS_DIR/cover.jpg $DOCS_DIR/cover_small.jpg
diff --git a/gendocs.sh b/gendocs.sh
deleted file mode 100755
index f84e116..0000000
--- a/gendocs.sh
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/bin/bash
-
-OUTFILENAME="Application-Framework-Service-Guide"
-
-SCRIPT=$(basename $BASH_SOURCE)
-
-VERSION=$(grep '"version":' $(dirname $BASH_SOURCE)/book.json | cut -d'"' -f 4)
-[ "$VERSION" != "" ] && OUTFILENAME="${OUTFILENAME}_${VERSION}"
-
-
-function usage() {
- cat <<EOF >&2
-Usage: $SCRIPT [options] [pdf|serve|doxygen]
-
-Options:
- --debug
- enable debug when generating pdf or html documentation
- -d|--dry
- dry run
- -h|--help
- get this help
-
-Example:
- $SCRIPT pdf
-
-EOF
- exit ${1:-1}
-}
-
-function info() {
- echo "$@" >&2
-}
-
-function error() {
- info "error:" "$@"
- exit 1
-}
-
-#default values
-DEBUG_FLAG=""
-DRY=""
-DO_ACTION=""
-OUT_DIR=./build
-
-[[ $? != 0 ]] && usage
-while [ $# -gt 0 ]; do
- case "$1" in
- --debug) DEBUG_FLAG="--log=debug --debug";;
- -d|--dry) DRY=echo;;
- -h|--help) usage 0;;
- pdf | serve | doxygen) DO_ACTION=$1;;
- --) break;;
- esac
- shift
-done
-
-cd $(dirname $0)
-ROOTDIR=`pwd -P`
-
-# Create out dir if needed
-[ -d $OUT_DIR ] || mkdir -p $OUT_DIR
-
-if [ "$DO_ACTION" = "pdf" -o "$DO_ACTION" = "serve" ]; then
- GITBOOK=`which gitbook` || error "You must install gitbook first, using: sudo npm install -g gitbook-cli"
- EBCONV=`which ebook-convert` || error "You must install calibre first, using: 'sudo apt install calibre' or refer to https://calibre-ebook.com/download"
-
- if [ "$DO_ACTION" = "pdf" ]; then
-
- # Update cover when book.json has been changed
- [[ $ROOTDIR/book.json -nt $ROOTDIR/docs/cover.jpg ]] && { echo "Update cover files"; $ROOTDIR/docs/resources/make_cover.sh || exit 1; }
-
- OUTFILE=$OUT_DIR/$OUTFILENAME.pdf
- $DRY $GITBOOK pdf $ROOTDIR $OUTFILE $DEBUG_FLAG
- [ "$?" = "0" ] && echo "PDF has been successfully generated in $OUTFILE"
- else
- $DRY $GITBOOK serve $DEBUG_FLAG
- fi
-
-elif [ "$DO_ACTION" = "doxygen" ]; then
- $DRY cd $OUT_DIR && cmake .. && make doxygen $ROOTDIR/Doxyfile
-
-else
- echo "Unknown action !"
- usage
-fi