summaryrefslogtreecommitdiff
path: root/SDL_Core/doc/doxygen
diff options
context:
space:
mode:
Diffstat (limited to 'SDL_Core/doc/doxygen')
-rw-r--r--SDL_Core/doc/doxygen/components/AppMgr/index.txt5
-rw-r--r--SDL_Core/doc/doxygen/components/HMI/index.txt5
-rw-r--r--SDL_Core/doc/doxygen/components/JSONHandler/index.txt5
-rw-r--r--SDL_Core/doc/doxygen/components/ProtocolHandler/index.txt5
-rw-r--r--SDL_Core/doc/doxygen/components/TransportManager/Client Specification/ConnectionManagement.txt11
-rw-r--r--SDL_Core/doc/doxygen/components/TransportManager/Client Specification/DataTransfer.txt11
-rw-r--r--SDL_Core/doc/doxygen/components/TransportManager/Client Specification/DeviceManagement.txt14
-rw-r--r--SDL_Core/doc/doxygen/components/TransportManager/Client Specification/index.txt18
-rw-r--r--SDL_Core/doc/doxygen/components/TransportManager/Internal Design/Device Adapters/BluetoothAdapter.txt19
-rw-r--r--SDL_Core/doc/doxygen/components/TransportManager/Internal Design/Device Adapters/TCPAdapter.txt20
-rw-r--r--SDL_Core/doc/doxygen/components/TransportManager/Internal Design/Device Adapters/index.txt89
-rw-r--r--SDL_Core/doc/doxygen/components/TransportManager/Internal Design/Interaction.txt7
-rw-r--r--SDL_Core/doc/doxygen/components/TransportManager/Internal Design/MultiThreading.txt9
-rw-r--r--SDL_Core/doc/doxygen/components/TransportManager/Internal Design/TrasportManager.txt15
-rw-r--r--SDL_Core/doc/doxygen/components/TransportManager/Internal Design/index.txt15
-rw-r--r--SDL_Core/doc/doxygen/components/TransportManager/Use Cases/UseCase1.txt74
-rw-r--r--SDL_Core/doc/doxygen/components/TransportManager/Use Cases/UseCase2.txt96
-rw-r--r--SDL_Core/doc/doxygen/components/TransportManager/Use Cases/UseCase3.txt131
-rw-r--r--SDL_Core/doc/doxygen/components/TransportManager/Use Cases/index.txt11
-rw-r--r--SDL_Core/doc/doxygen/components/TransportManager/index.txt9
-rw-r--r--SDL_Core/doc/doxygen/components/index.txt9
-rw-r--r--SDL_Core/doc/doxygen/info.txt5
-rw-r--r--SDL_Core/doc/doxygen/mainpage.txt8
23 files changed, 591 insertions, 0 deletions
diff --git a/SDL_Core/doc/doxygen/components/AppMgr/index.txt b/SDL_Core/doc/doxygen/components/AppMgr/index.txt
new file mode 100644
index 000000000..17584b09e
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/AppMgr/index.txt
@@ -0,0 +1,5 @@
+/*! \page components_appmgr App Manager
+
+Here will be information about App Manager component
+
+*/ \ No newline at end of file
diff --git a/SDL_Core/doc/doxygen/components/HMI/index.txt b/SDL_Core/doc/doxygen/components/HMI/index.txt
new file mode 100644
index 000000000..361763118
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/HMI/index.txt
@@ -0,0 +1,5 @@
+/*! \page components_hmi HMI
+
+Here will be information about HMI component
+
+*/ \ No newline at end of file
diff --git a/SDL_Core/doc/doxygen/components/JSONHandler/index.txt b/SDL_Core/doc/doxygen/components/JSONHandler/index.txt
new file mode 100644
index 000000000..b5ae3d5c9
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/JSONHandler/index.txt
@@ -0,0 +1,5 @@
+/*! \page components_jsonhandler JSON Handler
+
+Here will be information about JSON Handler component
+
+*/ \ No newline at end of file
diff --git a/SDL_Core/doc/doxygen/components/ProtocolHandler/index.txt b/SDL_Core/doc/doxygen/components/ProtocolHandler/index.txt
new file mode 100644
index 000000000..c5b5ceb79
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/ProtocolHandler/index.txt
@@ -0,0 +1,5 @@
+/*! \page components_protocolhandler Protocol Handler
+
+Here will be information about Protocol Handler component
+
+*/ \ No newline at end of file
diff --git a/SDL_Core/doc/doxygen/components/TransportManager/Client Specification/ConnectionManagement.txt b/SDL_Core/doc/doxygen/components/TransportManager/Client Specification/ConnectionManagement.txt
new file mode 100644
index 000000000..54383c80f
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/TransportManager/Client Specification/ConnectionManagement.txt
@@ -0,0 +1,11 @@
+/** @page components_transportmanager_client_connection_management Connection Management
+ *
+ * As all requests to TransportManager are asynchronous, client must implement NsAppLink::NsTransportManager::ITransportManagerDeviceListener
+ * interface and add itself as a device listener with NsAppLink::NsTransportManager::ITransportManager::addDeviceListener()
+ * in order to receive notifications.
+ * To connect remote device client must use NsAppLink::NsTransportManager::ITransportManager::connectDevice(). It will initiate connections to all
+ * applications running on remove device. For TCP device this call has no effect as TCP connections are initiated by remote devices.
+ * Client will be notified about each connected application with NsAppLink::NsTransportManager::ITransportManagerDeviceListener::onApplicationConnected().
+ * To disconnect all applications running on remote device client must use NsAppLink::NsTransportManager::ITransportManager::disconnectDevice().
+ * Client will be notified about each disconnected application with NsAppLink::NsTransportManager::ITransportManagerDeviceListener::onApplicationDisconnected().
+ */
diff --git a/SDL_Core/doc/doxygen/components/TransportManager/Client Specification/DataTransfer.txt b/SDL_Core/doc/doxygen/components/TransportManager/Client Specification/DataTransfer.txt
new file mode 100644
index 000000000..fb69fec60
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/TransportManager/Client Specification/DataTransfer.txt
@@ -0,0 +1,11 @@
+/** @page components_transportmanager_client_data_transfer Data Transfer
+ *
+ * As all requests to TransportManager are asynchronous, client must implement NsAppLink::NsTransportManager::ITransportManagerDataListener
+ * interface and add itself as a data listener with NsAppLink::NsTransportManager::ITransportManager::addDataListener()
+ * in order to receive notifications.
+ * To send frame to remote device client must use NsAppLink::NsTransportManager::ITransportManager::sendFrame() poviding connection handle,
+ * frame data, data size and user data. User data is an integer that is assigned to a frame and will be sent back to client when sending of frame
+ * will be completed. Client may use this data to identify frame when send result will be reported. When sending of frame is completed
+ * client is notified via NsAppLink::NsTransportManager::ITransportManagerDataListener::onFrameSendCompleted(). When frame is received from a remote
+ * device client is notified via NsAppLink::NsTransportManager::ITransportManagerDataListener::onFrameReceived().
+ */
diff --git a/SDL_Core/doc/doxygen/components/TransportManager/Client Specification/DeviceManagement.txt b/SDL_Core/doc/doxygen/components/TransportManager/Client Specification/DeviceManagement.txt
new file mode 100644
index 000000000..6aac3119a
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/TransportManager/Client Specification/DeviceManagement.txt
@@ -0,0 +1,14 @@
+/** @page components_transportmanager_client_device_management Device Management
+ *
+ * As all requests to TransportManager are asynchronous, client must implement NsAppLink::NsTransportManager::ITransportManagerDeviceListener
+ * interface and add itself as a device listener with NsAppLink::NsTransportManager::ITransportManager::addDeviceListener()
+ * in order to receive notifications.
+ * Client of TransportManager may use NsAppLink::NsTransportManager::ITransportManager::scanForNewDevices()
+ * to initiate device scan on all device adapters that support this feature. In order to get list of available
+ * devices client must override NsAppLink::NsTransportManager::ITransportManagerDeviceListener::onDeviceListUpdated().
+ * Each device adapter will perform scan independently from other device adapters and device list might be updated
+ * several times (after each adapter that supports scanning finishes scanning operation). Device list might also be
+ * updated without device scan request, e.g. if new client connects via TCP this device will be added to device list
+ * and update notification will be sent to client. In any of these cases client will be provided with the full
+ * device list from all device adapters in every notification.
+ */
diff --git a/SDL_Core/doc/doxygen/components/TransportManager/Client Specification/index.txt b/SDL_Core/doc/doxygen/components/TransportManager/Client Specification/index.txt
new file mode 100644
index 000000000..d047dbbbd
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/TransportManager/Client Specification/index.txt
@@ -0,0 +1,18 @@
+/*! \page components_transportmanager_client Transport Manager Client Specification
+
+This chapter describes details of correct use of Transport Manager on the client side. In other words this chapter can be called "How to create effective and safe client of Transport Manager".
+Transport Manager defines set of asynchronous requests (means that operations are non-blocking in the calling thread) and provides two different interfaces to monitor asynchronous responses and notifications about data update.
+
+Clients of Transport Manager should use NsAppLink::NsTransportManager::ITransportManager interface to initiate any request to the component.
+Also Transport Manager provides two different interfaces:
+
+1) NsAppLink::NsTransportManager::ITransportManagerDataListener. Client can implement this interface if it needs information about data frame send/receive.
+
+2) NsAppLink::NsTransportManager::ITransportManagerDeviceListener. Client can implement this interface if it needs information about updates of devices available for communication and current client applications status.
+
+For more information about typical use of Transport Manager please read the following topics:
+ - \subpage components_transportmanager_client_device_management "Device Management"
+ - \subpage components_transportmanager_client_connection_management "Connection Management"
+ - \subpage components_transportmanager_client_data_transfer "Data Transfer"
+
+*/
diff --git a/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/Device Adapters/BluetoothAdapter.txt b/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/Device Adapters/BluetoothAdapter.txt
new file mode 100644
index 000000000..12dfb52e1
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/Device Adapters/BluetoothAdapter.txt
@@ -0,0 +1,19 @@
+/** @page components_transportmanager_internal_design_device_adapters_bluetooth_adapter Bluetooth Adapter
+ *
+ * Bluetooth adapter handles communication with external devices via bluetooth. It is implemented in
+ * NsAppLink::NsTransportManager::CBluetoothAdapter.
+ *
+ * @section components_transportmanager_internal_design_device_adapters_bluetooth_adapter_discovery Device discovery
+ *
+ * When requested by a call to NsAppLink::NsTransportManager::CDeviceAdapter::scanForNewDevices() bluetooth adapter
+ * searches for bluetooth devices. For each found device it runs SDP query for service with AppLink UUID
+ * (936DA01F-9ABD-4D9D-80C7-02AF85C822A8). Devices that support this service are added to bluetooth adapter device list.
+ * Bluetooth device scans are performed only when explicitly requested.
+ *
+ * @section components_transportmanager_internal_design_device_adapters_bluetooth_adapter_connecting_devices Connecting devices
+ *
+ * NsAppLink::NsTransportManager::CBluetoothAdapter::createConnectionsListForDevice() runs SDP query for specified device
+ * and fills connection list with connections to all RFCOMM channels on remote device where AppLink service has been discovered.
+ *
+ * @see @ref components_transportmanager_internal_design_device_adapters_common_connecting_devices
+ */
diff --git a/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/Device Adapters/TCPAdapter.txt b/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/Device Adapters/TCPAdapter.txt
new file mode 100644
index 000000000..b5d474b05
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/Device Adapters/TCPAdapter.txt
@@ -0,0 +1,20 @@
+/** @page components_transportmanager_internal_design_device_adapters_tcp_adapter TCP Adapter
+ *
+ * TCP adapter handles communication with remote devices via TCP/IP socket. It is implemented in
+ * NsAppLink::NsTransportManager::CTCPAdapter.
+ *
+ * @section components_transportmanager_internal_design_device_adapters_tcp_adapter_listen Listening for connections
+ *
+ * TCP adapter creates listening TCP socket (TCP port is specified in NsAppLink::NsTransportManager::CTCPAdapter::cTCPAdapterPort)
+ * and listens for incoming connections. Devices are identified by their IP address.
+ *
+ * @section components_transportmanager_internal_design_device_adapters_tcp_adapter_accept Accepting connection
+ *
+ * When TCP adapter accepts connection it checks if there is a device with IP address matching with IP address of accepted connection.
+ * If there is no such device, then this device is added and device list is updated.
+ *
+ * @section components_transportmanager_internal_design_device_adapters_tcp_adapter_disconnecting Disconnecting
+ *
+ * When socket gets disconnected TCP adapter checks if there is another opened connection for IP address of disconnected application.
+ * If it was the last application from this IP address then device with this IP address is removed and devices list is updated.
+ */
diff --git a/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/Device Adapters/index.txt b/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/Device Adapters/index.txt
new file mode 100644
index 000000000..19ad5c228
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/Device Adapters/index.txt
@@ -0,0 +1,89 @@
+/** @page components_transportmanager_internal_design_device_adapters Device Adapters
+ *
+ * TransportManager communicates with actual devices via device adapters.
+ *
+ * @section components_transportmanager_internal_design_device_adapters_common Common logic
+ *
+ * Logic common to all device adapters is implemented in class NsAppLink::NsTransportManager::CDeviceAdapter.
+ *
+ * @subsection components_transportmanager_internal_design_device_adapters_common_devices_map Devices map
+ *
+ * Devices map is a map of device handle to internal device structure NsAppLink::NsTransportManager::CDeviceAdapter::SDevice.
+ * Devices map is stored in NsAppLink::NsTransportManager::CDeviceAdapter::mDevices. Any access to this map must be performed
+ * with NsAppLink::NsTransportManager::CDeviceAdapter::mDevicesMutex locked.
+ *
+ * @subsection components_transportmanager_internal_design_device_adapters_common_connections_map Connections map
+ *
+ * Connections map is a map of connection handle to internal connection structure NsAppLink::NsTransportManager::CDeviceAdapter::SConnection.
+ * Connections map is stored in NsAppLink::NsTransportManager::CDeviceAdapter::mConnections. Any access to this map must be performed
+ * with NsAppLink::NsTransportManager::CDeviceAdapter::mConnectionsMutex locked.
+ *
+ * @subsection components_transportmanager_internal_design_device_adapters_common_main_thread Device adapter main thread
+ *
+ * Device adapter main thread is started in NsAppLink::NsTransportManager::CDeviceAdapter::run().
+ * Specific device adapter must implement virtual function NsAppLink::NsTransportManager::CDeviceAdapter::mainThread()
+ * and implement its specific main thread logic there.
+ *
+ * @subsection components_transportmanager_internal_design_device_adapters_common_connection_thread Device adapter connection thread
+ *
+ * Device adapter connection thread is started in NsAppLink::NsTransportManager::CDeviceAdapter::startConnection().
+ * Specific device adapter must implement virtual function NsAppLink::NsTransportManager::CDeviceAdapter::connectionThread()
+ * and implement its specific connection thread logic there. When connection is established and socket file descriptor is set
+ * in NsAppLink::NsTransportManager::CDeviceAdapter::SConnection::mConnectionSocket specific device adapter may call
+ * NsAppLink::NsTransportManager::CDeviceAdapter::handleCommunication() to handle all communication through this socket
+ * until connection is terminated.
+ *
+ * @subsection components_transportmanager_internal_design_device_adapters_common_threads_termination Termination of device adapter threads
+ *
+ * Specific device adapter implementation must call in its destructor NsAppLink::NsTransportManager::CDeviceAdapter::waitForThreadsTermination()
+ * to wait for termination of all threads (main thread and connection threads). Device adapter threads must be terminated before specific
+ * device adapter class is destructed, so it can't be called in the destructor of base class and must be called explicitly from the inherited
+ * class's destructor.
+ *
+ * @subsection components_transportmanager_internal_design_device_adapters_common_device_scan Requesting scan for new devices
+ *
+ * Device scan is requested by setting flag NsAppLink::NsTransportManager::CDeviceAdapter::mDeviceScanRequested
+ * and signaling conditional variable NsAppLink::NsTransportManager::CDeviceAdapter::mDeviceScanRequestedCond, which may be monitored
+ * by specific device adapter if it supports device scanning. Specific device adaptere may call for this purpose
+ * NsAppLink::NsTransportManager::CDeviceAdapter::waitForDeviceScanRequest() which will wait on this conditional variable
+ * until it's signaled or specified timeout expires.
+ *
+ * @subsection components_transportmanager_internal_design_device_adapters_common_connecting_devices Connecting devices
+ *
+ * Device connection is initiated with a call to NsAppLink::NsTransportManager::CDeviceAdapter::connectDevice().
+ * This method calls virtual function NsAppLink::NsTransportManager::CDeviceAdapter::createConnectionsListForDevice()
+ * which may be implemented by specific device adapter to create a list of connections that must be established for the device.
+ * For each connection created by device adapter it calls NsAppLink::NsTransportManager::CDeviceAdapter::startConnection()
+ * which adds connection to connections map and starts connection thread.
+ *
+ * @subsection components_transportmanager_internal_design_device_adapters_common_disconnecting_devices Disconnecting devices
+ *
+ * Device disconnection is initiated with a call to NsAppLink::NsTransportManager::CDeviceAdapter::disconnectDevice().
+ * This method finds all connections in connections map that corresponds to specified device and calls
+ * NsAppLink::NsTransportManager::CDeviceAdapter::stopConnection() for each of them.
+ *
+ * @subsection components_transportmanager_internal_design_device_adapters_common_handling_communication Handling communication
+ *
+ * All frames requested to be sent via NsAppLink::NsTransportManager::CDeviceAdapter::sendFrame() are stored in
+ * NsAppLink::NsTransportManager::CDeviceAdapter::SConnection::mFramesToSend. Pipe
+ * NsAppLink::NsTransportManager::CDeviceAdapter::SConnection::mNotificationPipeFds is used by
+ * NsAppLink::NsTransportManager::CDeviceAdapter::sendFrame() to notify connection thread that data is available
+ * to be sent. NsAppLink::NsTransportManager::CDeviceAdapter::sendFrame() writes one byte to the write end of this pipe.
+ * NsAppLink::NsTransportManager::CDeviceAdapter::handleCommunication() uses poll() to wait for
+ * incoming data using connection socket file descriptor and outgoing data using file descriptor of the read end of this pipe.
+ * When either of them become available for reading or some error occurs (e.g. socket gets disconnected) connection thread
+ * wakes up and handles this event. Notification pipe is also used to notify connection thread that connection has to be
+ * terminated using NsAppLink::NsTransportManager::CDeviceAdapter::SConnection::mTerminateFlag.
+ *
+ * @subsection components_transportmanager_internal_design_device_adapters_common_update_client_device_list Updating client device list.
+ *
+ * Specific device adapter may call NsAppLink::NsTransportManager::CDeviceAdapter::updateClientDeviceList() when its internal
+ * knowledge about available devices is updated to notify device adapter client (TransportManager) about this update.
+ *
+ * @section components_transportmanager_internal_design_device_adapters_common_specific Specific device adapters
+ *
+ * Current TransportManager implementation contains following device adapters:
+ *
+ * - @subpage components_transportmanager_internal_design_device_adapters_bluetooth_adapter "Bluetooth Adapter"
+ * - @subpage components_transportmanager_internal_design_device_adapters_tcp_adapter "TCP Adapter"
+ */
diff --git a/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/Interaction.txt b/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/Interaction.txt
new file mode 100644
index 000000000..66a798ecb
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/Interaction.txt
@@ -0,0 +1,7 @@
+/*! \page components_transportmanager_internal_design_interaction Sub-Components Interaction
+
+Internally Transport Manager is a root component for Device Adapters. After running Transport Manager creates Device Adapters and runs them too.
+
+During system life cycle all messages from Device Adapter are translated via Transport Manager to the clients. In other direction – all requests from clients are re-directed to respective Device Adapters by the Transport Manager.
+
+*/
diff --git a/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/MultiThreading.txt b/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/MultiThreading.txt
new file mode 100644
index 000000000..3588d9d81
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/MultiThreading.txt
@@ -0,0 +1,9 @@
+/*! \page components_transportmanager_internal_design_multithreading Multi-Threading in Component
+
+Internally Transport Manager uses different threads for different operations. This design solution was used to provide efficient asynchronous communication with clients and underlying Device Adapters.
+
+Transport Manager uses one thread to operate with all device-related callbacks. In other word all callbacks declared in NsAppLink::NsTransportManager::ITransportManagerDeviceListener will be called from that thread.
+
+For every active connection one service thread will be created. This thread will be used for all connection-related callbacks. Therefore every implementation of NsAppLink::NsTransportManager::ITransportManagerDataListener will be called in separated thread that allows client to support multiple connection simultaneously.
+
+*/
diff --git a/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/TrasportManager.txt b/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/TrasportManager.txt
new file mode 100644
index 000000000..7e893c063
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/TrasportManager.txt
@@ -0,0 +1,15 @@
+/*! \page components_transportmanager_internal_design_trasport_manager Trasport Manager Implementation
+
+Actually Transport Manager component is implemented as classical manager component. It manages connections and abstract devices and provides unified information for the clients.
+
+Connection-related information encapsulated in structure NsAppLink::NsTransportManager::CTransportManager::SConnectionInfo. Transport Manager manages these structures to store information about every active connection.
+
+Frame processing encapsulated in structure NsAppLink::NsTransportManager::CTransportManager::SFrameDataForConnection. Transport Manager manages these structures to store information related to data for specific connection.
+
+Callback information between transport manager threads passed in form of special structures:
+NsAppLink::NsTransportManager::CTransportManager::SDeviceListenerCallback.
+NsAppLink::NsTransportManager::CTransportManager::SDataListenerCallback.
+
+Client calls to TM guarded by separate mutex. This allows use component from different threads without any risk.
+
+*/
diff --git a/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/index.txt b/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/index.txt
new file mode 100644
index 000000000..2f7cfcfa4
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/TransportManager/Internal Design/index.txt
@@ -0,0 +1,15 @@
+/*! \page components_transportmanager_internal_design Component Internal Design
+
+This chapter is focused on Transport Manager internal design and describes internal sub-components and use of multi-threading.
+
+Information regarding sub-components is described in following topics:
+ - \subpage components_transportmanager_internal_design_device_adapters "Device Adapters"
+ - \subpage components_transportmanager_internal_design_trasport_manager "Trasport Manager Implementation"
+
+Detailed description of sub-components interaction is described here:
+ - \subpage components_transportmanager_internal_design_interaction "Sub-Components Interaction"
+
+More information about internal usage of multi-threading id described here:
+ - \subpage components_transportmanager_internal_design_multithreading "Multi-Threading in Component"
+
+*/
diff --git a/SDL_Core/doc/doxygen/components/TransportManager/Use Cases/UseCase1.txt b/SDL_Core/doc/doxygen/components/TransportManager/Use Cases/UseCase1.txt
new file mode 100644
index 000000000..d87175199
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/TransportManager/Use Cases/UseCase1.txt
@@ -0,0 +1,74 @@
+/*! \page components_transportmanager_use_cases_1 Scenario with 1 device and 1 application
+
+<h3>Preconditions:</h3>
+<table>
+ <tr>
+ <th>Steps</th>
+ <th>Actions</th>
+ <th>Expected result</th>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>The Device is connected to Applink Core VIA Bluetooth or Wi-Fi</td>
+ <td>
+ <p>For BT: Devices are paired</p>
+ <p>For Wi-Fi: Devices are in the same network</p>
+ </td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Make sure that correct device is connected to Applink core</td>
+ <td>IP-address of connected device is relevant</td>
+ </tr>
+</table>
+
+<h3>Testcase:</h3>
+<table>
+ <tr>
+ <th>Steps</th>
+ <th>Actions</th>
+ <th>Expected result</th>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>Start Applink application on the Devices</td>
+ <td>Applink application is up and ready</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Initiate a Device search in HMI</td>
+ <td>HMI displays the list of found devices/applications</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>Connect to desired device\application</td>
+ <td>Application is marked as connected/notification is displayed in HMI</td>
+ </tr>
+ <tr>
+ <td>4</td>
+ <td>Send alert message from Applink application</td>
+ <td>Alert is displayed on HMI</td>
+ </tr>
+ <tr>
+ <td>5</td>
+ <td>Disconnect device from Applink core</td>
+ <td>Application is marked as disconnected/notification is displayed in HMI</td>
+ </tr>
+ <tr>
+ <td>6</td>
+ <td>Try to send alert from disconnected device</td>
+ <td>Alert shouldn’t be delivered and displayed in HMI</td>
+ </tr>
+ <tr>
+ <td>7</td>
+ <td><strong>Repeat steps 1-4 with using another connection method (BT of Wi-Fi)</strong></td>
+ <td>Expected results should be the same</td>
+ </tr>
+ <tr>
+ <td>8</td>
+ <td><h3>Stress:</h3>Send big amount of alert messages in a short period of time</td>
+ <td>All alert messages are processed correctly</td>
+ </tr>
+</table>
+
+*/
diff --git a/SDL_Core/doc/doxygen/components/TransportManager/Use Cases/UseCase2.txt b/SDL_Core/doc/doxygen/components/TransportManager/Use Cases/UseCase2.txt
new file mode 100644
index 000000000..57b960e8f
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/TransportManager/Use Cases/UseCase2.txt
@@ -0,0 +1,96 @@
+/*! \page components_transportmanager_use_cases_2 Scenario with 2 or more devices with 1 application onboard
+
+<h3>Preconditions:</h3>
+<table>
+ <tr>
+ <th>Steps</th>
+ <th>Actions</th>
+ <th>Expected result</th>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>Device-1 is connected to Core via Bluetooth</td>
+ <td>Devices are paired</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Device-2 is connected to Applink Core via Wi-Fi</td>
+ <td>Devices are in the same network</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>Make sure that correct devices are connected to Applink core</td>
+ <td>IP-address of connected devices are relevant</td>
+ </tr>
+</table>
+
+<h3>Testcase:</h3>
+<table>
+ <tr>
+ <th>Steps</th>
+ <th>Actions</th>
+ <th>Expected result</th>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>Start Applink application on the Devices</td>
+ <td>Applink application is up and ready</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Initiate a Device search in HMI</td>
+ <td>HMI displays the list of found devices/applications</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>Connect to application-1 on 1-st device</td>
+ <td>Application is marked as connected/notification is displayed in HMI</td>
+ </tr>
+ <tr>
+ <td>4</td>
+ <td>Connect to application on 2-nd device</td>
+ <td>Application is marked as connected/notification is displayed in HMI. Both applications on device-1 and device-2 are marked as connected</td>
+ </tr>
+ <tr>
+ <td>5</td>
+ <td>Send alert message from Applink application-1</td>
+ <td>Alert is displayed on HMI</td>
+ </tr>
+ <tr>
+ <td>6</td>
+ <td>Send alert message from Applink application-2</td>
+ <td>Alert is displayed on HMI</td>
+ </tr>
+ <tr>
+ <td>7</td>
+ <td>Send alert messages from both application simultaneously</td>
+ <td>Both alerts are displayed on HMI/Alerts are showed consequently</td>
+ </tr>
+ <tr>
+ <td>8</td>
+ <td>Disconnect device-2 from Applink core</td>
+ <td>Application is marked as disconnected/notification is displayed in HMI</td>
+ </tr>
+ <tr>
+ <td>9</td>
+ <td>Try to send alert messages from both application simultaneously</td>
+ <td>Alert is delivered only from device-1</td>
+ </tr>
+ <tr>
+ <td>10</td>
+ <td>Disconnect device-1 from Applink core</td>
+ <td>Application is marked as disconnected/notification is displayed in HMI</td>
+ </tr>
+ <tr>
+ <td>11</td>
+ <td><strong>Repeat steps 1-9 with more devices or use same connection method (BT of Wi-Fi)</strong></td>
+ <td>Expected results should be the same</td>
+ </tr>
+ <tr>
+ <td>12</td>
+ <td><h3>Stress:</h3>Send big amount of alert messages in a short period of time from all devices</td>
+ <td>All alert messages are processed correctly</td>
+ </tr>
+</table>
+
+*/
diff --git a/SDL_Core/doc/doxygen/components/TransportManager/Use Cases/UseCase3.txt b/SDL_Core/doc/doxygen/components/TransportManager/Use Cases/UseCase3.txt
new file mode 100644
index 000000000..7ca0e1b16
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/TransportManager/Use Cases/UseCase3.txt
@@ -0,0 +1,131 @@
+/*! \page components_transportmanager_use_cases_3 Scenario with 2 or more devices with 2 or more applications onboard
+
+<h3>Preconditions:</h3>
+<table>
+ <tr>
+ <th>Steps</th>
+ <th>Actions</th>
+ <th>Expected result</th>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>Device-1 is connected to Core via Bluetooth</td>
+ <td>Devices are paired</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Device-2 is connected to Applink Core via Wi-Fi</td>
+ <td>Devices are in the same network</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>Make sure that correct devices are connected to Applink core</td>
+ <td>IP-address of connected devices are relevant</td>
+ </tr>
+</table>
+
+<h3>Testcase:</h3>
+<table>
+ <tr>
+ <th>Steps</th>
+ <th>Actions</th>
+ <th>Expected result</th>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>Start Applink application on the Devices</td>
+ <td>Applink application is up and ready</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Initiate a Device search in HMI</td>
+ <td>HMI displays the list of found devices/applications</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>Connect to application-1 on 1-st device</td>
+ <td>Application is marked as connected/notification is displayed in HMI</td>
+ </tr>
+ <tr>
+ <td>4</td>
+ <td>Send alert message from Applink application-1 on device-1</td>
+ <td>Alert is displayed on HMI</td>
+ </tr>
+ <tr>
+ <td>5</td>
+ <td>Connect to application-2 on 1-st device</td>
+ <td>Application is marked as connected/notification is displayed in HMI Both applications are marked as connected</td>
+ </tr>
+ <tr>
+ <td>6</td>
+ <td>Send alert message from Applink application-2 on device-1</td>
+ <td>Alert is displayed on HMI</td>
+ </tr>
+ <tr>
+ <td>7</td>
+ <td>Send alert messages from application-1 and application-2 on device-1 simultaneously</td>
+ <td>Both alerts are displayed on HMI/Alerts are showed consequently</td>
+ </tr>
+ <tr>
+ <td>8</td>
+ <td>Connect to application-1 on 2-st device</td>
+ <td>Application is marked as connected/notification is displayed in HMI. All 3 applications are marked as connected</td>
+ </tr>
+ <tr>
+ <td>9</td>
+ <td>Send alert messages from application-1 on device-1 and device-2 simultaneously</td>
+ <td>Both alerts are displayed on HMI/Alerts are showed consequently</td>
+ </tr>
+ <tr>
+ <td>10</td>
+ <td>Send alert message from Applink application-1 on device-2</td>
+ <td>Alert is displayed on HMI</td>
+ </tr>
+ <tr>
+ <td>11</td>
+ <td>Connect to application on 2-nd device</td>
+ <td>Application is marked as connected/notification is displayed in HMI. All 4 applications are marked as connected</td>
+ </tr>
+ <tr>
+ <td>12</td>
+ <td>Send alert message from Applink application-2 on device-2</td>
+ <td>Alert is displayed on HMI</td>
+ </tr>
+ <tr>
+ <td>13</td>
+ <td>Send alert messages from application-1 and application-2 on device-2 simultaneously</td>
+ <td>Both alerts are displayed on HMI/Alerts are showed consequently</td>
+ </tr>
+ <tr>
+ <td>14</td>
+ <td>Send alert messages from application-2 on device-1 and device-2 simultaneously</td>
+ <td>Both alerts are displayed on HMI/Alerts are showed consequently</td>
+ </tr>
+ <tr>
+ <td>15</td>
+ <td>Send alert messages from all application simultaneously</td>
+ <td>Both alerts are displayed on HMI/Alerts are showed consequently</td>
+ </tr>
+ <tr>
+ <td>16</td>
+ <td>Disconnect device-1 from Applink core</td>
+ <td>Applications are marked as disconnected/notification is displayed in HMI</td>
+ </tr>
+ <tr>
+ <td>17</td>
+ <td>Disconnect device-2 from Applink core</td>
+ <td>All applications are marked as disconnected/notification is displayed in HMI</td>
+ </tr>
+ <tr>
+ <td>18</td>
+ <td><strong>Repeat steps 1-15 with more devices and more applications or use same connection method (BT of Wi-Fi)</strong></td>
+ <td>Expected results should be the same</td>
+ </tr>
+ <tr>
+ <td>19</td>
+ <td><h3>Stress:</h3>Send big amount of alert messages in a short period of time from all devices</td>
+ <td>All alert messages are processed correctly</td>
+ </tr>
+</table>
+
+*/
diff --git a/SDL_Core/doc/doxygen/components/TransportManager/Use Cases/index.txt b/SDL_Core/doc/doxygen/components/TransportManager/Use Cases/index.txt
new file mode 100644
index 000000000..c8f26520e
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/TransportManager/Use Cases/index.txt
@@ -0,0 +1,11 @@
+/*! \page components_transportmanager_use_cases High-Level Use Cases to Test Component
+
+This page contains set of high-level use-cases which can be used for testing of Transport Manager functionallity.
+
+In described scenarious term “Device” means any device which is able to run Applink Applications and capable to connect via BT or
+Wi-Fi.
+
+- \subpage components_transportmanager_use_cases_1 Simple scenario for smoke tests of trasprot level.
+- \subpage components_transportmanager_use_cases_2 Many devices verification for transport level operations.
+- \subpage components_transportmanager_use_cases_3 Complex verification of correct transport level operations.
+*/
diff --git a/SDL_Core/doc/doxygen/components/TransportManager/index.txt b/SDL_Core/doc/doxygen/components/TransportManager/index.txt
new file mode 100644
index 000000000..fcb3c3f3c
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/TransportManager/index.txt
@@ -0,0 +1,9 @@
+/*! \page components_transportmanager Transport Manager
+
+Transport Manager is a component of AppLink application which is designed to provide transparent access to transport layer for other components. Current implementation provides unified access to connections via Bluetooth and TCP. Also this component allows run automatic device discovery and provides information about found devices which is able to connect to AppLink.
+
+More detailed information is described in following chapters:
+ - \subpage components_transportmanager_client "Transport Manager Client Specification"
+ - \subpage components_transportmanager_internal_design "Component Internal Design"
+ - \subpage components_transportmanager_use_cases "High-Level Use Cases to Test Component"
+*/
diff --git a/SDL_Core/doc/doxygen/components/index.txt b/SDL_Core/doc/doxygen/components/index.txt
new file mode 100644
index 000000000..f843fdb1a
--- /dev/null
+++ b/SDL_Core/doc/doxygen/components/index.txt
@@ -0,0 +1,9 @@
+/*! \page components Components
+
+Project contain following components:
+ - \subpage components_transportmanager "Transport Manager"
+ - \subpage components_protocolhandler "Protocol Handler"
+ - \subpage components_jsonhandler "JSON Handler"
+ - \subpage components_appmgr "App Manager"
+ - \subpage components_hmi "HMI"
+*/ \ No newline at end of file
diff --git a/SDL_Core/doc/doxygen/info.txt b/SDL_Core/doc/doxygen/info.txt
new file mode 100644
index 000000000..e8afe55c1
--- /dev/null
+++ b/SDL_Core/doc/doxygen/info.txt
@@ -0,0 +1,5 @@
+/*! \page info Project information
+
+Here will be general information about project
+
+*/ \ No newline at end of file
diff --git a/SDL_Core/doc/doxygen/mainpage.txt b/SDL_Core/doc/doxygen/mainpage.txt
new file mode 100644
index 000000000..f2479371f
--- /dev/null
+++ b/SDL_Core/doc/doxygen/mainpage.txt
@@ -0,0 +1,8 @@
+/*! \mainpage Project AppLink
+
+This is the entry point to the documentation about project.
+
+This manual is divided in the following sections:
+- \subpage info "General project information"
+- \subpage components "Project components"
+*/ \ No newline at end of file