1 /***************************************************************************
3 * Copyright 2010,2011 BMW Car IT GmbH
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 ****************************************************************************/
19 #ifndef _DBUSCOMMUNICATOR_H_
20 #define _DBUSCOMMUNICATOR_H_
23 * \defgroup DbusCommunicator DBUS Communicator API
26 #include "ICommunicator.h"
29 #include "ICommandExecutor.h"
30 #include "IApplicationReference.h"
31 #include "ApplicationReferenceMap.h"
32 #include "CommitCommand.h"
33 #include "LayerCreateCommand.h"
34 #include "LayergroupCreateCommand.h"
35 #include "SurfaceCreateCommand.h"
36 #include "SurfacegroupCreateCommand.h"
37 #include "SurfaceGetDimensionCommand.h"
38 #include "LayerGetDimensionCommand.h"
39 #include "SurfaceGetOpacityCommand.h"
40 #include "LayerGetOpacityCommand.h"
41 #include "SurfaceGetPixelformatCommand.h"
42 #include "LayerGetVisibilityCommand.h"
43 #include "SurfaceGetVisibilityCommand.h"
44 #include "LayerAddSurfaceCommand.h"
45 #include "LayerRemoveSurfaceCommand.h"
46 #include "LayerRemoveCommand.h"
47 #include "SurfaceRemoveCommand.h"
48 #include "LayergroupRemoveCommand.h"
49 #include "SurfacegroupRemoveCommand.h"
50 #include "SurfaceGetOrientationCommand.h"
51 #include "LayerGetOrientationCommand.h"
52 #include "LayergroupAddLayerCommand.h"
53 #include "LayergroupRemoveLayerCommand.h"
54 #include "LayerSetDestinationRectangleCommand.h"
55 #include "SurfaceSetDestinationRectangleCommand.h"
56 #include "LayerSetOpacityCommand.h"
57 #include "LayergroupSetOpacityCommand.h"
58 #include "SurfaceSetOpacityCommand.h"
59 #include "SurfacegroupSetOpacityCommand.h"
60 #include "LayerSetSourceRectangleCommand.h"
61 #include "SurfaceSetSourceRectangleCommand.h"
62 #include "LayerSetOrientationCommand.h"
63 #include "SurfaceSetOrientationCommand.h"
64 #include "SurfacegroupAddSurfaceCommand.h"
65 #include "SurfacegroupRemoveSurfaceCommand.h"
66 #include "LayerSetVisibilityCommand.h"
67 #include "SurfaceSetVisibilityCommand.h"
68 #include "LayergroupSetVisibilityCommand.h"
69 #include "SurfacegroupSetVisibilityCommand.h"
70 #include "DebugCommand.h"
71 #include "ExitCommand.h"
72 #include "ScreenSetRenderOrderCommand.h"
73 #include "LayerSetRenderOrderCommand.h"
74 #include "LayerSetDimensionCommand.h"
75 #include "SurfaceSetDimensionCommand.h"
76 #include "LayerSetPositionCommand.h"
77 #include "SurfaceSetPositionCommand.h"
78 #include "LayerGetPositionCommand.h"
79 #include "SurfaceGetPositionCommand.h"
80 #include "ShaderCreateCommand.h"
81 #include "ShaderDestroyCommand.h"
82 #include "SurfaceSetShaderCommand.h"
83 #include "ShaderSetUniformsCommand.h"
84 #include "ScreenDumpCommand.h"
85 #include "LayerDumpCommand.h"
86 #include "SurfaceDumpCommand.h"
87 #include "SurfaceSetNativeContentCommand.h"
89 #include <dbus/dbus.h>
90 #include "DBUSTypes.h"
92 class DBUSCommunicator: public ICommunicator
95 DBUSCommunicator(ICommandExecutor* executor);
96 virtual ~DBUSCommunicator() {}
99 virtual void process(int timeout_ms);
100 virtual void setdebug(bool onoff);
101 void ServiceConnect(DBusConnection* conn, DBusMessage* msg);
102 void ServiceDisconnect(DBusConnection* conn, DBusMessage* msg);
103 void Debug(DBusConnection* conn, DBusMessage* msg);
104 void ScreenShot(DBusConnection* conn, DBusMessage* msg);
105 void ScreenShotOfLayer(DBusConnection* conn, DBusMessage* msg);
106 void ScreenShotOfSurface(DBusConnection* conn, DBusMessage* msg);
107 void GetScreenResolution(DBusConnection* conn, DBusMessage* msg);
108 void GetNumberOfHardwareLayers(DBusConnection* conn, DBusMessage* msg);
109 void GetScreenIDs(DBusConnection* conn, DBusMessage* msg);
110 void ListAllLayerIDS(DBusConnection* conn, DBusMessage* msg);
111 void ListAllLayerIDsOnScreen(DBusConnection* conn, DBusMessage* msg);
112 void ListAllSurfaceIDS(DBusConnection* conn, DBusMessage* msg);
113 void ListAllLayerGroupIDS(DBusConnection* conn, DBusMessage* msg);
114 void ListAllSurfaceGroupIDS(DBusConnection* conn, DBusMessage* msg);
115 void ListSurfacesOfSurfacegroup(DBusConnection* conn, DBusMessage* msg);
116 void ListLayersOfLayergroup(DBusConnection* conn, DBusMessage* msg);
117 void ListSurfaceofLayer(DBusConnection* conn, DBusMessage* msg);
118 void GetPropertiesOfSurface(DBusConnection* conn, DBusMessage* msg);
119 void GetPropertiesOfLayer(DBusConnection* conn, DBusMessage* msg);
120 void CreateSurface(DBusConnection* conn, DBusMessage* msg);
121 void InitializeSurface(DBusConnection* conn, DBusMessage* msg);
122 void InitializeSurfaceFromId(DBusConnection* conn, DBusMessage* msg);
123 void CreateSurfaceFromId(DBusConnection* conn, DBusMessage* msg);
124 void SetSurfaceNativeContent(DBusConnection* conn, DBusMessage* msg);
125 void RemoveSurface(DBusConnection* conn, DBusMessage* msg);
126 void CreateLayer(DBusConnection* conn, DBusMessage* msg);
127 void CreateLayerFromId(DBusConnection* conn, DBusMessage* msg);
128 void CreateLayerWithDimension(DBusConnection* conn, DBusMessage* msg);
129 void CreateLayerFromIdWithDimension(DBusConnection* conn, DBusMessage* msg);
130 void RemoveLayer(DBusConnection* conn, DBusMessage* msg);
131 void AddSurfaceToSurfaceGroup(DBusConnection* conn, DBusMessage* msg);
132 void RemoveSurfaceFromSurfaceGroup(DBusConnection* conn, DBusMessage* msg);
133 void AddLayerToLayerGroup(DBusConnection* conn, DBusMessage* msg);
134 void RemoveLayerFromLayerGroup(DBusConnection* conn, DBusMessage* msg);
135 void AddSurfaceToLayer(DBusConnection* conn, DBusMessage* msg);
136 void RemoveSurfaceFromLayer(DBusConnection* conn, DBusMessage* msg);
137 void CreateSurfaceGroup(DBusConnection* conn, DBusMessage* msg);
138 void CreateSurfaceGroupFromId(DBusConnection* conn, DBusMessage* msg);
139 void RemoveSurfaceGroup(DBusConnection* conn, DBusMessage* msg);
140 void CreateLayerGroup(DBusConnection* conn, DBusMessage* msg);
141 void CreateLayerGroupFromId(DBusConnection* conn, DBusMessage* msg);
142 void RemoveLayerGroup(DBusConnection* conn, DBusMessage* msg);
143 void SetSurfaceSourceRegion(DBusConnection* conn, DBusMessage* msg);
144 void SetLayerSourceRegion(DBusConnection* conn, DBusMessage* msg);
145 void SetSurfaceDestinationRegion(DBusConnection* conn, DBusMessage* msg);
146 void SetSurfacePosition(DBusConnection* conn, DBusMessage* msg);
147 void GetSurfacePosition(DBusConnection* conn, DBusMessage* msg);
148 void SetSurfaceDimension(DBusConnection* conn, DBusMessage* msg);
149 void SetLayerDestinationRegion(DBusConnection* conn, DBusMessage* msg);
150 void SetLayerPosition(DBusConnection* conn, DBusMessage* msg);
151 void GetLayerPosition(DBusConnection* conn, DBusMessage* msg);
152 void SetLayerDimension(DBusConnection* conn, DBusMessage* msg);
153 void GetLayerDimension(DBusConnection* conn, DBusMessage* msg);
154 void GetSurfaceDimension(DBusConnection* conn, DBusMessage* msg);
155 void SetSurfaceOpacity(DBusConnection* conn, DBusMessage* msg);
156 void SetLayerOpacity(DBusConnection* conn, DBusMessage* msg);
157 void SetSurfacegroupOpacity(DBusConnection* conn, DBusMessage* msg);
158 void SetLayergroupOpacity(DBusConnection* conn, DBusMessage* msg);
159 void GetSurfaceOpacity(DBusConnection* conn, DBusMessage* msg);
160 void GetLayerOpacity(DBusConnection* conn, DBusMessage* msg);
161 void GetSurfacegroupOpacity(DBusConnection* conn, DBusMessage* msg);
162 void GetLayergroupOpacity(DBusConnection* conn, DBusMessage* msg);
163 void SetSurfaceOrientation(DBusConnection* conn, DBusMessage* msg);
164 void GetSurfaceOrientation(DBusConnection* conn, DBusMessage* msg);
165 void SetLayerOrientation(DBusConnection* conn, DBusMessage* msg);
166 void GetLayerOrientation(DBusConnection* conn, DBusMessage* msg);
167 void GetSurfacePixelformat(DBusConnection* conn, DBusMessage* msg);
168 void SetSurfaceVisibility(DBusConnection* conn, DBusMessage* msg);
169 void SetLayerVisibility(DBusConnection* conn, DBusMessage* msg);
170 void GetSurfaceVisibility(DBusConnection* conn, DBusMessage* msg);
171 void GetLayerVisibility(DBusConnection* conn, DBusMessage* msg);
172 void SetSurfacegroupVisibility(DBusConnection* conn, DBusMessage* msg);
173 void SetLayergroupVisibility(DBusConnection* conn, DBusMessage* msg);
174 void SetRenderOrderOfLayers(DBusConnection* conn, DBusMessage* msg);
175 void SetSurfaceRenderOrderWithinLayer(DBusConnection* conn, DBusMessage* msg);
176 void GetLayerType(DBusConnection* conn, DBusMessage* msg);
177 void GetLayertypeCapabilities(DBusConnection* conn, DBusMessage* msg);
178 void GetLayerCapabilities(DBusConnection* conn, DBusMessage* msg);
179 void FadeIn(DBusConnection* conn, DBusMessage* msg);
180 void SynchronizedFade(DBusConnection* conn, DBusMessage* msg);
181 void FadeOut(DBusConnection* conn, DBusMessage* msg);
182 void Exit(DBusConnection* conn, DBusMessage* msg);
183 void CommitChanges(DBusConnection* conn, DBusMessage* msg);
184 void CreateShader(DBusConnection* conn, DBusMessage* msg);
185 void DestroyShader(DBusConnection* conn, DBusMessage* msg);
186 void SetShader(DBusConnection* conn, DBusMessage* msg);
187 void SetUniforms(DBusConnection* conn, DBusMessage* msg);
188 DBusHandlerResult delegateMessage(DBusConnection* conn, DBusMessage* msg);
192 void AddClientWatch(DBusConnection *conn, char* sender);
193 void RemoveClientWatch(DBusConnection *conn, char* sender);
194 void RemoveApplicationReference(char* owner);
195 static DBusHandlerResult processMessageFunc(DBusConnection* conn,DBusMessage* msg, void *user_data);
196 static void unregisterMessageFunc(DBusConnection* conn, void *user_data);
200 #endif /* _DBUSCOMMUNICATOR_H_ */