15d24303c0432ea1e70ab19f3c552c37ac2686a9
[profile/ivi/genivi/genivi-audio-manager.git] / AudioManagerDaemon / src / CommandReceiver.cpp
1 /**
2 * Copyright (C) 2011, BMW AG
3 *
4 * GeniviAudioMananger AudioManagerDaemon
5 *
6 * \file CommandReveiver.cpp
7 *
8 * \date 20-Oct-2011 3:42:04 PM
9 * \author Christian Mueller (christian.ei.mueller@bmw.de)
10 *
11 * \section License
12 * GNU Lesser General Public License, version 2.1, with special exception (GENIVI clause)
13 * Copyright (C) 2011, BMW AG Christian Mueller  Christian.ei.mueller@bmw.de
14 *
15 * This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation.
16 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License, version 2.1, for more details.
17 * You should have received a copy of the GNU Lesser General Public License, version 2.1, along with this program; if not, see <http://www.gnu.org/licenses/lgpl-2.1.html>.
18 * Note that the copyright holders assume that the GNU Lesser General Public License, version 2.1, may also be applicable to programs even in cases in which the program is not a library in the technical sense.
19 * Linking AudioManager statically or dynamically with other modules is making a combined work based on AudioManager. You may license such other modules under the GNU Lesser General Public License, version 2.1. If you do not want to license your linked modules under the GNU Lesser General Public License, version 2.1, you may use the program under the following exception.
20 * As a special exception, the copyright holders of AudioManager give you permission to combine AudioManager with software programs or libraries that are released under any license unless such a combination is not permitted by the license of such a software program or library. You may copy and distribute such a system following the terms of the GNU Lesser General Public License, version 2.1, including this special exception, for AudioManager and the licenses of the other code concerned.
21 * Note that people who make modified versions of AudioManager are not obligated to grant this special exception for their modified versions; it is their choice whether to do so. The GNU Lesser General Public License, version 2.1, gives permission to release a modified version without this exception; this exception also makes it possible to release a modified version which carries forward this exception.
22 *
23 */
24
25 #include "CommandReceiver.h"
26 #include "DatabaseHandler.h"
27 #include "ControlSender.h"
28 #include <SocketHandler.h>
29 #include <config.h>
30 #include <assert.h>
31 #include <dlt/dlt.h>
32
33 DLT_IMPORT_CONTEXT(AudioManager)
34
35 using namespace am;
36
37 am::CommandReceiver::CommandReceiver(DatabaseHandler *iDatabaseHandler, ControlSender *iControlSender, DBusWrapper *iDBusWrapper)
38 : mDatabaseHandler(iDatabaseHandler),
39   mControlSender(iControlSender),
40   mDBusWrapper(iDBusWrapper)
41 {
42 assert(mDatabaseHandler!=NULL);
43 assert(mDBusWrapper!=NULL);
44 assert(mControlSender!=NULL);
45 }
46
47 am::CommandReceiver::CommandReceiver(DatabaseHandler *iDatabaseHandler, ControlSender *iControlSender, SocketHandler *iSocketHandler)
48 : mDatabaseHandler(iDatabaseHandler),
49   mControlSender(iControlSender),
50   mSocketHandler(iSocketHandler)
51 {
52 assert(mDatabaseHandler!=NULL);
53 assert(mSocketHandler!=NULL);
54 assert(mControlSender!=NULL);
55 }
56
57 am::CommandReceiver::CommandReceiver(DatabaseHandler *iDatabaseHandler, ControlSender *iControlSender, SocketHandler *iSocketHandler, DBusWrapper *iDBusWrapper)
58 : mDatabaseHandler(iDatabaseHandler),
59   mControlSender(iControlSender),
60   mDBusWrapper(iDBusWrapper),
61   mSocketHandler(iSocketHandler)
62 {
63 assert(mDatabaseHandler!=NULL);
64 assert(mSocketHandler!=NULL);
65 assert(mControlSender!=NULL);
66 assert(mDBusWrapper!=NULL);
67 }
68
69 CommandReceiver::~CommandReceiver()
70 {
71 }
72
73 am_Error_e CommandReceiver::connect(const am_sourceID_t sourceID, const am_sinkID_t sinkID, am_mainConnectionID_t & mainConnectionID)
74 {
75         DLT_LOG(AudioManager,DLT_LOG_INFO, DLT_STRING("CommandReceiver::connect got called:"),DLT_STRING("sourceID"),DLT_INT(sourceID), DLT_STRING("sinkID"), DLT_INT(sinkID));
76         return mControlSender->hookUserConnectionRequest(sourceID,sinkID,mainConnectionID);
77 }
78
79
80
81 am_Error_e CommandReceiver::disconnect(const am_mainConnectionID_t mainConnectionID)
82 {
83         DLT_LOG(AudioManager,DLT_LOG_INFO, DLT_STRING("CommandReceiver::disconnect got called, mainConnectionID="),DLT_INT(mainConnectionID));
84         return mControlSender->hookUserDisconnectionRequest(mainConnectionID);
85 }
86
87
88
89 am_Error_e CommandReceiver::setVolume(const am_sinkID_t sinkID, const am_mainVolume_t volume)
90 {
91         DLT_LOG(AudioManager,DLT_LOG_INFO, DLT_STRING("CommandReceiver::setVolume got called, sinkID="),DLT_INT(sinkID),DLT_STRING("volume="),DLT_INT(volume));
92         return mControlSender->hookUserVolumeChange(sinkID,volume);
93 }
94
95
96
97 am_Error_e CommandReceiver::volumeStep(const am_sinkID_t sinkID, const int16_t volumeStep)
98 {
99         DLT_LOG(AudioManager,DLT_LOG_INFO, DLT_STRING("CommandReceiver::volumeStep got called, sinkID="),DLT_INT(sinkID),DLT_STRING("volumeStep="),DLT_INT(volumeStep));
100         return mControlSender->hookUserVolumeStep(sinkID,volumeStep);
101 }
102
103
104
105 am_Error_e CommandReceiver::setSinkMuteState(const am_sinkID_t sinkID, const am_MuteState_e muteState)
106 {
107         DLT_LOG(AudioManager,DLT_LOG_INFO, DLT_STRING("CommandReceiver::setSinkMuteState got called, sinkID="),DLT_INT(sinkID),DLT_STRING("muteState="),DLT_INT(muteState));
108         return mControlSender->hookUserSetSinkMuteState(sinkID,muteState);
109 }
110
111
112
113 am_Error_e CommandReceiver::setMainSinkSoundProperty(const am_MainSoundProperty_s & soundProperty, const am_sinkID_t sinkID)
114 {
115         DLT_LOG(AudioManager,DLT_LOG_INFO, DLT_STRING("CommandReceiver::setMainSinkSoundProperty got called, sinkID="),DLT_INT(sinkID),DLT_STRING("soundPropertyType="),DLT_INT(soundProperty.type),DLT_STRING("soundPropertyValue="),DLT_INT(soundProperty.value));
116         return mControlSender->hookUserSetMainSinkSoundProperty(sinkID,soundProperty);
117 }
118
119
120
121 am_Error_e CommandReceiver::setMainSourceSoundProperty(const am_MainSoundProperty_s & soundProperty, const am_sourceID_t sourceID)
122 {
123         DLT_LOG(AudioManager,DLT_LOG_INFO, DLT_STRING("CommandReceiver::setMainSourceSoundProperty got called, sourceID="),DLT_INT(sourceID),DLT_STRING("soundPropertyType="),DLT_INT(soundProperty.type),DLT_STRING("soundPropertyValue="),DLT_INT(soundProperty.value));
124         return mControlSender->hookUserSetMainSourceSoundProperty(sourceID,soundProperty);
125 }
126
127
128
129 am_Error_e CommandReceiver::setSystemProperty(const am_SystemProperty_s & property)
130 {
131         DLT_LOG(AudioManager,DLT_LOG_INFO, DLT_STRING("CommandReceiver::setSystemProperty got called"),DLT_STRING("type="),DLT_INT(property.type),DLT_STRING("soundPropertyValue="),DLT_INT(property.value));
132         return mControlSender->hookUserSetSystemProperty(property);
133 }
134
135
136
137 am_Error_e CommandReceiver::getListMainConnections(std::vector<am_MainConnectionType_s> & listConnections) const
138 {
139         return mDatabaseHandler->getListVisibleMainConnections(listConnections);
140
141 }
142
143
144
145 am_Error_e CommandReceiver::getListMainSinks(std::vector<am_SinkType_s>& listMainSinks) const
146 {
147         return mDatabaseHandler->getListMainSinks(listMainSinks);
148 }
149
150
151
152 am_Error_e CommandReceiver::getListMainSources(std::vector<am_SourceType_s>& listMainSources) const
153 {
154         return mDatabaseHandler->getListMainSources(listMainSources);
155 }
156
157
158
159 am_Error_e CommandReceiver::getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s> & listSoundProperties) const
160 {
161         return mDatabaseHandler->getListMainSinkSoundProperties(sinkID,listSoundProperties);
162 }
163
164
165
166 am_Error_e CommandReceiver::getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s> & listSourceProperties) const
167 {
168         return mDatabaseHandler->getListMainSourceSoundProperties(sourceID,listSourceProperties);
169 }
170
171
172
173 am_Error_e CommandReceiver::getListSourceClasses(std::vector<am_SourceClass_s> & listSourceClasses) const
174 {
175         return mDatabaseHandler->getListSourceClasses(listSourceClasses);
176 }
177
178
179
180 am_Error_e CommandReceiver::getListSinkClasses(std::vector<am_SinkClass_s> & listSinkClasses) const
181 {
182         return mDatabaseHandler->getListSinkClasses(listSinkClasses);
183 }
184
185
186
187 am_Error_e CommandReceiver::getListSystemProperties(std::vector<am_SystemProperty_s> & listSystemProperties) const
188 {
189         return mDatabaseHandler->getListSystemProperties(listSystemProperties);
190 }
191
192
193
194 am_Error_e CommandReceiver::getTimingInformation(const am_mainConnectionID_t mainConnectionID, am_timeSync_t & delay) const
195 {
196         return mDatabaseHandler->getTimingInformation(mainConnectionID,delay);
197 }
198
199 am_Error_e CommandReceiver::getDBusConnectionWrapper(DBusWrapper*& dbusConnectionWrapper) const
200 {
201 #ifdef WITH_DBUS_WRAPPER
202         dbusConnectionWrapper=mDBusWrapper;
203         return E_OK;
204 #else
205         return E_UNKNOWN;
206 #endif /*WITH_DBUS_WRAPPER*/
207 }
208
209 am_Error_e CommandReceiver::getSocketHandler(SocketHandler *& socketHandler) const
210 {
211 #ifdef WITH_SOCKETHANDLER_LOOP
212         socketHandler=mSocketHandler;
213         return E_OK;
214 #else
215         return E_UNKNOWN;
216 #endif /*WITH_SOCKETHANDLER_LOOP*/
217 }
218
219 uint16_t CommandReceiver::getInterfaceVersion() const
220 {
221         return CommandReceiveVersion;
222 }
223
224
225
226
227
228
229
230
231
232
233