LayerManagement: updated Documentation
authorTimo Lotterbach <timo.lotterbach@bmw-carit.de>
Fri, 10 Feb 2012 08:59:28 +0000 (09:59 +0100)
committerTimo Lotterbach <timo.lotterbach@bmw-carit.de>
Thu, 16 Feb 2012 08:40:18 +0000 (09:40 +0100)
Updated Documentation according to review results (text and graphics).
Added file headers to all documentation files.
Improved doxygen settings for enums.
Added custom footline with document name in latex header.
Fixed some typos in existing documentation.

35 files changed:
.gitignore
Doxyfile
LayerManagerClient/ilmClient/include/ilm_types.h
doc/00_doxygen_setup.dox
doc/01_introduction.dox
doc/02_references.dox
doc/03_definitions.dox
doc/04_acronyms_and_abbreviations.dox
doc/05_context.dox
doc/06_specification.dox
doc/07_functional_overview.dox
doc/08_design_overview.dox
doc/09_control_package.dox
doc/10_scene_package.dox
doc/11_communications_package.dox
doc/12_renderer_package.dox
doc/13_implementation_notes.dox [new file with mode: 0644]
doc/13_testing.dox [deleted file]
doc/14_implementation_notes.dox [deleted file]
doc/14_testing.dox [new file with mode: 0644]
doc/15_traceability_to_the_requirements.dox
doc/16_constraints_and_assumptions.dox
doc/17_future_requirements.dox
doc/images/UML_model/LayerManagerSpecification_Diagrams.eap
doc/images/command_flow.png [new file with mode: 0755]
doc/images/layer_management_package_interaction.png
doc/images/layer_management_packages.png
doc/images/layermanager_lifecycle.png [new file with mode: 0755]
doc/images/uml_sequence_example.png [deleted file]
doc/images/uml_sequence_example_ids_managed_by_application.png [new file with mode: 0755]
doc/images/uml_sequence_example_ids_managed_by_layermanagement.png [new file with mode: 0755]
doc/images/with_central_control_instance.png
doc/tex/doxygen.sty
doc/tex/header.tex
generate_specification.sh

index 17932f4..e55921b 100644 (file)
@@ -1,11 +1,8 @@
-
 *.o
-
 .gitconfig
 debian/
 build/
 toolchain_forcecopy.cmake
-
-
 doc_generated
 configure
+*.pdf
index 17ac7c8..d818562 100644 (file)
--- a/Doxyfile
+++ b/Doxyfile
@@ -271,7 +271,7 @@ SUBGROUPING            = YES
 # be useful for C code in case the coding convention dictates that all compound
 # types are typedef'ed and only the typedef is referenced, never the tag name.
 
-TYPEDEF_HIDES_STRUCT   = YES
+TYPEDEF_HIDES_STRUCT   = NO
 
 # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
 # determine which symbols to keep in memory and which to flush to disk.
@@ -1014,7 +1014,7 @@ DISABLE_INDEX          = NO
 # This tag can be used to set the number of enum values (range [1..20])
 # that doxygen will group on one line in the generated HTML documentation.
 
-ENUM_VALUES_PER_LINE   = 4
+ENUM_VALUES_PER_LINE   = 1
 
 # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
 # structure should be generated to display hierarchical information.
index 3ecede5..221712a 100644 (file)
 #include "ilm_client_platform.h"
 
 /**
- * \defgroup Defines
- * \defgroup Enumerations
- * \defgroup TypeDefinitions
- **/
-/**
  * \brief Represent the logical true value
- * \ingroup Defines
+ * \ingroup ilmClient
  **/
 #define ILM_TRUE     1u
 
 /**
  * \brief Represent the logical false value
- * \ingroup Defines
+ * \ingroup ilmClient
  **/
 #define ILM_FALSE     0u
 
 /**
  * \brief Enumeration on possible error codes
- * \ingroup Enumerations
+ * \ingroup ilmClient
  **/
 typedef enum e_ilmErrorTypes
 {
-    ILM_SUCCESS = 0,                  /*!< ErrorCode if the method call was successfull */
+    ILM_SUCCESS = 0,                  /*!< ErrorCode if the method call was successful */
     ILM_FAILED= 1,                    /*!< ErrorCode if the method call has failed */
     ILM_ERROR_INVALID_ARGUMENTS = 2,  /*!< ErrorCode if the method was called with invalid arguments */
     ILM_ERROR_ON_CONNECTION = 3       /*!< ErrorCode if connection error has occured */
@@ -52,7 +47,7 @@ typedef enum e_ilmErrorTypes
 
 /**
  * \brief Enumeration for supported pixelformats
- * \ingroup Enumerations
+ * \ingroup ilmClient
  **/
 typedef enum e_ilmPixelFormat
 {
@@ -60,15 +55,15 @@ typedef enum e_ilmPixelFormat
     ILM_PIXELFORMAT_RGB_888 = 1,       /*!< Pixelformat value, to describe a 24 bit rgb surface */
     ILM_PIXELFORMAT_RGBA_8888 =2,      /*!< Pixelformat value, to describe a 24 bit rgb surface with 8 bit alpha */
     ILM_PIXELFORMAT_RGB_565 = 3,       /*!< Pixelformat value, to describe a 16 bit rgb surface */
-    ILM_PIXELFORMAT_RGBA_5551 = 4,     /*!< Pixelformat value, to desicribe a 16 bit rgb surface, with binary mask */
-    ILM_PIXELFORMAT_RGBA_6661 = 5,     /*!< Pixelformat value, to desicribe a 18 bit rgb surface, with binars mask */
-    ILM_PIXELFORMAT_RGBA_4444 = 6,     /*!< Pixelformat value, to desicribe a 12 bit rgb surface, with 4 bit alpha */
+    ILM_PIXELFORMAT_RGBA_5551 = 4,     /*!< Pixelformat value, to describe a 16 bit rgb surface, with binary mask */
+    ILM_PIXELFORMAT_RGBA_6661 = 5,     /*!< Pixelformat value, to describe a 18 bit rgb surface, with binars mask */
+    ILM_PIXELFORMAT_RGBA_4444 = 6,     /*!< Pixelformat value, to describe a 12 bit rgb surface, with 4 bit alpha */
     ILM_PIXEL_FORMAT_UNKNOWN = 7       /*!< Pixelformat not known */
 } ilmPixelFormat;
 
 /**
  * \brief Enumeration for supported layertypes
- * \ingroup Enumerations
+ * \ingroup ilmClient
  **/
 typedef enum e_ilmLayerType
 {
@@ -80,7 +75,7 @@ typedef enum e_ilmLayerType
 
 /**
  * \brief Enumeration for supported graphical objects
- * \ingroup Enumerations
+ * \ingroup ilmClient
  **/
 typedef enum e_ilmObjectType
 {
@@ -92,7 +87,7 @@ typedef enum e_ilmObjectType
 
 /**
  * \brief Enumeration for supported orientations of booth, surface and layer
- * \ingroup Enumerations
+ * \ingroup ilmClient
  **/
 typedef enum e_ilmOrientation
 {
@@ -104,61 +99,61 @@ typedef enum e_ilmOrientation
 
 /**
  * \brief Typedef for representing a layer
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
  **/
 typedef t_ilm_uint     t_ilm_layer;
 
 /**
  * \brief Typedef for representing a surface
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
  **/
 typedef t_ilm_uint     t_ilm_surface;
 
 /**
  * \brief Typedef for representing a layergroup
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
  **/
 typedef t_ilm_uint     t_ilm_layergroup;
 
 /**
  * \brief Typedef for representing a surfacegroup
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
  **/
 typedef t_ilm_uint     t_ilm_surfacegroup;
 
 /**
  * \brief Typedef for representing a display number
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
  **/
 typedef t_ilm_uint     t_ilm_display;
 
 /**
  * \brief Typedef for representing layer capabilities
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
  **/
 typedef t_ilm_uint     t_ilm_layercapabilities;
 
 /**
  * \brief Typedef for representing a native window handle
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
  **/
 typedef t_ilm_ulong    t_ilm_nativehandle;
 
 /**
  * \brief Typedef for representing a ascii string
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
  **/
 typedef t_ilm_char* t_ilm_string;
 
 /**
  * \brief Typedef for representing a const ascii string
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
  **/
 typedef t_ilm_const_char* t_ilm_const_string;
 
 /**
  * \brief Typedef for representing a the surface properties structure
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
  **/
 struct ilmSurfaceProperties
 {
@@ -180,7 +175,7 @@ struct ilmSurfaceProperties
 
 /**
  * \brief Typedef for representing a the layer properties structure
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
  **/
 struct ilmLayerProperties
 {
index ab7e3e6..14db8ac 100644 (file)
@@ -1,4 +1,22 @@
-// This file defines the order of groups in the generated documentation
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
+/// This file defines the order of groups in the generated documentation
 
 /**
  * \defgroup ServiceAPI      Layer Management Service API
index 8312de6..928fba3 100644 (file)
@@ -1,3 +1,21 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
 /*!
 
 \page Introduction Introduction
@@ -20,9 +38,9 @@ This document identifies the areas of “commodity” features and provides a de
 required functionality. The document will be maintained and further developed within the GENIVI
 Strategy Council planning work group.
 
-The GENIVI Technical Council will use the profile descriptions to scope the technical capabilities
+The GENIVI System Architecture Team (SAT) will use the profile descriptions to scope the technical capabilities
 of the GENIVI platform. The decomposition / further detailing of this document will carried out
-iteratively between the SC planning group and the TC.
+iteratively between the SC planning group and the SAT.
 
 The commodity functionality within the profiles will describe the functionality to be supported
 by the GENIVI Reference implementation.
index c32eb15..b06a1a8 100644 (file)
@@ -1,12 +1,29 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
 /*!
 
 \page references References
 
 \section geniviAllianceDocuments GENIVI Alliance Documents
 
-Stakeholder Needs Document SHN-01
-
-Requirements Document REQ-01
+\li Stakeholder Needs Document (GENIVI Document SND0001)
+\li Requirements Document (GENIVI Document REQ0001)
 
 \section otherDocuments Other Documents
 
index 7779afe..a7c204b 100644 (file)
@@ -1,3 +1,21 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
 /*!
 
 \page definitions Definitions
index 8614f1d..2a441b5 100644 (file)
@@ -1,3 +1,21 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
 /*!
 
 \page acronymsAndAbbreviations Acronyms and Abbreviations
index 265e792..dae6175 100644 (file)
@@ -1,3 +1,21 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
 /*!
 
 \page context Context
index cc2ec77..3137390 100644 (file)
@@ -1,3 +1,21 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
 /*!
 
 \page specification Specification
@@ -12,12 +30,13 @@ On startup the Layer Management Service shall perform the following tasks:
 \li Load and instantiate Communication and Rendering packages to be used.
     These will typically create own threads internally. It must be possible
     to load these at runtime in order to have maximum flexibility.
-\li Call initialization method on loaded packages
-\li Call run method on loaded packages
+\li Call start method on loaded packages
 \li Communication Packages will now typically wait for IPC Calls for creating
     surfaces, layers etc and arranging themselves. Rendering packages will now
     typically start rendering all known layers and their surfaces.
 
+\image html ./doc/images/layermanager_lifecycle.png LayerManagerService Lifecycle
+\image latex ./doc/images/layermanager_lifecycle.png LayerManagerService Lifecycle
 
 \section componentInterfaces Component Interfaces
 
@@ -43,7 +62,7 @@ provided be individual communication implementations though.
 
 \subsection componentInterfacesCommands Commands
 
-See \ref Commands.
+The IPC Message interfaces are described in \ref Commands.
 
 \section componentInterfacesRequirements Requirements
 
index efaa785..afcf1ad 100644 (file)
@@ -1,3 +1,21 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
 /*!
 
 \page functionalOverview Functional Overview
@@ -33,8 +51,11 @@ management application to want to reorder the visible output of the Layer Manage
 and sends a SetVisibilityCommand to hide the layer with user applications or to show
 a notification layer.
 
-\image html ./doc/images/uml_sequence_example.png UML Sequence example
-\image latex ./doc/images/uml_sequence_example.png UML Sequence example
+\image html ./doc/images/uml_sequence_example_ids_managed_by_layermanagement.png UML Sequence example, IDs managed by LayerManagement
+\image latex ./doc/images/uml_sequence_example_ids_managed_by_layermanagement.png UML Sequence example, IDs managed by LayerManagement
+
+\image html ./doc/images/uml_sequence_example_ids_managed_by_application.png UML Sequence example, IDs managed by Application
+\image latex ./doc/images/uml_sequence_example_ids_managed_by_application.png UML Sequence example, IDs managed by Application
 
 Similarly the management application would set multiple properties of multiple surfaces and layers in order to react to user input (change to an application or switch to a “TV mode” etc).
 
@@ -48,9 +69,9 @@ All applications talk to the Layer Management themselves and configure their out
 Course of events:
 
 \li (1) Application creates window using native window system
-\li (2) Gets native window handle
-\li (3) Platform dependant renderer gets new window event from window system
-\li (4) Application registers/requests logical surface from Layer Management including native window id, width, height and pixelformat of the surface. The renderer uses the given native window id to access the graphical content, this content is associated with the logical surfaceid.
+\li (2) Platform dependant renderer gets new window event from window system
+\li (3) Gets native window handle
+\li (4) Application registers/requests logical surface from Layer Management including native window id, width, height and pixelformat of the surface.The renderer uses the given native window id to access the graphical content, this content is associated with the logical surfaceid.
 \li (5) Layermanager returns the newly created surface identifier
 \li (6) Application uses this identifier to set properties of its surface
 
@@ -64,14 +85,18 @@ It has full control, which applications are shown and the way they are rendered.
 
 Course of events:
 
-\li (1) Application creates window using native window system
-\li (2) Gets native window handle
-\li (3) Platform dependant renderer gets new window event from window system
-\li (4) Application registers with central control instance, maybe presenting a certificate or AppID ( this can be proprietary)
-\li (5) The control instance registers/requests logical surface from Layer Management including native window id, width, height and pixelformat of the surface. The renderer uses the given native window id to access the graphical content, this content is associated with the logical surfaceid.
-\li (6) Layermanager returns the newly created surface identifier
-\li (7) Control instance uses this identifier to set properties of the application's surface
-\li (8) Later an external event occurs (e.g. telephone call) at the control instance
-\li (9) Control instance decides to change the graphical arrangement to blend out all applications except telephone application
+\li (1) The control instance creates all Layers and Surfaces of the scene according to their properties including native window id, width, height and pixelformat of the surface.
+\li (2) The control instance configures the scene to show the client application
+\li (3) Application creates window using native window system
+\li (4) Platform dependant renderer gets new window event from window system
+\li (5) Gets native window handle
+\li (6) The client application registers its native window at the LayerManager. The renderer uses the given native window id to access the graphical content, this content is associated with the logical surfaceid that was created by the control instance.
+
+Now the client application is rendered on screen.
+
+\li (7) An external event occurs (e.g. phone call) at the control instance
+\li (8) Control instance decides to change the graphical arrangement to blend out all applications except telephone application
+
+Now only the phone application is rendered on screen.
 
 */
index 16e55a2..b550059 100644 (file)
@@ -1,3 +1,21 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
 /*!
 
 \page designOverview Design Overview
@@ -8,11 +26,11 @@ The Layer Management Service is composed of the following packages:
 
 \li Layer Management
 \li One Renderer package
-\li One or more Communication packages
+\li One or more Communicator packages
 
 The Layer Management Service component makes use of the following external packages provided by the application framework:
  
-\li Renderer and Communication packages which in turn depend on other packages/frameworks for the communication (e.g. middle ware) or the device dependent rendering (e.g. graphic frameworks)
+\li Renderer and Communicator packages which in turn depend on other packages/frameworks for the communication (e.g. middle ware) or the device dependent rendering (e.g. graphic frameworks)
 
 The diagram below shows the relationships between the packages:
 
@@ -24,6 +42,12 @@ The diagram below shows the interaction between the service and the renderer and
 \image html ./doc/images/layer_management_package_interaction.png Layer Management Package Interaction
 \image latex ./doc/images/layer_management_package_interaction.png Layer Management Package Interaction
 
+The diagram below shows the command flow from the client application calling the \ref ilmClient to the
+final screen update:
+
+\image html ./doc/images/command_flow.png Layer Management Command Flow
+\image latex ./doc/images/command_flow.png Layer Management Command Flow
+
 The diagram below shows dependencies to all software components used by the LayerManager:
 
 \image html ./doc/images/layer_management_package_dependencies.png Layer Management Package Dependencies (DL = Dynamic Linking)
index e2a236b..fba3950 100644 (file)
@@ -1,3 +1,21 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
 /*!
 
 \page controlPackage Service Package
@@ -5,6 +23,28 @@
 \section controlPackageOverview Overview
 
 This is the main package for the Layer Management Service.
+Its main purpose is creating all required objects for managing
+the scene and loading the renderer and communicator plugins.
+
+All configuration options are handled in this component and delegated
+to the corrensponding instances. This includes the handling of all
+command line arguments provided during the start of LayerManagementService.
+
+Additioanlly, this package provides the definitions for many important
+APIs, e.g.
+\li \ref RendererAPI
+\li \ref CommunicatorAPI
+\li \ref SceneAPI
+
+data types, e.g.
+\li Layer
+\li Surface
+\li Shader
+
+and provides implementations for common classes, e.g.
+\li Log
+\li Rectangle
+\li Vector2
 
 \section servicePackageObjectModel Object Model
 
@@ -24,6 +64,6 @@ packages must be able to obtain information about properties requested by client
 
 \subsection layerManagementServicePublicInterface Public Interface
 
-See \ref ServiceAPI. 
+The interface of the Service package is described in more detail in \ref ServiceAPI. 
 
 */
index 4a91b8b..dc1dce8 100644 (file)
@@ -1,3 +1,21 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
 /*!
 
 \page scenePackage Scene Package
@@ -15,6 +33,6 @@ order.
 
 \section scenePackagePublicInterface Public Interface
 
-See \ref SceneAPI.
+The interface of the Scene package is described in more detail in \ref SceneAPI.
 
 */
index 51b341c..3dac5e7 100644 (file)
@@ -1,3 +1,21 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
 /*!
 
 \page communicationsPackage Communications Package
@@ -40,7 +58,7 @@ The layermanager searches the provided communicator shared library for two entry
 which are both mandatory for a communicator library. Their name is specified by the
 following naming scheme:
 
-\li \code <Library_Name>* create<Library_Name>(CommandExecutor*, LayerList*) \endcode
+\li \code ICommunicator* create<Library_Name>(ICommandExecutor*) \endcode
 \li \code void destroy<Library_Name>(<Library_Name>*) \endcode
 
 In order to be loadable by the layermanager, the created shared library must provide
@@ -63,19 +81,20 @@ Browser, Navigation) to hide the used InterProcessCommunication scheme.
 \li \code virtual void stop(void) \endcode
 
 (3) Create the static functions (see example source code below)
+
 \li \code
 extern "C"
-MyCommunicator* createMyCommunicator(CommandExecutor* ex, LayerList* ll)
+ICommunicator* createMyCommunicator(ICommandExecutor* pExecutor)
 {
-    return new MyCommunicator(ex, ll);
+    return new MyCommunicator(pExecutor);
 }
 \endcode
 
 \li \code
 extern "C"
-void destroyMyCommunicator(MyCommunicator* comm)
+void destroyMyCommunicator(MyCommunicator* pCommunicator)
 {
-    delete comm;
+    delete pCommunicator;
 }
 \endcode
 
@@ -83,16 +102,25 @@ void destroyMyCommunicator(MyCommunicator* comm)
 
 (5) Link the implementation to a shared library called “libMyCommunicator.so”
 
+\section communicationsPackageReferenceImplementation Reference Implementation
+
+The LayerManagement package contains a reference 
+implementation for a communicator, which is based on DBUS.
+
+The source code is available in the
+\code <package_root>/LayerManagerPlugins/Communicators/DBUSCommunicator \endcode
+directory.
+
 \section communicationsPackagePublicInterface Public Interface
 
-See \ref CommunicatorAPI.
+The interface of the Communicator package is described in more detail in \ref CommunicatorAPI.
 
 \section communicationsPackageClientInterface Client Interface
 
-See \ref ilmClient.
+The interface of the Layer Manager Client package is described in more detail in \ref ilmClient.
 
 \section communicationsPackageCommandObjectReference Command Object Reference
 
-See \ref Commands.
+The description of all available Layer Manager Commands is available in \ref Commands.
 
 */
index 6bf1433..eb45031 100644 (file)
@@ -1,3 +1,21 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
 /*!
 
 \page rendererPackage Renderer Package
@@ -27,7 +45,8 @@ The layermanager searches the provided renderer shared library for two entry
 points, which are both mandatory for a renderer library. Their name is specified
 by the following naming scheme:
 
-\li \code IRenderer* create<Library_Name>(LayerList*) \endcode
+
+\li \code BaseRenderer* create<Library_Name>(Scene*) \endcode
 \li \code void destroy<Library_Name>(<Library_Name>*) \endcode
 
 In order to be loadable by the layermanager, the created shared library must provide
@@ -60,16 +79,15 @@ provided by the reference implementation.
 (3) Create the static functions (see example source code below)
 
 \li \code extern "C"
-IRenderer* createMyRenderer(LayerList* ll)
-{
-    return new MyRenderer(ll);
+BaseRenderer* createMyRenderer(Scene* pScene){
+    return new MyRenderer(pScene);
 }
 \endcode
 
 \li \code extern "C"
-void destroyMyRenderer(MyRenderer* renderer)
+void destroyMyRenderer(MyRenderer* pRenderer)
 {
-    delete renderer;
+    delete pRenderer;
 }
 \endcode
 
@@ -77,8 +95,22 @@ void destroyMyRenderer(MyRenderer* renderer)
 
 (5) Link the implementation to a shared library called “libMyRenderer.so”
 
+\section rendererPackageReferenceImplementation Reference Implementation
+
+The LayerManagement package contains two reference 
+implementations for renderers. One is based on OpenGL, the other is based
+on OpenGL ES 2.0. Both implementations rely on the X11 backend server.
+
+The source code for the OpenGL/X11-based reference renderer is available in the
+\code <package_root>/LayerManagerPlugins/Renderers/Platform/GLXRenderer \endcode
+directory.
+
+The source code for the OpenGL ES 2.0/X11-based reference renderer is available in the
+\code <package_root>/LayerManagerPlugins/Renderers/Platform/X11GLESRenderer \endcode
+directory.
+
 \section rendererPackagePublicInterface Public Interface
 
-See \ref RendererAPI.
+The interface of the Renderer package is described in more detail in \ref RendererAPI.
 
 */
diff --git a/doc/13_implementation_notes.dox b/doc/13_implementation_notes.dox
new file mode 100644 (file)
index 0000000..f689b88
--- /dev/null
@@ -0,0 +1,59 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
+/*!
+
+\page implementationNotes Implementation Notes
+
+The Layer Management service consists of platform independent
+and platform dependent components. On each platform a separate
+renderer and if required a separate communicator have to be
+implemented.
+
+\section implementationNotesReferenceCommunicator Reference Communicator
+
+The GENIVI reference communicator implementation depends on
+\li DBUS interface.
+
+\section implementationNotesOpenGLRenderer OpenGL Reference Renderer
+
+The OpenGL based renderer uses
+\li X-Composite
+\li X-Damage
+
+to access the content of different applications and depends on
+\li the glx extension GLX_EXT_Texture_from_pixmap
+\li the blending mode of OpenGL
+
+for compositing.
+
+\section implementationNotesOpenGLESRenderer OpenGL ES 2.0 Reference Renderer
+
+The OpenGL ES 2.0 based renderer uses
+\li X-Composite
+\li X-Damage 
+
+to access the content of different applications and depends on
+\li glEGLImageTargetTexture2DOES
+\li eglCreateImageKHR
+\li eglDestroyImageKHR
+\li support for creating an egl image from an X11 pixmap
+
+for compositing.
+
+*/
diff --git a/doc/13_testing.dox b/doc/13_testing.dox
deleted file mode 100644 (file)
index d827aad..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/*!
-
-\page implementationNotes Implementation Notes
-
-The Layer Management service consists of platform independent
-and platform dependent components. On each platform a separate
-renderer and if required a separate communicator have to be
-implemented. The GENIVI reference implementation uses for
-the communicator a DBUS interface and for the reference renderer an X11
-renderer which is using X-Composite and X-Damage to access the
-content of different applications. For the compositing itself the
-glx extension GLX_EXT_Texture_from_pixmap and the blending mode
-of OpenGL/OpenGL ES are used.
-
-*/
diff --git a/doc/14_implementation_notes.dox b/doc/14_implementation_notes.dox
deleted file mode 100644 (file)
index 834de8c..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*!
-
-\page testing Testing
-
-All packages (Communication, Renderers, Scene and Layermanager) must be tested on
-their own. The division of the Layer Management Service into these packages
-provides an easy usage of black box testing. For example all communication packages
-should be black box tested by configuring the communication package under test
-with a mock Layer Management, then using the provided communication channel it
-should be verified, that received messages result in “execute” calls to the Layer
-Management. This way the wanted functionality of communication packages can be
-tested fully.
-
-In a similar way, renderers can be tested by providing certain constellations of
-layers, surfaces and their properties in a mock Layerlist. This mock layerlist is
-then given to the renderer under test and then checking for the desired output of
-the renderer (positioning, overlapping, transparency etc).
-
-The implementation of the Scene can also be tested by automatic tests,
-inserting new layers, groups and surfaces, then changing properties and comparing
-the results of subsequent calls to getter methods with the desired values.
-
-For a smoke test based approach constellations of communication packages and
-renderers can be tested by starting up the Layer Management, inserting automated
-messages into the communication channel and comparing the rendered result to the
-desired output or resulting changes.
-
-*/
diff --git a/doc/14_testing.dox b/doc/14_testing.dox
new file mode 100644 (file)
index 0000000..7ce1d2a
--- /dev/null
@@ -0,0 +1,56 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
+/*!
+
+\page testing Testing
+
+\section testingOverview Overview
+
+All packages (Communicator, Renderers, Scene and Layermanager) must be tested on
+their own. The division of the Layer Management Service into these packages
+provides an easy usage of black box testing.
+
+For a smoke test based approach constellations of communicator packages and
+renderers can be tested by starting up the Layer Management, inserting automated
+messages into the communicator channel and comparing the rendered result to the
+desired output or resulting changes.
+
+\section testingCommunicator Communicator
+
+All communicator packages
+should be black box tested by configuring the communicator package under test
+with a mock Layer Management, then using the provided communicator channel it
+should be verified, that received messages result in “execute” calls to the Layer
+Management. This way the wanted functionality of communicator packages can be
+tested fully.
+
+\section testingRenderers Renderers
+
+In a similar way, renderers can be tested by providing certain constellations of
+layers, surfaces and their properties in a mock Layerlist. This mock layerlist is
+then given to the renderer under test and then checking for the desired output of
+the renderer (positioning, overlapping, transparency etc).
+
+\section testingScene Scene
+
+The implementation of the Scene can also be tested by automatic tests,
+inserting new layers, groups and surfaces, then changing properties and comparing
+the results of subsequent calls to getter methods with the desired values.
+
+*/
index 5d4d9e6..4f3a306 100644 (file)
@@ -1,3 +1,21 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
 /*!
 
 \page traceability Traceability to the Requirements
index 9620556..4ec42e2 100644 (file)
@@ -1,3 +1,21 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
 /*!
 
 \page constraintsAndAssumptions Constraints and Assumptions
index b4b23f1..d8851b0 100644 (file)
@@ -1,3 +1,21 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
 /*!
 
 \page futureRequirements Future Requirements
index ad0a0e2..1688748 100755 (executable)
Binary files a/doc/images/UML_model/LayerManagerSpecification_Diagrams.eap and b/doc/images/UML_model/LayerManagerSpecification_Diagrams.eap differ
diff --git a/doc/images/command_flow.png b/doc/images/command_flow.png
new file mode 100755 (executable)
index 0000000..bf784c3
Binary files /dev/null and b/doc/images/command_flow.png differ
index cf0c3fc..6b83a5a 100755 (executable)
Binary files a/doc/images/layer_management_package_interaction.png and b/doc/images/layer_management_package_interaction.png differ
index bce0c4d..930fd4d 100755 (executable)
Binary files a/doc/images/layer_management_packages.png and b/doc/images/layer_management_packages.png differ
diff --git a/doc/images/layermanager_lifecycle.png b/doc/images/layermanager_lifecycle.png
new file mode 100755 (executable)
index 0000000..acf1a4b
Binary files /dev/null and b/doc/images/layermanager_lifecycle.png differ
diff --git a/doc/images/uml_sequence_example.png b/doc/images/uml_sequence_example.png
deleted file mode 100755 (executable)
index f2c05fc..0000000
Binary files a/doc/images/uml_sequence_example.png and /dev/null differ
diff --git a/doc/images/uml_sequence_example_ids_managed_by_application.png b/doc/images/uml_sequence_example_ids_managed_by_application.png
new file mode 100755 (executable)
index 0000000..4bcfdf7
Binary files /dev/null and b/doc/images/uml_sequence_example_ids_managed_by_application.png differ
diff --git a/doc/images/uml_sequence_example_ids_managed_by_layermanagement.png b/doc/images/uml_sequence_example_ids_managed_by_layermanagement.png
new file mode 100755 (executable)
index 0000000..f8fbeb5
Binary files /dev/null and b/doc/images/uml_sequence_example_ids_managed_by_layermanagement.png differ
index b7723a3..791cb9e 100755 (executable)
Binary files a/doc/images/with_central_control_instance.png and b/doc/images/with_central_control_instance.png differ
index 6b62cbc..6fb2fde 100644 (file)
@@ -1,3 +1,21 @@
+%**************************************************************************
+%
+% Copyright 2012 BMW Car IT GmbH
+%
+%
+% Licensed under the Apache License, Version 2.0 (the "License");
+% you may not use this file except in compliance with the License.
+% You may obtain a copy of the License at
+%
+%        http://www.apache.org/licenses/LICENSE-2.0
+%
+% Unless required by applicable law or agreed to in writing, software
+% distributed under the License is distributed on an "AS IS" BASIS,
+% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+% See the License for the specific language governing permissions and
+% limitations under the License.
+%
+%***************************************************************************
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{doxygen}
 
index bf3f81e..7fcc334 100644 (file)
@@ -1,3 +1,21 @@
+%**************************************************************************
+%
+% Copyright 2012 BMW Car IT GmbH
+%
+%
+% Licensed under the Apache License, Version 2.0 (the "License");
+% you may not use this file except in compliance with the License.
+% You may obtain a copy of the License at
+%
+%        http://www.apache.org/licenses/LICENSE-2.0
+%
+% Unless required by applicable law or agreed to in writing, software
+% distributed under the License is distributed on an "AS IS" BASIS,
+% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+% See the License for the specific language governing permissions and
+% limitations under the License.
+%
+%***************************************************************************
 \documentclass[a4paper]{article}
 \usepackage{a4wide}
 \usepackage{makeidx}
 \fi
 \usepackage[utf8]{inputenc}
 \usepackage{doxygen}
-\lstset{language=C++,inputencoding=utf8,basicstyle=\footnotesize,breaklines=true,breakatwhitespace=true,tabsize=8,numbers=left }
+\lstset{language=C++,inputencoding=utf8,basicstyle=\footnotesize,breaklines=true,breakatwhitespace=true,tabsize=4,numbers=left }
 \makeindex
 \setcounter{tocdepth}{2}
 \renewcommand{\footrulewidth}{0.4pt}
+
+
+\lfoot{}
+\cfoot{Component Design for $projectname, Version 2.0}
+\rfoot{}
+
+
 \begin{document}
 \hypersetup{pageanchor=false}
 \begin{titlepage}
index 28d5403..84ad63b 100755 (executable)
@@ -3,16 +3,22 @@
 LATEX_PATH=./doc_generated/latex
 PDF_NAME=GENIVI_LayerManagement_Design_v2_0_MG0001
 
+
+#==============================================================================
 echo "starting doxygen."
+#==============================================================================
 echo "generating html and latex documentation..."
 doxygen
 
-# doxygen will generate more section of the document
+#==============================================================================
+echo "patching latex main document..."
+#==============================================================================
+# doxygen will generate more sections of the document
 # than neccessary for the specififcation document.
 # This processing step removes the unneccessary sections
 # from the main latex file, so they won't be included in
 # the resulting PDF file.
-echo "patching latex main document..."
+
 MAIN_PAGE=`cat $LATEX_PATH/refman.tex`
 echo "$MAIN_PAGE" \
     | grep -Ev "{struct|{class" \
@@ -22,14 +28,23 @@ echo "$MAIN_PAGE" \
     | grep -Ev "{Class Documentation}" \
 > $LATEX_PATH/refman.tex
 
+
+#==============================================================================
 echo "creating PDF from latex documentation."
+#==============================================================================
 cd $LATEX_PATH
 make &> /dev/null
 cd -
 
+
+#==============================================================================
 echo "applying name to PDF document..."
+#==============================================================================
 cp $LATEX_PATH/refman.pdf ./$PDF_NAME.pdf
 
+
+#==============================================================================
 echo "The LayerManagement specification was stored here:"
+#==============================================================================
 echo "`pwd`/$PDF_NAME.pdf"