2 * Copyright (C) 2012, BMW AG
4 * This file is part of GENIVI Project AudioManager.
6 * Contributions are licensed to the GENIVI Alliance under one or more
7 * Contribution License Agreements.
10 * This Source Code Form is subject to the terms of the
11 * Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with
12 * this file, You can obtain one at http://mozilla.org/MPL/2.0/.
15 * \author Christian Mueller, christian.ei.mueller@bmw.de BMW 2011,2012
17 * \file CAmDatabaseObserver.cpp
18 * For further information see http://www.genivi.org/.
22 #include "CAmDatabaseObserver.h"
26 #include <sys/socket.h>
27 #include <sys/ioctl.h>
28 #include "CAmCommandSender.h"
29 #include "CAmRoutingSender.h"
30 #include "CAmTelnetServer.h"
31 #include "shared/CAmDltWrapper.h"
32 #include "shared/CAmSerializer.h"
36 CAmDatabaseObserver::CAmDatabaseObserver(CAmCommandSender *iCommandSender, CAmRoutingSender *iRoutingSender, CAmSocketHandler *iSocketHandler) :
37 mCommandSender(iCommandSender), //
38 mRoutingSender(iRoutingSender), //
39 mSerializer(iSocketHandler) //
41 assert(mCommandSender!=0);
42 assert(mRoutingSender!=0);
43 assert(iSocketHandler!=0);
46 CAmDatabaseObserver::CAmDatabaseObserver(CAmCommandSender *iCommandSender, CAmRoutingSender *iRoutingSender, CAmSocketHandler *iSocketHandler, CAmTelnetServer *iTelnetServer) :
47 mCommandSender(iCommandSender), //
48 mRoutingSender(iRoutingSender), //
49 mTelnetServer(iTelnetServer), //
50 mSerializer(iSocketHandler) //
52 assert(mTelnetServer!=0);
53 assert(mCommandSender!=0);
54 assert(mRoutingSender!=0);
55 assert(iSocketHandler!=0);
58 CAmDatabaseObserver::~CAmDatabaseObserver()
62 void CAmDatabaseObserver::newMainConnection(const am_MainConnectionType_s& mainConnection)
64 mSerializer.asyncCall<CAmCommandSender, const am_MainConnectionType_s>(mCommandSender, &CAmCommandSender::cbNewMainConnection, mainConnection);
67 void CAmDatabaseObserver::removedMainConnection(const am_mainConnectionID_t mainConnection)
69 mSerializer.asyncCall<CAmCommandSender, const am_mainConnectionID_t>(mCommandSender, &CAmCommandSender::cbRemovedMainConnection, mainConnection);
72 void CAmDatabaseObserver::newSink(const am_Sink_s& sink)
74 mRoutingSender->addSinkLookup(sink);
78 s.availability = sink.available;
79 s.muteState = sink.muteState;
81 s.sinkClassID = sink.sinkClassID;
82 s.sinkID = sink.sinkID;
83 s.volume = sink.mainVolume;
84 mSerializer.asyncCall<CAmCommandSender, const am_SinkType_s>(mCommandSender, &CAmCommandSender::cbNewSink, s);
88 void CAmDatabaseObserver::newSource(const am_Source_s& source)
90 mRoutingSender->addSourceLookup(source);
94 s.availability = source.available;
96 s.sourceClassID = source.sourceClassID;
97 s.sourceID = source.sourceID;
98 mSerializer.asyncCall<CAmCommandSender, const am_SourceType_s>(mCommandSender, &CAmCommandSender::cbNewSource, s);
102 void CAmDatabaseObserver::newDomain(const am_Domain_s& domain)
104 mRoutingSender->addDomainLookup(domain);
107 void CAmDatabaseObserver::newGateway(const am_Gateway_s& gateway)
110 //todo: implement something
113 void CAmDatabaseObserver::newCrossfader(const am_Crossfader_s& crossfader)
115 mRoutingSender->addCrossfaderLookup(crossfader);
118 void CAmDatabaseObserver::removedSink(const am_sinkID_t sinkID, const bool visible)
120 mRoutingSender->removeSinkLookup(sinkID);
123 mSerializer.asyncCall<CAmCommandSender, const am_sinkID_t>(mCommandSender, &CAmCommandSender::cbRemovedSink, sinkID);
126 void CAmDatabaseObserver::removedSource(const am_sourceID_t sourceID, const bool visible)
128 mRoutingSender->removeSourceLookup(sourceID);
131 mSerializer.asyncCall<CAmCommandSender, const am_sourceID_t>(mCommandSender, &CAmCommandSender::cbRemovedSource, sourceID);
134 void CAmDatabaseObserver::removeDomain(const am_domainID_t domainID)
136 mRoutingSender->removeDomainLookup(domainID);
139 void CAmDatabaseObserver::removeGateway(const am_gatewayID_t gatewayID)
142 //todo: implement something?
145 void CAmDatabaseObserver::removeCrossfader(const am_crossfaderID_t crossfaderID)
147 mRoutingSender->removeCrossfaderLookup(crossfaderID);
150 void CAmDatabaseObserver::numberOfSinkClassesChanged()
152 mSerializer.asyncCall<CAmCommandSender>(mCommandSender, &CAmCommandSender::cbNumberOfSinkClassesChanged);
155 void CAmDatabaseObserver::numberOfSourceClassesChanged()
157 mSerializer.asyncCall<CAmCommandSender>(mCommandSender, &CAmCommandSender::cbNumberOfSourceClassesChanged);
160 void CAmDatabaseObserver::mainConnectionStateChanged(const am_mainConnectionID_t connectionID, const am_ConnectionState_e connectionState)
162 mSerializer.asyncCall<CAmCommandSender, const am_connectionID_t, const am_ConnectionState_e>(mCommandSender, &CAmCommandSender::cbMainConnectionStateChanged, connectionID, connectionState);
165 void CAmDatabaseObserver::mainSinkSoundPropertyChanged(const am_sinkID_t sinkID, const am_MainSoundProperty_s& SoundProperty)
167 mSerializer.asyncCall<CAmCommandSender, const am_sinkID_t, const am_MainSoundProperty_s&>(mCommandSender, &CAmCommandSender::cbMainSinkSoundPropertyChanged, sinkID, SoundProperty);
170 void CAmDatabaseObserver::mainSourceSoundPropertyChanged(const am_sourceID_t sourceID, const am_MainSoundProperty_s & SoundProperty)
172 mSerializer.asyncCall<CAmCommandSender, const am_sourceID_t, const am_MainSoundProperty_s&>(mCommandSender, &CAmCommandSender::cbMainSourceSoundPropertyChanged, sourceID, SoundProperty);
175 void CAmDatabaseObserver::sinkAvailabilityChanged(const am_sinkID_t sinkID, const am_Availability_s & availability)
177 mSerializer.asyncCall<CAmCommandSender, const am_sinkID_t, const am_Availability_s&>(mCommandSender, &CAmCommandSender::cbSinkAvailabilityChanged, sinkID, availability);
180 void CAmDatabaseObserver::sourceAvailabilityChanged(const am_sourceID_t sourceID, const am_Availability_s & availability)
182 mSerializer.asyncCall<CAmCommandSender, const am_sourceID_t, const am_Availability_s&>(mCommandSender, &CAmCommandSender::cbSourceAvailabilityChanged, sourceID, availability);
185 void CAmDatabaseObserver::volumeChanged(const am_sinkID_t sinkID, const am_mainVolume_t volume)
187 mSerializer.asyncCall<CAmCommandSender, const am_sinkID_t, const am_mainVolume_t>(mCommandSender, &CAmCommandSender::cbVolumeChanged, sinkID, volume);
190 void CAmDatabaseObserver::sinkMuteStateChanged(const am_sinkID_t sinkID, const am_MuteState_e muteState)
192 mSerializer.asyncCall<CAmCommandSender, const am_sinkID_t, const am_MuteState_e>(mCommandSender, &CAmCommandSender::cbSinkMuteStateChanged, sinkID, muteState);
195 void CAmDatabaseObserver::systemPropertyChanged(const am_SystemProperty_s& SystemProperty)
197 mSerializer.asyncCall<CAmCommandSender, const am_SystemProperty_s&>(mCommandSender, &CAmCommandSender::cbSystemPropertyChanged, SystemProperty);
200 void CAmDatabaseObserver::timingInformationChanged(const am_mainConnectionID_t mainConnection, const am_timeSync_t time)
202 mSerializer.asyncCall<CAmCommandSender, const am_mainConnectionID_t, const am_timeSync_t>(mCommandSender, &CAmCommandSender::cbTimingInformationChanged, mainConnection, time);