AudioManager  7.5.11
Native Application Runtime Environment
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
CAmRoutingReceiver.cpp
Go to the documentation of this file.
1 
24 #include "CAmRoutingReceiver.h"
25 #include <cassert>
26 #include <algorithm>
27 #include "IAmDatabaseHandler.h"
28 #include "CAmRoutingSender.h"
29 #include "CAmControlSender.h"
30 #include "CAmDltWrapper.h"
31 #include "CAmSocketHandler.h"
32 
33 namespace am
34 {
35 
36 CAmRoutingReceiver::CAmRoutingReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmRoutingSender *iRoutingSender, CAmControlSender *iControlSender, CAmSocketHandler *iSocketHandler) :
37  mpDatabaseHandler(iDatabaseHandler), //
38  mpRoutingSender(iRoutingSender), //
39  mpControlSender(iControlSender), //
40  mpSocketHandler(iSocketHandler), //
41  mpDBusWrapper(NULL), //
42  mListStartupHandles(), //
43  mListRundownHandles(), //
44  handleCount(0), //
45  mWaitStartup(false), //
46  mWaitRundown(false), //
47  mLastStartupError(E_OK), //
48  mLastRundownError(E_OK) //
49 {
50  assert(mpDatabaseHandler!=NULL);
51  assert(mpRoutingSender!=NULL);
52  assert(mpControlSender!=NULL);
53  assert(mpSocketHandler!=NULL);
54 }
55 
56 CAmRoutingReceiver::CAmRoutingReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmRoutingSender *iRoutingSender, CAmControlSender *iControlSender, CAmSocketHandler *iSocketHandler, CAmDbusWrapper *iDBusWrapper) :
57  mpDatabaseHandler(iDatabaseHandler), //
58  mpRoutingSender(iRoutingSender), //
59  mpControlSender(iControlSender), //
60  mpSocketHandler(iSocketHandler), //
61  mpDBusWrapper(iDBusWrapper), //
62  mListStartupHandles(), //
63  mListRundownHandles(), //
64  handleCount(0), //
65  mWaitStartup(false), //
66  mWaitRundown(false),
67  mLastStartupError(E_OK), //
68  mLastRundownError(E_OK) //
69 {
70  assert(mpDatabaseHandler!=NULL);
71  assert(mpRoutingSender!=NULL);
72  assert(mpControlSender!=NULL);
73  assert(mpSocketHandler!=NULL);
74  assert(mpDBusWrapper!=NULL);
75 }
76 
78 {
79 }
80 
81 void CAmRoutingReceiver::handleCallback(const am_Handle_s handle, const am_Error_e error)
82 {
83  if (error == am_Error_e::E_OK)
84  {
85  mpRoutingSender->writeToDatabaseAndRemove(handle);
86  }
87  else
88  {
89  mpRoutingSender->removeHandle(handle);
90  }
91 }
92 
93 void CAmRoutingReceiver::ackConnect(const am_Handle_s handle, const am_connectionID_t connectionID, const am_Error_e error)
94 {
95  logInfo(__func__,"handle=",handle,"connectionID=",connectionID,"error=",error);
96  if (error == am_Error_e::E_OK)
97  {
98  mpRoutingSender->writeToDatabaseAndRemove(handle);
99  }
100  else
101  {
102  //only remove connection of handle was found
103  if(mpRoutingSender->removeHandle(handle)==0)
104  {
105  mpDatabaseHandler->removeConnection(connectionID);
106  mpRoutingSender->removeConnectionLookup(connectionID);
107  }
108  }
109  mpControlSender->cbAckConnect(handle, error);
110 }
111 
112 void CAmRoutingReceiver::ackDisconnect(const am_Handle_s handle, const am_connectionID_t connectionID, const am_Error_e error)
113 {
114  logInfo(__func__,"handle=",handle,"connectionID=",connectionID,"error=",error);
115  //only remove connection of handle was found
116  if(mpRoutingSender->removeHandle(handle) == 0)
117  {
118  mpRoutingSender->removeConnectionLookup(connectionID);
119  }
120  mpControlSender->cbAckDisconnect(handle, error);
121 }
122 
124 {
125  logInfo(__func__,"handle=",handle,"volume=",volume,"error=",error);
126  if(error == E_OK)
127  {
128  mpRoutingSender->checkVolume(handle,volume);
129  }
130 
131  if (error== am_Error_e::E_OK || error== am_Error_e::E_ABORTED)
132  {
133  mpRoutingSender->writeToDatabaseAndRemove(handle);
134  }
135  else
136  {
137  mpRoutingSender->removeHandle(handle);
138  }
139  mpControlSender->cbAckSetSinkVolumeChange(handle, volume, error);
140 }
141 
143 {
144  logInfo(__func__,"handle=",handle,"volume=",volume,"error=",error);
145  if(error == E_OK)
146  {
147  mpRoutingSender->checkVolume(handle,volume);
148  }
149 
150  if (error== am_Error_e::E_OK || error== am_Error_e::E_ABORTED)
151  {
152  mpRoutingSender->writeToDatabaseAndRemove(handle);
153  }
154  else
155  {
156  mpRoutingSender->removeHandle(handle);
157  }
158  mpControlSender->cbAckSetSourceVolumeChange(handle, volume, error);
159 }
160 
162 {
163  logInfo(__func__,"handle=",handle,"error=",error);
164  handleCallback(handle,error);
165  mpControlSender->cbAckSetSourceState(handle, error);
166 }
167 
169 {
170  logInfo(__func__,"handle=",handle,"error=",error);
171  handleCallback(handle,error);
172  mpControlSender->cbAckSetSinkSoundProperty(handle, error);
173 }
174 
176 {
177  logInfo(__func__,"handle=",handle,"error=",error);
178  handleCallback(handle,error);
179  mpControlSender->cbAckSetSinkSoundProperties(handle, error);
180 }
181 
183 {
184  logInfo(__func__,"handle=",handle,"error=",error);
185  handleCallback(handle,error);
186  mpControlSender->cbAckSetSourceSoundProperty(handle, error);
187 }
188 
190 {
191  logInfo(__func__,"handle=",handle,"error=",error);
192  handleCallback(handle,error);
193  mpControlSender->cbAckSetSourceSoundProperties(handle, error);
194 }
195 
196 void CAmRoutingReceiver::ackCrossFading(const am_Handle_s handle, const am_HotSink_e hotSink, const am_Error_e error)
197 {
198  logInfo(__func__,"handle=",handle,"hotsink=",hotSink,"error=",error);
199  handleCallback(handle,error);
200  mpControlSender->cbAckCrossFade(handle, hotSink, error);
201 }
202 
203 void CAmRoutingReceiver::ackSourceVolumeTick(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume)
204 {
205  logInfo(__func__,"handle=",handle,"sourceID=",sourceID,"volume=",volume);
206  mpControlSender->hookSystemSourceVolumeTick(handle, sourceID, volume);
207 }
208 
209 void CAmRoutingReceiver::ackSinkVolumeTick(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume)
210 {
211  logInfo(__func__,"handle=",handle,"sinkID=",sinkID,"volume=",volume);
212  mpControlSender->hookSystemSinkVolumeTick(handle, sinkID, volume);
213 }
214 
215 am_Error_e CAmRoutingReceiver::peekDomain(const std::string & name, am_domainID_t & domainID)
216 {
217  return (mpDatabaseHandler->peekDomain(name, domainID));
218 }
219 
221 {
222  return (mpControlSender->hookSystemRegisterDomain(domainData, domainID));
223 }
224 
226 {
227  return (mpControlSender->hookSystemDeregisterDomain(domainID));
228 }
229 
231 {
232  return (mpControlSender->hookSystemRegisterGateway(gatewayData, gatewayID));
233 }
234 
236 {
237  return (mpControlSender->hookSystemRegisterConverter(converterData, converterID));
238 }
239 
241 {
242  return (mpControlSender->hookSystemDeregisterGateway(gatewayID));
243 }
244 
246 {
247  return (mpControlSender->hookSystemDeregisterConverter(converterID));
248 }
249 
250 am_Error_e CAmRoutingReceiver::peekSink(const std::string& name, am_sinkID_t & sinkID)
251 {
252  return (mpDatabaseHandler->peekSink(name, sinkID));
253 }
254 
256 {
257  return (mpControlSender->hookSystemRegisterSink(sinkData, sinkID));
258 }
259 
261 {
262  return (mpControlSender->hookSystemDeregisterSink(sinkID));
263 }
264 
265 am_Error_e CAmRoutingReceiver::peekSource(const std::string & name, am_sourceID_t & sourceID)
266 {
267  return (mpDatabaseHandler->peekSource(name, sourceID));
268 }
269 
271 {
272  return (mpControlSender->hookSystemRegisterSource(sourceData, sourceID));
273 }
274 
276 {
277  return (mpControlSender->hookSystemDeregisterSource(sourceID));
278 }
279 
281 {
282  return (mpControlSender->hookSystemRegisterCrossfader(crossfaderData, crossfaderID));
283 }
284 
286 {
287  return (mpControlSender->hookSystemDeregisterCrossfader(crossfaderID));
288 }
289 
291 {
292  return (mpControlSender->hookSystemInterruptStateChange(sourceID, interruptState));
293 }
294 
296 {
297  mpControlSender->hookSystemDomainRegistrationComplete(domainID);
298 }
299 
301 {
302  mpControlSender->hookSystemSinkAvailablityStateChange(sinkID, availability);
303 }
304 
306 {
307  mpControlSender->hookSystemSourceAvailablityStateChange(sourceID, availability);
308 }
309 
311 {
312  mpControlSender->hookSystemDomainStateChange(domainID, domainState);
313 }
314 
316 {
317  mpDatabaseHandler->changeConnectionTimingInformation(connectionID, delay);
318  mpControlSender->hookSystemSingleTimingInformationChanged(connectionID,delay);
319 }
320 
321 void CAmRoutingReceiver::sendChangedData(const std::vector<am_EarlyData_s> & earlyData)
322 {
323  mpControlSender->hookSystemReceiveEarlyData(earlyData);
324 }
325 
326 am_Error_e CAmRoutingReceiver::peekSinkClassID(const std::string& name, am_sinkClass_t& sinkClassID)
327 {
328  return (mpDatabaseHandler->peekSinkClassID(name, sinkClassID));
329 }
330 
331 am_Error_e CAmRoutingReceiver::peekSourceClassID(const std::string& name, am_sourceClass_t& sourceClassID)
332 {
333  return (mpDatabaseHandler->peekSourceClassID(name, sourceClassID));
334 }
335 
336 #ifdef WITH_DBUS_WRAPPER
338 {
339  dbusConnectionWrapper = mpDBusWrapper;
340  return (E_OK);
341 #else
343 {
344  return (E_UNKNOWN);
345 #endif
346 }
347 
349 {
350  socketHandler = mpSocketHandler;
351  return (E_OK);
352 }
353 
354 void CAmRoutingReceiver::getInterfaceVersion(std::string & version) const
355 {
356  version = RoutingVersion;
357 }
358 
359 void CAmRoutingReceiver::confirmRoutingReady(const uint16_t handle, const am_Error_e error)
360 {
361  if (error!=E_OK)
362  mLastStartupError=error;
363  mListStartupHandles.erase(std::remove(mListStartupHandles.begin(), mListStartupHandles.end(), handle), mListStartupHandles.end());
364  if (mWaitStartup && mListStartupHandles.empty())
365  mpControlSender->confirmRoutingReady(mLastStartupError);
366 }
367 
368 void CAmRoutingReceiver::confirmRoutingRundown(const uint16_t handle, const am_Error_e error)
369 {
370  if (error!=E_OK)
371  mLastRundownError=error;
372  mListRundownHandles.erase(std::remove(mListRundownHandles.begin(), mListRundownHandles.end(), handle), mListRundownHandles.end());
373  if (mWaitRundown && mListRundownHandles.empty())
374  mpControlSender->confirmRoutingRundown(mLastRundownError);
375 }
376 
378 {
379  uint16_t handle = ++handleCount; //todo: handle overflow
380  mListStartupHandles.push_back(handle);
381  return (handle);
382 }
383 
385 {
386  uint16_t handle = ++handleCount; //todo: handle overflow
387  mListRundownHandles.push_back(handle);
388  return (handle);
389 }
390 
392 {
393  mWaitStartup = startup;
394  mLastStartupError=E_OK;
395 }
396 
398 {
399  logInfo(__func__,"handle=",handle,"error=",error);
400  handleCallback(handle,error);
401  mpControlSender->cbAckSetSinkNotificationConfiguration(handle,error);
402 }
403 
405 {
406  logInfo(__func__,"handle=",handle,"error=",error);
407  handleCallback(handle,error);
408  mpControlSender->cbAckSetSourceNotificationConfiguration(handle,error);
409 }
410 
411 am_Error_e CAmRoutingReceiver::updateGateway(const am_gatewayID_t gatewayID, const std::vector<am_CustomConnectionFormat_t>& listSourceFormats, const std::vector<am_CustomConnectionFormat_t>& listSinkFormats, const std::vector<bool>& convertionMatrix)
412 {
413  return (mpControlSender->hookSystemUpdateGateway(gatewayID,listSourceFormats,listSinkFormats,convertionMatrix));
414 }
415 
416 am_Error_e CAmRoutingReceiver::updateConverter(const am_converterID_t converterID, const std::vector<am_CustomConnectionFormat_t>& listSourceFormats, const std::vector<am_CustomConnectionFormat_t>& listSinkFormats, const std::vector<bool>& convertionMatrix)
417 {
418  return (mpControlSender->hookSystemUpdateConverter(converterID,listSourceFormats,listSinkFormats,convertionMatrix));
419 }
420 
421 am_Error_e CAmRoutingReceiver::updateSink(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_SoundProperty_s>& listSoundProperties, const std::vector<am_CustomConnectionFormat_t>& listConnectionFormats, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties)
422 {
423  return (mpControlSender->hookSystemUpdateSink(sinkID,sinkClassID,listSoundProperties,listConnectionFormats,listMainSoundProperties));
424 }
425 
426 am_Error_e CAmRoutingReceiver::updateSource(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_SoundProperty_s>& listSoundProperties, const std::vector<am_CustomConnectionFormat_t>& listConnectionFormats, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties)
427 {
428  return (mpControlSender->hookSystemUpdateSource(sourceID,sourceClassID,listSoundProperties,listConnectionFormats,listMainSoundProperties));
429 }
430 
431 void CAmRoutingReceiver::ackSetVolumes(const am_Handle_s handle, const std::vector<am_Volumes_s>& listvolumes, const am_Error_e error)
432 {
433  logInfo(__func__,"handle=",handle,"error=",error);
434  handleCallback(handle,error);
435  mpControlSender->cbAckSetVolume(handle,listvolumes,error);
436 }
437 
439 {
440  logInfo("CAmRoutingReceiver::hookSinkNotificationDataChange received, sinkID=",sinkID,"type=",payload.type,"notificationValue=",payload.value);
441  mpControlSender->hookSinkNotificationDataChanged(sinkID,payload);
442 }
443 
445 {
446  logInfo("CAmRoutingReceiver::hookSourceNotificationDataChange received, sinkID=",sourceID,"type=",payload.type,"notificationValue=",payload.value);
447  mpControlSender->hookSourceNotificationDataChanged(sourceID,payload);
448 }
449 
451 {
452  return (mpDatabaseHandler->getDomainOfSink(sinkID,domainID));
453 }
454 
456 {
457  return (mpDatabaseHandler->getDomainOfSource(sourceID,domainID));
458 }
459 
461 {
462  return (mpDatabaseHandler->getDomainOfCrossfader(crossfader,domainID));
463 }
464 
466 {
467  mWaitRundown = rundown;
468  mLastRundownError=E_OK;
469 }
470 
471 }
Implements the RoutingSendInterface.
am_Error_e getDBusConnectionWrapper(CAmDbusWrapper *&dbusConnectionWrapper) const
this function is used to retrieve a pointer to the dBusConnectionWrapper
uint16_t am_connectionID_t
a connection ID
void hookSystemSourceAvailablityStateChange(const am_sourceID_t sourceID, const am_Availability_s &availability)
am_Error_e hookSystemUpdateGateway(const am_gatewayID_t gatewayID, const std::vector< am_CustomConnectionFormat_t > &listSourceConnectionFormats, const std::vector< am_CustomConnectionFormat_t > &listSinkConnectionFromats, const std::vector< bool > &convertionMatrix)
void hookSourceNotificationDataChange(const am_sourceID_t sourceID, const am_NotificationPayload_s &payload)
is called whenever a notified value needs to be send
uint16_t am_sinkClass_t
am_Error_e
the errors of the audiomanager.
am_InterruptState_e
void ackSetVolumes(const am_Handle_s handle, const std::vector< am_Volumes_s > &listvolumes, const am_Error_e error)
acknowledges a asyncSetSinkVolumes
am_Error_e hookSystemRegisterSink(const am_Sink_s &sinkData, am_sinkID_t &sinkID)
am_Error_e hookSystemDeregisterCrossfader(const am_crossfaderID_t crossfaderID)
void logInfo(T value, TArgs...args)
logs given values with infolevel with the default context
void confirmRoutingReady(const uint16_t handle, const am_Error_e error)
confirms the setRoutingReady Command
virtual am_Error_e getDomainOfSink(const am_sinkID_t sinkID, am_domainID_t &domainID) const =0
void hookTimingInformationChanged(const am_connectionID_t connectionID, const am_timeSync_t delay)
is called when the timinginformation (delay) changed for a connection.
void hookSystemInterruptStateChange(const am_sourceID_t sourceID, const am_InterruptState_e interruptState)
void hookSystemDomainRegistrationComplete(const am_domainID_t domainID)
This struct describes the attribiutes of a sink.
This struct holds the payload of a notification.
void cbAckSetSinkNotificationConfiguration(const am_Handle_s handle, const am_Error_e error)
void confirmRoutingReady(const am_Error_e error)
am_Error_e registerSource(const am_Source_s &sourceData, am_sourceID_t &sourceID)
registers a source.
void ackCrossFading(const am_Handle_s handle, const am_HotSink_e hotSink, const am_Error_e error)
acknowledges asyncCrossFade
void hookSinkNotificationDataChanged(const am_sinkID_t sinkID, const am_NotificationPayload_s &payload)
am_Error_e registerConverter(const am_Converter_s &converterData, am_converterID_t &converterID)
registers a converter.
am_Error_e hookSystemDeregisterSink(const am_sinkID_t sinkID)
void checkVolume(const am_Handle_s handle, const am_volume_t volume)
This struct describes the attribiutes of a domain.
void waitOnRundown(bool rundown)
tells the RoutingReceiver to start waiting for all handles to be confirmed
am_Error_e hookSystemUpdateSink(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector< am_SoundProperty_s > &listSoundProperties, const std::vector< am_CustomConnectionFormat_t > &listConnectionFormats, const std::vector< am_MainSoundProperty_s > &listMainSoundProperties)
uint16_t am_crossfaderID_t
a crossfader ID
The am::CAmSocketHandler implements a mainloop for the AudioManager.
SPDX license identifier: MPL-2.0.
am_Error_e updateSink(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector< am_SoundProperty_s > &listSoundProperties, const std::vector< am_CustomConnectionFormat_t > &listConnectionFormats, const std::vector< am_MainSoundProperty_s > &listMainSoundProperties)
updates data of an gateway.
am_Error_e updateConverter(const am_converterID_t converterID, const std::vector< am_CustomConnectionFormat_t > &listSourceFormats, const std::vector< am_CustomConnectionFormat_t > &listSinkFormats, const std::vector< bool > &convertionMatrix)
updates data of an converter.
void hookSystemSinkAvailablityStateChange(const am_sinkID_t sinkID, const am_Availability_s &availability)
int16_t am_timeSync_t
offset time that is introduced in milli seconds.
void confirmRoutingRundown(const uint16_t handle, const am_Error_e error)
confirms the setRoutingRundown Command
void hookSourceNotificationDataChanged(const am_sourceID_t sourceID, const am_NotificationPayload_s &payload)
am_Error_e hookSystemRegisterSource(const am_Source_s &sourceData, am_sourceID_t &sourceID)
am_Error_e deregisterGateway(const am_gatewayID_t gatewayID)
deregisters a gateway.
SPDX license identifier: MPL-2.0.
am_Error_e updateSource(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector< am_SoundProperty_s > &listSoundProperties, const std::vector< am_CustomConnectionFormat_t > &listConnectionFormats, const std::vector< am_MainSoundProperty_s > &listMainSoundProperties)
updates data of an source.
void hookSystemDomainStateChange(const am_domainID_t domainID, const am_DomainState_e state)
am_Error_e hookSystemRegisterConverter(const am_Converter_s &converterData, am_converterID_t &converterID)
void ackSourceVolumeTick(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume)
acknowledges a volume tick.
void cbAckCrossFade(const am_Handle_s handle, const am_HotSink_e hostsink, const am_Error_e error)
void cbAckSetSinkVolumeChange(const am_Handle_s handle, const am_volume_t volume, const am_Error_e error)
am_Error_e getDomainOfSource(const am_sourceID_t sourceID, am_domainID_t &domainID) const
E_OK in case of success.
am_Error_e peekSourceClassID(const std::string &name, am_sourceClass_t &sourceClassID)
this function peeks a sourceclassID.
am_CustomNotificationType_t type
This defines the notification type.
am_Error_e peekSink(const std::string &name, am_sinkID_t &sinkID)
This function returns the ID to the given sinkName.
void cbAckDisconnect(const am_Handle_s handle, const am_Error_e errorID)
void cbAckSetSourceNotificationConfiguration(const am_Handle_s handle, const am_Error_e error)
virtual am_Error_e peekSinkClassID(const std::string &name, am_sinkClass_t &sinkClassID)=0
am_Error_e hookSystemUpdateConverter(const am_converterID_t converterID, const std::vector< am_CustomConnectionFormat_t > &listSourceConnectionFormats, const std::vector< am_CustomConnectionFormat_t > &listSinkConnectionFromats, const std::vector< bool > &convertionMatrix)
void hookSystemSinkVolumeTick(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume)
uint16_t am_converterID_t
a converter ID
int16_t value
This is finally the value of the notification.
void ackSetSourceState(const am_Handle_s handle, const am_Error_e error)
acknowlegde for asyncSetSourceState
am_Error_e registerGateway(const am_Gateway_s &gatewayData, am_gatewayID_t &gatewayID)
registers a gateway.
SPDX license identifier: MPL-2.0.
void getInterfaceVersion(std::string &version) const
This function returns the version of the interface.
void cbAckConnect(const am_Handle_s handle, const am_Error_e errorID)
am_Error_e peekSinkClassID(const std::string &name, am_sinkClass_t &sinkClassID)
this function peeks a sourceclassID.
void hookInterruptStatusChange(const am_sourceID_t sourceID, const am_InterruptState_e interruptState)
is called when a low level interrupt changes it status.
void cbAckSetSinkSoundProperty(const am_Handle_s handle, const am_Error_e error)
a handle is used for asynchronous operations and is uniquely assigned for each of this operations ...
am_Error_e hookSystemRegisterCrossfader(const am_Crossfader_s &crossfaderData, am_crossfaderID_t &crossfaderID)
void ackSetSinkSoundProperty(const am_Handle_s handle, const am_Error_e error)
acknowledges asyncSetSinkSoundProperty
uint16_t am_sourceID_t
a source ID
am_Error_e hookSystemRegisterGateway(const am_Gateway_s &gatewayData, am_gatewayID_t &gatewayID)
void hookSourceAvailablityStatusChange(const am_sourceID_t sourceID, const am_Availability_s &availability)
is called when a source changes its availability
void ackSourceNotificationConfiguration(const am_Handle_s handle, const am_Error_e error)
The acknowledge of the SourceNotificationConfiguration.
void ackSetSourceVolumeChange(const am_Handle_s handle, const am_volume_t volume, const am_Error_e error)
acknowledges a asyncsetSourceVolume
void cbAckSetSourceState(const am_Handle_s handle, const am_Error_e error)
am_Error_e deregisterConverter(const am_converterID_t converterID)
deregisters a converter.
virtual am_Error_e removeConnection(const am_connectionID_t connectionID)=0
uint16_t getStartupHandle()
returns a startup handle
sends data to the commandInterface, takes the file of the library that needs to be loaded ...
CAmRoutingReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmRoutingSender *iRoutingSender, CAmControlSender *iControlSender, CAmSocketHandler *iSocketHandler)
This class handles and abstracts the database.
SPDX license identifier: MPL-2.0.
void cbAckSetSourceSoundProperty(const am_Handle_s handle, const am_Error_e error)
virtual am_Error_e getDomainOfCrossfader(const am_crossfaderID_t crossfader, am_domainID_t &domainID) const =0
void ackSetSinkSoundProperties(const am_Handle_s handle, const am_Error_e error)
acknowledges asyncSetSinkSoundProperties
am_Error_e hookSystemDeregisterDomain(const am_domainID_t domainID)
void ackSetSinkVolumeChange(const am_Handle_s handle, const am_volume_t volume, const am_Error_e error)
acknowledges a asyncsetSinkVolume
This struct describes the attributes of a converter.
void hookDomainRegistrationComplete(const am_domainID_t domainID)
This hook is called when all elements from a domain are registered.
am_Error_e peekSource(const std::string &name, am_sourceID_t &sourceID)
This function returns the ID to the given sourceName.
am_Error_e registerDomain(const am_Domain_s &domainData, am_domainID_t &domainID)
registers a domain
am_Error_e deregisterSink(const am_sinkID_t sinkID)
deregisters a sink.
am_Error_e registerSink(const am_Sink_s &sinkData, am_sinkID_t &sinkID)
Registers a sink.
am_HotSink_e
describes the active sink of a crossfader.
int16_t am_volume_t
The unit is 0.1 db steps,The smallest value -3000 (=AM_MUTE).
This struct describes the attribiutes of a crossfader.
am_Error_e hookSystemUpdateSource(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector< am_SoundProperty_s > &listSoundProperties, const std::vector< am_CustomConnectionFormat_t > &listConnectionFormats, const std::vector< am_MainSoundProperty_s > &listMainSoundProperties)
am_Error_e getSocketHandler(CAmSocketHandler *&socketHandler) const
This function returns the pointer to the socketHandler.
uint16_t getRundownHandle()
returns a rundown handle
am_Error_e writeToDatabaseAndRemove(const am_Handle_s handle)
write data to Database and remove handle
am_Error_e deregisterSource(const am_sourceID_t sourceID)
deregisters a source
uint16_t am_sourceClass_t
SPDX license identifier: MPL-2.0.
void ackSinkNotificationConfiguration(const am_Handle_s handle, const am_Error_e error)
The acknowledge of the SinkNotificationConfiguration.
void cbAckSetVolume(const am_Handle_s handle, const std::vector< am_Volumes_s > &listVolumes, const am_Error_e error)
void hookSinkAvailablityStatusChange(const am_sinkID_t sinkID, const am_Availability_s &availability)
is called when a sink changes its availability
void hookSystemSingleTimingInformationChanged(const am_connectionID_t connectionID, const am_timeSync_t time)
this describes the availability of a sink or a source together with the latest change ...
This struct describes the attributes of a gateway.
am_Error_e getDomainOfSink(const am_sinkID_t sinkID, am_domainID_t &domainID) const
E_OK in case of success.
the asynchronous action was aborted
am_Error_e removeHandle(const am_Handle_s &handle)
removes a handle from the list
void hookDomainStateChange(const am_domainID_t domainID, const am_DomainState_e domainState)
is called when a domain changes its status.
am_Error_e updateGateway(const am_gatewayID_t gatewayID, const std::vector< am_CustomConnectionFormat_t > &listSourceFormats, const std::vector< am_CustomConnectionFormat_t > &listSinkFormats, const std::vector< bool > &convertionMatrix)
updates data of an gateway.
#define RoutingVersion
Definition: IAmRouting.h:38
virtual am_Error_e getDomainOfSource(const am_sourceID_t sourceID, am_domainID_t &domainID) const =0
am_Error_e registerCrossfader(const am_Crossfader_s &crossfaderData, am_crossfaderID_t &crossfaderID)
this function registers a crossfader.
am_Error_e hookSystemDeregisterConverter(const am_converterID_t converterID)
virtual am_Error_e peekSource(const std::string &name, am_sourceID_t &sourceID)=0
am_Error_e deregisterCrossfader(const am_crossfaderID_t crossfaderID)
this function deregisters a crossfader.
This wraps dbus and provides everything needed to anyone who wants to use dbus (including plugins)...
virtual am_Error_e changeConnectionTimingInformation(const am_connectionID_t connectionID, const am_timeSync_t delay)=0
virtual am_Error_e peekSink(const std::string &name, am_sinkID_t &sinkID)=0
void sendChangedData(const std::vector< am_EarlyData_s > &earlyData)
this function is used to send out all data that has been changed in an early state.
am_Error_e hookSystemDeregisterGateway(const am_gatewayID_t gatewayID)
uint16_t am_domainID_t
a domain ID
void hookSystemSourceVolumeTick(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume)
void ackConnect(const am_Handle_s handle, const am_connectionID_t connectionID, const am_Error_e error)
acknowledges a asyncConnect
no error - positive reply
am_Error_e hookSystemDeregisterSource(const am_sourceID_t sourceID)
SPDX license identifier: MPL-2.0.
am_Error_e peekDomain(const std::string &name, am_domainID_t &domainID)
This function returns the ID to the given domainName.
void ackDisconnect(const am_Handle_s handle, const am_connectionID_t connectionID, const am_Error_e error)
acknowledges a asyncDisconnect
void confirmRoutingRundown(const am_Error_e error)
void waitOnStartup(bool startup)
tells the RoutingReceiver to start waiting for all handles to be confirmed
uint16_t am_gatewayID_t
a gateway ID
This struct describes the attribiutes of a source.
am_Error_e getDomainOfCrossfader(const am_crossfaderID_t crossfader, am_domainID_t &domainID) const
E_OK in case of success.
uint16_t am_sinkID_t
a sink ID
void cbAckSetSourceVolumeChange(const am_Handle_s handle, const am_volume_t voulme, const am_Error_e error)
void ackSetSourceSoundProperties(const am_Handle_s handle, const am_Error_e error)
acknowledges asyncSetSourceSoundProperties
am_Error_e deregisterDomain(const am_domainID_t domainID)
deregisters a domain.
am_Error_e hookSystemRegisterDomain(const am_Domain_s &domainData, am_domainID_t &domainID)
void ackSinkVolumeTick(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume)
acknowledges a volume tick.
am_Error_e removeConnectionLookup(const am_connectionID_t connectionID)
virtual am_Error_e peekDomain(const std::string &name, am_domainID_t &domainID)=0
void hookSinkNotificationDataChange(const am_sinkID_t sinkID, const am_NotificationPayload_s &payload)
is called whenever a notified value needs to be send
void ackSetSourceSoundProperty(const am_Handle_s handle, const am_Error_e error)
acknowledges asyncSetSourceSoundProperty
virtual am_Error_e peekSourceClassID(const std::string &name, am_sourceClass_t &sourceClassID)=0
void hookSystemReceiveEarlyData(const std::vector< am_EarlyData_s > &data)