LayerManagement: Updated doxygen documentation for Discovery Compliance Freeze
authorTimo Lotterbach <timo.lotterbach@bmw-carit.de>
Tue, 7 Feb 2012 12:30:54 +0000 (13:30 +0100)
committerTimo Lotterbach <timo.lotterbach@bmw-carit.de>
Thu, 16 Feb 2012 08:40:18 +0000 (09:40 +0100)
Updated text to reflect current state of LayerManagement.
Updated Version String inside doxygen Configuration, Document Version is 2.0.
Added new graphic, updated existing graphics.
Resized all graphics to 120mm width.

35 files changed:
Doxyfile
LayerManagerClient/ilmClient/include/ilm_client.h
LayerManagerService/include/GraphicalObject.h
LayerManagerService/include/GraphicalSurface.h
LayerManagerService/include/IRenderer.h
LayerManagerService/include/IScene.h
LayerManagerService/include/Shader.h
LayerManagerService/include/ShaderProgram.h
LayerManagerService/include/ShaderProgramFactory.h
LayerManagerService/include/ShaderUniform.h
LayerManagerService/src/Scene.cpp
doc/00_doxygen_setup.dox [new file with mode: 0644]
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_testing.dox
doc/14_implementation_notes.dox
doc/16_constraints_and_assumptions.dox
doc/images/class_diagram_internal_container_types.png
doc/images/layer_management_communicator_structure.png [new file with mode: 0755]
doc/images/layer_management_package_dependencies.png
doc/images/layer_management_package_interaction.png
doc/images/layer_management_packages.png
doc/images/layer_management_service_control_package.png
doc/images/overall_component_model.png
doc/images/purpose_genivi.png
doc/images/relation_of_display_layers_surfaces.png
doc/images/uml_sequence_example.png
doc/images/with_central_control_instance.png
doc/tex/header.tex

index 6d3b94a..17ac7c8 100644 (file)
--- a/Doxyfile
+++ b/Doxyfile
@@ -25,13 +25,13 @@ DOXYFILE_ENCODING      = UTF-8
 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded
 # by quotes) that should identify the project.
 
-PROJECT_NAME           = "GENIVI LayerManagement"
+PROJECT_NAME           = "GENIVI LayerManagement 0.9.5"
 
 # The PROJECT_NUMBER tag can be used to enter a project or revision number.
 # This could be handy for archiving the generated documentation or
 # if some version control system is used.
 
-PROJECT_NUMBER         = 0.9.5
+PROJECT_NUMBER         = "2.0"
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
 # base path where the generated documentation will be put.
@@ -632,7 +632,7 @@ EXCLUDE_PATTERNS       =  */test/* */tests/*
 # wildcard * is used, a substring. Examples: ANamespace, AClass,
 # AClass::ANamespace, ANamespace::*Test
 
-EXCLUDE_SYMBOLS        = Vector2 _ilm_param t_ilm_param
+EXCLUDE_SYMBOLS        =
 
 # The EXAMPLE_PATH tag can be used to specify one or more files or
 # directories that contain example code fragments that are included (see
@@ -752,7 +752,7 @@ VERBATIM_HEADERS       = NO
 # of all compounds will be generated. Enable this if the project
 # contains a lot of classes, structs, unions or interfaces.
 
-ALPHABETICAL_INDEX     = YES
+ALPHABETICAL_INDEX     = NO
 
 # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
 # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
@@ -1639,5 +1639,3 @@ DOT_CLEANUP            = YES
 ALIASES += frequency="\xrefitem frequency \"Expected Frequency\" \"LayerManagement Command Frequency Overview\""
 ALIASES += action="\xrefitem action \"Action Taken\" \"LayerManagement Command Action Overview\""
 
-#ALIASES += frequency="\b Expected \b Call \b Frequency:\\"
-#ALIASES += action="\b Action \bTaken:\\"
index 626afef..53b7bc6 100644 (file)
@@ -339,7 +339,7 @@ ilmErrorTypes ilm_layerGetPosition(t_ilm_layer layerId, t_ilm_uint *pPosition);
  * \brief Sets the horizontal and vertical position of the layer.
  * \ingroup ilmClient
  * \param[in] layerId Id of layer.
- * \param[in] Pposition pointer to an array where the position is stored.
+ * \param[in] pPosition pointer to an array where the position is stored.
  *                      dimension[0]=x, dimension[1]=y
  * \return ILM_TRUE if the method call was successful
  * \return ILM_FAILED if the client can not call the method on the service.
@@ -479,9 +479,8 @@ ilmErrorTypes ilm_layergroupSetOpacity(t_ilm_layergroup group, t_ilm_float opaci
  * \param[in] width The original width of the surface
  * \param[in] height The original height of the surface
  * \param[in] pixelFormat The pixelformat to be used for the surface
- * \param[in/out] pSurfaceId
- *                The value pSurfaceId points to is used as ID for new surface;
- *                The ID of the newly created surface is returned in this parameter
+ * \param[in] pSurfaceId The value pSurfaceId points to is used as ID for new surface;
+ * \param[out] pSurfaceId The ID of the newly created surface is returned in this parameter
  *
  * \return ILM_TRUE if the method call was successful
  * \return ILM_FAILED if the client can not call the method on the service.
@@ -491,9 +490,8 @@ ilmErrorTypes ilm_surfaceCreate(t_ilm_nativehandle nativehandle, t_ilm_int width
 /**
  * \brief Create the logical surface, which has no native buffer associated
  * \ingroup ilmClient
- * \param[in/out] pSurfaceId
- *                The value pSurfaceId points to is used as ID for new surface;
- *                The ID of the newly created surface is returned in this parameter
+ * \param[in] pSurfaceId The value pSurfaceId points to is used as ID for new surface;
+ * \param[out] pSurfaceId The ID of the newly created surface is returned in this parameter
  * \return ILM_TRUE if the method call was successful
  * \return ILM_FAILED if the client can not call the method on the service.
  */
index 2c722f1..3e4d408 100644 (file)
@@ -39,7 +39,7 @@ public:
 
     /**
      * @brief Set alpha value
-     * @param alpha The new Alpha Value between 0.0 (full transparency) and 1.0 (fully visible)
+     * @param[in] newOpacity The new Alpha Value between 0.0 (full transparency) and 1.0 (fully visible)
      */
     virtual void setOpacity(double newOpacity);
 
@@ -51,7 +51,7 @@ public:
 
        /**
         * Set the visibility
-        * @param visible set this object visible (true) or invisible (false)
+        * @param[in] newVisibility set this object visible (true) or invisible (false)
         */
        virtual void setVisibility(bool newVisibility);
 
@@ -66,7 +66,7 @@ public:
        /**
         * Assign custom shader for rendering
         *
-        * @param s   Custom shader. If NULL, default shader will be used.
+        * @param[in] s Custom shader. If NULL, default shader will be used.
         */
        void setShader(Shader* s);
 
index 4b180f7..5bf915f 100644 (file)
@@ -38,19 +38,16 @@ public:
     virtual ~GraphicalSurface() {}
 
     /**
-     * Set Orientation value
-     * @param orientation the new value. Multiples of 90 degrees. (0->0°, 1->90°, 2->180°,3->279°)
+     * @brief Set Orientation value
+     * @param[in] newOrientation the new value. Multiples of 90 degrees. (0->0°, 1->90°, 2->180°,3->279°)
      */
     void setOrientation(OrientationType newOrientation);
 
     OrientationType getOrientation() const;
 
     /**
-     * Set Source Viewport (only use portion of source graphics)
-     * @param x Horizontal x position within source (clip from the left)
-     * @param y Vertical y position within source (clip from the top)
-     * @param width Width within source (can be used to clip from the right)
-     * @param height Height within source (can be used to clip fromt he bottom)
+     * @brief Set Source Viewport (only use portion of source graphics)
+     * @param[in] newSource Rectangle defining position and size within surface (clip from the left)
      */
     void setSourceRegion(const Rectangle& newSource);
 
@@ -58,10 +55,7 @@ public:
 
     /**
      * Set Destination Viewport (Scale output)
-     * @param x Horizontal x position of destination
-     * @param y Vertical y position of destination
-     * @param width Width of destination
-     * @param height Height of destination
+     * @param[in] newDestination Rectangle defining destination position and size
      */
     void setDestinationRegion(const Rectangle& newDestination);
 
@@ -74,8 +68,8 @@ public:
     Vector2 getDimension();
 
     /**
-     * @Description Indicate if a x,y position is inside the destination region.
-     *              Attention: Graphical Surface rotation is not yet supported.
+     * @brief Indicate if a x,y position is inside the destination region.
+     *        Attention: Graphical Surface rotation is not yet supported.
      * @param x_DestCoordinateSyst x position in the destination coordinate system
      * @param y_DestCoordinateSyst y position in the destination coordinate system
      * @return TRUE if the position is inside the destination region
@@ -83,15 +77,15 @@ public:
     bool isInside(unsigned int x_DestCoordinateSyst, unsigned int y_DestCoordinateSyst) const;
 
     /**
-     * @Description Transform a x,y position from destination coordinate system to
+     * @brief Transform a x,y position from destination coordinate system to
      *              source coordinate system. Attention, to get valid result the x,y
      *              positions given in parameter must be located within the destination
      *              region of the GraphicalSurface
      *
-     * @param x in/out : IN    x position in the destination coordinate system
-     *                   OUT   x position in the source coordinate system
-     * @param y in/out : IN    y position in the destination coordinate system
-     *                   OUT   y position in the source coordinate system
+     * @param[in]  x x position in the destination coordinate system
+     * @param[out] x x position in the source coordinate system
+     * @param[in] y y position in the destination coordinate system
+     * @param[out] y y position in the source coordinate system
      * @param check If TRUE, a test will be done to make sure the x,y positions
      *              given in parameter are located within the destination region.
      *
index 22f1deb..7dd6c44 100644 (file)
@@ -82,6 +82,7 @@ public:
      * \ingroup    RendererAPI
      * \param[in]  fileToSave path to bitmap file to store the graphical content
      * \param[in]  id id of surface
+     * \param[in]  layer_id id of layer
      */
     virtual void doScreenShotOfSurface(std::string fileToSave, const unsigned int id, const unsigned int layer_id) = 0;
 
index fdaa804..7569a87 100644 (file)
@@ -45,8 +45,6 @@ public:
     /**
      * \brief default destructor
      * \ingroup SceneAPI
-     * \param[in]
-     * \return
      */
     virtual ~IScene() {}
 
@@ -85,14 +83,14 @@ public:
     /**
      * \brief Remove a layer from the scene.
      * \ingroup SceneAPI
-     * \param[in] pointer to layer
+     * \param[in] layer pointer to layer
      */
     virtual void removeLayer(Layer* layer) = 0;
 
     /**
      * \brief Remove surface from scene.
      * \ingroup SceneAPI
-     * \param[in] pointer to surface
+     * \param[in] surface pointer to surface
      */
     virtual void removeSurface(Surface* surface) = 0;
 
index b038a7b..b4271c6 100644 (file)
@@ -38,8 +38,8 @@ class Shader
 public:
     /**
      * Creates a new shader instance by vertex and fragment shader name.
-     * @param vertName   File name of vertex shader.
-     * @param fragName   File name of fragment shader.
+     * @param vertFileName   File name of vertex shader.
+     * @param fragFileName   File name of fragment shader.
      * @return new Shader instance, NULL if shader could not be loaded, compiled or linked.
      */
     static Shader* createShader(const string& vertFileName, const string& fragFileName);
index 65daa70..e4653ff 100644 (file)
@@ -59,8 +59,8 @@ public:
      * Return a shader program from the gobal list. If no matching instance is found, a new
      * one will be created and added to the list.
      *
-     * @param vertName   File name of vertex shader.
-     * @param fragName   File name of fragment shader.
+     * @param vertFileName   File name of vertex shader.
+     * @param fragFileName   File name of fragment shader.
      * @return new Program instance, NULL if shader could not be loaded, compiled or linked.
      */
     static ShaderProgram* obtain(const string& vertFileName, const string& fragFileName);
@@ -133,8 +133,8 @@ protected:
      * Protected constructor.
      * New instances of this class are supposed to be created by the shader program factory.
      *
-     * @param vertName    File name of vertex shader.
-     * @param fragName    File name of fragment shader.
+     * @param vertFileName    File name of vertex shader.
+     * @param fragFileName    File name of fragment shader.
      */
     ShaderProgram(const string& vertFileName, const string& fragFileName);
 
index 038d47f..1069ef9 100644 (file)
@@ -33,8 +33,8 @@ public:
     /**
      * Create a new shader program.
      *
-     * @param vertName   File name of vertex shader.
-     * @param fragName   File name of fragment shader.
+     * @param vertFileName   File name of vertex shader.
+     * @param fragFileName   File name of fragment shader.
      * @return new Program instance, NULL if program could not be created.
      */
     static ShaderProgram* createProgram(const string& vertFileName, const string& fragFileName);
index 9d822b9..96c5e31 100644 (file)
@@ -64,7 +64,7 @@ public:
      *    "uSize 2f 1 2.5 1.25"
      *    "uTransform 4f 1 0 1.0 0.0 0.0 1.0 0.0 ..."
      *
-     * @param desc  The description
+     * @param description  The description
      * @return Uniform object or NULL in case of a parse error
      */
     static ShaderUniform* createFromStringDescription(const string& description);
@@ -101,7 +101,7 @@ public:
      *
      * @param type   Data type
      * @param count  Number of data elements
-     * @param value  Data values. Actual number of floats must be (count*(size of type)).
+     * @param values  Data values. Actual number of floats must be (count*(size of type)).
      * @param transpose  Whether to transpose a matrix. Only needed if element type is a matrix.
      */
     void setData(Type type, int count, const std::vector<float>& values, bool transpose = false);
index 76dc0ba..7bdb3cf 100644 (file)
@@ -385,7 +385,7 @@ void Scene::getLayerGroupIDs(uint* length, uint** array) const
 }
 
 /**
- * @Description:
+ * \brief:
  * Return the first Surface located below a specific coordinate, and for which
  * the opacity is above a certain level. Also translate the input coordinates
  * which are display wide into surface wide coordinates.
@@ -394,13 +394,11 @@ void Scene::getLayerGroupIDs(uint* length, uint** array) const
  * window. For this, we need to know to what is the layer / surface under the
  * (x,y) mouse pointer.
  *
- *
- *
- * @param x in/out : IN    x position in the scene
- *                   OUT   x position in the surface coordinate system
- * @param y in/out : IN    y position in the scene
- *                   OUT   y position in the surface coordinate system
- * @param minOpacity Minimal opacity that a surface should have to be elected
+ * @param[in] x x position in the scene
+ * @param[out] x x position in the surface coordinate system
+ * @param[in] y y position in the scene
+ * @param[out] y y position in the surface coordinate system
+ * @param[in] minOpacity Minimal opacity that a surface should have to be elected
  */
 Surface* Scene::getSurfaceAt(unsigned int *x, unsigned int *y, double minOpacity)
 {
diff --git a/doc/00_doxygen_setup.dox b/doc/00_doxygen_setup.dox
new file mode 100644 (file)
index 0000000..ab7e3e6
--- /dev/null
@@ -0,0 +1,10 @@
+// This file defines the order of groups in the generated documentation
+
+/**
+ * \defgroup ServiceAPI      Layer Management Service API
+ * \defgroup ilmClient       Layer Management Client API
+ * \defgroup SceneAPI        Layer Management Scene API
+ * \defgroup RendererAPI     Layer Management Renderer API
+ * \defgroup CommunicatorAPI Layer Management Communicator API
+ * \defgroup Commands        Layer Management Commands
+ */
index cf1237b..265e792 100644 (file)
@@ -5,7 +5,7 @@
 The Layer Management Service is one of a number of components that have
 been identified in the Graphics Framework Component Model. The components
 that comprise the Graphics Framework are shown in the following diagram
-and summarised in the subsequent text.
+and summarized in the subsequent text.
 
 \image html ./doc/images/overall_component_model.png Overall Component Model
 \image latex ./doc/images/overall_component_model.png Overall Component Model
index 5e01632..cc2ec77 100644 (file)
@@ -12,7 +12,7 @@ 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 initialisation method on loaded packages
+\li Call initialization method on loaded packages
 \li Call run 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
@@ -26,11 +26,10 @@ On startup the Layer Management Service shall perform the following tasks:
 This section describes the Communication interface (Inter Process Communication)
 between the Layer Management Service component and other components and external
 systems. This is the interface for other applications to communicate with the
-Layer Management. This is used to control the Layer Management Service. Chapter
-8-12 describe internal programming interfaces and are only needed when extending
+Layer Management. This is used to control the Layer Management Service. \ref designOverview
+describes internal programming interfaces and is only needed when extending
 the Layer Management Service with new communication mechanisms or renderers for
-new platforms. The IPC Message interfaces are described in terms of the
-connection, messages received and messages sent.
+new platforms. The IPC Message interfaces are described in \ref Commands.
 
 \subsection componentInterfacesConnectionPolicy Connection Policy
 
@@ -38,28 +37,30 @@ The connection to the service is handled by the used communication packages and
 as such can not be discussed here generically. The connection policy must be
 described for each implementation of a communication package to be used.
 
-The following list of methods is generic and must always be implemented in
-communication packages, additional functionality can be provided be individual
-communication implementations though.
+The list of methods defined in \ref componentInterfacesCommands is generic and must
+always be implemented in communication packages, additional functionality can be
+provided be individual communication implementations though.
 
 \subsection componentInterfacesCommands Commands
 
 See \ref Commands.
 
-\section componentInterfacesNonFunctionalRequirements Non-Functional Requirements
+\section componentInterfacesRequirements Requirements
 
 This section describes the non-functional requirements applicable to the Layer
 Management Service Component. The requirements are split into two groups: those
 directly met by the component and those where the component is supported by the
 operational infrastructure.
 
-\subsection graphic01 Requirement Graphic01: 2D / 3D content simultaneously
+\subsection componentInterfacesNonFunctionalRequirements Non-Functional Requirements
+
+\subsubsection graphic01 Requirement Graphic01: 2D / 3D content simultaneously
 
 The user wants to be able to arrange the view, e.g. in order to have a three
 dimensional map on the left side and lane guidance information on the right
 side.
 
-\subsection graphic02 Requirement Graphic02: Changing the application layout inside of a HMI system
+\subsubsection graphic02 Requirement Graphic02: Changing the application layout inside of a HMI system
 
 The user wants to be able to change the layout of the displayed applications of
 the HMI system. For example he sometimes wants to display In-Vehicle Information
@@ -69,18 +70,18 @@ delivered by e.g. the rear view application while reversing has to be on top of
 other applications without losing menu content information provided by the HMI
 System.
 
-\subsection graphic03 Requirement Graphic03: Display navigation information on a second display
+\subsubsection graphic03 Requirement Graphic03: Display navigation information on a second display
 
 Rear seat passenger wants to see current navigation relevant information, like
 map showing overview of current route, time and distance to destination and
 more.
 
-\subsection graphic04 Requirement Graphic04: Making screenshot of head unit display
+\subsubsection graphic04 Requirement Graphic04: Making screenshot of head unit display
 
 When performing evaluation of the system on bench or road test, tester might need to take
 a screenshot of the actual screen content.
 
-\subsection graphic05 Requirement Graphic05: Showing Additional Information on Top
+\subsubsection graphic05 Requirement Graphic05: Showing Additional Information on Top
 
 In some situations the user wants to display additional information on top of e.g. a map
 provided by the navigation system. This information may include:
@@ -91,7 +92,7 @@ provided by the navigation system. This information may include:
 \li Speed limit information
 \li On Screen Display Menu Information
 
-\subsection graphic06 Requirement Graphic06: Top of market experience while watching different application-content and additional information.
+\subsubsection graphic06 Requirement Graphic06: Top of market experience while watching different application-content and additional information.
 
 Today's HMI systems have to be integrate different applications depending on the
 end-user's need. Typical Applications are which have to be integrated are:
@@ -109,7 +110,7 @@ end-user's need. Typical Applications are which have to be integrated are:
 
 Therefore the user wants to have a top of market experience while watching and using application content and assistant information, without any disturbance (frame drop, unsmooth displayed animations, response delay on interaction) of the displayed content of the HMI system.
 
-\subsection graphic07 Requirement Graphic07: Using different application content
+\subsubsection graphic07 Requirement Graphic07: Using different application content
 
 The needs of end-users regarding HMI systems can have a wide variety. Therefore they
 range from only listening to audio and watching on board vehicle information to watching
@@ -130,7 +131,7 @@ Typical Applications which have to be integrated are:
 
 The user wants to use these different applications on a HMI System in parallel.
 
-\subsection graphic08 Requirement Graphic08: Showing screen content of connected CE device
+\subsubsection graphic08 Requirement Graphic08: Showing screen content of connected CE device
 
 User may want to connect smartphone device and see screen content of the
 device on the head unit display.
@@ -138,7 +139,9 @@ device on the head unit display.
 Sound output of the connected device should be redirected thru car audio device,
 input from the head unit should be redirected to the smartphone device.
 
-\section componentInterfacesRequiremetsOperationalInfrastructure Requirements placed on the Operational Infrastructure
+
+
+\subsection componentInterfacesRequiremetsOperationalInfrastructure Requirements placed on the Operational Infrastructure
 
 \li Access to graphical content of applications managed by the Window Management API.
 */
index 8e16712..efaa785 100644 (file)
@@ -22,7 +22,7 @@ position etc. The class Surface contains a pointer to a platform dependant
 “PlatformSurface” type with can store platform dependant data for renderers
 (Window handles for example).
 
-"UML sequence example" diagram shows an exemplary sequence of actions. The layermanager
+"UML sequence example" diagram shows an exemplary sequence of actions. The LayerManagement
 control is started, which in turn creates a communicator and starts it. A management
 application is run and creates an initial layer, for example for third party
 applications. The management applications then – at a later point in time – receives an
@@ -40,7 +40,10 @@ Similarly the management application would set multiple properties of multiple s
 
 The Layer Management can be used in two scenarios:
 
-\section scenarioA Scenario A: All applications talk to the Layer Management themselves and configure their output.
+\section scenarioA Scenario A: LayerManagement without Central Control Instance
+
+This scenario uses no master to control the LayerManagement setup.
+All applications talk to the Layer Management themselves and configure their output.
 
 Course of events:
 
@@ -51,7 +54,10 @@ Course of events:
 \li (5) Layermanager returns the newly created surface identifier
 \li (6) Application uses this identifier to set properties of its surface
 
-\section scenarioB Scenario B: A central control instances decides if applications are shown and where
+\section scenarioB Scenario B: LayerManagement with Central Control Instance
+
+A central control instances sets up the LayerManagement configuration.
+It has full control, which applications are shown and the way they are rendered.
 
 \image html ./doc/images/with_central_control_instance.png Example with Central Control Instance
 \image latex ./doc/images/with_central_control_instance.png Example with Central Control Instance
index e69ccbf..16e55a2 100644 (file)
@@ -7,7 +7,7 @@
 The Layer Management Service is composed of the following packages:
 
 \li Layer Management
-\li One or more Renderer packages
+\li One Renderer package
 \li One or more Communication packages
 
 The Layer Management Service component makes use of the following external packages provided by the application framework:
@@ -24,9 +24,9 @@ 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 dependencies to all software components used by the LayerManager (DL = Dynamic Linking):
+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
-\image latex ./doc/images/layer_management_package_dependencies.png Layer Management Package Dependencies
+\image html ./doc/images/layer_management_package_dependencies.png Layer Management Package Dependencies (DL = Dynamic Linking)
+\image latex ./doc/images/layer_management_package_dependencies.png Layer Management Package Dependencies (DL = Dynamic Linking)
 
 */
index 20d0055..e2a236b 100644 (file)
@@ -16,8 +16,8 @@ This is the main package for the Layer Management Service.
 \subsection layerManagementServiceDescription Description
 
 The control is responsible for loading communication and renderer packages to be used. The
-control initiates the main singleton class, which in turn contains and manages the lists
-of layers and their surfaces through the layerlist object, and the list of logical groups.
+control initiates the main class, which in turn contains and manages the scene with the list
+of layers and their surfaces through the Scene object, and the list of logical groups.
 The renderer packages are given access to these lists by the control and the communication
 packages must be able to obtain information about properties requested by clients (e.g.
 “SurfaceGetVisibility”).
index 8165f14..4a91b8b 100644 (file)
@@ -4,16 +4,15 @@
 
 \section scenePackageOverview Overview
 
-\image html ./doc/images/class_diagram_internal_container_types.png Class Diagram of Internal Container Types
-\image latex ./doc/images/class_diagram_internal_container_types.png Class Diagram of Internal Container Types
-
-\section scenePackageDescription Description
-
-The layerlist is an entity for managing the list of layers, their surfaces and the
+The scene is an entity for managing the list of layers, their surfaces and the
 respective properties. It is passed to the render packages so it can be used to
 iterate through the layers and surfaces and render these in the required render
 order.
 
+\image html ./doc/images/class_diagram_internal_container_types.png Class Diagram of Internal Container Types
+\image latex ./doc/images/class_diagram_internal_container_types.png Class Diagram of Internal Container Types
+
+
 \section scenePackagePublicInterface Public Interface
 
 See \ref SceneAPI.
index 4854ea8..51b341c 100644 (file)
@@ -12,6 +12,17 @@ control component of the Layer Management Service. This way the service has no
 dependencies towards certain ways of communication and the usage of specific
 communication libraries can be decided at runtime.
 
+On the client side it is recommended to use the \ref ilmClient for communication
+with the LayerManagerService, or to be more precise, with the loaded Communicator Plugin
+of the LayerManagerService.
+The LayerManagment client library implements an abstraction layer hiding the technical
+details of the underlying communication technology.
+This enables client applications to be used with different communication technologies
+implemented in LayerManager Communicator plugins.
+
+\image html ./images/layer_management_communicator_structure.png Layer Manager Communicator Structure 
+\image latex ./images/layer_management_communicator_structure.png Layer Manager Communicator Structure 
+
 The general procedure for communicators is to establish their specific communication
 (IPC, proprietary method, specific bus etc) and provide the message interface described
 in chapter 6. When receiving commands on this communication channel the package builds
@@ -35,6 +46,13 @@ following naming scheme:
 In order to be loadable by the layermanager, the created shared library must provide
 both of these functions.
 
+This component is to be provided by the platform supplier.
+
+The GENIVI Consortium does not mandate any specific implementation. The only constraint
+is that the proposed solution needs to fulfill the API specification. Furthermore each
+Communicator Implementation has to provide a C-API for the Client applications (like HMI,
+Browser, Navigation) to hide the used InterProcessCommunication scheme.
+
 \section communicationsPackageExample Example: Create the communication library “MyCommunicator”
 
 (1) Create the class MyCommunicator, which inherits BaseCommunicator
@@ -69,6 +87,10 @@ void destroyMyCommunicator(MyCommunicator* comm)
 
 See \ref CommunicatorAPI.
 
+\section communicationsPackageClientInterface Client Interface
+
+See \ref ilmClient.
+
 \section communicationsPackageCommandObjectReference Command Object Reference
 
 See \ref Commands.
index a56d139..2a2d31e 100644 (file)
@@ -9,9 +9,9 @@ The rendering of layers and their respective surfaces is always handled by
 rendering libraries. These are typically device dependant because of possible
 dependencies on graphics hardware or displays for example.
 
-A typical implementation of a renderer will use the pointer to the layerlist given
+A typical implementation of a renderer will use the pointer to the scene given
 in the constructor to access the list of current layers and their respective
-surfaces. In its own thread it will use the information in the layerlist to render
+surfaces. In its own thread it will use the information in the scene to render
 its content. In most cases the renderer will need specific platform information for
 each surface in order to access the actual graphical content of the platform (e.g.
 native window handles or memory addresses). For this reason a renderer can append
index b7ac26e..d827aad 100644 (file)
@@ -5,11 +5,11 @@
 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 proof of concept implementation uses for
-the communicator a d-bus interface and for the renderer an X11
+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 Open GL are used.
+of OpenGL/OpenGL ES are used.
 
 */
index 74c697e..834de8c 100644 (file)
@@ -16,7 +16,7 @@ layers, surfaces and their properties in a mock Layerlist. This mock layerlist i
 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 Layerlist can also be tested by automatic tests,
+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 5e25a45..9620556 100644 (file)
@@ -8,7 +8,7 @@ A completely platform independent solution is not possible due to the
 dependence on a specific platform for rendering and window management.
 The division of the Layer Management Service addresses this problem by
 having separate rendering packages for each target platform. The
-communication packages, main program and layerlist are not platform
+communication packages, main program and scene are not platform
 dependant. For maximum flexibility the communication and rendering
 packages must not be known at compile time of the rest of the Layer
 Management, i.e. they are loaded at runtime and integrated using a
@@ -22,7 +22,7 @@ executed at high frequency per second.
 
 \section assumptions Assumptions
 
-The Window Management API in use must provide a means for the rendering
-package to access the graphical content of individual applications.
+The Window Management API in use must provide access to the graphical
+content of individual applications for the rendering package.
 
 */
index be7fa41..aa8d8a4 100755 (executable)
Binary files a/doc/images/class_diagram_internal_container_types.png and b/doc/images/class_diagram_internal_container_types.png differ
diff --git a/doc/images/layer_management_communicator_structure.png b/doc/images/layer_management_communicator_structure.png
new file mode 100755 (executable)
index 0000000..04a4d06
Binary files /dev/null and b/doc/images/layer_management_communicator_structure.png differ
index 60a52cb..a13c092 100755 (executable)
Binary files a/doc/images/layer_management_package_dependencies.png and b/doc/images/layer_management_package_dependencies.png differ
index 52872bb..cf0c3fc 100755 (executable)
Binary files a/doc/images/layer_management_package_interaction.png and b/doc/images/layer_management_package_interaction.png differ
index c19198f..bce0c4d 100755 (executable)
Binary files a/doc/images/layer_management_packages.png and b/doc/images/layer_management_packages.png differ
index 9d13f9c..88f5e79 100755 (executable)
Binary files a/doc/images/layer_management_service_control_package.png and b/doc/images/layer_management_service_control_package.png differ
index 60fa4b0..ecddc01 100755 (executable)
Binary files a/doc/images/overall_component_model.png and b/doc/images/overall_component_model.png differ
index bbd2f11..efb28ae 100755 (executable)
Binary files a/doc/images/purpose_genivi.png and b/doc/images/purpose_genivi.png differ
index 5883c80..8681ff2 100755 (executable)
Binary files a/doc/images/relation_of_display_layers_surfaces.png and b/doc/images/relation_of_display_layers_surfaces.png differ
index 1cfa29e..f2c05fc 100755 (executable)
Binary files a/doc/images/uml_sequence_example.png and b/doc/images/uml_sequence_example.png differ
index 752e713..b7723a3 100755 (executable)
Binary files a/doc/images/with_central_control_instance.png and b/doc/images/with_central_control_instance.png differ
index 7394423..bf3f81e 100644 (file)
@@ -43,9 +43,9 @@
 \vspace{0.3cm}
 {\Large Component Design for $projectname}\\
 \vspace{0.3cm}
-{\large Version 2.0 draft}\\
+{\large Version 2.0}\\
 \vspace{0.3cm}
-{\small $date}\\
+{\small 06.02.2012}\\
 \end{center}
 
 {\large Sponsored by:}\\
@@ -114,7 +114,7 @@ Date & Document Version & Changes \\
 \hline
 13.04.2011 & 1.3 & Added Requirements tracebility, improved architecture figures and API improvements \\
 \hline
-31.01.2012 & 2.0 draft & Updated API References to LayerManagement v0.9.5, switched to auto-generation of document \\
+06.02.2012 & 2.0 & Updated API References to LayerManagement v0.9.5, updated images, switched to auto-generation of document \\
 \hline
 \end{tabular}