1 /***************************************************************************
3 * Copyright 2012 BMW Car IT GmbH
4 * Copyright (C) 2012 DENSO CORPORATION and Robert Bosch Car Multimedia Gmbh
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
19 ****************************************************************************/
20 #ifndef __GENERICCOMMUNICATOR_H__
21 #define __GENERICCOMMUNICATOR_H__
24 * \defgroup GenericCommunicator Generic Communicator API
27 #include "ICommunicator.h"
28 #include "PluginBase.h"
30 #include "IpcModuleLoader.h"
31 #include "ObjectType.h"
32 #include "ThreadBase.h"
37 class GenericCommunicator;
38 class GraphicalObject;
39 class ICommandExecutor;
42 //=============================================================================
44 //=============================================================================
45 typedef void (GenericCommunicator::*CallBackMethod)(t_ilm_message);
50 CallBackMethod function;
52 typedef std::map<std::string, MethodTable> CallBackTable;
55 //=============================================================================
57 //=============================================================================
58 class GenericCommunicator : public ICommunicator, protected ThreadBase, public PluginBase
61 GenericCommunicator(ICommandExecutor& executor, Configuration& config);
62 virtual ~GenericCommunicator() {}
67 virtual void process(int timeout_ms);
68 virtual void setdebug(bool onoff);
71 virtual t_ilm_bool threadMainLoop();
74 virtual t_ilm_const_string pluginGetName() const;
75 virtual HealthCondition pluginGetHealth();
78 void ServiceConnect(t_ilm_message message);
79 void ServiceDisconnect(t_ilm_message message);
80 void Debug(t_ilm_message message);
81 void ScreenShot(t_ilm_message message);
82 void ScreenShotOfLayer(t_ilm_message message);
83 void ScreenShotOfSurface(t_ilm_message message);
84 void GetScreenResolution(t_ilm_message message);
85 void GetNumberOfHardwareLayers(t_ilm_message message);
86 void GetScreenIDs(t_ilm_message message);
87 void ListAllLayerIDS(t_ilm_message message);
88 void ListAllLayerIDsOnScreen(t_ilm_message message);
89 void ListAllSurfaceIDS(t_ilm_message message);
90 void ListSurfaceofLayer(t_ilm_message message);
91 void GetPropertiesOfSurface(t_ilm_message message);
92 void GetPropertiesOfLayer(t_ilm_message message);
93 void CreateSurface(t_ilm_message message);
94 void InitializeSurface(t_ilm_message message);
95 void InitializeSurfaceFromId(t_ilm_message message);
96 void CreateSurfaceFromId(t_ilm_message message);
97 void SetSurfaceNativeContent(t_ilm_message message);
98 void RemoveSurfaceNativeContent(t_ilm_message message);
99 void SetSynchronizedSurfaces(t_ilm_message message);
100 void RemoveSynchronizedSurfaces(t_ilm_message message);
101 void RemoveSurface(t_ilm_message message);
102 void CreateLayer(t_ilm_message message);
103 void CreateLayerFromId(t_ilm_message message);
104 void CreateLayerWithDimension(t_ilm_message message);
105 void CreateLayerFromIdWithDimension(t_ilm_message message);
106 void RemoveLayer(t_ilm_message message);
107 void AddSurfaceToLayer(t_ilm_message message);
108 void RemoveSurfaceFromLayer(t_ilm_message message);
109 void SetSurfaceSourceRegion(t_ilm_message message);
110 void SetLayerSourceRegion(t_ilm_message message);
111 void SetSurfaceDestinationRegion(t_ilm_message message);
112 void SetSurfacePosition(t_ilm_message message);
113 void GetSurfacePosition(t_ilm_message message);
114 void SetSurfaceDimension(t_ilm_message message);
115 void SetLayerDestinationRegion(t_ilm_message message);
116 void SetLayerPosition(t_ilm_message message);
117 void GetLayerPosition(t_ilm_message message);
118 void SetLayerDimension(t_ilm_message message);
119 void GetLayerDimension(t_ilm_message message);
120 void GetSurfaceDimension(t_ilm_message message);
121 void SetSurfaceOpacity(t_ilm_message message);
122 void SetLayerOpacity(t_ilm_message message);
123 void GetSurfaceOpacity(t_ilm_message message);
124 void GetLayerOpacity(t_ilm_message message);
125 void SetSurfaceOrientation(t_ilm_message message);
126 void GetSurfaceOrientation(t_ilm_message message);
127 void SetLayerOrientation(t_ilm_message message);
128 void GetLayerOrientation(t_ilm_message message);
129 void GetSurfacePixelformat(t_ilm_message message);
130 void SetSurfaceVisibility(t_ilm_message message);
131 void SetLayerVisibility(t_ilm_message message);
132 void GetSurfaceVisibility(t_ilm_message message);
133 void GetLayerVisibility(t_ilm_message message);
134 void SetRenderOrderOfLayers(t_ilm_message message);
135 void SetSurfaceRenderOrderWithinLayer(t_ilm_message message);
136 void GetLayerType(t_ilm_message message);
137 void GetLayertypeCapabilities(t_ilm_message message);
138 void GetLayerCapabilities(t_ilm_message message);
139 void FadeIn(t_ilm_message message);
140 void SynchronizedFade(t_ilm_message message);
141 void FadeOut(t_ilm_message message);
142 void Exit(t_ilm_message message);
143 void CommitChanges(t_ilm_message message);
144 void CreateShader(t_ilm_message message);
145 void DestroyShader(t_ilm_message message);
146 void SetShader(t_ilm_message message);
147 void SetUniforms(t_ilm_message message);
148 void SetKeyboardFocusOn(t_ilm_message message);
149 void GetKeyboardFocusSurfaceId(t_ilm_message message);
150 void UpdateInputEventAcceptanceOn(t_ilm_message message);
151 void SetSurfaceChromaKey(t_ilm_message message);
152 void SetLayerChromaKey(t_ilm_message message);
153 void LayerAddNotification(t_ilm_message message);
154 void SurfaceAddNotification(t_ilm_message message);
155 void LayerRemoveNotification(t_ilm_message message);
156 void SurfaceRemoveNotification(t_ilm_message message);
157 void SetOptimizationMode(t_ilm_message message);
158 void GetOptimizationMode(t_ilm_message message);
159 void GetPropertiesOfScreen(t_ilm_message message);
162 void RemoveApplicationReference(char* owner);
163 void processNotificationQueue();
164 void sendNotification(GraphicalObject* object, t_ilm_notification_mask mask);
167 IpcModule m_ipcModule;
168 CallBackTable m_callBackTable;
170 unsigned long int mThreadId;
173 #endif // __GENERICCOMMUNICATOR_H__