summaryrefslogtreecommitdiff
path: root/src/doc/qtivi
diff options
context:
space:
mode:
Diffstat (limited to 'src/doc/qtivi')
-rw-r--r--src/doc/qtivi/qtivi-project.qdocconf2
-rw-r--r--src/doc/qtivi/src/configuration.qdoc6
-rw-r--r--src/doc/qtivi/src/ivigenerator/generator-usage.qdoc67
-rw-r--r--src/doc/qtivi/src/ivigenerator/ivigenerator.qdoc2
-rw-r--r--src/doc/qtivi/src/ivigenerator/remotebackends.qdoc70
5 files changed, 143 insertions, 4 deletions
diff --git a/src/doc/qtivi/qtivi-project.qdocconf b/src/doc/qtivi/qtivi-project.qdocconf
index 8fc5a9c..05d6ccf 100644
--- a/src/doc/qtivi/qtivi-project.qdocconf
+++ b/src/doc/qtivi/qtivi-project.qdocconf
@@ -59,7 +59,7 @@ qhp.QtIvi.subprojects.examples.sortPages = true
tagfile = qtivi.tags
-depends += qtcore qtdoc qtquick qtqml qtautomotivesuite
+depends += qtcore qtdoc qtquick qtqml qtautomotivesuite qtsimulator qtremoteobjects
navigation.homepage = "Qt Automotive Suite"
navigation.landingpage = "Qt IVI"
diff --git a/src/doc/qtivi/src/configuration.qdoc b/src/doc/qtivi/src/configuration.qdoc
index 6b1be4d..c5d4425 100644
--- a/src/doc/qtivi/src/configuration.qdoc
+++ b/src/doc/qtivi/src/configuration.qdoc
@@ -57,6 +57,12 @@ summary".
the needed code for the simulation backends to communicate over QtSimulator. In addition,
it also provides a new template to generate a controller application to communicate with
the simulation backend.
+\row
+ \li QtRemoteObjects Support
+ \keyword feature-qtremoteobjects
+ \li QtRemoteObjects module
+ \li The QtRemoteObjects Support is needed to generate qtivi backends, using QtRemoteObjects as
+ it's IPC. It also provides templates to generate the server part of this IPC.
\endtable
Additional command-line options to tailor the build-system to your needs:
diff --git a/src/doc/qtivi/src/ivigenerator/generator-usage.qdoc b/src/doc/qtivi/src/ivigenerator/generator-usage.qdoc
index 956fcaf..688633b 100644
--- a/src/doc/qtivi/src/ivigenerator/generator-usage.qdoc
+++ b/src/doc/qtivi/src/ivigenerator/generator-usage.qdoc
@@ -52,7 +52,7 @@ The options and parameters are:
\li specifies whether the generator should keep track of the changes in the IDL file
and update output on the fly (--no-reload by default)
\row
- \li -f, --format [frontend|backend_simulator|control_panel|<folder>]
+ \li -f, --format [frontend|backend_simulator|control_panel|backend_qtro|server_qtro|<folder>]
\li see below
\row
\li --help
@@ -67,7 +67,7 @@ The options and parameters are:
\li Generation destination folder
\endtable
-At the moment the generator is able to generate 2 kinds of projects given an interface IDL file
+At the moment the generator is able to generate 5 kinds of projects given an interface IDL file
based on the \e {--format} option value.
These are:
\table
@@ -85,7 +85,16 @@ These are:
\li \l {Control Panel} {control_panel}
\target control-panel-template
\li Generates a controller application, consisting of an UI and a C++ plugin, which communicates
- to the simulation backend generated from the same qface file using QtSimulator.
+ to the simulation backend generated from the same qface file using QtSimulator.
+ \row
+ \li \l {QtRemoteObjects Backend} {backend_qtro}
+ \target backend-qtro-template
+ \li Generates a QtRemoteObjects based backend client for the API generated by the "frontend" option.
+ This backend connects to a backend server.
+ \row
+ \li \l {QtRemoteObjects Server} {server_qtro}
+ \target server-qtro-template
+ \li Generates a QtRemoteObjects based backend server stub for the API generated by the "frontend" option.
\row
\li folder path
\li Uses templates inside the folder. A YAML file with the same name as the folder (and .yaml
@@ -363,4 +372,56 @@ for more information.
\li Control UI for this interface. Contains a interface to control every
property and method and log calls to signals.
\endtable
+
+\section2 QtRemoteObjects Backend
+
+The backend_qtro template is only available if the QtRemoteObjects module was found.
+Despite the name, the remote object backend is not the location for the implementation of the actual backend logic, but just a client for connecting to the remote backend server.
+
+\table
+ \header
+ \li File name
+ \li Purpose
+ \row
+ \li "{{module.module_name|lower}}plugin.h/cpp"
+ \li Files defining implementation of QtIvi backend plugin implementing
+ QIviServiceInterface
+ \row
+ \li "{{module.module_name|lower}}.json"
+ \li File containing identifiers of the exposed feature interfaces needed by the Qt plugin
+ system.
+ \row
+ \li "{{module|lower|replace('.', '-')}}.pri"
+ \li Standard Qt .pri file, containing all the generated files that can be used for
+ including the autogenerated files into a qmake project. Also adds the .rep file
+ to the project and calls the remote object compiler.
+ \row
+ \li "{{interface|lower}}backend.h/cpp"
+ \li Files containing the implementation of the remote object backend.
+ Establishes the connection and initializes the remote object replica.
+ \row
+ \li "{{interface|lower}}.rep"
+ \li The input file for Qt’s \l [QtRemoteObjects] {Qt Remote Objects Compiler} {replica compiler} for producing the replica class code.
+\endtable
+
+\section2 QtRemoteObjects server
+
+The server_qtro template is only available if the QtRemoteObjects module was found. The produced code contains merely the source classes to inherit and code for establishing the connection. It is up to the developer to implement the actual backend logic.
+
+\table
+ \header
+ \li File name
+ \li Purpose
+ \row
+ \li "core.h/cpp"
+ \li Code for establishing the connection and starting the remoting for the source objects.
+ \row
+ \li "{{srcBase|lower}}.pri"
+ \li Standard Qt .pri file, containing all the generated files that can be used for
+ including the autogenerated files into a qmake project. Also includes the .rep file
+ to the project and calls the remote object compiler.
+ \row
+ \li "{{interface|lower}}.rep"
+ \li The input file for the Qt’s \l [QtRemoteObjects] {Qt Remote Objects Compiler} {replica compiler} for producing the source class code.
+\endtable
*/
diff --git a/src/doc/qtivi/src/ivigenerator/ivigenerator.qdoc b/src/doc/qtivi/src/ivigenerator/ivigenerator.qdoc
index 4ce8013..3a50a38 100644
--- a/src/doc/qtivi/src/ivigenerator/ivigenerator.qdoc
+++ b/src/doc/qtivi/src/ivigenerator/ivigenerator.qdoc
@@ -39,6 +39,8 @@ library, which provides a generic autogeneration framework.
\li \l {Autogenerator Usage}
\li \l {Filter Reference}
\li \l {QMake Integration}
+ \li \l {QtIVI Remote backends}{Remote backends}
\li \l {ivicore/qface-ivi-climate}{Generator Example}
+ \li \l {ivicore/qface-ivi-remote}{Remote Backend Example}
\endlist
*/
diff --git a/src/doc/qtivi/src/ivigenerator/remotebackends.qdoc b/src/doc/qtivi/src/ivigenerator/remotebackends.qdoc
new file mode 100644
index 0000000..064a062
--- /dev/null
+++ b/src/doc/qtivi/src/ivigenerator/remotebackends.qdoc
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 Pelagicore AG
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the QtIvi module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL-QTAS$
+** Commercial License Usage
+** Licensees holding valid commercial Qt Automotive Suite licenses may use
+** this file in accordance with the commercial license agreement provided
+** with the Software or, alternatively, in accordance with the terms
+** contained in a written agreement between you and The Qt Company. For
+** licensing terms and conditions see https://www.qt.io/terms-conditions.
+** For further information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+/*!
+\page remotebackends.html
+\title QtIvi Remote Backends
+
+One of the features of the Qt IVI Generator is the possibility to create remote backends
+that utilize the QtRemoteObjects module.
+A remote backend may be an independently running process, even on a separate host machine, that can
+be accessed by multiple clients, or frontends. Such frontends are e.g. the main infotainment system
+UI, different applications running within the UI or mobile devices.
+
+\section1 Motivation
+
+The purpose of having remote backends is to enable the distribution of functionality and the sharing
+of information. This may be between multiple processes and even between multiple host machines.
+Separate processes improve the overall reliability of a complex system and make it possible to
+separate computationally intensive code from the UI code. Additionally, remote backends can be
+accessible by multiple frontend points, be it the central UI, separate applications or even mobile
+devices or third party applications.
+Combined with the automatic generation of code and uniform feature loading of QtIvi, the development
+of distributed features comes with a minimal development overhead and interchangeability and
+transparency on the UI code side.
+
+\section1 Code Generation
+
+The remote objects generator produces client side code as a QtIvi backend plugin and a remote server
+stub. The client is generated using the \l {backend-qtro-template}{backend_qtro} template and the s
+erver using the \l {server-qtro-template}{server_qtro} template. Both the plugin and the server
+contain generated c++ code and an intermediate .rep -file that is further processed by Qt’s
+\l [QtRemoteObjects] {Qt Remote Objects Compiler} {replica compiler} to produce the actual source
+and replica classes.
+
+The generated plugin is loaded and used as any other QtIvi plugin and is interchangeable with any
+other backend implementation with the same API. As all method calls over QtIvi feature interfaces
+are asynchronous, the use of a remote backend is similar to any other type of backend.
+
+The generated plugin is buildable and usable as it is, and does not require further changes by the
+developer. The task of the developer will be then to implement the intended functionality at the
+server side. To support getting started with the server, there is a generated class that initializes
+the connection. All connection parameters to the plugin and to the server are passed currently over
+a config file, either in a default location or at an user specified path.
+
+For a steb-by-step introduction to remote backends, see the \l {ivicore/qface-ivi-remote}{Remote Backend Example}.
+
+*/