37 mpDatabaseHandler(iDatabaseHandler),
38 mpRoutingSender(iRoutingSender),
39 mpControlSender(iControlSender),
40 mpSocketHandler(iSocketHandler),
42 mListStartupHandles(),
43 mListRundownHandles(),
47 mLastStartupError(
E_OK),
48 mLastRundownError(
E_OK)
50 assert(mpDatabaseHandler!=NULL);
51 assert(mpRoutingSender!=NULL);
52 assert(mpControlSender!=NULL);
53 assert(mpSocketHandler!=NULL);
57 mpDatabaseHandler(iDatabaseHandler),
58 mpRoutingSender(iRoutingSender),
59 mpControlSender(iControlSender),
60 mpSocketHandler(iSocketHandler),
61 mpDBusWrapper(iDBusWrapper),
62 mListStartupHandles(),
63 mListRundownHandles(),
67 mLastStartupError(
E_OK),
68 mLastRundownError(
E_OK)
70 assert(mpDatabaseHandler!=NULL);
71 assert(mpRoutingSender!=NULL);
72 assert(mpControlSender!=NULL);
73 assert(mpSocketHandler!=NULL);
74 assert(mpDBusWrapper!=NULL);
95 logInfo(__func__,
"handle=",handle,
"connectionID=",connectionID,
"error=",error);
114 logInfo(__func__,
"handle=",handle,
"connectionID=",connectionID,
"error=",error);
125 logInfo(__func__,
"handle=",handle,
"volume=",volume,
"error=",error);
144 logInfo(__func__,
"handle=",handle,
"volume=",volume,
"error=",error);
163 logInfo(__func__,
"handle=",handle,
"error=",error);
164 handleCallback(handle,error);
170 logInfo(__func__,
"handle=",handle,
"error=",error);
171 handleCallback(handle,error);
177 logInfo(__func__,
"handle=",handle,
"error=",error);
178 handleCallback(handle,error);
179 mpControlSender->cbAckSetSinkSoundProperties(handle, error);
184 logInfo(__func__,
"handle=",handle,
"error=",error);
185 handleCallback(handle,error);
191 logInfo(__func__,
"handle=",handle,
"error=",error);
192 handleCallback(handle,error);
193 mpControlSender->cbAckSetSourceSoundProperties(handle, error);
198 logInfo(__func__,
"handle=",handle,
"hotsink=",hotSink,
"error=",error);
199 handleCallback(handle,error);
205 logInfo(__func__,
"handle=",handle,
"sourceID=",sourceID,
"volume=",volume);
211 logInfo(__func__,
"handle=",handle,
"sinkID=",sinkID,
"volume=",volume);
217 return (mpDatabaseHandler->
peekDomain(name, domainID));
252 return (mpDatabaseHandler->
peekSink(name, sinkID));
267 return (mpDatabaseHandler->
peekSource(name, sourceID));
336 #ifdef WITH_DBUS_WRAPPER
339 dbusConnectionWrapper = mpDBusWrapper;
350 socketHandler = mpSocketHandler;
362 mLastStartupError=error;
363 mListStartupHandles.erase(std::remove(mListStartupHandles.begin(), mListStartupHandles.end(), handle), mListStartupHandles.end());
364 if (mWaitStartup && mListStartupHandles.empty())
371 mLastRundownError=error;
372 mListRundownHandles.erase(std::remove(mListRundownHandles.begin(), mListRundownHandles.end(), handle), mListRundownHandles.end());
373 if (mWaitRundown && mListRundownHandles.empty())
379 uint16_t handle = ++handleCount;
380 mListStartupHandles.push_back(handle);
386 uint16_t handle = ++handleCount;
387 mListRundownHandles.push_back(handle);
393 mWaitStartup = startup;
394 mLastStartupError=
E_OK;
399 logInfo(__func__,
"handle=",handle,
"error=",error);
400 handleCallback(handle,error);
406 logInfo(__func__,
"handle=",handle,
"error=",error);
407 handleCallback(handle,error);
413 return (mpControlSender->
hookSystemUpdateGateway(gatewayID,listSourceFormats,listSinkFormats,convertionMatrix));
423 return (mpControlSender->
hookSystemUpdateSink(sinkID,sinkClassID,listSoundProperties,listConnectionFormats,listMainSoundProperties));
428 return (mpControlSender->
hookSystemUpdateSource(sourceID,sourceClassID,listSoundProperties,listConnectionFormats,listMainSoundProperties));
433 logInfo(__func__,
"handle=",handle,
"error=",error);
434 handleCallback(handle,error);
440 logInfo(
"CAmRoutingReceiver::hookSinkNotificationDataChange received, sinkID=",sinkID,
"type=",payload.
type,
"notificationValue=",payload.
value);
446 logInfo(
"CAmRoutingReceiver::hookSourceNotificationDataChange received, sinkID=",sourceID,
"type=",payload.
type,
"notificationValue=",payload.
value);
467 mWaitRundown = rundown;
468 mLastRundownError=
E_OK;
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
am_Error_e
the errors of the audiomanager.
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.
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)