From 982df513b2844dd820489a4a9a0cf30cdc61aec4 Mon Sep 17 00:00:00 2001
From: Claudio Bisegni <Claudio.Bisegni@lnf.infn.it>
Date: Mon, 7 Jan 2019 14:55:14 +0100
Subject: [PATCH] add some minimal documentation

---
 README.md                                     |   1 +
 doc/02_Micro_Unit_Toolkit                     |   0
 doc/config.json                               |  32 +++++++
 doc/control-unit/external_driver.md           |  10 +++
 doc/control-unit/external_unit.md             |   1 +
 doc/control-unit/index.md                     |   4 +
 doc/control-unit/native_driver.md             |   1 +
 doc/index.md                                  |  44 ++++++++++
 doc/logo_chaos_col.png                        | Bin 0 -> 36331 bytes
 doc/mds/index.md                              |   5 ++
 .../http_connection_adapter.md                |   5 ++
 doc/micro-unit-toolkit/index.md               |  80 ++++++++++++++++++
 .../raw_driver_unit_proxy.md                  |   1 +
 13 files changed, 184 insertions(+)
 create mode 100644 doc/02_Micro_Unit_Toolkit
 create mode 100644 doc/config.json
 create mode 100644 doc/control-unit/external_driver.md
 create mode 100644 doc/control-unit/external_unit.md
 create mode 100644 doc/control-unit/index.md
 create mode 100644 doc/control-unit/native_driver.md
 create mode 100644 doc/index.md
 create mode 100644 doc/logo_chaos_col.png
 create mode 100644 doc/mds/index.md
 create mode 100644 doc/micro-unit-toolkit/http_connection_adapter.md
 create mode 100644 doc/micro-unit-toolkit/index.md
 create mode 100644 doc/micro-unit-toolkit/raw_driver_unit_proxy.md

diff --git a/README.md b/README.md
index 8c238b614..25de82c41 100644
--- a/README.md
+++ b/README.md
@@ -22,6 +22,7 @@ Key features and development strategies of !CHAOS are:
 "BSON" stands for "binary JSON" - a binary storage format that is JSON inspired.
 This distribution merely rips it out of the bson repository into its own.
 
+Read the [Documentation](control-unit/index.md)
 
 For further documentation please visit:
 
diff --git a/doc/02_Micro_Unit_Toolkit b/doc/02_Micro_Unit_Toolkit
new file mode 100644
index 000000000..e69de29bb
diff --git a/doc/config.json b/doc/config.json
new file mode 100644
index 000000000..a4205a4a3
--- /dev/null
+++ b/doc/config.json
@@ -0,0 +1,32 @@
+{
+    "title": "!CHAOS Control System",
+    "tagline": "Control system based on Highly Abstracted and Open Structure",
+    "author": "Claudio Bisegni",
+    "image": "logo_chaos_col.png",
+    "ignore": {
+            "files": ["Work_In_Progress.md"],
+            "folders": ["99_Not_Ready"]
+    },
+    "live": {
+        "clean_urls": true
+    },
+    "html": {
+        "theme": "daux-blue",
+        "breadcrumbs": true,
+        "breadcrumb_separator": "Chevrons",
+        "toggle_code": false,
+        "date_modified": true,
+        "float": true,
+        "inherit_index": true,
+        "links": {
+            "INFN Repo": "https://baltig.infn.it/chaos-lnf-control/chaosframework",
+            "INFN Doc Repo":"https://baltig.infn.it:chaos-lnf-control/chaosframework-doc",
+            "Help/Support/Bugs": "https://baltig.infn.it/chaos-lnf-control/chaosframework/issues",
+            "Made by INFN": "http://www.infn.it"
+        },
+        "edit_on": {
+          "name": "Gitlab",
+          "basepath": "https://baltig.infn.it/chaos-lnf-control/chaosframework"
+        }
+    }
+}
diff --git a/doc/control-unit/external_driver.md b/doc/control-unit/external_driver.md
new file mode 100644
index 000000000..f5cd6f84a
--- /dev/null
+++ b/doc/control-unit/external_driver.md
@@ -0,0 +1,10 @@
+# Control Unit External Driver
+
+[TOC]
+
+External driver are like normal control unit driver with the difference that are divide into two separate physical process:
+* *Control Unit Driver*, is the driver that is specified into metadata server and is associated to CU instance when it is loaded
+* *Remote Unit Driver* is the process built on [Micro Unit Toolkit](../02_Micro_Unit_Toolkit)
+
+
+Control unit toolkit uses ***External Unit Layers***(EUL) to provide
diff --git a/doc/control-unit/external_unit.md b/doc/control-unit/external_unit.md
new file mode 100644
index 000000000..1fb7042ae
--- /dev/null
+++ b/doc/control-unit/external_unit.md
@@ -0,0 +1 @@
+#External Unit
diff --git a/doc/control-unit/index.md b/doc/control-unit/index.md
new file mode 100644
index 000000000..f766194ba
--- /dev/null
+++ b/doc/control-unit/index.md
@@ -0,0 +1,4 @@
+# Control Unit Toolkit
+
+The Control Unit Toolkit(CUT) provides a library and interfaces to abstract the device concept.
+Each CU (device) defines a dataset and/or actions/commands that represent respectively the data and the commands that !CHAOS use to handle with control and/or DAQ processes.
diff --git a/doc/control-unit/native_driver.md b/doc/control-unit/native_driver.md
new file mode 100644
index 000000000..148dac300
--- /dev/null
+++ b/doc/control-unit/native_driver.md
@@ -0,0 +1 @@
+# Native Control Unit Driver
diff --git a/doc/index.md b/doc/index.md
new file mode 100644
index 000000000..e72910609
--- /dev/null
+++ b/doc/index.md
@@ -0,0 +1,44 @@
+![logo_chaos_col](logo_chaos_col.png)
+
+[TOC]
+
+# Description
+The !CHAOS project aims to develop a new concept of control system and data acquisition framework by providing, with a high level of abstraction, all the services needed for controlling and managing a large scientific, or non-scientific, infrastructure.
+!CHAOS redefines the Control System paradigm by introducing the new concept of Control Service, i.e. a distributed, scalable provider offering, to a general class of clients, high- performance services such as data sharing, commands dispatching, continuous historical data archiving, configuration tools, middle-layer resource management, etc ...
+
+The key features and development strategies of !CHAOS are: scalability of performances and size:
+* integration of all functionalities
+* abstraction of services, devices and data
+* easy and modular customisation
+* extensive data catching for performance boost high-performance internet software technologies.
+
+# Principal Components
+Here are briefly described the components of the system.
+
+##Control Unit (CU)
+CU interfaces with the !CHAOS hardware by using a driver and developing both control and data acquisition.
+At software level, CU is an exe file built using the !CHAOS libraries, developed in C language.
+see documentation [here](control-unit/index.md)
+
+## Execution Unit (EU)
+performs the feedback control of the CU via a dedicated driver. It captures data from CDS, processes them and sends commands to the feedback of the CU.
+
+## Client toolkits (UI)
+monitors data and shows them to the users. The impact of the UI on the infrastructure is strictly related to:
+the quantity of data to monitor;
+the type of the user interface used (command line, web, ...)
+see documentation [here](micro-unit-toolkit/index.md)
+
+## Metadata Server (MDS)
+is aimed to manage configuration metadata of the other components of the architecture. The required characteristics are:
+High availability
+High scalability is not required since the load of the metadata server is not proportional to the workload of the control system, but is only related to the number of system components.
+
+## CHAOS Data Server (CDS)
+is responsible of data archiving and distribution from and to the Control Units, Execution Units and User Interfaces. Data management includes the following activities:
+data storage reading the latest data available; querying historical data.
+CDS should provide the following characteristics: high performances;
+high scalability; multi-threading.
+
+
+link to specialised pages:
diff --git a/doc/logo_chaos_col.png b/doc/logo_chaos_col.png
new file mode 100644
index 0000000000000000000000000000000000000000..9a88623f04bc9d2e227bd7384911995fc4f1b4fc
GIT binary patch
literal 36331
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
AAOHXW

literal 0
HcmV?d00001

diff --git a/doc/mds/index.md b/doc/mds/index.md
new file mode 100644
index 000000000..52446d65c
--- /dev/null
+++ b/doc/mds/index.md
@@ -0,0 +1,5 @@
+# Metadata service
+
+[TOC]
+
+The ***Metadata Service***(MDS) is a chaos process that act as separation layer from !CHAOS nodes and backend implementations(live cache, database and storage)
diff --git a/doc/micro-unit-toolkit/http_connection_adapter.md b/doc/micro-unit-toolkit/http_connection_adapter.md
new file mode 100644
index 000000000..2be0a8f51
--- /dev/null
+++ b/doc/micro-unit-toolkit/http_connection_adapter.md
@@ -0,0 +1,5 @@
+# HTTP Connection Adapter
+
+[TOC]
+
+The ***HTTP Connection Adapter*** (HCA) implements the EUS protocol using a standard web-socket connection sending and receiving JSON message.
diff --git a/doc/micro-unit-toolkit/index.md b/doc/micro-unit-toolkit/index.md
new file mode 100644
index 000000000..09cf70134
--- /dev/null
+++ b/doc/micro-unit-toolkit/index.md
@@ -0,0 +1,80 @@
+# Micro Unit toolkit
+
+[TOC]
+
+The ***Micro Unit Toolkit***(MUT) provides a way to connect with the external unit layer exposed by control unit toolkit. It is build with very little dependency, most of which are included directly in MUT source as amalgamated source file.
+
+## Why another toolkit
+<p align="justify">
+This new toolkit is created keeping in mind that it should compile on most platform starting from a very old operating system and hardware to the new realtime operation system. In general where !CHAOS framework can't be compiled or run the micro unit toolkit permit extends this limitation. The toolkit is the remote counterpart of the [External Unit Server (EUS)](../control-unit/external_unit.md) hosted by the CUT.
+</p>
+
+## Dependency
+The library that are used by the toolkit are:
+* [jsonccp](https://github.com/open-source-parsers/jsoncpp) used for the data serialization
+* [mongoose](https://github.com/cesanta/mongoose) used for web-socket http management
+
+## Architecture
+<p align="justify">
+The internal MUT architecture is base on two different Layers, on that abstract the connection implementation and one that realize the unit implementation. The toolkit is totally developed to an event based interaction with user. The unit toolkit uses the connection adapter to create a connection to the remote EUS and  exchange data, with the remote counterpart, with the chosen unit proxy.
+</p>
+<p align="justify">
+The Exchanged data consists on message that are exchanged by each endpoint in an asynchronous way. Each one can, spontaneously, send a message to the other counterpart. The semantic of the messages follow the key/value logic. Different serialization can optimize the way to code this semantic[example json, bson, avro , etc...]
+</p>
+
+### Connection Adapter(CAL)
+<p align="center"> <img src="../img/mut_ca.png"></p>
+<p align="justify">
+The abstract adapter implement all primitive communication for send message and request and contains a queue of received spontaneous message from remote endpoint or response to a request response. The subclass need to implement four abstract method:
+</p>
+```cpp
+virtual int connect() = 0;
+virtual void poll(int32_t milliseconds_wait = 100) = 0;
+virtual int sendRawMessage(chaos::micro_unit_toolkit::data::DataPackUniquePtr& message) = 0;
+virtual int close() = 0;
+```
+
+<p align="justify">
+The subclass need to manage by itself the connection state and a queue of message to send, pool is called repetitively to permit to implementation to send data and receive new message. When something has been received, subclass need to call the below superclass method to send new arrival in the queue of the received messages.
+</p>
+```cpp
+void handleReceivedMessage(chaos::micro_unit_toolkit::data::DataPackSharedPtr& received_message);
+```
+<p align="justify">
+The design is very basic and not use any thread or async things, so every additional feature need to be implemented by the user. In this way the adapter can be adapted also into very bare-bone or limited resources hardware. The abstraction itself implements the external unit logic communication layer exposing this public method:
+</p>
+
+```cpp
+const ConnectionState& getConnectionState() const;
+int sendMessage(data::DataPackUniquePtr& message);
+int sendRequest(data::DataPackUniquePtr& message, uint32_t& request_id);
+bool hasMoreMessage();
+chaos::micro_unit_toolkit::data::DataPackSharedPtr getNextMessage();
+bool hasResponse();
+bool hasResponseAvailable(uint32_t request_id);
+```
+<p align="justify">
+Below is shown the flow of a connection by his states:
+<p align="center"> <img src="../img/mut_connection_flow.png"></p>
+</p>
+
+Implemented superclass and protocols:
+* [http connection adapter](./http_connection_adapter.md)
+
+
+#### HTTP Connection Adapter
+<p align="justify">
+The http connection adapter realize a JSON based protocol transmitter over web-socket connection with the remote EUS exposed by control unit.
+</p>
+
+### Unit Proxy(UPL)
+<p align="center"> <img src="../img/mut_up.png"></p>
+<p align="justify">
+the unit proxy uses the connection and abstract data representation to exchange dat with the [EUS](../control-unit/external_unit.md). In other world the type of connection and serialization are managed at connection level. In any way, in whatever serialization will be created, the messages will ever contains a notions of key and value, so the semantic will never changes.   
+</p>
+<p align="justify">
+Unit Proxy is the base class for all implemented unit at this time only the Raw Driver unit is implemented. In future will be implemented the whole Control Unit protocol stack for totally externalize a real CU. Unit proxy realize the base transport layer for unit object, it define the semantic of send and receive message and request.
+</p>
+
+* Message are data that are send o received by each connection endpoint.
+* <p align="justify">Requests are message that need a response by the endpoint that received it. The request with the message also delivers the is of the request. This code need to be send with the message that need to be used as response.</p>
diff --git a/doc/micro-unit-toolkit/raw_driver_unit_proxy.md b/doc/micro-unit-toolkit/raw_driver_unit_proxy.md
new file mode 100644
index 000000000..f2cb60a3e
--- /dev/null
+++ b/doc/micro-unit-toolkit/raw_driver_unit_proxy.md
@@ -0,0 +1 @@
+# Raw Driver Unit
-- 
GitLab