summaryrefslogtreecommitdiff
path: root/AudioManagerCore
diff options
context:
space:
mode:
Diffstat (limited to 'AudioManagerCore')
-rw-r--r--AudioManagerCore/include/CAmCommandReceiver.h66
-rw-r--r--AudioManagerCore/include/CAmCommandSender.h52
-rw-r--r--AudioManagerCore/include/CAmControlReceiver.h168
-rw-r--r--AudioManagerCore/include/CAmControlSender.h157
-rw-r--r--AudioManagerCore/include/CAmDatabaseHandlerMap.h710
-rw-r--r--AudioManagerCore/include/CAmGraph.h1329
-rw-r--r--AudioManagerCore/include/CAmLog.h126
-rw-r--r--AudioManagerCore/include/CAmRouter.h633
-rw-r--r--AudioManagerCore/include/CAmRoutingReceiver.h84
-rw-r--r--AudioManagerCore/include/CAmRoutingSender.h525
-rw-r--r--AudioManagerCore/include/IAmDatabaseHandler.h237
-rw-r--r--AudioManagerCore/src/CAmCommandReceiver.cpp173
-rw-r--r--AudioManagerCore/src/CAmCommandSender.cpp323
-rw-r--r--AudioManagerCore/src/CAmControlReceiver.cpp282
-rw-r--r--AudioManagerCore/src/CAmControlSender.cpp205
-rw-r--r--AudioManagerCore/src/CAmDatabaseHandlerMap.cpp3666
-rw-r--r--AudioManagerCore/src/CAmLog.cpp85
-rw-r--r--AudioManagerCore/src/CAmRouter.cpp1479
-rw-r--r--AudioManagerCore/src/CAmRoutingReceiver.cpp314
-rw-r--r--AudioManagerCore/src/CAmRoutingSender.cpp1250
20 files changed, 6210 insertions, 5654 deletions
diff --git a/AudioManagerCore/include/CAmCommandReceiver.h b/AudioManagerCore/include/CAmCommandReceiver.h
index 0f30d81..9080b25 100644
--- a/AudioManagerCore/include/CAmCommandReceiver.h
+++ b/AudioManagerCore/include/CAmCommandReceiver.h
@@ -37,39 +37,39 @@ class CAmSocketHandler;
/**
* This class realizes the command Interface
*/
-class CAmCommandReceiver: public IAmCommandReceive
+class CAmCommandReceiver : public IAmCommandReceive
{
public:
- CAmCommandReceiver(IAmDatabaseHandler* iDatabaseHandler, CAmControlSender* iControlSender, CAmSocketHandler* iSocketHandler);
- CAmCommandReceiver(IAmDatabaseHandler* iDatabaseHandler, CAmControlSender* iControlSender, CAmSocketHandler* iSocketHandler, CAmDbusWrapper* iDBusWrapper);
+ CAmCommandReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmControlSender *iControlSender, CAmSocketHandler *iSocketHandler);
+ CAmCommandReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmControlSender *iControlSender, CAmSocketHandler *iSocketHandler, CAmDbusWrapper *iDBusWrapper);
~CAmCommandReceiver();
- am_Error_e connect(const am_sourceID_t sourceID, const am_sinkID_t sinkID, am_mainConnectionID_t& mainConnectionID);
+ am_Error_e connect(const am_sourceID_t sourceID, const am_sinkID_t sinkID, am_mainConnectionID_t &mainConnectionID);
am_Error_e disconnect(const am_mainConnectionID_t mainConnectionID);
am_Error_e setVolume(const am_sinkID_t sinkID, const am_mainVolume_t volume);
am_Error_e volumeStep(const am_sinkID_t sinkID, const int16_t volumeStep);
am_Error_e setSinkMuteState(const am_sinkID_t sinkID, const am_MuteState_e muteState);
- am_Error_e setMainSinkSoundProperty(const am_MainSoundProperty_s& soundProperty, const am_sinkID_t sinkID);
- am_Error_e setMainSourceSoundProperty(const am_MainSoundProperty_s& soundProperty, const am_sourceID_t sourceID);
- am_Error_e setSystemProperty(const am_SystemProperty_s& property);
- am_Error_e getVolume(const am_sinkID_t sinkID, am_mainVolume_t& mainVolume) const;
- am_Error_e getListMainConnections(std::vector<am_MainConnectionType_s>& listConnections) const;
- am_Error_e getListMainSinks(std::vector<am_SinkType_s>& listMainSinks) const;
- am_Error_e getListMainSources(std::vector<am_SourceType_s>& listMainSources) const;
- am_Error_e getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s>& listSoundProperties) const;
- am_Error_e getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s>& listSourceProperties) const;
- am_Error_e getListSourceClasses(std::vector<am_SourceClass_s>& listSourceClasses) const;
- am_Error_e getListSinkClasses(std::vector<am_SinkClass_s>& listSinkClasses) const;
- am_Error_e getListSystemProperties(std::vector<am_SystemProperty_s>& listSystemProperties) const;
- am_Error_e getTimingInformation(const am_mainConnectionID_t mainConnectionID, am_timeSync_t& delay) const;
- am_Error_e getDBusConnectionWrapper(CAmDbusWrapper*& dbusConnectionWrapper) const;
- am_Error_e getSocketHandler(CAmSocketHandler*& socketHandler) const;
+ am_Error_e setMainSinkSoundProperty(const am_MainSoundProperty_s &soundProperty, const am_sinkID_t sinkID);
+ am_Error_e setMainSourceSoundProperty(const am_MainSoundProperty_s &soundProperty, const am_sourceID_t sourceID);
+ am_Error_e setSystemProperty(const am_SystemProperty_s &property);
+ am_Error_e getVolume(const am_sinkID_t sinkID, am_mainVolume_t &mainVolume) const;
+ am_Error_e getListMainConnections(std::vector<am_MainConnectionType_s> &listConnections) const;
+ am_Error_e getListMainSinks(std::vector<am_SinkType_s> &listMainSinks) const;
+ am_Error_e getListMainSources(std::vector<am_SourceType_s> &listMainSources) const;
+ am_Error_e getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s> &listSoundProperties) const;
+ am_Error_e getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s> &listSourceProperties) const;
+ am_Error_e getListSourceClasses(std::vector<am_SourceClass_s> &listSourceClasses) const;
+ am_Error_e getListSinkClasses(std::vector<am_SinkClass_s> &listSinkClasses) const;
+ am_Error_e getListSystemProperties(std::vector<am_SystemProperty_s> &listSystemProperties) const;
+ am_Error_e getTimingInformation(const am_mainConnectionID_t mainConnectionID, am_timeSync_t &delay) const;
+ am_Error_e getDBusConnectionWrapper(CAmDbusWrapper * &dbusConnectionWrapper) const;
+ am_Error_e getSocketHandler(CAmSocketHandler * &socketHandler) const;
void confirmCommandReady(const uint16_t handle, const am_Error_e error);
void confirmCommandRundown(const uint16_t handle, const am_Error_e error);
- void getInterfaceVersion(std::string& version) const;
- am_Error_e getListMainSinkNotificationConfigurations(const am_sinkID_t sinkID, std::vector<am_NotificationConfiguration_s>& listMainNotificationConfigurations) const ;
- am_Error_e getListMainSourceNotificationConfigurations(const am_sourceID_t sourceID, std::vector<am_NotificationConfiguration_s>& listMainNotificationConfigurations) const ;
- am_Error_e setMainSinkNotificationConfiguration(const am_sinkID_t sinkID, const am_NotificationConfiguration_s& mainNotificationConfiguration) ;
- am_Error_e setMainSourceNotificationConfiguration(const am_sourceID_t sourceID, const am_NotificationConfiguration_s& mainNotificationConfiguration) ;
+ void getInterfaceVersion(std::string &version) const;
+ am_Error_e getListMainSinkNotificationConfigurations(const am_sinkID_t sinkID, std::vector<am_NotificationConfiguration_s> &listMainNotificationConfigurations) const;
+ am_Error_e getListMainSourceNotificationConfigurations(const am_sourceID_t sourceID, std::vector<am_NotificationConfiguration_s> &listMainNotificationConfigurations) const;
+ am_Error_e setMainSinkNotificationConfiguration(const am_sinkID_t sinkID, const am_NotificationConfiguration_s &mainNotificationConfiguration);
+ am_Error_e setMainSourceNotificationConfiguration(const am_sourceID_t sourceID, const am_NotificationConfiguration_s &mainNotificationConfiguration);
uint16_t getStartupHandle(); //!< returns a startup handle
uint16_t getRundownHandle(); //!< returns a rundown handle
@@ -78,18 +78,18 @@ public:
void waitOnRundown(bool rundown); //!< tells the ComandReceiver to start waiting for all handles to be confirmed
private:
- IAmDatabaseHandler* mDatabaseHandler; //!< pointer to the databasehandler
- CAmControlSender* mControlSender; //!< pointer to the control sender
- CAmDbusWrapper* mDBusWrapper; //!< pointer to the dbuswrapper
- CAmSocketHandler* mSocketHandler; //!< pointer to the SocketHandler
+ IAmDatabaseHandler *mDatabaseHandler; //!< pointer to the databasehandler
+ CAmControlSender *mControlSender; //!< pointer to the control sender
+ CAmDbusWrapper *mDBusWrapper; //!< pointer to the dbuswrapper
+ CAmSocketHandler *mSocketHandler; //!< pointer to the SocketHandler
- uint16_t handleCount; //!< counts all handles
+ uint16_t handleCount; //!< counts all handles
std::vector<uint16_t> mListStartupHandles; //!< list of handles that wait for a confirm
std::vector<uint16_t> mListRundownHandles; //!< list of handles that wait for a confirm
- bool mWaitStartup; //!< if true confirmation will be sent if list of handles = 0
- bool mWaitRundown; //!< if true confirmation will be sent if list of handles = 0
- am_Error_e mLastErrorStartup;
- am_Error_e mLastErrorRundown;
+ bool mWaitStartup; //!< if true confirmation will be sent if list of handles = 0
+ bool mWaitRundown; //!< if true confirmation will be sent if list of handles = 0
+ am_Error_e mLastErrorStartup;
+ am_Error_e mLastErrorRundown;
};
}
diff --git a/AudioManagerCore/include/CAmCommandSender.h b/AudioManagerCore/include/CAmCommandSender.h
index c9f8fb6..5646282 100644
--- a/AudioManagerCore/include/CAmCommandSender.h
+++ b/AudioManagerCore/include/CAmCommandSender.h
@@ -25,7 +25,7 @@
#define COMMANDSENDER_H_
#ifdef UNIT_TEST
-#include "../test/IAmCommandBackdoor.h" //we need this for the unit test
+# include "../test/IAmCommandBackdoor.h" // we need this for the unit test
#endif
#include "IAmCommand.h"
@@ -38,17 +38,16 @@ namespace am
class CAmCommandReceiver;
class CAmCommandSender;
-
/**
* This class is used to send data to the CommandInterface.
* All loaded plugins will be called when a callback is invoked.
*/
-class CAmCommandSender: public CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks
+class CAmCommandSender : public CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks
{
public:
- CAmCommandSender(const std::vector<std::string>& listOfPluginDirectories, CAmSocketHandler *iSocketHandler);
+ CAmCommandSender(const std::vector<std::string> &listOfPluginDirectories, CAmSocketHandler *iSocketHandler);
~CAmCommandSender();
- am_Error_e startupInterfaces(CAmCommandReceiver* iCommandReceiver);
+ am_Error_e startupInterfaces(CAmCommandReceiver *iCommandReceiver);
void setCommandReady();
void setCommandRundown();
void cbNewMainConnection(const am_MainConnectionType_s mainConnection);
@@ -60,38 +59,37 @@ public:
void cbNumberOfSinkClassesChanged();
void cbNumberOfSourceClassesChanged();
void cbMainConnectionStateChanged(const am_mainConnectionID_t connectionID, const am_ConnectionState_e connectionState);
- void cbMainSinkSoundPropertyChanged(const am_sinkID_t sinkID, const am_MainSoundProperty_s& soundProperty);
- void cbMainSourceSoundPropertyChanged(const am_sourceID_t sourceID, const am_MainSoundProperty_s& soundProperty);
- void cbSinkAvailabilityChanged(const am_sinkID_t sinkID, const am_Availability_s& availability);
- void cbSourceAvailabilityChanged(const am_sourceID_t sourceID, const am_Availability_s& availability);
+ void cbMainSinkSoundPropertyChanged(const am_sinkID_t sinkID, const am_MainSoundProperty_s &soundProperty);
+ void cbMainSourceSoundPropertyChanged(const am_sourceID_t sourceID, const am_MainSoundProperty_s &soundProperty);
+ void cbSinkAvailabilityChanged(const am_sinkID_t sinkID, const am_Availability_s &availability);
+ void cbSourceAvailabilityChanged(const am_sourceID_t sourceID, const am_Availability_s &availability);
void cbVolumeChanged(const am_sinkID_t sinkID, const am_mainVolume_t volume);
void cbSinkMuteStateChanged(const am_sinkID_t sinkID, const am_MuteState_e muteState);
- void cbSystemPropertyChanged(const am_SystemProperty_s& systemProperty);
+ void cbSystemPropertyChanged(const am_SystemProperty_s &systemProperty);
void cbTimingInformationChanged(const am_mainConnectionID_t mainConnectionID, const am_timeSync_t time);
- void getInterfaceVersion(std::string& version) const;
- am_Error_e getListPlugins(std::vector<std::string>& interfaces) const;
- void cbSinkUpdated(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties);
- void cbSourceUpdated(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties);
- void cbSinkNotification(const am_sinkID_t sinkID, const am_NotificationPayload_s& notification);
- void cbSourceNotification(const am_sourceID_t sourceID, const am_NotificationPayload_s& notification);
- void cbSinkMainNotificationConfigurationChanged(const am_sinkID_t sinkID, const am_NotificationConfiguration_s& mainNotificationConfiguration);
- void cbSourceMainNotificationConfigurationChanged(const am_sourceID_t sourceID, const am_NotificationConfiguration_s& mainNotificationConfiguration);
+ void getInterfaceVersion(std::string &version) const;
+ am_Error_e getListPlugins(std::vector<std::string> &interfaces) const;
+ void cbSinkUpdated(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_MainSoundProperty_s> &listMainSoundProperties);
+ void cbSourceUpdated(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_MainSoundProperty_s> &listMainSoundProperties);
+ void cbSinkNotification(const am_sinkID_t sinkID, const am_NotificationPayload_s &notification);
+ void cbSourceNotification(const am_sourceID_t sourceID, const am_NotificationPayload_s &notification);
+ void cbSinkMainNotificationConfigurationChanged(const am_sinkID_t sinkID, const am_NotificationConfiguration_s &mainNotificationConfiguration);
+ void cbSourceMainNotificationConfigurationChanged(const am_sourceID_t sourceID, const am_NotificationConfiguration_s &mainNotificationConfiguration);
#ifdef UNIT_TEST
- friend class IAmCommandBackdoor; //this is to get access to the loaded plugins and be able to exchange the interfaces
+ friend class IAmCommandBackdoor; // this is to get access to the loaded plugins and be able to exchange the interfaces
#endif
private:
- void loadPlugins(const std::vector<std::string>& listOfPluginDirectories);
+ void loadPlugins(const std::vector<std::string> &listOfPluginDirectories);
void unloadLibraries(void); //!< unload the shared libraries
- std::vector<IAmCommandSend*> mListInterfaces; //!< list of all interfaces
- std::vector<void*> mListLibraryHandles; //!< list of all library handles. This information is used to unload the plugins correctly.
- std::vector<std::string> mListLibraryNames; //!< list of all library names. This information is used for getListPlugins.
-
- CAmCommandReceiver *mCommandReceiver;
- V2::CAmSerializer mSerializer;
-};
+ std::vector<IAmCommandSend *> mListInterfaces; //!< list of all interfaces
+ std::vector<void *> mListLibraryHandles; //!< list of all library handles. This information is used to unload the plugins correctly.
+ std::vector<std::string> mListLibraryNames; //!< list of all library names. This information is used for getListPlugins.
+ CAmCommandReceiver *mCommandReceiver;
+ V2::CAmSerializer mSerializer;
+};
}
diff --git a/AudioManagerCore/include/CAmControlReceiver.h b/AudioManagerCore/include/CAmControlReceiver.h
index 897ac5e..36c4d14 100644
--- a/AudioManagerCore/include/CAmControlReceiver.h
+++ b/AudioManagerCore/include/CAmControlReceiver.h
@@ -39,46 +39,46 @@ class CAmNodeStateCommunicator;
/**
* This class is used to receive all commands from the control interface
*/
-class CAmControlReceiver: public IAmControlReceive
+class CAmControlReceiver : public IAmControlReceive
{
public:
- CAmControlReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmRoutingSender *iRoutingSender, CAmCommandSender *iCommandSender, CAmSocketHandler *iSocketHandler, CAmRouter* iRouter);
+ CAmControlReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmRoutingSender *iRoutingSender, CAmCommandSender *iCommandSender, CAmSocketHandler *iSocketHandler, CAmRouter *iRouter);
~CAmControlReceiver();
- am_Error_e getRoute(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector<am_Route_s>& returnList);
- am_Error_e connect(am_Handle_s& handle, am_connectionID_t& connectionID, const am_CustomConnectionFormat_t format, const am_sourceID_t sourceID, const am_sinkID_t sinkID);
- am_Error_e disconnect(am_Handle_s& handle, const am_connectionID_t connectionID);
- am_Error_e crossfade(am_Handle_s& handle, const am_HotSink_e hotSource, const am_crossfaderID_t crossfaderID, const am_CustomRampType_t rampType, const am_time_t rampTime);
+ am_Error_e getRoute(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector<am_Route_s> &returnList);
+ am_Error_e connect(am_Handle_s &handle, am_connectionID_t &connectionID, const am_CustomConnectionFormat_t format, const am_sourceID_t sourceID, const am_sinkID_t sinkID);
+ am_Error_e disconnect(am_Handle_s &handle, const am_connectionID_t connectionID);
+ am_Error_e crossfade(am_Handle_s &handle, const am_HotSink_e hotSource, const am_crossfaderID_t crossfaderID, const am_CustomRampType_t rampType, const am_time_t rampTime);
am_Error_e abortAction(const am_Handle_s handle);
- am_Error_e setSourceState(am_Handle_s& handle, const am_sourceID_t sourceID, const am_SourceState_e state);
- am_Error_e setSinkVolume(am_Handle_s& handle, const am_sinkID_t sinkID, const am_volume_t volume, const am_CustomRampType_t ramp, const am_time_t time);
- am_Error_e setSourceVolume(am_Handle_s& handle, const am_sourceID_t sourceID, const am_volume_t volume, const am_CustomRampType_t rampType, const am_time_t time);
- am_Error_e setSinkSoundProperties(am_Handle_s& handle, const am_sinkID_t sinkID, const std::vector<am_SoundProperty_s>& soundProperty);
- am_Error_e setSinkSoundProperty(am_Handle_s& handle, const am_sinkID_t sinkID, const am_SoundProperty_s& soundProperty);
- am_Error_e setSourceSoundProperties(am_Handle_s& handle, const am_sourceID_t sourceID, const std::vector<am_SoundProperty_s>& soundProperty);
- am_Error_e setSourceSoundProperty(am_Handle_s& handle, const am_sourceID_t sourceID, const am_SoundProperty_s& soundProperty);
+ am_Error_e setSourceState(am_Handle_s &handle, const am_sourceID_t sourceID, const am_SourceState_e state);
+ am_Error_e setSinkVolume(am_Handle_s &handle, const am_sinkID_t sinkID, const am_volume_t volume, const am_CustomRampType_t ramp, const am_time_t time);
+ am_Error_e setSourceVolume(am_Handle_s &handle, const am_sourceID_t sourceID, const am_volume_t volume, const am_CustomRampType_t rampType, const am_time_t time);
+ am_Error_e setSinkSoundProperties(am_Handle_s &handle, const am_sinkID_t sinkID, const std::vector<am_SoundProperty_s> &soundProperty);
+ am_Error_e setSinkSoundProperty(am_Handle_s &handle, const am_sinkID_t sinkID, const am_SoundProperty_s &soundProperty);
+ am_Error_e setSourceSoundProperties(am_Handle_s &handle, const am_sourceID_t sourceID, const std::vector<am_SoundProperty_s> &soundProperty);
+ am_Error_e setSourceSoundProperty(am_Handle_s &handle, const am_sourceID_t sourceID, const am_SoundProperty_s &soundProperty);
am_Error_e setDomainState(const am_domainID_t domainID, const am_DomainState_e domainState);
- am_Error_e enterDomainDB(const am_Domain_s& domainData, am_domainID_t& domainID);
- am_Error_e enterMainConnectionDB(const am_MainConnection_s& mainConnectionData, am_mainConnectionID_t& connectionID);
- am_Error_e enterSinkDB(const am_Sink_s& sinkData, am_sinkID_t& sinkID);
- am_Error_e enterCrossfaderDB(const am_Crossfader_s& crossfaderData, am_crossfaderID_t& crossfaderID);
- am_Error_e enterGatewayDB(const am_Gateway_s& gatewayData, am_gatewayID_t& gatewayID);
- am_Error_e enterConverterDB(const am_Converter_s & converterData, am_converterID_t & converterID);
- am_Error_e enterSourceDB(const am_Source_s& sourceData, am_sourceID_t& sourceID);
- am_Error_e enterSinkClassDB(const am_SinkClass_s& sinkClass, am_sinkClass_t& sinkClassID);
- am_Error_e enterSourceClassDB(am_sourceClass_t& sourceClassID, const am_SourceClass_s& sourceClass);
- am_Error_e changeSinkClassInfoDB(const am_SinkClass_s& sinkClass);
- am_Error_e changeSourceClassInfoDB(const am_SourceClass_s& sourceClass);
- am_Error_e enterSystemPropertiesListDB(const std::vector<am_SystemProperty_s>& listSystemProperties);
- am_Error_e changeMainConnectionRouteDB(const am_mainConnectionID_t mainconnectionID, const std::vector<am_connectionID_t>& listConnectionID);
+ am_Error_e enterDomainDB(const am_Domain_s &domainData, am_domainID_t &domainID);
+ am_Error_e enterMainConnectionDB(const am_MainConnection_s &mainConnectionData, am_mainConnectionID_t &connectionID);
+ am_Error_e enterSinkDB(const am_Sink_s &sinkData, am_sinkID_t &sinkID);
+ am_Error_e enterCrossfaderDB(const am_Crossfader_s &crossfaderData, am_crossfaderID_t &crossfaderID);
+ am_Error_e enterGatewayDB(const am_Gateway_s &gatewayData, am_gatewayID_t &gatewayID);
+ am_Error_e enterConverterDB(const am_Converter_s &converterData, am_converterID_t &converterID);
+ am_Error_e enterSourceDB(const am_Source_s &sourceData, am_sourceID_t &sourceID);
+ am_Error_e enterSinkClassDB(const am_SinkClass_s &sinkClass, am_sinkClass_t &sinkClassID);
+ am_Error_e enterSourceClassDB(am_sourceClass_t &sourceClassID, const am_SourceClass_s &sourceClass);
+ am_Error_e changeSinkClassInfoDB(const am_SinkClass_s &sinkClass);
+ am_Error_e changeSourceClassInfoDB(const am_SourceClass_s &sourceClass);
+ am_Error_e enterSystemPropertiesListDB(const std::vector<am_SystemProperty_s> &listSystemProperties);
+ am_Error_e changeMainConnectionRouteDB(const am_mainConnectionID_t mainconnectionID, const std::vector<am_connectionID_t> &listConnectionID);
am_Error_e changeMainConnectionStateDB(const am_mainConnectionID_t mainconnectionID, const am_ConnectionState_e connectionState);
am_Error_e changeSinkMainVolumeDB(const am_mainVolume_t mainVolume, const am_sinkID_t sinkID);
- am_Error_e changeSinkAvailabilityDB(const am_Availability_s& availability, const am_sinkID_t sinkID);
+ am_Error_e changeSinkAvailabilityDB(const am_Availability_s &availability, const am_sinkID_t sinkID);
am_Error_e changDomainStateDB(const am_DomainState_e domainState, const am_domainID_t domainID);
am_Error_e changeSinkMuteStateDB(const am_MuteState_e muteState, const am_sinkID_t sinkID);
- am_Error_e changeMainSinkSoundPropertyDB(const am_MainSoundProperty_s& soundProperty, const am_sinkID_t sinkID);
- am_Error_e changeMainSourceSoundPropertyDB(const am_MainSoundProperty_s& soundProperty, const am_sourceID_t sourceID);
- am_Error_e changeSourceAvailabilityDB(const am_Availability_s& availability, const am_sourceID_t sourceID);
- am_Error_e changeSystemPropertyDB(const am_SystemProperty_s& property);
+ am_Error_e changeMainSinkSoundPropertyDB(const am_MainSoundProperty_s &soundProperty, const am_sinkID_t sinkID);
+ am_Error_e changeMainSourceSoundPropertyDB(const am_MainSoundProperty_s &soundProperty, const am_sourceID_t sourceID);
+ am_Error_e changeSourceAvailabilityDB(const am_Availability_s &availability, const am_sourceID_t sourceID);
+ am_Error_e changeSystemPropertyDB(const am_SystemProperty_s &property);
am_Error_e removeMainConnectionDB(const am_mainConnectionID_t mainConnectionID);
am_Error_e removeSinkDB(const am_sinkID_t sinkID);
am_Error_e removeSourceDB(const am_sourceID_t sourceID);
@@ -88,68 +88,68 @@ public:
am_Error_e removeDomainDB(const am_domainID_t domainID);
am_Error_e removeSinkClassDB(const am_sinkClass_t sinkClassID);
am_Error_e removeSourceClassDB(const am_sourceClass_t sourceClassID);
- am_Error_e getSourceClassInfoDB(const am_sourceID_t sourceID, am_SourceClass_s& classInfo) const;
- am_Error_e getSinkClassInfoDB(const am_sinkID_t sinkID, am_SinkClass_s& sinkClass) const;
- am_Error_e getSinkInfoDB(const am_sinkID_t sinkID, am_Sink_s& sinkData) const;
- am_Error_e getSourceInfoDB(const am_sourceID_t sourceID, am_Source_s& sourceData) const;
- am_Error_e getGatewayInfoDB(const am_gatewayID_t gatewayID, am_Gateway_s& gatewayData) const;
- am_Error_e getConverterInfoDB(const am_converterID_t converterID, am_Converter_s& converterData) const;
- am_Error_e getCrossfaderInfoDB(const am_crossfaderID_t crossfaderID, am_Crossfader_s& crossfaderData) const;
- am_Error_e getMainConnectionInfoDB(const am_mainConnectionID_t mainConnectionID, am_MainConnection_s& mainConnectionData) const;
- am_Error_e getListSinksOfDomain(const am_domainID_t domainID, std::vector<am_sinkID_t>& listSinkID) const;
- am_Error_e getListSourcesOfDomain(const am_domainID_t domainID, std::vector<am_sourceID_t>& listSourceID) const;
- am_Error_e getListCrossfadersOfDomain(const am_domainID_t domainID, std::vector<am_crossfaderID_t>& listCrossfadersID) const;
- am_Error_e getListGatewaysOfDomain(const am_domainID_t domainID, std::vector<am_gatewayID_t>& listGatewaysID) const;
- am_Error_e getListConvertersOfDomain(const am_domainID_t domainID, std::vector<am_converterID_t>& listConverterID) const;
- am_Error_e getListMainConnections(std::vector<am_MainConnection_s>& listMainConnections) const;
- am_Error_e getListDomains(std::vector<am_Domain_s>& listDomains) const;
- am_Error_e getListConnections(std::vector<am_Connection_s>& listConnections) const;
- am_Error_e getListSinks(std::vector<am_Sink_s>& listSinks) const;
- am_Error_e getListSources(std::vector<am_Source_s>& listSources) const;
- am_Error_e getListSourceClasses(std::vector<am_SourceClass_s>& listSourceClasses) const;
- am_Error_e getListHandles(std::vector<am_Handle_s>& listHandles) const;
- am_Error_e getListCrossfaders(std::vector<am_Crossfader_s>& listCrossfaders) const;
- am_Error_e getListGateways(std::vector<am_Gateway_s>& listGateways) const;
- am_Error_e getListConverters(std::vector<am_Converter_s>& listConverters) const;
- am_Error_e getListSinkClasses(std::vector<am_SinkClass_s>& listSinkClasses) const;
- am_Error_e getListSystemProperties(std::vector<am_SystemProperty_s>& listSystemProperties) const;
+ am_Error_e getSourceClassInfoDB(const am_sourceID_t sourceID, am_SourceClass_s &classInfo) const;
+ am_Error_e getSinkClassInfoDB(const am_sinkID_t sinkID, am_SinkClass_s &sinkClass) const;
+ am_Error_e getSinkInfoDB(const am_sinkID_t sinkID, am_Sink_s &sinkData) const;
+ am_Error_e getSourceInfoDB(const am_sourceID_t sourceID, am_Source_s &sourceData) const;
+ am_Error_e getGatewayInfoDB(const am_gatewayID_t gatewayID, am_Gateway_s &gatewayData) const;
+ am_Error_e getConverterInfoDB(const am_converterID_t converterID, am_Converter_s &converterData) const;
+ am_Error_e getCrossfaderInfoDB(const am_crossfaderID_t crossfaderID, am_Crossfader_s &crossfaderData) const;
+ am_Error_e getMainConnectionInfoDB(const am_mainConnectionID_t mainConnectionID, am_MainConnection_s &mainConnectionData) const;
+ am_Error_e getListSinksOfDomain(const am_domainID_t domainID, std::vector<am_sinkID_t> &listSinkID) const;
+ am_Error_e getListSourcesOfDomain(const am_domainID_t domainID, std::vector<am_sourceID_t> &listSourceID) const;
+ am_Error_e getListCrossfadersOfDomain(const am_domainID_t domainID, std::vector<am_crossfaderID_t> &listCrossfadersID) const;
+ am_Error_e getListGatewaysOfDomain(const am_domainID_t domainID, std::vector<am_gatewayID_t> &listGatewaysID) const;
+ am_Error_e getListConvertersOfDomain(const am_domainID_t domainID, std::vector<am_converterID_t> &listConverterID) const;
+ am_Error_e getListMainConnections(std::vector<am_MainConnection_s> &listMainConnections) const;
+ am_Error_e getListDomains(std::vector<am_Domain_s> &listDomains) const;
+ am_Error_e getListConnections(std::vector<am_Connection_s> &listConnections) const;
+ am_Error_e getListSinks(std::vector<am_Sink_s> &listSinks) const;
+ am_Error_e getListSources(std::vector<am_Source_s> &listSources) const;
+ am_Error_e getListSourceClasses(std::vector<am_SourceClass_s> &listSourceClasses) const;
+ am_Error_e getListHandles(std::vector<am_Handle_s> &listHandles) const;
+ am_Error_e getListCrossfaders(std::vector<am_Crossfader_s> &listCrossfaders) const;
+ am_Error_e getListGateways(std::vector<am_Gateway_s> &listGateways) const;
+ am_Error_e getListConverters(std::vector<am_Converter_s> &listConverters) const;
+ am_Error_e getListSinkClasses(std::vector<am_SinkClass_s> &listSinkClasses) const;
+ am_Error_e getListSystemProperties(std::vector<am_SystemProperty_s> &listSystemProperties) const;
void setCommandReady();
void setCommandRundown();
void setRoutingReady();
void setRoutingRundown();
void confirmControllerReady(const am_Error_e error);
void confirmControllerRundown(const am_Error_e error);
- am_Error_e getSocketHandler(CAmSocketHandler*& socketHandler);
- void getInterfaceVersion(std::string& version) const;
- am_Error_e changeSourceDB(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 changeSinkDB(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) ;
- am_Error_e changeGatewayDB(const am_gatewayID_t gatewayID, const std::vector<am_CustomConnectionFormat_t>& listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t>& listSinkConnectionFormats, const std::vector<bool>& convertionMatrix) ;
- am_Error_e changeConverterDB(const am_converterID_t converterID, const std::vector<am_CustomConnectionFormat_t>& listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t>& listSinkConnectionFormats, const std::vector<bool>& convertionMatrix);
- am_Error_e setVolumes(am_Handle_s& handle, const std::vector<am_Volumes_s>& listVolumes) ;
- am_Error_e setSinkNotificationConfiguration(am_Handle_s& handle, const am_sinkID_t sinkID, const am_NotificationConfiguration_s& notificationConfiguration) ;
- am_Error_e setSourceNotificationConfiguration(am_Handle_s& handle, const am_sourceID_t sourceID, const am_NotificationConfiguration_s& notificationConfiguration) ;
- void sendMainSinkNotificationPayload(const am_sinkID_t sinkID, const am_NotificationPayload_s& notificationPayload) ;
- void sendMainSourceNotificationPayload(const am_sourceID_t sourceID, const am_NotificationPayload_s& notificationPayload) ;
- am_Error_e changeMainSinkNotificationConfigurationDB(const am_sinkID_t sinkID, const am_NotificationConfiguration_s& mainNotificationConfiguration) ;
- am_Error_e changeMainSourceNotificationConfigurationDB(const am_sourceID_t sourceID, const am_NotificationConfiguration_s& mainNotificationConfiguration) ;
- am_Error_e getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s>& listSoundproperties) const;
- am_Error_e getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s>& listSoundproperties) const;
- am_Error_e getListSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_SoundProperty_s>& listSoundproperties) const;
- am_Error_e getListSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_SoundProperty_s>& listSoundproperties) const;
- am_Error_e getMainSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomMainSoundPropertyType_t propertyType, int16_t& value) const;
- am_Error_e getSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomSoundPropertyType_t propertyType, int16_t& value) const;
- am_Error_e getMainSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomMainSoundPropertyType_t propertyType, int16_t& value) const;
- am_Error_e getSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomSoundPropertyType_t propertyType, int16_t& value) const;
- am_Error_e resyncConnectionState(const am_domainID_t domainID, std::vector<am_Connection_s>& listOfExistingConnections);
+ am_Error_e getSocketHandler(CAmSocketHandler * &socketHandler);
+ void getInterfaceVersion(std::string &version) const;
+ am_Error_e changeSourceDB(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 changeSinkDB(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);
+ am_Error_e changeGatewayDB(const am_gatewayID_t gatewayID, const std::vector<am_CustomConnectionFormat_t> &listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t> &listSinkConnectionFormats, const std::vector<bool> &convertionMatrix);
+ am_Error_e changeConverterDB(const am_converterID_t converterID, const std::vector<am_CustomConnectionFormat_t> &listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t> &listSinkConnectionFormats, const std::vector<bool> &convertionMatrix);
+ am_Error_e setVolumes(am_Handle_s &handle, const std::vector<am_Volumes_s> &listVolumes);
+ am_Error_e setSinkNotificationConfiguration(am_Handle_s &handle, const am_sinkID_t sinkID, const am_NotificationConfiguration_s &notificationConfiguration);
+ am_Error_e setSourceNotificationConfiguration(am_Handle_s &handle, const am_sourceID_t sourceID, const am_NotificationConfiguration_s &notificationConfiguration);
+ void sendMainSinkNotificationPayload(const am_sinkID_t sinkID, const am_NotificationPayload_s &notificationPayload);
+ void sendMainSourceNotificationPayload(const am_sourceID_t sourceID, const am_NotificationPayload_s &notificationPayload);
+ am_Error_e changeMainSinkNotificationConfigurationDB(const am_sinkID_t sinkID, const am_NotificationConfiguration_s &mainNotificationConfiguration);
+ am_Error_e changeMainSourceNotificationConfigurationDB(const am_sourceID_t sourceID, const am_NotificationConfiguration_s &mainNotificationConfiguration);
+ am_Error_e getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s> &listSoundproperties) const;
+ am_Error_e getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s> &listSoundproperties) const;
+ am_Error_e getListSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_SoundProperty_s> &listSoundproperties) const;
+ am_Error_e getListSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_SoundProperty_s> &listSoundproperties) const;
+ am_Error_e getMainSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomMainSoundPropertyType_t propertyType, int16_t &value) const;
+ am_Error_e getSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomSoundPropertyType_t propertyType, int16_t &value) const;
+ am_Error_e getMainSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomMainSoundPropertyType_t propertyType, int16_t &value) const;
+ am_Error_e getSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomSoundPropertyType_t propertyType, int16_t &value) const;
+ am_Error_e resyncConnectionState(const am_domainID_t domainID, std::vector<am_Connection_s> &listOfExistingConnections);
am_Error_e removeHandle(const am_Handle_s handle);
private:
- IAmDatabaseHandler* mDatabaseHandler; //!< pointer tto the databasehandler
- CAmRoutingSender* mRoutingSender; //!< pointer to the routing send interface.
- CAmCommandSender* mCommandSender; //!< pointer to the command send interface
- CAmSocketHandler* mSocketHandler; //!< pointer to the socketHandler
- CAmRouter* mRouter; //!< pointer to the Router
- CAmNodeStateCommunicator* mNodeStateCommunicator;
+ IAmDatabaseHandler *mDatabaseHandler; //!< pointer tto the databasehandler
+ CAmRoutingSender *mRoutingSender; //!< pointer to the routing send interface.
+ CAmCommandSender *mCommandSender; //!< pointer to the command send interface
+ CAmSocketHandler *mSocketHandler; //!< pointer to the socketHandler
+ CAmRouter *mRouter; //!< pointer to the Router
+ CAmNodeStateCommunicator *mNodeStateCommunicator;
};
}
diff --git a/AudioManagerCore/include/CAmControlSender.h b/AudioManagerCore/include/CAmControlSender.h
index 2c31cf9..6d6a562 100644
--- a/AudioManagerCore/include/CAmControlSender.h
+++ b/AudioManagerCore/include/CAmControlSender.h
@@ -25,7 +25,7 @@
#define CONTROLSENDER_H_
#ifdef UNIT_TEST
-#include "../test/IAmControlBackdoor.h"
+# include "../test/IAmControlBackdoor.h"
#endif
#include "IAmControl.h"
@@ -41,95 +41,96 @@ namespace am
class CAmControlSender
{
public:
- CAmControlSender(std::string controlPluginFile,CAmSocketHandler* sockethandler);
+ CAmControlSender(std::string controlPluginFile, CAmSocketHandler *sockethandler);
CAmControlSender();
~CAmControlSender();
- am_Error_e startupController(IAmControlReceive* controlreceiveinterface) ;
- void setControllerReady() ;
- void setControllerRundown(const int16_t signal) ;
- am_Error_e hookUserConnectionRequest(const am_sourceID_t sourceID, const am_sinkID_t sinkID, am_mainConnectionID_t& mainConnectionID) ;
- am_Error_e hookUserDisconnectionRequest(const am_mainConnectionID_t connectionID) ;
- am_Error_e hookUserSetMainSinkSoundProperty(const am_sinkID_t sinkID, const am_MainSoundProperty_s& soundProperty) ;
- am_Error_e hookUserSetMainSourceSoundProperty(const am_sourceID_t sourceID, const am_MainSoundProperty_s& soundProperty) ;
- am_Error_e hookUserSetSystemProperty(const am_SystemProperty_s& property) ;
- am_Error_e hookUserVolumeChange(const am_sinkID_t SinkID, const am_mainVolume_t newVolume) ;
- am_Error_e hookUserVolumeStep(const am_sinkID_t SinkID, const int16_t increment) ;
- am_Error_e hookUserSetSinkMuteState(const am_sinkID_t sinkID, const am_MuteState_e muteState) ;
- am_Error_e hookSystemRegisterDomain(const am_Domain_s& domainData, am_domainID_t& domainID) ;
- am_Error_e hookSystemDeregisterDomain(const am_domainID_t domainID) ;
- void hookSystemDomainRegistrationComplete(const am_domainID_t domainID) ;
- am_Error_e hookSystemRegisterSink(const am_Sink_s& sinkData, am_sinkID_t& sinkID) ;
- am_Error_e hookSystemDeregisterSink(const am_sinkID_t sinkID) ;
- am_Error_e hookSystemRegisterSource(const am_Source_s& sourceData, am_sourceID_t& sourceID) ;
- am_Error_e hookSystemDeregisterSource(const am_sourceID_t sourceID) ;
- am_Error_e hookSystemRegisterGateway(const am_Gateway_s& gatewayData, am_gatewayID_t& gatewayID) ;
- am_Error_e hookSystemRegisterConverter(const am_Converter_s& converterData, am_converterID_t& converterID);
- am_Error_e hookSystemDeregisterGateway(const am_gatewayID_t gatewayID) ;
- am_Error_e hookSystemDeregisterConverter(const am_converterID_t converterID) ;
- am_Error_e hookSystemRegisterCrossfader(const am_Crossfader_s& crossfaderData, am_crossfaderID_t& crossfaderID) ;
- am_Error_e hookSystemDeregisterCrossfader(const am_crossfaderID_t crossfaderID) ;
- void hookSystemSinkVolumeTick(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume) ;
- void hookSystemSourceVolumeTick(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume) ;
- void hookSystemInterruptStateChange(const am_sourceID_t sourceID, const am_InterruptState_e interruptState) ;
- void hookSystemSinkAvailablityStateChange(const am_sinkID_t sinkID, const am_Availability_s& availability) ;
- void hookSystemSourceAvailablityStateChange(const am_sourceID_t sourceID, const am_Availability_s& availability) ;
- void hookSystemDomainStateChange(const am_domainID_t domainID, const am_DomainState_e state) ;
- void hookSystemReceiveEarlyData(const std::vector<am_EarlyData_s>& data) ;
- void hookSystemSpeedChange(const am_speed_t speed) ;
- void hookSystemTimingInformationChanged(const am_mainConnectionID_t mainConnectionID, const am_timeSync_t time) ;
- void cbAckConnect(const am_Handle_s handle, const am_Error_e errorID) ;
- void cbAckDisconnect(const am_Handle_s handle, const am_Error_e errorID) ;
- 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) ;
- void cbAckSetSourceVolumeChange(const am_Handle_s handle, const am_volume_t voulme, const am_Error_e error) ;
- void cbAckSetSourceState(const am_Handle_s handle, const am_Error_e error) ;
- void cbAckSetSourceSoundProperties(const am_Handle_s handle, const am_Error_e error) ;
- void cbAckSetSourceSoundProperty(const am_Handle_s handle, const am_Error_e error) ;
- void cbAckSetSinkSoundProperties(const am_Handle_s handle, const am_Error_e error) ;
- void cbAckSetSinkSoundProperty(const am_Handle_s handle, const am_Error_e error) ;
- am_Error_e getConnectionFormatChoice(const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_Route_s listRoute, const std::vector<am_CustomConnectionFormat_t> listPossibleConnectionFormats, std::vector<am_CustomConnectionFormat_t>& listPrioConnectionFormats) ;
- void confirmCommandReady(const am_Error_e error) ;
- void confirmRoutingReady(const am_Error_e error) ;
- void confirmCommandRundown(const am_Error_e error) ;
- void confirmRoutingRundown(const am_Error_e error) ;
- void getInterfaceVersion(std::string& version) const ;
- 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) ;
- 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 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) ;
- 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 cbAckSetVolume(const am_Handle_s handle, const std::vector<am_Volumes_s>& listVolumes, const am_Error_e error) ;
- void cbAckSetSinkNotificationConfiguration(const am_Handle_s handle, const am_Error_e error) ;
- void cbAckSetSourceNotificationConfiguration(const am_Handle_s handle, const am_Error_e error) ;
- void hookSinkNotificationDataChanged(const am_sinkID_t sinkID, const am_NotificationPayload_s& payload) ;
- void hookSourceNotificationDataChanged(const am_sourceID_t sourceID, const am_NotificationPayload_s& payload) ;
- am_Error_e hookUserSetMainSinkNotificationConfiguration(const am_sinkID_t sinkID, const am_NotificationConfiguration_s& notificationConfiguration) ;
- am_Error_e hookUserSetMainSourceNotificationConfiguration(const am_sourceID_t sourceID, const am_NotificationConfiguration_s& notificationConfiguration) ;
+ am_Error_e startupController(IAmControlReceive *controlreceiveinterface);
+ void setControllerReady();
+ void setControllerRundown(const int16_t signal);
+ am_Error_e hookUserConnectionRequest(const am_sourceID_t sourceID, const am_sinkID_t sinkID, am_mainConnectionID_t &mainConnectionID);
+ am_Error_e hookUserDisconnectionRequest(const am_mainConnectionID_t connectionID);
+ am_Error_e hookUserSetMainSinkSoundProperty(const am_sinkID_t sinkID, const am_MainSoundProperty_s &soundProperty);
+ am_Error_e hookUserSetMainSourceSoundProperty(const am_sourceID_t sourceID, const am_MainSoundProperty_s &soundProperty);
+ am_Error_e hookUserSetSystemProperty(const am_SystemProperty_s &property);
+ am_Error_e hookUserVolumeChange(const am_sinkID_t SinkID, const am_mainVolume_t newVolume);
+ am_Error_e hookUserVolumeStep(const am_sinkID_t SinkID, const int16_t increment);
+ am_Error_e hookUserSetSinkMuteState(const am_sinkID_t sinkID, const am_MuteState_e muteState);
+ am_Error_e hookSystemRegisterDomain(const am_Domain_s &domainData, am_domainID_t &domainID);
+ am_Error_e hookSystemDeregisterDomain(const am_domainID_t domainID);
+ void hookSystemDomainRegistrationComplete(const am_domainID_t domainID);
+ am_Error_e hookSystemRegisterSink(const am_Sink_s &sinkData, am_sinkID_t &sinkID);
+ am_Error_e hookSystemDeregisterSink(const am_sinkID_t sinkID);
+ am_Error_e hookSystemRegisterSource(const am_Source_s &sourceData, am_sourceID_t &sourceID);
+ am_Error_e hookSystemDeregisterSource(const am_sourceID_t sourceID);
+ am_Error_e hookSystemRegisterGateway(const am_Gateway_s &gatewayData, am_gatewayID_t &gatewayID);
+ am_Error_e hookSystemRegisterConverter(const am_Converter_s &converterData, am_converterID_t &converterID);
+ am_Error_e hookSystemDeregisterGateway(const am_gatewayID_t gatewayID);
+ am_Error_e hookSystemDeregisterConverter(const am_converterID_t converterID);
+ am_Error_e hookSystemRegisterCrossfader(const am_Crossfader_s &crossfaderData, am_crossfaderID_t &crossfaderID);
+ am_Error_e hookSystemDeregisterCrossfader(const am_crossfaderID_t crossfaderID);
+ void hookSystemSinkVolumeTick(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume);
+ void hookSystemSourceVolumeTick(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume);
+ void hookSystemInterruptStateChange(const am_sourceID_t sourceID, const am_InterruptState_e interruptState);
+ void hookSystemSinkAvailablityStateChange(const am_sinkID_t sinkID, const am_Availability_s &availability);
+ void hookSystemSourceAvailablityStateChange(const am_sourceID_t sourceID, const am_Availability_s &availability);
+ void hookSystemDomainStateChange(const am_domainID_t domainID, const am_DomainState_e state);
+ void hookSystemReceiveEarlyData(const std::vector<am_EarlyData_s> &data);
+ void hookSystemSpeedChange(const am_speed_t speed);
+ void hookSystemTimingInformationChanged(const am_mainConnectionID_t mainConnectionID, const am_timeSync_t time);
+ void cbAckConnect(const am_Handle_s handle, const am_Error_e errorID);
+ void cbAckDisconnect(const am_Handle_s handle, const am_Error_e errorID);
+ 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);
+ void cbAckSetSourceVolumeChange(const am_Handle_s handle, const am_volume_t voulme, const am_Error_e error);
+ void cbAckSetSourceState(const am_Handle_s handle, const am_Error_e error);
+ void cbAckSetSourceSoundProperties(const am_Handle_s handle, const am_Error_e error);
+ void cbAckSetSourceSoundProperty(const am_Handle_s handle, const am_Error_e error);
+ void cbAckSetSinkSoundProperties(const am_Handle_s handle, const am_Error_e error);
+ void cbAckSetSinkSoundProperty(const am_Handle_s handle, const am_Error_e error);
+ am_Error_e getConnectionFormatChoice(const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_Route_s listRoute, const std::vector<am_CustomConnectionFormat_t> listPossibleConnectionFormats, std::vector<am_CustomConnectionFormat_t> &listPrioConnectionFormats);
+ void confirmCommandReady(const am_Error_e error);
+ void confirmRoutingReady(const am_Error_e error);
+ void confirmCommandRundown(const am_Error_e error);
+ void confirmRoutingRundown(const am_Error_e error);
+ void getInterfaceVersion(std::string &version) const;
+ 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);
+ 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 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);
+ 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 cbAckSetVolume(const am_Handle_s handle, const std::vector<am_Volumes_s> &listVolumes, const am_Error_e error);
+ void cbAckSetSinkNotificationConfiguration(const am_Handle_s handle, const am_Error_e error);
+ void cbAckSetSourceNotificationConfiguration(const am_Handle_s handle, const am_Error_e error);
+ void hookSinkNotificationDataChanged(const am_sinkID_t sinkID, const am_NotificationPayload_s &payload);
+ void hookSourceNotificationDataChanged(const am_sourceID_t sourceID, const am_NotificationPayload_s &payload);
+ am_Error_e hookUserSetMainSinkNotificationConfiguration(const am_sinkID_t sinkID, const am_NotificationConfiguration_s &notificationConfiguration);
+ am_Error_e hookUserSetMainSourceNotificationConfiguration(const am_sourceID_t sourceID, const am_NotificationConfiguration_s &notificationConfiguration);
void hookSystemSingleTimingInformationChanged(const am_connectionID_t connectionID, const am_timeSync_t time);
- void receiverCallback(const pollfd pollfd, const sh_pollHandle_t handle, void* userData);
- bool checkerCallback(const sh_pollHandle_t handle, void* userData);
- bool dispatcherCallback(const sh_pollHandle_t handle, void* userData);
+ void receiverCallback(const pollfd pollfd, const sh_pollHandle_t handle, void *userData);
+ bool checkerCallback(const sh_pollHandle_t handle, void *userData);
+ bool dispatcherCallback(const sh_pollHandle_t handle, void *userData);
void setControllerRundownSafe(int16_t signal)
{
int16_t p(signal);
ssize_t result(-1);
- result = write(mPipe[1], &p, sizeof(p));
- }
+ result = write(mPipe[1], &p, sizeof(p));
+ }
- TAmShPollFired<CAmControlSender> receiverCallbackT;
- TAmShPollCheck<CAmControlSender> checkerCallbackT;
+ TAmShPollFired<CAmControlSender> receiverCallbackT;
+ TAmShPollCheck<CAmControlSender> checkerCallbackT;
TAmShPollDispatch<CAmControlSender> dispatcherCallbackT;
-
- //we need this here to call the rundown from the signal handler. In case everything screwed up
+ // we need this here to call the rundown from the signal handler. In case everything screwed up
static void CallsetControllerRundown(int16_t signal)
{
if (mInstance)
+ {
mInstance->setControllerRundown(signal);
+ }
}
- //this static callback is used from the signal handler. It is used when a normal rundown is assumed and the mainloop is used to call rundown.
+ // this static callback is used from the signal handler. It is used when a normal rundown is assumed and the mainloop is used to call rundown.
static void CallsetControllerRundownSafe(int16_t signal)
{
if (mInstance)
@@ -142,12 +143,12 @@ public:
friend class IAmControlBackdoor;
#endif
private:
- int mPipe[2];
- void* mlibHandle; //!< pointer to the loaded control plugin interface
- IAmControlSend* mController; //!< pointer to the ControlSend interface
- static CAmControlSender* mInstance;
- int16_t mSignal;
- std::string mControlPluginFile;
+ int mPipe[2];
+ void *mlibHandle; //!< pointer to the loaded control plugin interface
+ IAmControlSend *mController; //!< pointer to the ControlSend interface
+ static CAmControlSender *mInstance;
+ int16_t mSignal;
+ std::string mControlPluginFile;
};
}
diff --git a/AudioManagerCore/include/CAmDatabaseHandlerMap.h b/AudioManagerCore/include/CAmDatabaseHandlerMap.h
index 2a3a9ec..93ee1be 100644
--- a/AudioManagerCore/include/CAmDatabaseHandlerMap.h
+++ b/AudioManagerCore/include/CAmDatabaseHandlerMap.h
@@ -14,7 +14,7 @@
* this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
*
-* \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
*
* \file CAmDatabaseHandlerMap.h
* For further information see http://www.genivi.org/.
@@ -37,114 +37,114 @@
namespace am
{
#ifndef AM_MAP_CAPACITY
- #define AM_MAP_CAPACITY 0
+# define AM_MAP_CAPACITY 0
#endif
#ifndef AM_MAX_CONNECTIONS
- #define AM_MAX_CONNECTIONS 0x1000
+# define AM_MAX_CONNECTIONS 0x1000
#endif
#ifndef AM_MAX_MAIN_CONNECTIONS
- #define AM_MAX_MAIN_CONNECTIONS SHRT_MAX
+# define AM_MAX_MAIN_CONNECTIONS SHRT_MAX
#endif
-
-
-//todo: check the enum values before entering & changing in the database.
-//todo: change asserts for dynamic boundary checks into failure answers.#
-//todo: check autoincrement boundary and set to 16bit limits
-//todo: If the sink is part of a gateway, the listconnectionFormats is copied to the gatewayInformation. Check this statement for sinks & sources
-//todo: exchange last_insert_row id to be more safe
-//todo: create test to ensure uniqueness of names throughout the database
-//todo: enforce the uniqueness of names
+// todo: check the enum values before entering & changing in the database.
+// todo: change asserts for dynamic boundary checks into failure answers.#
+// todo: check autoincrement boundary and set to 16bit limits
+// todo: If the sink is part of a gateway, the listconnectionFormats is copied to the gatewayInformation. Check this statement for sinks & sources
+// todo: exchange last_insert_row id to be more safe
+// todo: create test to ensure uniqueness of names throughout the database
+// todo: enforce the uniqueness of names
/**
* This class handles and abstracts the database
*/
class CAmDatabaseHandlerMap : public IAmDatabaseHandler
{
- bool mFirstStaticSink; //!< bool for dynamic range handling
- bool mFirstStaticSource; //!< bool for dynamic range handling
- bool mFirstStaticGateway; //!< bool for dynamic range handling
- bool mFirstStaticConverter; //!< bool for dynamic range handling
- bool mFirstStaticSinkClass; //!< bool for dynamic range handling
+ bool mFirstStaticSink; //!< bool for dynamic range handling
+ bool mFirstStaticSource; //!< bool for dynamic range handling
+ bool mFirstStaticGateway; //!< bool for dynamic range handling
+ bool mFirstStaticConverter; //!< bool for dynamic range handling
+ bool mFirstStaticSinkClass; //!< bool for dynamic range handling
bool mFirstStaticSourceClass; //!< bool for dynamic range handling
- bool mFirstStaticCrossfader; //!< bool for dynamic range handling
+ bool mFirstStaticCrossfader; //!< bool for dynamic range handling
public:
- CAmDatabaseHandlerMap();
+ CAmDatabaseHandlerMap();
virtual ~CAmDatabaseHandlerMap();
/**
- * Database observer.
- */
- struct AmDatabaseObserverCallbacks: public IAmDatabaseObserver
+ * Database observer.
+ */
+ struct AmDatabaseObserverCallbacks : public IAmDatabaseObserver
{
protected:
- std::function<void()> dboNumberOfSinkClassesChanged;
- std::function<void()> dboNumberOfSourceClassesChanged;
- std::function<void(const am_Sink_s&)> dboNewSink;
- std::function<void(const am_Source_s&)> dboNewSource;
- std::function<void(const am_Domain_s& )> dboNewDomain;
- std::function<void (const am_Gateway_s& )> dboNewGateway;
- std::function<void (const am_Converter_s& )> dboNewConverter;
- std::function<void (const am_Crossfader_s& )> dboNewCrossfader;
- std::function<void (const am_MainConnectionType_s& )> dboNewMainConnection;
- std::function<void (const am_mainConnectionID_t )> dboRemovedMainConnection;
- std::function<void (const am_sinkID_t , const bool )> dboRemovedSink;
- std::function<void (const am_sourceID_t , const bool )> dboRemovedSource;
- std::function<void (const am_domainID_t )> dboRemoveDomain;
- std::function<void (const am_gatewayID_t )> dboRemoveGateway;
- std::function<void (const am_converterID_t )> dboRemoveConverter;
- std::function<void (const am_crossfaderID_t )> dboRemoveCrossfader;
- std::function<void (const am_mainConnectionID_t , const am_ConnectionState_e )> dboMainConnectionStateChanged;
- std::function<void (const am_sinkID_t , const am_MainSoundProperty_s& )> dboMainSinkSoundPropertyChanged;
- std::function<void (const am_sourceID_t , const am_MainSoundProperty_s& )> dboMainSourceSoundPropertyChanged;
- std::function<void (const am_sinkID_t , const am_Availability_s& )> dboSinkAvailabilityChanged;
- std::function<void (const am_sourceID_t , const am_Availability_s& )> dboSourceAvailabilityChanged;
- std::function<void (const am_sinkID_t , const am_mainVolume_t )> dboVolumeChanged;
- std::function<void (const am_sinkID_t , const am_MuteState_e )> dboSinkMuteStateChanged;
- std::function<void (const am_SystemProperty_s& )>dboSystemPropertyChanged;
- std::function<void (const am_mainConnectionID_t , const am_timeSync_t )>dboTimingInformationChanged;
- std::function<void (const am_sinkID_t , const am_sinkClass_t , const std::vector<am_MainSoundProperty_s>& , const bool )>dboSinkUpdated;
- std::function<void (const am_sourceID_t , const am_sourceClass_t , const std::vector<am_MainSoundProperty_s>& , const bool )>dboSourceUpdated;
- std::function<void (const am_sinkID_t , const am_NotificationConfiguration_s )> dboSinkMainNotificationConfigurationChanged;
- std::function<void (const am_sourceID_t , const am_NotificationConfiguration_s )> dboSourceMainNotificationConfigurationChanged;
+ std::function<void()> dboNumberOfSinkClassesChanged;
+ std::function<void()> dboNumberOfSourceClassesChanged;
+ std::function<void(const am_Sink_s &)> dboNewSink;
+ std::function<void(const am_Source_s &)> dboNewSource;
+ std::function<void(const am_Domain_s &)> dboNewDomain;
+ std::function<void(const am_Gateway_s &)> dboNewGateway;
+ std::function<void(const am_Converter_s &)> dboNewConverter;
+ std::function<void(const am_Crossfader_s &)> dboNewCrossfader;
+ std::function<void(const am_MainConnectionType_s &)> dboNewMainConnection;
+ std::function<void(const am_mainConnectionID_t)> dboRemovedMainConnection;
+ std::function<void(const am_sinkID_t, const bool)> dboRemovedSink;
+ std::function<void(const am_sourceID_t, const bool)> dboRemovedSource;
+ std::function<void(const am_domainID_t)> dboRemoveDomain;
+ std::function<void(const am_gatewayID_t)> dboRemoveGateway;
+ std::function<void(const am_converterID_t)> dboRemoveConverter;
+ std::function<void(const am_crossfaderID_t)> dboRemoveCrossfader;
+ std::function<void(const am_mainConnectionID_t, const am_ConnectionState_e)> dboMainConnectionStateChanged;
+ std::function<void(const am_sinkID_t, const am_MainSoundProperty_s &)> dboMainSinkSoundPropertyChanged;
+ std::function<void(const am_sourceID_t, const am_MainSoundProperty_s &)> dboMainSourceSoundPropertyChanged;
+ std::function<void(const am_sinkID_t, const am_Availability_s &)> dboSinkAvailabilityChanged;
+ std::function<void(const am_sourceID_t, const am_Availability_s &)> dboSourceAvailabilityChanged;
+ std::function<void(const am_sinkID_t, const am_mainVolume_t)> dboVolumeChanged;
+ std::function<void(const am_sinkID_t, const am_MuteState_e)> dboSinkMuteStateChanged;
+ std::function<void(const am_SystemProperty_s &)>dboSystemPropertyChanged;
+ std::function<void(const am_mainConnectionID_t, const am_timeSync_t)>dboTimingInformationChanged;
+ std::function<void(const am_sinkID_t, const am_sinkClass_t, const std::vector<am_MainSoundProperty_s> &, const bool)>dboSinkUpdated;
+ std::function<void(const am_sourceID_t, const am_sourceClass_t, const std::vector<am_MainSoundProperty_s> &, const bool)>dboSourceUpdated;
+ std::function<void(const am_sinkID_t, const am_NotificationConfiguration_s)> dboSinkMainNotificationConfigurationChanged;
+ std::function<void(const am_sourceID_t, const am_NotificationConfiguration_s)> dboSourceMainNotificationConfigurationChanged;
public:
- friend class CAmDatabaseHandlerMap;
- AmDatabaseObserverCallbacks():IAmDatabaseObserver(), mpDatabaseHandler(nullptr) {}
- virtual ~AmDatabaseObserverCallbacks(){ if(mpDatabaseHandler) mpDatabaseHandler->unregisterObserver(this);}
+ friend class CAmDatabaseHandlerMap;
+ AmDatabaseObserverCallbacks()
+ : IAmDatabaseObserver()
+ , mpDatabaseHandler(nullptr) {}
+ virtual ~AmDatabaseObserverCallbacks(){ if (mpDatabaseHandler) {mpDatabaseHandler->unregisterObserver(this);}}
protected:
- CAmDatabaseHandlerMap *mpDatabaseHandler;
+ CAmDatabaseHandlerMap *mpDatabaseHandler;
};
- am_Error_e enterDomainDB(const am_Domain_s& domainData, am_domainID_t& domainID);
- am_Error_e enterMainConnectionDB(const am_MainConnection_s& mainConnectionData, am_mainConnectionID_t& connectionID);
- am_Error_e enterSinkDB(const am_Sink_s& sinkData, am_sinkID_t& sinkID);
- am_Error_e enterCrossfaderDB(const am_Crossfader_s& crossfaderData, am_crossfaderID_t& crossfaderID);
- am_Error_e enterGatewayDB(const am_Gateway_s& gatewayData, am_gatewayID_t& gatewayID);
- am_Error_e enterConverterDB(const am_Converter_s & converterData, am_converterID_t & converterID);
- am_Error_e enterSourceDB(const am_Source_s& sourceData, am_sourceID_t& sourceID);
- am_Error_e enterConnectionDB(const am_Connection_s& connection, am_connectionID_t& connectionID);
- am_Error_e enterSinkClassDB(const am_SinkClass_s& sinkClass, am_sinkClass_t& sinkClassID);
- am_Error_e enterSourceClassDB(am_sourceClass_t& sourceClassID, const am_SourceClass_s& sourceClass);
- am_Error_e enterSystemProperties(const std::vector<am_SystemProperty_s>& listSystemProperties);
- am_Error_e changeMainConnectionRouteDB(const am_mainConnectionID_t mainconnectionID, const std::vector<am_connectionID_t>& listConnectionID);
+ am_Error_e enterDomainDB(const am_Domain_s &domainData, am_domainID_t &domainID);
+ am_Error_e enterMainConnectionDB(const am_MainConnection_s &mainConnectionData, am_mainConnectionID_t &connectionID);
+ am_Error_e enterSinkDB(const am_Sink_s &sinkData, am_sinkID_t &sinkID);
+ am_Error_e enterCrossfaderDB(const am_Crossfader_s &crossfaderData, am_crossfaderID_t &crossfaderID);
+ am_Error_e enterGatewayDB(const am_Gateway_s &gatewayData, am_gatewayID_t &gatewayID);
+ am_Error_e enterConverterDB(const am_Converter_s &converterData, am_converterID_t &converterID);
+ am_Error_e enterSourceDB(const am_Source_s &sourceData, am_sourceID_t &sourceID);
+ am_Error_e enterConnectionDB(const am_Connection_s &connection, am_connectionID_t &connectionID);
+ am_Error_e enterSinkClassDB(const am_SinkClass_s &sinkClass, am_sinkClass_t &sinkClassID);
+ am_Error_e enterSourceClassDB(am_sourceClass_t &sourceClassID, const am_SourceClass_s &sourceClass);
+ am_Error_e enterSystemProperties(const std::vector<am_SystemProperty_s> &listSystemProperties);
+ am_Error_e changeMainConnectionRouteDB(const am_mainConnectionID_t mainconnectionID, const std::vector<am_connectionID_t> &listConnectionID);
am_Error_e changeMainConnectionStateDB(const am_mainConnectionID_t mainconnectionID, const am_ConnectionState_e connectionState);
am_Error_e changeSinkMainVolumeDB(const am_mainVolume_t mainVolume, const am_sinkID_t sinkID);
- am_Error_e changeSinkAvailabilityDB(const am_Availability_s& availability, const am_sinkID_t sinkID);
+ am_Error_e changeSinkAvailabilityDB(const am_Availability_s &availability, const am_sinkID_t sinkID);
am_Error_e changeDomainStateDB(const am_DomainState_e domainState, const am_domainID_t domainID);
am_Error_e changeSinkMuteStateDB(const am_MuteState_e muteState, const am_sinkID_t sinkID);
- am_Error_e changeMainSinkSoundPropertyDB(const am_MainSoundProperty_s& soundProperty, const am_sinkID_t sinkID);
- am_Error_e changeMainSourceSoundPropertyDB(const am_MainSoundProperty_s& soundProperty, const am_sourceID_t sourceID);
- am_Error_e changeSourceSoundPropertyDB(const am_SoundProperty_s& soundProperty, const am_sourceID_t sourceID);
- am_Error_e changeSinkSoundPropertyDB(const am_SoundProperty_s& soundProperty, const am_sinkID_t sinkID);
- am_Error_e changeSourceAvailabilityDB(const am_Availability_s& availability, const am_sourceID_t sourceID);
- am_Error_e changeSystemPropertyDB(const am_SystemProperty_s& property);
- am_Error_e changeDelayMainConnection(const am_timeSync_t & delay, const am_mainConnectionID_t & connectionID);
- am_Error_e changeSinkClassInfoDB(const am_SinkClass_s& sinkClass);
- am_Error_e changeSourceClassInfoDB(const am_SourceClass_s& sourceClass);
+ am_Error_e changeMainSinkSoundPropertyDB(const am_MainSoundProperty_s &soundProperty, const am_sinkID_t sinkID);
+ am_Error_e changeMainSourceSoundPropertyDB(const am_MainSoundProperty_s &soundProperty, const am_sourceID_t sourceID);
+ am_Error_e changeSourceSoundPropertyDB(const am_SoundProperty_s &soundProperty, const am_sourceID_t sourceID);
+ am_Error_e changeSinkSoundPropertyDB(const am_SoundProperty_s &soundProperty, const am_sinkID_t sinkID);
+ am_Error_e changeSourceAvailabilityDB(const am_Availability_s &availability, const am_sourceID_t sourceID);
+ am_Error_e changeSystemPropertyDB(const am_SystemProperty_s &property);
+ am_Error_e changeDelayMainConnection(const am_timeSync_t &delay, const am_mainConnectionID_t &connectionID);
+ am_Error_e changeSinkClassInfoDB(const am_SinkClass_s &sinkClass);
+ am_Error_e changeSourceClassInfoDB(const am_SourceClass_s &sourceClass);
am_Error_e changeConnectionTimingInformation(const am_connectionID_t connectionID, const am_timeSync_t delay);
am_Error_e changeConnectionFinal(const am_connectionID_t connectionID);
am_Error_e changeSourceState(const am_sourceID_t sourceID, const am_SourceState_e sourceState);
@@ -162,80 +162,80 @@ public:
am_Error_e removeSinkClassDB(const am_sinkClass_t sinkClassID);
am_Error_e removeSourceClassDB(const am_sourceClass_t sourceClassID);
am_Error_e removeConnection(const am_connectionID_t connectionID);
- am_Error_e getSourceClassInfoDB(const am_sourceID_t sourceID, am_SourceClass_s& classInfo) const;
- am_Error_e getSinkClassInfoDB(const am_sinkID_t sinkID, am_SinkClass_s& sinkClass) const;
- am_Error_e getGatewayInfoDB(const am_gatewayID_t gatewayID, am_Gateway_s& gatewayData) const;
- am_Error_e getConverterInfoDB(const am_converterID_t converterID, am_Converter_s& converterData) const;
- am_Error_e getSinkInfoDB(const am_sinkID_t sinkID, am_Sink_s& sinkData) const;
- am_Error_e getSourceInfoDB(const am_sourceID_t sourceID, am_Source_s& sourceData) const;
- am_Error_e getCrossfaderInfoDB(const am_crossfaderID_t crossfaderID, am_Crossfader_s& crossfaderData) const;
- am_Error_e getMainConnectionInfoDB(const am_mainConnectionID_t mainConnectionID, am_MainConnection_s& mainConnectionData) const;
- am_Error_e getSinkMainVolume(const am_sinkID_t sinkID, am_mainVolume_t& mainVolume) const;
- am_Error_e getSinkVolume(const am_sinkID_t sinkID, am_volume_t& volume) const;
- am_Error_e getSourceVolume(const am_sourceID_t sourceID, am_volume_t& volume) const;
- am_Error_e getSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomSoundPropertyType_t propertyType, int16_t& value) const;
- am_Error_e getSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomSoundPropertyType_t propertyType, int16_t& value) const;
- am_Error_e getMainSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomMainSoundPropertyType_t propertyType, int16_t& value) const;
- am_Error_e getMainSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomMainSoundPropertyType_t propertyType, int16_t& value) const;
- am_Error_e getListSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_SoundProperty_s>& listSoundproperties) const;
- am_Error_e getListSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_SoundProperty_s>& listSoundproperties) const;
- am_Error_e getListSinksOfDomain(const am_domainID_t domainID, std::vector<am_sinkID_t>& listSinkID) const;
- am_Error_e getListSourcesOfDomain(const am_domainID_t domainID, std::vector<am_sourceID_t>& listSourceID) const;
- am_Error_e getListCrossfadersOfDomain(const am_domainID_t domainID, std::vector<am_crossfaderID_t>& listGatewaysID) const;
- am_Error_e getListGatewaysOfDomain(const am_domainID_t domainID, std::vector<am_gatewayID_t>& listGatewaysID) const;
- am_Error_e getListConvertersOfDomain(const am_domainID_t domainID, std::vector<am_converterID_t>& listConvertersID) const;
- am_Error_e getListMainConnections(std::vector<am_MainConnection_s>& listMainConnections) const;
- am_Error_e getListDomains(std::vector<am_Domain_s>& listDomains) const;
- am_Error_e getListConnections(std::vector<am_Connection_s>& listConnections) const;
- am_Error_e getListConnectionsReserved(std::vector<am_Connection_s>& listConnections) const;
- am_Error_e getListSinks(std::vector<am_Sink_s>& listSinks) const;
- am_Error_e getListSources(std::vector<am_Source_s>& lisSources) const;
- am_Error_e getListSourceClasses(std::vector<am_SourceClass_s>& listSourceClasses) const;
- am_Error_e getListCrossfaders(std::vector<am_Crossfader_s>& listCrossfaders) const;
- am_Error_e getListGateways(std::vector<am_Gateway_s>& listGateways) const;
- am_Error_e getListConverters(std::vector<am_Converter_s> & listConverters) const;
- am_Error_e getListSinkClasses(std::vector<am_SinkClass_s>& listSinkClasses) const;
- am_Error_e getListVisibleMainConnections(std::vector<am_MainConnectionType_s>& listConnections) const;
- am_Error_e getListMainSinks(std::vector<am_SinkType_s>& listMainSinks) const;
- am_Error_e getListMainSources(std::vector<am_SourceType_s>& listMainSources) const;
- am_Error_e getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s>& listSoundProperties) const;
- am_Error_e getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s>& listSourceProperties) const;
- am_Error_e getListSystemProperties(std::vector<am_SystemProperty_s>& listSystemProperties) const;
- am_Error_e getListSinkConnectionFormats(const am_sinkID_t sinkID, std::vector<am_CustomAvailabilityReason_t> & listConnectionFormats) const;
- am_Error_e getListSourceConnectionFormats(const am_sourceID_t sourceID, std::vector<am_CustomAvailabilityReason_t> & listConnectionFormats) const;
- am_Error_e getListGatewayConnectionFormats(const am_gatewayID_t gatewayID, std::vector<bool> & listConnectionFormat) const;
- am_Error_e getTimingInformation(const am_mainConnectionID_t mainConnectionID, am_timeSync_t& delay) const;
- am_Error_e getDomainOfSource(const am_sourceID_t sourceID, am_domainID_t& domainID) const;
- am_Error_e getDomainOfSink(const am_sinkID_t sinkID, am_domainID_t& domainID) const;
- am_Error_e getDomainOfCrossfader(const am_converterID_t crossfader, am_domainID_t& domainID) const;
- am_Error_e getSoureState(const am_sourceID_t sourceID, am_SourceState_e& sourceState) const;
- am_Error_e getDomainState(const am_domainID_t domainID, am_DomainState_e& state) const;
- am_Error_e peekDomain(const std::string& name, am_domainID_t& domainID);
- am_Error_e peekSink(const std::string& name, am_sinkID_t& sinkID);
- am_Error_e peekSource(const std::string& name, am_sourceID_t& sourceID);
- am_Error_e peekSinkClassID(const std::string& name, am_sinkClass_t& sinkClassID);
- am_Error_e peekSourceClassID(const std::string& name, am_sourceClass_t& sourceClassID);
- am_Error_e changeSourceDB(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_SoundProperty_s>& listSoundProperties, const std::vector<am_CustomAvailabilityReason_t>& listConnectionFormats, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties);
- am_Error_e changeSinkDB(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_SoundProperty_s>& listSoundProperties, const std::vector<am_CustomAvailabilityReason_t>& listConnectionFormats, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties);
- am_Error_e getListMainSinkNotificationConfigurations(const am_sinkID_t sinkID, std::vector<am_NotificationConfiguration_s>& listMainNotificationConfigurations);
- am_Error_e getListMainSourceNotificationConfigurations(const am_sourceID_t sourceID, std::vector<am_NotificationConfiguration_s>& listMainNotificationConfigurations);
+ am_Error_e getSourceClassInfoDB(const am_sourceID_t sourceID, am_SourceClass_s &classInfo) const;
+ am_Error_e getSinkClassInfoDB(const am_sinkID_t sinkID, am_SinkClass_s &sinkClass) const;
+ am_Error_e getGatewayInfoDB(const am_gatewayID_t gatewayID, am_Gateway_s &gatewayData) const;
+ am_Error_e getConverterInfoDB(const am_converterID_t converterID, am_Converter_s &converterData) const;
+ am_Error_e getSinkInfoDB(const am_sinkID_t sinkID, am_Sink_s &sinkData) const;
+ am_Error_e getSourceInfoDB(const am_sourceID_t sourceID, am_Source_s &sourceData) const;
+ am_Error_e getCrossfaderInfoDB(const am_crossfaderID_t crossfaderID, am_Crossfader_s &crossfaderData) const;
+ am_Error_e getMainConnectionInfoDB(const am_mainConnectionID_t mainConnectionID, am_MainConnection_s &mainConnectionData) const;
+ am_Error_e getSinkMainVolume(const am_sinkID_t sinkID, am_mainVolume_t &mainVolume) const;
+ am_Error_e getSinkVolume(const am_sinkID_t sinkID, am_volume_t &volume) const;
+ am_Error_e getSourceVolume(const am_sourceID_t sourceID, am_volume_t &volume) const;
+ am_Error_e getSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomSoundPropertyType_t propertyType, int16_t &value) const;
+ am_Error_e getSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomSoundPropertyType_t propertyType, int16_t &value) const;
+ am_Error_e getMainSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomMainSoundPropertyType_t propertyType, int16_t &value) const;
+ am_Error_e getMainSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomMainSoundPropertyType_t propertyType, int16_t &value) const;
+ am_Error_e getListSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_SoundProperty_s> &listSoundproperties) const;
+ am_Error_e getListSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_SoundProperty_s> &listSoundproperties) const;
+ am_Error_e getListSinksOfDomain(const am_domainID_t domainID, std::vector<am_sinkID_t> &listSinkID) const;
+ am_Error_e getListSourcesOfDomain(const am_domainID_t domainID, std::vector<am_sourceID_t> &listSourceID) const;
+ am_Error_e getListCrossfadersOfDomain(const am_domainID_t domainID, std::vector<am_crossfaderID_t> &listGatewaysID) const;
+ am_Error_e getListGatewaysOfDomain(const am_domainID_t domainID, std::vector<am_gatewayID_t> &listGatewaysID) const;
+ am_Error_e getListConvertersOfDomain(const am_domainID_t domainID, std::vector<am_converterID_t> &listConvertersID) const;
+ am_Error_e getListMainConnections(std::vector<am_MainConnection_s> &listMainConnections) const;
+ am_Error_e getListDomains(std::vector<am_Domain_s> &listDomains) const;
+ am_Error_e getListConnections(std::vector<am_Connection_s> &listConnections) const;
+ am_Error_e getListConnectionsReserved(std::vector<am_Connection_s> &listConnections) const;
+ am_Error_e getListSinks(std::vector<am_Sink_s> &listSinks) const;
+ am_Error_e getListSources(std::vector<am_Source_s> &lisSources) const;
+ am_Error_e getListSourceClasses(std::vector<am_SourceClass_s> &listSourceClasses) const;
+ am_Error_e getListCrossfaders(std::vector<am_Crossfader_s> &listCrossfaders) const;
+ am_Error_e getListGateways(std::vector<am_Gateway_s> &listGateways) const;
+ am_Error_e getListConverters(std::vector<am_Converter_s> &listConverters) const;
+ am_Error_e getListSinkClasses(std::vector<am_SinkClass_s> &listSinkClasses) const;
+ am_Error_e getListVisibleMainConnections(std::vector<am_MainConnectionType_s> &listConnections) const;
+ am_Error_e getListMainSinks(std::vector<am_SinkType_s> &listMainSinks) const;
+ am_Error_e getListMainSources(std::vector<am_SourceType_s> &listMainSources) const;
+ am_Error_e getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s> &listSoundProperties) const;
+ am_Error_e getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s> &listSourceProperties) const;
+ am_Error_e getListSystemProperties(std::vector<am_SystemProperty_s> &listSystemProperties) const;
+ am_Error_e getListSinkConnectionFormats(const am_sinkID_t sinkID, std::vector<am_CustomAvailabilityReason_t> &listConnectionFormats) const;
+ am_Error_e getListSourceConnectionFormats(const am_sourceID_t sourceID, std::vector<am_CustomAvailabilityReason_t> &listConnectionFormats) const;
+ am_Error_e getListGatewayConnectionFormats(const am_gatewayID_t gatewayID, std::vector<bool> &listConnectionFormat) const;
+ am_Error_e getTimingInformation(const am_mainConnectionID_t mainConnectionID, am_timeSync_t &delay) const;
+ am_Error_e getDomainOfSource(const am_sourceID_t sourceID, am_domainID_t &domainID) const;
+ am_Error_e getDomainOfSink(const am_sinkID_t sinkID, am_domainID_t &domainID) const;
+ am_Error_e getDomainOfCrossfader(const am_converterID_t crossfader, am_domainID_t &domainID) const;
+ am_Error_e getSoureState(const am_sourceID_t sourceID, am_SourceState_e &sourceState) const;
+ am_Error_e getDomainState(const am_domainID_t domainID, am_DomainState_e &state) const;
+ am_Error_e peekDomain(const std::string &name, am_domainID_t &domainID);
+ am_Error_e peekSink(const std::string &name, am_sinkID_t &sinkID);
+ am_Error_e peekSource(const std::string &name, am_sourceID_t &sourceID);
+ am_Error_e peekSinkClassID(const std::string &name, am_sinkClass_t &sinkClassID);
+ am_Error_e peekSourceClassID(const std::string &name, am_sourceClass_t &sourceClassID);
+ am_Error_e changeSourceDB(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_SoundProperty_s> &listSoundProperties, const std::vector<am_CustomAvailabilityReason_t> &listConnectionFormats, const std::vector<am_MainSoundProperty_s> &listMainSoundProperties);
+ am_Error_e changeSinkDB(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_SoundProperty_s> &listSoundProperties, const std::vector<am_CustomAvailabilityReason_t> &listConnectionFormats, const std::vector<am_MainSoundProperty_s> &listMainSoundProperties);
+ am_Error_e getListMainSinkNotificationConfigurations(const am_sinkID_t sinkID, std::vector<am_NotificationConfiguration_s> &listMainNotificationConfigurations);
+ am_Error_e getListMainSourceNotificationConfigurations(const am_sourceID_t sourceID, std::vector<am_NotificationConfiguration_s> &listMainNotificationConfigurations);
am_Error_e changeMainSinkNotificationConfigurationDB(const am_sinkID_t sinkID, const am_NotificationConfiguration_s mainNotificationConfiguration);
am_Error_e changeMainSourceNotificationConfigurationDB(const am_sourceID_t sourceID, const am_NotificationConfiguration_s mainNotificationConfiguration);
- am_Error_e changeGatewayDB(const am_gatewayID_t gatewayID, const std::vector<am_CustomAvailabilityReason_t>& listSourceConnectionFormats, const std::vector<am_CustomAvailabilityReason_t>& listSinkConnectionFormats, const std::vector<bool>& convertionMatrix);
- am_Error_e changeConverterDB(const am_converterID_t converterID, const std::vector<am_CustomConnectionFormat_t>& listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t>& listSinkConnectionFormats, const std::vector<bool>& convertionMatrix);
- am_Error_e changeSinkNotificationConfigurationDB(const am_sinkID_t sinkID,const am_NotificationConfiguration_s notificationConfiguration);
- am_Error_e changeSourceNotificationConfigurationDB(const am_sourceID_t sourceID,const am_NotificationConfiguration_s notificationConfiguration);
+ am_Error_e changeGatewayDB(const am_gatewayID_t gatewayID, const std::vector<am_CustomAvailabilityReason_t> &listSourceConnectionFormats, const std::vector<am_CustomAvailabilityReason_t> &listSinkConnectionFormats, const std::vector<bool> &convertionMatrix);
+ am_Error_e changeConverterDB(const am_converterID_t converterID, const std::vector<am_CustomConnectionFormat_t> &listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t> &listSinkConnectionFormats, const std::vector<bool> &convertionMatrix);
+ am_Error_e changeSinkNotificationConfigurationDB(const am_sinkID_t sinkID, const am_NotificationConfiguration_s notificationConfiguration);
+ am_Error_e changeSourceNotificationConfigurationDB(const am_sourceID_t sourceID, const am_NotificationConfiguration_s notificationConfiguration);
bool existMainConnection(const am_mainConnectionID_t mainConnectionID) const;
bool existCrossFader(const am_crossfaderID_t crossfaderID) const;
- bool existConnection(const am_Connection_s & connection) const;
+ bool existConnection(const am_Connection_s &connection) const;
bool existConnectionID(const am_connectionID_t connectionID) const;
bool existSource(const am_sourceID_t sourceID) const;
- bool existSourceNameOrID(const am_sourceID_t sourceID, const std::string& name) const;
- bool existSourceName(const std::string& name) const;
+ bool existSourceNameOrID(const am_sourceID_t sourceID, const std::string &name) const;
+ bool existSourceName(const std::string &name) const;
bool existSink(const am_sinkID_t sinkID) const;
- bool existSinkNameOrID(const am_sinkID_t sinkID, const std::string& name) const;
- bool existSinkName(const std::string& name) const;
+ bool existSinkNameOrID(const am_sinkID_t sinkID, const std::string &name) const;
+ bool existSinkName(const std::string &name) const;
bool existDomain(const am_domainID_t domainID) const;
bool existGateway(const am_gatewayID_t gatewayID) const;
bool existConverter(const am_converterID_t converterID) const;
@@ -243,70 +243,71 @@ public:
bool existSourceClass(const am_sourceClass_t sourceClassID) const;
bool sourceVisible(const am_sourceID_t sourceID) const;
bool sinkVisible(const am_sinkID_t sinkID) const;
- bool isComponentConnected(const am_Gateway_s & gateway) const;
- bool isComponentConnected(const am_Converter_s & converter) const;
- void dump( std::ostream & output ) const;
- am_Error_e enumerateSources(std::function<void(const am_Source_s & element)> cb) const;
- am_Error_e enumerateSinks(std::function<void(const am_Sink_s & element)> cb) const;
- am_Error_e enumerateGateways(std::function<void(const am_Gateway_s & element)> cb) const;
- am_Error_e enumerateConverters(std::function<void(const am_Converter_s & element)> cb) const;
-
- bool registerObserver(IAmDatabaseObserver * iObserver);
- bool unregisterObserver(IAmDatabaseObserver * iObserver);
+ bool isComponentConnected(const am_Gateway_s &gateway) const;
+ bool isComponentConnected(const am_Converter_s &converter) const;
+ void dump(std::ostream &output) const;
+ am_Error_e enumerateSources(std::function<void(const am_Source_s &element)> cb) const;
+ am_Error_e enumerateSinks(std::function<void(const am_Sink_s &element)> cb) const;
+ am_Error_e enumerateGateways(std::function<void(const am_Gateway_s &element)> cb) const;
+ am_Error_e enumerateConverters(std::function<void(const am_Converter_s &element)> cb) const;
+
+ bool registerObserver(IAmDatabaseObserver *iObserver);
+ bool unregisterObserver(IAmDatabaseObserver *iObserver);
unsigned countObservers();
/**
* The following structures extend the base structures with the field 'reserved'.
*/
-#define AM_SUBCLASS(TYPE, SUBCLASS, CLASS, MEMBER, ASSIGN) \
- typedef struct SUBCLASS : public CLASS \
- { \
- MEMBER \
- bool reserved; \
- SUBCLASS() : CLASS(), reserved(false) {} \
- SUBCLASS & operator=(const SUBCLASS &anObject) \
- { \
- if (this != &anObject) \
- { \
- CLASS::operator=(anObject); \
- reserved = anObject.reserved; \
- ASSIGN \
- } \
- return *this; \
- } \
- SUBCLASS & operator=(const CLASS & anObject) \
- { \
- if (this != &anObject) { \
- CLASS::operator=(anObject);} \
- return *this; \
- } \
- void getDescription(std::string & outString) const; \
- } TYPE \
+#define AM_SUBCLASS(TYPE, SUBCLASS, CLASS, MEMBER, ASSIGN) \
+ typedef struct SUBCLASS : public CLASS \
+ { \
+ MEMBER \
+ bool reserved; \
+ SUBCLASS() : CLASS(), reserved(false) {} \
+ SUBCLASS &operator=(const SUBCLASS &anObject) \
+ { \
+ if (this != &anObject) \
+ { \
+ CLASS::operator=(anObject); \
+ reserved = anObject.reserved; \
+ ASSIGN \
+ } \
+ return *this; \
+ } \
+ SUBCLASS &operator=(const CLASS &anObject) \
+ { \
+ if (this != &anObject) { \
+ CLASS::operator=(anObject);} \
+ return *this; \
+ } \
+ void getDescription(std::string &outString) const; \
+ } TYPE \
#define AM_SUBLCASS_ADD_MAP_TYPE(TYPE, NAME) std::unordered_map<TYPE, int16_t> NAME;
-#define AM_SUBLCASS_ADD_ASSIGNMENT(NAME) NAME = anObject.NAME;
+#define AM_SUBLCASS_ADD_ASSIGNMENT(NAME) NAME = anObject.NAME;
private:
AM_SUBCLASS(AmDomain, am_Domain_Database_s, am_Domain_s, , );
- AM_SUBCLASS(AmSink, am_Sink_Database_s, am_Sink_s, \
- void getSinkType(am_SinkType_s & sinkType) const; \
- AM_SUBLCASS_ADD_MAP_TYPE(am_CustomSoundPropertyType_t, cacheSoundProperties) \
- AM_SUBLCASS_ADD_MAP_TYPE(am_CustomMainSoundPropertyType_t, cacheMainSoundProperties), \
- AM_SUBLCASS_ADD_ASSIGNMENT(cacheSoundProperties) \
- AM_SUBLCASS_ADD_ASSIGNMENT(cacheMainSoundProperties) );
+ AM_SUBCLASS(AmSink, am_Sink_Database_s, am_Sink_s, \
+ void getSinkType(am_SinkType_s & sinkType) const; \
+ AM_SUBLCASS_ADD_MAP_TYPE(am_CustomSoundPropertyType_t, cacheSoundProperties) \
+ AM_SUBLCASS_ADD_MAP_TYPE(am_CustomMainSoundPropertyType_t, cacheMainSoundProperties), \
+ AM_SUBLCASS_ADD_ASSIGNMENT(cacheSoundProperties) \
+ AM_SUBLCASS_ADD_ASSIGNMENT(cacheMainSoundProperties));
AM_SUBCLASS(AmSource, am_Source_Database_s, am_Source_s,
- void getSourceType(am_SourceType_s & sourceType) const; \
- AM_SUBLCASS_ADD_MAP_TYPE(am_CustomSoundPropertyType_t, cacheSoundProperties) \
- AM_SUBLCASS_ADD_MAP_TYPE(am_CustomMainSoundPropertyType_t, cacheMainSoundProperties), \
- AM_SUBLCASS_ADD_ASSIGNMENT(cacheSoundProperties) \
- AM_SUBLCASS_ADD_ASSIGNMENT(cacheMainSoundProperties) );
+ void getSourceType(am_SourceType_s & sourceType) const; \
+ AM_SUBLCASS_ADD_MAP_TYPE(am_CustomSoundPropertyType_t, cacheSoundProperties) \
+ AM_SUBLCASS_ADD_MAP_TYPE(am_CustomMainSoundPropertyType_t, cacheMainSoundProperties), \
+ AM_SUBLCASS_ADD_ASSIGNMENT(cacheSoundProperties) \
+ AM_SUBLCASS_ADD_ASSIGNMENT(cacheMainSoundProperties));
AM_SUBCLASS(AmConnection, am_Connection_Database_s, am_Connection_s, , );
AM_SUBCLASS(AmMainConnection, am_MainConnection_Database_s, am_MainConnection_s,
- void getMainConnectionType(am_MainConnectionType_s & connectionType) const;, );
+ void getMainConnectionType(am_MainConnectionType_s & connectionType) const;
+ , );
AM_SUBCLASS(AmSourceClass, am_SourceClass_Database_s, am_SourceClass_s, , );
@@ -318,18 +319,17 @@ private:
AM_SUBCLASS(AmCrossfader, am_Crossfader_Database_s, am_Crossfader_s, , );
-
- typedef std::unordered_map<am_domainID_t, AmDomain> AmMapDomain;
- typedef std::unordered_map<am_sourceClass_t, AmSourceClass> AmMapSourceClass;
- typedef std::unordered_map<am_sinkClass_t, AmSinkClass> AmMapSinkClass;
- typedef std::unordered_map<am_sinkID_t, AmSink> AmMapSink;
- typedef std::unordered_map<am_sourceID_t, AmSource> AmMapSource;
- typedef std::unordered_map<am_gatewayID_t, AmGateway> AmMapGateway;
- typedef std::unordered_map<am_converterID_t, AmConverter> AmMapConverter;
- typedef std::unordered_map<am_crossfaderID_t, AmCrossfader> AmMapCrossfader;
- typedef std::unordered_map<am_connectionID_t, AmConnection> AmMapConnection;
- typedef std::unordered_map<am_mainConnectionID_t, AmMainConnection> AmMapMainConnection;
- typedef std::vector<am_SystemProperty_s> AmVectorSystemProperties;
+ typedef std::unordered_map<am_domainID_t, AmDomain> AmMapDomain;
+ typedef std::unordered_map<am_sourceClass_t, AmSourceClass> AmMapSourceClass;
+ typedef std::unordered_map<am_sinkClass_t, AmSinkClass> AmMapSinkClass;
+ typedef std::unordered_map<am_sinkID_t, AmSink> AmMapSink;
+ typedef std::unordered_map<am_sourceID_t, AmSource> AmMapSource;
+ typedef std::unordered_map<am_gatewayID_t, AmGateway> AmMapGateway;
+ typedef std::unordered_map<am_converterID_t, AmConverter> AmMapConverter;
+ typedef std::unordered_map<am_crossfaderID_t, AmCrossfader> AmMapCrossfader;
+ typedef std::unordered_map<am_connectionID_t, AmConnection> AmMapConnection;
+ typedef std::unordered_map<am_mainConnectionID_t, AmMainConnection> AmMapMainConnection;
+ typedef std::vector<am_SystemProperty_s> AmVectorSystemProperties;
/**
* The following structure groups the map objects needed for the implementation.
* Every map object is coupled with an identifier, which hold the current value.
@@ -343,159 +343,191 @@ private:
* The structure encapsulates the id boundary and the current id value.
* It defines a range within the id can vary.
*/
- struct AmIdentifier
- {
- int16_t mMin; //!< min possible value
- int16_t mMax; //!< max possible value
- int16_t mCurrentValue; //!< current value
-
- AmIdentifier():mMin(DYNAMIC_ID_BOUNDARY), mMax(SHRT_MAX), mCurrentValue(mMin){};
- AmIdentifier(const int16_t & min, const int16_t & max):mMin(min), mMax(max), mCurrentValue(mMin){assert(min<max);};
- };
-
- AmIdentifier mCurrentDomainID; //!< domain ID
- AmIdentifier mCurrentSourceClassesID; //!< source classes ID
- AmIdentifier mCurrentSinkClassesID; //!< sink classes ID
- AmIdentifier mCurrentSinkID; //!< sink ID
- AmIdentifier mCurrentSourceID; //!< source ID
- AmIdentifier mCurrentGatewayID; //!< gateway ID
- AmIdentifier mCurrentConverterID; //!< converter ID
- AmIdentifier mCurrentCrossfaderID; //!< crossfader ID
- AmIdentifier mCurrentConnectionID; //!< connection ID
- AmIdentifier mCurrentMainConnectionID; //!< mainconnection ID
-
- AmVectorSystemProperties mSystemProperties; //!< vector with system properties
- AmMapDomain mDomainMap; //!< map for domain structures
- AmMapSourceClass mSourceClassesMap; //!< map for source classes structures
- AmMapSinkClass mSinkClassesMap; //!< map for sink classes structures
- AmMapSink mSinkMap; //!< map for sink structures
- AmMapSource mSourceMap; //!< map for source structures
- AmMapGateway mGatewayMap; //!< map for gateway structures
- AmMapConverter mConverterMap; //!< map for converter structures
- AmMapCrossfader mCrossfaderMap; //!< map for crossfader structures
- AmMapConnection mConnectionMap; //!< map for connection structures
- AmMapMainConnection mMainConnectionMap; //!< map for main connection structures
-
- AmMappedData(): //For Domain, MainConnections, Connections we don't have static IDs.
- mCurrentDomainID(DYNAMIC_ID_BOUNDARY, SHRT_MAX),
- mCurrentSourceClassesID(DYNAMIC_ID_BOUNDARY, SHRT_MAX),
- mCurrentSinkClassesID(DYNAMIC_ID_BOUNDARY, SHRT_MAX),
- mCurrentSinkID(DYNAMIC_ID_BOUNDARY, SHRT_MAX),
- mCurrentSourceID(DYNAMIC_ID_BOUNDARY, SHRT_MAX),
- mCurrentGatewayID(DYNAMIC_ID_BOUNDARY, SHRT_MAX),
- mCurrentConverterID(DYNAMIC_ID_BOUNDARY, SHRT_MAX),
- mCurrentCrossfaderID(DYNAMIC_ID_BOUNDARY, SHRT_MAX),
- mCurrentConnectionID(1, AM_MAX_CONNECTIONS),
- mCurrentMainConnectionID(1, AM_MAX_MAIN_CONNECTIONS),
-
- mSystemProperties(),
- mDomainMap(),mSourceClassesMap(), mSinkClassesMap(), mSinkMap(AM_MAP_CAPACITY), mSourceMap(AM_MAP_CAPACITY),
- mGatewayMap(), mConverterMap(), mCrossfaderMap(), mConnectionMap(), mMainConnectionMap()
- {};
- /**
- * \brief Increases a given map ID.
- *
- * A common method implementing the logic for static and dynamic IDs except main connection ID.
- *
- * @param resultID Pointer to an output variable.
- * @param elementID Pointer to ID, which will be manipulated.
- * @param desiredStaticID Not 0 for static IDs and 0 for dynamic IDs.
- * Usually the static IDs are in interval [1 , DYNAMIC_ID_BOUNDARY-1]. Default is 0.
- * @return TRUE on successfully changed ID.
- */
- bool increaseID(int16_t & resultID, AmIdentifier & elementID, int16_t const desiredStaticID);
- /**
- * \brief Increases the main connection ID.
- *
- * @param resultID Pointer to an output variable.
- * @return TRUE on successfully changed ID.
- */
- bool increaseMainConnectionID(int16_t & resultID);
-
- /**
- * \brief Increases the connection ID.
- *
- * @param resultID Pointer to an output variable.
- * @return TRUE on successfully changed ID.
- */
- bool increaseConnectionID(int16_t & resultID);
-
- template <class TPrintObject> static void print (const TPrintObject & t, std::ostream & output)
+ struct AmIdentifier
+ {
+ int16_t mMin; //!< min possible value
+ int16_t mMax; //!< max possible value
+ int16_t mCurrentValue; //!< current value
+
+ AmIdentifier()
+ : mMin(DYNAMIC_ID_BOUNDARY)
+ , mMax(SHRT_MAX)
+ , mCurrentValue(mMin){}
+ AmIdentifier(const int16_t &min, const int16_t &max)
+ : mMin(min)
+ , mMax(max)
+ , mCurrentValue(mMin){assert(min < max);}
+ };
+
+ AmIdentifier mCurrentDomainID; //!< domain ID
+ AmIdentifier mCurrentSourceClassesID; //!< source classes ID
+ AmIdentifier mCurrentSinkClassesID; //!< sink classes ID
+ AmIdentifier mCurrentSinkID; //!< sink ID
+ AmIdentifier mCurrentSourceID; //!< source ID
+ AmIdentifier mCurrentGatewayID; //!< gateway ID
+ AmIdentifier mCurrentConverterID; //!< converter ID
+ AmIdentifier mCurrentCrossfaderID; //!< crossfader ID
+ AmIdentifier mCurrentConnectionID; //!< connection ID
+ AmIdentifier mCurrentMainConnectionID; //!< mainconnection ID
+
+ AmVectorSystemProperties mSystemProperties; //!< vector with system properties
+ AmMapDomain mDomainMap; //!< map for domain structures
+ AmMapSourceClass mSourceClassesMap; //!< map for source classes structures
+ AmMapSinkClass mSinkClassesMap; //!< map for sink classes structures
+ AmMapSink mSinkMap; //!< map for sink structures
+ AmMapSource mSourceMap; //!< map for source structures
+ AmMapGateway mGatewayMap; //!< map for gateway structures
+ AmMapConverter mConverterMap; //!< map for converter structures
+ AmMapCrossfader mCrossfaderMap; //!< map for crossfader structures
+ AmMapConnection mConnectionMap; //!< map for connection structures
+ AmMapMainConnection mMainConnectionMap; //!< map for main connection structures
+
+ AmMappedData() : // For Domain, MainConnections, Connections we don't have static IDs.
+ mCurrentDomainID(DYNAMIC_ID_BOUNDARY, SHRT_MAX)
+ , mCurrentSourceClassesID(DYNAMIC_ID_BOUNDARY, SHRT_MAX)
+ , mCurrentSinkClassesID(DYNAMIC_ID_BOUNDARY, SHRT_MAX)
+ , mCurrentSinkID(DYNAMIC_ID_BOUNDARY, SHRT_MAX)
+ , mCurrentSourceID(DYNAMIC_ID_BOUNDARY, SHRT_MAX)
+ , mCurrentGatewayID(DYNAMIC_ID_BOUNDARY, SHRT_MAX)
+ , mCurrentConverterID(DYNAMIC_ID_BOUNDARY, SHRT_MAX)
+ , mCurrentCrossfaderID(DYNAMIC_ID_BOUNDARY, SHRT_MAX)
+ , mCurrentConnectionID(1, AM_MAX_CONNECTIONS)
+ , mCurrentMainConnectionID(1, AM_MAX_MAIN_CONNECTIONS)
+ , mSystemProperties()
+ , mDomainMap()
+ , mSourceClassesMap()
+ , mSinkClassesMap()
+ , mSinkMap(AM_MAP_CAPACITY)
+ , mSourceMap(AM_MAP_CAPACITY)
+ , mGatewayMap()
+ , mConverterMap()
+ , mCrossfaderMap()
+ , mConnectionMap()
+ , mMainConnectionMap()
+ {}
+ /**
+ * \brief Increases a given map ID.
+ *
+ * A common method implementing the logic for static and dynamic IDs except main connection ID.
+ *
+ * @param resultID Pointer to an output variable.
+ * @param elementID Pointer to ID, which will be manipulated.
+ * @param desiredStaticID Not 0 for static IDs and 0 for dynamic IDs.
+ * Usually the static IDs are in interval [1 , DYNAMIC_ID_BOUNDARY-1]. Default is 0.
+ * @return TRUE on successfully changed ID.
+ */
+ bool increaseID(int16_t &resultID, AmIdentifier &elementID, int16_t const desiredStaticID);
+
+ /**
+ * \brief Increases the main connection ID.
+ *
+ * @param resultID Pointer to an output variable.
+ * @return TRUE on successfully changed ID.
+ */
+ bool increaseMainConnectionID(int16_t &resultID);
+
+ /**
+ * \brief Increases the connection ID.
+ *
+ * @param resultID Pointer to an output variable.
+ * @return TRUE on successfully changed ID.
+ */
+ bool increaseConnectionID(int16_t &resultID);
+
+ template <class TPrintObject>
+ static void print(const TPrintObject &t, std::ostream &output)
{
- std::string description;
- t.getDescription( description );
- output << description;
+ std::string description;
+ t.getDescription(description);
+ output << description;
}
- template <typename TPrintMapKey,class TPrintMapObject> static void printMap (const std::unordered_map<TPrintMapKey, TPrintMapObject> & t, std::ostream & output)
+
+ template <typename TPrintMapKey, class TPrintMapObject>
+ static void printMap(const std::unordered_map<TPrintMapKey, TPrintMapObject> &t, std::ostream &output)
{
- typename std::unordered_map<TPrintMapKey, TPrintMapObject>::const_iterator iter = t.begin();
- for(; iter!=t.end(); iter++)
- AmMappedData::print(iter->second, output);
+ typename std::unordered_map<TPrintMapKey, TPrintMapObject>::const_iterator iter = t.begin();
+ for (; iter != t.end(); iter++)
+ {
+ AmMappedData::print(iter->second, output);
+ }
}
+
private:
- template <typename TMapKey,class TMapObject> bool getNextConnectionID(int16_t & resultID, AmIdentifier & connID,
- const std::unordered_map<TMapKey, TMapObject> & map);
+ template <typename TMapKey, class TMapObject>
+ bool getNextConnectionID(int16_t &resultID, AmIdentifier &connID,
+ const std::unordered_map<TMapKey, TMapObject> &map);
+
};
/*
* Helper methods.
*/
am_timeSync_t calculateMainConnectionDelay(const am_mainConnectionID_t mainConnectionID) const; //!< calculates a new main connection delay
- int16_t calculateDelayForRoute(const std::vector<am_connectionID_t>& listConnectionID);
- bool insertSinkDB(const am_Sink_s & sinkData, am_sinkID_t & sinkID);
- bool insertCrossfaderDB(const am_Crossfader_s & crossfaderData, am_crossfaderID_t & crossfaderID);
- bool insertGatewayDB(const am_Gateway_s & gatewayData, am_gatewayID_t & gatewayID);
- bool insertConverterDB(const am_Converter_s & converteData, am_converterID_t & converterID);
- bool insertSourceDB(const am_Source_s & sourceData, am_sourceID_t & sourceID);
- bool insertSinkClassDB(const am_SinkClass_s & sinkClass, am_sinkClass_t & sinkClassID);
- bool insertSourceClassDB(am_sourceClass_t & sourceClassID, const am_SourceClass_s & sourceClass);
- const am_Sink_Database_s * sinkWithNameOrID(const am_sinkID_t sinkID, const std::string & name) const;
- const am_Source_Database_s * sourceWithNameOrID(const am_sourceID_t sourceID, const std::string & name) const;
- template <class Component> bool isConnected(const Component & comp) const
+ int16_t calculateDelayForRoute(const std::vector<am_connectionID_t> &listConnectionID);
+ bool insertSinkDB(const am_Sink_s &sinkData, am_sinkID_t &sinkID);
+ bool insertCrossfaderDB(const am_Crossfader_s &crossfaderData, am_crossfaderID_t &crossfaderID);
+ bool insertGatewayDB(const am_Gateway_s &gatewayData, am_gatewayID_t &gatewayID);
+ bool insertConverterDB(const am_Converter_s &converteData, am_converterID_t &converterID);
+ bool insertSourceDB(const am_Source_s &sourceData, am_sourceID_t &sourceID);
+ bool insertSinkClassDB(const am_SinkClass_s &sinkClass, am_sinkClass_t &sinkClassID);
+ bool insertSourceClassDB(am_sourceClass_t &sourceClassID, const am_SourceClass_s &sourceClass);
+ const am_Sink_Database_s *sinkWithNameOrID(const am_sinkID_t sinkID, const std::string &name) const;
+ const am_Source_Database_s *sourceWithNameOrID(const am_sourceID_t sourceID, const std::string &name) const;
+
+ template <class Component>
+ bool isConnected(const Component &comp) const
+ {
+ return std::find_if(mMappedData.mConnectionMap.begin(), mMappedData.mConnectionMap.end(), [&](const std::pair<am_connectionID_t, am_Connection_Database_s> &rConnection){
+ return (rConnection.second.sinkID == comp.sinkID || rConnection.second.sourceID == comp.sourceID);
+ }) != mMappedData.mConnectionMap.end();
+ }
+
+ void filterDuplicateNotificationConfigurationTypes(std::vector<am_NotificationConfiguration_s> &list)
{
- return std::find_if(mMappedData.mConnectionMap.begin(), mMappedData.mConnectionMap.end(),[&](const std::pair<am_connectionID_t, am_Connection_Database_s>& rConnection){
- return (rConnection.second.sinkID == comp.sinkID ||rConnection.second.sourceID ==comp.sourceID);})!=mMappedData.mConnectionMap.end();
+ std::vector<am_NotificationConfiguration_s> oldList(list);
+ list.clear();
+ std::for_each(oldList.begin(), oldList.end(), [&](am_NotificationConfiguration_s &provided) {
+ std::vector<am_NotificationConfiguration_s>::iterator found =
+ std::find_if(list.begin(), list.end(), [&](am_NotificationConfiguration_s &stored) {
+ if (provided.type == stored.type)
+ {
+ stored = provided;
+ return true;
+ }
+
+ return false;
+ });
+ if (found == list.end())
+ {
+ list.push_back(provided);
+ }
+ });
}
- void filterDuplicateNotificationConfigurationTypes(std::vector<am_NotificationConfiguration_s> & list)
- {
- std::vector<am_NotificationConfiguration_s> oldList(list);
- list.clear();
- std::for_each(oldList.begin(), oldList.end(), [&](am_NotificationConfiguration_s & provided) {
- std::vector<am_NotificationConfiguration_s>::iterator found =
- std::find_if(list.begin(), list.end(), [&](am_NotificationConfiguration_s & stored) {
- if (provided.type == stored.type) {
- stored = provided;
- return true;
- }
- return false;
- } );
- if (found == list.end())
- list.push_back(provided);
- } );
- }
ListConnectionFormat mListConnectionFormat; //!< list of connection formats
- AmMappedData mMappedData; //!< Internal structure encapsulating all the maps used in this class
- std::vector<AmDatabaseObserverCallbacks*> mDatabaseObservers;
+ AmMappedData mMappedData; //!< Internal structure encapsulating all the maps used in this class
+ std::vector<AmDatabaseObserverCallbacks *> mDatabaseObservers;
#ifdef UNIT_TEST
- public:
- void setConnectionIDRange(const int16_t & min, const int16_t & max)
- {
- mMappedData.mCurrentConnectionID.mMin = min;
- mMappedData.mCurrentConnectionID.mMax = max;
- }
- void setMainConnectionIDRange(const int16_t & min, const int16_t & max)
- {
- mMappedData.mCurrentMainConnectionID.mMin = min;
- mMappedData.mCurrentMainConnectionID.mMax = max;
- }
- void setSinkIDRange(const int16_t & min, const int16_t & max)
- {
- mMappedData.mCurrentSinkID.mMin = min;
- mMappedData.mCurrentSinkID.mMax = max;
- }
-#endif
+public:
+ void setConnectionIDRange(const int16_t &min, const int16_t &max)
+ {
+ mMappedData.mCurrentConnectionID.mMin = min;
+ mMappedData.mCurrentConnectionID.mMax = max;
+ }
+
+ void setMainConnectionIDRange(const int16_t &min, const int16_t &max)
+ {
+ mMappedData.mCurrentMainConnectionID.mMin = min;
+ mMappedData.mCurrentMainConnectionID.mMax = max;
+ }
+
+ void setSinkIDRange(const int16_t &min, const int16_t &max)
+ {
+ mMappedData.mCurrentSinkID.mMin = min;
+ mMappedData.mCurrentSinkID.mMax = max;
+ }
+#endif // ifdef UNIT_TEST
};
}
diff --git a/AudioManagerCore/include/CAmGraph.h b/AudioManagerCore/include/CAmGraph.h
index 45043f7..9d9f082 100644
--- a/AudioManagerCore/include/CAmGraph.h
+++ b/AudioManagerCore/include/CAmGraph.h
@@ -37,643 +37,704 @@
#include <cstring>
#include <set>
-
namespace am
{
- /**
- * Graph element status.
- */
- typedef enum:uint8_t
- {
- GES_NOT_VISITED,
- GES_IN_PROGRESS,
- GES_VISITED
- }am_GraphElementStatus_e;
-
- /**
- * Callback parameter telling on which position in the path we are.
- */
- typedef enum:uint8_t
- {
- GRAPH_PATH_START, //at the beginning of the path
- GRAPH_PATH_MIDDLE, //in middle of the path
- GRAPH_PATH_END //at the end of the path
- }am_GraphPathPosition_e;
-
-
- /**
- * This class is base class for nodes and vertices.
- */
- class CAmGraphElement
- {
- am_GraphElementStatus_e mStatus; //!< item status
- public:
- CAmGraphElement(): mStatus(GES_NOT_VISITED) { };
- ~CAmGraphElement() { };
- /**
- * Setter and getter.
- */
- void setStatus(const am_GraphElementStatus_e s) { mStatus = s; };
- am_GraphElementStatus_e getStatus() const { return mStatus; };
- };
-
- template <class NodeData> class CAmNode : public CAmGraphElement
- {
- uint16_t mIndex; //!< uint16_t index used for direct access
- NodeData mData; //!< NodeData user data
- public:
- CAmNode(const NodeData & in):CAmGraphElement(), mIndex(0), mData(in) { };
- CAmNode(const NodeData & in, const uint16_t index):CAmGraphElement(), mIndex(index), mData(in) { };
- ~CAmNode() { };
- /**
- * Setters and getters.
- */
- NodeData & getData() { return mData; }
- const NodeData & getData() const { return mData; }
- uint16_t getIndex() const { return mIndex; }
- void setIndex(uint16_t index) { mIndex = index; }
- };
-
- template <class NodeData, class VertexData> class CAmVertex : public CAmGraphElement
- {
- CAmNode<NodeData>* mpNode; //!< CAmNode<NodeData>* pointer to a node
- VertexData mVertexData; //!< VertexData vertex user data
- uint16_t mWeight; //!< uint16_t a positive value used in the shortest path algorithms
- public:
- CAmVertex(CAmNode<NodeData> *aNode, const VertexData & vertexData, const uint16_t weight):CAmGraphElement(),
- mpNode(aNode), mVertexData(vertexData), mWeight(weight) { };
- ~CAmVertex() { };
- /**
- * Setters and getters.
- */
- CAmNode<NodeData>* getNode() const { return mpNode; }
- VertexData & getData() { return mVertexData; }
- uint16_t getWeight() const { return mWeight; }
- void setWeight(const uint16_t weight) { mWeight=weight; }
- };
-
- /**
- * Class representing a directed or undirected graph. It contains nodes and connections.
- * T, V are types for custom user data.
- */
- template <class T, class V> class CAmGraph
- {
- typedef typename std::vector<CAmNode<T>*> CAmListNodePtrs;
- typedef typename std::list<CAmVertex<T,V>> CAmListVertices;
- typedef typename std::list<CAmVertex<T,V>>::iterator CAmListVerticesItr;
- typedef typename std::list<CAmVertex<T,V>>::const_iterator CAmListVerticesItrConst;
- typedef typename std::list<CAmListVertices> CAmNodesAdjList;
- typedef typename std::list<CAmListVertices>::iterator CAmNodesAdjListItr;
- typedef typename std::list<CAmListVertices>::const_iterator CAmNodesAdjListItrConst;
- typedef typename std::list<CAmNode<T>> CAmListNodes;
- typedef typename std::list<CAmNode<T>>::iterator CAmListNodesItr;
- typedef typename std::list<CAmNode<T>>::const_iterator CAmListNodesItrConst;
- typedef typename std::vector<CAmNode<T>*> CAmNodeReferenceList;
- typedef typename std::vector<CAmListVertices*> CAmVertexReferenceList;
-
- CAmListNodes mStoreNodes; //!< CAmListNodes list with all nodes
- CAmNodesAdjList mStoreAdjList; //!< CAmNodesAdjList adjacency list
- CAmNodeReferenceList mPointersNodes; //!< CAmNodeReferenceList vector with pointers to nodes for direct access
- CAmVertexReferenceList mPointersAdjList; //!< CAmVertexReferenceList vector with pointers to vertices for direct access
- bool mIsCyclic; //!< bool the graph has cycles or not
-
- struct IterateThroughAllNodesDelegate
- {
- CAmNode<T> * source;
- CAmNode<T> * destination;
- CAmNodeReferenceList visited;
- std::function<bool(const CAmNode<T> * )> shouldVisitNode;
- std::function<void(const CAmNode<T> *)> willVisitNode;
- std::function<void(const CAmNode<T> *)> didVisitNode;
- std::function<void(const CAmNodeReferenceList & path)> didFindPath;
- };
-
- struct VisitNodeDelegate
- {
- CAmNode<T> * source;
- CAmNode<T> * destination;
- std::function<void(const am_GraphPathPosition_e, CAmNode<T> &)> visitedNode;
- };
-
- /**
- * Updates the node indexes after adding or removing nodes.
- *
- * @param fromIndex updates all nodes from given index.
- */
- void updateIndexes(const int16_t fromIndex)
- {
- if( fromIndex<mPointersNodes.size() )
- {
- for(auto iter = mPointersNodes.begin()+fromIndex; iter!=mPointersNodes.end(); iter++)
- (*iter)->setIndex(iter-mPointersNodes.begin());
- }
- }
-
-
- /**
- * Finds the shortest path and the minimal weights from given node.
- *
- * @param node start node.
- * @param minDistance vector with all result distances.
- * @param previous vector with previous nodes.
- */
-
- typedef uint16_t vertex_t;
- typedef uint16_t weight_t;
-
- void findShortestPathsFromNode(const CAmNode<T> & node, std::vector<weight_t> &minDistance, std::vector<CAmNode<T> *> &previous)
- {
- typename CAmListVertices::const_iterator nIter;
- CAmListVertices * neighbors;
- weight_t dist, weight, v, distanceThroughU;
- CAmNode<T>* pU;
- CAmVertex<T,V> * pVertex;
- CAmNode<T> *pDstNode;
-
- size_t n = mPointersAdjList.size();
- std::set<std::pair<weight_t, CAmNode<T>*> > vertexQueue;
-
- minDistance.clear();
- minDistance.resize(n, std::numeric_limits<weight_t>::max());
- minDistance[node.getIndex()] = 0;
- previous.clear();
- previous.resize(n, NULL);
-
- vertexQueue.insert(std::make_pair(minDistance[node.getIndex()], (CAmNode<T>*)&node));
-
- while (!vertexQueue.empty())
- {
- dist = vertexQueue.begin()->first;
- pU = vertexQueue.begin()->second;
- vertexQueue.erase(vertexQueue.begin());
- //todo: terminate the search at this position if you want the path to a target node ( if(pU==target)break; )
-
- // Visit each edge exiting u
- neighbors = mPointersAdjList[pU->getIndex()];
- nIter = neighbors->begin();
- for (; nIter != neighbors->end(); nIter++)
- {
- pVertex = (CAmVertex<T,V> *)&(*nIter);
- pDstNode = pVertex->getNode();
-
- v = pDstNode->getIndex();
- weight = pVertex->getWeight();
- distanceThroughU = dist + weight;
- if (distanceThroughU < minDistance[pDstNode->getIndex()])
- {
- vertexQueue.erase(std::make_pair(minDistance[v], pDstNode));
- minDistance[v] = distanceThroughU;
- previous[v] = pU;
- vertexQueue.insert(std::make_pair(minDistance[v], pDstNode));
- }
- }
- }
- }
-
- /**
- * Constructs a path to given node after findShortestsPathsFromNode has been called.
- *
- * @param node end node.
- * @param previous vector with previous nodes.
- * @param result result path.
- */
- void constructShortestPathTo(const CAmNode<T> & node, const std::vector<CAmNode<T> *> &previous, CAmListNodePtrs & result)
- {
- CAmNode<T> * vertex = (CAmNode<T> *)&node;
-
- int i=0;
- while ( (vertex = previous[vertex->getIndex()])!=NULL )
- {
- result.insert(result.begin(), vertex);
- i++;
- }
- if(i)
- result.push_back((CAmNode<T> *)&node);
- }
-
- /**
- * Calls a function with every node from this path after findShortestsPathsFromNode has been called.
- * The construction of the path is delegated to the caller.
- *
- * @param node end node.
- * @param previous vector with previous nodes.
- * @param cb callback which is mostly used for constructing.
- */
- void constructShortestPathTo(const CAmNode<T> & node, const std::vector<CAmNode<T> *> &previous, std::function<void(const am_GraphPathPosition_e pos, CAmNode<T> &)> cb)
- {
- CAmNode<T> * vertex = (CAmNode<T> *)&node;
- CAmNode<T> * prev = vertex;
- int i=0;
- while ( (vertex = previous[vertex->getIndex()])!=NULL )
- {
- cb(i==0?GRAPH_PATH_START:GRAPH_PATH_MIDDLE, *prev);
- prev = vertex;
- i++;
- }
- if(i)
- cb(GRAPH_PATH_END, *prev);
- }
-
- /**
- * Iterate through the nodes and generate all paths to given node.
- *
- * @param dst end node.
- * @param visited vector with current path.
- * @param delegate enumeration delegate.
- */
- void findAllPaths(IterateThroughAllNodesDelegate & delegate)
- {
- CAmListVertices * nodes = mPointersAdjList[delegate.visited.back()->getIndex()];
- CAmListVerticesItrConst vItr(nodes->begin());
-
- CAmVertex<T,V> * pNextVertex;
- CAmNode<T> * pNextNode;
- for (; vItr != nodes->end(); ++vItr)
- {
- pNextVertex = (CAmVertex<T,V> *)&(*vItr);
- pNextNode = pNextVertex->getNode();
- if(
- pNextNode->getStatus()!=GES_NOT_VISITED ||
- !delegate.shouldVisitNode(pNextNode)
- )
- continue;
- if (pNextNode==delegate.destination)
- {
- delegate.willVisitNode(pNextNode);
- pNextNode->setStatus(GES_IN_PROGRESS);
- delegate.visited.push_back(pNextNode);
- //notify observer
- delegate.didFindPath(delegate.visited);
- //remove last node from the list
- auto last = delegate.visited.end()-1;
- delegate.visited.erase(last);
- pNextNode->setStatus(GES_NOT_VISITED);
- delegate.didVisitNode(pNextNode);
- break;
- }
- }
- vItr = nodes->begin();
- //bfs like loop
- for (; vItr != nodes->end(); ++vItr)
- {
- pNextVertex = (CAmVertex<T,V> *)&(*vItr);
- pNextNode = pNextVertex->getNode();
-
- if(pNextNode->getStatus()!=GES_NOT_VISITED ||
- pNextNode==delegate.destination ||
- !delegate.shouldVisitNode(pNextNode)
- )
- continue;
- delegate.willVisitNode(pNextNode);
- pNextNode->setStatus(GES_IN_PROGRESS);
- delegate.visited.push_back(pNextNode);
- findAllPaths(delegate);
- //remove last node from the list
- auto last = delegate.visited.end()-1;
- delegate.visited.erase(last);
- pNextNode->setStatus(GES_NOT_VISITED);
- delegate.didVisitNode(pNextNode);
- }
- }
-
- public:
-
- explicit CAmGraph(const std::vector<T> &v):mStoreNodes(), mStoreAdjList(), mPointersNodes(), mPointersAdjList()
- {
- typedef typename std::vector<T>::const_iterator inItr;
- inItr itr(v.begin());
-
- for (; itr != v.end(); ++itr)
- {
- addNode(*itr);
- }
-
- mIsCyclic = false;
- };
- CAmGraph():mStoreNodes(), mStoreAdjList(), mPointersNodes(), mPointersAdjList(), mIsCyclic(false){};
- ~CAmGraph(){}
-
- const CAmListNodes & getNodes() const
- {
- return mStoreNodes;
- }
-
- const CAmVertexReferenceList & getVertexList() const
- {
- return mPointersAdjList;
- }
-
- /**
- * Returns pointer to a node which data is equal to the given.
- * @return pointer to a node or NULL.
- */
- const CAmNode<T>* findNode(const T & in)
- {
- typename CAmNodeReferenceList::const_iterator itr (mPointersNodes.begin());
-
- for (; itr != mPointersNodes.end(); ++itr)
- {
- if ((*itr)->getData() == in) {
- return (*itr);
- }
- }
- return NULL;
- }
-
- /**
- * Returns pointer to a vertex which two ends are equal to the given nodes.
- * @return pointer to a vertex or NULL.
- */
- const CAmVertex<T,V>* findVertex(const CAmNode<T> & edge1, const CAmNode<T> & edge2) const
- {
- const CAmNode<T> * pEdge2 = (CAmNode<T> *)&edge2;
- const CAmListVertices * list = mPointersAdjList[edge1.getIndex()];
- CAmListVerticesItrConst result = std::find_if(list->begin(), list->end(), [&](const CAmVertex<T,V> & refObject){
- return refObject.getNode()==pEdge2;
- });
- if(result!=list->end())
- return (CAmVertex<T,V>*)&(*result);
-
- return NULL;
- }
-
- bool hasCycles() const
- {
- return mIsCyclic;
- }
-
-
- /**
- * Adds a new node to the graph with given user data.
- * @return reference to the newly inserted node.
- */
- CAmNode<T> & addNode(const T & in)
- {
- size_t index = mStoreNodes.size();
- mStoreNodes.emplace_back(in, index);
- mStoreAdjList.emplace_back();
- mPointersNodes.push_back(&mStoreNodes.back());
- mPointersAdjList.push_back(&mStoreAdjList.back());
- return mStoreNodes.back();
- }
-
- /**
- * Removes a vertex with two ends equal to the given nodes .
- */
- void removeVertex(const CAmNode<T> & edge1, const CAmNode<T> & edge2)
- {
- const CAmListVertices * list = mPointersAdjList[edge1.getIndex()];
- CAmListVerticesItr iter = std::find_if(list->begin(), list->end(), [&edge2](const CAmVertex<T,V> & refVertex){
- return (refVertex.getNode()==&edge2);
- });
- if(iter!=list->end())
- list->erase(iter);
- }
-
- /**
- * Removes all vertices to given node .
- */
- void removeAllVerticesToNode(const CAmNode<T> & node)
- {
- auto comparator = [&node](const CAmVertex<T,V> & refVertex){
- return (refVertex.getNode()==&node);
- };
- auto itr = mPointersAdjList.begin();
- for(;itr!=mPointersAdjList.end();itr++)
- {
- CAmListVertices * vertices = *itr;
- auto iterVert = std::find_if(vertices->begin(), vertices->end(), comparator);
- if(iterVert!=vertices->end())
- vertices->erase(iterVert);
- }
- }
-
- /**
- * Removes a node with given user data .
- */
- void removeNode(const T & in)
- {
- CAmNode<T> * node = findNode(in);
- if(node!=NULL)
- removeNode(*node);
- }
-
- /**
- * Removes the given node from the graph .
- */
- void removeNode(const CAmNode<T> & node)
- {
- uint16_t index = node.getIndex();
- removeAllVerticesToNode(node);
- mPointersAdjList.erase(mPointersAdjList.begin()+index);
- mPointersNodes.erase(mPointersNodes.begin()+index);
- auto iter = std::find_if(mStoreNodes.begin(), mStoreNodes.end(), [&node](const CAmNode<T> & otherNode){
- return &otherNode==&node;
+/**
+ * Graph element status.
+ */
+typedef enum : uint8_t
+{
+ GES_NOT_VISITED,
+ GES_IN_PROGRESS,
+ GES_VISITED
+} am_GraphElementStatus_e;
+
+/**
+ * Callback parameter telling on which position in the path we are.
+ */
+typedef enum : uint8_t
+{
+ GRAPH_PATH_START, // at the beginning of the path
+ GRAPH_PATH_MIDDLE, // in middle of the path
+ GRAPH_PATH_END // at the end of the path
+} am_GraphPathPosition_e;
+
+/**
+ * This class is base class for nodes and vertices.
+ */
+class CAmGraphElement
+{
+ am_GraphElementStatus_e mStatus; //!< item status
+public:
+ CAmGraphElement()
+ : mStatus(GES_NOT_VISITED) { }
+ ~CAmGraphElement() { }
+ /**
+ * Setter and getter.
+ */
+ void setStatus(const am_GraphElementStatus_e s) { mStatus = s; }
+ am_GraphElementStatus_e getStatus() const { return mStatus; }
+};
+
+template <class NodeData>
+class CAmNode : public CAmGraphElement
+{
+ uint16_t mIndex; //!< uint16_t index used for direct access
+ NodeData mData; //!< NodeData user data
+public:
+ CAmNode(const NodeData &in)
+ : CAmGraphElement()
+ , mIndex(0)
+ , mData(in) { }
+ CAmNode(const NodeData &in, const uint16_t index)
+ : CAmGraphElement()
+ , mIndex(index)
+ , mData(in) { }
+ ~CAmNode() { }
+ /**
+ * Setters and getters.
+ */
+ NodeData &getData() { return mData; }
+ const NodeData &getData() const { return mData; }
+ uint16_t getIndex() const { return mIndex; }
+ void setIndex(uint16_t index) { mIndex = index; }
+};
+
+template <class NodeData, class VertexData>
+class CAmVertex : public CAmGraphElement
+{
+ CAmNode<NodeData> *mpNode; //!< CAmNode<NodeData>* pointer to a node
+ VertexData mVertexData; //!< VertexData vertex user data
+ uint16_t mWeight; //!< uint16_t a positive value used in the shortest path algorithms
+public:
+ CAmVertex(CAmNode<NodeData> *aNode, const VertexData &vertexData, const uint16_t weight)
+ : CAmGraphElement()
+ , mpNode(aNode)
+ , mVertexData(vertexData)
+ , mWeight(weight) { }
+ ~CAmVertex() { }
+ /**
+ * Setters and getters.
+ */
+ CAmNode<NodeData> *getNode() const { return mpNode; }
+ VertexData &getData() { return mVertexData; }
+ uint16_t getWeight() const { return mWeight; }
+ void setWeight(const uint16_t weight) { mWeight = weight; }
+};
+
+/**
+ * Class representing a directed or undirected graph. It contains nodes and connections.
+ * T, V are types for custom user data.
+ */
+template <class T, class V>
+class CAmGraph
+{
+ typedef typename std::vector<CAmNode<T> *> CAmListNodePtrs;
+ typedef typename std::list<CAmVertex<T, V> > CAmListVertices;
+ typedef typename std::list<CAmVertex<T, V> >::iterator CAmListVerticesItr;
+ typedef typename std::list<CAmVertex<T, V> >::const_iterator CAmListVerticesItrConst;
+ typedef typename std::list<CAmListVertices> CAmNodesAdjList;
+ typedef typename std::list<CAmListVertices>::iterator CAmNodesAdjListItr;
+ typedef typename std::list<CAmListVertices>::const_iterator CAmNodesAdjListItrConst;
+ typedef typename std::list<CAmNode<T> > CAmListNodes;
+ typedef typename std::list<CAmNode<T> >::iterator CAmListNodesItr;
+ typedef typename std::list<CAmNode<T> >::const_iterator CAmListNodesItrConst;
+ typedef typename std::vector<CAmNode<T> *> CAmNodeReferenceList;
+ typedef typename std::vector<CAmListVertices *> CAmVertexReferenceList;
+
+ CAmListNodes mStoreNodes; //!< CAmListNodes list with all nodes
+ CAmNodesAdjList mStoreAdjList; //!< CAmNodesAdjList adjacency list
+ CAmNodeReferenceList mPointersNodes; //!< CAmNodeReferenceList vector with pointers to nodes for direct access
+ CAmVertexReferenceList mPointersAdjList; //!< CAmVertexReferenceList vector with pointers to vertices for direct access
+ bool mIsCyclic; //!< bool the graph has cycles or not
+
+ struct IterateThroughAllNodesDelegate
+ {
+ CAmNode<T> *source;
+ CAmNode<T> *destination;
+ CAmNodeReferenceList visited;
+ std::function<bool(const CAmNode<T> *)> shouldVisitNode;
+ std::function<void(const CAmNode<T> *)> willVisitNode;
+ std::function<void(const CAmNode<T> *)> didVisitNode;
+ std::function<void(const CAmNodeReferenceList &path)> didFindPath;
+ };
+
+ struct VisitNodeDelegate
+ {
+ CAmNode<T> *source;
+ CAmNode<T> *destination;
+ std::function<void(const am_GraphPathPosition_e, CAmNode<T> &)> visitedNode;
+ };
+
+ /**
+ * Updates the node indexes after adding or removing nodes.
+ *
+ * @param fromIndex updates all nodes from given index.
+ */
+ void updateIndexes(const int16_t fromIndex)
+ {
+ if ( fromIndex < mPointersNodes.size())
+ {
+ for (auto iter = mPointersNodes.begin() + fromIndex; iter != mPointersNodes.end(); iter++)
+ {
+ (*iter)->setIndex(iter - mPointersNodes.begin());
+ }
+ }
+ }
+
+ /**
+ * Finds the shortest path and the minimal weights from given node.
+ *
+ * @param node start node.
+ * @param minDistance vector with all result distances.
+ * @param previous vector with previous nodes.
+ */
+
+ typedef uint16_t vertex_t;
+ typedef uint16_t weight_t;
+
+ void findShortestPathsFromNode(const CAmNode<T> &node, std::vector<weight_t> &minDistance, std::vector<CAmNode<T> *> &previous)
+ {
+ typename CAmListVertices::const_iterator nIter;
+ CAmListVertices *neighbors;
+ weight_t dist, weight, v, distanceThroughU;
+ CAmNode<T> *pU;
+ CAmVertex<T, V> *pVertex;
+ CAmNode<T> *pDstNode;
+
+ size_t n = mPointersAdjList.size();
+ std::set<std::pair<weight_t, CAmNode<T> *> > vertexQueue;
+
+ minDistance.clear();
+ minDistance.resize(n, std::numeric_limits<weight_t>::max());
+ minDistance[node.getIndex()] = 0;
+ previous.clear();
+ previous.resize(n, NULL);
+
+ vertexQueue.insert(std::make_pair(minDistance[node.getIndex()], (CAmNode<T> *) & node));
+
+ while (!vertexQueue.empty())
+ {
+ dist = vertexQueue.begin()->first;
+ pU = vertexQueue.begin()->second;
+ vertexQueue.erase(vertexQueue.begin());
+ // todo: terminate the search at this position if you want the path to a target node ( if(pU==target)break; )
+
+ // Visit each edge exiting u
+ neighbors = mPointersAdjList[pU->getIndex()];
+ nIter = neighbors->begin();
+ for (; nIter != neighbors->end(); nIter++)
+ {
+ pVertex = (CAmVertex<T, V> *) & (*nIter);
+ pDstNode = pVertex->getNode();
+
+ v = pDstNode->getIndex();
+ weight = pVertex->getWeight();
+ distanceThroughU = dist + weight;
+ if (distanceThroughU < minDistance[pDstNode->getIndex()])
+ {
+ vertexQueue.erase(std::make_pair(minDistance[v], pDstNode));
+ minDistance[v] = distanceThroughU;
+ previous[v] = pU;
+ vertexQueue.insert(std::make_pair(minDistance[v], pDstNode));
+ }
+ }
+ }
+ }
+
+ /**
+ * Constructs a path to given node after findShortestsPathsFromNode has been called.
+ *
+ * @param node end node.
+ * @param previous vector with previous nodes.
+ * @param result result path.
+ */
+ void constructShortestPathTo(const CAmNode<T> &node, const std::vector<CAmNode<T> *> &previous, CAmListNodePtrs &result)
+ {
+ CAmNode<T> *vertex = (CAmNode<T> *) & node;
+
+ int i = 0;
+ while ((vertex = previous[vertex->getIndex()]) != NULL )
+ {
+ result.insert(result.begin(), vertex);
+ i++;
+ }
+
+ if (i)
+ {
+ result.push_back((CAmNode<T> *) & node);
+ }
+ }
+
+ /**
+ * Calls a function with every node from this path after findShortestsPathsFromNode has been called.
+ * The construction of the path is delegated to the caller.
+ *
+ * @param node end node.
+ * @param previous vector with previous nodes.
+ * @param cb callback which is mostly used for constructing.
+ */
+ void constructShortestPathTo(const CAmNode<T> &node, const std::vector<CAmNode<T> *> &previous, std::function<void(const am_GraphPathPosition_e pos, CAmNode<T> &)> cb)
+ {
+ CAmNode<T> *vertex = (CAmNode<T> *) & node;
+ CAmNode<T> *prev = vertex;
+ int i = 0;
+ while ((vertex = previous[vertex->getIndex()]) != NULL )
+ {
+ cb(i == 0 ? GRAPH_PATH_START : GRAPH_PATH_MIDDLE, *prev);
+ prev = vertex;
+ i++;
+ }
+
+ if (i)
+ {
+ cb(GRAPH_PATH_END, *prev);
+ }
+ }
+
+ /**
+ * Iterate through the nodes and generate all paths to given node.
+ *
+ * @param dst end node.
+ * @param visited vector with current path.
+ * @param delegate enumeration delegate.
+ */
+ void findAllPaths(IterateThroughAllNodesDelegate &delegate)
+ {
+ CAmListVertices *nodes = mPointersAdjList[delegate.visited.back()->getIndex()];
+ CAmListVerticesItrConst vItr(nodes->begin());
+
+ CAmVertex<T, V> *pNextVertex;
+ CAmNode<T> *pNextNode;
+ for (; vItr != nodes->end(); ++vItr)
+ {
+ pNextVertex = (CAmVertex<T, V> *) & (*vItr);
+ pNextNode = pNextVertex->getNode();
+ if (
+ pNextNode->getStatus() != GES_NOT_VISITED ||
+ !delegate.shouldVisitNode(pNextNode)
+ )
+ {
+ continue;
+ }
+
+ if (pNextNode == delegate.destination)
+ {
+ delegate.willVisitNode(pNextNode);
+ pNextNode->setStatus(GES_IN_PROGRESS);
+ delegate.visited.push_back(pNextNode);
+ // notify observer
+ delegate.didFindPath(delegate.visited);
+ // remove last node from the list
+ auto last = delegate.visited.end() - 1;
+ delegate.visited.erase(last);
+ pNextNode->setStatus(GES_NOT_VISITED);
+ delegate.didVisitNode(pNextNode);
+ break;
+ }
+ }
+
+ vItr = nodes->begin();
+ // bfs like loop
+ for (; vItr != nodes->end(); ++vItr)
+ {
+ pNextVertex = (CAmVertex<T, V> *) & (*vItr);
+ pNextNode = pNextVertex->getNode();
+
+ if (pNextNode->getStatus() != GES_NOT_VISITED ||
+ pNextNode == delegate.destination ||
+ !delegate.shouldVisitNode(pNextNode)
+ )
+ {
+ continue;
+ }
+
+ delegate.willVisitNode(pNextNode);
+ pNextNode->setStatus(GES_IN_PROGRESS);
+ delegate.visited.push_back(pNextNode);
+ findAllPaths(delegate);
+ // remove last node from the list
+ auto last = delegate.visited.end() - 1;
+ delegate.visited.erase(last);
+ pNextNode->setStatus(GES_NOT_VISITED);
+ delegate.didVisitNode(pNextNode);
+ }
+ }
+
+public:
+
+ explicit CAmGraph(const std::vector<T> &v)
+ : mStoreNodes()
+ , mStoreAdjList()
+ , mPointersNodes()
+ , mPointersAdjList()
+ {
+ typedef typename std::vector<T>::const_iterator inItr;
+ inItr itr(v.begin());
+
+ for (; itr != v.end(); ++itr)
+ {
+ addNode(*itr);
+ }
+
+ mIsCyclic = false;
+ }
+
+ CAmGraph()
+ : mStoreNodes()
+ , mStoreAdjList()
+ , mPointersNodes()
+ , mPointersAdjList()
+ , mIsCyclic(false){}
+ ~CAmGraph(){}
+
+ const CAmListNodes &getNodes() const
+ {
+ return mStoreNodes;
+ }
+
+ const CAmVertexReferenceList &getVertexList() const
+ {
+ return mPointersAdjList;
+ }
+
+ /**
+ * Returns pointer to a node which data is equal to the given.
+ * @return pointer to a node or NULL.
+ */
+ const CAmNode<T> *findNode(const T &in)
+ {
+ typename CAmNodeReferenceList::const_iterator itr(mPointersNodes.begin());
+
+ for (; itr != mPointersNodes.end(); ++itr)
+ {
+ if ((*itr)->getData() == in)
+ {
+ return (*itr);
+ }
+ }
+
+ return NULL;
+ }
+
+ /**
+ * Returns pointer to a vertex which two ends are equal to the given nodes.
+ * @return pointer to a vertex or NULL.
+ */
+ const CAmVertex<T, V> *findVertex(const CAmNode<T> &edge1, const CAmNode<T> &edge2) const
+ {
+ const CAmNode<T> *pEdge2 = (CAmNode<T> *) & edge2;
+ const CAmListVertices *list = mPointersAdjList[edge1.getIndex()];
+ CAmListVerticesItrConst result = std::find_if(list->begin(), list->end(), [&](const CAmVertex<T, V> &refObject){
+ return refObject.getNode() == pEdge2;
+ });
+ if (result != list->end())
+ {
+ return (CAmVertex<T, V> *) & (*result);
+ }
+
+ return NULL;
+ }
+
+ bool hasCycles() const
+ {
+ return mIsCyclic;
+ }
+
+ /**
+ * Adds a new node to the graph with given user data.
+ * @return reference to the newly inserted node.
+ */
+ CAmNode<T> &addNode(const T &in)
+ {
+ size_t index = mStoreNodes.size();
+ mStoreNodes.emplace_back(in, index);
+ mStoreAdjList.emplace_back();
+ mPointersNodes.push_back(&mStoreNodes.back());
+ mPointersAdjList.push_back(&mStoreAdjList.back());
+ return mStoreNodes.back();
+ }
+
+ /**
+ * Removes a vertex with two ends equal to the given nodes .
+ */
+ void removeVertex(const CAmNode<T> &edge1, const CAmNode<T> &edge2)
+ {
+ const CAmListVertices *list = mPointersAdjList[edge1.getIndex()];
+ CAmListVerticesItr iter = std::find_if(list->begin(), list->end(), [&edge2](const CAmVertex<T, V> &refVertex){
+ return (refVertex.getNode() == &edge2);
+ });
+ if (iter != list->end())
+ {
+ list->erase(iter);
+ }
+ }
+
+ /**
+ * Removes all vertices to given node .
+ */
+ void removeAllVerticesToNode(const CAmNode<T> &node)
+ {
+ auto comparator = [&node](const CAmVertex<T, V> &refVertex){
+ return (refVertex.getNode() == &node);
+ };
+ auto itr = mPointersAdjList.begin();
+ for (; itr != mPointersAdjList.end(); itr++)
+ {
+ CAmListVertices *vertices = *itr;
+ auto iterVert = std::find_if(vertices->begin(), vertices->end(), comparator);
+ if (iterVert != vertices->end())
+ {
+ vertices->erase(iterVert);
+ }
+ }
+ }
+
+ /**
+ * Removes a node with given user data .
+ */
+ void removeNode(const T &in)
+ {
+ CAmNode<T> *node = findNode(in);
+ if (node != NULL)
+ {
+ removeNode(*node);
+ }
+ }
+
+ /**
+ * Removes the given node from the graph .
+ */
+ void removeNode(const CAmNode<T> &node)
+ {
+ uint16_t index = node.getIndex();
+ removeAllVerticesToNode(node);
+ mPointersAdjList.erase(mPointersAdjList.begin() + index);
+ mPointersNodes.erase(mPointersNodes.begin() + index);
+ auto iter = std::find_if(mStoreNodes.begin(), mStoreNodes.end(), [&node](const CAmNode<T> &otherNode){
+ return &otherNode == &node;
+ });
+ if (iter != mStoreNodes.end())
+ {
+ mStoreNodes.erase(iter);
+ }
+
+ updateIndexes(index);
+ }
+
+ /**
+ * Connect first with last node and set user data and weight to the vertex.
+ */
+ void connectNodes(const CAmNode<T> &first, const CAmNode<T> &last, const V &vertexData, const int16_t weight = 1)
+ {
+ CAmListVertices *list = mPointersAdjList[first.getIndex()];
+ CAmNode<T> *node = mPointersNodes[last.getIndex()];
+ list->emplace_back(node, vertexData, weight);
+ }
+
+ /**
+ * Exists any vertex with two given ends.
+ * @return TRUE on successfully changed ID.
+ */
+ bool isAnyVertex(const CAmNode<T> &edge1, const CAmNode<T> &edge2) const
+ {
+ return findVertex(edge1, edge2) != NULL;
+ }
+
+ /**
+ * Sets the status of all nodes and vertices to GES_NOT_VISITED.
+ */
+ void reset()
+ {
+ // set all nodes to GES_NOT_VISITED
+ std::for_each(mPointersNodes.begin(), mPointersNodes.end(), [](CAmNode<T> *refNode){
+ if (refNode->getStatus() != GES_NOT_VISITED)
+ {
+ refNode->setStatus(GES_NOT_VISITED);
+ }
+ });
+ // set all vertices to GES_NOT_VISITED
+ auto action = [](CAmVertex<T, V> &refVertex){
+ if (refVertex.getStatus() != GES_NOT_VISITED)
+ {
+ refVertex.setStatus(GES_NOT_VISITED);
+ }
+ };
+ auto itr1(mPointersAdjList.begin());
+ for (; itr1 != mPointersAdjList.end(); ++itr1)
+ {
+ CAmListVertices *vertices = *itr1;
+ std::for_each(vertices->begin(), vertices->end(), action);
+ }
+ }
+
+ /**
+ * Clears all nodes and vertices.
+ */
+ void clear()
+ {
+ mStoreNodes.clear();
+ mStoreAdjList.clear();
+ mPointersAdjList.clear();
+ mPointersNodes.clear();
+ mPointersAdjList.clear();
+ }
+
+ /**
+ * Goes through all nodes and vertices and calls the callback.
+ */
+ void trace(std::function<void(const CAmNode<T> &, const std::vector<CAmVertex<T, V> *> &)> cb)
+ {
+ std::for_each(mPointersNodes.begin(), mPointersNodes.end(), [&](CAmNode<T> *refNode){
+ CAmListVertices *vertices = this->mPointersAdjList[refNode->getIndex()];
+ std::vector<CAmVertex<T, V> *> list;
+ std::for_each(vertices->begin(), vertices->end(), [&list](CAmVertex<T, V> &refVertex){
+ list.push_back(&refVertex);
});
- if(iter!=mStoreNodes.end())
- mStoreNodes.erase(iter);
- updateIndexes(index);
- }
-
- /**
- * Connect first with last node and set user data and weight to the vertex.
- */
- void connectNodes(const CAmNode<T> & first, const CAmNode<T> & last, const V & vertexData, const int16_t weight = 1)
- {
- CAmListVertices * list = mPointersAdjList[first.getIndex()];
- CAmNode<T> * node = mPointersNodes[last.getIndex()];
- list->emplace_back(node, vertexData, weight);
- }
-
- /**
- * Exists any vertex with two given ends.
- * @return TRUE on successfully changed ID.
- */
- bool isAnyVertex(const CAmNode<T> & edge1, const CAmNode<T> & edge2) const
- {
- return findVertex(edge1, edge2)!=NULL;
- }
-
- /**
- * Sets the status of all nodes and vertices to GES_NOT_VISITED.
- */
- void reset()
- {
- // set all nodes to GES_NOT_VISITED
- std::for_each(mPointersNodes.begin(), mPointersNodes.end(), [](CAmNode<T> * refNode){
- if(refNode->getStatus()!= GES_NOT_VISITED)
- refNode->setStatus(GES_NOT_VISITED);
- });
- // set all vertices to GES_NOT_VISITED
- auto action = [](CAmVertex<T,V> & refVertex){
- if(refVertex.getStatus()!= GES_NOT_VISITED)
- refVertex.setStatus(GES_NOT_VISITED);
- };
- auto itr1(mPointersAdjList.begin());
- for (; itr1 != mPointersAdjList.end(); ++itr1)
- {
- CAmListVertices * vertices = *itr1;
- std::for_each(vertices->begin(), vertices->end(), action);
- }
- }
-
- /**
- * Clears all nodes and vertices.
- */
- void clear()
- {
- mStoreNodes.clear();
- mStoreAdjList.clear();
- mPointersAdjList.clear();
- mPointersNodes.clear();
- mPointersAdjList.clear();
- }
-
- /**
- * Goes through all nodes and vertices and calls the callback.
- */
- void trace(std::function<void(const CAmNode<T> &, const std::vector<CAmVertex<T,V>*> &)> cb)
- {
- std::for_each(mPointersNodes.begin(), mPointersNodes.end(), [&](CAmNode<T> * refNode){
- CAmListVertices * vertices = this->mPointersAdjList[refNode->getIndex()];
- std::vector<CAmVertex<T,V>*> list;
- std::for_each(vertices->begin(), vertices->end(), [&list](CAmVertex<T,V> & refVertex){
- list.push_back(&refVertex);
- });
- cb(*refNode, list);
- });
- }
-
- /**
- * Finds the shortest path from given node to all nodes in listTargets.
- *
- * @param source start node.
- * @param listTargets destination nodes.
- * @param resultPath list with all shortest paths.
- */
- void getShortestPath(const CAmNode<T> & source, const CAmListNodePtrs & listTargets, std::vector<CAmListNodePtrs> & resultPath )
- {
- const size_t numberOfNodes = mPointersNodes.size();
- if(numberOfNodes==0)
- return;
-
- std::vector<weight_t> min_distance;
- std::vector<CAmNode<T>*> previous;
- findShortestPathsFromNode(source, min_distance, previous);
-
- for(auto it=listTargets.begin(); it!=listTargets.end(); it++)
- {
- CAmNode<T> *node = *it;
- resultPath.emplace_back();
- CAmListNodePtrs & path = resultPath.back();
- constructShortestPathTo(*node, previous, path);
- if(path.empty())
- {
- typename std::vector<CAmListNodePtrs>::iterator iter = resultPath.end();
- resultPath.erase(--iter);
- }
- }
- }
-
- /**
- * Finds the shortest path between two nodes.
- *
- * @param source start node.
- * @param destination destination node.
- * @param resultPath list with the found shortest paths.
- */
- void getShortestPath(const CAmNode<T> & source, const CAmNode<T> & destination, CAmListNodePtrs & resultPath )
- {
- const size_t numberOfNodes = mPointersNodes.size();
- if(numberOfNodes==0)
- return;
- std::vector<weight_t> min_distance;
- std::vector<CAmNode<T>*> previous;
- findShortestPathsFromNode(source, min_distance, previous);
- constructShortestPathTo(destination, previous, resultPath);
- }
-
- /**
- * Finds the shortest path from given node to all nodes in listTargets.
- * Delegates the construction of the path to the caller.
- *
- * @param source start node.
- * @param listTargets destination nodes.
- * @param cb callabck.
- */
- void getShortestPath(const CAmNode<T> & source,
- const CAmListNodePtrs & listTargets,
- std::function<void(const am_GraphPathPosition_e, CAmNode<T> &)> cb )
- {
- const size_t numberOfNodes = mPointersNodes.size();
- if(numberOfNodes==0)
- return;
-
- std::vector<weight_t> min_distance;
- std::vector<CAmNode<T>*> previous;
- findShortestPathsFromNode(source, min_distance, previous);
-
- for(auto it=listTargets.begin(); it!=listTargets.end(); it++)
- {
- CAmNode<T>* node = *it;
- constructShortestPathTo(*node, previous, cb);
- }
- }
-
- /**
- * Finds the shortest path between two given nodes.
- * Delegates the construction of the path to the caller.
- *
- * @param source start node.
- * @param destination destination node.
- * @param cb callabck.
- */
- void getShortestPath(const CAmNode<T> & source,
- const CAmNode<T> & destination,
- std::function<void(const am_GraphPathPosition_e, CAmNode<T> &)> cb )
- {
- const size_t numberOfNodes = mPointersNodes.size();
- if(numberOfNodes==0)
- return;
-
- std::vector<weight_t> min_distance;
- std::vector<CAmNode<T>*> previous;
- findShortestPathsFromNode(source, min_distance, previous);
- constructShortestPathTo(destination, previous, cb);
- }
-
- /**
- * Finds all possible paths between two given nodes.
- * Delegates the construction of the path to the caller.
- *
- * @param src start node.
- * @param dst destination node.
- * @param cbShouldVisitNode ask the delegate if we should proceed with the current node.
- * @param cbWillVisitNode tell the delegate the current node will be visited.
- * @param cbDidVisitNode tell the delegate the current node was visited.
- * @param cbDidFindPath return the path to the delegate.
- */
- void getAllPaths(CAmNode<T> & src,
- CAmNode<T> & dst,
- std::function<bool(const CAmNode<T> * )> cbShouldVisitNode,
- std::function<void(const CAmNode<T> *)> cbWillVisitNode,
- std::function<void(const CAmNode<T> *)> cbDidVisitNode,
- std::function<void(const CAmNodeReferenceList & path)> cbDidFindPath)
- {
- IterateThroughAllNodesDelegate delegate;
- delegate.source = &src;
- delegate.destination = &dst;
- delegate.shouldVisitNode = cbShouldVisitNode;
- delegate.willVisitNode = cbWillVisitNode;
- delegate.didVisitNode = cbDidVisitNode;
- delegate.didFindPath = cbDidFindPath;
- delegate.visited.push_back((CAmNode<T>*)&src);
- ((CAmNode<T>*)&src)->setStatus(GES_VISITED);
- findAllPaths(delegate);
- ((CAmNode<T>*)&src)->setStatus(GES_NOT_VISITED);
- }
- };
+ cb(*refNode, list);
+ });
+ }
+
+ /**
+ * Finds the shortest path from given node to all nodes in listTargets.
+ *
+ * @param source start node.
+ * @param listTargets destination nodes.
+ * @param resultPath list with all shortest paths.
+ */
+ void getShortestPath(const CAmNode<T> &source, const CAmListNodePtrs &listTargets, std::vector<CAmListNodePtrs> &resultPath)
+ {
+ const size_t numberOfNodes = mPointersNodes.size();
+ if (numberOfNodes == 0)
+ {
+ return;
+ }
+
+ std::vector<weight_t> min_distance;
+ std::vector<CAmNode<T> *> previous;
+ findShortestPathsFromNode(source, min_distance, previous);
+
+ for (auto it = listTargets.begin(); it != listTargets.end(); it++)
+ {
+ CAmNode<T> *node = *it;
+ resultPath.emplace_back();
+ CAmListNodePtrs &path = resultPath.back();
+ constructShortestPathTo(*node, previous, path);
+ if (path.empty())
+ {
+ typename std::vector<CAmListNodePtrs>::iterator iter = resultPath.end();
+ resultPath.erase(--iter);
+ }
+ }
+ }
+
+ /**
+ * Finds the shortest path between two nodes.
+ *
+ * @param source start node.
+ * @param destination destination node.
+ * @param resultPath list with the found shortest paths.
+ */
+ void getShortestPath(const CAmNode<T> &source, const CAmNode<T> &destination, CAmListNodePtrs &resultPath)
+ {
+ const size_t numberOfNodes = mPointersNodes.size();
+ if (numberOfNodes == 0)
+ {
+ return;
+ }
+
+ std::vector<weight_t> min_distance;
+ std::vector<CAmNode<T> *> previous;
+ findShortestPathsFromNode(source, min_distance, previous);
+ constructShortestPathTo(destination, previous, resultPath);
+ }
+
+ /**
+ * Finds the shortest path from given node to all nodes in listTargets.
+ * Delegates the construction of the path to the caller.
+ *
+ * @param source start node.
+ * @param listTargets destination nodes.
+ * @param cb callabck.
+ */
+ void getShortestPath(const CAmNode<T> &source,
+ const CAmListNodePtrs &listTargets,
+ std::function<void(const am_GraphPathPosition_e, CAmNode<T> &)> cb)
+ {
+ const size_t numberOfNodes = mPointersNodes.size();
+ if (numberOfNodes == 0)
+ {
+ return;
+ }
+
+ std::vector<weight_t> min_distance;
+ std::vector<CAmNode<T> *> previous;
+ findShortestPathsFromNode(source, min_distance, previous);
+
+ for (auto it = listTargets.begin(); it != listTargets.end(); it++)
+ {
+ CAmNode<T> *node = *it;
+ constructShortestPathTo(*node, previous, cb);
+ }
+ }
+
+ /**
+ * Finds the shortest path between two given nodes.
+ * Delegates the construction of the path to the caller.
+ *
+ * @param source start node.
+ * @param destination destination node.
+ * @param cb callabck.
+ */
+ void getShortestPath(const CAmNode<T> &source,
+ const CAmNode<T> &destination,
+ std::function<void(const am_GraphPathPosition_e, CAmNode<T> &)> cb)
+ {
+ const size_t numberOfNodes = mPointersNodes.size();
+ if (numberOfNodes == 0)
+ {
+ return;
+ }
+
+ std::vector<weight_t> min_distance;
+ std::vector<CAmNode<T> *> previous;
+ findShortestPathsFromNode(source, min_distance, previous);
+ constructShortestPathTo(destination, previous, cb);
+ }
+
+ /**
+ * Finds all possible paths between two given nodes.
+ * Delegates the construction of the path to the caller.
+ *
+ * @param src start node.
+ * @param dst destination node.
+ * @param cbShouldVisitNode ask the delegate if we should proceed with the current node.
+ * @param cbWillVisitNode tell the delegate the current node will be visited.
+ * @param cbDidVisitNode tell the delegate the current node was visited.
+ * @param cbDidFindPath return the path to the delegate.
+ */
+ void getAllPaths(CAmNode<T> &src,
+ CAmNode<T> &dst,
+ std::function<bool(const CAmNode<T> *)> cbShouldVisitNode,
+ std::function<void(const CAmNode<T> *)> cbWillVisitNode,
+ std::function<void(const CAmNode<T> *)> cbDidVisitNode,
+ std::function<void(const CAmNodeReferenceList &path)> cbDidFindPath)
+ {
+ IterateThroughAllNodesDelegate delegate;
+ delegate.source = &src;
+ delegate.destination = &dst;
+ delegate.shouldVisitNode = cbShouldVisitNode;
+ delegate.willVisitNode = cbWillVisitNode;
+ delegate.didVisitNode = cbDidVisitNode;
+ delegate.didFindPath = cbDidFindPath;
+ delegate.visited.push_back((CAmNode<T> *) & src);
+ ((CAmNode<T> *) & src)->setStatus(GES_VISITED);
+ findAllPaths(delegate);
+ ((CAmNode<T> *) & src)->setStatus(GES_NOT_VISITED);
+ }
+
+};
}
-#endif
+#endif // ifndef GRAPH_H
diff --git a/AudioManagerCore/include/CAmLog.h b/AudioManagerCore/include/CAmLog.h
index cf7a3a6..5659961 100644
--- a/AudioManagerCore/include/CAmLog.h
+++ b/AudioManagerCore/include/CAmLog.h
@@ -14,7 +14,7 @@
* this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
*
-* \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
*
* \file CAmLog.h
* For further information see http://www.genivi.org/.
@@ -40,11 +40,11 @@
* Example: CAmLogger << "Text"; //to print out through the singleton object directly to the console
*/
-#define DEFAULT_LOG_FOLDER "/tmp/"
+#define DEFAULT_LOG_FOLDER "/tmp/"
#define DEFAULT_LOGFILE_PREFIX "am_dump_"
-#define DEFAULT_LOGFILE_EXT ".log"
+#define DEFAULT_LOGFILE_EXT ".log"
-#define DEL( aPointer ) delete aPointer, aPointer = NULL
+#define DEL(aPointer) delete aPointer, aPointer = NULL
/* */
typedef enum { eCAmLogNone = 0, eCAmLogStdout = 1, eCAmLogFile = 2 } eCAmLogType;
@@ -52,78 +52,86 @@ typedef enum { eCAmLogNone = 0, eCAmLogStdout = 1, eCAmLogFile = 2 } eCAmLogType
class CAmLog
{
private:
- /**
- * Private classes which usually own (wrap) a stream object. They are responsible for creating and deleting it.
- */
- class CAmLogger
- {
- protected:
- std::ostream* mOutputStream;
- public:
- CAmLogger ():mOutputStream(NULL) {};
- virtual ~CAmLogger () { };
- virtual void log(const std::string& _s)
- {
- (*mOutputStream) << _s;
- mOutputStream->flush();
- }
- template <class T>
- CAmLogger & operator << (const T & t)
- {
- (*mOutputStream) << t;
- return (*this);
- }
- };
-
- class CAmFileLogger : public CAmLogger
- {
- std::string mFilename;
- public:
- static void generateLogFilename(std::string &result);
- explicit CAmFileLogger(const std::string& _s) : CAmLogger()
- {
- mFilename = _s;
- mOutputStream = new std::ofstream(mFilename.c_str());
- }
- ~CAmFileLogger();
- };
-
- class CAmStdOutLogger : public CAmLogger
- {
- public:
- CAmStdOutLogger()
- {
- mOutputStream = &std::cout;
- }
- };
+ /**
+ * Private classes which usually own (wrap) a stream object. They are responsible for creating and deleting it.
+ */
+ class CAmLogger
+ {
+ protected:
+ std::ostream *mOutputStream;
+ public:
+ CAmLogger ()
+ : mOutputStream(NULL) {}
+ virtual ~CAmLogger () { }
+ virtual void log(const std::string &_s)
+ {
+ (*mOutputStream) << _s;
+ mOutputStream->flush();
+ }
+
+ template <class T>
+ CAmLogger &operator <<(const T &t)
+ {
+ (*mOutputStream) << t;
+ return (*this);
+ }
+
+ };
+
+ class CAmFileLogger : public CAmLogger
+ {
+ std::string mFilename;
+ public:
+ static void generateLogFilename(std::string &result);
+
+ explicit CAmFileLogger(const std::string &_s)
+ : CAmLogger()
+ {
+ mFilename = _s;
+ mOutputStream = new std::ofstream(mFilename.c_str());
+ }
+
+ ~CAmFileLogger();
+ };
+
+ class CAmStdOutLogger : public CAmLogger
+ {
+ public:
+ CAmStdOutLogger()
+ {
+ mOutputStream = &std::cout;
+ }
+
+ };
private:
- eCAmLogType mLogType;
- CAmLogger* mLogger;
+ eCAmLogType mLogType;
+ CAmLogger *mLogger;
protected:
void releaseLogger();
- void instantiateLogger( const eCAmLogType type);
+ void instantiateLogger(const eCAmLogType type);
+
public:
- CAmLog(const eCAmLogType type );
+ CAmLog(const eCAmLogType type);
CAmLog();
~CAmLog();
static CAmLog *getDefaultLog();
- void setLogType( const eCAmLogType type);
+ void setLogType(const eCAmLogType type);
eCAmLogType getLogType() const;
template <class T>
- CAmLog & operator << (const T & t)
+ CAmLog &operator <<(const T &t)
{
- assert(mLogger!=NULL);
- (*mLogger) << t;
- return (*this);
+ assert(mLogger != NULL);
+ (*mLogger) << t;
+ return (*this);
}
- };
-#define CAmLogger (*CAmLog::getDefaultLog())
+};
+#define CAmLogger (*CAmLog::getDefaultLog())
#endif /* CAMLOG_H_ */
diff --git a/AudioManagerCore/include/CAmRouter.h b/AudioManagerCore/include/CAmRouter.h
index f62141a..bb889c3 100644
--- a/AudioManagerCore/include/CAmRouter.h
+++ b/AudioManagerCore/include/CAmRouter.h
@@ -36,343 +36,372 @@
namespace am
{
- /**
- * Optimal path search is implemented with graph which contains nodes - sinks, sources, gateways, converters.
- * The nodes are identified by sinkID, sourceID, gatewayID, converterID.
- * A possible connection between two nodes represents the facts that the nodes can be connected with one or more connectionFormats (Node[id=1] ---> Node[id=2]).
- * It is assumption that the two nodes can be connected. The controller itself decides later whether the connection is possible or not.
- *
- */
+/**
+ * Optimal path search is implemented with graph which contains nodes - sinks, sources, gateways, converters.
+ * The nodes are identified by sinkID, sourceID, gatewayID, converterID.
+ * A possible connection between two nodes represents the facts that the nodes can be connected with one or more connectionFormats (Node[id=1] ---> Node[id=2]).
+ * It is assumption that the two nodes can be connected. The controller itself decides later whether the connection is possible or not.
+ *
+ */
- /**
- * Trace on/off.
- */
+/**
+ * Trace on/off.
+ */
#undef TRACE_GRAPH
- /**
- * Max paths count returned to the controller
- */
+/**
+ * Max paths count returned to the controller
+ */
#ifndef MAX_ROUTING_PATHS
-#define MAX_ROUTING_PATHS 5
+# define MAX_ROUTING_PATHS 5
#endif
- /**
- * How many times the routing algorithm should look back into domains.
- *
- * 0 - no cycles are allowed
- * 1 - default is one cycle
- * ...
- * UINT_MAX - set this define to UINT_MAX in order to allow cycles.
- *
- */
+/**
+ * How many times the routing algorithm should look back into domains.
+ *
+ * 0 - no cycles are allowed
+ * 1 - default is one cycle
+ * ...
+ * UINT_MAX - set this define to UINT_MAX in order to allow cycles.
+ *
+ */
#ifndef MAX_ALLOWED_DOMAIN_CYCLES
-#define MAX_ALLOWED_DOMAIN_CYCLES 1
+# define MAX_ALLOWED_DOMAIN_CYCLES 1
#endif
- class CAmRouter;
+class CAmRouter;
- /**
- * A structure used as user data in the graph nodes.
- */
- struct am_RoutingNodeData_s
+/**
+ * A structure used as user data in the graph nodes.
+ */
+struct am_RoutingNodeData_s
+{
+ typedef enum : int
+ { SINK, SOURCE, GATEWAY, CONVERTER } am_NodeDataType_e;
+ am_NodeDataType_e type; //!< data type:sink, source, gateway or converter
+ union
{
- typedef enum:int
- { SINK, SOURCE, GATEWAY, CONVERTER
- } am_NodeDataType_e;
- am_NodeDataType_e type; //!< data type:sink, source, gateway or converter
- union
- {
- am_Source_s *source;
- am_Sink_s *sink;
- am_Gateway_s *gateway;
- am_Converter_s *converter;
- } data; //!< union pointer to sink, source, gateway or converter
-
- am_RoutingNodeData_s() :
- type(SINK)
- {
- }
+ am_Source_s *source;
+ am_Sink_s *sink;
+ am_Gateway_s *gateway;
+ am_Converter_s *converter;
+ } data; //!< union pointer to sink, source, gateway or converter
+
+ am_RoutingNodeData_s()
+ : type(SINK)
+ {
+ }
- bool operator==(const am_RoutingNodeData_s & anotherObject) const
+ bool operator==(const am_RoutingNodeData_s &anotherObject) const
+ {
+ bool result = false;
+ if (type == anotherObject.type)
{
- bool result = false;
- if (type == anotherObject.type)
+ result = true;
+ if (type == SINK)
{
- result = true;
- if (type == SINK)
- result &= (data.sink->sinkID == anotherObject.data.sink->sinkID);
- else if (type == SOURCE)
- result &= (data.source->sourceID == anotherObject.data.source->sourceID);
- else if (type == GATEWAY)
- result &= (data.gateway->gatewayID == anotherObject.data.gateway->gatewayID);
- else if (type == CONVERTER)
- result &= (data.converter->converterID == anotherObject.data.converter->converterID);
+ result &= (data.sink->sinkID == anotherObject.data.sink->sinkID);
}
- return result;
- }
- ;
-
-#ifdef TRACE_GRAPH
-#define COUT_NODE(HEAD, NAME, ID) \
- std::cout << HEAD << "(" << std::setfill('0') << std::setw(4) << ID << " " << NAME << ")"
-
- void trace() const
- {
- if(type==SINK)
- COUT_NODE("SI", data.sink->name, data.sink->sinkID );
- else if(type==SOURCE)
- COUT_NODE("SO", data.source->name, data.source->sourceID );
- else if(type==GATEWAY)
- COUT_NODE("GA", data.gateway->name, data.gateway->gatewayID );
- else if(type==CONVERTER)
- COUT_NODE("CO", data.converter->name, data.converter->converterID );
- };
-#endif
-
- am_domainID_t domainID() const
- {
- if (type == SINK)
- return data.sink->domainID;
else if (type == SOURCE)
- return data.source->domainID;
+ {
+ result &= (data.source->sourceID == anotherObject.data.source->sourceID);
+ }
else if (type == GATEWAY)
- return data.gateway->controlDomainID;
+ {
+ result &= (data.gateway->gatewayID == anotherObject.data.gateway->gatewayID);
+ }
else if (type == CONVERTER)
- return data.converter->domainID;
- return 0;
+ {
+ result &= (data.converter->converterID == anotherObject.data.converter->converterID);
+ }
}
- ;
- };
- typedef am_RoutingNodeData_s::am_NodeDataType_e CAmNodeDataType;
- typedef CAmNode<am_RoutingNodeData_s> CAmRoutingNode;
- typedef CAmGraph<am_RoutingNodeData_s, uint16_t> CAmRoutingGraph;
- typedef CAmVertex<am_RoutingNodeData_s, uint16_t> CAmRoutingVertex;
- typedef std::list<CAmRoutingVertex> CAmRoutingListVertices;
- typedef std::vector<CAmRoutingListVertices*> CAmRoutingVertexReferenceList;
+ return result;
+ }
- class CAmControlSender;
+#ifdef TRACE_GRAPH
+# define COUT_NODE(HEAD, NAME, ID) \
+ std::cout << HEAD << "(" << std::setfill('0') << std::setw(4) << ID << " " << NAME << ")"
- /**
- * Implements autorouting algorithm for connecting sinks and sources via different audio domains.
- */
- class CAmRouter: public CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks
+ void trace() const
{
- IAmDatabaseHandler* mpDatabaseHandler; //!< pointer to database handler
- CAmControlSender* mpControlSender; //!< pointer the controlsender - is used to retrieve information for the optimal route
- bool mUpdateGraphNodesAction; //!< Flag which marks whether the graph should be rebuild
- unsigned mMaxAllowedCycles; //!< max allowed cycles, default is 1
- unsigned mMaxPathCount; //!< max paths count returned to the controller, default is 5
- CAmRoutingGraph mRoutingGraph; //!< graph object
- std::map<am_domainID_t, std::vector<CAmRoutingNode*>> mNodeListSources; //!< map with pointers to nodes with sources, used for quick access
- std::map<am_domainID_t, std::vector<CAmRoutingNode*>> mNodeListSinks; //!< map with pointers to nodes with sinks, used for quick access
- std::map<am_domainID_t, std::vector<CAmRoutingNode*>> mNodeListGateways; //!< map with pointers to nodes with gateways, used for quick access
- std::map<am_domainID_t, std::vector<CAmRoutingNode*>> mNodeListConverters; //!< map with pointers to nodes with converters, used for quick access
-
- /**
- * Check whether given converter or gateway has been connected.
- *
- * @param comp converter or gateway .
- */
- template<class Component> bool isComponentConnected(const Component & comp)
+ if (type == SINK)
{
- return mpDatabaseHandler->isComponentConnected(comp);
+ COUT_NODE("SI", data.sink->name, data.sink->sinkID);
}
-
- /**
- * Connect all converters to its sink and sources if possible.
- *
- */
- void constructConverterConnections();
-
- /**
- * Connect all gateways to its sink and sources if possible.
- *
- */
- void constructGatewayConnections();
-
- /**
- * Connect all sources to the sinks if possible.
- *
- */
- void constructSourceSinkConnections();
-
- /**
- * Construct list with all vertices
- */
- void getVerticesForNode(const CAmRoutingNode & node, CAmRoutingListVertices & list);
-
- /**
- * Construct list with all vertices from given source.
- */
- void getVerticesForSource(const CAmRoutingNode & node, CAmRoutingListVertices & list);
-
- /**
- * Construct list with all vertices from given sink.
- */
- void getVerticesForSink(const CAmRoutingNode & node, CAmRoutingListVertices & list);
-
- /**
- * Construct list with all vertices from given converter.
- */
- void getVerticesForConverter(const CAmRoutingNode & node, CAmRoutingListVertices & list);
-
- /**
- * Construct list with all vertices from given gateway.
- */
- void getVerticesForGateway(const CAmRoutingNode & node, CAmRoutingListVertices & list);
-
- /**
- * Connection format permutations.
- *
- * @return E_OK on success(1 or more paths), E_NOT_POSSIBLE if the CF couldn't be matached or E_UNKNOWN in any other error case.
- */
- am_Error_e determineConnectionFormatsForPath(am_Route_s & routeObjects, std::vector<CAmRoutingNode*> & nodes, std::vector<am_Route_s> & result);
- am_Error_e doConnectionFormatsForPath(am_Route_s & routeObjects, std::vector<CAmRoutingNode*> & route,
- std::vector<am_RoutingElement_s>::iterator routingElementIterator, std::vector<CAmRoutingNode*>::iterator routeIterator,
- std::vector<am_Route_s> & result);
- am_Error_e cfPermutationsForPath(am_Route_s shortestRoute, std::vector<CAmRoutingNode*> resultNodesPath, std::vector<am_Route_s>& resultPath);
-
- /**
- * Helper method.
- */
- static int insertPostion(const std::vector<CAmRoutingNode*>& path, const std::vector<std::vector<CAmRoutingNode*> >& nodes);
-
- public:
- CAmRouter(IAmDatabaseHandler* iDatabaseHandler, CAmControlSender* iSender);
- ~CAmRouter();
-
- unsigned getMaxAllowedCycles()
+ else if (type == SOURCE)
+ {
+ COUT_NODE("SO", data.source->name, data.source->sourceID);
+ }
+ else if (type == GATEWAY)
{
- return mMaxAllowedCycles;
+ COUT_NODE("GA", data.gateway->name, data.gateway->gatewayID);
}
- void setMaxAllowedCycles(unsigned count)
+ else if (type == CONVERTER)
{
- mMaxAllowedCycles = count;
+ COUT_NODE("CO", data.converter->name, data.converter->converterID);
}
+ }
+#endif // ifdef TRACE_GRAPH
- unsigned getMaxPathCount()
+ am_domainID_t domainID() const
+ {
+ if (type == SINK)
{
- return mMaxPathCount;
+ return data.sink->domainID;
}
- void setMaxPathCount(unsigned count)
+ else if (type == SOURCE)
{
- mMaxPathCount = count;
+ return data.source->domainID;
}
-
- bool getUpdateGraphNodesAction()
+ else if (type == GATEWAY)
+ {
+ return data.gateway->controlDomainID;
+ }
+ else if (type == CONVERTER)
{
- return mUpdateGraphNodesAction;
+ return data.converter->domainID;
}
- /**
- * Find first mMaxPathCount paths between given source and sink. This method will call the method load() if the parameter mUpdateGraphNodesAction is set which will rebuild the graph.
- *
- * @param onlyfree only disconnected elements should be included or not.
- * @param sourceID start point.
- * @param sinkID end point.
- * @param returnList list with all possible paths
- * @return E_OK on success(1 or more paths), E_NOT_POSSIBLE if the CF couldn't be matached or E_UNKNOWN in any other error case.
- */
- am_Error_e getRoute(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector<am_Route_s>& returnList);
- am_Error_e getRoute(const bool onlyfree, const am_Source_s & source, const am_Sink_s & sink, std::vector<am_Route_s> & listRoutes);
-
- /**
- * Find first mMaxPathCount paths between given source and sink after the nodes have been loaded. This method doesn't call load().
- *
- * @param onlyfree only disconnected elements should be included or not.
- * @param sourceID start point.
- * @param sinkID end point.
- * @param returnList list with all possible paths
- * @return E_OK on success(1 or more paths), E_NOT_POSSIBLE if the CF couldn't be matached or E_UNKNOWN in any other error case.
- */
- am_Error_e getRouteFromLoadedNodes(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector<am_Route_s> & returnList);
- am_Error_e getRouteFromLoadedNodes(const bool onlyfree, const am_Source_s & aSource, const am_Sink_s & aSink, std::vector<am_Route_s> & listRoutes);
-
- /**
- * Find first mMaxPathCount paths between given source and sink. This method doesn't call load().
- *
- * @param onlyfree only disconnected elements should be included or not.
- * @param cycles allowed domain cycles.
- * @param maxPathCount max count of returned paths.
- * @param source start point.
- * @param sink end point.
- * @param returnList list with all possible paths.
- * @return E_OK on success(1 or more paths), E_NOT_POSSIBLE if the CF couldn't be matached or E_UNKNOWN in any other error case.
- */
- am_Error_e getFirstNShortestPaths(const bool onlyfree, const unsigned cycles, const unsigned maxPathCount, CAmRoutingNode & source,
- CAmRoutingNode & sink, std::vector<am_Route_s> & resultPath);
-
- /**
- * Find the shortest path between given source and sink. This method doesn't call load().
- * It goes through all possible paths and returns the shortest of them.
- *
- * @param source start point.
- * @param sink end point.
- * @param returnList list with the connection format permutations of the shortest path.
- * @return E_OK on success(1 or more paths), E_NOT_POSSIBLE if the CF couldn't be matached or E_UNKNOWN in any other error case.
- */
- am_Error_e getShortestPath(CAmRoutingNode & source, CAmRoutingNode & sink, std::vector<am_Route_s> & resultPath);
-
- static bool getAllowedFormatsFromConvMatrix(const std::vector<bool> & convertionMatrix,
- const std::vector<am_CustomConnectionFormat_t> & listSourceFormats, const std::vector<am_CustomConnectionFormat_t> & listSinkFormats,
- std::vector<am_CustomConnectionFormat_t> & sourceFormats, std::vector<am_CustomConnectionFormat_t> & sinkFormats);
- static void listPossibleConnectionFormats(std::vector<am_CustomConnectionFormat_t> & inListSourceFormats,
- std::vector<am_CustomConnectionFormat_t> & inListSinkFormats, std::vector<am_CustomConnectionFormat_t> & outListFormats);
- static bool getRestrictedOutputFormats(const std::vector<bool> & convertionMatrix, const std::vector<am_CustomConnectionFormat_t> & listSourceFormats,
- const std::vector<am_CustomConnectionFormat_t> & listSinkFormats, const am_CustomConnectionFormat_t connectionFormat,
- std::vector<am_CustomConnectionFormat_t> & listFormats);
- static am_Error_e getSourceSinkPossibleConnectionFormats(std::vector<CAmRoutingNode*>::iterator iteratorSource,
- std::vector<CAmRoutingNode*>::iterator iteratorSink, std::vector<am_CustomConnectionFormat_t> & outConnectionFormats);
-
- static bool shouldGoInDomain(const std::vector<am_domainID_t> & visitedDomains, const am_domainID_t nodeDomainID, const unsigned maxCyclesNumber);
- bool shouldGoInDomain(const std::vector<am_domainID_t> & visitedDomains, const am_domainID_t nodeDomainID);
- /**
- * Returns a sink node with given sinkID.
- *
- * @param sinkID sink id.
- * @return pointer to node or NULL.
- */
- CAmRoutingNode* sinkNodeWithID(const am_sinkID_t sinkID);
- CAmRoutingNode* sinkNodeWithID(const am_sinkID_t sinkID, const am_domainID_t domainID);
-
- /**
- * Returns a source node with given sourceID.
- *
- * @param sourceID source id.
- * @return pointer to node or NULL.
- */
- CAmRoutingNode* sourceNodeWithID(const am_sourceID_t sourceID);
- CAmRoutingNode* sourceNodeWithID(const am_sourceID_t sourceID, const am_domainID_t domainID);
-
- /**
- * Returns a converter node for given sinkID.
- *
- * @param sinkID sink id.
- * @param domainID domain id.
- * @return pointer to node or NULL.
- */
- CAmRoutingNode* converterNodeWithSinkID(const am_sinkID_t sinkID, const am_domainID_t domainID);
-
- /**
- * Returns a gateway node for given sinkID.
- *
- * @param sinkID sink id.
- * @return pointer to node or NULL.
- */
- CAmRoutingNode* gatewayNodeWithSinkID(const am_sinkID_t sinkID);
-
- void load();
- void clear();
-
- /**
- * DEPRECATED!
- */
- public:
- am_Error_e getAllPaths(CAmRoutingNode & aSource, CAmRoutingNode & aSink, std::vector<am_Route_s> & resultPath,
- std::vector<std::vector<CAmRoutingNode*>> & resultNodesPath, const bool includeCycles = false,
- const bool onlyFree = false)
- __attribute__((deprecated("You should use am_Error_e getFirstNShortestPaths(const bool onlyFree, CAmRoutingNode &, CAmRoutingNode &, std::vector<am_Route_s> &) instead!")));
- };
+ return 0;
+ }
+
+};
+
+typedef am_RoutingNodeData_s::am_NodeDataType_e CAmNodeDataType;
+typedef CAmNode<am_RoutingNodeData_s> CAmRoutingNode;
+typedef CAmGraph<am_RoutingNodeData_s, uint16_t> CAmRoutingGraph;
+typedef CAmVertex<am_RoutingNodeData_s, uint16_t> CAmRoutingVertex;
+typedef std::list<CAmRoutingVertex> CAmRoutingListVertices;
+typedef std::vector<CAmRoutingListVertices *> CAmRoutingVertexReferenceList;
+
+class CAmControlSender;
+
+/**
+ * Implements autorouting algorithm for connecting sinks and sources via different audio domains.
+ */
+class CAmRouter : public CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks
+{
+ IAmDatabaseHandler *mpDatabaseHandler; //!< pointer to database handler
+ CAmControlSender *mpControlSender; //!< pointer the controlsender - is used to retrieve information for the optimal route
+ bool mUpdateGraphNodesAction; //!< Flag which marks whether the graph should be rebuild
+ unsigned mMaxAllowedCycles; //!< max allowed cycles, default is 1
+ unsigned mMaxPathCount; //!< max paths count returned to the controller, default is 5
+ CAmRoutingGraph mRoutingGraph; //!< graph object
+ std::map<am_domainID_t, std::vector<CAmRoutingNode *> > mNodeListSources; //!< map with pointers to nodes with sources, used for quick access
+ std::map<am_domainID_t, std::vector<CAmRoutingNode *> > mNodeListSinks; //!< map with pointers to nodes with sinks, used for quick access
+ std::map<am_domainID_t, std::vector<CAmRoutingNode *> > mNodeListGateways; //!< map with pointers to nodes with gateways, used for quick access
+ std::map<am_domainID_t, std::vector<CAmRoutingNode *> > mNodeListConverters; //!< map with pointers to nodes with converters, used for quick access
+
+ /**
+ * Check whether given converter or gateway has been connected.
+ *
+ * @param comp converter or gateway .
+ */
+ template<class Component>
+ bool isComponentConnected(const Component &comp)
+ {
+ return mpDatabaseHandler->isComponentConnected(comp);
+ }
+
+ /**
+ * Connect all converters to its sink and sources if possible.
+ *
+ */
+ void constructConverterConnections();
+
+ /**
+ * Connect all gateways to its sink and sources if possible.
+ *
+ */
+ void constructGatewayConnections();
+
+ /**
+ * Connect all sources to the sinks if possible.
+ *
+ */
+ void constructSourceSinkConnections();
+
+ /**
+ * Construct list with all vertices
+ */
+ void getVerticesForNode(const CAmRoutingNode &node, CAmRoutingListVertices &list);
+
+ /**
+ * Construct list with all vertices from given source.
+ */
+ void getVerticesForSource(const CAmRoutingNode &node, CAmRoutingListVertices &list);
+
+ /**
+ * Construct list with all vertices from given sink.
+ */
+ void getVerticesForSink(const CAmRoutingNode &node, CAmRoutingListVertices &list);
+
+ /**
+ * Construct list with all vertices from given converter.
+ */
+ void getVerticesForConverter(const CAmRoutingNode &node, CAmRoutingListVertices &list);
+
+ /**
+ * Construct list with all vertices from given gateway.
+ */
+ void getVerticesForGateway(const CAmRoutingNode &node, CAmRoutingListVertices &list);
+
+ /**
+ * Connection format permutations.
+ *
+ * @return E_OK on success(1 or more paths), E_NOT_POSSIBLE if the CF couldn't be matached or E_UNKNOWN in any other error case.
+ */
+ am_Error_e determineConnectionFormatsForPath(am_Route_s &routeObjects, std::vector<CAmRoutingNode *> &nodes, std::vector<am_Route_s> &result);
+ am_Error_e doConnectionFormatsForPath(am_Route_s &routeObjects, std::vector<CAmRoutingNode *> &route,
+ std::vector<am_RoutingElement_s>::iterator routingElementIterator, std::vector<CAmRoutingNode *>::iterator routeIterator,
+ std::vector<am_Route_s> &result);
+ am_Error_e cfPermutationsForPath(am_Route_s shortestRoute, std::vector<CAmRoutingNode *> resultNodesPath, std::vector<am_Route_s> &resultPath);
+
+ /**
+ * Helper method.
+ */
+ static int insertPostion(const std::vector<CAmRoutingNode *> &path, const std::vector<std::vector<CAmRoutingNode *> > &nodes);
+
+public:
+ CAmRouter(IAmDatabaseHandler *iDatabaseHandler, CAmControlSender *iSender);
+ ~CAmRouter();
+
+ unsigned getMaxAllowedCycles()
+ {
+ return mMaxAllowedCycles;
+ }
+
+ void setMaxAllowedCycles(unsigned count)
+ {
+ mMaxAllowedCycles = count;
+ }
+
+ unsigned getMaxPathCount()
+ {
+ return mMaxPathCount;
+ }
+
+ void setMaxPathCount(unsigned count)
+ {
+ mMaxPathCount = count;
+ }
+
+ bool getUpdateGraphNodesAction()
+ {
+ return mUpdateGraphNodesAction;
+ }
+
+ /**
+ * Find first mMaxPathCount paths between given source and sink. This method will call the method load() if the parameter mUpdateGraphNodesAction is set which will rebuild the graph.
+ *
+ * @param onlyfree only disconnected elements should be included or not.
+ * @param sourceID start point.
+ * @param sinkID end point.
+ * @param returnList list with all possible paths
+ * @return E_OK on success(1 or more paths), E_NOT_POSSIBLE if the CF couldn't be matached or E_UNKNOWN in any other error case.
+ */
+ am_Error_e getRoute(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector<am_Route_s> &returnList);
+ am_Error_e getRoute(const bool onlyfree, const am_Source_s &source, const am_Sink_s &sink, std::vector<am_Route_s> &listRoutes);
+
+ /**
+ * Find first mMaxPathCount paths between given source and sink after the nodes have been loaded. This method doesn't call load().
+ *
+ * @param onlyfree only disconnected elements should be included or not.
+ * @param sourceID start point.
+ * @param sinkID end point.
+ * @param returnList list with all possible paths
+ * @return E_OK on success(1 or more paths), E_NOT_POSSIBLE if the CF couldn't be matached or E_UNKNOWN in any other error case.
+ */
+ am_Error_e getRouteFromLoadedNodes(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector<am_Route_s> &returnList);
+ am_Error_e getRouteFromLoadedNodes(const bool onlyfree, const am_Source_s &aSource, const am_Sink_s &aSink, std::vector<am_Route_s> &listRoutes);
+
+ /**
+ * Find first mMaxPathCount paths between given source and sink. This method doesn't call load().
+ *
+ * @param onlyfree only disconnected elements should be included or not.
+ * @param cycles allowed domain cycles.
+ * @param maxPathCount max count of returned paths.
+ * @param source start point.
+ * @param sink end point.
+ * @param returnList list with all possible paths.
+ * @return E_OK on success(1 or more paths), E_NOT_POSSIBLE if the CF couldn't be matached or E_UNKNOWN in any other error case.
+ */
+ am_Error_e getFirstNShortestPaths(const bool onlyfree, const unsigned cycles, const unsigned maxPathCount, CAmRoutingNode &source,
+ CAmRoutingNode &sink, std::vector<am_Route_s> &resultPath);
+
+ /**
+ * Find the shortest path between given source and sink. This method doesn't call load().
+ * It goes through all possible paths and returns the shortest of them.
+ *
+ * @param source start point.
+ * @param sink end point.
+ * @param returnList list with the connection format permutations of the shortest path.
+ * @return E_OK on success(1 or more paths), E_NOT_POSSIBLE if the CF couldn't be matached or E_UNKNOWN in any other error case.
+ */
+ am_Error_e getShortestPath(CAmRoutingNode &source, CAmRoutingNode &sink, std::vector<am_Route_s> &resultPath);
+
+ static bool getAllowedFormatsFromConvMatrix(const std::vector<bool> &convertionMatrix,
+ const std::vector<am_CustomConnectionFormat_t> &listSourceFormats, const std::vector<am_CustomConnectionFormat_t> &listSinkFormats,
+ std::vector<am_CustomConnectionFormat_t> &sourceFormats, std::vector<am_CustomConnectionFormat_t> &sinkFormats);
+ static void listPossibleConnectionFormats(std::vector<am_CustomConnectionFormat_t> &inListSourceFormats,
+ std::vector<am_CustomConnectionFormat_t> &inListSinkFormats, std::vector<am_CustomConnectionFormat_t> &outListFormats);
+ static bool getRestrictedOutputFormats(const std::vector<bool> &convertionMatrix, const std::vector<am_CustomConnectionFormat_t> &listSourceFormats,
+ const std::vector<am_CustomConnectionFormat_t> &listSinkFormats, const am_CustomConnectionFormat_t connectionFormat,
+ std::vector<am_CustomConnectionFormat_t> &listFormats);
+ static am_Error_e getSourceSinkPossibleConnectionFormats(std::vector<CAmRoutingNode *>::iterator iteratorSource,
+ std::vector<CAmRoutingNode *>::iterator iteratorSink, std::vector<am_CustomConnectionFormat_t> &outConnectionFormats);
+
+ static bool shouldGoInDomain(const std::vector<am_domainID_t> &visitedDomains, const am_domainID_t nodeDomainID, const unsigned maxCyclesNumber);
+ bool shouldGoInDomain(const std::vector<am_domainID_t> &visitedDomains, const am_domainID_t nodeDomainID);
+
+ /**
+ * Returns a sink node with given sinkID.
+ *
+ * @param sinkID sink id.
+ * @return pointer to node or NULL.
+ */
+ CAmRoutingNode *sinkNodeWithID(const am_sinkID_t sinkID);
+ CAmRoutingNode *sinkNodeWithID(const am_sinkID_t sinkID, const am_domainID_t domainID);
+
+ /**
+ * Returns a source node with given sourceID.
+ *
+ * @param sourceID source id.
+ * @return pointer to node or NULL.
+ */
+ CAmRoutingNode *sourceNodeWithID(const am_sourceID_t sourceID);
+ CAmRoutingNode *sourceNodeWithID(const am_sourceID_t sourceID, const am_domainID_t domainID);
+
+ /**
+ * Returns a converter node for given sinkID.
+ *
+ * @param sinkID sink id.
+ * @param domainID domain id.
+ * @return pointer to node or NULL.
+ */
+ CAmRoutingNode *converterNodeWithSinkID(const am_sinkID_t sinkID, const am_domainID_t domainID);
+
+ /**
+ * Returns a gateway node for given sinkID.
+ *
+ * @param sinkID sink id.
+ * @return pointer to node or NULL.
+ */
+ CAmRoutingNode *gatewayNodeWithSinkID(const am_sinkID_t sinkID);
+
+ void load();
+ void clear();
+
+ /**
+ * DEPRECATED!
+ */
+public:
+ am_Error_e getAllPaths(CAmRoutingNode &aSource, CAmRoutingNode &aSink, std::vector<am_Route_s> &resultPath,
+ std::vector<std::vector<CAmRoutingNode *> > &resultNodesPath, const bool includeCycles = false,
+ const bool onlyFree = false)
+ __attribute__((deprecated("You should use am_Error_e getFirstNShortestPaths(const bool onlyFree, CAmRoutingNode &, CAmRoutingNode &, std::vector<am_Route_s> &) instead!")));
+
+};
+
} /* namespace am */
#endif /* ROUTER_H_ */
-
diff --git a/AudioManagerCore/include/CAmRoutingReceiver.h b/AudioManagerCore/include/CAmRoutingReceiver.h
index e8f464f..42f3e89 100644
--- a/AudioManagerCore/include/CAmRoutingReceiver.h
+++ b/AudioManagerCore/include/CAmRoutingReceiver.h
@@ -38,7 +38,7 @@ class CAmControlSender;
/**
* Implements the Receiving side of the RoutingPlugins.
*/
-class CAmRoutingReceiver: public IAmRoutingReceive
+class CAmRoutingReceiver : public IAmRoutingReceive
{
public:
CAmRoutingReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmRoutingSender *iRoutingSender, CAmControlSender *iControlSender, CAmSocketHandler *iSocketHandler);
@@ -56,47 +56,47 @@ public:
void ackCrossFading(const am_Handle_s handle, const am_HotSink_e hotSink, const am_Error_e error);
void ackSourceVolumeTick(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume);
void ackSinkVolumeTick(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume);
- am_Error_e peekDomain(const std::string& name, am_domainID_t& domainID);
- am_Error_e registerDomain(const am_Domain_s& domainData, am_domainID_t& domainID);
+ am_Error_e peekDomain(const std::string &name, am_domainID_t &domainID);
+ am_Error_e registerDomain(const am_Domain_s &domainData, am_domainID_t &domainID);
am_Error_e deregisterDomain(const am_domainID_t domainID);
- am_Error_e registerGateway(const am_Gateway_s& gatewayData, am_gatewayID_t& gatewayID);
- am_Error_e registerConverter(const am_Converter_s& converterData, am_converterID_t& converterID);
+ am_Error_e registerGateway(const am_Gateway_s &gatewayData, am_gatewayID_t &gatewayID);
+ am_Error_e registerConverter(const am_Converter_s &converterData, am_converterID_t &converterID);
am_Error_e deregisterGateway(const am_gatewayID_t gatewayID);
am_Error_e deregisterConverter(const am_converterID_t converterID);
- am_Error_e peekSink(const std::string& name, am_sinkID_t& sinkID);
- am_Error_e registerSink(const am_Sink_s& sinkData, am_sinkID_t& sinkID);
+ am_Error_e peekSink(const std::string &name, am_sinkID_t &sinkID);
+ am_Error_e registerSink(const am_Sink_s &sinkData, am_sinkID_t &sinkID);
am_Error_e deregisterSink(const am_sinkID_t sinkID);
- am_Error_e peekSource(const std::string& name, am_sourceID_t& sourceID);
- am_Error_e registerSource(const am_Source_s& sourceData, am_sourceID_t& sourceID);
+ am_Error_e peekSource(const std::string &name, am_sourceID_t &sourceID);
+ am_Error_e registerSource(const am_Source_s &sourceData, am_sourceID_t &sourceID);
am_Error_e deregisterSource(const am_sourceID_t sourceID);
- am_Error_e registerCrossfader(const am_Crossfader_s& crossfaderData, am_crossfaderID_t& crossfaderID);
+ am_Error_e registerCrossfader(const am_Crossfader_s &crossfaderData, am_crossfaderID_t &crossfaderID);
am_Error_e deregisterCrossfader(const am_crossfaderID_t crossfaderID);
- am_Error_e peekSourceClassID(const std::string& name, am_sourceClass_t& sourceClassID);
- am_Error_e peekSinkClassID(const std::string& name, am_sinkClass_t& sinkClassID);
+ am_Error_e peekSourceClassID(const std::string &name, am_sourceClass_t &sourceClassID);
+ am_Error_e peekSinkClassID(const std::string &name, am_sinkClass_t &sinkClassID);
void hookInterruptStatusChange(const am_sourceID_t sourceID, const am_InterruptState_e interruptState);
void hookDomainRegistrationComplete(const am_domainID_t domainID);
- void hookSinkAvailablityStatusChange(const am_sinkID_t sinkID, const am_Availability_s& availability);
- void hookSourceAvailablityStatusChange(const am_sourceID_t sourceID, const am_Availability_s& availability);
+ void hookSinkAvailablityStatusChange(const am_sinkID_t sinkID, const am_Availability_s &availability);
+ void hookSourceAvailablityStatusChange(const am_sourceID_t sourceID, const am_Availability_s &availability);
void hookDomainStateChange(const am_domainID_t domainID, const am_DomainState_e domainState);
void hookTimingInformationChanged(const am_connectionID_t connectionID, const am_timeSync_t delay);
- void sendChangedData(const std::vector<am_EarlyData_s>& earlyData);
- am_Error_e getDBusConnectionWrapper(CAmDbusWrapper*& dbusConnectionWrapper) const;
- am_Error_e getSocketHandler(CAmSocketHandler*& socketHandler) const;
- void getInterfaceVersion(std::string& version) const;
+ void sendChangedData(const std::vector<am_EarlyData_s> &earlyData);
+ am_Error_e getDBusConnectionWrapper(CAmDbusWrapper * &dbusConnectionWrapper) const;
+ am_Error_e getSocketHandler(CAmSocketHandler * &socketHandler) const;
+ void getInterfaceVersion(std::string &version) const;
void confirmRoutingReady(const uint16_t handle, const am_Error_e error);
void confirmRoutingRundown(const uint16_t handle, const am_Error_e error);
- 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) ;
- 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);
- 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) ;
- 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) ;
- void ackSetVolumes(const am_Handle_s handle, const std::vector<am_Volumes_s>& listvolumes, const am_Error_e error) ;
- void ackSinkNotificationConfiguration(const am_Handle_s handle, const am_Error_e error) ;
- void ackSourceNotificationConfiguration(const am_Handle_s handle, const am_Error_e error) ;
- void hookSinkNotificationDataChange(const am_sinkID_t sinkID, const am_NotificationPayload_s& payload) ;
- void hookSourceNotificationDataChange(const am_sourceID_t sourceID, const am_NotificationPayload_s& payload) ;
- am_Error_e getDomainOfSink(const am_sinkID_t sinkID, am_domainID_t& domainID) const;
- am_Error_e getDomainOfSource(const am_sourceID_t sourceID, am_domainID_t& domainID) const;
- am_Error_e getDomainOfCrossfader(const am_crossfaderID_t crossfader, am_domainID_t& domainID) const;
+ 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);
+ 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);
+ 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);
+ 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);
+ void ackSetVolumes(const am_Handle_s handle, const std::vector<am_Volumes_s> &listvolumes, const am_Error_e error);
+ void ackSinkNotificationConfiguration(const am_Handle_s handle, const am_Error_e error);
+ void ackSourceNotificationConfiguration(const am_Handle_s handle, const am_Error_e error);
+ void hookSinkNotificationDataChange(const am_sinkID_t sinkID, const am_NotificationPayload_s &payload);
+ void hookSourceNotificationDataChange(const am_sourceID_t sourceID, const am_NotificationPayload_s &payload);
+ am_Error_e getDomainOfSink(const am_sinkID_t sinkID, am_domainID_t &domainID) const;
+ am_Error_e getDomainOfSource(const am_sourceID_t sourceID, am_domainID_t &domainID) const;
+ am_Error_e getDomainOfCrossfader(const am_crossfaderID_t crossfader, am_domainID_t &domainID) const;
uint16_t getStartupHandle(); //!< returns a startup handle
uint16_t getRundownHandle(); //!< returns a rundown handle
@@ -105,23 +105,23 @@ public:
void waitOnRundown(bool rundown); //!< tells the RoutingReceiver to start waiting for all handles to be confirmed
private:
-
- void handleCallback(const am_Handle_s handle, const am_Error_e error);
- IAmDatabaseHandler *mpDatabaseHandler; //!< pointer to the databaseHandler
- CAmRoutingSender *mpRoutingSender; //!< pointer to the routingSender
- CAmControlSender *mpControlSender; //!< pointer to the controlSender
- CAmSocketHandler *mpSocketHandler; //!< pointer to sockethandler
- CAmDbusWrapper *mpDBusWrapper; //!< pointer to dbuswrapper
+ void handleCallback(const am_Handle_s handle, const am_Error_e error);
+
+ IAmDatabaseHandler *mpDatabaseHandler; //!< pointer to the databaseHandler
+ CAmRoutingSender *mpRoutingSender; //!< pointer to the routingSender
+ CAmControlSender *mpControlSender; //!< pointer to the controlSender
+ CAmSocketHandler *mpSocketHandler; //!< pointer to sockethandler
+ CAmDbusWrapper *mpDBusWrapper; //!< pointer to dbuswrapper
std::vector<uint16_t> mListStartupHandles; //!< list of handles that wait for a confirm
std::vector<uint16_t> mListRundownHandles; //!< list of handles that wait for a confirm
- uint16_t handleCount; //!< counts all handles
- bool mWaitStartup; //!< if true confirmation will be sent if list of handles = 0
- bool mWaitRundown; //!< if true confirmation will be sent if list of handles = 0
+ uint16_t handleCount; //!< counts all handles
+ bool mWaitStartup; //!< if true confirmation will be sent if list of handles = 0
+ bool mWaitRundown; //!< if true confirmation will be sent if list of handles = 0
- am_Error_e mLastStartupError;
- am_Error_e mLastRundownError;
+ am_Error_e mLastStartupError;
+ am_Error_e mLastRundownError;
};
diff --git a/AudioManagerCore/include/CAmRoutingSender.h b/AudioManagerCore/include/CAmRoutingSender.h
index e14dd6d..39b5c23 100644
--- a/AudioManagerCore/include/CAmRoutingSender.h
+++ b/AudioManagerCore/include/CAmRoutingSender.h
@@ -28,8 +28,8 @@
#include <map>
#include <memory>
-#ifdef UNIT_TEST //this is needed to test RoutingSender
-#include "../test/IAmRoutingBackdoor.h"
+#ifdef UNIT_TEST // this is needed to test RoutingSender
+# include "../test/IAmRoutingBackdoor.h"
#endif
#include "CAmDatabaseHandlerMap.h"
@@ -42,292 +42,309 @@ class CAmRoutingReceiver;
/**
* Implements the RoutingSendInterface. Loads all plugins and dispatches calls to the plugins
*/
-class CAmRoutingSender: public CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks
+class CAmRoutingSender : public CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks
{
public:
- CAmRoutingSender(const std::vector<std::string>& listOfPluginDirectories, IAmDatabaseHandler* databaseHandler);
+ CAmRoutingSender(const std::vector<std::string> &listOfPluginDirectories, IAmDatabaseHandler *databaseHandler);
~CAmRoutingSender();
- am_Error_e removeHandle(const am_Handle_s& handle);
- am_Error_e addDomainLookup(const am_Domain_s& domainData);
- am_Error_e addSourceLookup(const am_Source_s& sourceData);
- am_Error_e addSinkLookup(const am_Sink_s& sinkData);
- am_Error_e addCrossfaderLookup(const am_Crossfader_s& crossfaderData);
+ am_Error_e removeHandle(const am_Handle_s &handle);
+ am_Error_e addDomainLookup(const am_Domain_s &domainData);
+ am_Error_e addSourceLookup(const am_Source_s &sourceData);
+ am_Error_e addSinkLookup(const am_Sink_s &sinkData);
+ am_Error_e addCrossfaderLookup(const am_Crossfader_s &crossfaderData);
am_Error_e removeDomainLookup(const am_domainID_t domainID);
am_Error_e removeSourceLookup(const am_sourceID_t sourceID);
am_Error_e removeSinkLookup(const am_sinkID_t sinkID);
am_Error_e removeCrossfaderLookup(const am_crossfaderID_t crossfaderID);
am_Error_e removeConnectionLookup(const am_connectionID_t connectionID);
- am_Error_e startupInterfaces(CAmRoutingReceiver* iRoutingReceiver);
+ am_Error_e startupInterfaces(CAmRoutingReceiver *iRoutingReceiver);
void setRoutingReady();
void setRoutingRundown();
- am_Error_e asyncAbort(const am_Handle_s& handle);
- am_Error_e asyncConnect(am_Handle_s& handle, am_connectionID_t& connectionID, const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_CustomConnectionFormat_t connectionFormat);
- am_Error_e asyncDisconnect(am_Handle_s& handle, const am_connectionID_t connectionID);
- am_Error_e asyncSetSinkVolume(am_Handle_s& handle, const am_sinkID_t sinkID, const am_volume_t volume, const am_CustomRampType_t ramp, const am_time_t time);
- am_Error_e asyncSetSourceVolume(am_Handle_s& handle, const am_sourceID_t sourceID, const am_volume_t volume, const am_CustomRampType_t ramp, const am_time_t time);
- am_Error_e asyncSetSourceState(am_Handle_s& handle, const am_sourceID_t sourceID, const am_SourceState_e state);
- am_Error_e asyncSetSinkSoundProperty(am_Handle_s& handle, const am_sinkID_t sinkID, const am_SoundProperty_s& soundProperty);
- am_Error_e asyncSetSourceSoundProperties(am_Handle_s& handle, const std::vector<am_SoundProperty_s>& listSoundProperties, const am_sourceID_t sourceID);
- am_Error_e asyncSetSinkSoundProperties(am_Handle_s& handle, const std::vector<am_SoundProperty_s>& listSoundProperties, const am_sinkID_t sinkID);
- am_Error_e asyncSetSourceSoundProperty(am_Handle_s& handle, const am_sourceID_t sourceID, const am_SoundProperty_s& soundProperty);
- am_Error_e asyncCrossFade(am_Handle_s& handle, const am_crossfaderID_t crossfaderID, const am_HotSink_e hotSink, const am_CustomRampType_t rampType, const am_time_t time);
+ am_Error_e asyncAbort(const am_Handle_s &handle);
+ am_Error_e asyncConnect(am_Handle_s &handle, am_connectionID_t &connectionID, const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_CustomConnectionFormat_t connectionFormat);
+ am_Error_e asyncDisconnect(am_Handle_s &handle, const am_connectionID_t connectionID);
+ am_Error_e asyncSetSinkVolume(am_Handle_s &handle, const am_sinkID_t sinkID, const am_volume_t volume, const am_CustomRampType_t ramp, const am_time_t time);
+ am_Error_e asyncSetSourceVolume(am_Handle_s &handle, const am_sourceID_t sourceID, const am_volume_t volume, const am_CustomRampType_t ramp, const am_time_t time);
+ am_Error_e asyncSetSourceState(am_Handle_s &handle, const am_sourceID_t sourceID, const am_SourceState_e state);
+ am_Error_e asyncSetSinkSoundProperty(am_Handle_s &handle, const am_sinkID_t sinkID, const am_SoundProperty_s &soundProperty);
+ am_Error_e asyncSetSourceSoundProperties(am_Handle_s &handle, const std::vector<am_SoundProperty_s> &listSoundProperties, const am_sourceID_t sourceID);
+ am_Error_e asyncSetSinkSoundProperties(am_Handle_s &handle, const std::vector<am_SoundProperty_s> &listSoundProperties, const am_sinkID_t sinkID);
+ am_Error_e asyncSetSourceSoundProperty(am_Handle_s &handle, const am_sourceID_t sourceID, const am_SoundProperty_s &soundProperty);
+ am_Error_e asyncCrossFade(am_Handle_s &handle, const am_crossfaderID_t crossfaderID, const am_HotSink_e hotSink, const am_CustomRampType_t rampType, const am_time_t time);
am_Error_e setDomainState(const am_domainID_t domainID, const am_DomainState_e domainState);
- am_Error_e getListHandles(std::vector<am_Handle_s> & listHandles) const;
- am_Error_e getListPlugins(std::vector<std::string>& interfaces) const;
- void getInterfaceVersion(std::string& version) const;
- am_Error_e asyncSetVolumes(am_Handle_s& handle, const std::vector<am_Volumes_s>& listVolumes);
- am_Error_e asyncSetSinkNotificationConfiguration(am_Handle_s& handle, const am_sinkID_t sinkID, const am_NotificationConfiguration_s& notificationConfiguration);
- am_Error_e asyncSetSourceNotificationConfiguration(am_Handle_s& handle, const am_sourceID_t sourceID, const am_NotificationConfiguration_s& notificationConfiguration);
- am_Error_e resyncConnectionState(const am_domainID_t domainID, std::vector<am_Connection_s>& listOfExistingConnections);
+ am_Error_e getListHandles(std::vector<am_Handle_s> &listHandles) const;
+ am_Error_e getListPlugins(std::vector<std::string> &interfaces) const;
+ void getInterfaceVersion(std::string &version) const;
+ am_Error_e asyncSetVolumes(am_Handle_s &handle, const std::vector<am_Volumes_s> &listVolumes);
+ am_Error_e asyncSetSinkNotificationConfiguration(am_Handle_s &handle, const am_sinkID_t sinkID, const am_NotificationConfiguration_s &notificationConfiguration);
+ am_Error_e asyncSetSourceNotificationConfiguration(am_Handle_s &handle, const am_sourceID_t sourceID, const am_NotificationConfiguration_s &notificationConfiguration);
+ am_Error_e resyncConnectionState(const am_domainID_t domainID, std::vector<am_Connection_s> &listOfExistingConnections);
struct InterfaceNamePairs //!< is used to pair interfaces with busnames
{
- IAmRoutingSend* routingInterface; //!< pointer to the routingInterface
- std::string busName; //!< the busname
+ IAmRoutingSend *routingInterface; //!< pointer to the routingInterface
+ std::string busName; //!< the busname
};
-
+
class handleDataBase
{
- public:
- handleDataBase(IAmRoutingSend* interface, IAmDatabaseHandler* databaseHandler) : mInterface(interface), mpDatabaseHandler(databaseHandler) {}
- virtual ~handleDataBase() {}
- virtual am_Error_e writeDataToDatabase()=0; //!< function to write the handle data to the database
- IAmRoutingSend* returnInterface() {return mInterface;}
- private:
- IAmRoutingSend* mInterface;
- protected:
- IAmDatabaseHandler* mpDatabaseHandler;
- };
-
- class handleVolumeBase : public handleDataBase
- {
- public:
- handleVolumeBase(IAmRoutingSend* interface, IAmDatabaseHandler* databaseHandler,am_volume_t volume) :
- handleDataBase(interface,databaseHandler)
- ,mVolume(volume) {}
- virtual ~handleVolumeBase(){}
- am_volume_t returnVolume() { return mVolume; }
- private:
- am_volume_t mVolume;
- };
-
- class handleSinkSoundProperty : public handleDataBase
- {
- public:
- handleSinkSoundProperty(IAmRoutingSend* interface,const am_sinkID_t sinkID, const am_SoundProperty_s& soundProperty, IAmDatabaseHandler* databaseHandler) :
- handleDataBase(interface,databaseHandler)
- ,mSinkID(sinkID)
- ,mSoundProperty(soundProperty) {}
- ~handleSinkSoundProperty() {}
- am_Error_e writeDataToDatabase();
- private:
- am_sinkID_t mSinkID;
- am_SoundProperty_s mSoundProperty;
- };
-
- class handleSinkSoundProperties : public handleDataBase
- {
- public:
- handleSinkSoundProperties(IAmRoutingSend* interface,const am_sinkID_t sinkID, const std::vector<am_SoundProperty_s>& listSoundProperties, IAmDatabaseHandler* databaseHandler) :
- handleDataBase(interface,databaseHandler)
- ,mSinkID(sinkID)
- ,mlistSoundProperties(listSoundProperties) {}
- ~handleSinkSoundProperties() {}
- am_Error_e writeDataToDatabase();
- private:
- am_sinkID_t mSinkID;
- std::vector<am_SoundProperty_s> mlistSoundProperties;
- };
-
- class handleSourceSoundProperty : public handleDataBase
- {
- public:
- handleSourceSoundProperty(IAmRoutingSend* interface,const am_sourceID_t sourceID, const am_SoundProperty_s& soundProperty, IAmDatabaseHandler* databaseHandler) :
- handleDataBase(interface,databaseHandler)
- ,mSourceID(sourceID)
- ,mSoundProperty(soundProperty) {}
- ~handleSourceSoundProperty() {}
- am_Error_e writeDataToDatabase();
- private:
- am_sourceID_t mSourceID;
- am_SoundProperty_s mSoundProperty;
- };
-
- class handleSourceSoundProperties : public handleDataBase
- {
- public:
- handleSourceSoundProperties(IAmRoutingSend* interface,const am_sourceID_t sourceID, const std::vector<am_SoundProperty_s>& listSoundProperties, IAmDatabaseHandler* databaseHandler) :
- handleDataBase(interface,databaseHandler)
- ,mSourceID(sourceID)
- ,mlistSoundProperties(listSoundProperties) {}
- ~handleSourceSoundProperties(){}
- am_Error_e writeDataToDatabase();
- private:
- am_sourceID_t mSourceID;
- std::vector<am_SoundProperty_s> mlistSoundProperties;
- };
-
- class handleSourceState : public handleDataBase
- {
- public:
- handleSourceState(IAmRoutingSend* interface,const am_sourceID_t sourceID, const am_SourceState_e& state, IAmDatabaseHandler* databaseHandler) :
- handleDataBase(interface,databaseHandler)
- ,mSourceID(sourceID)
- ,mSourceState(state) {}
- ~handleSourceState() {}
- am_Error_e writeDataToDatabase();
- private:
- am_sourceID_t mSourceID;
- am_SourceState_e mSourceState;
- };
-
- class handleSourceVolume : public handleVolumeBase
- {
- public:
- handleSourceVolume(IAmRoutingSend* interface, const am_sourceID_t sourceID, IAmDatabaseHandler* databaseHandler,const am_volume_t& volume) :
- handleVolumeBase(interface,databaseHandler,volume)
- ,mSourceID(sourceID) {}
- ~handleSourceVolume() {}
- am_Error_e writeDataToDatabase();
- private:
- am_sourceID_t mSourceID;
- };
-
- class handleSinkVolume : public handleVolumeBase
- {
- public:
- handleSinkVolume(IAmRoutingSend* interface, const am_sinkID_t sinkID, IAmDatabaseHandler* databaseHandler,const am_volume_t& volume) :
- handleVolumeBase(interface,databaseHandler,volume)
- ,mSinkID(sinkID) {}
- ~handleSinkVolume() {}
- am_Error_e writeDataToDatabase();
- private:
- am_sinkID_t mSinkID;
- };
-
- class handleCrossFader : public handleDataBase
- {
- public:
- handleCrossFader(IAmRoutingSend* interface, const am_crossfaderID_t crossfaderID, const am_HotSink_e& hotSink, IAmDatabaseHandler* databaseHandler) :
- handleDataBase(interface,databaseHandler)
- ,mCrossfaderID(crossfaderID)
- ,mHotSink(hotSink) {}
- ~handleCrossFader() {}
- am_Error_e writeDataToDatabase();
- private:
- am_crossfaderID_t mCrossfaderID;
- am_HotSink_e mHotSink;
- };
-
- class handleConnect : public handleDataBase
- {
- public:
- handleConnect(IAmRoutingSend* interface, const am_connectionID_t connectionID, IAmDatabaseHandler* databaseHandler) :
- handleDataBase(interface,databaseHandler)
- ,mConnectionID(connectionID)
- ,mConnectionPending(true) {}
- ~handleConnect();
- am_Error_e writeDataToDatabase();
- private:
- am_connectionID_t mConnectionID;
- bool mConnectionPending;
- };
-
- class handleDisconnect : public handleDataBase
- {
- public:
- handleDisconnect(IAmRoutingSend* interface, const am_connectionID_t connectionID, IAmDatabaseHandler* databaseHandler,CAmRoutingSender* routingSender) :
- handleDataBase(interface,databaseHandler)
- ,mConnectionID(connectionID)
- ,mRoutingSender(routingSender){}
- ~handleDisconnect();
- am_Error_e writeDataToDatabase();
- private:
- am_connectionID_t mConnectionID;
- CAmRoutingSender* mRoutingSender;
- };
-
- class handleSetVolumes : public handleDataBase
- {
- public:
- handleSetVolumes(IAmRoutingSend* interface, const std::vector<am_Volumes_s> listVolumes, IAmDatabaseHandler* databaseHandler) :
- handleDataBase(interface,databaseHandler)
- ,mlistVolumes(listVolumes) {}
- ~handleSetVolumes() {}
- am_Error_e writeDataToDatabase();
- private:
- std::vector<am_Volumes_s> mlistVolumes;
- };
-
- class handleSetSinkNotificationConfiguration : public handleDataBase
- {
- public:
- handleSetSinkNotificationConfiguration(IAmRoutingSend* interface, const am_sinkID_t sinkID, const am_NotificationConfiguration_s notificationConfiguration, IAmDatabaseHandler* databaseHandler) :
- handleDataBase(interface,databaseHandler)
- ,mSinkID(sinkID)
- ,mNotificationConfiguration(notificationConfiguration){}
- ~handleSetSinkNotificationConfiguration() {}
- am_Error_e writeDataToDatabase();
- private:
- am_sinkID_t mSinkID;
- am_NotificationConfiguration_s mNotificationConfiguration;
- };
-
- class handleSetSourceNotificationConfiguration : public handleDataBase
- {
- public:
- handleSetSourceNotificationConfiguration(IAmRoutingSend* interface, const am_sourceID_t sourceID, const am_NotificationConfiguration_s notificationConfiguration, IAmDatabaseHandler* databaseHandler) :
- handleDataBase(interface,databaseHandler)
- ,mSourceID(sourceID)
- ,mNotificationConfiguration(notificationConfiguration) {}
- ~handleSetSourceNotificationConfiguration() {}
- am_Error_e writeDataToDatabase();
- private:
- am_sourceID_t mSourceID;
- am_NotificationConfiguration_s mNotificationConfiguration;
- };
-
+ public:
+ handleDataBase(IAmRoutingSend *interface, IAmDatabaseHandler *databaseHandler)
+ : mInterface(interface)
+ , mpDatabaseHandler(databaseHandler) {}
+ virtual ~handleDataBase() {}
+ virtual am_Error_e writeDataToDatabase() = 0; //!< function to write the handle data to the database
+
+ IAmRoutingSend *returnInterface() {return mInterface;}
+ private:
+ IAmRoutingSend *mInterface;
+ protected:
+ IAmDatabaseHandler *mpDatabaseHandler;
+ };
+
+ class handleVolumeBase : public handleDataBase
+ {
+ public:
+ handleVolumeBase(IAmRoutingSend *interface, IAmDatabaseHandler *databaseHandler, am_volume_t volume)
+ : handleDataBase(interface, databaseHandler)
+ , mVolume(volume) {}
+ virtual ~handleVolumeBase(){}
+ am_volume_t returnVolume() { return mVolume; }
+ private:
+ am_volume_t mVolume;
+ };
+
+ class handleSinkSoundProperty : public handleDataBase
+ {
+ public:
+ handleSinkSoundProperty(IAmRoutingSend *interface, const am_sinkID_t sinkID, const am_SoundProperty_s &soundProperty, IAmDatabaseHandler *databaseHandler)
+ : handleDataBase(interface, databaseHandler)
+ , mSinkID(sinkID)
+ , mSoundProperty(soundProperty) {}
+ ~handleSinkSoundProperty() {}
+ am_Error_e writeDataToDatabase();
+
+ private:
+ am_sinkID_t mSinkID;
+ am_SoundProperty_s mSoundProperty;
+ };
+
+ class handleSinkSoundProperties : public handleDataBase
+ {
+ public:
+ handleSinkSoundProperties(IAmRoutingSend *interface, const am_sinkID_t sinkID, const std::vector<am_SoundProperty_s> &listSoundProperties, IAmDatabaseHandler *databaseHandler)
+ : handleDataBase(interface, databaseHandler)
+ , mSinkID(sinkID)
+ , mlistSoundProperties(listSoundProperties) {}
+ ~handleSinkSoundProperties() {}
+ am_Error_e writeDataToDatabase();
+
+ private:
+ am_sinkID_t mSinkID;
+ std::vector<am_SoundProperty_s> mlistSoundProperties;
+ };
+
+ class handleSourceSoundProperty : public handleDataBase
+ {
+ public:
+ handleSourceSoundProperty(IAmRoutingSend *interface, const am_sourceID_t sourceID, const am_SoundProperty_s &soundProperty, IAmDatabaseHandler *databaseHandler)
+ : handleDataBase(interface, databaseHandler)
+ , mSourceID(sourceID)
+ , mSoundProperty(soundProperty) {}
+ ~handleSourceSoundProperty() {}
+ am_Error_e writeDataToDatabase();
+
+ private:
+ am_sourceID_t mSourceID;
+ am_SoundProperty_s mSoundProperty;
+ };
+
+ class handleSourceSoundProperties : public handleDataBase
+ {
+ public:
+ handleSourceSoundProperties(IAmRoutingSend *interface, const am_sourceID_t sourceID, const std::vector<am_SoundProperty_s> &listSoundProperties, IAmDatabaseHandler *databaseHandler)
+ : handleDataBase(interface, databaseHandler)
+ , mSourceID(sourceID)
+ , mlistSoundProperties(listSoundProperties) {}
+ ~handleSourceSoundProperties(){}
+ am_Error_e writeDataToDatabase();
+
+ private:
+ am_sourceID_t mSourceID;
+ std::vector<am_SoundProperty_s> mlistSoundProperties;
+ };
+
+ class handleSourceState : public handleDataBase
+ {
+ public:
+ handleSourceState(IAmRoutingSend *interface, const am_sourceID_t sourceID, const am_SourceState_e &state, IAmDatabaseHandler *databaseHandler)
+ : handleDataBase(interface, databaseHandler)
+ , mSourceID(sourceID)
+ , mSourceState(state) {}
+ ~handleSourceState() {}
+ am_Error_e writeDataToDatabase();
+
+ private:
+ am_sourceID_t mSourceID;
+ am_SourceState_e mSourceState;
+ };
+
+ class handleSourceVolume : public handleVolumeBase
+ {
+ public:
+ handleSourceVolume(IAmRoutingSend *interface, const am_sourceID_t sourceID, IAmDatabaseHandler *databaseHandler, const am_volume_t &volume)
+ : handleVolumeBase(interface, databaseHandler, volume)
+ , mSourceID(sourceID) {}
+ ~handleSourceVolume() {}
+ am_Error_e writeDataToDatabase();
+
+ private:
+ am_sourceID_t mSourceID;
+ };
+
+ class handleSinkVolume : public handleVolumeBase
+ {
+ public:
+ handleSinkVolume(IAmRoutingSend *interface, const am_sinkID_t sinkID, IAmDatabaseHandler *databaseHandler, const am_volume_t &volume)
+ : handleVolumeBase(interface, databaseHandler, volume)
+ , mSinkID(sinkID) {}
+ ~handleSinkVolume() {}
+ am_Error_e writeDataToDatabase();
+
+ private:
+ am_sinkID_t mSinkID;
+ };
+
+ class handleCrossFader : public handleDataBase
+ {
+ public:
+ handleCrossFader(IAmRoutingSend *interface, const am_crossfaderID_t crossfaderID, const am_HotSink_e &hotSink, IAmDatabaseHandler *databaseHandler)
+ : handleDataBase(interface, databaseHandler)
+ , mCrossfaderID(crossfaderID)
+ , mHotSink(hotSink) {}
+ ~handleCrossFader() {}
+ am_Error_e writeDataToDatabase();
+
+ private:
+ am_crossfaderID_t mCrossfaderID;
+ am_HotSink_e mHotSink;
+ };
+
+ class handleConnect : public handleDataBase
+ {
+ public:
+ handleConnect(IAmRoutingSend *interface, const am_connectionID_t connectionID, IAmDatabaseHandler *databaseHandler)
+ : handleDataBase(interface, databaseHandler)
+ , mConnectionID(connectionID)
+ , mConnectionPending(true) {}
+ ~handleConnect();
+ am_Error_e writeDataToDatabase();
+
+ private:
+ am_connectionID_t mConnectionID;
+ bool mConnectionPending;
+ };
+
+ class handleDisconnect : public handleDataBase
+ {
+ public:
+ handleDisconnect(IAmRoutingSend *interface, const am_connectionID_t connectionID, IAmDatabaseHandler *databaseHandler, CAmRoutingSender *routingSender)
+ : handleDataBase(interface, databaseHandler)
+ , mConnectionID(connectionID)
+ , mRoutingSender(routingSender){}
+ ~handleDisconnect();
+ am_Error_e writeDataToDatabase();
+
+ private:
+ am_connectionID_t mConnectionID;
+ CAmRoutingSender *mRoutingSender;
+ };
+
+ class handleSetVolumes : public handleDataBase
+ {
+ public:
+ handleSetVolumes(IAmRoutingSend *interface, const std::vector<am_Volumes_s> listVolumes, IAmDatabaseHandler *databaseHandler)
+ : handleDataBase(interface, databaseHandler)
+ , mlistVolumes(listVolumes) {}
+ ~handleSetVolumes() {}
+ am_Error_e writeDataToDatabase();
+
+ private:
+ std::vector<am_Volumes_s> mlistVolumes;
+ };
+
+ class handleSetSinkNotificationConfiguration : public handleDataBase
+ {
+ public:
+ handleSetSinkNotificationConfiguration(IAmRoutingSend *interface, const am_sinkID_t sinkID, const am_NotificationConfiguration_s notificationConfiguration, IAmDatabaseHandler *databaseHandler)
+ : handleDataBase(interface, databaseHandler)
+ , mSinkID(sinkID)
+ , mNotificationConfiguration(notificationConfiguration){}
+ ~handleSetSinkNotificationConfiguration() {}
+ am_Error_e writeDataToDatabase();
+
+ private:
+ am_sinkID_t mSinkID;
+ am_NotificationConfiguration_s mNotificationConfiguration;
+ };
+
+ class handleSetSourceNotificationConfiguration : public handleDataBase
+ {
+ public:
+ handleSetSourceNotificationConfiguration(IAmRoutingSend *interface, const am_sourceID_t sourceID, const am_NotificationConfiguration_s notificationConfiguration, IAmDatabaseHandler *databaseHandler)
+ : handleDataBase(interface, databaseHandler)
+ , mSourceID(sourceID)
+ , mNotificationConfiguration(notificationConfiguration) {}
+ ~handleSetSourceNotificationConfiguration() {}
+ am_Error_e writeDataToDatabase();
+
+ private:
+ am_sourceID_t mSourceID;
+ am_NotificationConfiguration_s mNotificationConfiguration;
+ };
+
am_Error_e writeToDatabaseAndRemove(const am_Handle_s handle); //!< write data to Database and remove handle
void checkVolume(const am_Handle_s handle, const am_volume_t volume);
bool handleExists(const am_Handle_s handle); //!< returns true if the handle exists
-#ifdef UNIT_TEST //this is needed to test RoutingSender
+#ifdef UNIT_TEST // this is needed to test RoutingSender
friend class IAmRoutingBackdoor;
#endif
private:
struct comparator //!< is needed to sort the handles in the map
{
- bool operator()(const am_Handle_s& a, const am_Handle_s& b) const
+ bool operator()(const am_Handle_s &a, const am_Handle_s &b) const
{
- return (a.handle<b.handle || (a.handle==b.handle && a.handleType<b.handleType));
+ return (a.handle < b.handle || (a.handle == b.handle && a.handleType < b.handleType));
}
+
};
- void loadPlugins(const std::vector<std::string>& listOfPluginDirectories);
+ void loadPlugins(const std::vector<std::string> &listOfPluginDirectories);
am_Handle_s createHandle(std::shared_ptr<handleDataBase> handleData, const am_Handle_e type); //!< creates a handle
- void unloadLibraries(void); //!< unloads all loaded plugins
-
- typedef std::map<am_domainID_t, IAmRoutingSend*> DomainInterfaceMap; //!< maps domains to interfaces
- typedef std::map<am_sinkID_t, IAmRoutingSend*> SinkInterfaceMap; //!< maps sinks to interfaces
- typedef std::map<am_sourceID_t, IAmRoutingSend*> SourceInterfaceMap; //!< maps sources to interfaces
- typedef std::map<am_crossfaderID_t, IAmRoutingSend*> CrossfaderInterfaceMap; //!< maps crossfaders to interfaces
- typedef std::map<am_connectionID_t, IAmRoutingSend*> ConnectionInterfaceMap; //!< maps connections to interfaces
- typedef std::map<am_Handle_s, std::shared_ptr<handleDataBase>, comparator> HandlesMap; //!< maps handleData to handles
-
- int16_t mHandleCount; //!< is used to create handles
- HandlesMap mlistActiveHandles; //!< list of all currently "running" handles.
- std::vector<void*> mListLibraryHandles; //!< list of all loaded pluginInterfaces
- std::vector<InterfaceNamePairs> mListInterfaces; //!< list of busname/interface relation
- CrossfaderInterfaceMap mMapCrossfaderInterface; //!< map of crossfaders to interface
- ConnectionInterfaceMap mMapConnectionInterface; //!< map of connection to interfaces
- DomainInterfaceMap mMapDomainInterface; //!< map of domains to interfaces
- SinkInterfaceMap mMapSinkInterface; //!< map of sinks to interfaces
- SourceInterfaceMap mMapSourceInterface; //!< map of sources to interfaces
- CAmRoutingReceiver *mpRoutingReceiver; //!< pointer to routing receiver
- IAmDatabaseHandler* mpDatabaseHandler; //!< pointer to the databaseHandler
+ void unloadLibraries(void); //!< unloads all loaded plugins
+
+ typedef std::map<am_domainID_t, IAmRoutingSend *> DomainInterfaceMap; //!< maps domains to interfaces
+ typedef std::map<am_sinkID_t, IAmRoutingSend *> SinkInterfaceMap; //!< maps sinks to interfaces
+ typedef std::map<am_sourceID_t, IAmRoutingSend *> SourceInterfaceMap; //!< maps sources to interfaces
+ typedef std::map<am_crossfaderID_t, IAmRoutingSend *> CrossfaderInterfaceMap; //!< maps crossfaders to interfaces
+ typedef std::map<am_connectionID_t, IAmRoutingSend *> ConnectionInterfaceMap; //!< maps connections to interfaces
+ typedef std::map<am_Handle_s, std::shared_ptr<handleDataBase>, comparator> HandlesMap; //!< maps handleData to handles
+
+ int16_t mHandleCount; //!< is used to create handles
+ HandlesMap mlistActiveHandles; //!< list of all currently "running" handles.
+ std::vector<void *> mListLibraryHandles; //!< list of all loaded pluginInterfaces
+ std::vector<InterfaceNamePairs> mListInterfaces; //!< list of busname/interface relation
+ CrossfaderInterfaceMap mMapCrossfaderInterface; //!< map of crossfaders to interface
+ ConnectionInterfaceMap mMapConnectionInterface; //!< map of connection to interfaces
+ DomainInterfaceMap mMapDomainInterface; //!< map of domains to interfaces
+ SinkInterfaceMap mMapSinkInterface; //!< map of sinks to interfaces
+ SourceInterfaceMap mMapSourceInterface; //!< map of sources to interfaces
+ CAmRoutingReceiver *mpRoutingReceiver; //!< pointer to routing receiver
+ IAmDatabaseHandler *mpDatabaseHandler; //!< pointer to the databaseHandler
};
}
diff --git a/AudioManagerCore/include/IAmDatabaseHandler.h b/AudioManagerCore/include/IAmDatabaseHandler.h
index f4fe8a1..5272d4f 100644
--- a/AudioManagerCore/include/IAmDatabaseHandler.h
+++ b/AudioManagerCore/include/IAmDatabaseHandler.h
@@ -14,7 +14,7 @@
* this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
*
-* \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
+ * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013
*
* \file IAmDatabaseHandler.h
* For further information see http://www.genivi.org/.
@@ -38,13 +38,13 @@
namespace am
{
-//todo: check the enum values before entering & changing in the database.
-//todo: change asserts for dynamic boundary checks into failure answers.#
-//todo: check autoincrement boundary and set to 16bit limits
-//todo: If the sink is part of a gateway, the listconnectionFormats is copied to the gatewayInformation. Check this statement for sinks & sources
-//todo: exchange last_insert_row id to be more safe
-//todo: create test to ensure uniqueness of names throughout the database
-//todo: enforce the uniqueness of names
+// todo: check the enum values before entering & changing in the database.
+// todo: change asserts for dynamic boundary checks into failure answers.#
+// todo: check autoincrement boundary and set to 16bit limits
+// todo: If the sink is part of a gateway, the listconnectionFormats is copied to the gatewayInformation. Check this statement for sinks & sources
+// todo: exchange last_insert_row id to be more safe
+// todo: create test to ensure uniqueness of names throughout the database
+// todo: enforce the uniqueness of names
typedef std::map<am_gatewayID_t, std::vector<bool> > ListConnectionFormat; //!< type for list of connection formats
@@ -59,34 +59,34 @@ public:
virtual ~IAmDatabaseHandler (){}
/**
- * The following interface methods must be implemented by the subclass.
- */
- virtual am_Error_e enterDomainDB(const am_Domain_s& domainData, am_domainID_t& domainID) = 0;
- virtual am_Error_e enterMainConnectionDB(const am_MainConnection_s& mainConnectionData, am_mainConnectionID_t& connectionID) = 0;
- virtual am_Error_e enterSinkDB(const am_Sink_s& sinkData, am_sinkID_t& sinkID) = 0;
- virtual am_Error_e enterCrossfaderDB(const am_Crossfader_s& crossfaderData, am_crossfaderID_t& crossfaderID) = 0;
- virtual am_Error_e enterGatewayDB(const am_Gateway_s& gatewayData, am_gatewayID_t& gatewayID) = 0;
- virtual am_Error_e enterConverterDB(const am_Converter_s & converteData, am_converterID_t & converterID) = 0;
- virtual am_Error_e enterSourceDB(const am_Source_s& sourceData, am_sourceID_t& sourceID) = 0;
- virtual am_Error_e enterConnectionDB(const am_Connection_s& connection, am_connectionID_t& connectionID) = 0;
- virtual am_Error_e enterSinkClassDB(const am_SinkClass_s& sinkClass, am_sinkClass_t& sinkClassID) = 0;
- virtual am_Error_e enterSourceClassDB(am_sourceClass_t& sourceClassID, const am_SourceClass_s& sourceClass) = 0;
- virtual am_Error_e enterSystemProperties(const std::vector<am_SystemProperty_s>& listSystemProperties) = 0;
- virtual am_Error_e changeMainConnectionRouteDB(const am_mainConnectionID_t mainconnectionID, const std::vector<am_connectionID_t>& listConnectionID) = 0;
+ * The following interface methods must be implemented by the subclass.
+ */
+ virtual am_Error_e enterDomainDB(const am_Domain_s &domainData, am_domainID_t &domainID) = 0;
+ virtual am_Error_e enterMainConnectionDB(const am_MainConnection_s &mainConnectionData, am_mainConnectionID_t &connectionID) = 0;
+ virtual am_Error_e enterSinkDB(const am_Sink_s &sinkData, am_sinkID_t &sinkID) = 0;
+ virtual am_Error_e enterCrossfaderDB(const am_Crossfader_s &crossfaderData, am_crossfaderID_t &crossfaderID) = 0;
+ virtual am_Error_e enterGatewayDB(const am_Gateway_s &gatewayData, am_gatewayID_t &gatewayID) = 0;
+ virtual am_Error_e enterConverterDB(const am_Converter_s &converteData, am_converterID_t &converterID) = 0;
+ virtual am_Error_e enterSourceDB(const am_Source_s &sourceData, am_sourceID_t &sourceID) = 0;
+ virtual am_Error_e enterConnectionDB(const am_Connection_s &connection, am_connectionID_t &connectionID) = 0;
+ virtual am_Error_e enterSinkClassDB(const am_SinkClass_s &sinkClass, am_sinkClass_t &sinkClassID) = 0;
+ virtual am_Error_e enterSourceClassDB(am_sourceClass_t &sourceClassID, const am_SourceClass_s &sourceClass) = 0;
+ virtual am_Error_e enterSystemProperties(const std::vector<am_SystemProperty_s> &listSystemProperties) = 0;
+ virtual am_Error_e changeMainConnectionRouteDB(const am_mainConnectionID_t mainconnectionID, const std::vector<am_connectionID_t> &listConnectionID) = 0;
virtual am_Error_e changeMainConnectionStateDB(const am_mainConnectionID_t mainconnectionID, const am_ConnectionState_e connectionState) = 0;
virtual am_Error_e changeSinkMainVolumeDB(const am_mainVolume_t mainVolume, const am_sinkID_t sinkID) = 0;
- virtual am_Error_e changeSinkAvailabilityDB(const am_Availability_s& availability, const am_sinkID_t sinkID) = 0;
+ virtual am_Error_e changeSinkAvailabilityDB(const am_Availability_s &availability, const am_sinkID_t sinkID) = 0;
virtual am_Error_e changeDomainStateDB(const am_DomainState_e domainState, const am_domainID_t domainID) = 0;
virtual am_Error_e changeSinkMuteStateDB(const am_MuteState_e muteState, const am_sinkID_t sinkID) = 0;
- virtual am_Error_e changeMainSinkSoundPropertyDB(const am_MainSoundProperty_s& soundProperty, const am_sinkID_t sinkID) = 0;
- virtual am_Error_e changeMainSourceSoundPropertyDB(const am_MainSoundProperty_s& soundProperty, const am_sourceID_t sourceID) = 0;
- virtual am_Error_e changeSourceSoundPropertyDB(const am_SoundProperty_s& soundProperty, const am_sourceID_t sourceID) = 0;
- virtual am_Error_e changeSinkSoundPropertyDB(const am_SoundProperty_s& soundProperty, const am_sinkID_t sinkID) = 0;
- virtual am_Error_e changeSourceAvailabilityDB(const am_Availability_s& availability, const am_sourceID_t sourceID) = 0;
- virtual am_Error_e changeSystemPropertyDB(const am_SystemProperty_s& property) = 0;
- virtual am_Error_e changeDelayMainConnection(const am_timeSync_t & delay, const am_mainConnectionID_t & connectionID) = 0;
- virtual am_Error_e changeSinkClassInfoDB(const am_SinkClass_s& sinkClass) = 0;
- virtual am_Error_e changeSourceClassInfoDB(const am_SourceClass_s& sourceClass) = 0;
+ virtual am_Error_e changeMainSinkSoundPropertyDB(const am_MainSoundProperty_s &soundProperty, const am_sinkID_t sinkID) = 0;
+ virtual am_Error_e changeMainSourceSoundPropertyDB(const am_MainSoundProperty_s &soundProperty, const am_sourceID_t sourceID) = 0;
+ virtual am_Error_e changeSourceSoundPropertyDB(const am_SoundProperty_s &soundProperty, const am_sourceID_t sourceID) = 0;
+ virtual am_Error_e changeSinkSoundPropertyDB(const am_SoundProperty_s &soundProperty, const am_sinkID_t sinkID) = 0;
+ virtual am_Error_e changeSourceAvailabilityDB(const am_Availability_s &availability, const am_sourceID_t sourceID) = 0;
+ virtual am_Error_e changeSystemPropertyDB(const am_SystemProperty_s &property) = 0;
+ virtual am_Error_e changeDelayMainConnection(const am_timeSync_t &delay, const am_mainConnectionID_t &connectionID) = 0;
+ virtual am_Error_e changeSinkClassInfoDB(const am_SinkClass_s &sinkClass) = 0;
+ virtual am_Error_e changeSourceClassInfoDB(const am_SourceClass_s &sourceClass) = 0;
virtual am_Error_e changeConnectionTimingInformation(const am_connectionID_t connectionID, const am_timeSync_t delay) = 0;
virtual am_Error_e changeConnectionFinal(const am_connectionID_t connectionID) = 0;
virtual am_Error_e changeSourceState(const am_sourceID_t sourceID, const am_SourceState_e sourceState) = 0;
@@ -104,107 +104,108 @@ public:
virtual am_Error_e removeSinkClassDB(const am_sinkClass_t sinkClassID) = 0;
virtual am_Error_e removeSourceClassDB(const am_sourceClass_t sourceClassID) = 0;
virtual am_Error_e removeConnection(const am_connectionID_t connectionID) = 0;
- virtual am_Error_e getSourceClassInfoDB(const am_sourceID_t sourceID, am_SourceClass_s& classInfo) const = 0;
- virtual am_Error_e getSinkClassInfoDB(const am_sinkID_t sinkID, am_SinkClass_s& sinkClass) const = 0;
- virtual am_Error_e getGatewayInfoDB(const am_gatewayID_t gatewayID, am_Gateway_s& gatewayData) const = 0;
- virtual am_Error_e getConverterInfoDB(const am_converterID_t converterID, am_Converter_s& converterData) const = 0;
- virtual am_Error_e getSinkInfoDB(const am_sinkID_t sinkID, am_Sink_s& sinkData) const = 0;
- virtual am_Error_e getSourceInfoDB(const am_sourceID_t sourceID, am_Source_s& sourceData) const = 0;
- virtual am_Error_e getCrossfaderInfoDB(const am_crossfaderID_t crossfaderID, am_Crossfader_s& crossfaderData) const = 0;
- virtual am_Error_e getMainConnectionInfoDB(const am_mainConnectionID_t mainConnectionID, am_MainConnection_s& mainConnectionData) const = 0;
- virtual am_Error_e getSinkMainVolume(const am_sinkID_t sinkID, am_mainVolume_t& mainVolume) const = 0;
- virtual am_Error_e getSinkVolume(const am_sinkID_t sinkID, am_volume_t& volume) const = 0;
- virtual am_Error_e getSourceVolume(const am_sourceID_t sourceID, am_volume_t& volume) const = 0;
- virtual am_Error_e getSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomSoundPropertyType_t propertyType, int16_t& value) const = 0;
- virtual am_Error_e getSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomSoundPropertyType_t propertyType, int16_t& value) const = 0;
- virtual am_Error_e getListSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_SoundProperty_s>& listSoundproperties) const =0;
- virtual am_Error_e getListSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_SoundProperty_s>& listSoundproperties) const =0;
- virtual am_Error_e getMainSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomMainSoundPropertyType_t propertyType, int16_t& value) const = 0;
- virtual am_Error_e getMainSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomMainSoundPropertyType_t propertyType, int16_t& value) const = 0;
- virtual am_Error_e getListSinksOfDomain(const am_domainID_t domainID, std::vector<am_sinkID_t>& listSinkID) const = 0;
- virtual am_Error_e getListSourcesOfDomain(const am_domainID_t domainID, std::vector<am_sourceID_t>& listSourceID) const = 0;
- virtual am_Error_e getListCrossfadersOfDomain(const am_domainID_t domainID, std::vector<am_crossfaderID_t>& listGatewaysID) const = 0;
- virtual am_Error_e getListGatewaysOfDomain(const am_domainID_t domainID, std::vector<am_gatewayID_t>& listGatewaysID) const = 0;
- virtual am_Error_e getListConvertersOfDomain(const am_domainID_t domainID, std::vector<am_converterID_t>& listConvertersID) const = 0;
- virtual am_Error_e getListMainConnections(std::vector<am_MainConnection_s>& listMainConnections) const = 0;
- virtual am_Error_e getListDomains(std::vector<am_Domain_s>& listDomains) const = 0;
- virtual am_Error_e getListConnections(std::vector<am_Connection_s>& listConnections) const = 0;
- virtual am_Error_e getListSinks(std::vector<am_Sink_s>& listSinks) const = 0;
- virtual am_Error_e getListSources(std::vector<am_Source_s>& lisSources) const = 0;
- virtual am_Error_e getListSourceClasses(std::vector<am_SourceClass_s>& listSourceClasses) const = 0;
- virtual am_Error_e getListCrossfaders(std::vector<am_Crossfader_s>& listCrossfaders) const = 0;
- virtual am_Error_e getListGateways(std::vector<am_Gateway_s>& listGateways) const = 0;
- virtual am_Error_e getListConverters(std::vector<am_Converter_s> & listConverters) const = 0;
- virtual am_Error_e getListSinkClasses(std::vector<am_SinkClass_s>& listSinkClasses) const = 0;
- virtual am_Error_e getListVisibleMainConnections(std::vector<am_MainConnectionType_s>& listConnections) const = 0;
- virtual am_Error_e getListMainSinks(std::vector<am_SinkType_s>& listMainSinks) const = 0;
- virtual am_Error_e getListMainSources(std::vector<am_SourceType_s>& listMainSources) const = 0;
- virtual am_Error_e getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s>& listSoundProperties) const = 0;
- virtual am_Error_e getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s>& listSourceProperties) const = 0;
- virtual am_Error_e getListSystemProperties(std::vector<am_SystemProperty_s>& listSystemProperties) const = 0;
- virtual am_Error_e getListSinkConnectionFormats(const am_sinkID_t sinkID, std::vector<am_CustomConnectionFormat_t> & listConnectionFormats) const = 0;
- virtual am_Error_e getListSourceConnectionFormats(const am_sourceID_t sourceID, std::vector<am_CustomConnectionFormat_t> & listConnectionFormats) const = 0;
- virtual am_Error_e getListGatewayConnectionFormats(const am_gatewayID_t gatewayID, std::vector<bool> & listConnectionFormat) const = 0;
- virtual am_Error_e getTimingInformation(const am_mainConnectionID_t mainConnectionID, am_timeSync_t& delay) const = 0;
- virtual am_Error_e getDomainOfSource(const am_sourceID_t sourceID, am_domainID_t& domainID) const = 0;
- virtual am_Error_e getDomainOfSink(const am_sinkID_t sinkID, am_domainID_t& domainID) const = 0;
- virtual am_Error_e getDomainOfCrossfader(const am_crossfaderID_t crossfader, am_domainID_t& domainID) const = 0;
- virtual am_Error_e getSoureState(const am_sourceID_t sourceID, am_SourceState_e& sourceState) const = 0;
- virtual am_Error_e getDomainState(const am_domainID_t domainID, am_DomainState_e& state) const = 0;
- virtual am_Error_e peekDomain(const std::string& name, am_domainID_t& domainID) = 0;
- virtual am_Error_e peekSink(const std::string& name, am_sinkID_t& sinkID) = 0;
- virtual am_Error_e peekSource(const std::string& name, am_sourceID_t& sourceID) = 0;
- virtual am_Error_e peekSinkClassID(const std::string& name, am_sinkClass_t& sinkClassID) = 0;
- virtual am_Error_e peekSourceClassID(const std::string& name, am_sourceClass_t& sourceClassID) = 0;
- virtual am_Error_e changeSourceDB(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) = 0;
- virtual am_Error_e changeSinkDB(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) = 0;
- virtual am_Error_e getListMainSinkNotificationConfigurations(const am_sinkID_t sinkID, std::vector<am_NotificationConfiguration_s>& listMainNotificationConfigurations) = 0;
- virtual am_Error_e getListMainSourceNotificationConfigurations(const am_sourceID_t sourceID, std::vector<am_NotificationConfiguration_s>& listMainNotificationConfigurations) = 0;
+ virtual am_Error_e getSourceClassInfoDB(const am_sourceID_t sourceID, am_SourceClass_s &classInfo) const = 0;
+ virtual am_Error_e getSinkClassInfoDB(const am_sinkID_t sinkID, am_SinkClass_s &sinkClass) const = 0;
+ virtual am_Error_e getGatewayInfoDB(const am_gatewayID_t gatewayID, am_Gateway_s &gatewayData) const = 0;
+ virtual am_Error_e getConverterInfoDB(const am_converterID_t converterID, am_Converter_s &converterData) const = 0;
+ virtual am_Error_e getSinkInfoDB(const am_sinkID_t sinkID, am_Sink_s &sinkData) const = 0;
+ virtual am_Error_e getSourceInfoDB(const am_sourceID_t sourceID, am_Source_s &sourceData) const = 0;
+ virtual am_Error_e getCrossfaderInfoDB(const am_crossfaderID_t crossfaderID, am_Crossfader_s &crossfaderData) const = 0;
+ virtual am_Error_e getMainConnectionInfoDB(const am_mainConnectionID_t mainConnectionID, am_MainConnection_s &mainConnectionData) const = 0;
+ virtual am_Error_e getSinkMainVolume(const am_sinkID_t sinkID, am_mainVolume_t &mainVolume) const = 0;
+ virtual am_Error_e getSinkVolume(const am_sinkID_t sinkID, am_volume_t &volume) const = 0;
+ virtual am_Error_e getSourceVolume(const am_sourceID_t sourceID, am_volume_t &volume) const = 0;
+ virtual am_Error_e getSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomSoundPropertyType_t propertyType, int16_t &value) const = 0;
+ virtual am_Error_e getSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomSoundPropertyType_t propertyType, int16_t &value) const = 0;
+ virtual am_Error_e getListSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_SoundProperty_s> &listSoundproperties) const = 0;
+ virtual am_Error_e getListSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_SoundProperty_s> &listSoundproperties) const = 0;
+ virtual am_Error_e getMainSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomMainSoundPropertyType_t propertyType, int16_t &value) const = 0;
+ virtual am_Error_e getMainSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomMainSoundPropertyType_t propertyType, int16_t &value) const = 0;
+ virtual am_Error_e getListSinksOfDomain(const am_domainID_t domainID, std::vector<am_sinkID_t> &listSinkID) const = 0;
+ virtual am_Error_e getListSourcesOfDomain(const am_domainID_t domainID, std::vector<am_sourceID_t> &listSourceID) const = 0;
+ virtual am_Error_e getListCrossfadersOfDomain(const am_domainID_t domainID, std::vector<am_crossfaderID_t> &listGatewaysID) const = 0;
+ virtual am_Error_e getListGatewaysOfDomain(const am_domainID_t domainID, std::vector<am_gatewayID_t> &listGatewaysID) const = 0;
+ virtual am_Error_e getListConvertersOfDomain(const am_domainID_t domainID, std::vector<am_converterID_t> &listConvertersID) const = 0;
+ virtual am_Error_e getListMainConnections(std::vector<am_MainConnection_s> &listMainConnections) const = 0;
+ virtual am_Error_e getListDomains(std::vector<am_Domain_s> &listDomains) const = 0;
+ virtual am_Error_e getListConnections(std::vector<am_Connection_s> &listConnections) const = 0;
+ virtual am_Error_e getListSinks(std::vector<am_Sink_s> &listSinks) const = 0;
+ virtual am_Error_e getListSources(std::vector<am_Source_s> &lisSources) const = 0;
+ virtual am_Error_e getListSourceClasses(std::vector<am_SourceClass_s> &listSourceClasses) const = 0;
+ virtual am_Error_e getListCrossfaders(std::vector<am_Crossfader_s> &listCrossfaders) const = 0;
+ virtual am_Error_e getListGateways(std::vector<am_Gateway_s> &listGateways) const = 0;
+ virtual am_Error_e getListConverters(std::vector<am_Converter_s> &listConverters) const = 0;
+ virtual am_Error_e getListSinkClasses(std::vector<am_SinkClass_s> &listSinkClasses) const = 0;
+ virtual am_Error_e getListVisibleMainConnections(std::vector<am_MainConnectionType_s> &listConnections) const = 0;
+ virtual am_Error_e getListMainSinks(std::vector<am_SinkType_s> &listMainSinks) const = 0;
+ virtual am_Error_e getListMainSources(std::vector<am_SourceType_s> &listMainSources) const = 0;
+ virtual am_Error_e getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s> &listSoundProperties) const = 0;
+ virtual am_Error_e getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s> &listSourceProperties) const = 0;
+ virtual am_Error_e getListSystemProperties(std::vector<am_SystemProperty_s> &listSystemProperties) const = 0;
+ virtual am_Error_e getListSinkConnectionFormats(const am_sinkID_t sinkID, std::vector<am_CustomConnectionFormat_t> &listConnectionFormats) const = 0;
+ virtual am_Error_e getListSourceConnectionFormats(const am_sourceID_t sourceID, std::vector<am_CustomConnectionFormat_t> &listConnectionFormats) const = 0;
+ virtual am_Error_e getListGatewayConnectionFormats(const am_gatewayID_t gatewayID, std::vector<bool> &listConnectionFormat) const = 0;
+ virtual am_Error_e getTimingInformation(const am_mainConnectionID_t mainConnectionID, am_timeSync_t &delay) const = 0;
+ virtual am_Error_e getDomainOfSource(const am_sourceID_t sourceID, am_domainID_t &domainID) const = 0;
+ virtual am_Error_e getDomainOfSink(const am_sinkID_t sinkID, am_domainID_t &domainID) const = 0;
+ virtual am_Error_e getDomainOfCrossfader(const am_crossfaderID_t crossfader, am_domainID_t &domainID) const = 0;
+ virtual am_Error_e getSoureState(const am_sourceID_t sourceID, am_SourceState_e &sourceState) const = 0;
+ virtual am_Error_e getDomainState(const am_domainID_t domainID, am_DomainState_e &state) const = 0;
+ virtual am_Error_e peekDomain(const std::string &name, am_domainID_t &domainID) = 0;
+ virtual am_Error_e peekSink(const std::string &name, am_sinkID_t &sinkID) = 0;
+ virtual am_Error_e peekSource(const std::string &name, am_sourceID_t &sourceID) = 0;
+ virtual am_Error_e peekSinkClassID(const std::string &name, am_sinkClass_t &sinkClassID) = 0;
+ virtual am_Error_e peekSourceClassID(const std::string &name, am_sourceClass_t &sourceClassID) = 0;
+ virtual am_Error_e changeSourceDB(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) = 0;
+ virtual am_Error_e changeSinkDB(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) = 0;
+ virtual am_Error_e getListMainSinkNotificationConfigurations(const am_sinkID_t sinkID, std::vector<am_NotificationConfiguration_s> &listMainNotificationConfigurations) = 0;
+ virtual am_Error_e getListMainSourceNotificationConfigurations(const am_sourceID_t sourceID, std::vector<am_NotificationConfiguration_s> &listMainNotificationConfigurations) = 0;
virtual am_Error_e changeMainSinkNotificationConfigurationDB(const am_sinkID_t sinkID, const am_NotificationConfiguration_s mainNotificationConfiguration) = 0;
virtual am_Error_e changeMainSourceNotificationConfigurationDB(const am_sourceID_t sourceID, const am_NotificationConfiguration_s mainNotificationConfiguration) = 0;
- virtual am_Error_e changeGatewayDB(const am_gatewayID_t gatewayID, const std::vector<am_CustomConnectionFormat_t>& listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t>& listSinkConnectionFormats, const std::vector<bool>& convertionMatrix) = 0;
- virtual am_Error_e changeConverterDB(const am_converterID_t converterID, const std::vector<am_CustomConnectionFormat_t>& listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t>& listSinkConnectionFormats, const std::vector<bool>& convertionMatrix) = 0;
- virtual am_Error_e changeSinkNotificationConfigurationDB(const am_sinkID_t sinkID,const am_NotificationConfiguration_s notificationConfiguration) = 0;
- virtual am_Error_e changeSourceNotificationConfigurationDB(const am_sourceID_t sourceID,const am_NotificationConfiguration_s notificationConfiguration) = 0;
+ virtual am_Error_e changeGatewayDB(const am_gatewayID_t gatewayID, const std::vector<am_CustomConnectionFormat_t> &listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t> &listSinkConnectionFormats, const std::vector<bool> &convertionMatrix) = 0;
+ virtual am_Error_e changeConverterDB(const am_converterID_t converterID, const std::vector<am_CustomConnectionFormat_t> &listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t> &listSinkConnectionFormats, const std::vector<bool> &convertionMatrix) = 0;
+ virtual am_Error_e changeSinkNotificationConfigurationDB(const am_sinkID_t sinkID, const am_NotificationConfiguration_s notificationConfiguration) = 0;
+ virtual am_Error_e changeSourceNotificationConfigurationDB(const am_sourceID_t sourceID, const am_NotificationConfiguration_s notificationConfiguration) = 0;
virtual bool existMainConnection(const am_mainConnectionID_t mainConnectionID) const = 0;
virtual bool existCrossFader(const am_crossfaderID_t crossfaderID) const = 0;
- virtual bool existConnection(const am_Connection_s & connection) const = 0;
+ virtual bool existConnection(const am_Connection_s &connection) const = 0;
virtual bool existConnectionID(const am_connectionID_t connectionID) const = 0;
virtual bool existSource(const am_sourceID_t sourceID) const = 0;
- virtual bool existSourceNameOrID(const am_sourceID_t sourceID, const std::string& name) const = 0;
- virtual bool existSourceName(const std::string& name) const = 0;
+ virtual bool existSourceNameOrID(const am_sourceID_t sourceID, const std::string &name) const = 0;
+ virtual bool existSourceName(const std::string &name) const = 0;
virtual bool existSink(const am_sinkID_t sinkID) const = 0;
- virtual bool existSinkNameOrID(const am_sinkID_t sinkID, const std::string& name) const = 0;
- virtual bool existSinkName(const std::string& name) const = 0;
- virtual bool existDomain(const am_domainID_t domainID) const = 0;
- virtual bool existGateway(const am_gatewayID_t gatewayID) const = 0;
- virtual bool existSinkClass(const am_sinkClass_t sinkClassID) const = 0;
- virtual bool existSourceClass(const am_sourceClass_t sourceClassID) const = 0;
- virtual bool sourceVisible(const am_sourceID_t sourceID) const = 0;
- virtual bool sinkVisible(const am_sinkID_t sinkID) const = 0;
- virtual bool isComponentConnected(const am_Gateway_s & gateway) const = 0;
- virtual bool isComponentConnected(const am_Converter_s & converter) const = 0;
+ virtual bool existSinkNameOrID(const am_sinkID_t sinkID, const std::string &name) const = 0;
+ virtual bool existSinkName(const std::string &name) const = 0;
+ virtual bool existDomain(const am_domainID_t domainID) const = 0;
+ virtual bool existGateway(const am_gatewayID_t gatewayID) const = 0;
+ virtual bool existSinkClass(const am_sinkClass_t sinkClassID) const = 0;
+ virtual bool existSourceClass(const am_sourceClass_t sourceClassID) const = 0;
+ virtual bool sourceVisible(const am_sourceID_t sourceID) const = 0;
+ virtual bool sinkVisible(const am_sinkID_t sinkID) const = 0;
+ virtual bool isComponentConnected(const am_Gateway_s &gateway) const = 0;
+ virtual bool isComponentConnected(const am_Converter_s &converter) const = 0;
virtual am_timeSync_t calculateMainConnectionDelay(const am_mainConnectionID_t mainConnectionID) const = 0; //!< calculates a new main connection delay
- virtual void dump( std::ostream & output) const = 0 ;
- virtual am_Error_e enumerateSources(std::function<void(const am_Source_s & element)> cb) const = 0 ;
- virtual am_Error_e enumerateSinks(std::function<void(const am_Sink_s & element)> cb) const = 0 ;
- virtual am_Error_e enumerateGateways(std::function<void(const am_Gateway_s & element)> cb) const = 0 ;
- virtual am_Error_e enumerateConverters(std::function<void(const am_Converter_s & element)> cb) const = 0 ;
+ virtual void dump(std::ostream &output) const = 0;
+ virtual am_Error_e enumerateSources(std::function<void(const am_Source_s &element)> cb) const = 0;
+ virtual am_Error_e enumerateSinks(std::function<void(const am_Sink_s &element)> cb) const = 0;
+ virtual am_Error_e enumerateGateways(std::function<void(const am_Gateway_s &element)> cb) const = 0;
+ virtual am_Error_e enumerateConverters(std::function<void(const am_Converter_s &element)> cb) const = 0;
+
/**
- * Database observer protocol
- */
+ * Database observer protocol
+ */
class IAmDatabaseObserver
{
public:
- IAmDatabaseObserver() {}
- virtual ~IAmDatabaseObserver(){}
+ IAmDatabaseObserver() {}
+ virtual ~IAmDatabaseObserver(){}
};
- virtual bool registerObserver(IAmDatabaseObserver * iObserver) = 0;
- virtual bool unregisterObserver(IAmDatabaseObserver * iObserver) = 0;
- virtual unsigned countObservers() = 0;
-};
+ virtual bool registerObserver(IAmDatabaseObserver *iObserver) = 0;
+ virtual bool unregisterObserver(IAmDatabaseObserver *iObserver) = 0;
+ virtual unsigned countObservers() = 0;
+};
}
diff --git a/AudioManagerCore/src/CAmCommandReceiver.cpp b/AudioManagerCore/src/CAmCommandReceiver.cpp
index 8b60c66..78d8cbe 100644
--- a/AudioManagerCore/src/CAmCommandReceiver.cpp
+++ b/AudioManagerCore/src/CAmCommandReceiver.cpp
@@ -29,152 +29,151 @@
#include "CAmDltWrapper.h"
#include "CAmSocketHandler.h"
-#define __METHOD_NAME__ std::string (std::string("CAmCommandReceiver::") + __func__)
+#define __METHOD_NAME__ std::string(std::string("CAmCommandReceiver::") + __func__)
namespace am
{
-CAmCommandReceiver::CAmCommandReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmControlSender *iControlSender, CAmSocketHandler *iSocketHandler) :
- mDatabaseHandler(iDatabaseHandler),
- mControlSender(iControlSender),
- mDBusWrapper(NULL),
- mSocketHandler(iSocketHandler),
- handleCount(0),
- mListStartupHandles(),
- mListRundownHandles(),
- mWaitStartup(false),
- mWaitRundown(false),
- mLastErrorStartup(E_OK),
- mLastErrorRundown(E_OK)
-
-{
- assert(mDatabaseHandler!=NULL);
- assert(mSocketHandler!=NULL);
- assert(mControlSender!=NULL);
-}
-
-CAmCommandReceiver::CAmCommandReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmControlSender *iControlSender, CAmSocketHandler *iSocketHandler, CAmDbusWrapper *iDBusWrapper) :
- mDatabaseHandler(iDatabaseHandler),
- mControlSender(iControlSender),
- mDBusWrapper(iDBusWrapper),
- mSocketHandler(iSocketHandler),
- handleCount(0),
- mListStartupHandles(),
- mListRundownHandles(),
- mWaitStartup(false),
- mWaitRundown(false),
- mLastErrorStartup(E_UNKNOWN),
- mLastErrorRundown(E_UNKNOWN)
-{
- assert(mDatabaseHandler!=NULL);
- assert(mSocketHandler!=NULL);
- assert(mControlSender!=NULL);
- assert(mDBusWrapper!=NULL);
+CAmCommandReceiver::CAmCommandReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmControlSender *iControlSender, CAmSocketHandler *iSocketHandler)
+ : mDatabaseHandler(iDatabaseHandler)
+ , mControlSender(iControlSender)
+ , mDBusWrapper(NULL)
+ , mSocketHandler(iSocketHandler)
+ , handleCount(0)
+ , mListStartupHandles()
+ , mListRundownHandles()
+ , mWaitStartup(false)
+ , mWaitRundown(false)
+ , mLastErrorStartup(E_OK)
+ , mLastErrorRundown(E_OK)
+{
+ assert(mDatabaseHandler != NULL);
+ assert(mSocketHandler != NULL);
+ assert(mControlSender != NULL);
+}
+
+CAmCommandReceiver::CAmCommandReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmControlSender *iControlSender, CAmSocketHandler *iSocketHandler, CAmDbusWrapper *iDBusWrapper)
+ : mDatabaseHandler(iDatabaseHandler)
+ , mControlSender(iControlSender)
+ , mDBusWrapper(iDBusWrapper)
+ , mSocketHandler(iSocketHandler)
+ , handleCount(0)
+ , mListStartupHandles()
+ , mListRundownHandles()
+ , mWaitStartup(false)
+ , mWaitRundown(false)
+ , mLastErrorStartup(E_UNKNOWN)
+ , mLastErrorRundown(E_UNKNOWN)
+{
+ assert(mDatabaseHandler != NULL);
+ assert(mSocketHandler != NULL);
+ assert(mControlSender != NULL);
+ assert(mDBusWrapper != NULL);
}
CAmCommandReceiver::~CAmCommandReceiver()
{
}
-am_Error_e CAmCommandReceiver::connect(const am_sourceID_t sourceID, const am_sinkID_t sinkID, am_mainConnectionID_t & mainConnectionID)
+am_Error_e CAmCommandReceiver::connect(const am_sourceID_t sourceID, const am_sinkID_t sinkID, am_mainConnectionID_t &mainConnectionID)
{
- logInfo(__METHOD_NAME__,"sourceID=", sourceID, "sinkID=", sinkID);
+ logInfo(__METHOD_NAME__, "sourceID=", sourceID, "sinkID=", sinkID);
return (mControlSender->hookUserConnectionRequest(sourceID, sinkID, mainConnectionID));
}
am_Error_e CAmCommandReceiver::disconnect(const am_mainConnectionID_t mainConnectionID)
{
- logInfo(__METHOD_NAME__,"mainConnectionID=", mainConnectionID);
+ logInfo(__METHOD_NAME__, "mainConnectionID=", mainConnectionID);
return (mControlSender->hookUserDisconnectionRequest(mainConnectionID));
}
am_Error_e CAmCommandReceiver::setVolume(const am_sinkID_t sinkID, const am_mainVolume_t volume)
{
- logInfo(__METHOD_NAME__,"sinkID=", sinkID, "volume=", volume);
+ logInfo(__METHOD_NAME__, "sinkID=", sinkID, "volume=", volume);
return (mControlSender->hookUserVolumeChange(sinkID, volume));
}
am_Error_e CAmCommandReceiver::volumeStep(const am_sinkID_t sinkID, const int16_t volumeStep)
{
- logInfo(__METHOD_NAME__,"sinkID=", sinkID, "volumeStep=", volumeStep);
+ logInfo(__METHOD_NAME__, "sinkID=", sinkID, "volumeStep=", volumeStep);
return (mControlSender->hookUserVolumeStep(sinkID, volumeStep));
}
am_Error_e CAmCommandReceiver::setSinkMuteState(const am_sinkID_t sinkID, const am_MuteState_e muteState)
{
- logInfo(__METHOD_NAME__,"sinkID=", sinkID, "muteState=", muteState);
+ logInfo(__METHOD_NAME__, "sinkID=", sinkID, "muteState=", muteState);
return (mControlSender->hookUserSetSinkMuteState(sinkID, muteState));
}
-am_Error_e CAmCommandReceiver::setMainSinkSoundProperty(const am_MainSoundProperty_s & soundProperty, const am_sinkID_t sinkID)
+am_Error_e CAmCommandReceiver::setMainSinkSoundProperty(const am_MainSoundProperty_s &soundProperty, const am_sinkID_t sinkID)
{
- logInfo(__METHOD_NAME__,"sinkID=", sinkID, "soundPropertyType=", soundProperty.type, "soundPropertyValue=", soundProperty.value);
+ logInfo(__METHOD_NAME__, "sinkID=", sinkID, "soundPropertyType=", soundProperty.type, "soundPropertyValue=", soundProperty.value);
return (mControlSender->hookUserSetMainSinkSoundProperty(sinkID, soundProperty));
}
-am_Error_e CAmCommandReceiver::setMainSourceSoundProperty(const am_MainSoundProperty_s & soundProperty, const am_sourceID_t sourceID)
+am_Error_e CAmCommandReceiver::setMainSourceSoundProperty(const am_MainSoundProperty_s &soundProperty, const am_sourceID_t sourceID)
{
- logInfo(__METHOD_NAME__,"sourceID=", sourceID, "soundPropertyType=", soundProperty.type, "soundPropertyValue=", soundProperty.value);
+ logInfo(__METHOD_NAME__, "sourceID=", sourceID, "soundPropertyType=", soundProperty.type, "soundPropertyValue=", soundProperty.value);
return (mControlSender->hookUserSetMainSourceSoundProperty(sourceID, soundProperty));
}
-am_Error_e CAmCommandReceiver::setSystemProperty(const am_SystemProperty_s & property)
+am_Error_e CAmCommandReceiver::setSystemProperty(const am_SystemProperty_s &property)
{
- logInfo(__METHOD_NAME__,"type=", property.type, "systemPropertyValue=", property.value);
+ logInfo(__METHOD_NAME__, "type=", property.type, "systemPropertyValue=", property.value);
return (mControlSender->hookUserSetSystemProperty(property));
}
-am_Error_e CAmCommandReceiver::getVolume(const am_sinkID_t sinkID, am_mainVolume_t& mainVolume) const
+am_Error_e CAmCommandReceiver::getVolume(const am_sinkID_t sinkID, am_mainVolume_t &mainVolume) const
{
return (mDatabaseHandler->getSinkMainVolume(sinkID, mainVolume));
}
-am_Error_e CAmCommandReceiver::getListMainConnections(std::vector<am_MainConnectionType_s> & listConnections) const
+am_Error_e CAmCommandReceiver::getListMainConnections(std::vector<am_MainConnectionType_s> &listConnections) const
{
return (mDatabaseHandler->getListVisibleMainConnections(listConnections));
}
-am_Error_e CAmCommandReceiver::getListMainSinks(std::vector<am_SinkType_s>& listMainSinks) const
+am_Error_e CAmCommandReceiver::getListMainSinks(std::vector<am_SinkType_s> &listMainSinks) const
{
return (mDatabaseHandler->getListMainSinks(listMainSinks));
}
-am_Error_e CAmCommandReceiver::getListMainSources(std::vector<am_SourceType_s>& listMainSources) const
+am_Error_e CAmCommandReceiver::getListMainSources(std::vector<am_SourceType_s> &listMainSources) const
{
return (mDatabaseHandler->getListMainSources(listMainSources));
}
-am_Error_e CAmCommandReceiver::getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s> & listSoundProperties) const
+am_Error_e CAmCommandReceiver::getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s> &listSoundProperties) const
{
return (mDatabaseHandler->getListMainSinkSoundProperties(sinkID, listSoundProperties));
}
-am_Error_e CAmCommandReceiver::getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s> & listSourceProperties) const
+am_Error_e CAmCommandReceiver::getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s> &listSourceProperties) const
{
return (mDatabaseHandler->getListMainSourceSoundProperties(sourceID, listSourceProperties));
}
-am_Error_e CAmCommandReceiver::getListSourceClasses(std::vector<am_SourceClass_s> & listSourceClasses) const
+am_Error_e CAmCommandReceiver::getListSourceClasses(std::vector<am_SourceClass_s> &listSourceClasses) const
{
return (mDatabaseHandler->getListSourceClasses(listSourceClasses));
}
-am_Error_e CAmCommandReceiver::getListSinkClasses(std::vector<am_SinkClass_s> & listSinkClasses) const
+am_Error_e CAmCommandReceiver::getListSinkClasses(std::vector<am_SinkClass_s> &listSinkClasses) const
{
return (mDatabaseHandler->getListSinkClasses(listSinkClasses));
}
-am_Error_e CAmCommandReceiver::getListSystemProperties(std::vector<am_SystemProperty_s> & listSystemProperties) const
+am_Error_e CAmCommandReceiver::getListSystemProperties(std::vector<am_SystemProperty_s> &listSystemProperties) const
{
return (mDatabaseHandler->getListSystemProperties(listSystemProperties));
}
-am_Error_e CAmCommandReceiver::getTimingInformation(const am_mainConnectionID_t mainConnectionID, am_timeSync_t & delay) const
+am_Error_e CAmCommandReceiver::getTimingInformation(const am_mainConnectionID_t mainConnectionID, am_timeSync_t &delay) const
{
return (mDatabaseHandler->getTimingInformation(mainConnectionID, delay));
}
-am_Error_e CAmCommandReceiver::getDBusConnectionWrapper(CAmDbusWrapper*& dbusConnectionWrapper) const
+am_Error_e CAmCommandReceiver::getDBusConnectionWrapper(CAmDbusWrapper * &dbusConnectionWrapper) const
{
#ifdef WITH_DBUS_WRAPPER
dbusConnectionWrapper = mDBusWrapper;
@@ -185,81 +184,91 @@ am_Error_e CAmCommandReceiver::getDBusConnectionWrapper(CAmDbusWrapper*& dbusCon
#endif /*WITH_DBUS_WRAPPER*/
}
-am_Error_e CAmCommandReceiver::getSocketHandler(CAmSocketHandler *& socketHandler) const
+am_Error_e CAmCommandReceiver::getSocketHandler(CAmSocketHandler * &socketHandler) const
{
socketHandler = mSocketHandler;
return (E_OK);
}
-void CAmCommandReceiver::getInterfaceVersion(std::string & version) const
+void CAmCommandReceiver::getInterfaceVersion(std::string &version) const
{
version = CommandVersion;
}
void CAmCommandReceiver::confirmCommandReady(const uint16_t handle, const am_Error_e error)
{
- if (error !=E_OK)
- mLastErrorStartup=error;
+ if (error != E_OK)
+ {
+ mLastErrorStartup = error;
+ }
+
mListStartupHandles.erase(std::remove(mListStartupHandles.begin(), mListStartupHandles.end(), handle), mListStartupHandles.end());
if (mWaitStartup && mListStartupHandles.empty())
+ {
mControlSender->confirmCommandReady(mLastErrorStartup);
+ }
}
void CAmCommandReceiver::confirmCommandRundown(const uint16_t handle, const am_Error_e error)
{
- if (error !=E_OK)
- mLastErrorRundown=error;
+ if (error != E_OK)
+ {
+ mLastErrorRundown = error;
+ }
+
mListRundownHandles.erase(std::remove(mListRundownHandles.begin(), mListRundownHandles.end(), handle), mListRundownHandles.end());
if (mWaitRundown && mListRundownHandles.empty())
+ {
mControlSender->confirmCommandRundown(mLastErrorRundown);
+ }
}
uint16_t CAmCommandReceiver::getStartupHandle()
{
- uint16_t handle = ++handleCount; //todo: handle overflow
+ uint16_t handle = ++handleCount; // todo: handle overflow
mListStartupHandles.push_back(handle);
return (handle);
}
uint16_t CAmCommandReceiver::getRundownHandle()
{
- uint16_t handle = ++handleCount; //todo: handle overflow
+ uint16_t handle = ++handleCount; // todo: handle overflow
mListRundownHandles.push_back(handle);
return (handle);
}
void CAmCommandReceiver::waitOnStartup(bool startup)
{
- mWaitStartup = startup;
- mLastErrorStartup=E_OK;
+ mWaitStartup = startup;
+ mLastErrorStartup = E_OK;
}
-am_Error_e CAmCommandReceiver::getListMainSinkNotificationConfigurations(const am_sinkID_t sinkID, std::vector<am_NotificationConfiguration_s>& listMainNotificationConfigurations) const
+am_Error_e CAmCommandReceiver::getListMainSinkNotificationConfigurations(const am_sinkID_t sinkID, std::vector<am_NotificationConfiguration_s> &listMainNotificationConfigurations) const
{
- return (mDatabaseHandler->getListMainSinkNotificationConfigurations(sinkID,listMainNotificationConfigurations));
+ return (mDatabaseHandler->getListMainSinkNotificationConfigurations(sinkID, listMainNotificationConfigurations));
}
-am_Error_e CAmCommandReceiver::getListMainSourceNotificationConfigurations(const am_sourceID_t sourceID, std::vector<am_NotificationConfiguration_s>& listMainNotificationConfigurations) const
+am_Error_e CAmCommandReceiver::getListMainSourceNotificationConfigurations(const am_sourceID_t sourceID, std::vector<am_NotificationConfiguration_s> &listMainNotificationConfigurations) const
{
- return (mDatabaseHandler->getListMainSourceNotificationConfigurations(sourceID,listMainNotificationConfigurations));
+ return (mDatabaseHandler->getListMainSourceNotificationConfigurations(sourceID, listMainNotificationConfigurations));
}
-am_Error_e CAmCommandReceiver::setMainSinkNotificationConfiguration(const am_sinkID_t sinkID, const am_NotificationConfiguration_s& mainNotificationConfiguration)
+am_Error_e CAmCommandReceiver::setMainSinkNotificationConfiguration(const am_sinkID_t sinkID, const am_NotificationConfiguration_s &mainNotificationConfiguration)
{
- logInfo(__METHOD_NAME__,"sinkID=", sinkID, " type=",mainNotificationConfiguration.type, " parameter=", mainNotificationConfiguration.parameter, "status=",mainNotificationConfiguration.status);
- return (mControlSender->hookUserSetMainSinkNotificationConfiguration(sinkID,mainNotificationConfiguration));
+ logInfo(__METHOD_NAME__, "sinkID=", sinkID, " type=", mainNotificationConfiguration.type, " parameter=", mainNotificationConfiguration.parameter, "status=", mainNotificationConfiguration.status);
+ return (mControlSender->hookUserSetMainSinkNotificationConfiguration(sinkID, mainNotificationConfiguration));
}
-am_Error_e CAmCommandReceiver::setMainSourceNotificationConfiguration(const am_sourceID_t sourceID, const am_NotificationConfiguration_s& mainNotificationConfiguration)
+am_Error_e CAmCommandReceiver::setMainSourceNotificationConfiguration(const am_sourceID_t sourceID, const am_NotificationConfiguration_s &mainNotificationConfiguration)
{
- logInfo(__METHOD_NAME__,"sourceID=", sourceID, " type=",mainNotificationConfiguration.type, " parameter=", mainNotificationConfiguration.parameter, "status=",mainNotificationConfiguration.status);
- return (mControlSender->hookUserSetMainSourceNotificationConfiguration(sourceID,mainNotificationConfiguration));
+ logInfo(__METHOD_NAME__, "sourceID=", sourceID, " type=", mainNotificationConfiguration.type, " parameter=", mainNotificationConfiguration.parameter, "status=", mainNotificationConfiguration.status);
+ return (mControlSender->hookUserSetMainSourceNotificationConfiguration(sourceID, mainNotificationConfiguration));
}
void CAmCommandReceiver::waitOnRundown(bool rundown)
{
- mWaitRundown = rundown;
- mLastErrorStartup=E_OK;
+ mWaitRundown = rundown;
+ mLastErrorStartup = E_OK;
}
}
diff --git a/AudioManagerCore/src/CAmCommandSender.cpp b/AudioManagerCore/src/CAmCommandSender.cpp
index 1a61883..d1a4a22 100644
--- a/AudioManagerCore/src/CAmCommandSender.cpp
+++ b/AudioManagerCore/src/CAmCommandSender.cpp
@@ -35,7 +35,7 @@
#include "CAmDltWrapper.h"
#include "audiomanagerconfig.h"
-#define __METHOD_NAME__ std::string (std::string("CAmCommandSender::") + __func__)
+#define __METHOD_NAME__ std::string(std::string("CAmCommandSender::") + __func__)
namespace am
{
@@ -43,135 +43,143 @@ namespace am
/**
* macro to call all interfaces
*/
-#define CALL_ALL_INTERFACES(...) \
- std::vector<IAmCommandSend*>::iterator iter = mListInterfaces.begin(); \
- std::vector<IAmCommandSend*>::iterator iterEnd = mListInterfaces.end(); \
- for (; iter<iterEnd;++iter) \
- { \
- (*iter)->__VA_ARGS__; \
- }
-
-CAmCommandSender::CAmCommandSender(const std::vector<std::string>& listOfPluginDirectories, CAmSocketHandler *iSocketHandler) :
- CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks(),
- mListInterfaces(),
- mListLibraryHandles(),
- mListLibraryNames(),
- mCommandReceiver(),
- mSerializer(iSocketHandler)
+#define CALL_ALL_INTERFACES(...) \
+ std::vector<IAmCommandSend *>::iterator iter = mListInterfaces.begin(); \
+ std::vector<IAmCommandSend *>::iterator iterEnd = mListInterfaces.end(); \
+ for (; iter < iterEnd; ++iter) \
+ { \
+ (*iter)->__VA_ARGS__; \
+ }
+
+CAmCommandSender::CAmCommandSender(const std::vector<std::string> &listOfPluginDirectories, CAmSocketHandler *iSocketHandler)
+ : CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks()
+ , mListInterfaces()
+ , mListLibraryHandles()
+ , mListLibraryNames()
+ , mCommandReceiver()
+ , mSerializer(iSocketHandler)
{
loadPlugins(listOfPluginDirectories);
- dboNewMainConnection = [&](const am_MainConnectionType_s& mainConnection) {
- mSerializer.asyncCall(this, &CAmCommandSender::cbNewMainConnection, mainConnection);
- };
+ dboNewMainConnection = [&](const am_MainConnectionType_s &mainConnection) {
+ mSerializer.asyncCall(this, &CAmCommandSender::cbNewMainConnection, mainConnection);
+ };
dboRemovedMainConnection = [&](const am_mainConnectionID_t mainConnection) {
- mSerializer.asyncCall(this, &CAmCommandSender::cbRemovedMainConnection, mainConnection);
- };
- dboNewSink = [&](const am_Sink_s& sink) {
- if (sink.visible)
- {
- am_SinkType_s s;
- s.availability = sink.available;
- s.muteState = sink.muteState;
- s.name = sink.name;
- s.sinkClassID = sink.sinkClassID;
- s.sinkID = sink.sinkID;
- s.volume = sink.mainVolume;
- typedef void(CAmCommandSender::*TMeth)(am::am_SinkType_s);
- mSerializer.asyncCall<CAmCommandSender, TMeth, am::am_SinkType_s>(this, &CAmCommandSender::cbNewSink, s);
- }
- };
- dboNewSource = [&](const am_Source_s& source) {
- if (source.visible)
- {
- am_SourceType_s s;
- s.availability = source.available;
- s.name = source.name;
- s.sourceClassID = source.sourceClassID;
- s.sourceID = source.sourceID;
- typedef void(CAmCommandSender::*TMeth)(am::am_SourceType_s);
- mSerializer.asyncCall<CAmCommandSender, TMeth, am::am_SourceType_s>(this, &CAmCommandSender::cbNewSource, s);
- }
- };
+ mSerializer.asyncCall(this, &CAmCommandSender::cbRemovedMainConnection, mainConnection);
+ };
+ dboNewSink = [&](const am_Sink_s &sink) {
+ if (sink.visible)
+ {
+ am_SinkType_s s;
+ s.availability = sink.available;
+ s.muteState = sink.muteState;
+ s.name = sink.name;
+ s.sinkClassID = sink.sinkClassID;
+ s.sinkID = sink.sinkID;
+ s.volume = sink.mainVolume;
+ typedef void (CAmCommandSender::*TMeth)(am::am_SinkType_s);
+ mSerializer.asyncCall<CAmCommandSender, TMeth, am::am_SinkType_s>(this, &CAmCommandSender::cbNewSink, s);
+ }
+ };
+ dboNewSource = [&](const am_Source_s &source) {
+ if (source.visible)
+ {
+ am_SourceType_s s;
+ s.availability = source.available;
+ s.name = source.name;
+ s.sourceClassID = source.sourceClassID;
+ s.sourceID = source.sourceID;
+ typedef void (CAmCommandSender::*TMeth)(am::am_SourceType_s);
+ mSerializer.asyncCall<CAmCommandSender, TMeth, am::am_SourceType_s>(this, &CAmCommandSender::cbNewSource, s);
+ }
+ };
dboRemovedSink = [&](const am_sinkID_t sinkID, const bool visible) {
- if (visible)
- mSerializer.asyncCall(this, &CAmCommandSender::cbRemovedSink, sinkID);
- };
+ if (visible)
+ {
+ mSerializer.asyncCall(this, &CAmCommandSender::cbRemovedSink, sinkID);
+ }
+ };
dboRemovedSource = [&](const am_sourceID_t sourceID, const bool visible) {
- if (visible)
- mSerializer.asyncCall(this, &CAmCommandSender::cbRemovedSource, sourceID);
- };
+ if (visible)
+ {
+ mSerializer.asyncCall(this, &CAmCommandSender::cbRemovedSource, sourceID);
+ }
+ };
dboNumberOfSinkClassesChanged = [&]() {
- mSerializer.asyncCall(this, &CAmCommandSender::cbNumberOfSinkClassesChanged);
- };
+ mSerializer.asyncCall(this, &CAmCommandSender::cbNumberOfSinkClassesChanged);
+ };
dboNumberOfSourceClassesChanged = [&]() {
- mSerializer.asyncCall(this, &CAmCommandSender::cbNumberOfSourceClassesChanged);
- };
+ mSerializer.asyncCall(this, &CAmCommandSender::cbNumberOfSourceClassesChanged);
+ };
dboMainConnectionStateChanged = [&](const am_mainConnectionID_t connectionID, const am_ConnectionState_e connectionState) {
- mSerializer.asyncCall(this, &CAmCommandSender::cbMainConnectionStateChanged, connectionID, connectionState);
- };
- dboMainSinkSoundPropertyChanged = [&](const am_sinkID_t sinkID, const am_MainSoundProperty_s& SoundProperty) {
- mSerializer.asyncCall(this, &CAmCommandSender::cbMainSinkSoundPropertyChanged, sinkID, SoundProperty);
- };
- dboMainSourceSoundPropertyChanged = [&](const am_sourceID_t sourceID, const am_MainSoundProperty_s& SoundProperty) {
- mSerializer.asyncCall(this, &CAmCommandSender::cbMainSourceSoundPropertyChanged, sourceID, SoundProperty);
- };
- dboSinkAvailabilityChanged = [&](const am_sinkID_t sinkID, const am_Availability_s & availability) {
- mSerializer.asyncCall(this, &CAmCommandSender::cbSinkAvailabilityChanged, sinkID, availability);
- };
- dboSourceAvailabilityChanged = [&](const am_sourceID_t sourceID, const am_Availability_s & availability) {
- mSerializer.asyncCall(this, &CAmCommandSender::cbSourceAvailabilityChanged, sourceID, availability);
- };
+ mSerializer.asyncCall(this, &CAmCommandSender::cbMainConnectionStateChanged, connectionID, connectionState);
+ };
+ dboMainSinkSoundPropertyChanged = [&](const am_sinkID_t sinkID, const am_MainSoundProperty_s &SoundProperty) {
+ mSerializer.asyncCall(this, &CAmCommandSender::cbMainSinkSoundPropertyChanged, sinkID, SoundProperty);
+ };
+ dboMainSourceSoundPropertyChanged = [&](const am_sourceID_t sourceID, const am_MainSoundProperty_s &SoundProperty) {
+ mSerializer.asyncCall(this, &CAmCommandSender::cbMainSourceSoundPropertyChanged, sourceID, SoundProperty);
+ };
+ dboSinkAvailabilityChanged = [&](const am_sinkID_t sinkID, const am_Availability_s &availability) {
+ mSerializer.asyncCall(this, &CAmCommandSender::cbSinkAvailabilityChanged, sinkID, availability);
+ };
+ dboSourceAvailabilityChanged = [&](const am_sourceID_t sourceID, const am_Availability_s &availability) {
+ mSerializer.asyncCall(this, &CAmCommandSender::cbSourceAvailabilityChanged, sourceID, availability);
+ };
dboVolumeChanged = [&](const am_sinkID_t sinkID, const am_mainVolume_t volume) {
- mSerializer.asyncCall(this, &CAmCommandSender::cbVolumeChanged, sinkID, volume);
- };
+ mSerializer.asyncCall(this, &CAmCommandSender::cbVolumeChanged, sinkID, volume);
+ };
dboSinkMuteStateChanged = [&](const am_sinkID_t sinkID, const am_MuteState_e muteState) {
- mSerializer.asyncCall(this, &CAmCommandSender::cbSinkMuteStateChanged, sinkID, muteState);
- };
- dboSystemPropertyChanged = [&](const am_SystemProperty_s& SystemProperty) {
- mSerializer.asyncCall(this, &CAmCommandSender::cbSystemPropertyChanged, SystemProperty);
- };
+ mSerializer.asyncCall(this, &CAmCommandSender::cbSinkMuteStateChanged, sinkID, muteState);
+ };
+ dboSystemPropertyChanged = [&](const am_SystemProperty_s &SystemProperty) {
+ mSerializer.asyncCall(this, &CAmCommandSender::cbSystemPropertyChanged, SystemProperty);
+ };
dboTimingInformationChanged = [&](const am_mainConnectionID_t mainConnection, const am_timeSync_t time) {
- mSerializer.asyncCall(this, &CAmCommandSender::cbTimingInformationChanged, mainConnection, time);
- };
- dboSinkUpdated = [&](const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties, const bool visible) {
- if (visible)
- mSerializer.asyncCall(this, &CAmCommandSender::cbSinkUpdated, sinkID, sinkClassID, listMainSoundProperties);
- };
- dboSourceUpdated = [&](const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties, const bool visible) {
- if (visible)
- mSerializer.asyncCall(this, &CAmCommandSender::cbSinkUpdated, sourceID, sourceClassID, listMainSoundProperties);
- };
+ mSerializer.asyncCall(this, &CAmCommandSender::cbTimingInformationChanged, mainConnection, time);
+ };
+ dboSinkUpdated = [&](const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_MainSoundProperty_s> &listMainSoundProperties, const bool visible) {
+ if (visible)
+ {
+ mSerializer.asyncCall(this, &CAmCommandSender::cbSinkUpdated, sinkID, sinkClassID, listMainSoundProperties);
+ }
+ };
+ dboSourceUpdated = [&](const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_MainSoundProperty_s> &listMainSoundProperties, const bool visible) {
+ if (visible)
+ {
+ mSerializer.asyncCall(this, &CAmCommandSender::cbSinkUpdated, sourceID, sourceClassID, listMainSoundProperties);
+ }
+ };
dboSinkMainNotificationConfigurationChanged = [&](const am_sinkID_t sinkID, const am_NotificationConfiguration_s mainNotificationConfiguration) {
- mSerializer.asyncCall(this, &CAmCommandSender::cbSinkMainNotificationConfigurationChanged, sinkID, mainNotificationConfiguration);
- };
+ mSerializer.asyncCall(this, &CAmCommandSender::cbSinkMainNotificationConfigurationChanged, sinkID, mainNotificationConfiguration);
+ };
dboSourceMainNotificationConfigurationChanged = [&](const am_sourceID_t sourceID, const am_NotificationConfiguration_s mainNotificationConfiguration) {
- mSerializer.asyncCall(this, &CAmCommandSender::cbSourceMainNotificationConfigurationChanged, sourceID, mainNotificationConfiguration);
- };
+ mSerializer.asyncCall(this, &CAmCommandSender::cbSourceMainNotificationConfigurationChanged, sourceID, mainNotificationConfiguration);
+ };
}
-void CAmCommandSender::loadPlugins(const std::vector<std::string>& listOfPluginDirectories)
+void CAmCommandSender::loadPlugins(const std::vector<std::string> &listOfPluginDirectories)
{
if (listOfPluginDirectories.empty())
{
- logError(__METHOD_NAME__,"List of commandplugins is empty");
+ logError(__METHOD_NAME__, "List of commandplugins is empty");
}
- std::vector<std::string> sharedLibraryNameList;
- std::vector<std::string>::const_iterator dirIter = listOfPluginDirectories.begin();
+ std::vector<std::string> sharedLibraryNameList;
+ std::vector<std::string>::const_iterator dirIter = listOfPluginDirectories.begin();
std::vector<std::string>::const_iterator dirIterEnd = listOfPluginDirectories.end();
// search communicator plugins in configured directories
for (; dirIter < dirIterEnd; ++dirIter)
{
- const char* directoryName = dirIter->c_str();
- logInfo(__METHOD_NAME__,"Searching for CommandPlugins in", *dirIter);
+ const char *directoryName = dirIter->c_str();
+ logInfo(__METHOD_NAME__, "Searching for CommandPlugins in", *dirIter);
DIR *directory = opendir(directoryName);
if (!directory)
{
- logError(__METHOD_NAME__,"Error opening directory ", *dirIter);
+ logError(__METHOD_NAME__, "Error opening directory ", *dirIter);
continue;
}
@@ -180,10 +188,10 @@ void CAmCommandSender::loadPlugins(const std::vector<std::string>& listOfPluginD
while ((itemInDirectory = readdir(directory)))
{
unsigned char entryType = itemInDirectory->d_type;
- std::string entryName = itemInDirectory->d_name;
- std::string fullName = *dirIter + "/" + entryName;
+ std::string entryName = itemInDirectory->d_name;
+ std::string fullName = *dirIter + "/" + entryName;
- bool regularFile = (entryType == DT_REG || entryType == DT_LNK);
+ bool regularFile = (entryType == DT_REG || entryType == DT_LNK);
bool sharedLibExtension = ("so" == entryName.substr(entryName.find_last_of(".") + 1));
// Handle cases where readdir() could not determine the file type
@@ -193,7 +201,7 @@ void CAmCommandSender::loadPlugins(const std::vector<std::string>& listOfPluginD
if (stat(fullName.c_str(), &buf))
{
- logInfo(__METHOD_NAME__,"Failed to stat file: ", entryName, errno);
+ logInfo(__METHOD_NAME__, "Failed to stat file: ", entryName, errno);
continue;
}
@@ -206,36 +214,37 @@ void CAmCommandSender::loadPlugins(const std::vector<std::string>& listOfPluginD
sharedLibraryNameList.push_back(name + "/" + entryName);
}
}
+
closedir(directory);
}
// iterate all communicator plugins and start them
- std::vector<std::string>::iterator iter = sharedLibraryNameList.begin();
+ std::vector<std::string>::iterator iter = sharedLibraryNameList.begin();
std::vector<std::string>::iterator iterEnd = sharedLibraryNameList.end();
for (; iter < iterEnd; ++iter)
{
- logInfo(__METHOD_NAME__,"Loading CommandSender plugin", *iter);
- IAmCommandSend* (*createFunc)();
- void* tempLibHandle = NULL;
- createFunc = getCreateFunction<IAmCommandSend*()>(*iter, tempLibHandle);
+ logInfo(__METHOD_NAME__, "Loading CommandSender plugin", *iter);
+ IAmCommandSend *(*createFunc)();
+ void *tempLibHandle = NULL;
+ createFunc = getCreateFunction<IAmCommandSend *()>(*iter, tempLibHandle);
if (!createFunc)
{
- logInfo(__METHOD_NAME__,"Entry point of CommandPlugin not found", *iter);
+ logInfo(__METHOD_NAME__, "Entry point of CommandPlugin not found", *iter);
continue;
}
- IAmCommandSend* commander = createFunc();
+ IAmCommandSend *commander = createFunc();
if (!commander)
{
- logInfo(__METHOD_NAME__,"CommandPlugin initialization failed. Entry Function not callable");
+ logInfo(__METHOD_NAME__, "CommandPlugin initialization failed. Entry Function not callable");
dlclose(tempLibHandle);
continue;
}
- //check libversion
+ // check libversion
std::string version, cVersion(CommandVersion);
commander->getInterfaceVersion(version);
uint16_t minorVersion, majorVersion, cMinorVersion, cMajorVersion;
@@ -246,7 +255,7 @@ void CAmCommandSender::loadPlugins(const std::vector<std::string>& listOfPluginD
if (majorVersion < cMajorVersion || ((majorVersion == cMajorVersion) && (minorVersion > cMinorVersion)))
{
- logError(__METHOD_NAME__,"CommandInterface initialization failed. Version of Interface to old");
+ logError(__METHOD_NAME__, "CommandInterface initialization failed. Version of Interface to old");
dlclose(tempLibHandle);
continue;
}
@@ -259,7 +268,7 @@ void CAmCommandSender::loadPlugins(const std::vector<std::string>& listOfPluginD
CAmCommandSender::~CAmCommandSender()
{
- //unloadLibraries();
+ // unloadLibraries();
}
am_Error_e CAmCommandSender::startupInterfaces(CAmCommandReceiver *iCommandReceiver)
@@ -267,8 +276,8 @@ am_Error_e CAmCommandSender::startupInterfaces(CAmCommandReceiver *iCommandRecei
mCommandReceiver = iCommandReceiver;
am_Error_e returnError = E_OK;
- std::vector<IAmCommandSend*>::iterator iter = mListInterfaces.begin();
- std::vector<IAmCommandSend*>::iterator iterEnd = mListInterfaces.end();
+ std::vector<IAmCommandSend *>::iterator iter = mListInterfaces.begin();
+ std::vector<IAmCommandSend *>::iterator iterEnd = mListInterfaces.end();
for (; iter < iterEnd; ++iter)
{
am_Error_e error = (*iter)->startupInterface(iCommandReceiver);
@@ -277,6 +286,7 @@ am_Error_e CAmCommandSender::startupInterfaces(CAmCommandReceiver *iCommandRecei
returnError = error;
}
}
+
return (returnError);
}
@@ -292,47 +302,47 @@ void CAmCommandSender::cbNumberOfSourceClassesChanged()
void CAmCommandSender::cbMainConnectionStateChanged(const am_mainConnectionID_t connectionID, const am_ConnectionState_e connectionState)
{
- CALL_ALL_INTERFACES(cbMainConnectionStateChanged(connectionID,connectionState))
+ CALL_ALL_INTERFACES(cbMainConnectionStateChanged(connectionID, connectionState))
}
-void CAmCommandSender::cbMainSinkSoundPropertyChanged(const am_sinkID_t sinkID, const am_MainSoundProperty_s& SoundProperty)
+void CAmCommandSender::cbMainSinkSoundPropertyChanged(const am_sinkID_t sinkID, const am_MainSoundProperty_s &SoundProperty)
{
- CALL_ALL_INTERFACES(cbMainSinkSoundPropertyChanged(sinkID,SoundProperty))
+ CALL_ALL_INTERFACES(cbMainSinkSoundPropertyChanged(sinkID, SoundProperty))
}
-void CAmCommandSender::cbMainSourceSoundPropertyChanged(const am_sourceID_t sourceID, const am_MainSoundProperty_s& SoundProperty)
+void CAmCommandSender::cbMainSourceSoundPropertyChanged(const am_sourceID_t sourceID, const am_MainSoundProperty_s &SoundProperty)
{
- CALL_ALL_INTERFACES(cbMainSourceSoundPropertyChanged(sourceID,SoundProperty))
+ CALL_ALL_INTERFACES(cbMainSourceSoundPropertyChanged(sourceID, SoundProperty))
}
-void CAmCommandSender::cbSinkAvailabilityChanged(const am_sinkID_t sinkID, const am_Availability_s & availability)
+void CAmCommandSender::cbSinkAvailabilityChanged(const am_sinkID_t sinkID, const am_Availability_s &availability)
{
- CALL_ALL_INTERFACES(cbSinkAvailabilityChanged(sinkID,availability))
+ CALL_ALL_INTERFACES(cbSinkAvailabilityChanged(sinkID, availability))
}
-void CAmCommandSender::cbSourceAvailabilityChanged(const am_sourceID_t sourceID, const am_Availability_s & availability)
+void CAmCommandSender::cbSourceAvailabilityChanged(const am_sourceID_t sourceID, const am_Availability_s &availability)
{
- CALL_ALL_INTERFACES(cbSourceAvailabilityChanged(sourceID,availability))
+ CALL_ALL_INTERFACES(cbSourceAvailabilityChanged(sourceID, availability))
}
void CAmCommandSender::cbVolumeChanged(const am_sinkID_t sinkID, const am_mainVolume_t volume)
{
- CALL_ALL_INTERFACES(cbVolumeChanged(sinkID,volume))
+ CALL_ALL_INTERFACES(cbVolumeChanged(sinkID, volume))
}
void CAmCommandSender::cbSinkMuteStateChanged(const am_sinkID_t sinkID, const am_MuteState_e muteState)
{
- CALL_ALL_INTERFACES(cbSinkMuteStateChanged(sinkID,muteState))
+ CALL_ALL_INTERFACES(cbSinkMuteStateChanged(sinkID, muteState))
}
-void CAmCommandSender::cbSystemPropertyChanged(const am_SystemProperty_s & SystemProperty)
+void CAmCommandSender::cbSystemPropertyChanged(const am_SystemProperty_s &SystemProperty)
{
CALL_ALL_INTERFACES(cbSystemPropertyChanged(SystemProperty))
}
void CAmCommandSender::cbTimingInformationChanged(const am_mainConnectionID_t mainConnection, const am_timeSync_t time)
{
- CALL_ALL_INTERFACES(cbTimingInformationChanged(mainConnection,time))
+ CALL_ALL_INTERFACES(cbTimingInformationChanged(mainConnection, time))
}
void CAmCommandSender::cbNewMainConnection(const am_MainConnectionType_s mainConnection)
@@ -369,20 +379,20 @@ void CAmCommandSender::setCommandReady()
{
mCommandReceiver->waitOnStartup(false);
- //create a list of handles
+ // create a list of handles
std::vector<uint16_t> listStartupHandles;
for (size_t i = 0; i < mListInterfaces.size(); i++)
{
listStartupHandles.push_back(mCommandReceiver->getStartupHandle());
}
- //set the receiver ready to wait for replies
+ // set the receiver ready to wait for replies
mCommandReceiver->waitOnStartup(true);
- //now do the calls
- std::vector<IAmCommandSend*>::iterator iter = mListInterfaces.begin();
- std::vector<IAmCommandSend*>::iterator iterEnd = mListInterfaces.end();
- std::vector<uint16_t>::const_iterator handleIter(listStartupHandles.begin());
+ // now do the calls
+ std::vector<IAmCommandSend *>::iterator iter = mListInterfaces.begin();
+ std::vector<IAmCommandSend *>::iterator iterEnd = mListInterfaces.end();
+ std::vector<uint16_t>::const_iterator handleIter(listStartupHandles.begin());
for (; iter < iterEnd; ++iter)
{
(*iter)->setCommandReady(*(handleIter++));
@@ -392,74 +402,75 @@ void CAmCommandSender::setCommandReady()
void CAmCommandSender::setCommandRundown()
{
mCommandReceiver->waitOnRundown(false);
- //create a list of handles
+ // create a list of handles
std::vector<uint16_t> listStartupHandles;
for (size_t i = 0; i < mListInterfaces.size(); i++)
{
listStartupHandles.push_back(mCommandReceiver->getRundownHandle());
}
- //set the receiver ready to wait for replies
+ // set the receiver ready to wait for replies
mCommandReceiver->waitOnRundown(true);
- //now do the calls
- std::vector<IAmCommandSend*>::iterator iter = mListInterfaces.begin();
- std::vector<IAmCommandSend*>::iterator iterEnd = mListInterfaces.end();
- std::vector<uint16_t>::const_iterator handleIter(listStartupHandles.begin());
+ // now do the calls
+ std::vector<IAmCommandSend *>::iterator iter = mListInterfaces.begin();
+ std::vector<IAmCommandSend *>::iterator iterEnd = mListInterfaces.end();
+ std::vector<uint16_t>::const_iterator handleIter(listStartupHandles.begin());
for (; iter < iterEnd; ++iter)
{
(*iter)->setCommandRundown(*(handleIter++));
}
}
-void CAmCommandSender::getInterfaceVersion(std::string & version) const
+void CAmCommandSender::getInterfaceVersion(std::string &version) const
{
version = CommandVersion;
}
-am_Error_e am::CAmCommandSender::getListPlugins(std::vector<std::string> & interfaces) const
+am_Error_e am::CAmCommandSender::getListPlugins(std::vector<std::string> &interfaces) const
{
interfaces = mListLibraryNames;
return (E_OK);
}
-void CAmCommandSender::cbSinkUpdated(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties)
+void CAmCommandSender::cbSinkUpdated(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_MainSoundProperty_s> &listMainSoundProperties)
{
- CALL_ALL_INTERFACES(cbSinkUpdated(sinkID,sinkClassID,listMainSoundProperties));
+ CALL_ALL_INTERFACES(cbSinkUpdated(sinkID, sinkClassID, listMainSoundProperties));
}
-void CAmCommandSender::cbSourceUpdated(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties)
+void CAmCommandSender::cbSourceUpdated(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_MainSoundProperty_s> &listMainSoundProperties)
{
- CALL_ALL_INTERFACES(cbSourceUpdated(sourceID,sourceClassID,listMainSoundProperties));
+ CALL_ALL_INTERFACES(cbSourceUpdated(sourceID, sourceClassID, listMainSoundProperties));
}
-void CAmCommandSender::cbSinkNotification(const am_sinkID_t sinkID, const am_NotificationPayload_s& notification)
+void CAmCommandSender::cbSinkNotification(const am_sinkID_t sinkID, const am_NotificationPayload_s &notification)
{
- CALL_ALL_INTERFACES(cbSinkNotification(sinkID,notification));
+ CALL_ALL_INTERFACES(cbSinkNotification(sinkID, notification));
}
-void CAmCommandSender::cbSourceNotification(const am_sourceID_t sourceID, const am_NotificationPayload_s& notification)
+void CAmCommandSender::cbSourceNotification(const am_sourceID_t sourceID, const am_NotificationPayload_s &notification)
{
- CALL_ALL_INTERFACES(cbSourceNotification(sourceID,notification));
+ CALL_ALL_INTERFACES(cbSourceNotification(sourceID, notification));
}
-void CAmCommandSender::cbSinkMainNotificationConfigurationChanged(const am_sinkID_t sinkID, const am_NotificationConfiguration_s& mainNotificationConfiguration)
+void CAmCommandSender::cbSinkMainNotificationConfigurationChanged(const am_sinkID_t sinkID, const am_NotificationConfiguration_s &mainNotificationConfiguration)
{
- CALL_ALL_INTERFACES(cbMainSinkNotificationConfigurationChanged(sinkID,mainNotificationConfiguration));
+ CALL_ALL_INTERFACES(cbMainSinkNotificationConfigurationChanged(sinkID, mainNotificationConfiguration));
}
-void CAmCommandSender::cbSourceMainNotificationConfigurationChanged(const am_sourceID_t sourceID, const am_NotificationConfiguration_s& mainNotificationConfiguration)
+void CAmCommandSender::cbSourceMainNotificationConfigurationChanged(const am_sourceID_t sourceID, const am_NotificationConfiguration_s &mainNotificationConfiguration)
{
- CALL_ALL_INTERFACES(cbMainSourceNotificationConfigurationChanged(sourceID,mainNotificationConfiguration));
+ CALL_ALL_INTERFACES(cbMainSourceNotificationConfigurationChanged(sourceID, mainNotificationConfiguration));
}
void CAmCommandSender::unloadLibraries(void)
{
- std::vector<void*>::iterator iterator = mListLibraryHandles.begin();
+ std::vector<void *>::iterator iterator = mListLibraryHandles.begin();
for (; iterator < mListLibraryHandles.end(); ++iterator)
{
dlclose(*iterator);
}
+
mListLibraryHandles.clear();
}
diff --git a/AudioManagerCore/src/CAmControlReceiver.cpp b/AudioManagerCore/src/CAmControlReceiver.cpp
index 3280c04..6fec509 100644
--- a/AudioManagerCore/src/CAmControlReceiver.cpp
+++ b/AudioManagerCore/src/CAmControlReceiver.cpp
@@ -35,78 +35,78 @@
namespace am {
-#define __METHOD_NAME__ std::string (std::string("CAmControlReceiver::") + __func__)
+#define __METHOD_NAME__ std::string(std::string("CAmControlReceiver::") + __func__)
-CAmControlReceiver::CAmControlReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmRoutingSender *iRoutingSender, CAmCommandSender *iCommandSender, CAmSocketHandler *iSocketHandler, CAmRouter* iRouter) :
- mDatabaseHandler(iDatabaseHandler),
- mRoutingSender(iRoutingSender),
- mCommandSender(iCommandSender),
- mSocketHandler(iSocketHandler),
- mRouter(iRouter),
- mNodeStateCommunicator(NULL)
+CAmControlReceiver::CAmControlReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmRoutingSender *iRoutingSender, CAmCommandSender *iCommandSender, CAmSocketHandler *iSocketHandler, CAmRouter *iRouter)
+ : mDatabaseHandler(iDatabaseHandler)
+ , mRoutingSender(iRoutingSender)
+ , mCommandSender(iCommandSender)
+ , mSocketHandler(iSocketHandler)
+ , mRouter(iRouter)
+ , mNodeStateCommunicator(NULL)
{
- assert(mDatabaseHandler!=NULL);
- assert(mRoutingSender!=NULL);
- assert(mCommandSender!=NULL);
- assert(mSocketHandler!=NULL);
- assert(mRouter!=NULL);
+ assert(mDatabaseHandler != NULL);
+ assert(mRoutingSender != NULL);
+ assert(mCommandSender != NULL);
+ assert(mSocketHandler != NULL);
+ assert(mRouter != NULL);
}
CAmControlReceiver::~CAmControlReceiver()
{
}
-am_Error_e CAmControlReceiver::getRoute(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector<am_Route_s> & returnList)
+am_Error_e CAmControlReceiver::getRoute(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector<am_Route_s> &returnList)
{
return (mRouter->getRoute(onlyfree, sourceID, sinkID, returnList));
}
-am_Error_e CAmControlReceiver::connect(am_Handle_s & handle, am_connectionID_t & connectionID, const am_CustomConnectionFormat_t format, const am_sourceID_t sourceID, const am_sinkID_t sinkID)
+am_Error_e CAmControlReceiver::connect(am_Handle_s &handle, am_connectionID_t &connectionID, const am_CustomConnectionFormat_t format, const am_sourceID_t sourceID, const am_sinkID_t sinkID)
{
- return (mRoutingSender->asyncConnect(handle, connectionID, sourceID, sinkID, format));
+ return (mRoutingSender->asyncConnect(handle, connectionID, sourceID, sinkID, format));
}
-am_Error_e CAmControlReceiver::disconnect(am_Handle_s & handle, const am_connectionID_t connectionID)
+am_Error_e CAmControlReceiver::disconnect(am_Handle_s &handle, const am_connectionID_t connectionID)
{
return (mRoutingSender->asyncDisconnect(handle, connectionID));
}
-am_Error_e CAmControlReceiver::crossfade(am_Handle_s & handle, const am_HotSink_e hotSource, const am_crossfaderID_t crossfaderID, const am_CustomRampType_t rampType, const am_time_t rampTime)
+am_Error_e CAmControlReceiver::crossfade(am_Handle_s &handle, const am_HotSink_e hotSource, const am_crossfaderID_t crossfaderID, const am_CustomRampType_t rampType, const am_time_t rampTime)
{
return (mRoutingSender->asyncCrossFade(handle, crossfaderID, hotSource, rampType, rampTime));
}
-am_Error_e CAmControlReceiver::setSourceState(am_Handle_s & handle, const am_sourceID_t sourceID, const am_SourceState_e state)
+am_Error_e CAmControlReceiver::setSourceState(am_Handle_s &handle, const am_sourceID_t sourceID, const am_SourceState_e state)
{
return (mRoutingSender->asyncSetSourceState(handle, sourceID, state));
}
-am_Error_e CAmControlReceiver::setSinkVolume(am_Handle_s & handle, const am_sinkID_t sinkID, const am_volume_t volume, const am_CustomRampType_t ramp, const am_time_t time)
+am_Error_e CAmControlReceiver::setSinkVolume(am_Handle_s &handle, const am_sinkID_t sinkID, const am_volume_t volume, const am_CustomRampType_t ramp, const am_time_t time)
{
return (mRoutingSender->asyncSetSinkVolume(handle, sinkID, volume, ramp, time));
}
-am_Error_e CAmControlReceiver::setSourceVolume(am_Handle_s & handle, const am_sourceID_t sourceID, const am_volume_t volume, const am_CustomRampType_t rampType, const am_time_t time)
+am_Error_e CAmControlReceiver::setSourceVolume(am_Handle_s &handle, const am_sourceID_t sourceID, const am_volume_t volume, const am_CustomRampType_t rampType, const am_time_t time)
{
return (mRoutingSender->asyncSetSourceVolume(handle, sourceID, volume, rampType, time));
}
-am_Error_e CAmControlReceiver::setSinkSoundProperty(am_Handle_s & handle, const am_sinkID_t sinkID, const am_SoundProperty_s & soundProperty)
+am_Error_e CAmControlReceiver::setSinkSoundProperty(am_Handle_s &handle, const am_sinkID_t sinkID, const am_SoundProperty_s &soundProperty)
{
return (mRoutingSender->asyncSetSinkSoundProperty(handle, sinkID, soundProperty));
}
-am_Error_e CAmControlReceiver::setSinkSoundProperties(am_Handle_s & handle, const am_sinkID_t sinkID, const std::vector<am_SoundProperty_s> & listSoundProperties)
+am_Error_e CAmControlReceiver::setSinkSoundProperties(am_Handle_s &handle, const am_sinkID_t sinkID, const std::vector<am_SoundProperty_s> &listSoundProperties)
{
return (mRoutingSender->asyncSetSinkSoundProperties(handle, listSoundProperties, sinkID));
}
-am_Error_e CAmControlReceiver::setSourceSoundProperty(am_Handle_s & handle, const am_sourceID_t sourceID, const am_SoundProperty_s & soundProperty)
+am_Error_e CAmControlReceiver::setSourceSoundProperty(am_Handle_s &handle, const am_sourceID_t sourceID, const am_SoundProperty_s &soundProperty)
{
return (mRoutingSender->asyncSetSourceSoundProperty(handle, sourceID, soundProperty));
}
-am_Error_e CAmControlReceiver::setSourceSoundProperties(am_Handle_s & handle, const am_sourceID_t sourceID, const std::vector<am_SoundProperty_s> & listSoundProperties)
+am_Error_e CAmControlReceiver::setSourceSoundProperties(am_Handle_s &handle, const am_sourceID_t sourceID, const std::vector<am_SoundProperty_s> &listSoundProperties)
{
return (mRoutingSender->asyncSetSourceSoundProperties(handle, listSoundProperties, sourceID));
}
@@ -121,57 +121,57 @@ am_Error_e CAmControlReceiver::abortAction(const am_Handle_s handle)
return (mRoutingSender->asyncAbort(handle));
}
-am_Error_e CAmControlReceiver::enterDomainDB(const am_Domain_s & domainData, am_domainID_t & domainID)
+am_Error_e CAmControlReceiver::enterDomainDB(const am_Domain_s &domainData, am_domainID_t &domainID)
{
return (mDatabaseHandler->enterDomainDB(domainData, domainID));
}
-am_Error_e CAmControlReceiver::enterMainConnectionDB(const am_MainConnection_s & mainConnectionData, am_mainConnectionID_t & connectionID)
+am_Error_e CAmControlReceiver::enterMainConnectionDB(const am_MainConnection_s &mainConnectionData, am_mainConnectionID_t &connectionID)
{
return (mDatabaseHandler->enterMainConnectionDB(mainConnectionData, connectionID));
}
-am_Error_e CAmControlReceiver::enterSinkDB(const am_Sink_s & sinkData, am_sinkID_t & sinkID)
+am_Error_e CAmControlReceiver::enterSinkDB(const am_Sink_s &sinkData, am_sinkID_t &sinkID)
{
return (mDatabaseHandler->enterSinkDB(sinkData, sinkID));
}
-am_Error_e CAmControlReceiver::enterCrossfaderDB(const am_Crossfader_s & crossfaderData, am_crossfaderID_t & crossfaderID)
+am_Error_e CAmControlReceiver::enterCrossfaderDB(const am_Crossfader_s &crossfaderData, am_crossfaderID_t &crossfaderID)
{
return (mDatabaseHandler->enterCrossfaderDB(crossfaderData, crossfaderID));
}
-am_Error_e CAmControlReceiver::enterGatewayDB(const am_Gateway_s & gatewayData, am_gatewayID_t & gatewayID)
+am_Error_e CAmControlReceiver::enterGatewayDB(const am_Gateway_s &gatewayData, am_gatewayID_t &gatewayID)
{
return (mDatabaseHandler->enterGatewayDB(gatewayData, gatewayID));
}
-am_Error_e CAmControlReceiver::enterConverterDB(const am_Converter_s & converterData, am_converterID_t & converterID)
+am_Error_e CAmControlReceiver::enterConverterDB(const am_Converter_s &converterData, am_converterID_t &converterID)
{
return (mDatabaseHandler->enterConverterDB(converterData, converterID));
}
-am_Error_e CAmControlReceiver::enterSourceDB(const am_Source_s & sourceData, am_sourceID_t & sourceID)
+am_Error_e CAmControlReceiver::enterSourceDB(const am_Source_s &sourceData, am_sourceID_t &sourceID)
{
return (mDatabaseHandler->enterSourceDB(sourceData, sourceID));
}
-am_Error_e CAmControlReceiver::enterSinkClassDB(const am_SinkClass_s & sinkClass, am_sinkClass_t & sinkClassID)
+am_Error_e CAmControlReceiver::enterSinkClassDB(const am_SinkClass_s &sinkClass, am_sinkClass_t &sinkClassID)
{
return (mDatabaseHandler->enterSinkClassDB(sinkClass, sinkClassID));
}
-am_Error_e CAmControlReceiver::enterSourceClassDB(am_sourceClass_t & sourceClassID, const am_SourceClass_s & sourceClass)
+am_Error_e CAmControlReceiver::enterSourceClassDB(am_sourceClass_t &sourceClassID, const am_SourceClass_s &sourceClass)
{
return (mDatabaseHandler->enterSourceClassDB(sourceClassID, sourceClass));
}
-am_Error_e CAmControlReceiver::enterSystemPropertiesListDB(const std::vector<am_SystemProperty_s> & listSystemProperties)
+am_Error_e CAmControlReceiver::enterSystemPropertiesListDB(const std::vector<am_SystemProperty_s> &listSystemProperties)
{
return (mDatabaseHandler->enterSystemProperties(listSystemProperties));
}
-am_Error_e CAmControlReceiver::changeMainConnectionRouteDB(const am_mainConnectionID_t mainconnectionID, const std::vector<am_connectionID_t>& listConnectionID)
+am_Error_e CAmControlReceiver::changeMainConnectionRouteDB(const am_mainConnectionID_t mainconnectionID, const std::vector<am_connectionID_t> &listConnectionID)
{
return (mDatabaseHandler->changeMainConnectionRouteDB(mainconnectionID, listConnectionID));
}
@@ -186,7 +186,7 @@ am_Error_e CAmControlReceiver::changeSinkMainVolumeDB(const am_mainVolume_t main
return (mDatabaseHandler->changeSinkMainVolumeDB(mainVolume, sinkID));
}
-am_Error_e CAmControlReceiver::changeSinkAvailabilityDB(const am_Availability_s & availability, const am_sinkID_t sinkID)
+am_Error_e CAmControlReceiver::changeSinkAvailabilityDB(const am_Availability_s &availability, const am_sinkID_t sinkID)
{
return (mDatabaseHandler->changeSinkAvailabilityDB(availability, sinkID));
}
@@ -201,22 +201,22 @@ am_Error_e CAmControlReceiver::changeSinkMuteStateDB(const am_MuteState_e muteSt
return (mDatabaseHandler->changeSinkMuteStateDB(muteState, sinkID));
}
-am_Error_e CAmControlReceiver::changeMainSinkSoundPropertyDB(const am_MainSoundProperty_s & soundProperty, const am_sinkID_t sinkID)
+am_Error_e CAmControlReceiver::changeMainSinkSoundPropertyDB(const am_MainSoundProperty_s &soundProperty, const am_sinkID_t sinkID)
{
return (mDatabaseHandler->changeMainSinkSoundPropertyDB(soundProperty, sinkID));
}
-am_Error_e CAmControlReceiver::changeMainSourceSoundPropertyDB(const am_MainSoundProperty_s & soundProperty, const am_sourceID_t sourceID)
+am_Error_e CAmControlReceiver::changeMainSourceSoundPropertyDB(const am_MainSoundProperty_s &soundProperty, const am_sourceID_t sourceID)
{
return (mDatabaseHandler->changeMainSourceSoundPropertyDB(soundProperty, sourceID));
}
-am_Error_e CAmControlReceiver::changeSourceAvailabilityDB(const am_Availability_s & availability, const am_sourceID_t sourceID)
+am_Error_e CAmControlReceiver::changeSourceAvailabilityDB(const am_Availability_s &availability, const am_sourceID_t sourceID)
{
return (mDatabaseHandler->changeSourceAvailabilityDB(availability, sourceID));
}
-am_Error_e CAmControlReceiver::changeSystemPropertyDB(const am_SystemProperty_s & property)
+am_Error_e CAmControlReceiver::changeSystemPropertyDB(const am_SystemProperty_s &property)
{
return (mDatabaseHandler->changeSystemPropertyDB(property));
}
@@ -256,138 +256,137 @@ am_Error_e CAmControlReceiver::removeDomainDB(const am_domainID_t domainID)
return (mDatabaseHandler->removeDomainDB(domainID));
}
-am_Error_e CAmControlReceiver::getSourceClassInfoDB(const am_sourceID_t sourceID, am_SourceClass_s & classInfo) const
+am_Error_e CAmControlReceiver::getSourceClassInfoDB(const am_sourceID_t sourceID, am_SourceClass_s &classInfo) const
{
return (mDatabaseHandler->getSourceClassInfoDB(sourceID, classInfo));
}
-am_Error_e CAmControlReceiver::getSinkClassInfoDB(const am_sinkID_t sinkID, am_SinkClass_s & sinkClass) const
+am_Error_e CAmControlReceiver::getSinkClassInfoDB(const am_sinkID_t sinkID, am_SinkClass_s &sinkClass) const
{
return (mDatabaseHandler->getSinkClassInfoDB(sinkID, sinkClass));
}
-am_Error_e CAmControlReceiver::getSinkInfoDB(const am_sinkID_t sinkID, am_Sink_s & sinkData) const
+am_Error_e CAmControlReceiver::getSinkInfoDB(const am_sinkID_t sinkID, am_Sink_s &sinkData) const
{
return (mDatabaseHandler->getSinkInfoDB(sinkID, sinkData));
}
-am_Error_e CAmControlReceiver::getSourceInfoDB(const am_sourceID_t sourceID, am_Source_s & sourceData) const
+am_Error_e CAmControlReceiver::getSourceInfoDB(const am_sourceID_t sourceID, am_Source_s &sourceData) const
{
return (mDatabaseHandler->getSourceInfoDB(sourceID, sourceData));
}
-am_Error_e CAmControlReceiver::getMainConnectionInfoDB(const am_mainConnectionID_t mainConnectionID, am_MainConnection_s & mainConnectionData) const
+am_Error_e CAmControlReceiver::getMainConnectionInfoDB(const am_mainConnectionID_t mainConnectionID, am_MainConnection_s &mainConnectionData) const
{
return (mDatabaseHandler->getMainConnectionInfoDB(mainConnectionID, mainConnectionData));
}
-am_Error_e CAmControlReceiver::getGatewayInfoDB(const am_gatewayID_t gatewayID, am_Gateway_s & gatewayData) const
+am_Error_e CAmControlReceiver::getGatewayInfoDB(const am_gatewayID_t gatewayID, am_Gateway_s &gatewayData) const
{
return (mDatabaseHandler->getGatewayInfoDB(gatewayID, gatewayData));
}
-am_Error_e CAmControlReceiver::getConverterInfoDB(const am_converterID_t converterID, am_Converter_s & converterData) const
+am_Error_e CAmControlReceiver::getConverterInfoDB(const am_converterID_t converterID, am_Converter_s &converterData) const
{
return (mDatabaseHandler->getConverterInfoDB(converterID, converterData));
}
-
-am_Error_e CAmControlReceiver::getCrossfaderInfoDB(const am_crossfaderID_t crossfaderID, am_Crossfader_s & crossfaderData) const
+am_Error_e CAmControlReceiver::getCrossfaderInfoDB(const am_crossfaderID_t crossfaderID, am_Crossfader_s &crossfaderData) const
{
return (mDatabaseHandler->getCrossfaderInfoDB(crossfaderID, crossfaderData));
}
-am_Error_e CAmControlReceiver::getListSinksOfDomain(const am_domainID_t domainID, std::vector<am_sinkID_t> & listSinkID) const
+am_Error_e CAmControlReceiver::getListSinksOfDomain(const am_domainID_t domainID, std::vector<am_sinkID_t> &listSinkID) const
{
return (mDatabaseHandler->getListSinksOfDomain(domainID, listSinkID));
}
-am_Error_e CAmControlReceiver::getListSourcesOfDomain(const am_domainID_t domainID, std::vector<am_sourceID_t> & listSourceID) const
+am_Error_e CAmControlReceiver::getListSourcesOfDomain(const am_domainID_t domainID, std::vector<am_sourceID_t> &listSourceID) const
{
return (mDatabaseHandler->getListSourcesOfDomain(domainID, listSourceID));
}
-am_Error_e CAmControlReceiver::getListCrossfadersOfDomain(const am_domainID_t domainID, std::vector<am_crossfaderID_t> & listGatewaysID) const
+am_Error_e CAmControlReceiver::getListCrossfadersOfDomain(const am_domainID_t domainID, std::vector<am_crossfaderID_t> &listGatewaysID) const
{
return (mDatabaseHandler->getListCrossfadersOfDomain(domainID, listGatewaysID));
}
-am_Error_e CAmControlReceiver::getListGatewaysOfDomain(const am_domainID_t domainID, std::vector<am_gatewayID_t> & listGatewaysID) const
+am_Error_e CAmControlReceiver::getListGatewaysOfDomain(const am_domainID_t domainID, std::vector<am_gatewayID_t> &listGatewaysID) const
{
return (mDatabaseHandler->getListGatewaysOfDomain(domainID, listGatewaysID));
}
-am_Error_e CAmControlReceiver::getListConvertersOfDomain(const am_domainID_t domainID,std::vector<am_converterID_t>& listConverterID) const
+am_Error_e CAmControlReceiver::getListConvertersOfDomain(const am_domainID_t domainID, std::vector<am_converterID_t> &listConverterID) const
{
- return (mDatabaseHandler->getListConvertersOfDomain(domainID,listConverterID));
+ return (mDatabaseHandler->getListConvertersOfDomain(domainID, listConverterID));
}
-am_Error_e CAmControlReceiver::getListMainConnections(std::vector<am_MainConnection_s> & listMainConnections) const
+am_Error_e CAmControlReceiver::getListMainConnections(std::vector<am_MainConnection_s> &listMainConnections) const
{
return (mDatabaseHandler->getListMainConnections(listMainConnections));
}
-am_Error_e CAmControlReceiver::getListDomains(std::vector<am_Domain_s> & listDomains) const
+am_Error_e CAmControlReceiver::getListDomains(std::vector<am_Domain_s> &listDomains) const
{
return (mDatabaseHandler->getListDomains(listDomains));
}
-am_Error_e CAmControlReceiver::getListConnections(std::vector<am_Connection_s> & listConnections) const
+am_Error_e CAmControlReceiver::getListConnections(std::vector<am_Connection_s> &listConnections) const
{
return (mDatabaseHandler->getListConnections(listConnections));
}
-am_Error_e CAmControlReceiver::getListSinks(std::vector<am_Sink_s> & listSinks) const
+am_Error_e CAmControlReceiver::getListSinks(std::vector<am_Sink_s> &listSinks) const
{
return (mDatabaseHandler->getListSinks(listSinks));
}
-am_Error_e CAmControlReceiver::getListSources(std::vector<am_Source_s> & listSources) const
+am_Error_e CAmControlReceiver::getListSources(std::vector<am_Source_s> &listSources) const
{
return (mDatabaseHandler->getListSources(listSources));
}
-am_Error_e CAmControlReceiver::getListSourceClasses(std::vector<am_SourceClass_s> & listSourceClasses) const
+am_Error_e CAmControlReceiver::getListSourceClasses(std::vector<am_SourceClass_s> &listSourceClasses) const
{
return (mDatabaseHandler->getListSourceClasses(listSourceClasses));
}
-am_Error_e CAmControlReceiver::getListHandles(std::vector<am_Handle_s> & listHandles) const
+am_Error_e CAmControlReceiver::getListHandles(std::vector<am_Handle_s> &listHandles) const
{
return (mRoutingSender->getListHandles(listHandles));
}
-am_Error_e CAmControlReceiver::getListCrossfaders(std::vector<am_Crossfader_s> & listCrossfaders) const
+am_Error_e CAmControlReceiver::getListCrossfaders(std::vector<am_Crossfader_s> &listCrossfaders) const
{
return (mDatabaseHandler->getListCrossfaders(listCrossfaders));
}
-am_Error_e CAmControlReceiver::getListGateways(std::vector<am_Gateway_s> & listGateways) const
+am_Error_e CAmControlReceiver::getListGateways(std::vector<am_Gateway_s> &listGateways) const
{
return (mDatabaseHandler->getListGateways(listGateways));
}
-am_Error_e CAmControlReceiver::getListConverters(std::vector<am_Converter_s>& listConverters) const
+am_Error_e CAmControlReceiver::getListConverters(std::vector<am_Converter_s> &listConverters) const
{
return (mDatabaseHandler->getListConverters(listConverters));
}
-am_Error_e CAmControlReceiver::getListSinkClasses(std::vector<am_SinkClass_s> & listSinkClasses) const
+am_Error_e CAmControlReceiver::getListSinkClasses(std::vector<am_SinkClass_s> &listSinkClasses) const
{
return (mDatabaseHandler->getListSinkClasses(listSinkClasses));
}
-am_Error_e CAmControlReceiver::getListSystemProperties(std::vector<am_SystemProperty_s> & listSystemProperties) const
+am_Error_e CAmControlReceiver::getListSystemProperties(std::vector<am_SystemProperty_s> &listSystemProperties) const
{
return (mDatabaseHandler->getListSystemProperties(listSystemProperties));
}
-am_Error_e CAmControlReceiver::changeSinkClassInfoDB(const am_SinkClass_s & classInfo)
+am_Error_e CAmControlReceiver::changeSinkClassInfoDB(const am_SinkClass_s &classInfo)
{
return (mDatabaseHandler->changeSinkClassInfoDB(classInfo));
}
-am_Error_e CAmControlReceiver::changeSourceClassInfoDB(const am_SourceClass_s & classInfo)
+am_Error_e CAmControlReceiver::changeSourceClassInfoDB(const am_SourceClass_s &classInfo)
{
return(mDatabaseHandler->changeSourceClassInfoDB(classInfo));
}
@@ -410,32 +409,34 @@ void CAmControlReceiver::setCommandReady()
void CAmControlReceiver::setRoutingReady()
{
- logVerbose(__METHOD_NAME__);
+ logVerbose(__METHOD_NAME__);
mRoutingSender->setRoutingReady();
}
void CAmControlReceiver::confirmControllerReady(const am_Error_e error)
{
- if (error!=E_OK)
- logError(__METHOD_NAME__,"controller reported error", error);
+ if (error != E_OK)
+ {
+ logError(__METHOD_NAME__, "controller reported error", error);
+ }
}
void CAmControlReceiver::confirmControllerRundown(const am_Error_e error)
{
- if (error!=E_OK)
- {
- logError(__METHOD_NAME__,"exited with error ",error);
- //we might be blocked here -> so lets better exit right away
- throw std::runtime_error("controller Confirmed with error");
- }
+ if (error != E_OK)
+ {
+ logError(__METHOD_NAME__, "exited with error ", error);
+ // we might be blocked here -> so lets better exit right away
+ throw std::runtime_error("controller Confirmed with error");
+ }
- logVerbose (__METHOD_NAME__,"will exit now");
+ logVerbose(__METHOD_NAME__, "will exit now");
- //end the mainloop here...
- mSocketHandler->exit_mainloop();
+ // end the mainloop here...
+ mSocketHandler->exit_mainloop();
}
-am_Error_e CAmControlReceiver::getSocketHandler(CAmSocketHandler *& socketHandler)
+am_Error_e CAmControlReceiver::getSocketHandler(CAmSocketHandler * &socketHandler)
{
socketHandler = mSocketHandler;
return (E_OK);
@@ -443,7 +444,7 @@ am_Error_e CAmControlReceiver::getSocketHandler(CAmSocketHandler *& socketHandle
void CAmControlReceiver::setCommandRundown()
{
- logInfo(__METHOD_NAME__);
+ logInfo(__METHOD_NAME__);
mCommandSender->setCommandRundown();
}
@@ -453,129 +454,128 @@ void CAmControlReceiver::setRoutingRundown()
mRoutingSender->setRoutingRundown();
}
-void CAmControlReceiver::getInterfaceVersion(std::string & version) const
+void CAmControlReceiver::getInterfaceVersion(std::string &version) const
{
version = ControlVersion;
}
-am_Error_e CAmControlReceiver::changeSourceDB(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 CAmControlReceiver::changeSourceDB(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)
{
- return (mDatabaseHandler->changeSourceDB(sourceID,sourceClassID,listSoundProperties,listConnectionFormats,listMainSoundProperties));
+ return (mDatabaseHandler->changeSourceDB(sourceID, sourceClassID, listSoundProperties, listConnectionFormats, listMainSoundProperties));
}
-am_Error_e CAmControlReceiver::changeSinkDB(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)
+am_Error_e CAmControlReceiver::changeSinkDB(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)
{
- return (mDatabaseHandler->changeSinkDB(sinkID,sinkClassID,listSoundProperties,listConnectionFormats,listMainSoundProperties));
+ return (mDatabaseHandler->changeSinkDB(sinkID, sinkClassID, listSoundProperties, listConnectionFormats, listMainSoundProperties));
}
-am_Error_e CAmControlReceiver::changeGatewayDB(const am_gatewayID_t gatewayID, const std::vector<am_CustomConnectionFormat_t>& listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t>& listSinkConnectionFormats, const std::vector<bool>& convertionMatrix)
+am_Error_e CAmControlReceiver::changeGatewayDB(const am_gatewayID_t gatewayID, const std::vector<am_CustomConnectionFormat_t> &listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t> &listSinkConnectionFormats, const std::vector<bool> &convertionMatrix)
{
- return (mDatabaseHandler->changeGatewayDB(gatewayID,listSourceConnectionFormats,listSinkConnectionFormats,convertionMatrix));
+ return (mDatabaseHandler->changeGatewayDB(gatewayID, listSourceConnectionFormats, listSinkConnectionFormats, convertionMatrix));
}
-am_Error_e CAmControlReceiver::changeConverterDB(const am_converterID_t converterID, const std::vector<am_CustomConnectionFormat_t>& listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t>& listSinkConnectionFormats, const std::vector<bool>& convertionMatrix)
+am_Error_e CAmControlReceiver::changeConverterDB(const am_converterID_t converterID, const std::vector<am_CustomConnectionFormat_t> &listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t> &listSinkConnectionFormats, const std::vector<bool> &convertionMatrix)
{
- return (mDatabaseHandler->changeConverterDB(converterID,listSourceConnectionFormats,listSinkConnectionFormats,convertionMatrix));
+ return (mDatabaseHandler->changeConverterDB(converterID, listSourceConnectionFormats, listSinkConnectionFormats, convertionMatrix));
}
-am_Error_e CAmControlReceiver::setVolumes(am_Handle_s& handle, const std::vector<am_Volumes_s>& listVolumes)
+am_Error_e CAmControlReceiver::setVolumes(am_Handle_s &handle, const std::vector<am_Volumes_s> &listVolumes)
{
- return (mRoutingSender->asyncSetVolumes(handle,listVolumes));
+ return (mRoutingSender->asyncSetVolumes(handle, listVolumes));
}
-am_Error_e CAmControlReceiver::setSinkNotificationConfiguration(am_Handle_s& handle, const am_sinkID_t sinkID, const am_NotificationConfiguration_s& notificationConfiguration)
+am_Error_e CAmControlReceiver::setSinkNotificationConfiguration(am_Handle_s &handle, const am_sinkID_t sinkID, const am_NotificationConfiguration_s &notificationConfiguration)
{
- return (mRoutingSender->asyncSetSinkNotificationConfiguration(handle,sinkID,notificationConfiguration));
+ return (mRoutingSender->asyncSetSinkNotificationConfiguration(handle, sinkID, notificationConfiguration));
}
-am_Error_e CAmControlReceiver::setSourceNotificationConfiguration(am_Handle_s& handle, const am_sourceID_t sourceID, const am_NotificationConfiguration_s& notificationConfiguration)
+am_Error_e CAmControlReceiver::setSourceNotificationConfiguration(am_Handle_s &handle, const am_sourceID_t sourceID, const am_NotificationConfiguration_s &notificationConfiguration)
{
- return (mRoutingSender->asyncSetSourceNotificationConfiguration(handle,sourceID,notificationConfiguration));
+ return (mRoutingSender->asyncSetSourceNotificationConfiguration(handle, sourceID, notificationConfiguration));
}
-void CAmControlReceiver::sendMainSinkNotificationPayload(const am_sinkID_t sinkID, const am_NotificationPayload_s& notificationPayload)
+void CAmControlReceiver::sendMainSinkNotificationPayload(const am_sinkID_t sinkID, const am_NotificationPayload_s &notificationPayload)
{
- logVerbose(__METHOD_NAME__,"sinkID=",sinkID,"type=",notificationPayload.type,"value=",notificationPayload.value);
- mCommandSender->cbSinkNotification(sinkID,notificationPayload);
+ logVerbose(__METHOD_NAME__, "sinkID=", sinkID, "type=", notificationPayload.type, "value=", notificationPayload.value);
+ mCommandSender->cbSinkNotification(sinkID, notificationPayload);
}
-void CAmControlReceiver::sendMainSourceNotificationPayload(const am_sourceID_t sourceID, const am_NotificationPayload_s& notificationPayload)
+void CAmControlReceiver::sendMainSourceNotificationPayload(const am_sourceID_t sourceID, const am_NotificationPayload_s &notificationPayload)
{
- logVerbose(__METHOD_NAME__,"sourceID=",sourceID,"type=",notificationPayload.type,"value=",notificationPayload.value);
- mCommandSender->cbSourceNotification(sourceID,notificationPayload);
+ logVerbose(__METHOD_NAME__, "sourceID=", sourceID, "type=", notificationPayload.type, "value=", notificationPayload.value);
+ mCommandSender->cbSourceNotification(sourceID, notificationPayload);
}
-am_Error_e CAmControlReceiver::changeMainSinkNotificationConfigurationDB(const am_sinkID_t sinkID, const am_NotificationConfiguration_s& mainNotificationConfiguration)
+am_Error_e CAmControlReceiver::changeMainSinkNotificationConfigurationDB(const am_sinkID_t sinkID, const am_NotificationConfiguration_s &mainNotificationConfiguration)
{
- logVerbose(__METHOD_NAME__,"sinkID", sinkID);
- return (mDatabaseHandler->changeMainSinkNotificationConfigurationDB(sinkID,mainNotificationConfiguration));
+ logVerbose(__METHOD_NAME__, "sinkID", sinkID);
+ return (mDatabaseHandler->changeMainSinkNotificationConfigurationDB(sinkID, mainNotificationConfiguration));
}
-am_Error_e CAmControlReceiver::changeMainSourceNotificationConfigurationDB(const am_sourceID_t sourceID, const am_NotificationConfiguration_s& mainNotificationConfiguration)
+am_Error_e CAmControlReceiver::changeMainSourceNotificationConfigurationDB(const am_sourceID_t sourceID, const am_NotificationConfiguration_s &mainNotificationConfiguration)
{
- logVerbose(__METHOD_NAME__,"sourceID", sourceID);
- return (mDatabaseHandler->changeMainSourceNotificationConfigurationDB(sourceID,mainNotificationConfiguration));
+ logVerbose(__METHOD_NAME__, "sourceID", sourceID);
+ return (mDatabaseHandler->changeMainSourceNotificationConfigurationDB(sourceID, mainNotificationConfiguration));
}
-am_Error_e CAmControlReceiver::getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s>& listSoundproperties) const
+am_Error_e CAmControlReceiver::getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s> &listSoundproperties) const
{
- logVerbose(__METHOD_NAME__,"sinkID", sinkID);
- return (mDatabaseHandler->getListMainSinkSoundProperties(sinkID,listSoundproperties));
+ logVerbose(__METHOD_NAME__, "sinkID", sinkID);
+ return (mDatabaseHandler->getListMainSinkSoundProperties(sinkID, listSoundproperties));
}
-am_Error_e CAmControlReceiver::getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s>& listSoundproperties) const
+am_Error_e CAmControlReceiver::getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s> &listSoundproperties) const
{
- logVerbose(__METHOD_NAME__,"sourceID", sourceID);
- return (mDatabaseHandler->getListMainSourceSoundProperties(sourceID, listSoundproperties));
+ logVerbose(__METHOD_NAME__, "sourceID", sourceID);
+ return (mDatabaseHandler->getListMainSourceSoundProperties(sourceID, listSoundproperties));
}
-am_Error_e CAmControlReceiver::getListSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_SoundProperty_s>& listSoundproperties) const
+am_Error_e CAmControlReceiver::getListSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_SoundProperty_s> &listSoundproperties) const
{
- logVerbose(__METHOD_NAME__,"sinkID", sinkID);
- return (mDatabaseHandler->getListSinkSoundProperties(sinkID,listSoundproperties));
+ logVerbose(__METHOD_NAME__, "sinkID", sinkID);
+ return (mDatabaseHandler->getListSinkSoundProperties(sinkID, listSoundproperties));
}
-am_Error_e CAmControlReceiver::getListSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_SoundProperty_s>& listSoundproperties) const
+am_Error_e CAmControlReceiver::getListSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_SoundProperty_s> &listSoundproperties) const
{
- logVerbose(__METHOD_NAME__,"sourceID", sourceID);
- return (mDatabaseHandler->getListSourceSoundProperties(sourceID, listSoundproperties));
+ logVerbose(__METHOD_NAME__, "sourceID", sourceID);
+ return (mDatabaseHandler->getListSourceSoundProperties(sourceID, listSoundproperties));
}
-am_Error_e CAmControlReceiver::getMainSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomMainSoundPropertyType_t propertyType, int16_t& value) const
+am_Error_e CAmControlReceiver::getMainSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomMainSoundPropertyType_t propertyType, int16_t &value) const
{
- logVerbose(__METHOD_NAME__,"sinkID", sinkID);
- return (mDatabaseHandler->getMainSinkSoundPropertyValue(sinkID,propertyType,value));
+ logVerbose(__METHOD_NAME__, "sinkID", sinkID);
+ return (mDatabaseHandler->getMainSinkSoundPropertyValue(sinkID, propertyType, value));
}
-am_Error_e CAmControlReceiver::getSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomSoundPropertyType_t propertyType, int16_t& value) const
+am_Error_e CAmControlReceiver::getSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomSoundPropertyType_t propertyType, int16_t &value) const
{
- logVerbose(__METHOD_NAME__,"sinkID", sinkID);
- return (mDatabaseHandler->getSinkSoundPropertyValue(sinkID,propertyType,value));
+ logVerbose(__METHOD_NAME__, "sinkID", sinkID);
+ return (mDatabaseHandler->getSinkSoundPropertyValue(sinkID, propertyType, value));
}
-am_Error_e CAmControlReceiver::getMainSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomMainSoundPropertyType_t propertyType, int16_t& value) const
+am_Error_e CAmControlReceiver::getMainSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomMainSoundPropertyType_t propertyType, int16_t &value) const
{
- logVerbose(__METHOD_NAME__,"sourceID", sourceID);
- return (mDatabaseHandler->getMainSourceSoundPropertyValue(sourceID,propertyType,value));
+ logVerbose(__METHOD_NAME__, "sourceID", sourceID);
+ return (mDatabaseHandler->getMainSourceSoundPropertyValue(sourceID, propertyType, value));
}
-am_Error_e CAmControlReceiver::getSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomSoundPropertyType_t propertyType, int16_t& value) const
+am_Error_e CAmControlReceiver::getSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomSoundPropertyType_t propertyType, int16_t &value) const
{
- logVerbose(__METHOD_NAME__,"sourceID", sourceID);
- return (mDatabaseHandler->getSourceSoundPropertyValue(sourceID,propertyType,value));
+ logVerbose(__METHOD_NAME__, "sourceID", sourceID);
+ return (mDatabaseHandler->getSourceSoundPropertyValue(sourceID, propertyType, value));
}
-am_Error_e CAmControlReceiver::resyncConnectionState(const am_domainID_t domainID,std::vector<am_Connection_s>& listOfExistingConnections)
+am_Error_e CAmControlReceiver::resyncConnectionState(const am_domainID_t domainID, std::vector<am_Connection_s> &listOfExistingConnections)
{
- logInfo(__METHOD_NAME__,"domainID", domainID);
- return (mRoutingSender->resyncConnectionState(domainID,listOfExistingConnections));
+ logInfo(__METHOD_NAME__, "domainID", domainID);
+ return (mRoutingSender->resyncConnectionState(domainID, listOfExistingConnections));
}
am_Error_e CAmControlReceiver::removeHandle(const am_Handle_s handle)
{
- logInfo(__METHOD_NAME__,"handle", handle.handle);
- return (mRoutingSender->removeHandle(handle));
+ logInfo(__METHOD_NAME__, "handle", handle.handle);
+ return (mRoutingSender->removeHandle(handle));
}
}
-
diff --git a/AudioManagerCore/src/CAmControlSender.cpp b/AudioManagerCore/src/CAmControlSender.cpp
index d80460d..1baeb30 100644
--- a/AudioManagerCore/src/CAmControlSender.cpp
+++ b/AudioManagerCore/src/CAmControlSender.cpp
@@ -37,25 +37,25 @@
namespace am
{
-#define REQUIRED_INTERFACE_VERSION_MAJOR 1 //!< major interface version. All versions smaller than this will be rejected
+#define REQUIRED_INTERFACE_VERSION_MAJOR 1 //!< major interface version. All versions smaller than this will be rejected
#define REQUIRED_INTERFACE_VERSION_MINOR 0 //!< minor interface version. All versions smaller than this will be rejected
-CAmControlSender* CAmControlSender::mInstance=NULL;
+CAmControlSender *CAmControlSender::mInstance = NULL;
-CAmControlSender::CAmControlSender(std::string controlPluginFile,CAmSocketHandler* sockethandler) :
- receiverCallbackT(this, &CAmControlSender::receiverCallback),
- checkerCallbackT(this, &CAmControlSender::checkerCallback),
- dispatcherCallbackT(this, &CAmControlSender::dispatcherCallback),
- mPipe(),
- mlibHandle(NULL),
- mController(NULL),
- mSignal(0)
+CAmControlSender::CAmControlSender(std::string controlPluginFile, CAmSocketHandler *sockethandler)
+ : receiverCallbackT(this, &CAmControlSender::receiverCallback)
+ , checkerCallbackT(this, &CAmControlSender::checkerCallback)
+ , dispatcherCallbackT(this, &CAmControlSender::dispatcherCallback)
+ , mPipe()
+ , mlibHandle(NULL)
+ , mController(NULL)
+ , mSignal(0)
{
assert(sockethandler);
- //Check if a folder is given, then select the first plugin
+ // Check if a folder is given, then select the first plugin
struct stat buf;
- const char* conFile(controlPluginFile.c_str());
+ const char *conFile(controlPluginFile.c_str());
stat(conFile, &buf);
if (S_ISDIR(buf.st_mode))
{
@@ -74,35 +74,38 @@ CAmControlSender::CAmControlSender(std::string controlPluginFile,CAmSocketHandle
while ((itemInDirectory = readdir(directory)))
{
unsigned char entryType = itemInDirectory->d_type;
- std::string entryName = itemInDirectory->d_name;
- std::string fullName = directoryName + "/" + entryName;
+ std::string entryName = itemInDirectory->d_name;
+ std::string fullName = directoryName + "/" + entryName;
- bool regularFile = (entryType == DT_REG || entryType == DT_LNK);
+ bool regularFile = (entryType == DT_REG || entryType == DT_LNK);
bool sharedLibExtension = ("so" == entryName.substr(entryName.find_last_of(".") + 1));
// Handle cases where readdir() could not determine the file type
- if (entryType == DT_UNKNOWN) {
- struct stat buf;
+ if (entryType == DT_UNKNOWN)
+ {
+ struct stat buf;
- if (stat(fullName.c_str(), &buf)) {
- logInfo(__PRETTY_FUNCTION__,"Failed to stat file: ", entryName, errno);
- continue;
- }
+ if (stat(fullName.c_str(), &buf))
+ {
+ logInfo(__PRETTY_FUNCTION__, "Failed to stat file: ", entryName, errno);
+ continue;
+ }
- regularFile = S_ISREG(buf.st_mode);
- }
+ regularFile = S_ISREG(buf.st_mode);
+ }
if (regularFile && sharedLibExtension)
{
- controlPluginFile=directoryName + "/" + entryName;
- logInfo("Found ControlPlugin:", controlPluginFile);
- break;
+ controlPluginFile = directoryName + "/" + entryName;
+ logInfo("Found ControlPlugin:", controlPluginFile);
+ break;
}
}
+
closedir(directory);
-
+
}
-
+
std::ifstream isfile(controlPluginFile.c_str());
if (!isfile)
{
@@ -111,13 +114,13 @@ CAmControlSender::CAmControlSender(std::string controlPluginFile,CAmSocketHandle
}
else if (!controlPluginFile.empty())
{
- mInstance=this;
- IAmControlSend* (*createFunc)();
- createFunc = getCreateFunction<IAmControlSend*()>(controlPluginFile, mlibHandle);
- assert(createFunc!=NULL);
- mController = createFunc();
+ mInstance = this;
+ IAmControlSend *(*createFunc)();
+ createFunc = getCreateFunction<IAmControlSend *()>(controlPluginFile, mlibHandle);
+ assert(createFunc != NULL);
+ mController = createFunc();
mControlPluginFile = controlPluginFile;
- //check libversion
+ // check libversion
std::string version, cVersion(ControlVersion);
mController->getInterfaceVersion(version);
uint16_t minorVersion, majorVersion, cMinorVersion, cMajorVersion;
@@ -125,12 +128,10 @@ CAmControlSender::CAmControlSender(std::string controlPluginFile,CAmSocketHandle
std::istringstream(version.substr(2, 1)) >> minorVersion;
std::istringstream(cVersion.substr(0, 1)) >> cMajorVersion;
std::istringstream(cVersion.substr(2, 1)) >> cMinorVersion;
-
-
if (majorVersion < cMajorVersion || ((majorVersion == cMajorVersion) && (minorVersion < cMinorVersion)))
{
- logError("ControlSender::ControlSender: Interface Version of Controller too old, required version:",ControlVersion," Controller Version:",version,"exiting now");
+ logError("ControlSender::ControlSender: Interface Version of Controller too old, required version:", ControlVersion, " Controller Version:", version, "exiting now");
throw std::runtime_error("Interface Version of Controller too old");
}
}
@@ -139,14 +140,14 @@ CAmControlSender::CAmControlSender(std::string controlPluginFile,CAmSocketHandle
logError("ControlSender::ControlSender: No controller loaded !");
}
- //here we need a pipe to be able to call the rundown function out of the mainloop
+ // here we need a pipe to be able to call the rundown function out of the mainloop
if (pipe(mPipe) == -1)
{
logError("CAmControlSender could not create pipe!");
}
- //add the pipe to the poll - nothing needs to be proccessed here we just need the pipe to trigger the ppoll
- short event = 0;
+ // add the pipe to the poll - nothing needs to be proccessed here we just need the pipe to trigger the ppoll
+ short event = 0;
sh_pollHandle_t handle;
event |= POLLIN;
sockethandler->addFDPoll(mPipe[0], event, NULL, &receiverCallbackT, &checkerCallbackT, &dispatcherCallbackT, NULL, handle);
@@ -159,8 +160,8 @@ CAmControlSender::~CAmControlSender()
if (mlibHandle)
{
- void (*destroyFunc)(IAmControlSend*);
- destroyFunc = getDestroyFunction<void(IAmControlSend*)>(mControlPluginFile, mlibHandle);
+ void (*destroyFunc)(IAmControlSend *);
+ destroyFunc = getDestroyFunction<void(IAmControlSend *)>(mControlPluginFile, mlibHandle);
if (destroyFunc)
{
destroyFunc(mController);
@@ -169,11 +170,12 @@ CAmControlSender::~CAmControlSender()
{
logError("CAmControlSender Dtor: destroyFunc is invalid or not found");
}
+
dlclose(mlibHandle);
}
}
-am_Error_e CAmControlSender::hookUserConnectionRequest(const am_sourceID_t sourceID, const am_sinkID_t sinkID, am_mainConnectionID_t & mainConnectionID)
+am_Error_e CAmControlSender::hookUserConnectionRequest(const am_sourceID_t sourceID, const am_sinkID_t sinkID, am_mainConnectionID_t &mainConnectionID)
{
assert(mController);
return (mController->hookUserConnectionRequest(sourceID, sinkID, mainConnectionID));
@@ -185,19 +187,19 @@ am_Error_e CAmControlSender::hookUserDisconnectionRequest(const am_mainConnectio
return (mController->hookUserDisconnectionRequest(connectionID));
}
-am_Error_e CAmControlSender::hookUserSetMainSinkSoundProperty(const am_sinkID_t sinkID, const am_MainSoundProperty_s & soundProperty)
+am_Error_e CAmControlSender::hookUserSetMainSinkSoundProperty(const am_sinkID_t sinkID, const am_MainSoundProperty_s &soundProperty)
{
assert(mController);
return (mController->hookUserSetMainSinkSoundProperty(sinkID, soundProperty));
}
-am_Error_e CAmControlSender::hookUserSetMainSourceSoundProperty(const am_sourceID_t sourceID, const am_MainSoundProperty_s & soundProperty)
+am_Error_e CAmControlSender::hookUserSetMainSourceSoundProperty(const am_sourceID_t sourceID, const am_MainSoundProperty_s &soundProperty)
{
assert(mController);
return (mController->hookUserSetMainSourceSoundProperty(sourceID, soundProperty));
}
-am_Error_e CAmControlSender::hookUserSetSystemProperty(const am_SystemProperty_s & property)
+am_Error_e CAmControlSender::hookUserSetSystemProperty(const am_SystemProperty_s &property)
{
assert(mController);
return (mController->hookUserSetSystemProperty(property));
@@ -221,7 +223,7 @@ am_Error_e CAmControlSender::hookUserSetSinkMuteState(const am_sinkID_t sinkID,
return (mController->hookUserSetSinkMuteState(sinkID, muteState));
}
-am_Error_e CAmControlSender::hookSystemRegisterDomain(const am_Domain_s & domainData, am_domainID_t & domainID)
+am_Error_e CAmControlSender::hookSystemRegisterDomain(const am_Domain_s &domainData, am_domainID_t &domainID)
{
assert(mController);
return (mController->hookSystemRegisterDomain(domainData, domainID));
@@ -239,7 +241,7 @@ void CAmControlSender::hookSystemDomainRegistrationComplete(const am_domainID_t
return (mController->hookSystemDomainRegistrationComplete(domainID));
}
-am_Error_e CAmControlSender::hookSystemRegisterSink(const am_Sink_s & sinkData, am_sinkID_t & sinkID)
+am_Error_e CAmControlSender::hookSystemRegisterSink(const am_Sink_s &sinkData, am_sinkID_t &sinkID)
{
assert(mController);
return (mController->hookSystemRegisterSink(sinkData, sinkID));
@@ -251,7 +253,7 @@ am_Error_e CAmControlSender::hookSystemDeregisterSink(const am_sinkID_t sinkID)
return (mController->hookSystemDeregisterSink(sinkID));
}
-am_Error_e CAmControlSender::hookSystemRegisterSource(const am_Source_s & sourceData, am_sourceID_t & sourceID)
+am_Error_e CAmControlSender::hookSystemRegisterSource(const am_Source_s &sourceData, am_sourceID_t &sourceID)
{
assert(mController);
return (mController->hookSystemRegisterSource(sourceData, sourceID));
@@ -263,13 +265,13 @@ am_Error_e CAmControlSender::hookSystemDeregisterSource(const am_sourceID_t sour
return (mController->hookSystemDeregisterSource(sourceID));
}
-am_Error_e CAmControlSender::hookSystemRegisterGateway(const am_Gateway_s & gatewayData, am_gatewayID_t & gatewayID)
+am_Error_e CAmControlSender::hookSystemRegisterGateway(const am_Gateway_s &gatewayData, am_gatewayID_t &gatewayID)
{
assert(mController);
return (mController->hookSystemRegisterGateway(gatewayData, gatewayID));
}
-am_Error_e CAmControlSender::hookSystemRegisterConverter(const am_Converter_s& converterData, am_converterID_t& converterID)
+am_Error_e CAmControlSender::hookSystemRegisterConverter(const am_Converter_s &converterData, am_converterID_t &converterID)
{
assert(mController);
return (mController->hookSystemRegisterConverter(converterData, converterID));
@@ -287,7 +289,7 @@ am_Error_e CAmControlSender::hookSystemDeregisterConverter(const am_converterID_
return (mController->hookSystemDeregisterConverter(converterID));
}
-am_Error_e CAmControlSender::hookSystemRegisterCrossfader(const am_Crossfader_s & crossfaderData, am_crossfaderID_t & crossfaderID)
+am_Error_e CAmControlSender::hookSystemRegisterCrossfader(const am_Crossfader_s &crossfaderData, am_crossfaderID_t &crossfaderID)
{
assert(mController);
return (mController->hookSystemRegisterCrossfader(crossfaderData, crossfaderID));
@@ -317,13 +319,13 @@ void CAmControlSender::hookSystemInterruptStateChange(const am_sourceID_t source
mController->hookSystemInterruptStateChange(sourceID, interruptState);
}
-void CAmControlSender::hookSystemSinkAvailablityStateChange(const am_sinkID_t sinkID, const am_Availability_s & availability)
+void CAmControlSender::hookSystemSinkAvailablityStateChange(const am_sinkID_t sinkID, const am_Availability_s &availability)
{
assert(mController);
mController->hookSystemSinkAvailablityStateChange(sinkID, availability);
}
-void CAmControlSender::hookSystemSourceAvailablityStateChange(const am_sourceID_t sourceID, const am_Availability_s & availability)
+void CAmControlSender::hookSystemSourceAvailablityStateChange(const am_sourceID_t sourceID, const am_Availability_s &availability)
{
assert(mController);
mController->hookSystemSourceAvailablityStateChange(sourceID, availability);
@@ -335,7 +337,7 @@ void CAmControlSender::hookSystemDomainStateChange(const am_domainID_t domainID,
mController->hookSystemDomainStateChange(domainID, state);
}
-void CAmControlSender::hookSystemReceiveEarlyData(const std::vector<am_EarlyData_s> & data)
+void CAmControlSender::hookSystemReceiveEarlyData(const std::vector<am_EarlyData_s> &data)
{
assert(mController);
mController->hookSystemReceiveEarlyData(data);
@@ -403,6 +405,7 @@ am_Error_e CAmControlSender::startupController(IAmControlReceive *controlreceive
throw std::runtime_error("ControlSender::startupController: no Controller to startup! Exiting now ...");
return (E_NON_EXISTENT);
}
+
return (mController->startupController(controlreceiveinterface));
}
@@ -433,17 +436,17 @@ void CAmControlSender::setControllerReady()
void CAmControlSender::setControllerRundown(const int16_t signal)
{
assert(mController);
- logInfo("CAmControlSender::setControllerRundown received, signal=",signal);
+ logInfo("CAmControlSender::setControllerRundown received, signal=", signal);
mController->setControllerRundown(signal);
}
-am_Error_e am::CAmControlSender::getConnectionFormatChoice(const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_Route_s listRoute, const std::vector<am_CustomConnectionFormat_t> listPossibleConnectionFormats, std::vector<am_CustomConnectionFormat_t> & listPrioConnectionFormats)
+am_Error_e am::CAmControlSender::getConnectionFormatChoice(const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_Route_s listRoute, const std::vector<am_CustomConnectionFormat_t> listPossibleConnectionFormats, std::vector<am_CustomConnectionFormat_t> &listPrioConnectionFormats)
{
assert(mController);
return (mController->getConnectionFormatChoice(sourceID, sinkID, listRoute, listPossibleConnectionFormats, listPrioConnectionFormats));
}
-void CAmControlSender::getInterfaceVersion(std::string & version) const
+void CAmControlSender::getInterfaceVersion(std::string &version) const
{
version = ControlVersion;
}
@@ -472,116 +475,114 @@ void CAmControlSender::confirmRoutingRundown(const am_Error_e error)
mController->confirmRoutingRundown(error);
}
-am_Error_e CAmControlSender::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)
+am_Error_e CAmControlSender::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)
{
assert(mController);
- return (mController->hookSystemUpdateSink(sinkID,sinkClassID,listSoundProperties,listConnectionFormats,listMainSoundProperties));
+ return (mController->hookSystemUpdateSink(sinkID, sinkClassID, listSoundProperties, listConnectionFormats, listMainSoundProperties));
}
-am_Error_e CAmControlSender::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 CAmControlSender::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)
{
assert(mController);
- return (mController->hookSystemUpdateSource(sourceID,sourceClassID,listSoundProperties,listConnectionFormats,listMainSoundProperties));
+ return (mController->hookSystemUpdateSource(sourceID, sourceClassID, listSoundProperties, listConnectionFormats, listMainSoundProperties));
}
-am_Error_e CAmControlSender::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)
+am_Error_e CAmControlSender::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)
{
assert(mController);
- return (mController->hookSystemUpdateGateway(gatewayID,listSourceConnectionFormats,listSinkConnectionFromats,convertionMatrix));
+ return (mController->hookSystemUpdateGateway(gatewayID, listSourceConnectionFormats, listSinkConnectionFromats, convertionMatrix));
}
-am_Error_e CAmControlSender::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)
+am_Error_e CAmControlSender::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)
{
assert(mController);
- return (mController->hookSystemUpdateConverter(converterID,listSourceConnectionFormats,listSinkConnectionFromats,convertionMatrix));
+ return (mController->hookSystemUpdateConverter(converterID, listSourceConnectionFormats, listSinkConnectionFromats, convertionMatrix));
}
-void CAmControlSender::cbAckSetVolume(const am_Handle_s handle, const std::vector<am_Volumes_s>& listVolumes, const am_Error_e error)
+void CAmControlSender::cbAckSetVolume(const am_Handle_s handle, const std::vector<am_Volumes_s> &listVolumes, const am_Error_e error)
{
assert(mController);
- mController->cbAckSetVolumes(handle,listVolumes,error);
+ mController->cbAckSetVolumes(handle, listVolumes, error);
}
void CAmControlSender::cbAckSetSinkNotificationConfiguration(const am_Handle_s handle, const am_Error_e error)
{
assert(mController);
- mController->cbAckSetSinkNotificationConfiguration(handle,error);
+ mController->cbAckSetSinkNotificationConfiguration(handle, error);
}
void CAmControlSender::cbAckSetSourceNotificationConfiguration(const am_Handle_s handle, const am_Error_e error)
{
assert(mController);
- mController->cbAckSetSourceNotificationConfiguration(handle,error);
+ mController->cbAckSetSourceNotificationConfiguration(handle, error);
}
-void CAmControlSender::hookSinkNotificationDataChanged(const am_sinkID_t sinkID, const am_NotificationPayload_s& payload)
+void CAmControlSender::hookSinkNotificationDataChanged(const am_sinkID_t sinkID, const am_NotificationPayload_s &payload)
{
assert(mController);
- mController->hookSinkNotificationDataChanged(sinkID,payload);
+ mController->hookSinkNotificationDataChanged(sinkID, payload);
}
-void CAmControlSender::hookSourceNotificationDataChanged(const am_sourceID_t sourceID, const am_NotificationPayload_s& payload)
+void CAmControlSender::hookSourceNotificationDataChanged(const am_sourceID_t sourceID, const am_NotificationPayload_s &payload)
{
assert(mController);
- mController->hookSourceNotificationDataChanged(sourceID,payload);
+ mController->hookSourceNotificationDataChanged(sourceID, payload);
}
-am_Error_e CAmControlSender::hookUserSetMainSinkNotificationConfiguration(const am_sinkID_t sinkID, const am_NotificationConfiguration_s& notificationConfiguration)
+am_Error_e CAmControlSender::hookUserSetMainSinkNotificationConfiguration(const am_sinkID_t sinkID, const am_NotificationConfiguration_s &notificationConfiguration)
{
assert(mController);
- return (mController->hookUserSetMainSinkNotificationConfiguration(sinkID,notificationConfiguration));
+ return (mController->hookUserSetMainSinkNotificationConfiguration(sinkID, notificationConfiguration));
}
-am_Error_e CAmControlSender::hookUserSetMainSourceNotificationConfiguration(const am_sourceID_t sourceID, const am_NotificationConfiguration_s& notificationConfiguration)
+am_Error_e CAmControlSender::hookUserSetMainSourceNotificationConfiguration(const am_sourceID_t sourceID, const am_NotificationConfiguration_s &notificationConfiguration)
{
assert(mController);
- return (mController->hookUserSetMainSourceNotificationConfiguration(sourceID,notificationConfiguration));
+ return (mController->hookUserSetMainSourceNotificationConfiguration(sourceID, notificationConfiguration));
}
-void CAmControlSender::receiverCallback(const pollfd pollfd, const sh_pollHandle_t handle, void* userData)
+void CAmControlSender::receiverCallback(const pollfd pollfd, const sh_pollHandle_t handle, void *userData)
{
- (void) handle;
- (void) userData;
- //get the signal number from the socket
- ssize_t result = read(pollfd.fd, &mSignal, sizeof(mSignal));
+ (void)handle;
+ (void)userData;
+ // get the signal number from the socket
+ ssize_t result = read(pollfd.fd, &mSignal, sizeof(mSignal));
}
-bool CAmControlSender::checkerCallback(const sh_pollHandle_t handle, void* userData)
+bool CAmControlSender::checkerCallback(const sh_pollHandle_t handle, void *userData)
{
- (void) handle;
- (void) userData;
- return (true);
+ (void)handle;
+ (void)userData;
+ return (true);
}
void CAmControlSender::hookSystemSingleTimingInformationChanged(const am_connectionID_t connectionID, const am_timeSync_t time)
{
assert(mController);
- mController->hookSystemSingleTimingInformationChanged(connectionID,time);
+ mController->hookSystemSingleTimingInformationChanged(connectionID, time);
}
/**for testing only contructor - do not use !
*
*/
-CAmControlSender::CAmControlSender() :
- receiverCallbackT(this, &CAmControlSender::receiverCallback),
- checkerCallbackT(this, &CAmControlSender::checkerCallback),
- dispatcherCallbackT(this, &CAmControlSender::dispatcherCallback),
- mlibHandle(NULL),
- mController(NULL),
- mSignal(0)
+CAmControlSender::CAmControlSender()
+ : receiverCallbackT(this, &CAmControlSender::receiverCallback)
+ , checkerCallbackT(this, &CAmControlSender::checkerCallback)
+ , dispatcherCallbackT(this, &CAmControlSender::dispatcherCallback)
+ , mlibHandle(NULL)
+ , mController(NULL)
+ , mSignal(0)
{
logInfo("CAmControlSender was loaded in test mode!");
std::memset(mPipe, -1, sizeof(mPipe));
}
-bool CAmControlSender::dispatcherCallback(const sh_pollHandle_t handle, void* userData)
+bool CAmControlSender::dispatcherCallback(const sh_pollHandle_t handle, void *userData)
{
- (void)handle;
- (void)userData;
- setControllerRundown(mSignal);
- return (false);
+ (void)handle;
+ (void)userData;
+ setControllerRundown(mSignal);
+ return (false);
}
}
-
-
diff --git a/AudioManagerCore/src/CAmDatabaseHandlerMap.cpp b/AudioManagerCore/src/CAmDatabaseHandlerMap.cpp
index 895b234..8e5c192 100644
--- a/AudioManagerCore/src/CAmDatabaseHandlerMap.cpp
+++ b/AudioManagerCore/src/CAmDatabaseHandlerMap.cpp
@@ -33,53 +33,56 @@
#include "CAmRouter.h"
#include "CAmDltWrapper.h"
-#define __METHOD_NAME__ std::string (std::string("CAmDatabaseHandlerMap::") + __func__)
-
+#define __METHOD_NAME__ std::string(std::string("CAmDatabaseHandlerMap::") + __func__)
#ifdef WITH_DATABASE_CHANGE_CHECK
-# define DB_COND_UPDATE_RIE(x,y) \
- if (isDataEqual(x,y)) return (E_NO_CHANGE); else x = y
-# define DB_COND_UPDATE_INIT \
- bool modified = false
-# define DB_COND_UPDATE(x,y) \
- if (!isDataEqual(x,y)) { x = y; modified = true; }
-# define DB_COND_ISMODIFIED \
- (modified == true)
-#else
-# define DB_COND_UPDATE_RIE(x,y) \
- x = y
-# define DB_COND_UPDATE_INIT
-# define DB_COND_UPDATE(x,y) \
- x = y
-# define DB_COND_ISMODIFIED \
- (true)
-#endif
-
-
-#define NOTIFY_OBSERVERS(CALL)\
- for(AmDatabaseObserverCallbacks * nextObserver: mDatabaseObservers)\
- if(nextObserver->CALL)\
- nextObserver->CALL();
-
-#define NOTIFY_OBSERVERS1(CALL, ARG1)\
- for(AmDatabaseObserverCallbacks * nextObserver: mDatabaseObservers)\
- if(nextObserver->CALL)\
- nextObserver->CALL(ARG1);
-
-#define NOTIFY_OBSERVERS2(CALL, ARG1, ARG2)\
- for(AmDatabaseObserverCallbacks * nextObserver: mDatabaseObservers)\
- if(nextObserver->CALL)\
- nextObserver->CALL(ARG1, ARG2);
-
-#define NOTIFY_OBSERVERS3(CALL, ARG1, ARG2, ARG3)\
- for(AmDatabaseObserverCallbacks * nextObserver: mDatabaseObservers)\
- if(nextObserver->CALL)\
- nextObserver->CALL(ARG1, ARG2, ARG3);
-
-#define NOTIFY_OBSERVERS4(CALL, ARG1, ARG2, ARG3, ARG4)\
- for(AmDatabaseObserverCallbacks * nextObserver: mDatabaseObservers)\
- if(nextObserver->CALL)\
- nextObserver->CALL(ARG1, ARG2, ARG3, ARG4);
+# define DB_COND_UPDATE_RIE(x, y) \
+ if (isDataEqual(x, y)) { return (E_NO_CHANGE);} else x = y
+# define DB_COND_UPDATE_INIT \
+ bool modified = false
+# define DB_COND_UPDATE(x, y) \
+ if (!isDataEqual(x, y)) { x = y; modified = true; }
+# define DB_COND_ISMODIFIED \
+ (modified == true)
+#else // ifdef WITH_DATABASE_CHANGE_CHECK
+# define DB_COND_UPDATE_RIE(x, y) \
+ x = y
+# define DB_COND_UPDATE_INIT
+# define DB_COND_UPDATE(x, y) \
+ x = y
+# define DB_COND_ISMODIFIED \
+ (true)
+#endif // ifdef WITH_DATABASE_CHANGE_CHECK
+
+#define NOTIFY_OBSERVERS(CALL) \
+ for (AmDatabaseObserverCallbacks *nextObserver: mDatabaseObservers) { \
+ if (nextObserver->CALL) { \
+ nextObserver->CALL();} \
+ }
+
+#define NOTIFY_OBSERVERS1(CALL, ARG1) \
+ for (AmDatabaseObserverCallbacks *nextObserver: mDatabaseObservers) { \
+ if (nextObserver->CALL) { \
+ nextObserver->CALL(ARG1);} \
+ }
+
+#define NOTIFY_OBSERVERS2(CALL, ARG1, ARG2) \
+ for (AmDatabaseObserverCallbacks *nextObserver: mDatabaseObservers) { \
+ if (nextObserver->CALL) { \
+ nextObserver->CALL(ARG1, ARG2);} \
+ }
+
+#define NOTIFY_OBSERVERS3(CALL, ARG1, ARG2, ARG3) \
+ for (AmDatabaseObserverCallbacks *nextObserver: mDatabaseObservers) { \
+ if (nextObserver->CALL) { \
+ nextObserver->CALL(ARG1, ARG2, ARG3);} \
+ }
+
+#define NOTIFY_OBSERVERS4(CALL, ARG1, ARG2, ARG3, ARG4) \
+ for (AmDatabaseObserverCallbacks *nextObserver: mDatabaseObservers) { \
+ if (nextObserver->CALL) { \
+ nextObserver->CALL(ARG1, ARG2, ARG3, ARG4);} \
+ }
namespace am
{
@@ -87,34 +90,40 @@ namespace am
/*
* Checks if content of data is equal
*/
-template <typename T> bool isDataEqual(const T & left, const T & right)
+template <typename T>
+bool isDataEqual(const T &left, const T &right)
{
- return static_cast<bool>(!std::memcmp(&left, &right, sizeof(T)));
+ return static_cast<bool>(!std::memcmp(&left, &right, sizeof(T)));
}
-template <typename T, typename L = std::vector<T> > bool isDataEqual(const L & left, const L & right)
+template <typename T, typename L = std::vector<T> >
+bool isDataEqual(const L &left, const L &right)
{
- return std::equal(left.begin(), left.end(), right.begin(), isDataEqual);
+ return std::equal(left.begin(), left.end(), right.begin(), isDataEqual);
}
-
/*
* Returns an object for given key
*/
-template <typename TMapKeyType, class TMapObjectType> TMapObjectType const * objectForKeyIfExistsInMap(const TMapKeyType & key, const std::unordered_map<TMapKeyType,TMapObjectType> & map)
+template <typename TMapKeyType, class TMapObjectType>
+TMapObjectType const *objectForKeyIfExistsInMap(const TMapKeyType &key, const std::unordered_map<TMapKeyType, TMapObjectType> &map)
{
- typename std::unordered_map<TMapKeyType,TMapObjectType>::const_iterator iter = map.find(key);
- if( iter!=map.end() )
- return &iter->second;
- return NULL;
+ typename std::unordered_map<TMapKeyType, TMapObjectType>::const_iterator iter = map.find(key);
+ if ( iter != map.end())
+ {
+ return &iter->second;
+ }
+
+ return NULL;
}
/*
* Checks whether any object with key exists in a given map
*/
-template <typename TMapKeyType, class TMapObjectType> bool existsObjectWithKeyInMap(const TMapKeyType & key, const std::unordered_map<TMapKeyType,TMapObjectType> & map)
+template <typename TMapKeyType, class TMapObjectType>
+bool existsObjectWithKeyInMap(const TMapKeyType &key, const std::unordered_map<TMapKeyType, TMapObjectType> &map)
{
- return objectForKeyIfExistsInMap(key, map)!=NULL;
+ return objectForKeyIfExistsInMap(key, map) != NULL;
}
/**
@@ -126,489 +135,515 @@ template <typename TMapKeyType, class TMapObjectType> bool existsObjectWithKeyIn
* @param comparator Search predicate.
* @return NULL or pointer to the found object.
*/
-template <class TReturn, typename TIdentifier> const TReturn * objectMatchingPredicate(const std::unordered_map<TIdentifier, TReturn> & map,
- std::function<bool(const TReturn & refObject)> comparator)
-{
- typename std::unordered_map<TIdentifier, TReturn>::const_iterator elementIterator = map.begin();
- for (;elementIterator != map.end(); ++elementIterator)
- {
- if( comparator(elementIterator->second) )
- return &elementIterator->second;
- }
+template <class TReturn, typename TIdentifier>
+const TReturn *objectMatchingPredicate(const std::unordered_map<TIdentifier, TReturn> &map,
+ std::function<bool(const TReturn &refObject)> comparator)
+{
+ typename std::unordered_map<TIdentifier, TReturn>::const_iterator elementIterator = map.begin();
+ for (; elementIterator != map.end(); ++elementIterator)
+ {
+ if ( comparator(elementIterator->second))
+ {
+ return &elementIterator->second;
+ }
+ }
+
return NULL;
}
-
/* Domain */
-void CAmDatabaseHandlerMap::AmDomain::getDescription (std::string & outString) const
+void CAmDatabaseHandlerMap::AmDomain::getDescription(std::string &outString) const
{
- std::ostringstream fmt;
- fmt << "Domain(" << name.c_str() << ") id(" << domainID << ")" << std::endl <<
- "bus name(" << busname.c_str() <<
- ") node name(" << nodename.c_str() <<
- ") early(" << early <<
- ") domainID(" << domainID <<
- ") complete(" << complete <<
- ") state(" << state <<
- ") reserved(" << reserved << ")" << std::endl;
- outString = fmt.str();
+ std::ostringstream fmt;
+ fmt << "Domain(" << name.c_str() << ") id(" << domainID << ")" << std::endl <<
+ "bus name(" << busname.c_str() <<
+ ") node name(" << nodename.c_str() <<
+ ") early(" << early <<
+ ") domainID(" << domainID <<
+ ") complete(" << complete <<
+ ") state(" << state <<
+ ") reserved(" << reserved << ")" << std::endl;
+ outString = fmt.str();
}
/* Source */
-void CAmDatabaseHandlerMap::AmSource::getSourceType(am_SourceType_s & sourceType) const
-{
- sourceType.name = name;
- sourceType.sourceClassID = sourceClassID;
- sourceType.availability = available;
- sourceType.sourceID = sourceID;
-}
-
-void CAmDatabaseHandlerMap::AmSource::getDescription (std::string & outString) const
-{
- std::ostringstream fmt;
- fmt << "Source(" << name.c_str() << ") id(" << sourceID << ")" << std::endl <<
- "sourceClassID(" << sourceClassID <<
- ") domainID(" << domainID <<
- ") visible(" << visible <<
- ") volume(" << volume <<
- ") interruptState(" << interruptState <<
- ") sourceState(" << sourceState <<
- ") reserved(" << reserved << ")" <<
- ") available([availability:" << available.availability << " availabilityReason:" << available.availabilityReason << "]"
- ") listSoundProperties (";
- std::for_each(listSoundProperties.begin(), listSoundProperties.end(), [&](const am_SoundProperty_s & ref) {
- fmt << "[type:" << ref.type << " value:" << ref.value <<"]";
- });
- fmt << ") listConnectionFormats (";
- std::for_each(listConnectionFormats.begin(), listConnectionFormats.end(), [&](const am_CustomConnectionFormat_t & ref) {
- fmt << "[" << ref << "]";
- });
- fmt << ") listMainSoundProperties (";
- std::for_each(listMainSoundProperties.begin(), listMainSoundProperties.end(), [&](const am_MainSoundProperty_s & ref) {
- fmt << "[type:" << ref.type << " value:" << ref.value <<"]";
- });
- fmt << ") listMainNotificationConfigurations (";
- std::for_each(listMainNotificationConfigurations.begin(), listMainNotificationConfigurations.end(), [&](const am_NotificationConfiguration_s & ref) {
- fmt << "[type:" << ref.type << " status:" << ref.status << " parameter:" << ref.parameter <<"]";
- });
- fmt << ") listNotificationConfigurations (";
- std::for_each(listNotificationConfigurations.begin(), listNotificationConfigurations.end(), [&](const am_NotificationConfiguration_s & ref) {
- fmt << "[type:" << ref.type << " status:" << ref.status << " parameter:" << ref.parameter <<"]";
- });
- fmt << ")" << std::endl;
- outString = fmt.str();
+void CAmDatabaseHandlerMap::AmSource::getSourceType(am_SourceType_s &sourceType) const
+{
+ sourceType.name = name;
+ sourceType.sourceClassID = sourceClassID;
+ sourceType.availability = available;
+ sourceType.sourceID = sourceID;
+}
+
+void CAmDatabaseHandlerMap::AmSource::getDescription(std::string &outString) const
+{
+ std::ostringstream fmt;
+ fmt << "Source(" << name.c_str() << ") id(" << sourceID << ")" << std::endl <<
+ "sourceClassID(" << sourceClassID <<
+ ") domainID(" << domainID <<
+ ") visible(" << visible <<
+ ") volume(" << volume <<
+ ") interruptState(" << interruptState <<
+ ") sourceState(" << sourceState <<
+ ") reserved(" << reserved << ")" <<
+ ") available([availability:" << available.availability << " availabilityReason:" << available.availabilityReason << "]"
+ ") listSoundProperties (";
+ std::for_each(listSoundProperties.begin(), listSoundProperties.end(), [&](const am_SoundProperty_s &ref) {
+ fmt << "[type:" << ref.type << " value:" << ref.value << "]";
+ });
+ fmt << ") listConnectionFormats (";
+ std::for_each(listConnectionFormats.begin(), listConnectionFormats.end(), [&](const am_CustomConnectionFormat_t &ref) {
+ fmt << "[" << ref << "]";
+ });
+ fmt << ") listMainSoundProperties (";
+ std::for_each(listMainSoundProperties.begin(), listMainSoundProperties.end(), [&](const am_MainSoundProperty_s &ref) {
+ fmt << "[type:" << ref.type << " value:" << ref.value << "]";
+ });
+ fmt << ") listMainNotificationConfigurations (";
+ std::for_each(listMainNotificationConfigurations.begin(), listMainNotificationConfigurations.end(), [&](const am_NotificationConfiguration_s &ref) {
+ fmt << "[type:" << ref.type << " status:" << ref.status << " parameter:" << ref.parameter << "]";
+ });
+ fmt << ") listNotificationConfigurations (";
+ std::for_each(listNotificationConfigurations.begin(), listNotificationConfigurations.end(), [&](const am_NotificationConfiguration_s &ref) {
+ fmt << "[type:" << ref.type << " status:" << ref.status << " parameter:" << ref.parameter << "]";
+ });
+ fmt << ")" << std::endl;
+ outString = fmt.str();
}
/* Sink */
-void CAmDatabaseHandlerMap::AmSink::getDescription (std::string & outString) const
-{
- std::ostringstream fmt;
- fmt << "Sink(" << name.c_str() << ") id(" << sinkID << ")" << std::endl <<
- "sinkClassID(" << sinkClassID <<
- ") domainID(" << domainID <<
- ") visible(" << visible <<
- ") volume(" << volume <<
- ") muteState(" << muteState <<
- ") mainVolume(" << mainVolume <<
- ") reserved(" << reserved << ")" <<
- ") available([availability:" << available.availability << " availabilityReason:" << available.availabilityReason << "]"
- ") listSoundProperties (";
- std::for_each(listSoundProperties.begin(), listSoundProperties.end(), [&](const am_SoundProperty_s & ref) {
- fmt << "[type:" << ref.type << " value:" << ref.value <<"]";
- });
- fmt << ") listConnectionFormats (";
- std::for_each(listConnectionFormats.begin(), listConnectionFormats.end(), [&](const am_CustomConnectionFormat_t & ref) {
- fmt << "[" << ref << "]";
- });
- fmt << ") listMainSoundProperties (";
- std::for_each(listMainSoundProperties.begin(), listMainSoundProperties.end(), [&](const am_MainSoundProperty_s & ref) {
- fmt << "[type:" << ref.type << " value:" << ref.value <<"]";
- });
- fmt << ") listMainNotificationConfigurations (";
- std::for_each(listMainNotificationConfigurations.begin(), listMainNotificationConfigurations.end(), [&](const am_NotificationConfiguration_s & ref) {
- fmt << "[type:" << ref.type << " status:" << ref.status << " parameter:" << ref.parameter <<"]";
- });
- fmt << ") listNotificationConfigurations (";
- std::for_each(listNotificationConfigurations.begin(), listNotificationConfigurations.end(), [&](const am_NotificationConfiguration_s & ref) {
- fmt << "[type:" << ref.type << " status:" << ref.status << " parameter:" << ref.parameter <<"]";
- });
- fmt << ")" << std::endl;
- outString = fmt.str();
-}
-
-void CAmDatabaseHandlerMap::AmSink::getSinkType(am_SinkType_s & sinkType) const
-{
- sinkType.name = name;
- sinkType.sinkID = sinkID;
- sinkType.availability = available;
- sinkType.muteState = muteState;
- sinkType.volume = mainVolume;
- sinkType.sinkClassID = sinkClassID;
+void CAmDatabaseHandlerMap::AmSink::getDescription(std::string &outString) const
+{
+ std::ostringstream fmt;
+ fmt << "Sink(" << name.c_str() << ") id(" << sinkID << ")" << std::endl <<
+ "sinkClassID(" << sinkClassID <<
+ ") domainID(" << domainID <<
+ ") visible(" << visible <<
+ ") volume(" << volume <<
+ ") muteState(" << muteState <<
+ ") mainVolume(" << mainVolume <<
+ ") reserved(" << reserved << ")" <<
+ ") available([availability:" << available.availability << " availabilityReason:" << available.availabilityReason << "]"
+ ") listSoundProperties (";
+ std::for_each(listSoundProperties.begin(), listSoundProperties.end(), [&](const am_SoundProperty_s &ref) {
+ fmt << "[type:" << ref.type << " value:" << ref.value << "]";
+ });
+ fmt << ") listConnectionFormats (";
+ std::for_each(listConnectionFormats.begin(), listConnectionFormats.end(), [&](const am_CustomConnectionFormat_t &ref) {
+ fmt << "[" << ref << "]";
+ });
+ fmt << ") listMainSoundProperties (";
+ std::for_each(listMainSoundProperties.begin(), listMainSoundProperties.end(), [&](const am_MainSoundProperty_s &ref) {
+ fmt << "[type:" << ref.type << " value:" << ref.value << "]";
+ });
+ fmt << ") listMainNotificationConfigurations (";
+ std::for_each(listMainNotificationConfigurations.begin(), listMainNotificationConfigurations.end(), [&](const am_NotificationConfiguration_s &ref) {
+ fmt << "[type:" << ref.type << " status:" << ref.status << " parameter:" << ref.parameter << "]";
+ });
+ fmt << ") listNotificationConfigurations (";
+ std::for_each(listNotificationConfigurations.begin(), listNotificationConfigurations.end(), [&](const am_NotificationConfiguration_s &ref) {
+ fmt << "[type:" << ref.type << " status:" << ref.status << " parameter:" << ref.parameter << "]";
+ });
+ fmt << ")" << std::endl;
+ outString = fmt.str();
+}
+
+void CAmDatabaseHandlerMap::AmSink::getSinkType(am_SinkType_s &sinkType) const
+{
+ sinkType.name = name;
+ sinkType.sinkID = sinkID;
+ sinkType.availability = available;
+ sinkType.muteState = muteState;
+ sinkType.volume = mainVolume;
+ sinkType.sinkClassID = sinkClassID;
}
/* Connection */
-void CAmDatabaseHandlerMap::AmConnection::getDescription (std::string & outString) const
+void CAmDatabaseHandlerMap::AmConnection::getDescription(std::string &outString) const
{
- std::ostringstream fmt;
- fmt << "Connection id(" << connectionID << ") " << std::endl <<
- "sourceID(" << sourceID <<
- ") sinkID(" << sinkID <<
- ") delay(" << delay <<
- ") connectionFormat(" << connectionFormat <<
- ") reserved(" << reserved << ")" << std::endl;
- outString = fmt.str();
+ std::ostringstream fmt;
+ fmt << "Connection id(" << connectionID << ") " << std::endl <<
+ "sourceID(" << sourceID <<
+ ") sinkID(" << sinkID <<
+ ") delay(" << delay <<
+ ") connectionFormat(" << connectionFormat <<
+ ") reserved(" << reserved << ")" << std::endl;
+ outString = fmt.str();
}
/* Main Connection */
-void CAmDatabaseHandlerMap::AmMainConnection::getDescription (std::string & outString) const
+void CAmDatabaseHandlerMap::AmMainConnection::getDescription(std::string &outString) const
{
- std::ostringstream fmt;
- fmt << "MainConnection id(" << mainConnectionID << ") " << std::endl <<
- "connectionState(" << connectionState <<
- ") sinkID(" << sinkID <<
- ") sourceID(" << sourceID <<
- ") delay(" << delay <<
- ") listConnectionID (";
- std::for_each(listConnectionID.begin(), listConnectionID.end(), [&](const am_connectionID_t & connID) {
- fmt << "["<< connID << "]";
- });
- fmt << ")" << std::endl;
- outString = fmt.str();
+ std::ostringstream fmt;
+ fmt << "MainConnection id(" << mainConnectionID << ") " << std::endl <<
+ "connectionState(" << connectionState <<
+ ") sinkID(" << sinkID <<
+ ") sourceID(" << sourceID <<
+ ") delay(" << delay <<
+ ") listConnectionID (";
+ std::for_each(listConnectionID.begin(), listConnectionID.end(), [&](const am_connectionID_t &connID) {
+ fmt << "[" << connID << "]";
+ });
+ fmt << ")" << std::endl;
+ outString = fmt.str();
}
-void CAmDatabaseHandlerMap::am_MainConnection_Database_s::getMainConnectionType(am_MainConnectionType_s & connectionType) const
+void CAmDatabaseHandlerMap::am_MainConnection_Database_s::getMainConnectionType(am_MainConnectionType_s &connectionType) const
{
- connectionType.mainConnectionID = mainConnectionID;
- connectionType.sourceID = sourceID;
- connectionType.sinkID = sinkID;
- connectionType.connectionState = connectionState;
- connectionType.delay = delay;
+ connectionType.mainConnectionID = mainConnectionID;
+ connectionType.sourceID = sourceID;
+ connectionType.sinkID = sinkID;
+ connectionType.connectionState = connectionState;
+ connectionType.delay = delay;
}
/* Source Class */
-void CAmDatabaseHandlerMap::AmSourceClass::getDescription (std::string & outString) const
+void CAmDatabaseHandlerMap::AmSourceClass::getDescription(std::string &outString) const
{
- std::ostringstream fmt;
- fmt << "Source class(" << name.c_str() << ") id(" << sourceClassID << ")\n" <<
- ") listClassProperties (";
- std::for_each(listClassProperties.begin(), listClassProperties.end(), [&](const am_ClassProperty_s & ref) {
- fmt << "[classProperty:" << ref.classProperty << " value:" << ref.value << "]";
- });
- fmt << ")" << std::endl;
- outString = fmt.str();
+ std::ostringstream fmt;
+ fmt << "Source class(" << name.c_str() << ") id(" << sourceClassID << ")\n" <<
+ ") listClassProperties (";
+ std::for_each(listClassProperties.begin(), listClassProperties.end(), [&](const am_ClassProperty_s &ref) {
+ fmt << "[classProperty:" << ref.classProperty << " value:" << ref.value << "]";
+ });
+ fmt << ")" << std::endl;
+ outString = fmt.str();
}
/* Sink Class */
-void CAmDatabaseHandlerMap::AmSinkClass::getDescription (std::string & outString) const
+void CAmDatabaseHandlerMap::AmSinkClass::getDescription(std::string &outString) const
{
- std::ostringstream fmt;
- fmt << "Sink class(" << name.c_str() << ") id(" << sinkClassID << ")\n" <<
- ") listClassProperties (";
- std::for_each(listClassProperties.begin(), listClassProperties.end(), [&](const am_ClassProperty_s & ref) {
- fmt << "[classProperty:" << ref.classProperty << " value:" << ref.value << "]";
- });
- fmt << ")" << std::endl;
- outString = fmt.str();
+ std::ostringstream fmt;
+ fmt << "Sink class(" << name.c_str() << ") id(" << sinkClassID << ")\n" <<
+ ") listClassProperties (";
+ std::for_each(listClassProperties.begin(), listClassProperties.end(), [&](const am_ClassProperty_s &ref) {
+ fmt << "[classProperty:" << ref.classProperty << " value:" << ref.value << "]";
+ });
+ fmt << ")" << std::endl;
+ outString = fmt.str();
}
-
/* Gateway */
-void CAmDatabaseHandlerMap::AmGateway::getDescription (std::string & outString) const
-{
- std::ostringstream fmt;
- fmt << "Gateway(" << name.c_str() << ") id(" << gatewayID << ")\n" <<
- "sinkID(" << sinkID <<
- ") sourceID(" << sourceID <<
- ") domainSinkID(" << domainSinkID <<
- ") domainSourceID(" << domainSourceID <<
- ") controlDomainID(" << controlDomainID <<
- ") listSourceFormats (";
- std::for_each(listSourceFormats.begin(), listSourceFormats.end(), [&](const am_CustomConnectionFormat_t & ref) {
- fmt << "[" << ref << "]";
- });
- fmt << ") listSinkFormats (";
- std::for_each(listSinkFormats.begin(), listSinkFormats.end(), [&](const am_CustomConnectionFormat_t & ref) {
- fmt << "[" << ref << "]";
- });
- fmt << ") convertionMatrix (";
- std::for_each(convertionMatrix.begin(), convertionMatrix.end(), [&](const bool & ref) {
- fmt << "[" << ref << "]";
- });
- fmt << ")" << std::endl;
- outString = fmt.str();
+void CAmDatabaseHandlerMap::AmGateway::getDescription(std::string &outString) const
+{
+ std::ostringstream fmt;
+ fmt << "Gateway(" << name.c_str() << ") id(" << gatewayID << ")\n" <<
+ "sinkID(" << sinkID <<
+ ") sourceID(" << sourceID <<
+ ") domainSinkID(" << domainSinkID <<
+ ") domainSourceID(" << domainSourceID <<
+ ") controlDomainID(" << controlDomainID <<
+ ") listSourceFormats (";
+ std::for_each(listSourceFormats.begin(), listSourceFormats.end(), [&](const am_CustomConnectionFormat_t &ref) {
+ fmt << "[" << ref << "]";
+ });
+ fmt << ") listSinkFormats (";
+ std::for_each(listSinkFormats.begin(), listSinkFormats.end(), [&](const am_CustomConnectionFormat_t &ref) {
+ fmt << "[" << ref << "]";
+ });
+ fmt << ") convertionMatrix (";
+ std::for_each(convertionMatrix.begin(), convertionMatrix.end(), [&](const bool &ref) {
+ fmt << "[" << ref << "]";
+ });
+ fmt << ")" << std::endl;
+ outString = fmt.str();
}
/* Converter */
-void CAmDatabaseHandlerMap::AmConverter::getDescription (std::string & outString) const
-{
- std::ostringstream fmt;
- fmt << "Converter(" << name.c_str() << ") id(" << converterID << ")\n" <<
- "sinkID(" << sinkID <<
- ") sourceID(" << sourceID <<
- ") domainSinkID(" << domainID <<
- ") listSourceFormats (";
- std::for_each(listSourceFormats.begin(), listSourceFormats.end(), [&](const am_CustomConnectionFormat_t & ref) {
- fmt << "[" << ref << "]";
- });
- fmt << ") listSinkFormats (";
- std::for_each(listSinkFormats.begin(), listSinkFormats.end(), [&](const am_CustomConnectionFormat_t & ref) {
- fmt << "[" << ref << "]";
- });
- fmt << ") convertionMatrix (";
- std::for_each(convertionMatrix.begin(), convertionMatrix.end(), [&](const bool & ref) {
- fmt << "[" << ref << "]";
- });
- fmt << ")" << std::endl;
- outString = fmt.str();
+void CAmDatabaseHandlerMap::AmConverter::getDescription(std::string &outString) const
+{
+ std::ostringstream fmt;
+ fmt << "Converter(" << name.c_str() << ") id(" << converterID << ")\n" <<
+ "sinkID(" << sinkID <<
+ ") sourceID(" << sourceID <<
+ ") domainSinkID(" << domainID <<
+ ") listSourceFormats (";
+ std::for_each(listSourceFormats.begin(), listSourceFormats.end(), [&](const am_CustomConnectionFormat_t &ref) {
+ fmt << "[" << ref << "]";
+ });
+ fmt << ") listSinkFormats (";
+ std::for_each(listSinkFormats.begin(), listSinkFormats.end(), [&](const am_CustomConnectionFormat_t &ref) {
+ fmt << "[" << ref << "]";
+ });
+ fmt << ") convertionMatrix (";
+ std::for_each(convertionMatrix.begin(), convertionMatrix.end(), [&](const bool &ref) {
+ fmt << "[" << ref << "]";
+ });
+ fmt << ")" << std::endl;
+ outString = fmt.str();
}
/* Crossfader */
-void CAmDatabaseHandlerMap::AmCrossfader::getDescription (std::string & outString) const
-{
- std::ostringstream fmt;
- fmt << "Crossfader(" << name.c_str() << ") id(" << crossfaderID << ")\n" <<
- "sinkID_A(" << sinkID_A <<
- ") sinkID_B(" << sinkID_B <<
- ") sourceID(" << sourceID <<
- ") hotSink(" << hotSink <<
- ")" << std::endl;
- outString = fmt.str();
-}
-
-bool CAmDatabaseHandlerMap::AmMappedData::increaseID(int16_t & resultID, AmIdentifier & elementID,
- int16_t const desiredStaticID = 0)
-{
- if( desiredStaticID > 0 && desiredStaticID < elementID.mMin )
- {
- resultID = desiredStaticID;
- return true;
- }
- else if( elementID.mCurrentValue < elementID.mMax ) //The last used value is 'limit' - 1. e.g. SHRT_MAX - 1, SHRT_MAX is reserved.
- {
- resultID = elementID.mCurrentValue++;
- return true;
- }
- else
- {
- resultID = -1;
- return false;
- }
-}
-
-template <typename TMapKey,class TMapObject> bool CAmDatabaseHandlerMap::AmMappedData::getNextConnectionID(int16_t & resultID, AmIdentifier & connID,
- const std::unordered_map<TMapKey, TMapObject> & map)
-{
- TMapKey nextID;
- int16_t const lastID = connID.mCurrentValue;
- if( connID.mCurrentValue < connID.mMax )
- nextID = connID.mCurrentValue++;
- else
- nextID = connID.mCurrentValue = connID.mMin;
-
- bool notFreeIDs = false;
- while( existsObjectWithKeyInMap(nextID, map) )
- {
-
- if( connID.mCurrentValue < connID.mMax )
- nextID = connID.mCurrentValue++;
- else
- {
- connID.mCurrentValue = connID.mMin;
- nextID = connID.mCurrentValue;
- }
-
- if( connID.mCurrentValue == lastID )
- {
- notFreeIDs = true;
- break;
- }
- }
- if(notFreeIDs)
- {
- resultID = -1;
- return false;
- }
- resultID = nextID;
- return true;
-}
-
-bool CAmDatabaseHandlerMap::AmMappedData::increaseMainConnectionID(int16_t & resultID)
-{
- return getNextConnectionID(resultID, mCurrentMainConnectionID, mMainConnectionMap);
-}
-
-bool CAmDatabaseHandlerMap::AmMappedData::increaseConnectionID(int16_t & resultID)
-{
- return getNextConnectionID(resultID, mCurrentConnectionID, mConnectionMap);
-}
-
-
-CAmDatabaseHandlerMap::CAmDatabaseHandlerMap(): IAmDatabaseHandler(),
- mFirstStaticSink(true),
- mFirstStaticSource(true),
- mFirstStaticGateway(true),
- mFirstStaticConverter(true),
- mFirstStaticSinkClass(true),
- mFirstStaticSourceClass(true),
- mFirstStaticCrossfader(true),
- mListConnectionFormat(),
- mMappedData(),
- mDatabaseObservers()
-{
- logVerbose(__METHOD_NAME__,"Init ");
+void CAmDatabaseHandlerMap::AmCrossfader::getDescription(std::string &outString) const
+{
+ std::ostringstream fmt;
+ fmt << "Crossfader(" << name.c_str() << ") id(" << crossfaderID << ")\n" <<
+ "sinkID_A(" << sinkID_A <<
+ ") sinkID_B(" << sinkID_B <<
+ ") sourceID(" << sourceID <<
+ ") hotSink(" << hotSink <<
+ ")" << std::endl;
+ outString = fmt.str();
+}
+
+bool CAmDatabaseHandlerMap::AmMappedData::increaseID(int16_t &resultID, AmIdentifier &elementID,
+ int16_t const desiredStaticID = 0)
+{
+ if ( desiredStaticID > 0 && desiredStaticID < elementID.mMin )
+ {
+ resultID = desiredStaticID;
+ return true;
+ }
+ else if ( elementID.mCurrentValue < elementID.mMax ) // The last used value is 'limit' - 1. e.g. SHRT_MAX - 1, SHRT_MAX is reserved.
+ {
+ resultID = elementID.mCurrentValue++;
+ return true;
+ }
+ else
+ {
+ resultID = -1;
+ return false;
+ }
+}
+
+template <typename TMapKey, class TMapObject>
+bool CAmDatabaseHandlerMap::AmMappedData::getNextConnectionID(int16_t &resultID, AmIdentifier &connID,
+ const std::unordered_map<TMapKey, TMapObject> &map)
+{
+ TMapKey nextID;
+ int16_t const lastID = connID.mCurrentValue;
+ if ( connID.mCurrentValue < connID.mMax )
+ {
+ nextID = connID.mCurrentValue++;
+ }
+ else
+ {
+ nextID = connID.mCurrentValue = connID.mMin;
+ }
+
+ bool notFreeIDs = false;
+ while ( existsObjectWithKeyInMap(nextID, map))
+ {
+
+ if ( connID.mCurrentValue < connID.mMax )
+ {
+ nextID = connID.mCurrentValue++;
+ }
+ else
+ {
+ connID.mCurrentValue = connID.mMin;
+ nextID = connID.mCurrentValue;
+ }
+
+ if ( connID.mCurrentValue == lastID )
+ {
+ notFreeIDs = true;
+ break;
+ }
+ }
+
+ if (notFreeIDs)
+ {
+ resultID = -1;
+ return false;
+ }
+
+ resultID = nextID;
+ return true;
+}
+
+bool CAmDatabaseHandlerMap::AmMappedData::increaseMainConnectionID(int16_t &resultID)
+{
+ return getNextConnectionID(resultID, mCurrentMainConnectionID, mMainConnectionMap);
+}
+
+bool CAmDatabaseHandlerMap::AmMappedData::increaseConnectionID(int16_t &resultID)
+{
+ return getNextConnectionID(resultID, mCurrentConnectionID, mConnectionMap);
+}
+
+CAmDatabaseHandlerMap::CAmDatabaseHandlerMap()
+ : IAmDatabaseHandler()
+ , mFirstStaticSink(true)
+ , mFirstStaticSource(true)
+ , mFirstStaticGateway(true)
+ , mFirstStaticConverter(true)
+ , mFirstStaticSinkClass(true)
+ , mFirstStaticSourceClass(true)
+ , mFirstStaticCrossfader(true)
+ , mListConnectionFormat()
+ , mMappedData()
+ , mDatabaseObservers()
+{
+ logVerbose(__METHOD_NAME__, "Init ");
}
CAmDatabaseHandlerMap::~CAmDatabaseHandlerMap()
{
- logVerbose(__METHOD_NAME__,"Destroy");
- for(AmDatabaseObserverCallbacks * ptr: mDatabaseObservers)
- ptr->mpDatabaseHandler=nullptr;
+ logVerbose(__METHOD_NAME__, "Destroy");
+ for (AmDatabaseObserverCallbacks *ptr: mDatabaseObservers)
+ {
+ ptr->mpDatabaseHandler = nullptr;
+ }
}
-am_Error_e CAmDatabaseHandlerMap::enterDomainDB(const am_Domain_s & domainData, am_domainID_t & domainID)
+am_Error_e CAmDatabaseHandlerMap::enterDomainDB(const am_Domain_s &domainData, am_domainID_t &domainID)
{
- if(domainData.name.empty())
+ if (domainData.name.empty())
{
- logError(__METHOD_NAME__,"DomainName must not be emtpy!");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "DomainName must not be emtpy!");
+ return (E_NOT_POSSIBLE);
}
- if(domainData.busname.empty())
+
+ if (domainData.busname.empty())
{
- logError(__METHOD_NAME__,"Busname must not be emtpy!");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "Busname must not be emtpy!");
+ return (E_NOT_POSSIBLE);
}
- if(!(domainData.state>=DS_UNKNOWN && domainData.state<=DS_MAX))
+
+ if (!(domainData.state >= DS_UNKNOWN && domainData.state <= DS_MAX))
{
- logError(__METHOD_NAME__,"State must not be valid!");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "State must not be valid!");
+ return (E_NOT_POSSIBLE);
}
- //first check for a reserved domain
- am_Domain_s const *reservedDomain = objectMatchingPredicate<AmDomain, am_domainID_t>(mMappedData.mDomainMap, [&](const AmDomain & obj){
- return domainData.name.compare(obj.name)==0;
- });
+
+ // first check for a reserved domain
+ am_Domain_s const *reservedDomain = objectMatchingPredicate<AmDomain, am_domainID_t>(mMappedData.mDomainMap, [&](const AmDomain &obj){
+ return domainData.name.compare(obj.name) == 0;
+ });
int16_t nextID = 0;
- if( NULL != reservedDomain )
+ if ( NULL != reservedDomain )
{
- nextID = reservedDomain->domainID;
- domainID = nextID;
- mMappedData.mDomainMap[nextID] = domainData;
- mMappedData.mDomainMap[nextID].domainID = nextID;
- mMappedData.mDomainMap[nextID].reserved = 0;
- logVerbose("DatabaseHandler::enterDomainDB entered reserved domain with name=", domainData.name, "busname=", domainData.busname, "nodename=", domainData.nodename, "reserved ID:", domainID);
+ nextID = reservedDomain->domainID;
+ domainID = nextID;
+ mMappedData.mDomainMap[nextID] = domainData;
+ mMappedData.mDomainMap[nextID].domainID = nextID;
+ mMappedData.mDomainMap[nextID].reserved = 0;
+ logVerbose("DatabaseHandler::enterDomainDB entered reserved domain with name=", domainData.name, "busname=", domainData.busname, "nodename=", domainData.nodename, "reserved ID:", domainID);
- NOTIFY_OBSERVERS1(dboNewDomain, mMappedData.mDomainMap[nextID])
+ NOTIFY_OBSERVERS1(dboNewDomain, mMappedData.mDomainMap[nextID])
- return (E_OK);
+ return (E_OK);
}
else
{
- if(mMappedData.increaseID(nextID, mMappedData.mCurrentDomainID, domainData.domainID))
- {
- domainID = nextID;
- mMappedData.mDomainMap[nextID] = domainData;
- mMappedData.mDomainMap[nextID].domainID = nextID;
- logVerbose("DatabaseHandler::enterDomainDB entered new domain with name=", domainData.name, "busname=", domainData.busname, "nodename=", domainData.nodename, "assigned ID:", domainID);
+ if (mMappedData.increaseID(nextID, mMappedData.mCurrentDomainID, domainData.domainID))
+ {
+ domainID = nextID;
+ mMappedData.mDomainMap[nextID] = domainData;
+ mMappedData.mDomainMap[nextID].domainID = nextID;
+ logVerbose("DatabaseHandler::enterDomainDB entered new domain with name=", domainData.name, "busname=", domainData.busname, "nodename=", domainData.nodename, "assigned ID:", domainID);
- NOTIFY_OBSERVERS1(dboNewDomain, mMappedData.mDomainMap[nextID])
+ NOTIFY_OBSERVERS1(dboNewDomain, mMappedData.mDomainMap[nextID])
- return (E_OK);
- }
- else
- {
- domainID = 0;
- logVerbose(__METHOD_NAME__,"Max limit reached.");
- return (E_UNKNOWN);
- }
+ return (E_OK);
+ }
+ else
+ {
+ domainID = 0;
+ logVerbose(__METHOD_NAME__, "Max limit reached.");
+ return (E_UNKNOWN);
+ }
}
}
-int16_t CAmDatabaseHandlerMap::calculateDelayForRoute(const std::vector<am_connectionID_t>& listConnectionID)
+int16_t CAmDatabaseHandlerMap::calculateDelayForRoute(const std::vector<am_connectionID_t> &listConnectionID)
{
- int16_t delay = 0;
- std::vector<am_connectionID_t>::const_iterator elementIterator = listConnectionID.begin();
- for (; elementIterator < listConnectionID.end(); ++elementIterator)
- {
- am_connectionID_t key = *elementIterator;
- std::unordered_map<am_connectionID_t, am_Connection_Database_s>::const_iterator it = mMappedData.mConnectionMap.find(key);
- if (it!=mMappedData.mConnectionMap.end())
- {
- int16_t temp_delay = it->second.delay;
- if (temp_delay != -1 && delay != -1)
- delay += temp_delay;
- else
- delay = -1;
- }
- }
- return delay;
+ int16_t delay = 0;
+ std::vector<am_connectionID_t>::const_iterator elementIterator = listConnectionID.begin();
+ for (; elementIterator < listConnectionID.end(); ++elementIterator)
+ {
+ am_connectionID_t key = *elementIterator;
+ std::unordered_map<am_connectionID_t, am_Connection_Database_s>::const_iterator it = mMappedData.mConnectionMap.find(key);
+ if (it != mMappedData.mConnectionMap.end())
+ {
+ int16_t temp_delay = it->second.delay;
+ if (temp_delay != -1 && delay != -1)
+ {
+ delay += temp_delay;
+ }
+ else
+ {
+ delay = -1;
+ }
+ }
+ }
+
+ return delay;
}
-am_Error_e CAmDatabaseHandlerMap::enterMainConnectionDB(const am_MainConnection_s & mainConnectionData, am_mainConnectionID_t & connectionID)
+am_Error_e CAmDatabaseHandlerMap::enterMainConnectionDB(const am_MainConnection_s &mainConnectionData, am_mainConnectionID_t &connectionID)
{
- if(mainConnectionData.mainConnectionID!=0)
+ if (mainConnectionData.mainConnectionID != 0)
{
- logError(__METHOD_NAME__,"mainConnectionID must be 0!");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "mainConnectionID must be 0!");
+ return (E_NOT_POSSIBLE);
}
- if(!(mainConnectionData.connectionState>=CS_UNKNOWN && mainConnectionData.connectionState<=CS_MAX))
+
+ if (!(mainConnectionData.connectionState >= CS_UNKNOWN && mainConnectionData.connectionState <= CS_MAX))
{
- logError(__METHOD_NAME__,"connectionState must be valid!");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "connectionState must be valid!");
+ return (E_NOT_POSSIBLE);
}
- if(!existSink(mainConnectionData.sinkID))
+
+ if (!existSink(mainConnectionData.sinkID))
{
- logError(__METHOD_NAME__,"sinkID must be valid!");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "sinkID must be valid!");
+ return (E_NOT_POSSIBLE);
}
- if(!existSource(mainConnectionData.sourceID))
+
+ if (!existSource(mainConnectionData.sourceID))
{
- logError(__METHOD_NAME__,"sourceID must be valid!");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "sourceID must be valid!");
+ return (E_NOT_POSSIBLE);
}
- int16_t delay = 0;
+ int16_t delay = 0;
int16_t nextID = 0;
- if(mMappedData.increaseMainConnectionID(nextID))
- {
- connectionID = nextID;
- mMappedData.mMainConnectionMap[nextID] = mainConnectionData;
- mMappedData.mMainConnectionMap[nextID].mainConnectionID = nextID;
- }
- else
- {
- connectionID = 0;
- logVerbose(__METHOD_NAME__,"Max limit reached.");
- return (E_UNKNOWN);
- }
-
- //now check the connectionTable for all connections in the route. IF connectionID exist
+ if (mMappedData.increaseMainConnectionID(nextID))
+ {
+ connectionID = nextID;
+ mMappedData.mMainConnectionMap[nextID] = mainConnectionData;
+ mMappedData.mMainConnectionMap[nextID].mainConnectionID = nextID;
+ }
+ else
+ {
+ connectionID = 0;
+ logVerbose(__METHOD_NAME__, "Max limit reached.");
+ return (E_UNKNOWN);
+ }
+
+ // now check the connectionTable for all connections in the route. IF connectionID exist
delay = calculateDelayForRoute(mainConnectionData.listConnectionID);
logVerbose("DatabaseHandler::enterMainConnectionDB entered new mainConnection with sourceID", mainConnectionData.sourceID, "sinkID:", mainConnectionData.sinkID, "delay:", delay, "assigned ID:", connectionID);
-
if (mDatabaseObservers.size())
{
- am_MainConnectionType_s mainConnection;
- mMappedData.mMainConnectionMap[nextID].getMainConnectionType(mainConnection);
+ am_MainConnectionType_s mainConnection;
+ mMappedData.mMainConnectionMap[nextID].getMainConnectionType(mainConnection);
NOTIFY_OBSERVERS1(dboNewMainConnection, mainConnection)
NOTIFY_OBSERVERS2(dboMainConnectionStateChanged, connectionID, mMappedData.mMainConnectionMap[nextID].connectionState)
}
- //finally, we update the delay value for the maintable
+ // finally, we update the delay value for the maintable
if (delay == 0)
+ {
delay = -1;
+ }
+
(void)changeDelayMainConnection(delay, connectionID);
return (E_OK);
@@ -618,258 +653,278 @@ am_Error_e CAmDatabaseHandlerMap::enterMainConnectionDB(const am_MainConnection_
* Helper method, that inserts a new struct in the map and copies the given into it.
* This method uses the increaseID function to secure the global id is properly increased.
**/
-bool CAmDatabaseHandlerMap::insertSinkDB(const am_Sink_s & sinkData, am_sinkID_t & sinkID)
+bool CAmDatabaseHandlerMap::insertSinkDB(const am_Sink_s &sinkData, am_sinkID_t &sinkID)
{
int16_t nextID = 0;
- if( mMappedData.increaseID(nextID, mMappedData.mCurrentSinkID, sinkData.sinkID) )
- {
- sinkID = nextID;
- mMappedData.mSinkMap[nextID] = sinkData;
- mMappedData.mSinkMap[nextID].sinkID = nextID;
- filterDuplicateNotificationConfigurationTypes(mMappedData.mSinkMap[nextID].listNotificationConfigurations);
- filterDuplicateNotificationConfigurationTypes(mMappedData.mSinkMap[nextID].listMainNotificationConfigurations);
- return (true);
- }
- else
- {
- sinkID = 0;
- logVerbose(__METHOD_NAME__,"Max limit reached!");
- return (false);
- }
+ if ( mMappedData.increaseID(nextID, mMappedData.mCurrentSinkID, sinkData.sinkID))
+ {
+ sinkID = nextID;
+ mMappedData.mSinkMap[nextID] = sinkData;
+ mMappedData.mSinkMap[nextID].sinkID = nextID;
+ filterDuplicateNotificationConfigurationTypes(mMappedData.mSinkMap[nextID].listNotificationConfigurations);
+ filterDuplicateNotificationConfigurationTypes(mMappedData.mSinkMap[nextID].listMainNotificationConfigurations);
+ return (true);
+ }
+ else
+ {
+ sinkID = 0;
+ logVerbose(__METHOD_NAME__, "Max limit reached!");
+ return (false);
+ }
}
-am_Error_e CAmDatabaseHandlerMap::enterSinkDB(const am_Sink_s & sinkData, am_sinkID_t & sinkID)
+am_Error_e CAmDatabaseHandlerMap::enterSinkDB(const am_Sink_s &sinkData, am_sinkID_t &sinkID)
{
- if(sinkData.sinkID>=DYNAMIC_ID_BOUNDARY)
+ if (sinkData.sinkID >= DYNAMIC_ID_BOUNDARY)
{
- logError(__METHOD_NAME__,"sinkID must be below:",DYNAMIC_ID_BOUNDARY);
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "sinkID must be below:", DYNAMIC_ID_BOUNDARY);
+ return (E_NOT_POSSIBLE);
}
- if(!existDomain(sinkData.domainID))
+
+ if (!existDomain(sinkData.domainID))
{
- logError(__METHOD_NAME__,"domainID must be valid");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "domainID must be valid");
+ return (E_NOT_POSSIBLE);
}
- if(sinkData.name.empty())
+
+ if (sinkData.name.empty())
{
- logError(__METHOD_NAME__,"sinkName must not be zero");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "sinkName must not be zero");
+ return (E_NOT_POSSIBLE);
}
- if(!existSinkClass(sinkData.sinkClassID))
+
+ if (!existSinkClass(sinkData.sinkClassID))
{
- logError(__METHOD_NAME__,"sinkClass must be valid");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "sinkClass must be valid");
+ return (E_NOT_POSSIBLE);
}
- if(!(sinkData.muteState>=MS_UNKNOWN && sinkData.muteState<=MS_MAX))
+ if (!(sinkData.muteState >= MS_UNKNOWN && sinkData.muteState <= MS_MAX))
{
- logError(__METHOD_NAME__,"muteState must be valid");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "muteState must be valid");
+ return (E_NOT_POSSIBLE);
}
- am_sinkID_t temp_SinkID = 0;
+ am_sinkID_t temp_SinkID = 0;
am_sinkID_t temp_SinkIndex = 0;
- //if sinkID is zero and the first Static Sink was already entered, the ID is created
- am_Sink_s const *reservedDomain = objectMatchingPredicate<AmSink, am_sinkID_t>(mMappedData.mSinkMap, [&](const AmSink & obj){
- return true==obj.reserved && obj.name.compare(sinkData.name)==0;
- });
- if( NULL!=reservedDomain )
- {
- am_sinkID_t oldSinkID = reservedDomain->sinkID;
- mMappedData.mSinkMap[oldSinkID] = sinkData;
- mMappedData.mSinkMap[oldSinkID].reserved = 0;
- temp_SinkID = oldSinkID;
- temp_SinkIndex = oldSinkID;
+ // if sinkID is zero and the first Static Sink was already entered, the ID is created
+ am_Sink_s const *reservedDomain = objectMatchingPredicate<AmSink, am_sinkID_t>(mMappedData.mSinkMap, [&](const AmSink &obj){
+ return true == obj.reserved && obj.name.compare(sinkData.name) == 0;
+ });
+ if ( NULL != reservedDomain )
+ {
+ am_sinkID_t oldSinkID = reservedDomain->sinkID;
+ mMappedData.mSinkMap[oldSinkID] = sinkData;
+ mMappedData.mSinkMap[oldSinkID].reserved = 0;
+ temp_SinkID = oldSinkID;
+ temp_SinkIndex = oldSinkID;
}
else
{
- bool result;
- if ( sinkData.sinkID != 0 || mFirstStaticSink )
- {
- //check if the ID already exists
- if (existSinkNameOrID(sinkData.sinkID, sinkData.name))
- {
- sinkID = sinkData.sinkID;
- return (E_ALREADY_EXISTS);
- }
- }
- result = insertSinkDB(sinkData, temp_SinkID);
- if( false == result )
- return (E_UNKNOWN);
- temp_SinkIndex = temp_SinkID;
- }
- //if the first static sink is entered, we need to set it onto the boundary
+ bool result;
+ if ( sinkData.sinkID != 0 || mFirstStaticSink )
+ {
+ // check if the ID already exists
+ if (existSinkNameOrID(sinkData.sinkID, sinkData.name))
+ {
+ sinkID = sinkData.sinkID;
+ return (E_ALREADY_EXISTS);
+ }
+ }
+
+ result = insertSinkDB(sinkData, temp_SinkID);
+ if ( false == result )
+ {
+ return (E_UNKNOWN);
+ }
+
+ temp_SinkIndex = temp_SinkID;
+ }
+
+ // if the first static sink is entered, we need to set it onto the boundary
if (sinkData.sinkID == 0 && mFirstStaticSink)
{
mFirstStaticSink = false;
}
+
mMappedData.mSinkMap[temp_SinkIndex].sinkID = temp_SinkID;
- sinkID = temp_SinkID;
+ sinkID = temp_SinkID;
- am_Sink_s & sink = mMappedData.mSinkMap[temp_SinkID];
+ am_Sink_s &sink = mMappedData.mSinkMap[temp_SinkID];
logVerbose("DatabaseHandler::enterSinkDB entered new sink with name", sink.name, "domainID:", sink.domainID, "classID:", sink.sinkClassID, "volume:", sink.volume, "assigned ID:", sink.sinkID);
- sink.sinkID=sinkID;
- NOTIFY_OBSERVERS1(dboNewSink, sink)
+ sink.sinkID = sinkID;
+ NOTIFY_OBSERVERS1(dboNewSink, sink)
return (E_OK);
}
-bool CAmDatabaseHandlerMap::insertCrossfaderDB(const am_Crossfader_s & crossfaderData, am_crossfaderID_t & crossfaderID)
+bool CAmDatabaseHandlerMap::insertCrossfaderDB(const am_Crossfader_s &crossfaderData, am_crossfaderID_t &crossfaderID)
{
int16_t nextID = 0;
- if(mMappedData.increaseID(nextID, mMappedData.mCurrentCrossfaderID, crossfaderData.crossfaderID))
- {
- crossfaderID = nextID;
- mMappedData.mCrossfaderMap[nextID] = crossfaderData;
- mMappedData.mCrossfaderMap[nextID].crossfaderID = nextID;
- return (true);
- }
- else
- {
- crossfaderID = 0;
- logVerbose(__METHOD_NAME__,"Max limit reached.");
- return (false);
- }
+ if (mMappedData.increaseID(nextID, mMappedData.mCurrentCrossfaderID, crossfaderData.crossfaderID))
+ {
+ crossfaderID = nextID;
+ mMappedData.mCrossfaderMap[nextID] = crossfaderData;
+ mMappedData.mCrossfaderMap[nextID].crossfaderID = nextID;
+ return (true);
+ }
+ else
+ {
+ crossfaderID = 0;
+ logVerbose(__METHOD_NAME__, "Max limit reached.");
+ return (false);
+ }
}
-am_Error_e CAmDatabaseHandlerMap::enterCrossfaderDB(const am_Crossfader_s & crossfaderData, am_crossfaderID_t & crossfaderID)
+am_Error_e CAmDatabaseHandlerMap::enterCrossfaderDB(const am_Crossfader_s &crossfaderData, am_crossfaderID_t &crossfaderID)
{
- if(crossfaderData.crossfaderID>=DYNAMIC_ID_BOUNDARY)
+ if (crossfaderData.crossfaderID >= DYNAMIC_ID_BOUNDARY)
{
- logError(__METHOD_NAME__,"crossfaderID must be below:",DYNAMIC_ID_BOUNDARY);
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "crossfaderID must be below:", DYNAMIC_ID_BOUNDARY);
+ return (E_NOT_POSSIBLE);
}
- if(!(crossfaderData.hotSink>=HS_UNKNOWN && crossfaderData.hotSink<=HS_MAX))
+ if (!(crossfaderData.hotSink >= HS_UNKNOWN && crossfaderData.hotSink <= HS_MAX))
{
- logError(__METHOD_NAME__,"hotSink must be valid");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "hotSink must be valid");
+ return (E_NOT_POSSIBLE);
}
- if(crossfaderData.name.empty())
+
+ if (crossfaderData.name.empty())
{
- logError(__METHOD_NAME__,"crossfaderName must not be zero");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "crossfaderName must not be zero");
+ return (E_NOT_POSSIBLE);
}
- if(!existSink(crossfaderData.sinkID_A))
+ if (!existSink(crossfaderData.sinkID_A))
{
- logError(__METHOD_NAME__,"sinkID_A must exist");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "sinkID_A must exist");
+ return (E_NOT_POSSIBLE);
}
- if(!existSink(crossfaderData.sinkID_B))
+
+ if (!existSink(crossfaderData.sinkID_B))
{
- logError(__METHOD_NAME__,"sinkID_B must exist");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "sinkID_B must exist");
+ return (E_NOT_POSSIBLE);
}
- if(!existSource(crossfaderData.sourceID))
+
+ if (!existSource(crossfaderData.sourceID))
{
- logError(__METHOD_NAME__,"sourceID must exist");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "sourceID must exist");
+ return (E_NOT_POSSIBLE);
}
- am_crossfaderID_t temp_CrossfaderID = 0;
+ am_crossfaderID_t temp_CrossfaderID = 0;
am_crossfaderID_t temp_CrossfaderIndex = 0;
bool result;
- //if gatewayData is zero and the first Static Sink was already entered, the ID is created
+ // if gatewayData is zero and the first Static Sink was already entered, the ID is created
if (crossfaderData.crossfaderID != 0 || mFirstStaticCrossfader)
{
- //check if the ID already exists
+ // check if the ID already exists
if (existCrossFader(crossfaderData.crossfaderID))
{
- crossfaderID = crossfaderData.crossfaderID;
+ crossfaderID = crossfaderData.crossfaderID;
return (E_ALREADY_EXISTS);
}
}
+
result = insertCrossfaderDB(crossfaderData, temp_CrossfaderID);
- if( false == result )
- return (E_UNKNOWN);
- temp_CrossfaderIndex = temp_CrossfaderID;
+ if ( false == result )
+ {
+ return (E_UNKNOWN);
+ }
+
+ temp_CrossfaderIndex = temp_CrossfaderID;
- //if the first static sink is entered, we need to set it onto the boundary
- if ( 0==crossfaderData.crossfaderID && mFirstStaticCrossfader)
+ // if the first static sink is entered, we need to set it onto the boundary
+ if ( 0 == crossfaderData.crossfaderID && mFirstStaticCrossfader)
{
mFirstStaticCrossfader = false;
}
- mMappedData.mCrossfaderMap[temp_CrossfaderIndex].crossfaderID = temp_CrossfaderID;
- crossfaderID = temp_CrossfaderID;
- logVerbose("DatabaseHandler::enterCrossfaderDB entered new crossfader with name=", crossfaderData.name, "sinkA= ", crossfaderData.sinkID_A, "sinkB=", crossfaderData.sinkID_B, "source=", crossfaderData.sourceID, "assigned ID:", crossfaderID);
+ mMappedData.mCrossfaderMap[temp_CrossfaderIndex].crossfaderID = temp_CrossfaderID;
+ crossfaderID = temp_CrossfaderID;
+ logVerbose("DatabaseHandler::enterCrossfaderDB entered new crossfader with name=", crossfaderData.name, "sinkA= ", crossfaderData.sinkID_A, "sinkB=", crossfaderData.sinkID_B, "source=", crossfaderData.sourceID, "assigned ID:", crossfaderID);
- NOTIFY_OBSERVERS1(dboNewCrossfader, mMappedData.mCrossfaderMap[temp_CrossfaderIndex])
+ NOTIFY_OBSERVERS1(dboNewCrossfader, mMappedData.mCrossfaderMap[temp_CrossfaderIndex])
return (E_OK);
}
-bool CAmDatabaseHandlerMap::insertGatewayDB(const am_Gateway_s & gatewayData, am_gatewayID_t & gatewayID)
+bool CAmDatabaseHandlerMap::insertGatewayDB(const am_Gateway_s &gatewayData, am_gatewayID_t &gatewayID)
{
int16_t nextID = 0;
- if(mMappedData.increaseID(nextID, mMappedData.mCurrentGatewayID, gatewayData.gatewayID))
- {
- gatewayID = nextID;
- mMappedData.mGatewayMap[nextID] = gatewayData;
- mMappedData.mGatewayMap[nextID].gatewayID = nextID;
- return (true);
- }
- else
- {
- gatewayID = 0;
- logVerbose(__METHOD_NAME__,"Max limit reached.");
- return (false);
- }
+ if (mMappedData.increaseID(nextID, mMappedData.mCurrentGatewayID, gatewayData.gatewayID))
+ {
+ gatewayID = nextID;
+ mMappedData.mGatewayMap[nextID] = gatewayData;
+ mMappedData.mGatewayMap[nextID].gatewayID = nextID;
+ return (true);
+ }
+ else
+ {
+ gatewayID = 0;
+ logVerbose(__METHOD_NAME__, "Max limit reached.");
+ return (false);
+ }
}
-am_Error_e CAmDatabaseHandlerMap::enterGatewayDB(const am_Gateway_s & gatewayData, am_gatewayID_t & gatewayID)
+am_Error_e CAmDatabaseHandlerMap::enterGatewayDB(const am_Gateway_s &gatewayData, am_gatewayID_t &gatewayID)
{
- if(gatewayData.gatewayID>=DYNAMIC_ID_BOUNDARY)
+ if (gatewayData.gatewayID >= DYNAMIC_ID_BOUNDARY)
{
- logError(__METHOD_NAME__,"gatewayID must be below:",DYNAMIC_ID_BOUNDARY);
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "gatewayID must be below:", DYNAMIC_ID_BOUNDARY);
+ return (E_NOT_POSSIBLE);
}
- if(!existDomain(gatewayData.controlDomainID))
+ if (!existDomain(gatewayData.controlDomainID))
{
- logError(__METHOD_NAME__,"controlDomainID must be exist");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "controlDomainID must be exist");
+ return (E_NOT_POSSIBLE);
}
- if(gatewayData.name.empty())
+ if (gatewayData.name.empty())
{
- logError(__METHOD_NAME__,"gatewayName must not be empty");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "gatewayName must not be empty");
+ return (E_NOT_POSSIBLE);
}
- //might be that the sinks and sources are not there during registration time
- //assert(existSink(gatewayData.sinkID));
- //assert(existSource(gatewayData.sourceID));
+ // might be that the sinks and sources are not there during registration time
+ // assert(existSink(gatewayData.sinkID));
+ // assert(existSource(gatewayData.sourceID));
- am_gatewayID_t temp_GatewayID = 0;
+ am_gatewayID_t temp_GatewayID = 0;
am_gatewayID_t temp_GatewayIndex = 0;
- //if gatewayData is zero and the first Static Sink was already entered, the ID is created
+ // if gatewayData is zero and the first Static Sink was already entered, the ID is created
bool result;
if (gatewayData.gatewayID != 0 || mFirstStaticGateway)
{
- //check if the ID already exists
+ // check if the ID already exists
if (existGateway(gatewayData.gatewayID))
{
- gatewayID = gatewayData.gatewayID;
+ gatewayID = gatewayData.gatewayID;
return (E_ALREADY_EXISTS);
}
}
+
result = insertGatewayDB(gatewayData, temp_GatewayID);
- if( false == result )
- return (E_UNKNOWN);
+ if ( false == result )
+ {
+ return (E_UNKNOWN);
+ }
- temp_GatewayIndex = temp_GatewayID;
- //if the ID is not created, we add it to the query
+ temp_GatewayIndex = temp_GatewayID;
+ // if the ID is not created, we add it to the query
if (gatewayData.gatewayID == 0 && mFirstStaticGateway)
{
mFirstStaticGateway = false;
}
+
mMappedData.mGatewayMap[temp_GatewayIndex].gatewayID = temp_GatewayID;
- gatewayID = temp_GatewayID;
+ gatewayID = temp_GatewayID;
logVerbose("DatabaseHandler::enterGatewayDB entered new gateway with name", gatewayData.name, "sourceID:", gatewayData.sourceID, "sinkID:", gatewayData.sinkID, "assigned ID:", gatewayID);
@@ -877,85 +932,89 @@ am_Error_e CAmDatabaseHandlerMap::enterGatewayDB(const am_Gateway_s & gatewayDat
return (E_OK);
}
-bool CAmDatabaseHandlerMap::insertConverterDB(const am_Converter_s & converteData, am_converterID_t & converterID)
+bool CAmDatabaseHandlerMap::insertConverterDB(const am_Converter_s &converteData, am_converterID_t &converterID)
{
int16_t nextID = 0;
- if(mMappedData.increaseID(nextID, mMappedData.mCurrentConverterID, converteData.converterID))
- {
- converterID = nextID;
- mMappedData.mConverterMap[nextID] = converteData;
- mMappedData.mConverterMap[nextID].converterID = nextID;
- return (true);
- }
- else
- {
- converterID = 0;
- logVerbose(__METHOD_NAME__,"Max limit reached.");
- return (false);
- }
+ if (mMappedData.increaseID(nextID, mMappedData.mCurrentConverterID, converteData.converterID))
+ {
+ converterID = nextID;
+ mMappedData.mConverterMap[nextID] = converteData;
+ mMappedData.mConverterMap[nextID].converterID = nextID;
+ return (true);
+ }
+ else
+ {
+ converterID = 0;
+ logVerbose(__METHOD_NAME__, "Max limit reached.");
+ return (false);
+ }
}
-am_Error_e CAmDatabaseHandlerMap::enterConverterDB(const am_Converter_s & converterData, am_converterID_t & converterID)
+am_Error_e CAmDatabaseHandlerMap::enterConverterDB(const am_Converter_s &converterData, am_converterID_t &converterID)
{
- if(converterData.converterID>=DYNAMIC_ID_BOUNDARY)
+ if (converterData.converterID >= DYNAMIC_ID_BOUNDARY)
{
- logError(__METHOD_NAME__,"converterID must be below:",DYNAMIC_ID_BOUNDARY);
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "converterID must be below:", DYNAMIC_ID_BOUNDARY);
+ return (E_NOT_POSSIBLE);
}
- if(!existSink(converterData.sinkID))
+ if (!existSink(converterData.sinkID))
{
- logError(__METHOD_NAME__,"sinkID must exists");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "sinkID must exists");
+ return (E_NOT_POSSIBLE);
}
- if(!existSource(converterData.sourceID))
+ if (!existSource(converterData.sourceID))
{
- logError(__METHOD_NAME__,"sourceID must exists");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "sourceID must exists");
+ return (E_NOT_POSSIBLE);
}
- if(!existDomain(converterData.domainID))
+ if (!existDomain(converterData.domainID))
{
- logError(__METHOD_NAME__,"domainID must exists");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "domainID must exists");
+ return (E_NOT_POSSIBLE);
}
- if(converterData.name.empty())
+ if (converterData.name.empty())
{
- logError(__METHOD_NAME__,"converterName must not be empty");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "converterName must not be empty");
+ return (E_NOT_POSSIBLE);
}
- //might be that the sinks and sources are not there during registration time
- //assert(existSink(gatewayData.sinkID));
- //assert(existSource(gatewayData.sourceID));
+ // might be that the sinks and sources are not there during registration time
+ // assert(existSink(gatewayData.sinkID));
+ // assert(existSource(gatewayData.sourceID));
- am_converterID_t tempID = 0;
+ am_converterID_t tempID = 0;
am_converterID_t tempIndex = 0;
- //if gatewayData is zero and the first Static Sink was already entered, the ID is created
+ // if gatewayData is zero and the first Static Sink was already entered, the ID is created
bool result;
if (converterData.converterID != 0 || mFirstStaticConverter)
{
- //check if the ID already exists
+ // check if the ID already exists
if (existConverter(converterData.converterID))
{
- converterID = converterData.converterID;
+ converterID = converterData.converterID;
return (E_ALREADY_EXISTS);
}
}
+
result = insertConverterDB(converterData, tempID);
- if( false == result )
- return (E_UNKNOWN);
+ if ( false == result )
+ {
+ return (E_UNKNOWN);
+ }
- tempIndex = tempID;
- //if the ID is not created, we add it to the query
+ tempIndex = tempID;
+ // if the ID is not created, we add it to the query
if (converterData.converterID == 0 && mFirstStaticConverter)
{
- mFirstStaticConverter = false;
+ mFirstStaticConverter = false;
}
+
mMappedData.mConverterMap[tempIndex].converterID = tempID;
- converterID = tempID;
+ converterID = tempID;
logVerbose("DatabaseHandler::enterConverterDB entered new converter with name", converterData.name, "sourceID:", converterData.sourceID, "sinkID:", converterData.sinkID, "assigned ID:", converterID);
NOTIFY_OBSERVERS1(dboNewConverter, mMappedData.mConverterMap[tempIndex])
@@ -963,113 +1022,124 @@ am_Error_e CAmDatabaseHandlerMap::enterConverterDB(const am_Converter_s & conver
return (E_OK);
}
-void CAmDatabaseHandlerMap::dump( std::ostream & output ) const
+void CAmDatabaseHandlerMap::dump(std::ostream &output) const
{
- output << std::endl << "****************** DUMP START ******************" << std::endl;
- AmMappedData::printMap(mMappedData.mDomainMap, output);
- AmMappedData::printMap(mMappedData.mSourceMap, output);
- AmMappedData::printMap(mMappedData.mSinkMap, output);
- AmMappedData::printMap(mMappedData.mSourceClassesMap, output);
- AmMappedData::printMap(mMappedData.mSinkClassesMap, output);
- AmMappedData::printMap(mMappedData.mConnectionMap, output);
- AmMappedData::printMap(mMappedData.mMainConnectionMap, output);
- AmMappedData::printMap(mMappedData.mCrossfaderMap, output);
- AmMappedData::printMap(mMappedData.mGatewayMap, output);
- AmVectorSystemProperties::const_iterator iter = mMappedData.mSystemProperties.begin();
- output << "System properties" << "\n";
- for(; iter!=mMappedData.mSystemProperties.end(); iter++)
- output << "[type:" << iter->type << " value:" << iter->value << "]";
- output << std::endl << "****************** DUMP END ******************" << std::endl;
+ output << std::endl << "****************** DUMP START ******************" << std::endl;
+ AmMappedData::printMap(mMappedData.mDomainMap, output);
+ AmMappedData::printMap(mMappedData.mSourceMap, output);
+ AmMappedData::printMap(mMappedData.mSinkMap, output);
+ AmMappedData::printMap(mMappedData.mSourceClassesMap, output);
+ AmMappedData::printMap(mMappedData.mSinkClassesMap, output);
+ AmMappedData::printMap(mMappedData.mConnectionMap, output);
+ AmMappedData::printMap(mMappedData.mMainConnectionMap, output);
+ AmMappedData::printMap(mMappedData.mCrossfaderMap, output);
+ AmMappedData::printMap(mMappedData.mGatewayMap, output);
+ AmVectorSystemProperties::const_iterator iter = mMappedData.mSystemProperties.begin();
+ output << "System properties" << "\n";
+ for (; iter != mMappedData.mSystemProperties.end(); iter++)
+ {
+ output << "[type:" << iter->type << " value:" << iter->value << "]";
+ }
+
+ output << std::endl << "****************** DUMP END ******************" << std::endl;
}
-bool CAmDatabaseHandlerMap::insertSourceDB(const am_Source_s & sourceData, am_sourceID_t & sourceID)
+bool CAmDatabaseHandlerMap::insertSourceDB(const am_Source_s &sourceData, am_sourceID_t &sourceID)
{
int16_t nextID = 0;
- if(mMappedData.increaseID(nextID, mMappedData.mCurrentSourceID, sourceData.sourceID))
- {
- sourceID = nextID;
- mMappedData.mSourceMap[nextID] = sourceData;
- mMappedData.mSourceMap[nextID].sourceID = nextID;
- filterDuplicateNotificationConfigurationTypes(mMappedData.mSourceMap[nextID].listNotificationConfigurations);
- filterDuplicateNotificationConfigurationTypes(mMappedData.mSourceMap[nextID].listMainNotificationConfigurations);
- return (true);
- }
- else
- {
- sourceID = 0;
- logVerbose(__METHOD_NAME__,"Max limit reached.");
- return (false);
- }
-}
-
-am_Error_e CAmDatabaseHandlerMap::enterSourceDB(const am_Source_s & sourceData, am_sourceID_t & sourceID)
-{
- if(sourceData.sourceID>=DYNAMIC_ID_BOUNDARY)
- {
- logError(__METHOD_NAME__,"sourceID must be below:",DYNAMIC_ID_BOUNDARY);
- return (E_NOT_POSSIBLE);
- }
- if(!existDomain(sourceData.domainID))
- {
- logError(__METHOD_NAME__,"domainID must be valid");
- return (E_NOT_POSSIBLE);
- }
- if(sourceData.name.empty())
- {
- logError(__METHOD_NAME__,"sourceName must not be zero");
- return (E_NOT_POSSIBLE);
- }
- if(!existSourceClass(sourceData.sourceClassID))
- {
- logError(__METHOD_NAME__,"sourceClassID must be valid");
- return (E_NOT_POSSIBLE);
- }
-
- if(!(sourceData.sourceState>=SS_UNKNNOWN && sourceData.sourceState<=SS_MAX))
- {
- logError(__METHOD_NAME__,"sourceState must be valid");
- return (E_NOT_POSSIBLE);
- }
-
- bool isFirstStatic = sourceData.sourceID == 0 && mFirstStaticSource;
- am_sourceID_t temp_SourceID = 0;
- am_sourceID_t temp_SourceIndex = 0;
- AmSource const *reservedSource = objectMatchingPredicate<AmSource, am_sourceID_t>(mMappedData.mSourceMap, [&](const AmSource & obj){
- return true==obj.reserved && obj.name.compare(sourceData.name)==0;
- });
- if( NULL != reservedSource )
- {
- am_sourceID_t oldSourceID = reservedSource->sourceID;
- mMappedData.mSourceMap[oldSourceID] = sourceData;
- mMappedData.mSourceMap[oldSourceID].reserved = 0;
- temp_SourceID = oldSourceID;
- temp_SourceIndex = oldSourceID;
- }
- else
- {
- bool result;
- if ( !isFirstStatic )
- {
- //check if the ID already exists
- if (existSourceNameOrID(sourceData.sourceID, sourceData.name))
- {
- sourceID = sourceData.sourceID;
- return (E_ALREADY_EXISTS);
- }
- }
- result = insertSourceDB(sourceData, temp_SourceID);
- if( false == result )
- return (E_UNKNOWN);
- temp_SourceIndex = temp_SourceID;
+ if (mMappedData.increaseID(nextID, mMappedData.mCurrentSourceID, sourceData.sourceID))
+ {
+ sourceID = nextID;
+ mMappedData.mSourceMap[nextID] = sourceData;
+ mMappedData.mSourceMap[nextID].sourceID = nextID;
+ filterDuplicateNotificationConfigurationTypes(mMappedData.mSourceMap[nextID].listNotificationConfigurations);
+ filterDuplicateNotificationConfigurationTypes(mMappedData.mSourceMap[nextID].listMainNotificationConfigurations);
+ return (true);
+ }
+ else
+ {
+ sourceID = 0;
+ logVerbose(__METHOD_NAME__, "Max limit reached.");
+ return (false);
+ }
+}
+
+am_Error_e CAmDatabaseHandlerMap::enterSourceDB(const am_Source_s &sourceData, am_sourceID_t &sourceID)
+{
+ if (sourceData.sourceID >= DYNAMIC_ID_BOUNDARY)
+ {
+ logError(__METHOD_NAME__, "sourceID must be below:", DYNAMIC_ID_BOUNDARY);
+ return (E_NOT_POSSIBLE);
+ }
+
+ if (!existDomain(sourceData.domainID))
+ {
+ logError(__METHOD_NAME__, "domainID must be valid");
+ return (E_NOT_POSSIBLE);
+ }
+
+ if (sourceData.name.empty())
+ {
+ logError(__METHOD_NAME__, "sourceName must not be zero");
+ return (E_NOT_POSSIBLE);
+ }
+
+ if (!existSourceClass(sourceData.sourceClassID))
+ {
+ logError(__METHOD_NAME__, "sourceClassID must be valid");
+ return (E_NOT_POSSIBLE);
+ }
+
+ if (!(sourceData.sourceState >= SS_UNKNNOWN && sourceData.sourceState <= SS_MAX))
+ {
+ logError(__METHOD_NAME__, "sourceState must be valid");
+ return (E_NOT_POSSIBLE);
+ }
+
+ bool isFirstStatic = sourceData.sourceID == 0 && mFirstStaticSource;
+ am_sourceID_t temp_SourceID = 0;
+ am_sourceID_t temp_SourceIndex = 0;
+ AmSource const *reservedSource = objectMatchingPredicate<AmSource, am_sourceID_t>(mMappedData.mSourceMap, [&](const AmSource &obj){
+ return true == obj.reserved && obj.name.compare(sourceData.name) == 0;
+ });
+ if ( NULL != reservedSource )
+ {
+ am_sourceID_t oldSourceID = reservedSource->sourceID;
+ mMappedData.mSourceMap[oldSourceID] = sourceData;
+ mMappedData.mSourceMap[oldSourceID].reserved = 0;
+ temp_SourceID = oldSourceID;
+ temp_SourceIndex = oldSourceID;
+ }
+ else
+ {
+ bool result;
+ if ( !isFirstStatic )
+ {
+ // check if the ID already exists
+ if (existSourceNameOrID(sourceData.sourceID, sourceData.name))
+ {
+ sourceID = sourceData.sourceID;
+ return (E_ALREADY_EXISTS);
+ }
+ }
+
+ result = insertSourceDB(sourceData, temp_SourceID);
+ if ( false == result )
+ {
+ return (E_UNKNOWN);
+ }
+
+ temp_SourceIndex = temp_SourceID;
}
if ( isFirstStatic )
{
- //if the first static sink is entered, we need to set it onto the boundary if needed
+ // if the first static sink is entered, we need to set it onto the boundary if needed
mFirstStaticSource = false;
}
+
mMappedData.mSourceMap[temp_SourceIndex].sourceID = temp_SourceID;
- sourceID = temp_SourceID;
+ sourceID = temp_SourceID;
logVerbose("DatabaseHandler::enterSourceDB entered new source with name", sourceData.name, "domainID:", sourceData.domainID, "classID:", sourceData.sourceClassID, "visible:", sourceData.visible, "assigned ID:", sourceID);
@@ -1078,169 +1148,177 @@ am_Error_e CAmDatabaseHandlerMap::enterSourceDB(const am_Source_s & sourceData,
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::enterConnectionDB(const am_Connection_s& connection, am_connectionID_t& connectionID)
+am_Error_e CAmDatabaseHandlerMap::enterConnectionDB(const am_Connection_s &connection, am_connectionID_t &connectionID)
{
- if(connection.connectionID!=0)
+ if (connection.connectionID != 0)
{
- logError(__METHOD_NAME__,"connectionID must be 0!");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "connectionID must be 0!");
+ return (E_NOT_POSSIBLE);
}
- if(!existSink(connection.sinkID))
+ if (!existSink(connection.sinkID))
{
- logError(__METHOD_NAME__,"sinkID must exist!");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "sinkID must exist!");
+ return (E_NOT_POSSIBLE);
}
- if(!existSource(connection.sourceID))
+ if (!existSource(connection.sourceID))
{
- logError(__METHOD_NAME__,"sourceID must exist!");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "sourceID must exist!");
+ return (E_NOT_POSSIBLE);
}
- //connection format is not checked, because it's project specific
+
+ // connection format is not checked, because it's project specific
int16_t nextID = 0;
- if(mMappedData.increaseConnectionID(nextID))
- {
- connectionID = nextID;
- mMappedData.mConnectionMap[nextID] = connection;
- mMappedData.mConnectionMap[nextID].connectionID = nextID;
- mMappedData.mConnectionMap[nextID].reserved = true;
- }
- else
- {
- connectionID = 0;
- logVerbose(__METHOD_NAME__,"Max limit reached.");
- return (E_UNKNOWN);
- }
+ if (mMappedData.increaseConnectionID(nextID))
+ {
+ connectionID = nextID;
+ mMappedData.mConnectionMap[nextID] = connection;
+ mMappedData.mConnectionMap[nextID].connectionID = nextID;
+ mMappedData.mConnectionMap[nextID].reserved = true;
+ }
+ else
+ {
+ connectionID = 0;
+ logVerbose(__METHOD_NAME__, "Max limit reached.");
+ return (E_UNKNOWN);
+ }
logVerbose("DatabaseHandler::enterConnectionDB entered new connection sinkID=", connection.sinkID, "sourceID=", connection.sourceID, "connectionFormat=", connection.connectionFormat, "assigned ID=", connectionID);
return (E_OK);
}
-bool CAmDatabaseHandlerMap::insertSinkClassDB(const am_SinkClass_s & sinkClass, am_sinkClass_t & sinkClassID)
+bool CAmDatabaseHandlerMap::insertSinkClassDB(const am_SinkClass_s &sinkClass, am_sinkClass_t &sinkClassID)
{
int16_t nextID = 0;
- if(mMappedData.increaseID(nextID, mMappedData.mCurrentSinkClassesID, sinkClass.sinkClassID))
- {
- sinkClassID = nextID;
- mMappedData.mSinkClassesMap[nextID] = sinkClass;
- mMappedData.mSinkClassesMap[nextID].sinkClassID = nextID;
- return (true);
- }
- else
- {
- sinkClassID = 0;
- logVerbose(__METHOD_NAME__,"Max limit reached.");
- return (false);
- }
+ if (mMappedData.increaseID(nextID, mMappedData.mCurrentSinkClassesID, sinkClass.sinkClassID))
+ {
+ sinkClassID = nextID;
+ mMappedData.mSinkClassesMap[nextID] = sinkClass;
+ mMappedData.mSinkClassesMap[nextID].sinkClassID = nextID;
+ return (true);
+ }
+ else
+ {
+ sinkClassID = 0;
+ logVerbose(__METHOD_NAME__, "Max limit reached.");
+ return (false);
+ }
}
-am_Error_e CAmDatabaseHandlerMap::enterSinkClassDB(const am_SinkClass_s & sinkClass, am_sinkClass_t & sinkClassID)
+am_Error_e CAmDatabaseHandlerMap::enterSinkClassDB(const am_SinkClass_s &sinkClass, am_sinkClass_t &sinkClassID)
{
- if(sinkClass.sinkClassID>=DYNAMIC_ID_BOUNDARY)
+ if (sinkClass.sinkClassID >= DYNAMIC_ID_BOUNDARY)
{
- logError(__METHOD_NAME__,"sinkClassID must be <",DYNAMIC_ID_BOUNDARY);
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "sinkClassID must be <", DYNAMIC_ID_BOUNDARY);
+ return (E_NOT_POSSIBLE);
}
- if(sinkClass.name.empty())
+ if (sinkClass.name.empty())
{
- logError(__METHOD_NAME__,"name must not be empty");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "name must not be empty");
+ return (E_NOT_POSSIBLE);
}
- am_sinkClass_t temp_SinkClassID = 0;
+ am_sinkClass_t temp_SinkClassID = 0;
am_sinkClass_t temp_SinkClassIndex = 0;
- bool result;
- if (sinkClass.sinkClassID != 0 || mFirstStaticSinkClass)
- {
- //check if the ID already exists
- if (existSinkClass(sinkClass.sinkClassID))
- {
- sinkClassID = sinkClass.sinkClassID;
- return (E_ALREADY_EXISTS);
- }
- }
- result = insertSinkClassDB(sinkClass, temp_SinkClassID);
- if( false == result )
- return (E_UNKNOWN);
-
- temp_SinkClassIndex = temp_SinkClassID;
- //if the ID is not created, we add it to the query
- if (sinkClass.sinkClassID == 0 && mFirstStaticSinkClass)
- {
- mFirstStaticSinkClass = false;
- }
- mMappedData.mSinkClassesMap[temp_SinkClassIndex].sinkClassID = temp_SinkClassID;
- sinkClassID = temp_SinkClassID;
-
- //todo:change last_insert implementations for multithreaded usage...
+ bool result;
+ if (sinkClass.sinkClassID != 0 || mFirstStaticSinkClass)
+ {
+ // check if the ID already exists
+ if (existSinkClass(sinkClass.sinkClassID))
+ {
+ sinkClassID = sinkClass.sinkClassID;
+ return (E_ALREADY_EXISTS);
+ }
+ }
+
+ result = insertSinkClassDB(sinkClass, temp_SinkClassID);
+ if ( false == result )
+ {
+ return (E_UNKNOWN);
+ }
+
+ temp_SinkClassIndex = temp_SinkClassID;
+ // if the ID is not created, we add it to the query
+ if (sinkClass.sinkClassID == 0 && mFirstStaticSinkClass)
+ {
+ mFirstStaticSinkClass = false;
+ }
+
+ mMappedData.mSinkClassesMap[temp_SinkClassIndex].sinkClassID = temp_SinkClassID;
+ sinkClassID = temp_SinkClassID;
+
+ // todo:change last_insert implementations for multithreaded usage...
logVerbose("DatabaseHandler::enterSinkClassDB entered new sinkClass");
NOTIFY_OBSERVERS(dboNumberOfSinkClassesChanged)
return (E_OK);
}
-bool CAmDatabaseHandlerMap::insertSourceClassDB(am_sourceClass_t & sourceClassID, const am_SourceClass_s & sourceClass)
+bool CAmDatabaseHandlerMap::insertSourceClassDB(am_sourceClass_t &sourceClassID, const am_SourceClass_s &sourceClass)
{
int16_t nextID = 0;
- if(mMappedData.increaseID(nextID, mMappedData.mCurrentSourceClassesID, sourceClass.sourceClassID))
- {
- sourceClassID = nextID;
- mMappedData.mSourceClassesMap[nextID] = sourceClass;
- mMappedData.mSourceClassesMap[nextID].sourceClassID = nextID;
- return (true);
- }
- else
- {
- sourceClassID = 0;
- logVerbose(__METHOD_NAME__,"Max limit reached.");
- return (false);
- }
+ if (mMappedData.increaseID(nextID, mMappedData.mCurrentSourceClassesID, sourceClass.sourceClassID))
+ {
+ sourceClassID = nextID;
+ mMappedData.mSourceClassesMap[nextID] = sourceClass;
+ mMappedData.mSourceClassesMap[nextID].sourceClassID = nextID;
+ return (true);
+ }
+ else
+ {
+ sourceClassID = 0;
+ logVerbose(__METHOD_NAME__, "Max limit reached.");
+ return (false);
+ }
}
-am_Error_e CAmDatabaseHandlerMap::enterSourceClassDB(am_sourceClass_t & sourceClassID, const am_SourceClass_s & sourceClass)
+am_Error_e CAmDatabaseHandlerMap::enterSourceClassDB(am_sourceClass_t &sourceClassID, const am_SourceClass_s &sourceClass)
{
- if(sourceClass.sourceClassID>=DYNAMIC_ID_BOUNDARY)
+ if (sourceClass.sourceClassID >= DYNAMIC_ID_BOUNDARY)
{
- logError(__METHOD_NAME__,"sourceClassID must be <",DYNAMIC_ID_BOUNDARY);
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "sourceClassID must be <", DYNAMIC_ID_BOUNDARY);
+ return (E_NOT_POSSIBLE);
}
- if(sourceClass.name.empty())
+ if (sourceClass.name.empty())
{
- logError(__METHOD_NAME__,"name must not be empty");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "name must not be empty");
+ return (E_NOT_POSSIBLE);
}
-
- am_sourceClass_t temp_SourceClassID = 0;
+ am_sourceClass_t temp_SourceClassID = 0;
am_sourceClass_t temp_SourceClassIndex = 0;
- bool result;
- if (sourceClass.sourceClassID != 0 || mFirstStaticSourceClass)
- {
- //check if the ID already exists
- if (existSourceClass(sourceClass.sourceClassID))
- {
- sourceClassID = sourceClass.sourceClassID;
- return (E_ALREADY_EXISTS);
- }
- }
- result = insertSourceClassDB(temp_SourceClassID, sourceClass);
- if( false == result )
- return (E_UNKNOWN);
-
- temp_SourceClassIndex = temp_SourceClassID;
- //if the ID is not created, we add it to the query
- if (sourceClass.sourceClassID == 0 && mFirstStaticSourceClass)
- {
- mFirstStaticSinkClass = false;
- }
- mMappedData.mSourceClassesMap[temp_SourceClassIndex].sourceClassID = temp_SourceClassID;
- sourceClassID = temp_SourceClassID;
-
- //todo:change last_insert implementations for multithread usage...
+ bool result;
+ if (sourceClass.sourceClassID != 0 || mFirstStaticSourceClass)
+ {
+ // check if the ID already exists
+ if (existSourceClass(sourceClass.sourceClassID))
+ {
+ sourceClassID = sourceClass.sourceClassID;
+ return (E_ALREADY_EXISTS);
+ }
+ }
+
+ result = insertSourceClassDB(temp_SourceClassID, sourceClass);
+ if ( false == result )
+ {
+ return (E_UNKNOWN);
+ }
+
+ temp_SourceClassIndex = temp_SourceClassID;
+ // if the ID is not created, we add it to the query
+ if (sourceClass.sourceClassID == 0 && mFirstStaticSourceClass)
+ {
+ mFirstStaticSinkClass = false;
+ }
+
+ mMappedData.mSourceClassesMap[temp_SourceClassIndex].sourceClassID = temp_SourceClassID;
+ sourceClassID = temp_SourceClassID;
+
+ // todo:change last_insert implementations for multithread usage...
logVerbose("DatabaseHandler::enterSourceClassDB entered new sourceClass");
@@ -1249,13 +1327,13 @@ am_Error_e CAmDatabaseHandlerMap::enterSourceClassDB(am_sourceClass_t & sourceCl
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::enterSystemProperties(const std::vector<am_SystemProperty_s> & listSystemProperties)
+am_Error_e CAmDatabaseHandlerMap::enterSystemProperties(const std::vector<am_SystemProperty_s> &listSystemProperties)
{
- if(listSystemProperties.empty())
- {
- logError(__METHOD_NAME__,"listSystemProperties must not be empty");
- return (E_NOT_POSSIBLE);
- }
+ if (listSystemProperties.empty())
+ {
+ logError(__METHOD_NAME__, "listSystemProperties must not be empty");
+ return (E_NOT_POSSIBLE);
+ }
mMappedData.mSystemProperties = listSystemProperties;
@@ -1263,27 +1341,29 @@ am_Error_e CAmDatabaseHandlerMap::enterSystemProperties(const std::vector<am_Sys
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::changeMainConnectionRouteDB(const am_mainConnectionID_t mainconnectionID, const std::vector<am_connectionID_t>& listConnectionID)
+am_Error_e CAmDatabaseHandlerMap::changeMainConnectionRouteDB(const am_mainConnectionID_t mainconnectionID, const std::vector<am_connectionID_t> &listConnectionID)
{
- if(mainconnectionID==0)
+ if (mainconnectionID == 0)
{
- logError(__METHOD_NAME__,"mainconnectionID must not be 0");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "mainconnectionID must not be 0");
+ return (E_NOT_POSSIBLE);
}
if (!existMainConnection(mainconnectionID))
{
- logError(__METHOD_NAME__,"existMainConnection must exist");
+ logError(__METHOD_NAME__, "existMainConnection must exist");
return (E_NON_EXISTENT);
}
int16_t delay = calculateDelayForRoute(listConnectionID);
- //now we replace the data in the main connection object with the new one
+ // now we replace the data in the main connection object with the new one
mMappedData.mMainConnectionMap[mainconnectionID].listConnectionID = listConnectionID;
- if (changeDelayMainConnection(delay,mainconnectionID) == E_NO_CHANGE)
+ if (changeDelayMainConnection(delay, mainconnectionID) == E_NO_CHANGE)
+ {
logError("DatabaseHandler::changeMainConnectionRouteDB error while changing mainConnectionDelay to ", delay);
+ }
logVerbose("DatabaseHandler::changeMainConnectionRouteDB entered new route:", mainconnectionID);
return (E_OK);
@@ -1291,21 +1371,21 @@ am_Error_e CAmDatabaseHandlerMap::changeMainConnectionRouteDB(const am_mainConne
am_Error_e CAmDatabaseHandlerMap::changeMainConnectionStateDB(const am_mainConnectionID_t mainconnectionID, const am_ConnectionState_e connectionState)
{
- if(mainconnectionID==0)
+ if (mainconnectionID == 0)
{
- logError(__METHOD_NAME__,"mainconnectionID must not be 0");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "mainconnectionID must not be 0");
+ return (E_NOT_POSSIBLE);
}
- if(!(connectionState>=CS_UNKNOWN && connectionState<=CS_MAX))
+ if (!(connectionState >= CS_UNKNOWN && connectionState <= CS_MAX))
{
- logError(__METHOD_NAME__,"connectionState must be valid");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "connectionState must be valid");
+ return (E_NOT_POSSIBLE);
}
if (!existMainConnection(mainconnectionID))
{
- logError(__METHOD_NAME__,"existMainConnection must exist");
+ logError(__METHOD_NAME__, "existMainConnection must exist");
return (E_NON_EXISTENT);
}
@@ -1320,7 +1400,7 @@ am_Error_e CAmDatabaseHandlerMap::changeSinkMainVolumeDB(const am_mainVolume_t m
{
if (!existSink(sinkID))
{
- logError(__METHOD_NAME__,"sinkID must exist");
+ logError(__METHOD_NAME__, "sinkID must exist");
return (E_NON_EXISTENT);
}
@@ -1333,17 +1413,17 @@ am_Error_e CAmDatabaseHandlerMap::changeSinkMainVolumeDB(const am_mainVolume_t m
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::changeSinkAvailabilityDB(const am_Availability_s & availability, const am_sinkID_t sinkID)
+am_Error_e CAmDatabaseHandlerMap::changeSinkAvailabilityDB(const am_Availability_s &availability, const am_sinkID_t sinkID)
{
- if (!(availability.availability>=A_UNKNOWN && availability.availability<=A_MAX))
+ if (!(availability.availability >= A_UNKNOWN && availability.availability <= A_MAX))
{
- logError(__METHOD_NAME__,"availability must be valid");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "availability must be valid");
+ return (E_NOT_POSSIBLE);
}
if (!existSink(sinkID))
{
- logError(__METHOD_NAME__,"sinkID must exist");
+ logError(__METHOD_NAME__, "sinkID must exist");
return (E_NON_EXISTENT);
}
@@ -1353,23 +1433,24 @@ am_Error_e CAmDatabaseHandlerMap::changeSinkAvailabilityDB(const am_Availability
if (sinkVisible(sinkID))
{
- NOTIFY_OBSERVERS2(dboSinkAvailabilityChanged,sinkID, availability)
+ NOTIFY_OBSERVERS2(dboSinkAvailabilityChanged, sinkID, availability)
}
+
return (E_OK);
}
am_Error_e CAmDatabaseHandlerMap::changeDomainStateDB(const am_DomainState_e domainState, const am_domainID_t domainID)
{
- if(!(domainState>=DS_UNKNOWN && domainState<=DS_MAX))
+ if (!(domainState >= DS_UNKNOWN && domainState <= DS_MAX))
{
- logError(__METHOD_NAME__,"domainState must be valid");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "domainState must be valid");
+ return (E_NOT_POSSIBLE);
}
if (!existDomain(domainID))
{
- logError(__METHOD_NAME__,"domainID must exist");
+ logError(__METHOD_NAME__, "domainID must exist");
return (E_NON_EXISTENT);
}
@@ -1382,15 +1463,15 @@ am_Error_e CAmDatabaseHandlerMap::changeDomainStateDB(const am_DomainState_e dom
am_Error_e CAmDatabaseHandlerMap::changeSinkMuteStateDB(const am_MuteState_e muteState, const am_sinkID_t sinkID)
{
- if(!(muteState>=MS_UNKNOWN && muteState<=MS_MAX))
+ if (!(muteState >= MS_UNKNOWN && muteState <= MS_MAX))
{
- logError(__METHOD_NAME__,"muteState must be valid");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "muteState must be valid");
+ return (E_NOT_POSSIBLE);
}
if (!existSink(sinkID))
{
- logError(__METHOD_NAME__,"sinkID must exist");
+ logError(__METHOD_NAME__, "sinkID must exist");
return (E_NON_EXISTENT);
}
@@ -1403,52 +1484,60 @@ am_Error_e CAmDatabaseHandlerMap::changeSinkMuteStateDB(const am_MuteState_e mut
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::changeMainSinkSoundPropertyDB(const am_MainSoundProperty_s & soundProperty, const am_sinkID_t sinkID)
+am_Error_e CAmDatabaseHandlerMap::changeMainSinkSoundPropertyDB(const am_MainSoundProperty_s &soundProperty, const am_sinkID_t sinkID)
{
if (!existSink(sinkID))
{
- logError(__METHOD_NAME__,"sinkID must exist");
+ logError(__METHOD_NAME__, "sinkID must exist");
return (E_NON_EXISTENT);
}
- am_Sink_Database_s & sink = mMappedData.mSinkMap[sinkID];
+
+ am_Sink_Database_s &sink = mMappedData.mSinkMap[sinkID];
std::vector<am_MainSoundProperty_s>::iterator elementIterator = sink.listMainSoundProperties.begin();
- for (;elementIterator != sink.listMainSoundProperties.end(); ++elementIterator)
- {
- if (elementIterator->type == soundProperty.type)
- {
- DB_COND_UPDATE_RIE(elementIterator->value, soundProperty.value);
- if(sink.cacheMainSoundProperties.size())
- sink.cacheMainSoundProperties[soundProperty.type] = soundProperty.value;
- break;
- }
- }
+ for (; elementIterator != sink.listMainSoundProperties.end(); ++elementIterator)
+ {
+ if (elementIterator->type == soundProperty.type)
+ {
+ DB_COND_UPDATE_RIE(elementIterator->value, soundProperty.value);
+ if (sink.cacheMainSoundProperties.size())
+ {
+ sink.cacheMainSoundProperties[soundProperty.type] = soundProperty.value;
+ }
+
+ break;
+ }
+ }
logVerbose("DatabaseHandler::changeMainSinkSoundPropertyDB changed MainSinkSoundProperty of sink:", sinkID, "type:", soundProperty.type, "to:", soundProperty.value);
NOTIFY_OBSERVERS2(dboMainSinkSoundPropertyChanged, sinkID, soundProperty)
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::changeMainSourceSoundPropertyDB(const am_MainSoundProperty_s & soundProperty, const am_sourceID_t sourceID)
+am_Error_e CAmDatabaseHandlerMap::changeMainSourceSoundPropertyDB(const am_MainSoundProperty_s &soundProperty, const am_sourceID_t sourceID)
{
if (!existSource(sourceID))
{
- logError(__METHOD_NAME__,"sourceID must exist");
+ logError(__METHOD_NAME__, "sourceID must exist");
return (E_NON_EXISTENT);
}
- am_Source_Database_s & source = mMappedData.mSourceMap.at(sourceID);
+
+ am_Source_Database_s &source = mMappedData.mSourceMap.at(sourceID);
std::vector<am_MainSoundProperty_s>::iterator elementIterator = source.listMainSoundProperties.begin();
- for (;elementIterator != source.listMainSoundProperties.end(); ++elementIterator)
- {
- if (elementIterator->type == soundProperty.type)
- {
- DB_COND_UPDATE_RIE(elementIterator->value, soundProperty.value);
- if(source.cacheMainSoundProperties.size())
- source.cacheMainSoundProperties[soundProperty.type] = soundProperty.value;
- break;
- }
- }
+ for (; elementIterator != source.listMainSoundProperties.end(); ++elementIterator)
+ {
+ if (elementIterator->type == soundProperty.type)
+ {
+ DB_COND_UPDATE_RIE(elementIterator->value, soundProperty.value);
+ if (source.cacheMainSoundProperties.size())
+ {
+ source.cacheMainSoundProperties[soundProperty.type] = soundProperty.value;
+ }
+
+ break;
+ }
+ }
logVerbose("DatabaseHandler::changeMainSourceSoundPropertyDB changed MainSinkSoundProperty of source:", sourceID, "type:", soundProperty.type, "to:", soundProperty.value);
@@ -1456,17 +1545,17 @@ am_Error_e CAmDatabaseHandlerMap::changeMainSourceSoundPropertyDB(const am_MainS
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::changeSourceAvailabilityDB(const am_Availability_s & availability, const am_sourceID_t sourceID)
+am_Error_e CAmDatabaseHandlerMap::changeSourceAvailabilityDB(const am_Availability_s &availability, const am_sourceID_t sourceID)
{
- if(!(availability.availability>=A_UNKNOWN && availability.availability<=A_MAX))
+ if (!(availability.availability >= A_UNKNOWN && availability.availability <= A_MAX))
{
- logError(__METHOD_NAME__,"availability must be valid");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "availability must be valid");
+ return (E_NOT_POSSIBLE);
}
if (!existSource(sourceID))
{
- logError(__METHOD_NAME__,"sourceID must exist");
+ logError(__METHOD_NAME__, "sourceID must exist");
return (E_NON_EXISTENT);
}
@@ -1476,19 +1565,22 @@ am_Error_e CAmDatabaseHandlerMap::changeSourceAvailabilityDB(const am_Availabili
if (sourceVisible(sourceID))
{
- NOTIFY_OBSERVERS2(dboSourceAvailabilityChanged, sourceID, availability)
+ NOTIFY_OBSERVERS2(dboSourceAvailabilityChanged, sourceID, availability)
}
+
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::changeSystemPropertyDB(const am_SystemProperty_s & property)
+am_Error_e CAmDatabaseHandlerMap::changeSystemPropertyDB(const am_SystemProperty_s &property)
{
std::vector<am_SystemProperty_s>::iterator elementIterator = mMappedData.mSystemProperties.begin();
- for (;elementIterator != mMappedData.mSystemProperties.end(); ++elementIterator)
- {
- if (elementIterator->type == property.type)
- DB_COND_UPDATE_RIE(elementIterator->value, property.value);
- }
+ for (; elementIterator != mMappedData.mSystemProperties.end(); ++elementIterator)
+ {
+ if (elementIterator->type == property.type)
+ {
+ DB_COND_UPDATE_RIE(elementIterator->value, property.value);
+ }
+ }
logVerbose("DatabaseHandler::changeSystemPropertyDB changed system property");
@@ -1502,16 +1594,19 @@ am_Error_e CAmDatabaseHandlerMap::removeMainConnectionDB(const am_mainConnection
if (!existMainConnection(mainConnectionID))
{
- logError(__METHOD_NAME__,"mainConnectionID must exist");
+ logError(__METHOD_NAME__, "mainConnectionID must exist");
return (E_NON_EXISTENT);
}
DB_COND_UPDATE_INIT;
DB_COND_UPDATE(mMappedData.mMainConnectionMap[mainConnectionID].mainConnectionID, CS_DISCONNECTED);
if (DB_COND_ISMODIFIED)
+ {
NOTIFY_OBSERVERS2(dboMainConnectionStateChanged, mainConnectionID, CS_DISCONNECTED)
- mMappedData.mMainConnectionMap.erase(mainConnectionID);
+ mMappedData.mMainConnectionMap.erase(mainConnectionID);
+ }
+
logVerbose("DatabaseHandler::removeMainConnectionDB removed:", mainConnectionID);
NOTIFY_OBSERVERS1(dboRemovedMainConnection, mainConnectionID)
@@ -1523,7 +1618,7 @@ am_Error_e CAmDatabaseHandlerMap::removeSinkDB(const am_sinkID_t sinkID)
if (!existSink(sinkID))
{
- logError(__METHOD_NAME__,"sinkID must exist");
+ logError(__METHOD_NAME__, "sinkID must exist");
return (E_NON_EXISTENT);
}
@@ -1531,7 +1626,7 @@ am_Error_e CAmDatabaseHandlerMap::removeSinkDB(const am_sinkID_t sinkID)
mMappedData.mSinkMap.erase(sinkID);
// todo: Check the tables SinkMainSoundProperty and SinkMainNotificationConfiguration with 'visible' set to true
- //if visible is true then delete SinkMainSoundProperty and SinkMainNotificationConfiguration ????
+ // if visible is true then delete SinkMainSoundProperty and SinkMainNotificationConfiguration ????
logVerbose("DatabaseHandler::removeSinkDB removed:", sinkID);
NOTIFY_OBSERVERS2(dboRemovedSink, sinkID, visible)
@@ -1544,7 +1639,7 @@ am_Error_e CAmDatabaseHandlerMap::removeSourceDB(const am_sourceID_t sourceID)
if (!existSource(sourceID))
{
- logError(__METHOD_NAME__,"sourceID must exist");
+ logError(__METHOD_NAME__, "sourceID must exist");
return (E_NON_EXISTENT);
}
@@ -1553,7 +1648,7 @@ am_Error_e CAmDatabaseHandlerMap::removeSourceDB(const am_sourceID_t sourceID)
mMappedData.mSourceMap.erase(sourceID);
// todo: Check the tables SourceMainSoundProperty and SourceMainNotificationConfiguration with 'visible' set to true
- //if visible is true then delete SourceMainSoundProperty and SourceMainNotificationConfiguration ????
+ // if visible is true then delete SourceMainSoundProperty and SourceMainNotificationConfiguration ????
logVerbose("DatabaseHandler::removeSourceDB removed:", sourceID);
NOTIFY_OBSERVERS2(dboRemovedSource, sourceID, visible)
@@ -1565,7 +1660,7 @@ am_Error_e CAmDatabaseHandlerMap::removeGatewayDB(const am_gatewayID_t gatewayID
if (!existGateway(gatewayID))
{
- logError(__METHOD_NAME__,"gatewayID must exist");
+ logError(__METHOD_NAME__, "gatewayID must exist");
return (E_NON_EXISTENT);
}
@@ -1581,7 +1676,7 @@ am_Error_e CAmDatabaseHandlerMap::removeConverterDB(const am_converterID_t conve
if (!existConverter(converterID))
{
- logError(__METHOD_NAME__,"converterID must exist");
+ logError(__METHOD_NAME__, "converterID must exist");
return (E_NON_EXISTENT);
}
@@ -1597,9 +1692,10 @@ am_Error_e CAmDatabaseHandlerMap::removeCrossfaderDB(const am_crossfaderID_t cro
if (!existCrossFader(crossfaderID))
{
- logError(__METHOD_NAME__,"crossfaderID must exist");
+ logError(__METHOD_NAME__, "crossfaderID must exist");
return (E_NON_EXISTENT);
}
+
mMappedData.mCrossfaderMap.erase(crossfaderID);
logVerbose("DatabaseHandler::removeCrossfaderDB removed:", crossfaderID);
@@ -1613,9 +1709,10 @@ am_Error_e CAmDatabaseHandlerMap::removeDomainDB(const am_domainID_t domainID)
if (!existDomain(domainID))
{
- logError(__METHOD_NAME__,"domainID must exist");
+ logError(__METHOD_NAME__, "domainID must exist");
return (E_NON_EXISTENT);
}
+
mMappedData.mDomainMap.erase(domainID);
logVerbose("DatabaseHandler::removeDomainDB removed:", domainID);
@@ -1629,7 +1726,7 @@ am_Error_e CAmDatabaseHandlerMap::removeSinkClassDB(const am_sinkClass_t sinkCla
if (!existSinkClass(sinkClassID))
{
- logError(__METHOD_NAME__,"sinkClassID must exist");
+ logError(__METHOD_NAME__, "sinkClassID must exist");
return (E_NON_EXISTENT);
}
@@ -1645,7 +1742,7 @@ am_Error_e CAmDatabaseHandlerMap::removeSourceClassDB(const am_sourceClass_t sou
if (!existSourceClass(sourceClassID))
{
- logError(__METHOD_NAME__,"sourceClassID must exist");
+ logError(__METHOD_NAME__, "sourceClassID must exist");
return (E_NON_EXISTENT);
}
@@ -1659,7 +1756,7 @@ am_Error_e CAmDatabaseHandlerMap::removeConnection(const am_connectionID_t conne
{
if (!existConnectionID(connectionID))
{
- logError(__METHOD_NAME__,"connectionID must exist",connectionID);
+ logError(__METHOD_NAME__, "connectionID must exist", connectionID);
return (E_NON_EXISTENT);
}
@@ -1669,87 +1766,95 @@ am_Error_e CAmDatabaseHandlerMap::removeConnection(const am_connectionID_t conne
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getSourceClassInfoDB(const am_sourceID_t sourceID, am_SourceClass_s & classInfo) const
+am_Error_e CAmDatabaseHandlerMap::getSourceClassInfoDB(const am_sourceID_t sourceID, am_SourceClass_s &classInfo) const
{
if (!existSource(sourceID))
{
- logWarning(__METHOD_NAME__,"sourceID must exist");
+ logWarning(__METHOD_NAME__, "sourceID must exist");
return (E_NON_EXISTENT);
}
+
am_Source_Database_s source = mMappedData.mSourceMap.at(sourceID);
- classInfo.sourceClassID = source.sourceClassID;
+ classInfo.sourceClassID = source.sourceClassID;
if (!existSourceClass(classInfo.sourceClassID))
{
return (E_NON_EXISTENT);
}
+
am_SourceClass_s tmpClass = mMappedData.mSourceClassesMap.at(classInfo.sourceClassID);
classInfo = tmpClass;
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getSinkInfoDB(const am_sinkID_t sinkID, am_Sink_s & sinkData) const
+am_Error_e CAmDatabaseHandlerMap::getSinkInfoDB(const am_sinkID_t sinkID, am_Sink_s &sinkData) const
{
if (!existSink(sinkID))
{
- logWarning(__METHOD_NAME__,"sinkID",sinkID,"does not exist");
+ logWarning(__METHOD_NAME__, "sinkID", sinkID, "does not exist");
return (E_NON_EXISTENT);
}
am_Sink_Database_s mappedSink = mMappedData.mSinkMap.at(sinkID);
- if( true == mappedSink.reserved )
- return (E_NON_EXISTENT);
- sinkData = mappedSink;
+ if ( true == mappedSink.reserved )
+ {
+ return (E_NON_EXISTENT);
+ }
+
+ sinkData = mappedSink;
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getSourceInfoDB(const am_sourceID_t sourceID, am_Source_s & sourceData) const
+am_Error_e CAmDatabaseHandlerMap::getSourceInfoDB(const am_sourceID_t sourceID, am_Source_s &sourceData) const
{
if (!existSource(sourceID))
{
- logWarning(__METHOD_NAME__,"sourceID",sourceID,"does not exist");
+ logWarning(__METHOD_NAME__, "sourceID", sourceID, "does not exist");
return (E_NON_EXISTENT);
}
am_Source_Database_s mappedSource = mMappedData.mSourceMap.at(sourceID);
- if( true == mappedSource.reserved )
- return (E_NON_EXISTENT);
+ if ( true == mappedSource.reserved )
+ {
+ return (E_NON_EXISTENT);
+ }
sourceData = mappedSource;
return (E_OK);
}
-am_Error_e am::CAmDatabaseHandlerMap::getMainConnectionInfoDB(const am_mainConnectionID_t mainConnectionID, am_MainConnection_s & mainConnectionData) const
+am_Error_e am::CAmDatabaseHandlerMap::getMainConnectionInfoDB(const am_mainConnectionID_t mainConnectionID, am_MainConnection_s &mainConnectionData) const
{
if (!existMainConnection(mainConnectionID))
{
- logError(__METHOD_NAME__,"mainConnectionID must exist");
+ logError(__METHOD_NAME__, "mainConnectionID must exist");
return (E_NON_EXISTENT);
}
+
am_MainConnection_s temp = mMappedData.mMainConnectionMap.at(mainConnectionID);
mainConnectionData = temp;
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::changeSinkClassInfoDB(const am_SinkClass_s& sinkClass)
+am_Error_e CAmDatabaseHandlerMap::changeSinkClassInfoDB(const am_SinkClass_s &sinkClass)
{
- if(sinkClass.listClassProperties.empty())
+ if (sinkClass.listClassProperties.empty())
{
- logError(__METHOD_NAME__,"listClassProperties must not be empty");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "listClassProperties must not be empty");
+ return (E_NOT_POSSIBLE);
}
- //check if the ID already exists
+ // check if the ID already exists
if (!existSinkClass(sinkClass.sinkClassID))
{
- logError(__METHOD_NAME__,"sinkClassID must exist");
+ logError(__METHOD_NAME__, "sinkClassID must exist");
return (E_NON_EXISTENT);
}
@@ -1759,18 +1864,18 @@ am_Error_e CAmDatabaseHandlerMap::changeSinkClassInfoDB(const am_SinkClass_s& si
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::changeSourceClassInfoDB(const am_SourceClass_s& sourceClass)
+am_Error_e CAmDatabaseHandlerMap::changeSourceClassInfoDB(const am_SourceClass_s &sourceClass)
{
- if(sourceClass.listClassProperties.empty())
+ if (sourceClass.listClassProperties.empty())
{
- logError(__METHOD_NAME__,"listClassProperties must not be empty");
- return (E_NOT_POSSIBLE);
+ logError(__METHOD_NAME__, "listClassProperties must not be empty");
+ return (E_NOT_POSSIBLE);
}
- //check if the ID already exists
+ // check if the ID already exists
if (!existSourceClass(sourceClass.sourceClassID))
{
- logError(__METHOD_NAME__,"sourceClassID must exist");
+ logError(__METHOD_NAME__, "sourceClassID must exist");
return (E_NON_EXISTENT);
}
@@ -1780,33 +1885,35 @@ am_Error_e CAmDatabaseHandlerMap::changeSourceClassInfoDB(const am_SourceClass_s
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getSinkClassInfoDB(const am_sinkID_t sinkID, am_SinkClass_s & sinkClass) const
+am_Error_e CAmDatabaseHandlerMap::getSinkClassInfoDB(const am_sinkID_t sinkID, am_SinkClass_s &sinkClass) const
{
if (!existSink(sinkID))
{
- logWarning(__METHOD_NAME__,"sinkID must exist");
+ logWarning(__METHOD_NAME__, "sinkID must exist");
return (E_NON_EXISTENT);
}
+
am_Sink_Database_s sink = mMappedData.mSinkMap.at(sinkID);
- sinkClass.sinkClassID = sink.sinkClassID;
+ sinkClass.sinkClassID = sink.sinkClassID;
if (!existSinkClass(sinkClass.sinkClassID))
{
- logWarning(__METHOD_NAME__,"sinkClassID must exist");
+ logWarning(__METHOD_NAME__, "sinkClassID must exist");
return (E_NON_EXISTENT);
}
+
am_SinkClass_s tmpSinkClass = mMappedData.mSinkClassesMap.at(sinkClass.sinkClassID);
sinkClass = tmpSinkClass;
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getGatewayInfoDB(const am_gatewayID_t gatewayID, am_Gateway_s & gatewayData) const
+am_Error_e CAmDatabaseHandlerMap::getGatewayInfoDB(const am_gatewayID_t gatewayID, am_Gateway_s &gatewayData) const
{
if (!existGateway(gatewayID))
{
- logWarning(__METHOD_NAME__,"gatewayID must exist");
+ logWarning(__METHOD_NAME__, "gatewayID must exist");
return (E_NON_EXISTENT);
}
@@ -1816,11 +1923,11 @@ am_Error_e CAmDatabaseHandlerMap::getGatewayInfoDB(const am_gatewayID_t gatewayI
}
-am_Error_e CAmDatabaseHandlerMap::getConverterInfoDB(const am_converterID_t converterID, am_Converter_s& converterData) const
+am_Error_e CAmDatabaseHandlerMap::getConverterInfoDB(const am_converterID_t converterID, am_Converter_s &converterData) const
{
if (!existConverter(converterID))
{
- logWarning(__METHOD_NAME__,"converterID must exist");
+ logWarning(__METHOD_NAME__, "converterID must exist");
return (E_NON_EXISTENT);
}
@@ -1830,11 +1937,11 @@ am_Error_e CAmDatabaseHandlerMap::getConverterInfoDB(const am_converterID_t conv
}
-am_Error_e CAmDatabaseHandlerMap::getCrossfaderInfoDB(const am_crossfaderID_t crossfaderID, am_Crossfader_s & crossfaderData) const
+am_Error_e CAmDatabaseHandlerMap::getCrossfaderInfoDB(const am_crossfaderID_t crossfaderID, am_Crossfader_s &crossfaderData) const
{
if (!existCrossFader(crossfaderID))
{
- logWarning(__METHOD_NAME__,"crossfaderID must exist");
+ logWarning(__METHOD_NAME__, "crossfaderID must exist");
return (E_NON_EXISTENT);
}
@@ -1843,411 +1950,442 @@ am_Error_e CAmDatabaseHandlerMap::getCrossfaderInfoDB(const am_crossfaderID_t cr
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListSinksOfDomain(const am_domainID_t domainID, std::vector<am_sinkID_t> & listSinkID) const
+am_Error_e CAmDatabaseHandlerMap::getListSinksOfDomain(const am_domainID_t domainID, std::vector<am_sinkID_t> &listSinkID) const
{
listSinkID.clear();
if (!existDomain(domainID))
{
- logWarning(__METHOD_NAME__,"domainID must exist");
+ logWarning(__METHOD_NAME__, "domainID must exist");
return (E_NON_EXISTENT);
}
std::unordered_map<am_sinkID_t, am_Sink_Database_s>::const_iterator elementIterator = mMappedData.mSinkMap.begin();
- for (;elementIterator != mMappedData.mSinkMap.end(); ++elementIterator)
- {
- if (0==elementIterator->second.reserved && domainID==elementIterator->second.domainID)
- listSinkID.push_back(elementIterator->second.sinkID);
- }
+ for (; elementIterator != mMappedData.mSinkMap.end(); ++elementIterator)
+ {
+ if (0 == elementIterator->second.reserved && domainID == elementIterator->second.domainID)
+ {
+ listSinkID.push_back(elementIterator->second.sinkID);
+ }
+ }
+
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListSourcesOfDomain(const am_domainID_t domainID, std::vector<am_sourceID_t> & listSourceID) const
+am_Error_e CAmDatabaseHandlerMap::getListSourcesOfDomain(const am_domainID_t domainID, std::vector<am_sourceID_t> &listSourceID) const
{
listSourceID.clear();
if (!existDomain(domainID))
{
- logWarning(__METHOD_NAME__,"domainID must exist");
+ logWarning(__METHOD_NAME__, "domainID must exist");
return (E_NON_EXISTENT);
}
- AmMapSource::const_iterator elementIterator = mMappedData.mSourceMap.begin();
- for (;elementIterator != mMappedData.mSourceMap.end(); ++elementIterator)
- {
- if (0==elementIterator->second.reserved && domainID==elementIterator->second.domainID)
- listSourceID.push_back(elementIterator->second.sourceID);
- }
+
+ AmMapSource::const_iterator elementIterator = mMappedData.mSourceMap.begin();
+ for (; elementIterator != mMappedData.mSourceMap.end(); ++elementIterator)
+ {
+ if (0 == elementIterator->second.reserved && domainID == elementIterator->second.domainID)
+ {
+ listSourceID.push_back(elementIterator->second.sourceID);
+ }
+ }
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListCrossfadersOfDomain(const am_domainID_t domainID, std::vector<am_crossfaderID_t> & listCrossfader) const
+am_Error_e CAmDatabaseHandlerMap::getListCrossfadersOfDomain(const am_domainID_t domainID, std::vector<am_crossfaderID_t> &listCrossfader) const
{
listCrossfader.clear();
if (!existDomain(domainID))
{
- logWarning(__METHOD_NAME__,"domainID must exist");
+ logWarning(__METHOD_NAME__, "domainID must exist");
return (E_NON_EXISTENT);
}
AmMapSource::const_iterator sourceIterator = mMappedData.mSourceMap.begin();
- for (;sourceIterator != mMappedData.mSourceMap.end(); ++sourceIterator)
- {
- if (domainID==sourceIterator->second.domainID)
- {
- AmMapCrossfader::const_iterator elementIterator = mMappedData.mCrossfaderMap.begin();
- for (;elementIterator != mMappedData.mCrossfaderMap.end(); ++elementIterator)
- {
- if ( sourceIterator->second.sourceID==elementIterator->second.sourceID )
- listCrossfader.push_back(elementIterator->second.crossfaderID);
- }
- }
- }
+ for (; sourceIterator != mMappedData.mSourceMap.end(); ++sourceIterator)
+ {
+ if (domainID == sourceIterator->second.domainID)
+ {
+ AmMapCrossfader::const_iterator elementIterator = mMappedData.mCrossfaderMap.begin();
+ for (; elementIterator != mMappedData.mCrossfaderMap.end(); ++elementIterator)
+ {
+ if ( sourceIterator->second.sourceID == elementIterator->second.sourceID )
+ {
+ listCrossfader.push_back(elementIterator->second.crossfaderID);
+ }
+ }
+ }
+ }
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListGatewaysOfDomain(const am_domainID_t domainID, std::vector<am_gatewayID_t> & listGatewaysID) const
+am_Error_e CAmDatabaseHandlerMap::getListGatewaysOfDomain(const am_domainID_t domainID, std::vector<am_gatewayID_t> &listGatewaysID) const
{
listGatewaysID.clear();
if (!existDomain(domainID))
{
- logWarning(__METHOD_NAME__,"domainID must exist");
+ logWarning(__METHOD_NAME__, "domainID must exist");
return (E_NON_EXISTENT);
}
AmMapGateway::const_iterator elementIterator = mMappedData.mGatewayMap.begin();
- for (;elementIterator != mMappedData.mGatewayMap.end(); ++elementIterator)
- {
- if (domainID==elementIterator->second.controlDomainID)
- listGatewaysID.push_back(elementIterator->second.gatewayID);
- }
+ for (; elementIterator != mMappedData.mGatewayMap.end(); ++elementIterator)
+ {
+ if (domainID == elementIterator->second.controlDomainID)
+ {
+ listGatewaysID.push_back(elementIterator->second.gatewayID);
+ }
+ }
+
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListConvertersOfDomain(const am_domainID_t domainID, std::vector<am_converterID_t>& listConvertersID) const
+am_Error_e CAmDatabaseHandlerMap::getListConvertersOfDomain(const am_domainID_t domainID, std::vector<am_converterID_t> &listConvertersID) const
{
listConvertersID.clear();
if (!existDomain(domainID))
{
- logWarning(__METHOD_NAME__,"domainID must exist");
+ logWarning(__METHOD_NAME__, "domainID must exist");
return (E_NON_EXISTENT);
}
AmMapConverter::const_iterator elementIterator = mMappedData.mConverterMap.begin();
- for (;elementIterator != mMappedData.mConverterMap.end(); ++elementIterator)
- {
- if (domainID==elementIterator->second.domainID)
- listConvertersID.push_back(elementIterator->second.converterID);
- }
+ for (; elementIterator != mMappedData.mConverterMap.end(); ++elementIterator)
+ {
+ if (domainID == elementIterator->second.domainID)
+ {
+ listConvertersID.push_back(elementIterator->second.converterID);
+ }
+ }
+
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListMainConnections(std::vector<am_MainConnection_s> & listMainConnections) const
+am_Error_e CAmDatabaseHandlerMap::getListMainConnections(std::vector<am_MainConnection_s> &listMainConnections) const
{
listMainConnections.clear();
AmMapMainConnection::const_iterator elementIterator = mMappedData.mMainConnectionMap.begin();
- for (;elementIterator != mMappedData.mMainConnectionMap.end(); ++elementIterator)
+ for (; elementIterator != mMappedData.mMainConnectionMap.end(); ++elementIterator)
{
- listMainConnections.push_back(elementIterator->second);
+ listMainConnections.push_back(elementIterator->second);
}
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListDomains(std::vector<am_Domain_s> & listDomains) const
+am_Error_e CAmDatabaseHandlerMap::getListDomains(std::vector<am_Domain_s> &listDomains) const
{
listDomains.clear();
AmMapDomain::const_iterator elementIterator = mMappedData.mDomainMap.begin();
- for (;elementIterator != mMappedData.mDomainMap.end(); ++elementIterator)
- {
- if( 0==elementIterator->second.reserved )
- listDomains.push_back(elementIterator->second);
- }
+ for (; elementIterator != mMappedData.mDomainMap.end(); ++elementIterator)
+ {
+ if ( 0 == elementIterator->second.reserved )
+ {
+ listDomains.push_back(elementIterator->second);
+ }
+ }
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListConnections(std::vector<am_Connection_s> & listConnections) const
+am_Error_e CAmDatabaseHandlerMap::getListConnections(std::vector<am_Connection_s> &listConnections) const
{
listConnections.clear();
AmMapConnection::const_iterator elementIterator = mMappedData.mConnectionMap.begin();
- for (;elementIterator != mMappedData.mConnectionMap.end(); ++elementIterator)
- {
- if( 0==elementIterator->second.reserved )
- listConnections.push_back(elementIterator->second);
- }
+ for (; elementIterator != mMappedData.mConnectionMap.end(); ++elementIterator)
+ {
+ if ( 0 == elementIterator->second.reserved )
+ {
+ listConnections.push_back(elementIterator->second);
+ }
+ }
- return (E_OK);
+ return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListConnectionsReserved(std::vector<am_Connection_s> & listConnections) const
+am_Error_e CAmDatabaseHandlerMap::getListConnectionsReserved(std::vector<am_Connection_s> &listConnections) const
{
listConnections.clear();
AmMapConnection::const_iterator elementIterator = mMappedData.mConnectionMap.begin();
- for (;elementIterator != mMappedData.mConnectionMap.end(); ++elementIterator)
- {
- if( elementIterator->second.reserved )
- listConnections.push_back(elementIterator->second);
- }
+ for (; elementIterator != mMappedData.mConnectionMap.end(); ++elementIterator)
+ {
+ if ( elementIterator->second.reserved )
+ {
+ listConnections.push_back(elementIterator->second);
+ }
+ }
- return (E_OK);
+ return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListSinks(std::vector<am_Sink_s> & listSinks) const
+am_Error_e CAmDatabaseHandlerMap::getListSinks(std::vector<am_Sink_s> &listSinks) const
{
listSinks.clear();
- std::for_each(mMappedData.mSinkMap.begin(), mMappedData.mSinkMap.end(), [&](const std::pair<am_sinkID_t, am_Sink_Database_s>& ref) {
- if( 0==ref.second.reserved )
- listSinks.push_back(ref.second);
- });
+ std::for_each(mMappedData.mSinkMap.begin(), mMappedData.mSinkMap.end(), [&](const std::pair<am_sinkID_t, am_Sink_Database_s> &ref) {
+ if ( 0 == ref.second.reserved )
+ {
+ listSinks.push_back(ref.second);
+ }
+ });
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListSources(std::vector<am_Source_s> & listSources) const
+am_Error_e CAmDatabaseHandlerMap::getListSources(std::vector<am_Source_s> &listSources) const
{
listSources.clear();
- std::for_each(mMappedData.mSourceMap.begin(), mMappedData.mSourceMap.end(), [&](const std::pair<am_sourceID_t, am_Source_Database_s>& ref) {
- if( 0==ref.second.reserved )
- {
- listSources.push_back(ref.second);
- }
- });
+ std::for_each(mMappedData.mSourceMap.begin(), mMappedData.mSourceMap.end(), [&](const std::pair<am_sourceID_t, am_Source_Database_s> &ref) {
+ if ( 0 == ref.second.reserved )
+ {
+ listSources.push_back(ref.second);
+ }
+ });
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListSourceClasses(std::vector<am_SourceClass_s> & listSourceClasses) const
+am_Error_e CAmDatabaseHandlerMap::getListSourceClasses(std::vector<am_SourceClass_s> &listSourceClasses) const
{
listSourceClasses.clear();
- std::for_each(mMappedData.mSourceClassesMap.begin(), mMappedData.mSourceClassesMap.end(), [&](const std::pair<am_sourceClass_t, am_SourceClass_s>& ref) {
- listSourceClasses.push_back(ref.second);
- });
+ std::for_each(mMappedData.mSourceClassesMap.begin(), mMappedData.mSourceClassesMap.end(), [&](const std::pair<am_sourceClass_t, am_SourceClass_s> &ref) {
+ listSourceClasses.push_back(ref.second);
+ });
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListCrossfaders(std::vector<am_Crossfader_s> & listCrossfaders) const
+am_Error_e CAmDatabaseHandlerMap::getListCrossfaders(std::vector<am_Crossfader_s> &listCrossfaders) const
{
listCrossfaders.clear();
- std::for_each(mMappedData.mCrossfaderMap.begin(), mMappedData.mCrossfaderMap.end(), [&](const std::pair<am_crossfaderID_t, am_Crossfader_s>& ref) {
- listCrossfaders.push_back(ref.second);
- });
+ std::for_each(mMappedData.mCrossfaderMap.begin(), mMappedData.mCrossfaderMap.end(), [&](const std::pair<am_crossfaderID_t, am_Crossfader_s> &ref) {
+ listCrossfaders.push_back(ref.second);
+ });
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListGateways(std::vector<am_Gateway_s> & listGateways) const
+am_Error_e CAmDatabaseHandlerMap::getListGateways(std::vector<am_Gateway_s> &listGateways) const
{
listGateways.clear();
- std::for_each(mMappedData.mGatewayMap.begin(), mMappedData.mGatewayMap.end(), [&](const std::pair<am_gatewayID_t, am_Gateway_s>& ref) {
- listGateways.push_back(ref.second);
- });
+ std::for_each(mMappedData.mGatewayMap.begin(), mMappedData.mGatewayMap.end(), [&](const std::pair<am_gatewayID_t, am_Gateway_s> &ref) {
+ listGateways.push_back(ref.second);
+ });
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListConverters(std::vector<am_Converter_s> & listConverters) const
+am_Error_e CAmDatabaseHandlerMap::getListConverters(std::vector<am_Converter_s> &listConverters) const
{
- listConverters.clear();
+ listConverters.clear();
- std::for_each(mMappedData.mConverterMap.begin(), mMappedData.mConverterMap.end(), [&](const std::pair<am_converterID_t, am_Converter_s>& ref) {
- listConverters.push_back(ref.second);
- });
+ std::for_each(mMappedData.mConverterMap.begin(), mMappedData.mConverterMap.end(), [&](const std::pair<am_converterID_t, am_Converter_s> &ref) {
+ listConverters.push_back(ref.second);
+ });
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListSinkClasses(std::vector<am_SinkClass_s> & listSinkClasses) const
+am_Error_e CAmDatabaseHandlerMap::getListSinkClasses(std::vector<am_SinkClass_s> &listSinkClasses) const
{
listSinkClasses.clear();
- std::for_each(mMappedData.mSinkClassesMap.begin(), mMappedData.mSinkClassesMap.end(), [&](const std::pair<am_gatewayID_t, am_SinkClass_s>& ref) {
- listSinkClasses.push_back(ref.second);
- });
+ std::for_each(mMappedData.mSinkClassesMap.begin(), mMappedData.mSinkClassesMap.end(), [&](const std::pair<am_gatewayID_t, am_SinkClass_s> &ref) {
+ listSinkClasses.push_back(ref.second);
+ });
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListVisibleMainConnections(std::vector<am_MainConnectionType_s> & listConnections) const
+am_Error_e CAmDatabaseHandlerMap::getListVisibleMainConnections(std::vector<am_MainConnectionType_s> &listConnections) const
{
listConnections.clear();
- std::for_each(mMappedData.mMainConnectionMap.begin(), mMappedData.mMainConnectionMap.end(), [&](const std::pair<am_mainConnectionID_t, am_MainConnection_Database_s>& ref) {
- listConnections.emplace_back();
- ref.second.getMainConnectionType(listConnections.back());
- });
+ std::for_each(mMappedData.mMainConnectionMap.begin(), mMappedData.mMainConnectionMap.end(), [&](const std::pair<am_mainConnectionID_t, am_MainConnection_Database_s> &ref) {
+ listConnections.emplace_back();
+ ref.second.getMainConnectionType(listConnections.back());
+ });
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListMainSinks(std::vector<am_SinkType_s> & listMainSinks) const
+am_Error_e CAmDatabaseHandlerMap::getListMainSinks(std::vector<am_SinkType_s> &listMainSinks) const
{
listMainSinks.clear();
- std::for_each(mMappedData.mSinkMap.begin(), mMappedData.mSinkMap.end(), [&](const std::pair<am_sinkID_t, am_Sink_Database_s>& ref) {
- if( 0==ref.second.reserved && 1==ref.second.visible )
- {
- listMainSinks.emplace_back();
- ref.second.getSinkType(listMainSinks.back());
- }
- });
+ std::for_each(mMappedData.mSinkMap.begin(), mMappedData.mSinkMap.end(), [&](const std::pair<am_sinkID_t, am_Sink_Database_s> &ref) {
+ if ( 0 == ref.second.reserved && 1 == ref.second.visible )
+ {
+ listMainSinks.emplace_back();
+ ref.second.getSinkType(listMainSinks.back());
+ }
+ });
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListMainSources(std::vector<am_SourceType_s> & listMainSources) const
+am_Error_e CAmDatabaseHandlerMap::getListMainSources(std::vector<am_SourceType_s> &listMainSources) const
{
listMainSources.clear();
- std::for_each(mMappedData.mSourceMap.begin(), mMappedData.mSourceMap.end(), [&](const std::pair<am_sourceID_t, am_Source_Database_s>& ref) {
- if( 0==ref.second.reserved && 1==ref.second.visible )
- {
- listMainSources.emplace_back();
- ref.second.getSourceType(listMainSources.back());
- }
- });
+ std::for_each(mMappedData.mSourceMap.begin(), mMappedData.mSourceMap.end(), [&](const std::pair<am_sourceID_t, am_Source_Database_s> &ref) {
+ if ( 0 == ref.second.reserved && 1 == ref.second.visible )
+ {
+ listMainSources.emplace_back();
+ ref.second.getSourceType(listMainSources.back());
+ }
+ });
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s> & listSoundProperties) const
+am_Error_e CAmDatabaseHandlerMap::getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s> &listSoundProperties) const
{
if (!existSink(sinkID))
{
- logWarning(__METHOD_NAME__,"sinkID must exist");
- return E_NON_EXISTENT;
+ logWarning(__METHOD_NAME__, "sinkID must exist");
+ return E_NON_EXISTENT;
}
- const am_Sink_s & sink = mMappedData.mSinkMap.at(sinkID);
+ const am_Sink_s &sink = mMappedData.mSinkMap.at(sinkID);
listSoundProperties = sink.listMainSoundProperties;
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s> & listSourceProperties) const
+am_Error_e CAmDatabaseHandlerMap::getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s> &listSourceProperties) const
{
if (!existSource(sourceID))
{
- logWarning(__METHOD_NAME__,"sourceID must exist");
- return E_NON_EXISTENT;
+ logWarning(__METHOD_NAME__, "sourceID must exist");
+ return E_NON_EXISTENT;
}
- const am_Source_s & source = mMappedData.mSourceMap.at(sourceID);
+
+ const am_Source_s &source = mMappedData.mSourceMap.at(sourceID);
listSourceProperties = source.listMainSoundProperties;
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_SoundProperty_s>& listSoundproperties) const
+am_Error_e CAmDatabaseHandlerMap::getListSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_SoundProperty_s> &listSoundproperties) const
{
if (!existSink(sinkID))
{
- logWarning(__METHOD_NAME__,"sinkID must exist");
- return E_NON_EXISTENT;
+ logWarning(__METHOD_NAME__, "sinkID must exist");
+ return E_NON_EXISTENT;
}
- const am_Sink_Database_s & sink = mMappedData.mSinkMap.at(sinkID);
+ const am_Sink_Database_s &sink = mMappedData.mSinkMap.at(sinkID);
listSoundproperties = sink.listSoundProperties;
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_SoundProperty_s>& listSoundproperties) const
+am_Error_e CAmDatabaseHandlerMap::getListSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_SoundProperty_s> &listSoundproperties) const
{
- if (!existSource(sourceID))
+ if (!existSource(sourceID))
{
- logWarning(__METHOD_NAME__,"sourceID must exist");
- return E_NON_EXISTENT;
+ logWarning(__METHOD_NAME__, "sourceID must exist");
+ return E_NON_EXISTENT;
}
- const am_Source_Database_s & source = mMappedData.mSourceMap.at(sourceID);
- listSoundproperties = source.listSoundProperties;
+ const am_Source_Database_s &source = mMappedData.mSourceMap.at(sourceID);
+ listSoundproperties = source.listSoundProperties;
- return (E_OK);
+ return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListSystemProperties(std::vector<am_SystemProperty_s> & listSystemProperties) const
+am_Error_e CAmDatabaseHandlerMap::getListSystemProperties(std::vector<am_SystemProperty_s> &listSystemProperties) const
{
- listSystemProperties = mMappedData.mSystemProperties;
+ listSystemProperties = mMappedData.mSystemProperties;
return (E_OK);
}
-am_Error_e am::CAmDatabaseHandlerMap::getListSinkConnectionFormats(const am_sinkID_t sinkID, std::vector<am_CustomConnectionFormat_t> & listConnectionFormats) const
+am_Error_e am::CAmDatabaseHandlerMap::getListSinkConnectionFormats(const am_sinkID_t sinkID, std::vector<am_CustomConnectionFormat_t> &listConnectionFormats) const
{
- if (!existSink(sinkID))
- {
- logWarning(__METHOD_NAME__,"sinkID must exist");
- return E_NON_EXISTENT;
- }
- const am_Sink_s & sink = mMappedData.mSinkMap.at(sinkID);
- listConnectionFormats = sink.listConnectionFormats;
+ if (!existSink(sinkID))
+ {
+ logWarning(__METHOD_NAME__, "sinkID must exist");
+ return E_NON_EXISTENT;
+ }
+
+ const am_Sink_s &sink = mMappedData.mSinkMap.at(sinkID);
+ listConnectionFormats = sink.listConnectionFormats;
return (E_OK);
}
-am_Error_e am::CAmDatabaseHandlerMap::getListSourceConnectionFormats(const am_sourceID_t sourceID, std::vector<am_CustomConnectionFormat_t> & listConnectionFormats) const
+am_Error_e am::CAmDatabaseHandlerMap::getListSourceConnectionFormats(const am_sourceID_t sourceID, std::vector<am_CustomConnectionFormat_t> &listConnectionFormats) const
{
- if (!existSource(sourceID))
- {
- logWarning(__METHOD_NAME__,"sourceID must exist");
- return E_NON_EXISTENT;
- }
- const am_Source_s & source = mMappedData.mSourceMap.at(sourceID);
+ if (!existSource(sourceID))
+ {
+ logWarning(__METHOD_NAME__, "sourceID must exist");
+ return E_NON_EXISTENT;
+ }
+
+ const am_Source_s &source = mMappedData.mSourceMap.at(sourceID);
listConnectionFormats = source.listConnectionFormats;
return (E_OK);
}
-am_Error_e am::CAmDatabaseHandlerMap::getListGatewayConnectionFormats(const am_gatewayID_t gatewayID, std::vector<bool> & listConnectionFormat) const
+am_Error_e am::CAmDatabaseHandlerMap::getListGatewayConnectionFormats(const am_gatewayID_t gatewayID, std::vector<bool> &listConnectionFormat) const
{
- if (!existGateway(gatewayID))
- {
- logWarning(__METHOD_NAME__,"gatewayID must exist");
- return E_NON_EXISTENT;
- }
+ if (!existGateway(gatewayID))
+ {
+ logWarning(__METHOD_NAME__, "gatewayID must exist");
+ return E_NON_EXISTENT;
+ }
+
ListConnectionFormat::const_iterator iter = mListConnectionFormat.begin();
iter = mListConnectionFormat.find(gatewayID);
if (iter == mListConnectionFormat.end())
{
- logWarning("DatabaseHandler::getListGatewayConnectionFormats database error with convertionFormat");
+ logWarning("DatabaseHandler::getListGatewayConnectionFormats database error with convertionFormat");
return E_NON_EXISTENT;
}
+
listConnectionFormat = iter->second;
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getTimingInformation(const am_mainConnectionID_t mainConnectionID, am_timeSync_t & delay) const
+am_Error_e CAmDatabaseHandlerMap::getTimingInformation(const am_mainConnectionID_t mainConnectionID, am_timeSync_t &delay) const
{
if (!existMainConnection(mainConnectionID))
{
- logWarning(__METHOD_NAME__,"mainConnectionID must exist");
- return E_NON_EXISTENT;
+ logWarning(__METHOD_NAME__, "mainConnectionID must exist");
+ return E_NON_EXISTENT;
}
+
delay = -1;
- const am_MainConnection_s & mainConnection = mMappedData.mMainConnectionMap.at(mainConnectionID);
+ const am_MainConnection_s &mainConnection = mMappedData.mMainConnectionMap.at(mainConnectionID);
delay = mainConnection.delay;
if (delay == -1)
+ {
return (E_NOT_POSSIBLE);
+ }
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::changeDelayMainConnection(const am_timeSync_t & delay, const am_mainConnectionID_t & connectionID)
+am_Error_e CAmDatabaseHandlerMap::changeDelayMainConnection(const am_timeSync_t &delay, const am_mainConnectionID_t &connectionID)
{
if (!existMainConnection(connectionID))
{
- logError(__METHOD_NAME__,"connectionID must exist");
- return E_NON_EXISTENT;
+ logError(__METHOD_NAME__, "connectionID must exist");
+ return E_NON_EXISTENT;
}
+
DB_COND_UPDATE_RIE(mMappedData.mMainConnectionMap[connectionID].delay, delay);
NOTIFY_OBSERVERS2(dboTimingInformationChanged, connectionID, delay)
return (E_OK);
@@ -2260,7 +2398,7 @@ am_Error_e CAmDatabaseHandlerMap::changeDelayMainConnection(const am_timeSync_t
*/
bool CAmDatabaseHandlerMap::existMainConnection(const am_mainConnectionID_t mainConnectionID) const
{
- return existsObjectWithKeyInMap(mainConnectionID, mMappedData.mMainConnectionMap);
+ return existsObjectWithKeyInMap(mainConnectionID, mMappedData.mMainConnectionMap);
}
/**
@@ -2270,11 +2408,13 @@ bool CAmDatabaseHandlerMap::existMainConnection(const am_mainConnectionID_t main
*/
bool CAmDatabaseHandlerMap::existSource(const am_sourceID_t sourceID) const
{
- am_Source_Database_s const * source = objectForKeyIfExistsInMap(sourceID, mMappedData.mSourceMap);
- if( NULL!=source )
- return (0==source->reserved);
+ am_Source_Database_s const *source = objectForKeyIfExistsInMap(sourceID, mMappedData.mSourceMap);
+ if ( NULL != source )
+ {
+ return (0 == source->reserved);
+ }
- return false;
+ return false;
}
/**
@@ -2283,7 +2423,7 @@ bool CAmDatabaseHandlerMap::existSource(const am_sourceID_t sourceID) const
* @param name the name
* @return true if it exits
*/
-bool CAmDatabaseHandlerMap::existSourceNameOrID(const am_sourceID_t sourceID, const std::string & name) const
+bool CAmDatabaseHandlerMap::existSourceNameOrID(const am_sourceID_t sourceID, const std::string &name) const
{
return sourceWithNameOrID(sourceID, name);
}
@@ -2293,7 +2433,7 @@ bool CAmDatabaseHandlerMap::existSourceNameOrID(const am_sourceID_t sourceID, co
* @param name the name
* @return true if it exits
*/
-bool CAmDatabaseHandlerMap::existSourceName(const std::string & name) const
+bool CAmDatabaseHandlerMap::existSourceName(const std::string &name) const
{
return existSourceNameOrID(mMappedData.mCurrentSourceID.mMax, name);
}
@@ -2305,17 +2445,18 @@ bool CAmDatabaseHandlerMap::existSourceName(const std::string & name) const
*/
bool CAmDatabaseHandlerMap::existSink(const am_sinkID_t sinkID) const
{
- bool returnVal = false;
- AmMapSink::const_iterator elementIterator = mMappedData.mSinkMap.begin();
- for (;elementIterator != mMappedData.mSinkMap.end(); ++elementIterator)
- {
- if( 0==elementIterator->second.reserved &&
- sinkID==elementIterator->second.sinkID)
- {
- returnVal = true;
- break;
- }
- }
+ bool returnVal = false;
+ AmMapSink::const_iterator elementIterator = mMappedData.mSinkMap.begin();
+ for (; elementIterator != mMappedData.mSinkMap.end(); ++elementIterator)
+ {
+ if ( 0 == elementIterator->second.reserved &&
+ sinkID == elementIterator->second.sinkID)
+ {
+ returnVal = true;
+ break;
+ }
+ }
+
return (returnVal);
}
@@ -2325,13 +2466,13 @@ bool CAmDatabaseHandlerMap::existSink(const am_sinkID_t sinkID) const
* @param name the name
* @return source structure if exists.
*/
-const CAmDatabaseHandlerMap::am_Source_Database_s * CAmDatabaseHandlerMap::sourceWithNameOrID(const am_sourceID_t sourceID, const std::string & name) const
+const CAmDatabaseHandlerMap::am_Source_Database_s *CAmDatabaseHandlerMap::sourceWithNameOrID(const am_sourceID_t sourceID, const std::string &name) const
{
- std::function<bool(const CAmDatabaseHandlerMap::am_Source_Database_s & refObject)> comparator = [&](const CAmDatabaseHandlerMap::am_Source_Database_s & source)->bool{
- return ( 0==source.reserved &&
- (sourceID==source.sourceID || name.compare(source.name)==0));
- };
- return objectMatchingPredicate(mMappedData.mSourceMap, comparator);
+ std::function<bool(const CAmDatabaseHandlerMap::am_Source_Database_s &refObject)> comparator = [&](const CAmDatabaseHandlerMap::am_Source_Database_s &source) -> bool {
+ return (0 == source.reserved &&
+ (sourceID == source.sourceID || name.compare(source.name) == 0));
+ };
+ return objectMatchingPredicate(mMappedData.mSourceMap, comparator);
}
/**
@@ -2340,13 +2481,13 @@ const CAmDatabaseHandlerMap::am_Source_Database_s * CAmDatabaseHandlerMap::sour
* @param name the name
* @return sink structure if exists.
*/
-const CAmDatabaseHandlerMap::am_Sink_Database_s * CAmDatabaseHandlerMap::sinkWithNameOrID(const am_sinkID_t sinkID, const std::string & name) const
+const CAmDatabaseHandlerMap::am_Sink_Database_s *CAmDatabaseHandlerMap::sinkWithNameOrID(const am_sinkID_t sinkID, const std::string &name) const
{
- std::function<bool(const CAmDatabaseHandlerMap::am_Sink_Database_s & refObject)> comparator = [&](const CAmDatabaseHandlerMap::am_Sink_Database_s & sink)->bool{
- return ( 0==sink.reserved &&
- (sinkID==sink.sinkID || name.compare(sink.name)==0));
- };
- return objectMatchingPredicate(mMappedData.mSinkMap, comparator);
+ std::function<bool(const CAmDatabaseHandlerMap::am_Sink_Database_s &refObject)> comparator = [&](const CAmDatabaseHandlerMap::am_Sink_Database_s &sink) -> bool {
+ return (0 == sink.reserved &&
+ (sinkID == sink.sinkID || name.compare(sink.name) == 0));
+ };
+ return objectMatchingPredicate(mMappedData.mSinkMap, comparator);
}
/**
@@ -2355,9 +2496,9 @@ const CAmDatabaseHandlerMap::am_Sink_Database_s * CAmDatabaseHandlerMap::sinkWit
* @param name the name
* @return true if it exists.
*/
-bool CAmDatabaseHandlerMap::existSinkNameOrID(const am_sinkID_t sinkID, const std::string & name) const
+bool CAmDatabaseHandlerMap::existSinkNameOrID(const am_sinkID_t sinkID, const std::string &name) const
{
- return sinkWithNameOrID( sinkID, name)!=NULL;
+ return sinkWithNameOrID(sinkID, name) != NULL;
}
/**
@@ -2365,7 +2506,7 @@ bool CAmDatabaseHandlerMap::existSinkNameOrID(const am_sinkID_t sinkID, const st
* @param name the name
* @return true if it exists
*/
-bool CAmDatabaseHandlerMap::existSinkName(const std::string & name) const
+bool CAmDatabaseHandlerMap::existSinkName(const std::string &name) const
{
return existSinkNameOrID(mMappedData.mCurrentSinkID.mMax, name);
}
@@ -2377,11 +2518,13 @@ bool CAmDatabaseHandlerMap::existSinkName(const std::string & name) const
*/
bool CAmDatabaseHandlerMap::existDomain(const am_domainID_t domainID) const
{
- am_Domain_Database_s const * source = objectForKeyIfExistsInMap(domainID, mMappedData.mDomainMap);
- if( NULL!=source )
- return (0==source->reserved);
+ am_Domain_Database_s const *source = objectForKeyIfExistsInMap(domainID, mMappedData.mDomainMap);
+ if ( NULL != source )
+ {
+ return (0 == source->reserved);
+ }
- return false;
+ return false;
}
/**
@@ -2391,51 +2534,54 @@ bool CAmDatabaseHandlerMap::existDomain(const am_domainID_t domainID) const
*/
bool CAmDatabaseHandlerMap::existGateway(const am_gatewayID_t gatewayID) const
{
- return existsObjectWithKeyInMap(gatewayID, mMappedData.mGatewayMap);
+ return existsObjectWithKeyInMap(gatewayID, mMappedData.mGatewayMap);
}
bool CAmDatabaseHandlerMap::existConverter(const am_converterID_t converterID) const
{
- return existsObjectWithKeyInMap(converterID, mMappedData.mConverterMap);
+ return existsObjectWithKeyInMap(converterID, mMappedData.mConverterMap);
}
-am_Error_e CAmDatabaseHandlerMap::getDomainOfSource(const am_sourceID_t sourceID, am_domainID_t & domainID) const
+am_Error_e CAmDatabaseHandlerMap::getDomainOfSource(const am_sourceID_t sourceID, am_domainID_t &domainID) const
{
- domainID=0;
+ domainID = 0;
- am_Source_Database_s const * source = objectForKeyIfExistsInMap(sourceID, mMappedData.mSourceMap);
- if( NULL!=source )
+ am_Source_Database_s const *source = objectForKeyIfExistsInMap(sourceID, mMappedData.mSourceMap);
+ if ( NULL != source )
{
- domainID = source->domainID;
- return E_OK;
+ domainID = source->domainID;
+ return E_OK;
}
+
return E_NON_EXISTENT;
}
-am_Error_e am::CAmDatabaseHandlerMap::getDomainOfSink(const am_sinkID_t sinkID, am_domainID_t & domainID) const
+am_Error_e am::CAmDatabaseHandlerMap::getDomainOfSink(const am_sinkID_t sinkID, am_domainID_t &domainID) const
{
- domainID=0;
+ domainID = 0;
- am_Sink_Database_s const * source = objectForKeyIfExistsInMap(sinkID, mMappedData.mSinkMap);
- if( NULL!=source )
- {
- domainID = source->domainID;
- return E_OK;
- }
- return E_NON_EXISTENT;
+ am_Sink_Database_s const *source = objectForKeyIfExistsInMap(sinkID, mMappedData.mSinkMap);
+ if ( NULL != source )
+ {
+ domainID = source->domainID;
+ return E_OK;
+ }
+
+ return E_NON_EXISTENT;
}
-am_Error_e am::CAmDatabaseHandlerMap::getDomainOfCrossfader(const am_converterID_t crossfader, am_domainID_t & domainID) const
+am_Error_e am::CAmDatabaseHandlerMap::getDomainOfCrossfader(const am_converterID_t crossfader, am_domainID_t &domainID) const
{
- domainID=0;
+ domainID = 0;
- am_Crossfader_Database_s const * cross = objectForKeyIfExistsInMap(crossfader, mMappedData.mCrossfaderMap);
- if( NULL!=cross )
- {
- getDomainOfSource(cross->sinkID_A,domainID);
- return E_OK;
- }
- return E_NON_EXISTENT;
+ am_Crossfader_Database_s const *cross = objectForKeyIfExistsInMap(crossfader, mMappedData.mCrossfaderMap);
+ if ( NULL != cross )
+ {
+ getDomainOfSource(cross->sinkID_A, domainID);
+ return E_OK;
+ }
+
+ return E_NON_EXISTENT;
}
/**
@@ -2445,7 +2591,7 @@ am_Error_e am::CAmDatabaseHandlerMap::getDomainOfCrossfader(const am_converterID
*/
bool CAmDatabaseHandlerMap::existSinkClass(const am_sinkClass_t sinkClassID) const
{
- return existsObjectWithKeyInMap(sinkClassID, mMappedData.mSinkClassesMap);
+ return existsObjectWithKeyInMap(sinkClassID, mMappedData.mSinkClassesMap);
}
/**
@@ -2455,27 +2601,27 @@ bool CAmDatabaseHandlerMap::existSinkClass(const am_sinkClass_t sinkClassID) con
*/
bool CAmDatabaseHandlerMap::existSourceClass(const am_sourceClass_t sourceClassID) const
{
- return existsObjectWithKeyInMap(sourceClassID, mMappedData.mSourceClassesMap);
+ return existsObjectWithKeyInMap(sourceClassID, mMappedData.mSourceClassesMap);
}
am_Error_e CAmDatabaseHandlerMap::changeConnectionTimingInformation(const am_connectionID_t connectionID, const am_timeSync_t delay)
{
- if(!existConnectionID(connectionID))
- {
- logError(__METHOD_NAME__,"connectionID must exist");
- return (E_NON_EXISTENT);
- }
+ if (!existConnectionID(connectionID))
+ {
+ logError(__METHOD_NAME__, "connectionID must exist");
+ return (E_NON_EXISTENT);
+ }
mMappedData.mConnectionMap[connectionID].delay = delay;
- //now we need to find all mainConnections that use the changed connection and update their timing
+ // now we need to find all mainConnections that use the changed connection and update their timing
- //first get all route tables for all mainconnections
- am_Error_e error = E_OK;
- AmMapMainConnection::const_iterator iter = mMappedData.mMainConnectionMap.begin();
- for(; iter != mMappedData.mMainConnectionMap.end(); ++iter)
+ // first get all route tables for all mainconnections
+ am_Error_e error = E_OK;
+ AmMapMainConnection::const_iterator iter = mMappedData.mMainConnectionMap.begin();
+ for (; iter != mMappedData.mMainConnectionMap.end(); ++iter)
{
- const am_MainConnection_s & mainConnection = iter->second;
+ const am_MainConnection_s &mainConnection = iter->second;
if (std::find(mainConnection.listConnectionID.begin(), mainConnection.listConnectionID.end(), connectionID) != mainConnection.listConnectionID.end())
{
// Got it.
@@ -2488,31 +2634,36 @@ am_Error_e CAmDatabaseHandlerMap::changeConnectionTimingInformation(const am_con
am_Error_e CAmDatabaseHandlerMap::changeConnectionFinal(const am_connectionID_t connectionID)
{
- am_Connection_Database_s const * connection = objectForKeyIfExistsInMap(connectionID, mMappedData.mConnectionMap);
- if( NULL!=connection )
+ am_Connection_Database_s const *connection = objectForKeyIfExistsInMap(connectionID, mMappedData.mConnectionMap);
+ if ( NULL != connection )
{
- mMappedData.mConnectionMap.at(connectionID).reserved = false;
- return E_OK;
+ mMappedData.mConnectionMap.at(connectionID).reserved = false;
+ return E_OK;
}
- logError(__METHOD_NAME__,"connectionID must exist");
+
+ logError(__METHOD_NAME__, "connectionID must exist");
return (E_NON_EXISTENT);
}
am_timeSync_t CAmDatabaseHandlerMap::calculateMainConnectionDelay(const am_mainConnectionID_t mainConnectionID) const
{
if (!existMainConnection(mainConnectionID))
- return -1;
- const am_MainConnection_s & mainConnection = mMappedData.mMainConnectionMap.at(mainConnectionID);
- am_timeSync_t delay = 0;
- std::vector<am_connectionID_t>::const_iterator iter = mainConnection.listConnectionID.begin();
- for(;iter<mainConnection.listConnectionID.end(); ++iter)
- {
- am_Connection_Database_s const * source = objectForKeyIfExistsInMap(*iter, mMappedData.mConnectionMap);
- if( NULL!=source )
- {
- delay += std::max(source->delay, static_cast<am_timeSync_t>(0));
- }
- }
+ {
+ return -1;
+ }
+
+ const am_MainConnection_s &mainConnection = mMappedData.mMainConnectionMap.at(mainConnectionID);
+ am_timeSync_t delay = 0;
+ std::vector<am_connectionID_t>::const_iterator iter = mainConnection.listConnectionID.begin();
+ for (; iter < mainConnection.listConnectionID.end(); ++iter)
+ {
+ am_Connection_Database_s const *source = objectForKeyIfExistsInMap(*iter, mMappedData.mConnectionMap);
+ if ( NULL != source )
+ {
+ delay += std::max(source->delay, static_cast<am_timeSync_t>(0));
+ }
+ }
+
return (delay == 0 ? -1 : std::min(delay, static_cast<am_timeSync_t>(SHRT_MAX)));
}
@@ -2530,9 +2681,10 @@ bool CAmDatabaseHandlerMap::sourceVisible(const am_sourceID_t sourceID) const
{
if (!existSource(sourceID))
{
- logError(__METHOD_NAME__,"sourceID must exist");
- return false;
+ logError(__METHOD_NAME__, "sourceID must exist");
+ return false;
}
+
am_Source_Database_s source = mMappedData.mSourceMap.at(sourceID);
return source.visible;
}
@@ -2544,13 +2696,16 @@ bool CAmDatabaseHandlerMap::sourceVisible(const am_sourceID_t sourceID) const
*/
bool CAmDatabaseHandlerMap::sinkVisible(const am_sinkID_t sinkID) const
{
- am_Sink_Database_s const * source = objectForKeyIfExistsInMap(sinkID, mMappedData.mSinkMap);
- if( NULL!=source )
- {
- if(0==source->reserved)
- return source->visible;
- }
- return false;
+ am_Sink_Database_s const *source = objectForKeyIfExistsInMap(sinkID, mMappedData.mSinkMap);
+ if ( NULL != source )
+ {
+ if (0 == source->reserved)
+ {
+ return source->visible;
+ }
+ }
+
+ return false;
}
/**
@@ -2559,15 +2714,15 @@ bool CAmDatabaseHandlerMap::sinkVisible(const am_sinkID_t sinkID) const
* @param connection the connection to be checked
* @return true if connections exists
*/
-bool CAmDatabaseHandlerMap::existConnection(const am_Connection_s & connection) const
+bool CAmDatabaseHandlerMap::existConnection(const am_Connection_s &connection) const
{
- am_Connection_Database_s const * connectionObject = objectMatchingPredicate<am_Connection_Database_s, am_connectionID_t>(mMappedData.mConnectionMap, [&](const am_Connection_Database_s & obj){
- return false==obj.reserved &&
- connection.sinkID == obj.sinkID &&
- connection.sourceID == obj.sourceID &&
- connection.connectionFormat == obj.connectionFormat;
- });
- return ( NULL!=connectionObject );
+ am_Connection_Database_s const *connectionObject = objectMatchingPredicate<am_Connection_Database_s, am_connectionID_t>(mMappedData.mConnectionMap, [&](const am_Connection_Database_s &obj){
+ return false == obj.reserved &&
+ connection.sinkID == obj.sinkID &&
+ connection.sourceID == obj.sourceID &&
+ connection.connectionFormat == obj.connectionFormat;
+ });
+ return (NULL != connectionObject);
}
/**
@@ -2577,12 +2732,13 @@ bool CAmDatabaseHandlerMap::existConnection(const am_Connection_s & connection)
*/
bool CAmDatabaseHandlerMap::existConnectionID(const am_connectionID_t connectionID) const
{
- am_Connection_Database_s const * connection = objectForKeyIfExistsInMap(connectionID, mMappedData.mConnectionMap);
- if( NULL!=connection )
- {
- return (true);
- }
- return false;
+ am_Connection_Database_s const *connection = objectForKeyIfExistsInMap(connectionID, mMappedData.mConnectionMap);
+ if ( NULL != connection )
+ {
+ return (true);
+ }
+
+ return false;
}
/**
@@ -2592,297 +2748,324 @@ bool CAmDatabaseHandlerMap::existConnectionID(const am_connectionID_t connection
*/
bool CAmDatabaseHandlerMap::existCrossFader(const am_crossfaderID_t crossfaderID) const
{
- return existsObjectWithKeyInMap(crossfaderID, mMappedData.mCrossfaderMap);
+ return existsObjectWithKeyInMap(crossfaderID, mMappedData.mCrossfaderMap);
}
-am_Error_e CAmDatabaseHandlerMap::getSoureState(const am_sourceID_t sourceID, am_SourceState_e & sourceState) const
+am_Error_e CAmDatabaseHandlerMap::getSoureState(const am_sourceID_t sourceID, am_SourceState_e &sourceState) const
{
- am_Source_Database_s const * source = objectForKeyIfExistsInMap(sourceID, mMappedData.mSourceMap);
- if( NULL!=source )
- {
- sourceState = source->sourceState;
- return (E_OK);
- }
- else
- {
- sourceState = SS_UNKNNOWN;
- return (E_NON_EXISTENT);
- }
+ am_Source_Database_s const *source = objectForKeyIfExistsInMap(sourceID, mMappedData.mSourceMap);
+ if ( NULL != source )
+ {
+ sourceState = source->sourceState;
+ return (E_OK);
+ }
+ else
+ {
+ sourceState = SS_UNKNNOWN;
+ return (E_NON_EXISTENT);
+ }
}
am_Error_e CAmDatabaseHandlerMap::changeSourceState(const am_sourceID_t sourceID, const am_SourceState_e sourceState)
{
- if(!(sourceState>=SS_UNKNNOWN && sourceState<=SS_MAX))
- {
- logError(__METHOD_NAME__,"sourceState must be valid");
- return (E_NOT_POSSIBLE);
- }
+ if (!(sourceState >= SS_UNKNNOWN && sourceState <= SS_MAX))
+ {
+ logError(__METHOD_NAME__, "sourceState must be valid");
+ return (E_NOT_POSSIBLE);
+ }
- if(existSource(sourceID))
+ if (existSource(sourceID))
{
- mMappedData.mSourceMap.at(sourceID).sourceState = sourceState;
- return (E_OK);
- }
- logError(__METHOD_NAME__,"sourceID must exist");
- return (E_NON_EXISTENT);
+ mMappedData.mSourceMap.at(sourceID).sourceState = sourceState;
+ return (E_OK);
+ }
+
+ logError(__METHOD_NAME__, "sourceID must exist");
+ return (E_NON_EXISTENT);
}
am_Error_e CAmDatabaseHandlerMap::changeSourceInterruptState(const am_sourceID_t sourceID, const am_InterruptState_e interruptState)
{
- assert(sourceID!=0);
- assert(interruptState>=IS_UNKNOWN && interruptState<=IS_MAX);
- if(existSource(sourceID))
+ assert(sourceID != 0);
+ assert(interruptState >= IS_UNKNOWN && interruptState <= IS_MAX);
+ if (existSource(sourceID))
{
mMappedData.mSourceMap.at(sourceID).interruptState = interruptState;
return (E_OK);
}
+
+ return (E_NON_EXISTENT);
+}
+
+am_Error_e CAmDatabaseHandlerMap::getSinkMainVolume(const am_sinkID_t sinkID, am_mainVolume_t &mainVolume) const
+{
+
+ am_Sink_Database_s const *source = objectForKeyIfExistsInMap(sinkID, mMappedData.mSinkMap);
+ if ( NULL != source )
+ {
+ mainVolume = source->mainVolume;
+ return (E_OK);
+ }
+
+ mainVolume = -1;
+ logWarning(__METHOD_NAME__, "sinkID must be valid");
+ return (E_NON_EXISTENT);
+}
+
+am_Error_e CAmDatabaseHandlerMap::getSinkVolume(const am_sinkID_t sinkID, am_volume_t &volume) const
+{
+
+ am_Sink_Database_s const *source = objectForKeyIfExistsInMap(sinkID, mMappedData.mSinkMap);
+ if ( NULL != source )
+ {
+ volume = source->volume;
+ return (E_OK);
+ }
+
+ volume = -1;
+ logWarning(__METHOD_NAME__, "sinkID must be valid");
+ return (E_NON_EXISTENT);
+}
+
+am_Error_e CAmDatabaseHandlerMap::getSourceVolume(const am_sourceID_t sourceID, am_volume_t &volume) const
+{
+ am_Source_Database_s const *source = objectForKeyIfExistsInMap(sourceID, mMappedData.mSourceMap);
+ if ( NULL != source )
+ {
+ volume = source->volume;
+ return (E_OK);
+ }
+
+ volume = -1;
+ logWarning(__METHOD_NAME__, "sourceID must be valid");
+ return (E_NON_EXISTENT);
+}
+
+am_Error_e CAmDatabaseHandlerMap::getSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomSoundPropertyType_t propertyType, int16_t &value) const
+{
+
+ am_Sink_Database_s *pObject = (am_Sink_Database_s *)objectForKeyIfExistsInMap(sinkID, mMappedData.mSinkMap);
+ if ( NULL != pObject )
+ {
+ if (pObject->listSoundProperties.size() > 0 && 0 == pObject->cacheSoundProperties.size())
+ {
+ std::vector<am_SoundProperty_s>::const_iterator iter = pObject->listSoundProperties.begin();
+ for (; iter < pObject->listSoundProperties.end(); ++iter)
+ {
+ pObject->cacheSoundProperties[iter->type] = iter->value;
+ }
+ }
+
+ auto it = pObject->cacheSoundProperties.find(propertyType);
+ if (it != pObject->cacheSoundProperties.end())
+ {
+ value = it->second;
+ return (E_OK);
+ }
+ }
+
+ value = -1;
+ logWarning(__METHOD_NAME__, "sinkID must be valid");
+ return (E_NON_EXISTENT);
+}
+
+am_Error_e CAmDatabaseHandlerMap::getSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomSoundPropertyType_t propertyType, int16_t &value) const
+{
+ am_Source_Database_s *pObject = (am_Source_Database_s *)objectForKeyIfExistsInMap(sourceID, mMappedData.mSourceMap);
+ if ( NULL != pObject )
+ {
+ if (pObject->listSoundProperties.size() > 0 && 0 == pObject->cacheSoundProperties.size())
+ {
+ std::vector<am_SoundProperty_s>::const_iterator iter = pObject->listSoundProperties.begin();
+ for (; iter < pObject->listSoundProperties.end(); ++iter)
+ {
+ pObject->cacheSoundProperties[iter->type] = iter->value;
+ }
+ }
+
+ auto it = pObject->cacheSoundProperties.find(propertyType);
+ if (it != pObject->cacheSoundProperties.end())
+ {
+ value = it->second;
+ return (E_OK);
+ }
+ }
+
+ value = -1;
+ logWarning(__METHOD_NAME__, "sourceID must be valid");
+ return (E_NON_EXISTENT);
+}
+
+am_Error_e CAmDatabaseHandlerMap::getMainSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomMainSoundPropertyType_t propertyType, int16_t &value) const
+{
+ am_Sink_Database_s *pObject = (am_Sink_Database_s *)objectForKeyIfExistsInMap(sinkID, mMappedData.mSinkMap);
+ if ( NULL != pObject )
+ {
+ if (pObject->listMainSoundProperties.size() > 0 && 0 == pObject->cacheMainSoundProperties.size())
+ {
+ std::vector<am_MainSoundProperty_s>::const_iterator iter = pObject->listMainSoundProperties.begin();
+ for (; iter < pObject->listMainSoundProperties.end(); ++iter)
+ {
+ pObject->cacheMainSoundProperties[iter->type] = iter->value;
+ }
+ }
+
+ auto it = pObject->cacheMainSoundProperties.find(propertyType);
+ if (it != pObject->cacheMainSoundProperties.end())
+ {
+ value = it->second;
+ return (E_OK);
+ }
+ }
+
+ value = -1;
+ logWarning(__METHOD_NAME__, "sinkID must be valid");
+ return (E_NON_EXISTENT);
+}
+
+am_Error_e CAmDatabaseHandlerMap::getMainSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomMainSoundPropertyType_t propertyType, int16_t &value) const
+{
+
+ am_Source_Database_s *pObject = (am_Source_Database_s *)objectForKeyIfExistsInMap(sourceID, mMappedData.mSourceMap);
+ if ( NULL != pObject )
+ {
+ if (pObject->listMainSoundProperties.size() > 0 && 0 == pObject->cacheMainSoundProperties.size())
+ {
+ std::vector<am_MainSoundProperty_s>::const_iterator iter = pObject->listMainSoundProperties.begin();
+ for (; iter < pObject->listMainSoundProperties.end(); ++iter)
+ {
+ pObject->cacheMainSoundProperties[iter->type] = iter->value;
+ }
+ }
+
+ auto it = pObject->cacheMainSoundProperties.find(propertyType);
+ if (it != pObject->cacheMainSoundProperties.end())
+ {
+ value = it->second;
+ return (E_OK);
+ }
+ }
+
+ value = -1;
+ logWarning(__METHOD_NAME__, "sourceID must be valid");
+ return (E_NON_EXISTENT);
+}
+
+am_Error_e CAmDatabaseHandlerMap::getDomainState(const am_domainID_t domainID, am_DomainState_e &state) const
+{
+
+ am_Domain_Database_s const *source = objectForKeyIfExistsInMap(domainID, mMappedData.mDomainMap);
+ if ( NULL != source )
+ {
+ state = source->state;
+ return (E_OK);
+ }
+
+ state = DS_UNKNOWN;
+ logWarning(__METHOD_NAME__, "domainID must be valid");
return (E_NON_EXISTENT);
}
+am_Error_e CAmDatabaseHandlerMap::peekDomain(const std::string &name, am_domainID_t &domainID)
+{
+ domainID = 0;
-am_Error_e CAmDatabaseHandlerMap::getSinkMainVolume(const am_sinkID_t sinkID, am_mainVolume_t& mainVolume) const {
-
-
- am_Sink_Database_s const * source = objectForKeyIfExistsInMap(sinkID, mMappedData.mSinkMap);
- if( NULL!=source )
- {
- mainVolume = source->mainVolume;
- return (E_OK);
- }
- mainVolume = -1;
- logWarning(__METHOD_NAME__,"sinkID must be valid");
- return (E_NON_EXISTENT);
-}
-
-am_Error_e CAmDatabaseHandlerMap::getSinkVolume(const am_sinkID_t sinkID, am_volume_t & volume) const
-{
-
- am_Sink_Database_s const * source = objectForKeyIfExistsInMap(sinkID, mMappedData.mSinkMap);
- if( NULL!=source )
- {
- volume = source->volume;
- return (E_OK);
- }
- volume = -1;
- logWarning(__METHOD_NAME__,"sinkID must be valid");
- return (E_NON_EXISTENT);
-}
-
-am_Error_e CAmDatabaseHandlerMap::getSourceVolume(const am_sourceID_t sourceID, am_volume_t & volume) const
-{
- am_Source_Database_s const * source = objectForKeyIfExistsInMap(sourceID, mMappedData.mSourceMap);
- if( NULL!=source )
- {
- volume = source->volume;
- return (E_OK);
- }
- volume = -1;
- logWarning(__METHOD_NAME__,"sourceID must be valid");
- return (E_NON_EXISTENT);
-}
-
-am_Error_e CAmDatabaseHandlerMap::getSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomSoundPropertyType_t propertyType, int16_t & value) const
-{
-
- am_Sink_Database_s * pObject = (am_Sink_Database_s *)objectForKeyIfExistsInMap(sinkID, mMappedData.mSinkMap);
- if( NULL!=pObject )
- {
- if(pObject->listSoundProperties.size()>0 && 0==pObject->cacheSoundProperties.size())
- {
- std::vector<am_SoundProperty_s>::const_iterator iter = pObject->listSoundProperties.begin();
- for(; iter<pObject->listSoundProperties.end(); ++iter)
- pObject->cacheSoundProperties[iter->type] = iter->value;
- }
- auto it = pObject->cacheSoundProperties.find(propertyType);
- if(it!=pObject->cacheSoundProperties.end())
- {
- value = it->second;
- return (E_OK);
- }
- }
- value = -1;
- logWarning(__METHOD_NAME__,"sinkID must be valid");
- return (E_NON_EXISTENT);
-}
-
-am_Error_e CAmDatabaseHandlerMap::getSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomSoundPropertyType_t propertyType, int16_t & value) const
-{
- am_Source_Database_s * pObject = (am_Source_Database_s *)objectForKeyIfExistsInMap(sourceID, mMappedData.mSourceMap);
- if( NULL!=pObject )
- {
- if(pObject->listSoundProperties.size()>0 && 0==pObject->cacheSoundProperties.size())
- {
- std::vector<am_SoundProperty_s>::const_iterator iter = pObject->listSoundProperties.begin();
- for(; iter<pObject->listSoundProperties.end(); ++iter)
- pObject->cacheSoundProperties[iter->type] = iter->value;
- }
- auto it = pObject->cacheSoundProperties.find(propertyType);
- if(it!=pObject->cacheSoundProperties.end())
- {
- value = it->second;
- return (E_OK);
- }
- }
- value = -1;
- logWarning(__METHOD_NAME__,"sourceID must be valid");
- return (E_NON_EXISTENT);
-}
-
-am_Error_e CAmDatabaseHandlerMap::getMainSinkSoundPropertyValue(const am_sinkID_t sinkID, const am_CustomMainSoundPropertyType_t propertyType, int16_t& value) const
-{
- am_Sink_Database_s * pObject = (am_Sink_Database_s *)objectForKeyIfExistsInMap(sinkID, mMappedData.mSinkMap);
- if( NULL!=pObject )
- {
- if(pObject->listMainSoundProperties.size()>0 && 0==pObject->cacheMainSoundProperties.size())
- {
- std::vector<am_MainSoundProperty_s>::const_iterator iter = pObject->listMainSoundProperties.begin();
- for(; iter<pObject->listMainSoundProperties.end(); ++iter)
- pObject->cacheMainSoundProperties[iter->type] = iter->value;
- }
- auto it = pObject->cacheMainSoundProperties.find(propertyType);
- if(it!=pObject->cacheMainSoundProperties.end())
- {
- value = it->second;
- return (E_OK);
- }
- }
- value = -1;
- logWarning(__METHOD_NAME__,"sinkID must be valid");
- return (E_NON_EXISTENT);
-}
-
-am_Error_e CAmDatabaseHandlerMap::getMainSourceSoundPropertyValue(const am_sourceID_t sourceID, const am_CustomMainSoundPropertyType_t propertyType, int16_t& value) const
-{
-
- am_Source_Database_s * pObject = (am_Source_Database_s *)objectForKeyIfExistsInMap(sourceID, mMappedData.mSourceMap);
- if( NULL!=pObject )
- {
- if(pObject->listMainSoundProperties.size()>0 && 0==pObject->cacheMainSoundProperties.size())
- {
- std::vector<am_MainSoundProperty_s>::const_iterator iter = pObject->listMainSoundProperties.begin();
- for(; iter<pObject->listMainSoundProperties.end(); ++iter)
- pObject->cacheMainSoundProperties[iter->type] = iter->value;
- }
- auto it = pObject->cacheMainSoundProperties.find(propertyType);
- if(it!=pObject->cacheMainSoundProperties.end())
- {
- value = it->second;
- return (E_OK);
- }
- }
-
- value = -1;
- logWarning(__METHOD_NAME__,"sourceID must be valid");
- return (E_NON_EXISTENT);
-}
-
-am_Error_e CAmDatabaseHandlerMap::getDomainState(const am_domainID_t domainID, am_DomainState_e& state) const
-{
-
- am_Domain_Database_s const * source = objectForKeyIfExistsInMap(domainID, mMappedData.mDomainMap);
- if( NULL!=source )
- {
- state = source->state;
- return (E_OK);
- }
- state = DS_UNKNOWN;
- logWarning(__METHOD_NAME__,"domainID must be valid");
- return (E_NON_EXISTENT);
-}
-
-am_Error_e CAmDatabaseHandlerMap::peekDomain(const std::string & name, am_domainID_t & domainID)
-{
- domainID=0;
-
- am_Domain_Database_s const *reservedDomain = objectMatchingPredicate<am_Domain_Database_s, am_domainID_t>(mMappedData.mDomainMap, [&](const am_Domain_Database_s & obj){
- return name.compare(obj.name)==0;
- });
-
- if( NULL != reservedDomain )
- {
- domainID = reservedDomain->domainID;
- return E_OK;
+ am_Domain_Database_s const *reservedDomain = objectMatchingPredicate<am_Domain_Database_s, am_domainID_t>(mMappedData.mDomainMap, [&](const am_Domain_Database_s &obj){
+ return name.compare(obj.name) == 0;
+ });
+
+ if ( NULL != reservedDomain )
+ {
+ domainID = reservedDomain->domainID;
+ return E_OK;
}
else
{
- int16_t nextID = 0;
- if( mMappedData.increaseID( nextID, mMappedData.mCurrentDomainID) )
- {
- domainID = nextID;
- am_Domain_Database_s domain;
- domain.domainID = nextID;
- domain.name = name;
- domain.reserved = 1;
- mMappedData.mDomainMap[nextID] = domain;
- return E_OK;
- }
- return E_UNKNOWN;
+ int16_t nextID = 0;
+ if ( mMappedData.increaseID(nextID, mMappedData.mCurrentDomainID))
+ {
+ domainID = nextID;
+ am_Domain_Database_s domain;
+ domain.domainID = nextID;
+ domain.name = name;
+ domain.reserved = 1;
+ mMappedData.mDomainMap[nextID] = domain;
+ return E_OK;
+ }
+
+ return E_UNKNOWN;
}
+
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::peekSink(const std::string & name, am_sinkID_t & sinkID)
+am_Error_e CAmDatabaseHandlerMap::peekSink(const std::string &name, am_sinkID_t &sinkID)
{
- am_Sink_Database_s const *reservedSink = objectMatchingPredicate<am_Sink_Database_s, am_sinkID_t>(mMappedData.mSinkMap, [&](const am_Sink_Database_s & obj){
- return name.compare(obj.name)==0;
- });
- if( NULL!=reservedSink )
+ am_Sink_Database_s const *reservedSink = objectMatchingPredicate<am_Sink_Database_s, am_sinkID_t>(mMappedData.mSinkMap, [&](const am_Sink_Database_s &obj){
+ return name.compare(obj.name) == 0;
+ });
+ if ( NULL != reservedSink )
{
- sinkID = reservedSink->sinkID;
- return E_OK;
+ sinkID = reservedSink->sinkID;
+ return E_OK;
}
else
{
- int16_t nextID = 0;
- if(mMappedData.increaseID(nextID, mMappedData.mCurrentSinkID))
- {
- if(mFirstStaticSink)
- {
- nextID = DYNAMIC_ID_BOUNDARY;
- mFirstStaticSink = false;
- }
- sinkID = nextID;
- am_Sink_Database_s object;
- object.sinkID = nextID;
- object.name = name;
- object.reserved = 1;
- mMappedData.mSinkMap[nextID] = object;
- return E_OK;
- }
- return E_UNKNOWN;
+ int16_t nextID = 0;
+ if (mMappedData.increaseID(nextID, mMappedData.mCurrentSinkID))
+ {
+ if (mFirstStaticSink)
+ {
+ nextID = DYNAMIC_ID_BOUNDARY;
+ mFirstStaticSink = false;
+ }
+
+ sinkID = nextID;
+ am_Sink_Database_s object;
+ object.sinkID = nextID;
+ object.name = name;
+ object.reserved = 1;
+ mMappedData.mSinkMap[nextID] = object;
+ return E_OK;
+ }
+
+ return E_UNKNOWN;
}
}
-am_Error_e CAmDatabaseHandlerMap::peekSource(const std::string & name, am_sourceID_t & sourceID)
+am_Error_e CAmDatabaseHandlerMap::peekSource(const std::string &name, am_sourceID_t &sourceID)
{
- am_Source_Database_s const *reservedSrc = objectMatchingPredicate<am_Source_Database_s, am_sourceID_t>(mMappedData.mSourceMap, [&](const am_Source_Database_s & obj){
- return name.compare(obj.name)==0;
- });
- if( NULL!=reservedSrc )
+ am_Source_Database_s const *reservedSrc = objectMatchingPredicate<am_Source_Database_s, am_sourceID_t>(mMappedData.mSourceMap, [&](const am_Source_Database_s &obj){
+ return name.compare(obj.name) == 0;
+ });
+ if ( NULL != reservedSrc )
{
- sourceID = reservedSrc->sourceID;
- return E_OK;
+ sourceID = reservedSrc->sourceID;
+ return E_OK;
}
else
{
- int16_t nextID = 0;
- if(mMappedData.increaseID(nextID, mMappedData.mCurrentSourceID))
- {
- if(mFirstStaticSource)
- {
-// nextID = DYNAMIC_ID_BOUNDARY;
- mFirstStaticSource = false;
- }
- sourceID = nextID;
- am_Source_Database_s object;
- object.sourceID = nextID;
- object.name = name;
- object.reserved = 1;
- mMappedData.mSourceMap[nextID] = object;
- return E_OK;
- }
- else
- return E_UNKNOWN;
+ int16_t nextID = 0;
+ if (mMappedData.increaseID(nextID, mMappedData.mCurrentSourceID))
+ {
+ if (mFirstStaticSource)
+ {
+// nextID = DYNAMIC_ID_BOUNDARY;
+ mFirstStaticSource = false;
+ }
+
+ sourceID = nextID;
+ am_Source_Database_s object;
+ object.sourceID = nextID;
+ object.name = name;
+ object.reserved = 1;
+ mMappedData.mSourceMap[nextID] = object;
+ return E_OK;
+ }
+ else
+ {
+ return E_UNKNOWN;
+ }
}
}
@@ -2890,7 +3073,7 @@ am_Error_e CAmDatabaseHandlerMap::changeSinkVolume(const am_sinkID_t sinkID, con
{
if (!existSink(sinkID))
{
- logError(__METHOD_NAME__,"sinkID must be valid");
+ logError(__METHOD_NAME__, "sinkID must be valid");
return (E_NON_EXISTENT);
}
@@ -2902,60 +3085,70 @@ am_Error_e CAmDatabaseHandlerMap::changeSourceVolume(const am_sourceID_t sourceI
{
if (!existSource(sourceID))
{
- logError(__METHOD_NAME__,"sourceID must be valid");
+ logError(__METHOD_NAME__, "sourceID must be valid");
return (E_NON_EXISTENT);
}
+
mMappedData.mSourceMap[sourceID].volume = volume;
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::changeSourceSoundPropertyDB(const am_SoundProperty_s & soundProperty, const am_sourceID_t sourceID)
+am_Error_e CAmDatabaseHandlerMap::changeSourceSoundPropertyDB(const am_SoundProperty_s &soundProperty, const am_sourceID_t sourceID)
{
if (!existSource(sourceID))
{
- logError(__METHOD_NAME__,"sourceID must be valid");
+ logError(__METHOD_NAME__, "sourceID must be valid");
return (E_NON_EXISTENT);
}
- am_Source_Database_s & source = mMappedData.mSourceMap[sourceID];
- std::vector<am_SoundProperty_s>::iterator iter = source.listSoundProperties.begin();
- for(; iter<source.listSoundProperties.end(); ++iter)
- {
- if( soundProperty.type == iter->type )
- {
- iter->value = soundProperty.value;
- if(source.cacheSoundProperties.size())
- source.cacheSoundProperties[soundProperty.type] = soundProperty.value;
- return (E_OK);
- }
- }
- logError(__METHOD_NAME__,"soundproperty type must be valid source:",sourceID,"type",soundProperty.type);
- return (E_NON_EXISTENT);
+ am_Source_Database_s &source = mMappedData.mSourceMap[sourceID];
+ std::vector<am_SoundProperty_s>::iterator iter = source.listSoundProperties.begin();
+ for (; iter < source.listSoundProperties.end(); ++iter)
+ {
+ if ( soundProperty.type == iter->type )
+ {
+ iter->value = soundProperty.value;
+ if (source.cacheSoundProperties.size())
+ {
+ source.cacheSoundProperties[soundProperty.type] = soundProperty.value;
+ }
+
+ return (E_OK);
+ }
+ }
+
+ logError(__METHOD_NAME__, "soundproperty type must be valid source:", sourceID, "type", soundProperty.type);
+ return (E_NON_EXISTENT);
}
-am_Error_e CAmDatabaseHandlerMap::changeSinkSoundPropertyDB(const am_SoundProperty_s & soundProperty, const am_sinkID_t sinkID)
+am_Error_e CAmDatabaseHandlerMap::changeSinkSoundPropertyDB(const am_SoundProperty_s &soundProperty, const am_sinkID_t sinkID)
{
if (!existSink(sinkID))
{
- logError(__METHOD_NAME__,"sinkID must be valid");
+ logError(__METHOD_NAME__, "sinkID must be valid");
return (E_NON_EXISTENT);
}
- am_Sink_Database_s & sink = mMappedData.mSinkMap[sinkID];
+
+ am_Sink_Database_s &sink = mMappedData.mSinkMap[sinkID];
std::vector<am_SoundProperty_s>::iterator iter = sink.listSoundProperties.begin();
- for(; iter<sink.listSoundProperties.end(); ++iter)
- {
- if( soundProperty.type == iter->type )
- {
- iter->value = soundProperty.value;
- if(sink.cacheSoundProperties.size())
- sink.cacheSoundProperties[soundProperty.type] = soundProperty.value;
- return (E_OK);
- }
- }
- logError(__METHOD_NAME__,"soundproperty type must be valid sinkID:",sinkID,"type",soundProperty.type);
- return (E_NON_EXISTENT);
+ for (; iter < sink.listSoundProperties.end(); ++iter)
+ {
+ if ( soundProperty.type == iter->type )
+ {
+ iter->value = soundProperty.value;
+ if (sink.cacheSoundProperties.size())
+ {
+ sink.cacheSoundProperties[soundProperty.type] = soundProperty.value;
+ }
+
+ return (E_OK);
+ }
+ }
+
+ logError(__METHOD_NAME__, "soundproperty type must be valid sinkID:", sinkID, "type", soundProperty.type);
+ return (E_NON_EXISTENT);
}
am_Error_e CAmDatabaseHandlerMap::changeCrossFaderHotSink(const am_crossfaderID_t crossfaderID, const am_HotSink_e hotsink)
@@ -2963,7 +3156,7 @@ am_Error_e CAmDatabaseHandlerMap::changeCrossFaderHotSink(const am_crossfaderID_
if (!existCrossFader(crossfaderID))
{
- logError(__METHOD_NAME__,"crossfaderID must be valid");
+ logError(__METHOD_NAME__, "crossfaderID must be valid");
return (E_NON_EXISTENT);
}
@@ -2971,67 +3164,74 @@ am_Error_e CAmDatabaseHandlerMap::changeCrossFaderHotSink(const am_crossfaderID_
return (E_OK);
}
-bool CAmDatabaseHandlerMap::isComponentConnected(const am_Gateway_s & gateway) const
+bool CAmDatabaseHandlerMap::isComponentConnected(const am_Gateway_s &gateway) const
{
- bool ret = isConnected(gateway);
- return ret;
+ bool ret = isConnected(gateway);
+ return ret;
}
-bool CAmDatabaseHandlerMap::isComponentConnected(const am_Converter_s & converter) const
+bool CAmDatabaseHandlerMap::isComponentConnected(const am_Converter_s &converter) const
{
- bool ret = isConnected(converter);
- return ret;
+ bool ret = isConnected(converter);
+ return ret;
}
-am_Error_e am::CAmDatabaseHandlerMap::peekSinkClassID(const std::string & name, am_sinkClass_t & sinkClassID)
+am_Error_e am::CAmDatabaseHandlerMap::peekSinkClassID(const std::string &name, am_sinkClass_t &sinkClassID)
{
if (name.empty())
+ {
return (E_NON_EXISTENT);
- am_SinkClass_Database_s const *reserved = objectMatchingPredicate<am_SinkClass_Database_s, am_sinkClass_t>(mMappedData.mSinkClassesMap, [&](const am_SinkClass_Database_s & obj){
- return name.compare(obj.name)==0;
- });
- if( NULL!=reserved )
- {
- sinkClassID = reserved->sinkClassID;
- return E_OK;
- }
- return (E_NON_EXISTENT);
+ }
+
+ am_SinkClass_Database_s const *reserved = objectMatchingPredicate<am_SinkClass_Database_s, am_sinkClass_t>(mMappedData.mSinkClassesMap, [&](const am_SinkClass_Database_s &obj){
+ return name.compare(obj.name) == 0;
+ });
+ if ( NULL != reserved )
+ {
+ sinkClassID = reserved->sinkClassID;
+ return E_OK;
+ }
+
+ return (E_NON_EXISTENT);
}
-am_Error_e am::CAmDatabaseHandlerMap::peekSourceClassID(const std::string & name, am_sourceClass_t & sourceClassID)
+am_Error_e am::CAmDatabaseHandlerMap::peekSourceClassID(const std::string &name, am_sourceClass_t &sourceClassID)
{
if (name.empty())
+ {
return (E_NON_EXISTENT);
- am_SourceClass_Database_s const *ptrSource = objectMatchingPredicate<am_SourceClass_Database_s, am_sourceClass_t>(mMappedData.mSourceClassesMap, [&](const am_SourceClass_Database_s & obj){
- return name.compare(obj.name)==0;
- });
- if( NULL!=ptrSource )
- {
- sourceClassID = ptrSource->sourceClassID;
- return E_OK;
- }
- return (E_NON_EXISTENT);
-}
+ }
+ am_SourceClass_Database_s const *ptrSource = objectMatchingPredicate<am_SourceClass_Database_s, am_sourceClass_t>(mMappedData.mSourceClassesMap, [&](const am_SourceClass_Database_s &obj){
+ return name.compare(obj.name) == 0;
+ });
+ if ( NULL != ptrSource )
+ {
+ sourceClassID = ptrSource->sourceClassID;
+ return E_OK;
+ }
-am_Error_e CAmDatabaseHandlerMap::changeSourceDB(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)
+ return (E_NON_EXISTENT);
+}
+
+am_Error_e CAmDatabaseHandlerMap::changeSourceDB(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)
{
if (!existSource(sourceID))
{
- logError(__METHOD_NAME__,"sourceID must be valid");
+ logError(__METHOD_NAME__, "sourceID must be valid");
return (E_NON_EXISTENT);
}
DB_COND_UPDATE_INIT;
- am_sourceClass_t sourceClassOut(sourceClassID);
+ am_sourceClass_t sourceClassOut(sourceClassID);
std::vector<am_MainSoundProperty_s> listMainSoundPropertiesOut(listMainSoundProperties);
- //check if sinkClass needs to be changed
+ // check if sinkClass needs to be changed
std::unordered_map<am_sourceID_t, am_Source_Database_s>::iterator iter = mMappedData.mSourceMap.begin();
- for(; iter!=mMappedData.mSourceMap.end(); ++iter)
+ for (; iter != mMappedData.mSourceMap.end(); ++iter)
{
- if( iter->second.sourceID == sourceID )
+ if ( iter->second.sourceID == sourceID )
{
if (sourceClassID != 0)
{
@@ -3041,24 +3241,25 @@ am_Error_e CAmDatabaseHandlerMap::changeSourceDB(const am_sourceID_t sourceID, c
{
sourceClassOut = iter->second.sourceClassID;
}
+
break;
}
}
- //check if soundProperties need to be updated
+ // check if soundProperties need to be updated
if (!listSoundProperties.empty())
{
mMappedData.mSourceMap.at(sourceID).listSoundProperties = listSoundProperties;
mMappedData.mSourceMap.at(sourceID).cacheSoundProperties.clear();
}
- //check if we have to update the list of connectionformats
+ // check if we have to update the list of connectionformats
if (!listConnectionFormats.empty())
{
mMappedData.mSourceMap.at(sourceID).listConnectionFormats = listConnectionFormats;
}
- //then we need to check if we need to update the listMainSoundProperties
+ // then we need to check if we need to update the listMainSoundProperties
if (sourceVisible(sourceID))
{
if (!listMainSoundProperties.empty())
@@ -3068,7 +3269,7 @@ am_Error_e CAmDatabaseHandlerMap::changeSourceDB(const am_sourceID_t sourceID, c
}
else
{
- getListMainSourceSoundProperties(sourceID,listMainSoundPropertiesOut);
+ getListMainSourceSoundProperties(sourceID, listMainSoundPropertiesOut);
}
}
@@ -3076,7 +3277,7 @@ am_Error_e CAmDatabaseHandlerMap::changeSourceDB(const am_sourceID_t sourceID, c
{
logVerbose("DatabaseHandler::changeSource changed changeSource of source:", sourceID);
- NOTIFY_OBSERVERS4(dboSourceUpdated, sourceID,sourceClassOut,listMainSoundPropertiesOut,sourceVisible(sourceID))
+ NOTIFY_OBSERVERS4(dboSourceUpdated, sourceID, sourceClassOut, listMainSoundPropertiesOut, sourceVisible(sourceID))
}
@@ -3084,21 +3285,21 @@ am_Error_e CAmDatabaseHandlerMap::changeSourceDB(const am_sourceID_t sourceID, c
}
-am_Error_e CAmDatabaseHandlerMap::changeSinkDB(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)
+am_Error_e CAmDatabaseHandlerMap::changeSinkDB(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)
{
DB_COND_UPDATE_INIT;
- am_sinkClass_t sinkClassOut(sinkClassID);
+ am_sinkClass_t sinkClassOut(sinkClassID);
std::vector<am_MainSoundProperty_s> listMainSoundPropertiesOut(listMainSoundProperties);
if (!existSink(sinkID))
{
- logError(__METHOD_NAME__,"sinkID must be valid");
+ logError(__METHOD_NAME__, "sinkID must be valid");
return (E_NON_EXISTENT);
}
std::unordered_map<am_sinkID_t, am_Sink_Database_s>::iterator iter = mMappedData.mSinkMap.begin();
- for(; iter!=mMappedData.mSinkMap.end(); ++iter)
+ for (; iter != mMappedData.mSinkMap.end(); ++iter)
{
if (iter->second.sinkID == sinkID)
{
@@ -3110,24 +3311,25 @@ am_Error_e CAmDatabaseHandlerMap::changeSinkDB(const am_sinkID_t sinkID, const a
{
sinkClassOut = iter->second.sinkClassID;
}
+
break;
}
}
- //check if soundProperties need to be updated
+ // check if soundProperties need to be updated
if (!listSoundProperties.empty())
{
mMappedData.mSinkMap.at(sinkID).listSoundProperties = listSoundProperties;
mMappedData.mSinkMap.at(sinkID).cacheSoundProperties.clear();
}
- //check if we have to update the list of connectionformats
+ // check if we have to update the list of connectionformats
if (!listConnectionFormats.empty())
{
mMappedData.mSinkMap.at(sinkID).listConnectionFormats = listConnectionFormats;
}
- //then we need to check if we need to update the listMainSoundProperties
+ // then we need to check if we need to update the listMainSoundProperties
if (sinkVisible(sinkID))
{
if (!listMainSoundProperties.empty())
@@ -3135,9 +3337,9 @@ am_Error_e CAmDatabaseHandlerMap::changeSinkDB(const am_sinkID_t sinkID, const a
DB_COND_UPDATE(mMappedData.mSinkMap.at(sinkID).listMainSoundProperties, listMainSoundProperties);
mMappedData.mSinkMap.at(sinkID).cacheMainSoundProperties.clear();
}
- else //read out the properties
+ else // read out the properties
{
- getListMainSinkSoundProperties(sinkID,listMainSoundPropertiesOut);
+ getListMainSinkSoundProperties(sinkID, listMainSoundPropertiesOut);
}
}
@@ -3145,33 +3347,34 @@ am_Error_e CAmDatabaseHandlerMap::changeSinkDB(const am_sinkID_t sinkID, const a
{
logVerbose("DatabaseHandler::changeSink changed changeSink of sink:", sinkID);
- NOTIFY_OBSERVERS4(dboSinkUpdated, sinkID,sinkClassOut,listMainSoundPropertiesOut,sinkVisible(sinkID))
+ NOTIFY_OBSERVERS4(dboSinkUpdated, sinkID, sinkClassOut, listMainSoundPropertiesOut, sinkVisible(sinkID))
}
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListMainSinkNotificationConfigurations(const am_sinkID_t sinkID, std::vector<am_NotificationConfiguration_s>& listMainNotificationConfigurations)
+am_Error_e CAmDatabaseHandlerMap::getListMainSinkNotificationConfigurations(const am_sinkID_t sinkID, std::vector<am_NotificationConfiguration_s> &listMainNotificationConfigurations)
{
if (!existSink(sinkID))
{
- logWarning(__METHOD_NAME__,"sinkID must be valid");
+ logWarning(__METHOD_NAME__, "sinkID must be valid");
return (E_DATABASE_ERROR);
}
+
listMainNotificationConfigurations.clear();
listMainNotificationConfigurations = mMappedData.mSinkMap.at(sinkID).listMainNotificationConfigurations;
- return (E_OK);
+ return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::getListMainSourceNotificationConfigurations(const am_sourceID_t sourceID, std::vector<am_NotificationConfiguration_s>& listMainNotificationConfigurations)
+am_Error_e CAmDatabaseHandlerMap::getListMainSourceNotificationConfigurations(const am_sourceID_t sourceID, std::vector<am_NotificationConfiguration_s> &listMainNotificationConfigurations)
{
if (!existSource(sourceID))
{
- logWarning(__METHOD_NAME__,"sourceID must be valid");
+ logWarning(__METHOD_NAME__, "sourceID must be valid");
return (E_DATABASE_ERROR);
}
@@ -3180,22 +3383,25 @@ am_Error_e CAmDatabaseHandlerMap::getListMainSourceNotificationConfigurations(co
return (E_OK);
}
-bool changeMainNotificationConfiguration(std::vector<am_NotificationConfiguration_s> & listMainNotificationConfigurations,
- const am_NotificationConfiguration_s & mainNotificationConfiguration)
+bool changeMainNotificationConfiguration(std::vector<am_NotificationConfiguration_s> &listMainNotificationConfigurations,
+ const am_NotificationConfiguration_s &mainNotificationConfiguration)
{
std::vector<am_NotificationConfiguration_s>::iterator iter = listMainNotificationConfigurations.begin();
- for(; iter<listMainNotificationConfigurations.end(); ++iter)
+ for (; iter < listMainNotificationConfigurations.end(); ++iter)
{
- if( mainNotificationConfiguration.type == iter->type )
+ if ( mainNotificationConfiguration.type == iter->type )
{
#ifdef WITH_DATABASE_CHANGE_CHECK
- if( iter->status == mainNotificationConfiguration.status && iter->parameter == mainNotificationConfiguration.parameter )
+ if ( iter->status == mainNotificationConfiguration.status && iter->parameter == mainNotificationConfiguration.parameter )
+ {
return false;
+ }
#endif
*iter = mainNotificationConfiguration;
return true;
}
}
+
return false;
}
@@ -3204,13 +3410,16 @@ am_Error_e CAmDatabaseHandlerMap::changeMainSinkNotificationConfigurationDB(cons
if (!existSink(sinkID))
{
- logError(__METHOD_NAME__,"sinkID must be valid");
+ logError(__METHOD_NAME__, "sinkID must be valid");
return (E_NON_EXISTENT);
}
- if(!changeMainNotificationConfiguration(mMappedData.mSinkMap.at(sinkID).listMainNotificationConfigurations, mainNotificationConfiguration))
- return (E_NO_CHANGE);
- logVerbose("DatabaseHandler::changeMainSinkNotificationConfigurationDB changed MainNotificationConfiguration of source:", sinkID, "type:", mainNotificationConfiguration.type, "to status=", mainNotificationConfiguration.status, "and parameter=",mainNotificationConfiguration.parameter);
+ if (!changeMainNotificationConfiguration(mMappedData.mSinkMap.at(sinkID).listMainNotificationConfigurations, mainNotificationConfiguration))
+ {
+ return (E_NO_CHANGE);
+ }
+
+ logVerbose("DatabaseHandler::changeMainSinkNotificationConfigurationDB changed MainNotificationConfiguration of source:", sinkID, "type:", mainNotificationConfiguration.type, "to status=", mainNotificationConfiguration.status, "and parameter=", mainNotificationConfiguration.parameter);
NOTIFY_OBSERVERS2(dboSinkMainNotificationConfigurationChanged, sinkID, mainNotificationConfiguration)
@@ -3222,96 +3431,99 @@ am_Error_e CAmDatabaseHandlerMap::changeMainSourceNotificationConfigurationDB(co
if (!existSource(sourceID))
{
- logError(__METHOD_NAME__,"sourceID must be valid");
+ logError(__METHOD_NAME__, "sourceID must be valid");
return (E_NON_EXISTENT);
}
- if(!changeMainNotificationConfiguration(mMappedData.mSourceMap.at(sourceID).listMainNotificationConfigurations, mainNotificationConfiguration))
- return (E_NO_CHANGE);
+ if (!changeMainNotificationConfiguration(mMappedData.mSourceMap.at(sourceID).listMainNotificationConfigurations, mainNotificationConfiguration))
+ {
+ return (E_NO_CHANGE);
+ }
- logVerbose("DatabaseHandler::changeMainSourceNotificationConfigurationDB changed MainNotificationConfiguration of source:", sourceID, "type:", mainNotificationConfiguration.type, "to status=", mainNotificationConfiguration.status, "and parameter=",mainNotificationConfiguration.parameter);
+ logVerbose("DatabaseHandler::changeMainSourceNotificationConfigurationDB changed MainNotificationConfiguration of source:", sourceID, "type:", mainNotificationConfiguration.type, "to status=", mainNotificationConfiguration.status, "and parameter=", mainNotificationConfiguration.parameter);
NOTIFY_OBSERVERS2(dboSourceMainNotificationConfigurationChanged, sourceID, mainNotificationConfiguration)
return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::changeGatewayDB(const am_gatewayID_t gatewayID, const std::vector<am_CustomConnectionFormat_t>& listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t>& listSinkConnectionFormats, const std::vector<bool>& convertionMatrix)
+am_Error_e CAmDatabaseHandlerMap::changeGatewayDB(const am_gatewayID_t gatewayID, const std::vector<am_CustomConnectionFormat_t> &listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t> &listSinkConnectionFormats, const std::vector<bool> &convertionMatrix)
{
- if (!existGateway(gatewayID))
- {
- logError(__METHOD_NAME__,"gatewayID must be valid");
- return (E_NON_EXISTENT);
- }
+ if (!existGateway(gatewayID))
+ {
+ logError(__METHOD_NAME__, "gatewayID must be valid");
+ return (E_NON_EXISTENT);
+ }
- if (!listSourceConnectionFormats.empty())
- {
- mMappedData.mGatewayMap.at(gatewayID).listSourceFormats = listSourceConnectionFormats;
- }
+ if (!listSourceConnectionFormats.empty())
+ {
+ mMappedData.mGatewayMap.at(gatewayID).listSourceFormats = listSourceConnectionFormats;
+ }
- if (!listSinkConnectionFormats.empty())
- {
- mMappedData.mGatewayMap.at(gatewayID).listSinkFormats = listSinkConnectionFormats;
- }
+ if (!listSinkConnectionFormats.empty())
+ {
+ mMappedData.mGatewayMap.at(gatewayID).listSinkFormats = listSinkConnectionFormats;
+ }
- if (!convertionMatrix.empty())
- {
- mListConnectionFormat.clear();
- mListConnectionFormat.insert(std::make_pair(gatewayID, convertionMatrix));
- }
+ if (!convertionMatrix.empty())
+ {
+ mListConnectionFormat.clear();
+ mListConnectionFormat.insert(std::make_pair(gatewayID, convertionMatrix));
+ }
- logVerbose("DatabaseHandler::changeGatewayDB changed Gateway with ID", gatewayID);
+ logVerbose("DatabaseHandler::changeGatewayDB changed Gateway with ID", gatewayID);
- //todo: check if observer needs to be adopted.
- return (E_OK);
+ // todo: check if observer needs to be adopted.
+ return (E_OK);
}
-am_Error_e CAmDatabaseHandlerMap::changeConverterDB(const am_converterID_t converterID, const std::vector<am_CustomConnectionFormat_t>& listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t>& listSinkConnectionFormats, const std::vector<bool>& convertionMatrix)
+am_Error_e CAmDatabaseHandlerMap::changeConverterDB(const am_converterID_t converterID, const std::vector<am_CustomConnectionFormat_t> &listSourceConnectionFormats, const std::vector<am_CustomConnectionFormat_t> &listSinkConnectionFormats, const std::vector<bool> &convertionMatrix)
{
- if (!existConverter(converterID))
- {
- logError(__METHOD_NAME__,"converterID must be valid");
- return (E_NON_EXISTENT);
- }
+ if (!existConverter(converterID))
+ {
+ logError(__METHOD_NAME__, "converterID must be valid");
+ return (E_NON_EXISTENT);
+ }
- if (!listSourceConnectionFormats.empty())
- {
- mMappedData.mConverterMap.at(converterID).listSourceFormats = listSourceConnectionFormats;
- }
+ if (!listSourceConnectionFormats.empty())
+ {
+ mMappedData.mConverterMap.at(converterID).listSourceFormats = listSourceConnectionFormats;
+ }
- if (!listSinkConnectionFormats.empty())
- {
- mMappedData.mConverterMap.at(converterID).listSinkFormats = listSinkConnectionFormats;
- }
+ if (!listSinkConnectionFormats.empty())
+ {
+ mMappedData.mConverterMap.at(converterID).listSinkFormats = listSinkConnectionFormats;
+ }
- if (!convertionMatrix.empty())
- {
- mListConnectionFormat.clear();
- mListConnectionFormat.insert(std::make_pair(converterID, convertionMatrix));
- }
+ if (!convertionMatrix.empty())
+ {
+ mListConnectionFormat.clear();
+ mListConnectionFormat.insert(std::make_pair(converterID, convertionMatrix));
+ }
- logVerbose("DatabaseHandler::changeConverterDB changed Gateway with ID", converterID);
+ logVerbose("DatabaseHandler::changeConverterDB changed Gateway with ID", converterID);
- //todo: check if observer needs to be adopted.
- return (E_OK);
+ // todo: check if observer needs to be adopted.
+ return (E_OK);
}
-bool changeNotificationConfiguration(std::vector<am_NotificationConfiguration_s> & listNotificationConfigurations, const am_NotificationConfiguration_s & notificationConfiguration)
+bool changeNotificationConfiguration(std::vector<am_NotificationConfiguration_s> &listNotificationConfigurations, const am_NotificationConfiguration_s &notificationConfiguration)
{
- bool changed = false;
- std::vector<am_NotificationConfiguration_s>::iterator iter = listNotificationConfigurations.begin();
- for(; iter<listNotificationConfigurations.end(); ++iter)
- {
- if( notificationConfiguration.type == iter->type )
- {
- iter->status = notificationConfiguration.status;
- iter->parameter = notificationConfiguration.parameter;
- changed |= true;
- }
- }
- return changed;
+ bool changed = false;
+ std::vector<am_NotificationConfiguration_s>::iterator iter = listNotificationConfigurations.begin();
+ for (; iter < listNotificationConfigurations.end(); ++iter)
+ {
+ if ( notificationConfiguration.type == iter->type )
+ {
+ iter->status = notificationConfiguration.status;
+ iter->parameter = notificationConfiguration.parameter;
+ changed |= true;
+ }
+ }
+
+ return changed;
}
am_Error_e CAmDatabaseHandlerMap::changeSinkNotificationConfigurationDB(const am_sinkID_t sinkID, const am_NotificationConfiguration_s notificationConfiguration)
@@ -3319,15 +3531,18 @@ am_Error_e CAmDatabaseHandlerMap::changeSinkNotificationConfigurationDB(const am
if (!existSink(sinkID))
{
- logError(__METHOD_NAME__,"sinkID must be valid");
+ logError(__METHOD_NAME__, "sinkID must be valid");
return (E_NON_EXISTENT);
}
- if(!changeNotificationConfiguration(mMappedData.mSinkMap.at(sinkID).listNotificationConfigurations, notificationConfiguration))
- return (E_NO_CHANGE);
- logVerbose("DatabaseHandler::changeMainSinkNotificationConfigurationDB changed MainNotificationConfiguration of source:", sinkID, "type:", notificationConfiguration.type, "to status=", notificationConfiguration.status, "and parameter=",notificationConfiguration.parameter);
+ if (!changeNotificationConfiguration(mMappedData.mSinkMap.at(sinkID).listNotificationConfigurations, notificationConfiguration))
+ {
+ return (E_NO_CHANGE);
+ }
+
+ logVerbose("DatabaseHandler::changeMainSinkNotificationConfigurationDB changed MainNotificationConfiguration of source:", sinkID, "type:", notificationConfiguration.type, "to status=", notificationConfiguration.status, "and parameter=", notificationConfiguration.parameter);
- //todo:: inform obsever here...
+ // todo:: inform obsever here...
return (E_NON_EXISTENT);
}
@@ -3336,84 +3551,101 @@ am_Error_e CAmDatabaseHandlerMap::changeSourceNotificationConfigurationDB(const
if (!existSource(sourceID))
{
- logError(__METHOD_NAME__,"sourceID must be valid");
+ logError(__METHOD_NAME__, "sourceID must be valid");
return (E_NON_EXISTENT);
}
- if(!changeNotificationConfiguration(mMappedData.mSourceMap.at(sourceID).listNotificationConfigurations, notificationConfiguration))
- return (E_NO_CHANGE);
+ if (!changeNotificationConfiguration(mMappedData.mSourceMap.at(sourceID).listNotificationConfigurations, notificationConfiguration))
+ {
+ return (E_NO_CHANGE);
+ }
- logVerbose("DatabaseHandler::changeSourceNotificationConfigurationDB changed MainNotificationConfiguration of source:", sourceID, "type:", notificationConfiguration.type, "to status=", notificationConfiguration.status, "and parameter=",notificationConfiguration.parameter);
+ logVerbose("DatabaseHandler::changeSourceNotificationConfigurationDB changed MainNotificationConfiguration of source:", sourceID, "type:", notificationConfiguration.type, "to status=", notificationConfiguration.status, "and parameter=", notificationConfiguration.parameter);
- //todo:: implement observer function
+ // todo:: implement observer function
return (E_NON_EXISTENT);
}
-am_Error_e CAmDatabaseHandlerMap::enumerateSources(std::function<void(const am_Source_s & element)> cb) const
+am_Error_e CAmDatabaseHandlerMap::enumerateSources(std::function<void(const am_Source_s &element)> cb) const
{
- for(auto it = mMappedData.mSourceMap.begin(); it!=mMappedData.mSourceMap.end(); it++)
- {
- const am_Source_Database_s *pObject = &it->second;
- if( 0==pObject->reserved )
- cb(*pObject);
- }
- return E_OK;
+ for (auto it = mMappedData.mSourceMap.begin(); it != mMappedData.mSourceMap.end(); it++)
+ {
+ const am_Source_Database_s *pObject = &it->second;
+ if ( 0 == pObject->reserved )
+ {
+ cb(*pObject);
+ }
+ }
+
+ return E_OK;
}
-am_Error_e CAmDatabaseHandlerMap::enumerateSinks(std::function<void(const am_Sink_s & element)> cb) const
+am_Error_e CAmDatabaseHandlerMap::enumerateSinks(std::function<void(const am_Sink_s &element)> cb) const
{
- for(auto it = mMappedData.mSinkMap.begin(); it!=mMappedData.mSinkMap.end(); it++)
- {
- const am_Sink_Database_s *pObject = &it->second;
- if( 0==pObject->reserved )
- cb(*pObject);
- }
- return E_OK;
+ for (auto it = mMappedData.mSinkMap.begin(); it != mMappedData.mSinkMap.end(); it++)
+ {
+ const am_Sink_Database_s *pObject = &it->second;
+ if ( 0 == pObject->reserved )
+ {
+ cb(*pObject);
+ }
+ }
+
+ return E_OK;
}
-am_Error_e CAmDatabaseHandlerMap::enumerateGateways(std::function<void(const am_Gateway_s & element)> cb) const
+am_Error_e CAmDatabaseHandlerMap::enumerateGateways(std::function<void(const am_Gateway_s &element)> cb) const
{
- for(auto it = mMappedData.mGatewayMap.begin(); it!=mMappedData.mGatewayMap.end(); it++)
- {
- const am_Gateway_s *pObject = &it->second;
- cb(*pObject);
- }
- return E_OK;
+ for (auto it = mMappedData.mGatewayMap.begin(); it != mMappedData.mGatewayMap.end(); it++)
+ {
+ const am_Gateway_s *pObject = &it->second;
+ cb(*pObject);
+ }
+
+ return E_OK;
}
-am_Error_e CAmDatabaseHandlerMap::enumerateConverters(std::function<void(const am_Converter_s & element)> cb) const
+am_Error_e CAmDatabaseHandlerMap::enumerateConverters(std::function<void(const am_Converter_s &element)> cb) const
{
- for(auto it = mMappedData.mConverterMap.begin(); it!=mMappedData.mConverterMap.end(); it++)
- {
- const am_Converter_s *pObject = &it->second;
- cb(*pObject);
- }
- return E_OK;
+ for (auto it = mMappedData.mConverterMap.begin(); it != mMappedData.mConverterMap.end(); it++)
+ {
+ const am_Converter_s *pObject = &it->second;
+ cb(*pObject);
+ }
+
+ return E_OK;
}
-bool CAmDatabaseHandlerMap::registerObserver(IAmDatabaseObserver * iObserver) {
- assert(iObserver!=NULL);
- if (std::find(mDatabaseObservers.begin(), mDatabaseObservers.end(), iObserver) == mDatabaseObservers.end())
- {
- mDatabaseObservers.push_back(static_cast<AmDatabaseObserverCallbacks*>(iObserver));
- static_cast<AmDatabaseObserverCallbacks*>(iObserver)->mpDatabaseHandler = this;
- return true;
- }
- return false;
-}
-bool CAmDatabaseHandlerMap::unregisterObserver(IAmDatabaseObserver * iObserver) {
- assert(iObserver!=NULL);
- auto it = std::find(mDatabaseObservers.begin(), mDatabaseObservers.end(), iObserver);
- if (it != mDatabaseObservers.end()) {
- mDatabaseObservers.erase(it);
- static_cast<AmDatabaseObserverCallbacks*>(iObserver)->mpDatabaseHandler = nullptr;
- return true;
- }
- return false;
-}
-
-unsigned CAmDatabaseHandlerMap::countObservers() {
- return mDatabaseObservers.size();
+bool CAmDatabaseHandlerMap::registerObserver(IAmDatabaseObserver *iObserver)
+{
+ assert(iObserver != NULL);
+ if (std::find(mDatabaseObservers.begin(), mDatabaseObservers.end(), iObserver) == mDatabaseObservers.end())
+ {
+ mDatabaseObservers.push_back(static_cast<AmDatabaseObserverCallbacks *>(iObserver));
+ static_cast<AmDatabaseObserverCallbacks *>(iObserver)->mpDatabaseHandler = this;
+ return true;
+ }
+
+ return false;
+}
+
+bool CAmDatabaseHandlerMap::unregisterObserver(IAmDatabaseObserver *iObserver)
+{
+ assert(iObserver != NULL);
+ auto it = std::find(mDatabaseObservers.begin(), mDatabaseObservers.end(), iObserver);
+ if (it != mDatabaseObservers.end())
+ {
+ mDatabaseObservers.erase(it);
+ static_cast<AmDatabaseObserverCallbacks *>(iObserver)->mpDatabaseHandler = nullptr;
+ return true;
+ }
+
+ return false;
+}
+
+unsigned CAmDatabaseHandlerMap::countObservers()
+{
+ return mDatabaseObservers.size();
}
}
diff --git a/AudioManagerCore/src/CAmLog.cpp b/AudioManagerCore/src/CAmLog.cpp
index 5e58f27..6562eed 100644
--- a/AudioManagerCore/src/CAmLog.cpp
+++ b/AudioManagerCore/src/CAmLog.cpp
@@ -23,79 +23,84 @@
#include "CAmLog.h"
-
void CAmLog::CAmFileLogger::generateLogFilename(std::string &result)
{
- static uint32_t logFileID = 1;
- time_t rawtime;
- time (&rawtime);
+ static uint32_t logFileID = 1;
+ time_t rawtime;
+ time(&rawtime);
- std::ostringstream stream;
- stream << DEFAULT_LOG_FOLDER << DEFAULT_LOGFILE_PREFIX << logFileID << "_" << rawtime << DEFAULT_LOGFILE_EXT;
- logFileID++;
- result = stream.str();
+ std::ostringstream stream;
+ stream << DEFAULT_LOG_FOLDER << DEFAULT_LOGFILE_PREFIX << logFileID << "_" << rawtime << DEFAULT_LOGFILE_EXT;
+ logFileID++;
+ result = stream.str();
}
CAmLog::CAmFileLogger::~CAmFileLogger()
{
- if (mOutputStream)
- {
- std::ofstream* of = static_cast<std::ofstream*>(mOutputStream);
- of->close();
- DEL(mOutputStream);
- }
+ if (mOutputStream)
+ {
+ std::ofstream *of = static_cast<std::ofstream *>(mOutputStream);
+ of->close();
+ DEL(mOutputStream);
+ }
}
-CAmLog::CAmLog(const eCAmLogType type ):mLogType(type)
+CAmLog::CAmLog(const eCAmLogType type)
+ : mLogType(type)
{
- instantiateLogger(type);
+ instantiateLogger(type);
}
-CAmLog::CAmLog():mLogType(eCAmLogStdout)
+CAmLog::CAmLog()
+ : mLogType(eCAmLogStdout)
{
- instantiateLogger((const eCAmLogType)eCAmLogStdout);
+ instantiateLogger((const eCAmLogType)eCAmLogStdout);
}
CAmLog::~CAmLog()
{
- releaseLogger();
+ releaseLogger();
}
void CAmLog::releaseLogger()
{
- if(mLogger)
- DEL(mLogger);
+ if (mLogger)
+ {
+ DEL(mLogger);
+ }
}
-void CAmLog::instantiateLogger( const eCAmLogType type)
+void CAmLog::instantiateLogger(const eCAmLogType type)
{
- if( eCAmLogStdout == type )
- mLogger = new CAmStdOutLogger();
- else if( eCAmLogFile == type )
- {
- std::string filename("");
- CAmLog::CAmFileLogger::generateLogFilename(filename);
- mLogger = new CAmFileLogger(filename);
- }
+ if ( eCAmLogStdout == type )
+ {
+ mLogger = new CAmStdOutLogger();
+ }
+ else if ( eCAmLogFile == type )
+ {
+ std::string filename("");
+ CAmLog::CAmFileLogger::generateLogFilename(filename);
+ mLogger = new CAmFileLogger(filename);
+ }
}
CAmLog *CAmLog::getDefaultLog()
{
- static CAmLog theInstance;
- return &theInstance;
+ static CAmLog theInstance;
+ return &theInstance;
}
-void CAmLog::setLogType( const eCAmLogType type)
+void CAmLog::setLogType(const eCAmLogType type)
{
- if(mLogType!=type)
- {
- mLogType = type;
- releaseLogger();
- instantiateLogger(type);
- }
+ if (mLogType != type)
+ {
+ mLogType = type;
+ releaseLogger();
+ instantiateLogger(type);
+ }
}
eCAmLogType CAmLog::getLogType() const
{
- return mLogType;
+ return mLogType;
}
diff --git a/AudioManagerCore/src/CAmRouter.cpp b/AudioManagerCore/src/CAmRouter.cpp
index 3c9bee4..042916d 100644
--- a/AudioManagerCore/src/CAmRouter.cpp
+++ b/AudioManagerCore/src/CAmRouter.cpp
@@ -34,964 +34,1047 @@
namespace am
{
- template<class X> void getMergeConnectionFormats(const X * element, const am_CustomConnectionFormat_t connectionFormat,
- const std::vector<am_CustomConnectionFormat_t> & listConnectionFormats, std::vector<am_CustomConnectionFormat_t> & outListMergeConnectionFormats)
- {
- std::vector<am_CustomConnectionFormat_t> listRestrictedConnectionFormats;
- CAmRouter::getRestrictedOutputFormats(element->convertionMatrix, element->listSourceFormats, element->listSinkFormats, connectionFormat,
- listRestrictedConnectionFormats);
- std::sort(listRestrictedConnectionFormats.begin(), listRestrictedConnectionFormats.end()); //todo: this might be not needed if we use strictly sorted input
- std::insert_iterator<std::vector<am_CustomConnectionFormat_t> > inserter(outListMergeConnectionFormats, outListMergeConnectionFormats.begin());
- set_intersection(listConnectionFormats.begin(), listConnectionFormats.end(), listRestrictedConnectionFormats.begin(),
- listRestrictedConnectionFormats.end(), inserter);
- }
-
- CAmRouter::CAmRouter(IAmDatabaseHandler* iDatabaseHandler, CAmControlSender* iSender) :
- CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks(),
- mpDatabaseHandler(iDatabaseHandler),
- mpControlSender(iSender),
- mUpdateGraphNodesAction(true),
- mMaxAllowedCycles(MAX_ALLOWED_DOMAIN_CYCLES),
- mMaxPathCount(MAX_ROUTING_PATHS),
- mRoutingGraph(),
- mNodeListSources(),
- mNodeListSinks(),
- mNodeListGateways(),
- mNodeListConverters()
- {
- assert(mpDatabaseHandler);
- assert(mpControlSender);
-
- dboNewSink = [&](const am_Sink_s& sink)
- {
+template<class X>
+void getMergeConnectionFormats(const X *element, const am_CustomConnectionFormat_t connectionFormat,
+ const std::vector<am_CustomConnectionFormat_t> &listConnectionFormats, std::vector<am_CustomConnectionFormat_t> &outListMergeConnectionFormats)
+{
+ std::vector<am_CustomConnectionFormat_t> listRestrictedConnectionFormats;
+ CAmRouter::getRestrictedOutputFormats(element->convertionMatrix, element->listSourceFormats, element->listSinkFormats, connectionFormat,
+ listRestrictedConnectionFormats);
+ std::sort(listRestrictedConnectionFormats.begin(), listRestrictedConnectionFormats.end()); // todo: this might be not needed if we use strictly sorted input
+ std::insert_iterator<std::vector<am_CustomConnectionFormat_t> > inserter(outListMergeConnectionFormats, outListMergeConnectionFormats.begin());
+ set_intersection(listConnectionFormats.begin(), listConnectionFormats.end(), listRestrictedConnectionFormats.begin(),
+ listRestrictedConnectionFormats.end(), inserter);
+}
+
+CAmRouter::CAmRouter(IAmDatabaseHandler *iDatabaseHandler, CAmControlSender *iSender)
+ : CAmDatabaseHandlerMap::AmDatabaseObserverCallbacks()
+ , mpDatabaseHandler(iDatabaseHandler)
+ , mpControlSender(iSender)
+ , mUpdateGraphNodesAction(true)
+ , mMaxAllowedCycles(MAX_ALLOWED_DOMAIN_CYCLES)
+ , mMaxPathCount(MAX_ROUTING_PATHS)
+ , mRoutingGraph()
+ , mNodeListSources()
+ , mNodeListSinks()
+ , mNodeListGateways()
+ , mNodeListConverters()
+{
+ assert(mpDatabaseHandler);
+ assert(mpControlSender);
+
+ dboNewSink = [&](const am_Sink_s &sink){
mUpdateGraphNodesAction = true;
};
- dboNewSource = [&](const am_Source_s& source)
- {
- mUpdateGraphNodesAction=true;
+ dboNewSource = [&](const am_Source_s &source){
+ mUpdateGraphNodesAction = true;
};
- dboNewGateway = [&](const am_Gateway_s& gateway)
- {
- mUpdateGraphNodesAction=true;
+ dboNewGateway = [&](const am_Gateway_s &gateway){
+ mUpdateGraphNodesAction = true;
};
- dboNewConverter = [&](const am_Converter_s& coverter)
- {
- mUpdateGraphNodesAction=true;
+ dboNewConverter = [&](const am_Converter_s &coverter){
+ mUpdateGraphNodesAction = true;
};
- dboRemovedSink = [&](const am_sinkID_t sinkID, const bool visible)
- {
- mUpdateGraphNodesAction=true;
+ dboRemovedSink = [&](const am_sinkID_t sinkID, const bool visible){
+ mUpdateGraphNodesAction = true;
};
- dboRemovedSource = [&](const am_sourceID_t sourceID, const bool visible)
- {
- mUpdateGraphNodesAction=true;
+ dboRemovedSource = [&](const am_sourceID_t sourceID, const bool visible){
+ mUpdateGraphNodesAction = true;
};
- dboRemoveGateway = [&](const am_gatewayID_t gatewayID)
- {
- mUpdateGraphNodesAction=true;
+ dboRemoveGateway = [&](const am_gatewayID_t gatewayID){
+ mUpdateGraphNodesAction = true;
};
- dboRemoveConverter = [&](const am_converterID_t converterID)
- {
- mUpdateGraphNodesAction=true;
+ dboRemoveConverter = [&](const am_converterID_t converterID){
+ mUpdateGraphNodesAction = true;
};
- }
-
- CAmRouter::~CAmRouter()
- {
- }
+}
- /**
- * returns the best route between a source and a sink
- * @param onlyfree if true only free gateways are used
- * @param sourceID
- * @param sinkID
- * @param returnList this list contains a set of routes
- * @return E_OK in case of success
- */
- am_Error_e CAmRouter::getRoute(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector<am_Route_s> & returnList)
- {
- if (mUpdateGraphNodesAction)
- {
- load();
- mUpdateGraphNodesAction = false;
- }
- return getRouteFromLoadedNodes(onlyfree, sourceID, sinkID, returnList);
- }
+CAmRouter::~CAmRouter()
+{
+}
- am_Error_e CAmRouter::getRoute(const bool onlyfree, const am_Source_s & aSource, const am_Sink_s & aSink, std::vector<am_Route_s> & listRoutes)
+/**
+ * returns the best route between a source and a sink
+ * @param onlyfree if true only free gateways are used
+ * @param sourceID
+ * @param sinkID
+ * @param returnList this list contains a set of routes
+ * @return E_OK in case of success
+ */
+am_Error_e CAmRouter::getRoute(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector<am_Route_s> &returnList)
+{
+ if (mUpdateGraphNodesAction)
{
- return getRoute(onlyfree, aSource.sourceID, aSink.sinkID, listRoutes);
+ load();
+ mUpdateGraphNodesAction = false;
}
- am_Error_e CAmRouter::getRouteFromLoadedNodes(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID,
- std::vector<am_Route_s> & returnList)
- {
- returnList.clear();
-
- CAmRoutingNode* pRootSource = sourceNodeWithID(sourceID);
- CAmRoutingNode* pRootSink = sinkNodeWithID(sinkID);
+ return getRouteFromLoadedNodes(onlyfree, sourceID, sinkID, returnList);
+}
- if (!pRootSource || !pRootSink)
- return E_NON_EXISTENT;
+am_Error_e CAmRouter::getRoute(const bool onlyfree, const am_Source_s &aSource, const am_Sink_s &aSink, std::vector<am_Route_s> &listRoutes)
+{
+ return getRoute(onlyfree, aSource.sourceID, aSink.sinkID, listRoutes);
+}
- //try to find paths without cycles
- am_Error_e error = getFirstNShortestPaths(onlyfree, 0, mMaxPathCount, *pRootSource, *pRootSink, returnList);
+am_Error_e CAmRouter::getRouteFromLoadedNodes(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID,
+ std::vector<am_Route_s> &returnList)
+{
+ returnList.clear();
- //if no paths have been found, we start a second search with cycles.
- if (!returnList.size() && mMaxAllowedCycles > 0)
- {
- error = getFirstNShortestPaths(onlyfree, mMaxAllowedCycles, mMaxPathCount, *pRootSource, *pRootSink, returnList);
- }
+ CAmRoutingNode *pRootSource = sourceNodeWithID(sourceID);
+ CAmRoutingNode *pRootSink = sinkNodeWithID(sinkID);
- /* For shortest path use the following call:
- *
- * error = getShortestPath(*pRootSource, *pRootSink, listRoutes);
- */
- return error;
+ if (!pRootSource || !pRootSink)
+ {
+ return E_NON_EXISTENT;
}
- am_Error_e CAmRouter::getRouteFromLoadedNodes(const bool onlyfree, const am_Source_s & aSource, const am_Sink_s & aSink,
- std::vector<am_Route_s> & listRoutes)
+ // try to find paths without cycles
+ am_Error_e error = getFirstNShortestPaths(onlyfree, 0, mMaxPathCount, *pRootSource, *pRootSink, returnList);
+
+ // if no paths have been found, we start a second search with cycles.
+ if (!returnList.size() && mMaxAllowedCycles > 0)
{
- return getRouteFromLoadedNodes(onlyfree, aSource.sourceID, aSink.sinkID, listRoutes);
+ error = getFirstNShortestPaths(onlyfree, mMaxAllowedCycles, mMaxPathCount, *pRootSource, *pRootSink, returnList);
}
- void CAmRouter::load()
- {
- clear();
+ /* For shortest path use the following call:
+ *
+ * error = getShortestPath(*pRootSource, *pRootSink, listRoutes);
+ */
+ return error;
+}
- am_RoutingNodeData_s nodeDataSrc;
- nodeDataSrc.type = CAmNodeDataType::SOURCE;
- mpDatabaseHandler->enumerateSources([&](const am_Source_s & obj)
- {
- nodeDataSrc.data.source = (am_Source_s*)&obj;
+am_Error_e CAmRouter::getRouteFromLoadedNodes(const bool onlyfree, const am_Source_s &aSource, const am_Sink_s &aSink,
+ std::vector<am_Route_s> &listRoutes)
+{
+ return getRouteFromLoadedNodes(onlyfree, aSource.sourceID, aSink.sinkID, listRoutes);
+}
+
+void CAmRouter::load()
+{
+ clear();
+
+ am_RoutingNodeData_s nodeDataSrc;
+ nodeDataSrc.type = CAmNodeDataType::SOURCE;
+ mpDatabaseHandler->enumerateSources([&](const am_Source_s &obj){
+ nodeDataSrc.data.source = (am_Source_s *)&obj;
auto node = &mRoutingGraph.addNode(nodeDataSrc);
mNodeListSources[nodeDataSrc.data.source->domainID].push_back(node);
});
- am_RoutingNodeData_s nodeDataSink;
- nodeDataSink.type = CAmNodeDataType::SINK;
- mpDatabaseHandler->enumerateSinks([&](const am_Sink_s & obj)
- {
- nodeDataSink.data.sink = (am_Sink_s*)&obj;
+ am_RoutingNodeData_s nodeDataSink;
+ nodeDataSink.type = CAmNodeDataType::SINK;
+ mpDatabaseHandler->enumerateSinks([&](const am_Sink_s &obj){
+ nodeDataSink.data.sink = (am_Sink_s *)&obj;
auto node = &mRoutingGraph.addNode(nodeDataSink);
mNodeListSinks[nodeDataSink.data.sink->domainID].push_back(node);
});
- am_RoutingNodeData_s nodeDataGateway;
- nodeDataGateway.type = CAmNodeDataType::GATEWAY;
- mpDatabaseHandler->enumerateGateways([&](const am_Gateway_s & obj)
- {
- nodeDataGateway.data.gateway = (am_Gateway_s*)&obj;
+ am_RoutingNodeData_s nodeDataGateway;
+ nodeDataGateway.type = CAmNodeDataType::GATEWAY;
+ mpDatabaseHandler->enumerateGateways([&](const am_Gateway_s &obj){
+ nodeDataGateway.data.gateway = (am_Gateway_s *)&obj;
auto node = &mRoutingGraph.addNode(nodeDataGateway);
mNodeListGateways[nodeDataGateway.data.gateway->controlDomainID].push_back(node);
});
- am_RoutingNodeData_s nodeDataConverter;
- nodeDataConverter.type = CAmNodeDataType::CONVERTER;
- mpDatabaseHandler->enumerateConverters([&](const am_Converter_s & obj)
- {
- nodeDataConverter.data.converter = (am_Converter_s*)&obj;
+ am_RoutingNodeData_s nodeDataConverter;
+ nodeDataConverter.type = CAmNodeDataType::CONVERTER;
+ mpDatabaseHandler->enumerateConverters([&](const am_Converter_s &obj){
+ nodeDataConverter.data.converter = (am_Converter_s *)&obj;
auto node = &mRoutingGraph.addNode(nodeDataConverter);
mNodeListConverters[nodeDataConverter.data.converter->domainID].push_back(node);
});
- constructConverterConnections();
- constructGatewayConnections();
- constructSourceSinkConnections();
+ constructConverterConnections();
+ constructGatewayConnections();
+ constructSourceSinkConnections();
#ifdef TRACE_GRAPH
- mRoutingGraph.trace([&](const CAmRoutingNode & node, const std::vector<CAmVertex<am_RoutingNodeData_s,uint16_t>*> & list)
- {
- std::cout << "Node " << node.getIndex() << ":";
- ((CAmRoutingNode &)node).getData().trace();
- std::cout << "-->[";
- int count = 0;
- std::for_each(list.begin(), list.end(), [&](const CAmVertex<am_RoutingNodeData_s,uint16_t>* refVertex)
- {
- am::CAmNode<am::am_RoutingNodeData_s>* data = refVertex->getNode();
- if(count>0)
- std::cout << ", ";
- std::cout << "Node " << data->getIndex() << ":";
- data->getData().trace();
- count++;
- });
- std::cout << "]" << std::endl;
+ mRoutingGraph.trace([&](const CAmRoutingNode &node, const std::vector<CAmVertex<am_RoutingNodeData_s, uint16_t> *> &list){
+ std::cout << "Node " << node.getIndex() << ":";
+ ((CAmRoutingNode &)node).getData().trace();
+ std::cout << "-->[";
+ int count = 0;
+ std::for_each(list.begin(), list.end(), [&](const CAmVertex<am_RoutingNodeData_s, uint16_t> *refVertex){
+ am::CAmNode<am::am_RoutingNodeData_s> *data = refVertex->getNode();
+ if (count > 0)
+ {
+ std::cout << ", ";
+ }
+
+ std::cout << "Node " << data->getIndex() << ":";
+ data->getData().trace();
+ count++;
});
-#endif
+ std::cout << "]" << std::endl;
+ });
+#endif // ifdef TRACE_GRAPH
- }
+}
- void CAmRouter::clear()
- {
- mRoutingGraph.clear();
- mNodeListSources.clear();
- mNodeListSinks.clear();
- mNodeListGateways.clear();
- mNodeListConverters.clear();
- }
+void CAmRouter::clear()
+{
+ mRoutingGraph.clear();
+ mNodeListSources.clear();
+ mNodeListSinks.clear();
+ mNodeListGateways.clear();
+ mNodeListConverters.clear();
+}
- CAmRoutingNode* CAmRouter::sinkNodeWithID(const am_sinkID_t sinkID)
+CAmRoutingNode *CAmRouter::sinkNodeWithID(const am_sinkID_t sinkID)
+{
+ CAmRoutingNode *result = NULL;
+ for (auto it = mNodeListSinks.begin(); it != mNodeListSinks.end(); it++)
{
- CAmRoutingNode* result = NULL;
- for (auto it = mNodeListSinks.begin(); it != mNodeListSinks.end(); it++)
+ result = sinkNodeWithID(sinkID, it->first);
+ if (result)
{
- result = sinkNodeWithID(sinkID, it->first);
- if (result)
- return result;
+ return result;
}
- return result;
}
- CAmRoutingNode* CAmRouter::sinkNodeWithID(const am_sinkID_t sinkID, const am_domainID_t domainID)
+ return result;
+}
+
+CAmRoutingNode *CAmRouter::sinkNodeWithID(const am_sinkID_t sinkID, const am_domainID_t domainID)
+{
+ CAmRoutingNode *result = NULL;
+ std::vector<CAmRoutingNode *> &value = mNodeListSinks[domainID];
+ auto iter = std::find_if(value.begin(), value.end(), [sinkID](CAmRoutingNode *node){
+ return node->getData().data.sink->sinkID == sinkID;
+ });
+ if (iter != value.end())
{
- CAmRoutingNode* result = NULL;
- std::vector<CAmRoutingNode*> & value = mNodeListSinks[domainID];
- auto iter = std::find_if(value.begin(), value.end(), [sinkID](CAmRoutingNode* node)
- {
- return node->getData().data.sink->sinkID==sinkID;
- });
- if (iter != value.end())
- result = *iter;
- return result;
+ result = *iter;
}
- CAmRoutingNode* CAmRouter::sourceNodeWithID(const am_sourceID_t sourceID)
+ return result;
+}
+
+CAmRoutingNode *CAmRouter::sourceNodeWithID(const am_sourceID_t sourceID)
+{
+ CAmRoutingNode *result = NULL;
+ for (auto it = mNodeListSources.begin(); it != mNodeListSources.end(); it++)
{
- CAmRoutingNode* result = NULL;
- for (auto it = mNodeListSources.begin(); it != mNodeListSources.end(); it++)
+ result = sourceNodeWithID(sourceID, it->first);
+ if (result)
{
- result = sourceNodeWithID(sourceID, it->first);
- if (result)
- return result;
+ return result;
}
- return result;
}
- CAmRoutingNode* CAmRouter::sourceNodeWithID(const am_sourceID_t sourceID, const am_domainID_t domainID)
+ return result;
+}
+
+CAmRoutingNode *CAmRouter::sourceNodeWithID(const am_sourceID_t sourceID, const am_domainID_t domainID)
+{
+ CAmRoutingNode *result = NULL;
+ std::vector<CAmRoutingNode *> &value = mNodeListSources[domainID];
+ auto iter = std::find_if(value.begin(), value.end(), [sourceID](CAmRoutingNode *node){
+ return node->getData().data.source->sourceID == sourceID;
+ });
+ if (iter != value.end())
{
- CAmRoutingNode* result = NULL;
- std::vector<CAmRoutingNode*> & value = mNodeListSources[domainID];
- auto iter = std::find_if(value.begin(), value.end(), [sourceID](CAmRoutingNode* node)
- {
- return node->getData().data.source->sourceID==sourceID;
- });
- if (iter != value.end())
- result = *iter;
- return result;
+ result = *iter;
}
- CAmRoutingNode* CAmRouter::converterNodeWithSinkID(const am_sinkID_t sinkID, const am_domainID_t domainID)
+ return result;
+}
+
+CAmRoutingNode *CAmRouter::converterNodeWithSinkID(const am_sinkID_t sinkID, const am_domainID_t domainID)
+{
+ CAmRoutingNode *result = NULL;
+ std::vector<CAmRoutingNode *> &value = mNodeListConverters[domainID];
+ auto iter = std::find_if(value.begin(), value.end(), [sinkID](CAmRoutingNode *node){
+ return node->getData().data.converter->sinkID == sinkID;
+ });
+ if (iter != value.end())
{
- CAmRoutingNode* result = NULL;
- std::vector<CAmRoutingNode*> & value = mNodeListConverters[domainID];
- auto iter = std::find_if(value.begin(), value.end(), [sinkID](CAmRoutingNode* node)
- {
- return node->getData().data.converter->sinkID==sinkID;
- });
- if (iter != value.end())
- result = *iter;
- return result;
+ result = *iter;
}
- CAmRoutingNode* CAmRouter::gatewayNodeWithSinkID(const am_sinkID_t sinkID)
+ return result;
+}
+
+CAmRoutingNode *CAmRouter::gatewayNodeWithSinkID(const am_sinkID_t sinkID)
+{
+ for (auto it = mNodeListGateways.begin(); it != mNodeListGateways.end(); it++)
{
- for (auto it = mNodeListGateways.begin(); it != mNodeListGateways.end(); it++)
+ std::vector<CAmRoutingNode *> &value = it->second;
+ auto iter = std::find_if(value.begin(), value.end(), [sinkID](CAmRoutingNode *node){
+ return node->getData().data.gateway->sinkID == sinkID;
+ });
+ if (iter != value.end())
{
- std::vector<CAmRoutingNode*> & value = it->second;
- auto iter = std::find_if(value.begin(), value.end(), [sinkID](CAmRoutingNode* node)
- {
- return node->getData().data.gateway->sinkID==sinkID;
- });
- if (iter != value.end())
- return *iter;
+ return *iter;
}
- return NULL;
}
- void CAmRouter::constructSourceSinkConnections()
+ return NULL;
+}
+
+void CAmRouter::constructSourceSinkConnections()
+{
+ std::vector<am_CustomConnectionFormat_t> intersection;
+ for (auto itSrc = mNodeListSources.begin(); itSrc != mNodeListSources.end(); itSrc++)
{
- std::vector<am_CustomConnectionFormat_t> intersection;
- for (auto itSrc = mNodeListSources.begin(); itSrc != mNodeListSources.end(); itSrc++)
+ for (auto it = itSrc->second.begin(); it != itSrc->second.end(); it++)
{
- for (auto it = itSrc->second.begin(); it != itSrc->second.end(); it++)
+ CAmRoutingNode *srcNode = *it;
+ am_RoutingNodeData_s &srcNodeData = srcNode->getData();
+ am_Source_s *source = srcNodeData.data.source;
+ for (auto itSink = mNodeListSinks[itSrc->first].begin(); itSink != mNodeListSinks[itSrc->first].end(); itSink++)
{
- CAmRoutingNode* srcNode = *it;
- am_RoutingNodeData_s & srcNodeData = srcNode->getData();
- am_Source_s * source = srcNodeData.data.source;
- for (auto itSink = mNodeListSinks[itSrc->first].begin(); itSink != mNodeListSinks[itSrc->first].end(); itSink++)
+ CAmRoutingNode *sinkNode = *itSink;
+ am_RoutingNodeData_s &sinkNodeData = sinkNode->getData();
+ am_Sink_s *sink = sinkNodeData.data.sink;
+
+ intersection.clear();
+ // Check whether the hidden sink formats match the source formats...
+ listPossibleConnectionFormats(source->listConnectionFormats, sink->listConnectionFormats, intersection);
+ if (intersection.size() > 0) // OK match source -> sink
{
- CAmRoutingNode* sinkNode = *itSink;
- am_RoutingNodeData_s & sinkNodeData = sinkNode->getData();
- am_Sink_s * sink = sinkNodeData.data.sink;
-
- intersection.clear();
- //Check whether the hidden sink formats match the source formats...
- listPossibleConnectionFormats(source->listConnectionFormats, sink->listConnectionFormats, intersection);
- if (intersection.size() > 0) //OK match source -> sink
- {
- mRoutingGraph.connectNodes(*srcNode, *sinkNode, CF_UNKNOWN, 1);
- }
+ mRoutingGraph.connectNodes(*srcNode, *sinkNode, CF_UNKNOWN, 1);
}
}
}
}
+}
- void CAmRouter::constructGatewayConnections()
+void CAmRouter::constructGatewayConnections()
+{
+ std::vector<am_CustomConnectionFormat_t> sourceFormats, sinkFormats;
+ for (auto iter = mNodeListGateways.begin(); iter != mNodeListGateways.end(); iter++)
{
- std::vector<am_CustomConnectionFormat_t> sourceFormats, sinkFormats;
- for (auto iter = mNodeListGateways.begin(); iter != mNodeListGateways.end(); iter++)
+ for (auto it = iter->second.begin(); it != iter->second.end(); it++)
{
- for (auto it = iter->second.begin(); it != iter->second.end(); it++)
+ CAmRoutingNode *gatewayNode = *it;
+ am_RoutingNodeData_s &gatewayNodeData = gatewayNode->getData();
+ am_Gateway_s *gateway = gatewayNodeData.data.gateway;
+ // Get only gateways with end point in current source domain
+
+ // Get the sink connected to the gateway...
+ CAmRoutingNode *gatewaySinkNode = this->sinkNodeWithID(gateway->sinkID, gateway->domainSinkID);
+ if (gatewaySinkNode)
{
- CAmRoutingNode* gatewayNode = *it;
- am_RoutingNodeData_s & gatewayNodeData = gatewayNode->getData();
- am_Gateway_s * gateway = gatewayNodeData.data.gateway;
- //Get only gateways with end point in current source domain
-
- //Get the sink connected to the gateway...
- CAmRoutingNode *gatewaySinkNode = this->sinkNodeWithID(gateway->sinkID, gateway->domainSinkID);
- if (gatewaySinkNode)
+ am_RoutingNodeData_s &gatewaySinkData = gatewaySinkNode->getData();
+ // Check whether the hidden sink formats match the source formats...
+ sourceFormats.clear();
+ sinkFormats.clear();
+ if (getAllowedFormatsFromConvMatrix(gateway->convertionMatrix, gateway->listSourceFormats, gateway->listSinkFormats, sourceFormats,
+ sinkFormats))
{
- am_RoutingNodeData_s & gatewaySinkData = gatewaySinkNode->getData();
- //Check whether the hidden sink formats match the source formats...
- sourceFormats.clear();
- sinkFormats.clear();
- if (getAllowedFormatsFromConvMatrix(gateway->convertionMatrix, gateway->listSourceFormats, gateway->listSinkFormats, sourceFormats,
- sinkFormats))
+ CAmRoutingNode *gatewaySourceNode = this->sourceNodeWithID(gateway->sourceID, gateway->domainSourceID);
+ if (gatewaySourceNode)
{
- CAmRoutingNode *gatewaySourceNode = this->sourceNodeWithID(gateway->sourceID, gateway->domainSourceID);
- if (gatewaySourceNode)
- {
- //Connections hidden_sink->gateway->hidden_source
- mRoutingGraph.connectNodes(*gatewaySinkNode, *gatewayNode, CF_UNKNOWN, 1);
- mRoutingGraph.connectNodes(*gatewayNode, *gatewaySourceNode, CF_UNKNOWN, 1);
- }
+ // Connections hidden_sink->gateway->hidden_source
+ mRoutingGraph.connectNodes(*gatewaySinkNode, *gatewayNode, CF_UNKNOWN, 1);
+ mRoutingGraph.connectNodes(*gatewayNode, *gatewaySourceNode, CF_UNKNOWN, 1);
}
}
}
}
}
+}
- void CAmRouter::constructConverterConnections()
- {
- std::vector<am_CustomConnectionFormat_t> sourceFormats, sinkFormats;
+void CAmRouter::constructConverterConnections()
+{
+ std::vector<am_CustomConnectionFormat_t> sourceFormats, sinkFormats;
- for (auto iter = mNodeListConverters.begin(); iter != mNodeListConverters.end(); iter++)
+ for (auto iter = mNodeListConverters.begin(); iter != mNodeListConverters.end(); iter++)
+ {
+ for (auto it = iter->second.begin(); it != iter->second.end(); it++)
{
- for (auto it = iter->second.begin(); it != iter->second.end(); it++)
+ CAmRoutingNode *converterNode = *it;
+ am_RoutingNodeData_s &converterNodeData = converterNode->getData();
+ am_Converter_s *converter = converterNodeData.data.converter;
+ // Get only converters with end point in current source domain
+
+ // Get the sink connected to the converter...
+ CAmRoutingNode *converterSinkNode = this->sinkNodeWithID(converter->sinkID, converter->domainID);
+ if (converterSinkNode)
{
- CAmRoutingNode* converterNode = *it;
- am_RoutingNodeData_s & converterNodeData = converterNode->getData();
- am_Converter_s * converter = converterNodeData.data.converter;
- //Get only converters with end point in current source domain
-
- //Get the sink connected to the converter...
- CAmRoutingNode *converterSinkNode = this->sinkNodeWithID(converter->sinkID, converter->domainID);
- if (converterSinkNode)
+ am_RoutingNodeData_s &converterSinkData = converterSinkNode->getData();
+ // Check whether the hidden sink formats match the source formats...
+ sourceFormats.clear();
+ sinkFormats.clear();
+ if (getAllowedFormatsFromConvMatrix(converter->convertionMatrix, converter->listSourceFormats, converter->listSinkFormats, sourceFormats,
+ sinkFormats))
{
- am_RoutingNodeData_s & converterSinkData = converterSinkNode->getData();
- //Check whether the hidden sink formats match the source formats...
- sourceFormats.clear();
- sinkFormats.clear();
- if (getAllowedFormatsFromConvMatrix(converter->convertionMatrix, converter->listSourceFormats, converter->listSinkFormats, sourceFormats,
- sinkFormats))
+ CAmRoutingNode *converterSourceNode = this->sourceNodeWithID(converter->sourceID, converter->domainID);
+ if (converterSourceNode)
{
- CAmRoutingNode *converterSourceNode = this->sourceNodeWithID(converter->sourceID, converter->domainID);
- if (converterSourceNode)
- {
- //Connections hidden_sink->converter->hidden_source
- mRoutingGraph.connectNodes(*converterSinkNode, *converterNode, CF_UNKNOWN, 1);
- mRoutingGraph.connectNodes(*converterNode, *converterSourceNode, CF_UNKNOWN, 1);
- }
+ // Connections hidden_sink->converter->hidden_source
+ mRoutingGraph.connectNodes(*converterSinkNode, *converterNode, CF_UNKNOWN, 1);
+ mRoutingGraph.connectNodes(*converterNode, *converterSourceNode, CF_UNKNOWN, 1);
}
}
}
}
}
+}
- void CAmRouter::getVerticesForSource(const CAmRoutingNode & node, CAmRoutingListVertices & list)
+void CAmRouter::getVerticesForSource(const CAmRoutingNode &node, CAmRoutingListVertices &list)
+{
+ am_RoutingNodeData_s &srcNodeData = ((CAmRoutingNode *)&node)->getData();
+ std::vector<am_CustomConnectionFormat_t> intersection;
+ am_Source_s *source = srcNodeData.data.source;
+ std::vector<CAmRoutingNode *> &sinks = mNodeListSinks[source->domainID];
+ for (auto itSink = sinks.begin(); itSink != sinks.end(); itSink++)
{
- am_RoutingNodeData_s & srcNodeData = ((CAmRoutingNode*) &node)->getData();
- std::vector<am_CustomConnectionFormat_t> intersection;
- am_Source_s * source = srcNodeData.data.source;
- std::vector<CAmRoutingNode*> & sinks = mNodeListSinks[source->domainID];
- for (auto itSink = sinks.begin(); itSink != sinks.end(); itSink++)
+ CAmRoutingNode *sinkNode = *itSink;
+ am_RoutingNodeData_s &sinkNodeData = sinkNode->getData();
+ am_Sink_s *sink = sinkNodeData.data.sink;
+
+ intersection.clear();
+ // Check whether the hidden sink formats match the source formats...
+ listPossibleConnectionFormats(source->listConnectionFormats, sink->listConnectionFormats, intersection);
+ if (intersection.size() > 0) // OK match source -> sink
{
- CAmRoutingNode* sinkNode = *itSink;
- am_RoutingNodeData_s & sinkNodeData = sinkNode->getData();
- am_Sink_s * sink = sinkNodeData.data.sink;
-
- intersection.clear();
- //Check whether the hidden sink formats match the source formats...
- listPossibleConnectionFormats(source->listConnectionFormats, sink->listConnectionFormats, intersection);
- if (intersection.size() > 0) //OK match source -> sink
- {
- list.emplace_back(sinkNode, CF_UNKNOWN, 1);
- }
+ list.emplace_back(sinkNode, CF_UNKNOWN, 1);
}
}
+}
- void CAmRouter::getVerticesForSink(const CAmRoutingNode & node, CAmRoutingListVertices & list)
+void CAmRouter::getVerticesForSink(const CAmRoutingNode &node, CAmRoutingListVertices &list)
+{
+ am_RoutingNodeData_s &sinkNodeData = ((CAmRoutingNode *)&node)->getData();
+ std::vector<am_CustomConnectionFormat_t> intersection;
+ am_Sink_s *sink = sinkNodeData.data.sink;
+
+ CAmRoutingNode *converterNode = converterNodeWithSinkID(sink->sinkID, sink->domainID);
+ if (converterNode)
{
- am_RoutingNodeData_s & sinkNodeData = ((CAmRoutingNode*) &node)->getData();
- std::vector<am_CustomConnectionFormat_t> intersection;
- am_Sink_s * sink = sinkNodeData.data.sink;
+ std::vector<am_CustomConnectionFormat_t> sourceFormats, sinkFormats;
+ am_RoutingNodeData_s &converterData = converterNode->getData();
+ am_Converter_s *converter = converterData.data.converter;
- CAmRoutingNode *converterNode = converterNodeWithSinkID(sink->sinkID, sink->domainID);
- if (converterNode)
+ if (getAllowedFormatsFromConvMatrix(converter->convertionMatrix, converter->listSourceFormats, converter->listSinkFormats, sourceFormats,
+ sinkFormats))
{
- std::vector<am_CustomConnectionFormat_t> sourceFormats, sinkFormats;
- am_RoutingNodeData_s & converterData = converterNode->getData();
- am_Converter_s * converter = converterData.data.converter;
-
- if (getAllowedFormatsFromConvMatrix(converter->convertionMatrix, converter->listSourceFormats, converter->listSinkFormats, sourceFormats,
- sinkFormats))
- list.emplace_back(converterNode, CF_UNKNOWN, 1);
+ list.emplace_back(converterNode, CF_UNKNOWN, 1);
}
- else
+ }
+ else
+ {
+ std::vector<am_CustomConnectionFormat_t> sourceFormats, sinkFormats;
+ CAmRoutingNode *gatewayNode = gatewayNodeWithSinkID(sink->sinkID);
+ if (gatewayNode)
{
std::vector<am_CustomConnectionFormat_t> sourceFormats, sinkFormats;
- CAmRoutingNode *gatewayNode = gatewayNodeWithSinkID(sink->sinkID);
- if (gatewayNode)
- {
- std::vector<am_CustomConnectionFormat_t> sourceFormats, sinkFormats;
- am_RoutingNodeData_s & gatewayData = gatewayNode->getData();
- am_Gateway_s * gateway = gatewayData.data.gateway;
+ am_RoutingNodeData_s &gatewayData = gatewayNode->getData();
+ am_Gateway_s *gateway = gatewayData.data.gateway;
- if (getAllowedFormatsFromConvMatrix(gateway->convertionMatrix, gateway->listSourceFormats, gateway->listSinkFormats, sourceFormats,
- sinkFormats))
- list.emplace_back(gatewayNode, CF_UNKNOWN, 1);
+ if (getAllowedFormatsFromConvMatrix(gateway->convertionMatrix, gateway->listSourceFormats, gateway->listSinkFormats, sourceFormats,
+ sinkFormats))
+ {
+ list.emplace_back(gatewayNode, CF_UNKNOWN, 1);
}
}
-
}
+}
- void CAmRouter::getVerticesForConverter(const CAmRoutingNode & node, CAmRoutingListVertices & list)
+void CAmRouter::getVerticesForConverter(const CAmRoutingNode &node, CAmRoutingListVertices &list)
+{
+ std::vector<am_CustomConnectionFormat_t> sourceFormats, sinkFormats;
+ am_RoutingNodeData_s &converterNodeData = ((CAmRoutingNode *)&node)->getData();
+ am_Converter_s *converter = converterNodeData.data.converter;
+ // Get only converters with end point in current source domain
+ if (getAllowedFormatsFromConvMatrix(converter->convertionMatrix, converter->listSourceFormats, converter->listSinkFormats, sourceFormats, sinkFormats))
{
- std::vector<am_CustomConnectionFormat_t> sourceFormats, sinkFormats;
- am_RoutingNodeData_s & converterNodeData = ((CAmRoutingNode*) &node)->getData();
- am_Converter_s * converter = converterNodeData.data.converter;
- //Get only converters with end point in current source domain
- if (getAllowedFormatsFromConvMatrix(converter->convertionMatrix, converter->listSourceFormats, converter->listSinkFormats, sourceFormats, sinkFormats))
+ CAmRoutingNode *converterSourceNode = this->sourceNodeWithID(converter->sourceID, converter->domainID);
+ if (converterSourceNode)
{
- CAmRoutingNode *converterSourceNode = this->sourceNodeWithID(converter->sourceID, converter->domainID);
- if (converterSourceNode)
- {
- list.emplace_back(converterSourceNode, CF_UNKNOWN, 1);
- }
+ list.emplace_back(converterSourceNode, CF_UNKNOWN, 1);
}
}
+}
- void CAmRouter::getVerticesForGateway(const CAmRoutingNode & node, CAmRoutingListVertices & list)
+void CAmRouter::getVerticesForGateway(const CAmRoutingNode &node, CAmRoutingListVertices &list)
+{
+ am_RoutingNodeData_s &gatewayNodeData = ((CAmRoutingNode *)&node)->getData();
+ std::vector<am_CustomConnectionFormat_t> sourceFormats, sinkFormats;
+ am_Gateway_s *gateway = gatewayNodeData.data.gateway;
+ if (getAllowedFormatsFromConvMatrix(gateway->convertionMatrix, gateway->listSourceFormats, gateway->listSinkFormats, sourceFormats, sinkFormats))
{
- am_RoutingNodeData_s & gatewayNodeData = ((CAmRoutingNode*) &node)->getData();
- std::vector<am_CustomConnectionFormat_t> sourceFormats, sinkFormats;
- am_Gateway_s * gateway = gatewayNodeData.data.gateway;
- if (getAllowedFormatsFromConvMatrix(gateway->convertionMatrix, gateway->listSourceFormats, gateway->listSinkFormats, sourceFormats, sinkFormats))
+ CAmRoutingNode *gatewaySourceNode = this->sourceNodeWithID(gateway->sourceID, gateway->domainSourceID);
+ if (gatewaySourceNode)
{
- CAmRoutingNode *gatewaySourceNode = this->sourceNodeWithID(gateway->sourceID, gateway->domainSourceID);
- if (gatewaySourceNode)
- {
- //Connections hidden_sink->gateway->hidden_source
- list.emplace_back(gatewaySourceNode, CF_UNKNOWN, 1);
- }
+ // Connections hidden_sink->gateway->hidden_source
+ list.emplace_back(gatewaySourceNode, CF_UNKNOWN, 1);
}
}
+}
- void CAmRouter::getVerticesForNode(const CAmRoutingNode & node, CAmRoutingListVertices & list)
+void CAmRouter::getVerticesForNode(const CAmRoutingNode &node, CAmRoutingListVertices &list)
+{
+ am_RoutingNodeData_s &nodeData = ((CAmRoutingNode *)&node)->getData();
+ if (nodeData.type == CAmNodeDataType::SOURCE)
{
- am_RoutingNodeData_s & nodeData = ((CAmRoutingNode*) &node)->getData();
- if (nodeData.type == CAmNodeDataType::SOURCE)
+ getVerticesForSource(node, list);
+ }
+ else if (nodeData.type == CAmNodeDataType::SINK)
+ {
+ getVerticesForSink(node, list);
+ }
+ else if (nodeData.type == CAmNodeDataType::CONVERTER)
+ {
+ getVerticesForConverter(node, list);
+ }
+ else if (nodeData.type == CAmNodeDataType::GATEWAY)
+ {
+ getVerticesForGateway(node, list);
+ }
+}
+
+am_Error_e CAmRouter::determineConnectionFormatsForPath(am_Route_s &routeObjects, std::vector<CAmRoutingNode *> &nodes, std::vector<am_Route_s> &result)
+{
+ std::vector<am_RoutingElement_s>::iterator routingElementIterator = routeObjects.route.begin();
+ std::vector<CAmRoutingNode *>::iterator nodeIterator = nodes.begin();
+ if (routingElementIterator != routeObjects.route.end() && nodeIterator != nodes.end())
+ {
+ return doConnectionFormatsForPath(routeObjects, nodes, routingElementIterator, nodeIterator, result);
+ }
+
+ return E_OK;
+}
+
+am_Error_e CAmRouter::doConnectionFormatsForPath(am_Route_s &routeObjects, std::vector<CAmRoutingNode *> &nodes,
+ std::vector<am_RoutingElement_s>::iterator routingElementIterator, std::vector<CAmRoutingNode *>::iterator nodeIterator,
+ std::vector<am_Route_s> &result)
+{
+ am_Error_e returnError = E_NOT_POSSIBLE;
+ std::vector<am_CustomConnectionFormat_t> listConnectionFormats;
+ std::vector<am_CustomConnectionFormat_t> listMergeConnectionFormats;
+
+ std::vector<CAmRoutingNode *>::iterator currentNodeIterator = nodeIterator;
+ std::vector<am_RoutingElement_s>::iterator currentRoutingElementIterator = routingElementIterator;
+
+ if (currentRoutingElementIterator != routeObjects.route.begin())
+ {
+ std::vector<am_CustomConnectionFormat_t> listConnectionFormats;
+ std::vector<am_RoutingElement_s>::iterator tempIterator = (currentRoutingElementIterator - 1);
+ CAmRoutingNode *currentNode = *currentNodeIterator;
+ if ((returnError = getSourceSinkPossibleConnectionFormats(currentNodeIterator + 1, currentNodeIterator + 2, listConnectionFormats)) != E_OK)
{
- getVerticesForSource(node, list);
+ return returnError;
}
- else if (nodeData.type == CAmNodeDataType::SINK)
+
+ if (currentNode->getData().type == CAmNodeDataType::GATEWAY)
{
- getVerticesForSink(node, list);
+ am_Gateway_s *gateway = currentNode->getData().data.gateway;
+ getMergeConnectionFormats(gateway, tempIterator->connectionFormat, listConnectionFormats, listMergeConnectionFormats);
}
- else if (nodeData.type == CAmNodeDataType::CONVERTER)
+ else if (currentNode->getData().type == CAmNodeDataType::CONVERTER)
{
- getVerticesForConverter(node, list);
+ am_Converter_s *converter = currentNode->getData().data.converter;
+ getMergeConnectionFormats(converter, tempIterator->connectionFormat, listConnectionFormats, listMergeConnectionFormats);
}
- else if (nodeData.type == CAmNodeDataType::GATEWAY)
+ else
{
- getVerticesForGateway(node, list);
+ return (E_UNKNOWN);
}
- }
- am_Error_e CAmRouter::determineConnectionFormatsForPath(am_Route_s & routeObjects, std::vector<CAmRoutingNode*> & nodes, std::vector<am_Route_s> & result)
- {
- std::vector<am_RoutingElement_s>::iterator routingElementIterator = routeObjects.route.begin();
- std::vector<CAmRoutingNode*>::iterator nodeIterator = nodes.begin();
- if (routingElementIterator != routeObjects.route.end() && nodeIterator != nodes.end())
- return doConnectionFormatsForPath(routeObjects, nodes, routingElementIterator, nodeIterator, result);
- return E_OK;
+ currentNodeIterator += 3;
}
-
- am_Error_e CAmRouter::doConnectionFormatsForPath(am_Route_s & routeObjects, std::vector<CAmRoutingNode*> & nodes,
- std::vector<am_RoutingElement_s>::iterator routingElementIterator, std::vector<CAmRoutingNode*>::iterator nodeIterator,
- std::vector<am_Route_s> & result)
+ else
{
- am_Error_e returnError = E_NOT_POSSIBLE;
- std::vector<am_CustomConnectionFormat_t> listConnectionFormats;
- std::vector<am_CustomConnectionFormat_t> listMergeConnectionFormats;
+ CAmRoutingNode *currentNode = *currentNodeIterator;
+ if (currentNode->getData().type != CAmNodeDataType::SOURCE)
+ {
+ return (E_UNKNOWN);
+ }
- std::vector<CAmRoutingNode*>::iterator currentNodeIterator = nodeIterator;
- std::vector<am_RoutingElement_s>::iterator currentRoutingElementIterator = routingElementIterator;
+ currentNodeIterator++;
- if (currentRoutingElementIterator != routeObjects.route.begin())
+ if (currentNodeIterator == nodes.end())
{
- std::vector<am_CustomConnectionFormat_t> listConnectionFormats;
- std::vector<am_RoutingElement_s>::iterator tempIterator = (currentRoutingElementIterator - 1);
- CAmRoutingNode * currentNode = *currentNodeIterator;
- if ((returnError = getSourceSinkPossibleConnectionFormats(currentNodeIterator + 1, currentNodeIterator + 2, listConnectionFormats)) != E_OK)
- return returnError;
-
- if (currentNode->getData().type == CAmNodeDataType::GATEWAY)
- {
- am_Gateway_s *gateway = currentNode->getData().data.gateway;
- getMergeConnectionFormats(gateway, tempIterator->connectionFormat, listConnectionFormats, listMergeConnectionFormats);
- }
- else if (currentNode->getData().type == CAmNodeDataType::CONVERTER)
- {
- am_Converter_s *converter = currentNode->getData().data.converter;
- getMergeConnectionFormats(converter, tempIterator->connectionFormat, listConnectionFormats, listMergeConnectionFormats);
- }
- else
- return (E_UNKNOWN);
- currentNodeIterator += 3;
+ return (E_UNKNOWN);
}
- else
+
+ CAmRoutingNode *nodeSink = *currentNodeIterator;
+ if (nodeSink->getData().type != CAmNodeDataType::SINK)
{
- CAmRoutingNode * currentNode = *currentNodeIterator;
- if (currentNode->getData().type != CAmNodeDataType::SOURCE)
- return (E_UNKNOWN);
- currentNodeIterator++;
-
- if (currentNodeIterator == nodes.end())
- return (E_UNKNOWN);
-
- CAmRoutingNode * nodeSink = *currentNodeIterator;
- if (nodeSink->getData().type != CAmNodeDataType::SINK)
- return (E_UNKNOWN);
-
- am_Source_s *source = currentNode->getData().data.source;
- am_Sink_s *sink = nodeSink->getData().data.sink;
- listPossibleConnectionFormats(source->listConnectionFormats, sink->listConnectionFormats, listMergeConnectionFormats);
- currentNodeIterator += 1; //now we are on the next converter/gateway
+ return (E_UNKNOWN);
}
- //let the controller decide:
- std::vector<am_CustomConnectionFormat_t> listPriorityConnectionFormats;
- if ((returnError = mpControlSender->getConnectionFormatChoice(currentRoutingElementIterator->sourceID, currentRoutingElementIterator->sinkID,
- routeObjects, listMergeConnectionFormats, listPriorityConnectionFormats)) != E_OK)
- return (returnError);
-
- if (listPriorityConnectionFormats.empty())
- return (E_NOT_POSSIBLE);
- //we have the list sorted after priors - now we try one after the other with the next part of the route
- std::vector<am_CustomConnectionFormat_t>::iterator connectionFormatIterator = listPriorityConnectionFormats.begin();
- //here we need to check if we are at the end and stop
- std::vector<am_RoutingElement_s>::iterator nextIterator = currentRoutingElementIterator + 1; //next pair source and sink
- if (nextIterator == routeObjects.route.end())
+
+ am_Source_s *source = currentNode->getData().data.source;
+ am_Sink_s *sink = nodeSink->getData().data.sink;
+ listPossibleConnectionFormats(source->listConnectionFormats, sink->listConnectionFormats, listMergeConnectionFormats);
+ currentNodeIterator += 1; // now we are on the next converter/gateway
+ }
+
+ // let the controller decide:
+ std::vector<am_CustomConnectionFormat_t> listPriorityConnectionFormats;
+ if ((returnError = mpControlSender->getConnectionFormatChoice(currentRoutingElementIterator->sourceID, currentRoutingElementIterator->sinkID,
+ routeObjects, listMergeConnectionFormats, listPriorityConnectionFormats)) != E_OK)
+ {
+ return (returnError);
+ }
+
+ if (listPriorityConnectionFormats.empty())
+ {
+ return (E_NOT_POSSIBLE);
+ }
+
+ // we have the list sorted after priors - now we try one after the other with the next part of the route
+ std::vector<am_CustomConnectionFormat_t>::iterator connectionFormatIterator = listPriorityConnectionFormats.begin();
+ // here we need to check if we are at the end and stop
+ std::vector<am_RoutingElement_s>::iterator nextIterator = currentRoutingElementIterator + 1; // next pair source and sink
+ if (nextIterator == routeObjects.route.end())
+ {
+ for (; connectionFormatIterator != listPriorityConnectionFormats.end(); ++connectionFormatIterator)
{
- for (; connectionFormatIterator != listPriorityConnectionFormats.end(); ++connectionFormatIterator)
- {
- currentRoutingElementIterator->connectionFormat = *connectionFormatIterator;
- result.push_back(routeObjects);
- }
+ currentRoutingElementIterator->connectionFormat = *connectionFormatIterator;
+ result.push_back(routeObjects);
}
- else
+ }
+ else
+ {
+ for (; connectionFormatIterator != listPriorityConnectionFormats.end(); ++connectionFormatIterator)
{
- for (; connectionFormatIterator != listPriorityConnectionFormats.end(); ++connectionFormatIterator)
- {
- currentRoutingElementIterator->connectionFormat = *connectionFormatIterator;
- doConnectionFormatsForPath(routeObjects, nodes, nextIterator, currentNodeIterator, result);
- }
+ currentRoutingElementIterator->connectionFormat = *connectionFormatIterator;
+ doConnectionFormatsForPath(routeObjects, nodes, nextIterator, currentNodeIterator, result);
}
- return (E_OK);
}
- am_Error_e CAmRouter::cfPermutationsForPath(am_Route_s shortestRoute, std::vector<CAmRoutingNode*> resultNodesPath, std::vector<am_Route_s>& resultPath)
+ return (E_OK);
+}
+
+am_Error_e CAmRouter::cfPermutationsForPath(am_Route_s shortestRoute, std::vector<CAmRoutingNode *> resultNodesPath, std::vector<am_Route_s> &resultPath)
+{
+ std::vector<am_Route_s> result;
+ am_Error_e err = determineConnectionFormatsForPath(shortestRoute, resultNodesPath, result);
+ if (err != E_UNKNOWN)
{
- std::vector<am_Route_s> result;
- am_Error_e err = determineConnectionFormatsForPath(shortestRoute, resultNodesPath, result);
- if (err != E_UNKNOWN)
- {
- resultPath.insert(resultPath.end(), result.begin(), result.end());
+ resultPath.insert(resultPath.end(), result.begin(), result.end());
#ifdef TRACE_GRAPH
- std::cout
+ std::cout
<< "Determined connection formats for path from source:"
<< shortestRoute.sourceID << " to sink:" << shortestRoute.sinkID
<< "\n";
- for (auto routeConnectionFormats : result)
+ for (auto routeConnectionFormats : result)
+ {
+ std::cout << "[";
+ for (auto it = routeConnectionFormats.route.begin(); it != routeConnectionFormats.route.end(); it++)
{
- std::cout << "[";
- for (auto it = routeConnectionFormats.route.begin();it != routeConnectionFormats.route.end(); it++)
+ am_RoutingElement_s &routingElement = *it;
+ if (it - routeConnectionFormats.route.begin() > 0)
{
- am_RoutingElement_s& routingElement = *it;
- if (it - routeConnectionFormats.route.begin() > 0)
std::cout << " -> ";
-
- std::cout << routingElement.sourceID << ":"
- << routingElement.sinkID << " CF:"
- << routingElement.connectionFormat << " D:"
- << routingElement.domainID;
}
- std::cout << "]\n";
+
+ std::cout << routingElement.sourceID << ":"
+ << routingElement.sinkID << " CF:"
+ << routingElement.connectionFormat << " D:"
+ << routingElement.domainID;
}
-#endif
+
+ std::cout << "]\n";
}
+#endif // ifdef TRACE_GRAPH
+ }
+
#ifdef TRACE_GRAPH
- else
- {
- std::cout
+ else
+ {
+ std::cout
<< "Error by determining connection formats for path from source:"
<< shortestRoute.sourceID << " to sink:" << shortestRoute.sinkID
<< "\n";
- }
-#endif
- return err;
}
+#endif // ifdef TRACE_GRAPH
+ return err;
+}
- am_Error_e CAmRouter::getShortestPath(CAmRoutingNode & aSource, CAmRoutingNode & aSink, std::vector<am_Route_s> & resultPath)
- {
- am_Error_e err = E_OK;
- am_Route_s shortestRoute;
- std::vector<CAmRoutingNode*> resultNodesPath;
- am_RoutingNodeData_s & sinkNodeData = aSink.getData();
- am_RoutingNodeData_s & sourceNodeData = aSource.getData();
- shortestRoute.sinkID = sinkNodeData.data.sink->sinkID;
- shortestRoute.sourceID = sourceNodeData.data.source->sourceID;
-
- mRoutingGraph.getShortestPath(aSource, aSink, [&shortestRoute, &resultNodesPath](const am_GraphPathPosition_e position, CAmRoutingNode & object)
- {
- am_RoutingElement_s * element;
- //reverse order
- resultNodesPath.insert(resultNodesPath.begin(), (CAmRoutingNode*)&object);
- am_RoutingNodeData_s & routingData = object.getData();
- if(routingData.type==CAmNodeDataType::SINK)
- {
- auto iter = shortestRoute.route.emplace(shortestRoute.route.begin());
- element = &(*iter);
- element->domainID = routingData.data.sink->domainID;
- element->sinkID = routingData.data.sink->sinkID;
- element->connectionFormat = CF_UNKNOWN;
- }
- else if(routingData.type==CAmNodeDataType::SOURCE)
- {
- element->domainID = routingData.data.source->domainID;
- element->sourceID = routingData.data.source->sourceID;
- element->connectionFormat = CF_UNKNOWN;
- }
- });
+am_Error_e CAmRouter::getShortestPath(CAmRoutingNode &aSource, CAmRoutingNode &aSink, std::vector<am_Route_s> &resultPath)
+{
+ am_Error_e err = E_OK;
+ am_Route_s shortestRoute;
+ std::vector<CAmRoutingNode *> resultNodesPath;
+ am_RoutingNodeData_s &sinkNodeData = aSink.getData();
+ am_RoutingNodeData_s &sourceNodeData = aSource.getData();
+ shortestRoute.sinkID = sinkNodeData.data.sink->sinkID;
+ shortestRoute.sourceID = sourceNodeData.data.source->sourceID;
+
+ mRoutingGraph.getShortestPath(aSource, aSink, [&shortestRoute, &resultNodesPath](const am_GraphPathPosition_e position, CAmRoutingNode &object){
+ am_RoutingElement_s *element;
+ // reverse order
+ resultNodesPath.insert(resultNodesPath.begin(), (CAmRoutingNode *)&object);
+ am_RoutingNodeData_s &routingData = object.getData();
+ if (routingData.type == CAmNodeDataType::SINK)
+ {
+ auto iter = shortestRoute.route.emplace(shortestRoute.route.begin());
+ element = &(*iter);
+ element->domainID = routingData.data.sink->domainID;
+ element->sinkID = routingData.data.sink->sinkID;
+ element->connectionFormat = CF_UNKNOWN;
+ }
+ else if (routingData.type == CAmNodeDataType::SOURCE)
+ {
+ element->domainID = routingData.data.source->domainID;
+ element->sourceID = routingData.data.source->sourceID;
+ element->connectionFormat = CF_UNKNOWN;
+ }
+ });
- if (shortestRoute.route.size())
- {
- err = cfPermutationsForPath(shortestRoute, resultNodesPath, resultPath);
- }
- return err;
+ if (shortestRoute.route.size())
+ {
+ err = cfPermutationsForPath(shortestRoute, resultNodesPath, resultPath);
}
- int CAmRouter::insertPostion(const std::vector<CAmRoutingNode*>& path, const std::vector<std::vector<CAmRoutingNode*> >& nodes)
+ return err;
+}
+
+int CAmRouter::insertPostion(const std::vector<CAmRoutingNode *> &path, const std::vector<std::vector<CAmRoutingNode *> > &nodes)
+{
+ int index = 0;
+ if (!nodes.empty())
{
- int index = 0;
- if (!nodes.empty())
+ auto itNodes = nodes.begin();
+ for (; itNodes != nodes.end(); itNodes++)
{
- auto itNodes = nodes.begin();
- for (; itNodes != nodes.end(); itNodes++)
+ if (itNodes->size() > path.size())
{
- if (itNodes->size() > path.size())
- break;
+ break;
}
- if (itNodes == nodes.end())
- index = nodes.size();
- else
- index = itNodes - nodes.begin();
}
- return index;
+
+ if (itNodes == nodes.end())
+ {
+ index = nodes.size();
+ }
+ else
+ {
+ index = itNodes - nodes.begin();
+ }
}
- am_Error_e CAmRouter::getFirstNShortestPaths(const bool onlyFree, const unsigned cycles, const unsigned maxPathCount, CAmRoutingNode & aSource,
- CAmRoutingNode & aSink, std::vector<am_Route_s> & resultPath)
+ return index;
+}
+
+am_Error_e CAmRouter::getFirstNShortestPaths(const bool onlyFree, const unsigned cycles, const unsigned maxPathCount, CAmRoutingNode &aSource,
+ CAmRoutingNode &aSink, std::vector<am_Route_s> &resultPath)
+{
+ if (aSource.getData().type != CAmNodeDataType::SOURCE || aSink.getData().type != CAmNodeDataType::SINK)
{
- if (aSource.getData().type != CAmNodeDataType::SOURCE || aSink.getData().type != CAmNodeDataType::SINK)
- return E_NOT_POSSIBLE;
- const am_sinkID_t sinkID = aSink.getData().data.sink->sinkID;
- const am_sourceID_t sourceID = aSource.getData().data.source->sourceID;
- std::vector<am_Route_s> paths;
- std::vector<std::vector<CAmRoutingNode*>> nodes;
- std::vector<am_domainID_t> visitedDomains;
- visitedDomains.push_back(((CAmRoutingNode*) &aSource)->getData().domainID());
+ return E_NOT_POSSIBLE;
+ }
- auto cbShouldVisitNode = [&visitedDomains, &cycles, &onlyFree, this](const CAmRoutingNode * node)->bool
- {
- if(CAmRouter::shouldGoInDomain(visitedDomains, node->getData().domainID(), cycles))
+ const am_sinkID_t sinkID = aSink.getData().data.sink->sinkID;
+ const am_sourceID_t sourceID = aSource.getData().data.source->sourceID;
+ std::vector<am_Route_s> paths;
+ std::vector<std::vector<CAmRoutingNode *> > nodes;
+ std::vector<am_domainID_t> visitedDomains;
+ visitedDomains.push_back(((CAmRoutingNode *)&aSource)->getData().domainID());
+
+ auto cbShouldVisitNode = [&visitedDomains, &cycles, &onlyFree, this](const CAmRoutingNode *node) -> bool {
+ if (CAmRouter::shouldGoInDomain(visitedDomains, node->getData().domainID(), cycles))
{
- const am_RoutingNodeData_s & nodeData = node->getData();
- if(am_RoutingNodeData_s::GATEWAY==nodeData.type)
+ const am_RoutingNodeData_s &nodeData = node->getData();
+ if (am_RoutingNodeData_s::GATEWAY == nodeData.type)
{
- const am_Gateway_s * gateway = nodeData.data.gateway;
+ const am_Gateway_s *gateway = nodeData.data.gateway;
return (!onlyFree || !isComponentConnected(*gateway));
}
- else if(am_RoutingNodeData_s::CONVERTER==nodeData.type)
+ else if (am_RoutingNodeData_s::CONVERTER == nodeData.type)
{
- const am_Converter_s * converter = nodeData.data.converter;
+ const am_Converter_s *converter = nodeData.data.converter;
return (!onlyFree || !isComponentConnected(*converter));
}
+
return true;
}
+
return false;
};
- auto cbWillVisitNode = [&visitedDomains](const CAmRoutingNode * node)
- { visitedDomains.push_back(node->getData().domainID());};
- auto cbDidVisitNode = [&visitedDomains](const CAmRoutingNode * node)
- { visitedDomains.erase(visitedDomains.end()-1);};
- auto cbDidFinish = [&resultPath, &nodes, &paths, &sinkID, &sourceID](const std::vector<CAmRoutingNode*> & path)
- {
+ auto cbWillVisitNode = [&visitedDomains](const CAmRoutingNode *node){
+ visitedDomains.push_back(node->getData().domainID());
+ };
+ auto cbDidVisitNode = [&visitedDomains](const CAmRoutingNode *node){
+ visitedDomains.erase(visitedDomains.end() - 1);
+ };
+ auto cbDidFinish = [&resultPath, &nodes, &paths, &sinkID, &sourceID](const std::vector<CAmRoutingNode *> &path){
int index = CAmRouter::insertPostion(path, nodes);
- nodes.emplace(nodes.begin()+index);
- paths.emplace(paths.begin()+index);
+ nodes.emplace(nodes.begin() + index);
+ paths.emplace(paths.begin() + index);
nodes[index] = path;
- am_Route_s & nextRoute = paths[index];
- nextRoute.sinkID = sinkID;
+ am_Route_s &nextRoute = paths[index];
+ nextRoute.sinkID = sinkID;
nextRoute.sourceID = sourceID;
- am_RoutingElement_s * element;
- for(auto it = path.begin(); it!=path.end(); it++)
+ am_RoutingElement_s *element;
+ for (auto it = path.begin(); it != path.end(); it++)
{
- am_RoutingNodeData_s & routingData = (*it)->getData();
- if(routingData.type==CAmNodeDataType::SOURCE)
+ am_RoutingNodeData_s &routingData = (*it)->getData();
+ if (routingData.type == CAmNodeDataType::SOURCE)
{
auto iter = nextRoute.route.emplace(nextRoute.route.end());
- element = &(*iter);
- element->domainID = routingData.data.source->domainID;
- element->sourceID = routingData.data.source->sourceID;
+ element = &(*iter);
+ element->domainID = routingData.data.source->domainID;
+ element->sourceID = routingData.data.source->sourceID;
element->connectionFormat = CF_UNKNOWN;
}
- else if(routingData.type==CAmNodeDataType::SINK)
+ else if (routingData.type == CAmNodeDataType::SINK)
{
- element->domainID = routingData.data.sink->domainID;
- element->sinkID = routingData.data.sink->sinkID;
+ element->domainID = routingData.data.sink->domainID;
+ element->sinkID = routingData.data.sink->sinkID;
element->connectionFormat = CF_UNKNOWN;
}
}
};
- mRoutingGraph.getAllPaths(aSource, aSink, cbShouldVisitNode, cbWillVisitNode, cbDidVisitNode, cbDidFinish);
- unsigned pathsFound = 0;
- am_Error_e cfError = E_OK;
- for (auto it = paths.begin(); pathsFound < maxPathCount && it != paths.end(); it++)
+ mRoutingGraph.getAllPaths(aSource, aSink, cbShouldVisitNode, cbWillVisitNode, cbDidVisitNode, cbDidFinish);
+ unsigned pathsFound = 0;
+ am_Error_e cfError = E_OK;
+ for (auto it = paths.begin(); pathsFound < maxPathCount && it != paths.end(); it++)
+ {
+ cfError = cfPermutationsForPath(*it, nodes[it - paths.begin()], resultPath);
+ if (E_OK == cfError)
{
- cfError = cfPermutationsForPath(*it, nodes[it - paths.begin()], resultPath);
- if (E_OK == cfError)
- {
- pathsFound += (resultPath.size() > 0);
- }
+ pathsFound += (resultPath.size() > 0);
}
- if (pathsFound)
- return E_OK;
- else
- return E_NOT_POSSIBLE;
}
- bool CAmRouter::shouldGoInDomain(const std::vector<am_domainID_t> & visitedDomains, const am_domainID_t nodeDomainID, const unsigned maxCyclesNumber)
+ if (pathsFound)
+ {
+ return E_OK;
+ }
+ else
{
- unsigned recourseCounter(0);
- if (visitedDomains.size())
+ return E_NOT_POSSIBLE;
+ }
+}
+
+bool CAmRouter::shouldGoInDomain(const std::vector<am_domainID_t> &visitedDomains, const am_domainID_t nodeDomainID, const unsigned maxCyclesNumber)
+{
+ unsigned recourseCounter(0);
+ if (visitedDomains.size())
+ {
+ if (visitedDomains.back() == nodeDomainID)
{
- if (visitedDomains.back() == nodeDomainID)
- return true;
- unsigned count = 0;
- am_domainID_t lastDomain = 0;
- for (auto it = visitedDomains.begin(); it != visitedDomains.end() - 1; it++)
+ return true;
+ }
+
+ unsigned count = 0;
+ am_domainID_t lastDomain = 0;
+ for (auto it = visitedDomains.begin(); it != visitedDomains.end() - 1; it++)
+ {
+ if (lastDomain != *it)
{
- if (lastDomain != *it)
+ if (nodeDomainID == *it)
{
- if (nodeDomainID == *it)
+ recourseCounter++;
+ if (recourseCounter > maxCyclesNumber)
{
- recourseCounter++;
- if (recourseCounter > maxCyclesNumber)
- return false;
+ return false;
}
- lastDomain = *it;
}
+
+ lastDomain = *it;
}
}
- return true;
}
- bool CAmRouter::shouldGoInDomain(const std::vector<am_domainID_t> & visitedDomains, const am_domainID_t nodeDomainID)
+ return true;
+}
+
+bool CAmRouter::shouldGoInDomain(const std::vector<am_domainID_t> &visitedDomains, const am_domainID_t nodeDomainID)
+{
+ return CAmRouter::shouldGoInDomain(visitedDomains, nodeDomainID, mMaxAllowedCycles);
+}
+
+bool CAmRouter::getAllowedFormatsFromConvMatrix(const std::vector<bool> &convertionMatrix,
+ const std::vector<am_CustomConnectionFormat_t> &listSourceFormats, const std::vector<am_CustomConnectionFormat_t> &listSinkFormats,
+ std::vector<am_CustomConnectionFormat_t> &sourceFormats, std::vector<am_CustomConnectionFormat_t> &sinkFormats)
+{
+ const size_t sizeSourceFormats = listSourceFormats.size();
+ const size_t sizeSinkFormats = listSinkFormats.size();
+ const size_t sizeConvertionMatrix = convertionMatrix.size();
+
+ if (sizeSourceFormats == 0 || sizeSinkFormats == 0 || sizeConvertionMatrix == 0 || sizeConvertionMatrix != sizeSinkFormats * sizeSourceFormats)
{
- return CAmRouter::shouldGoInDomain(visitedDomains, nodeDomainID, mMaxAllowedCycles);
+ return false;
}
- bool CAmRouter::getAllowedFormatsFromConvMatrix(const std::vector<bool> & convertionMatrix,
- const std::vector<am_CustomConnectionFormat_t> & listSourceFormats, const std::vector<am_CustomConnectionFormat_t> & listSinkFormats,
- std::vector<am_CustomConnectionFormat_t> & sourceFormats, std::vector<am_CustomConnectionFormat_t> & sinkFormats)
+ std::vector<bool>::const_iterator iterator = convertionMatrix.begin();
+ for (; iterator != convertionMatrix.end(); ++iterator)
{
- const size_t sizeSourceFormats = listSourceFormats.size();
- const size_t sizeSinkFormats = listSinkFormats.size();
- const size_t sizeConvertionMatrix = convertionMatrix.size();
-
- if (sizeSourceFormats == 0 || sizeSinkFormats == 0 || sizeConvertionMatrix == 0 || sizeConvertionMatrix != sizeSinkFormats * sizeSourceFormats)
+ if (true == *iterator)
{
- return false;
+ const size_t index = iterator - convertionMatrix.begin();
+ size_t idx = index % sizeSourceFormats;
+ sourceFormats.push_back(listSourceFormats.at(idx));
+ idx = index / sizeSourceFormats;
+ sinkFormats.push_back(listSinkFormats.at(idx));
}
-
- std::vector<bool>::const_iterator iterator = convertionMatrix.begin();
- for (; iterator != convertionMatrix.end(); ++iterator)
- {
- if (true == *iterator)
- {
- const size_t index = iterator - convertionMatrix.begin();
- size_t idx = index % sizeSourceFormats;
- sourceFormats.push_back(listSourceFormats.at(idx));
- idx = index / sizeSourceFormats;
- sinkFormats.push_back(listSinkFormats.at(idx));
- }
- }
- return sourceFormats.size() > 0;
}
- void CAmRouter::listPossibleConnectionFormats(std::vector<am_CustomConnectionFormat_t> & inListSourceFormats,
- std::vector<am_CustomConnectionFormat_t> & inListSinkFormats, std::vector<am_CustomConnectionFormat_t> & outListFormats)
- {
- std::sort(inListSourceFormats.begin(), inListSourceFormats.end());
- std::sort(inListSinkFormats.begin(), inListSinkFormats.end());
- std::insert_iterator<std::vector<am_CustomConnectionFormat_t> > inserter(outListFormats, outListFormats.begin());
- set_intersection(inListSourceFormats.begin(), inListSourceFormats.end(), inListSinkFormats.begin(), inListSinkFormats.end(), inserter);
- }
+ return sourceFormats.size() > 0;
+}
- bool CAmRouter::getRestrictedOutputFormats(const std::vector<bool> & convertionMatrix, const std::vector<am_CustomConnectionFormat_t> & listSourceFormats,
- const std::vector<am_CustomConnectionFormat_t> & listSinkFormats, const am_CustomConnectionFormat_t connectionFormat,
- std::vector<am_CustomConnectionFormat_t> & listFormats)
- {
- listFormats.clear();
- std::vector<am_CustomConnectionFormat_t>::const_iterator rowSinkIterator = listSinkFormats.begin();
- std::vector<bool>::const_iterator matrixIterator = convertionMatrix.begin();
+void CAmRouter::listPossibleConnectionFormats(std::vector<am_CustomConnectionFormat_t> &inListSourceFormats,
+ std::vector<am_CustomConnectionFormat_t> &inListSinkFormats, std::vector<am_CustomConnectionFormat_t> &outListFormats)
+{
+ std::sort(inListSourceFormats.begin(), inListSourceFormats.end());
+ std::sort(inListSinkFormats.begin(), inListSinkFormats.end());
+ std::insert_iterator<std::vector<am_CustomConnectionFormat_t> > inserter(outListFormats, outListFormats.begin());
+ set_intersection(inListSourceFormats.begin(), inListSourceFormats.end(), inListSinkFormats.begin(), inListSinkFormats.end(), inserter);
+}
+
+bool CAmRouter::getRestrictedOutputFormats(const std::vector<bool> &convertionMatrix, const std::vector<am_CustomConnectionFormat_t> &listSourceFormats,
+ const std::vector<am_CustomConnectionFormat_t> &listSinkFormats, const am_CustomConnectionFormat_t connectionFormat,
+ std::vector<am_CustomConnectionFormat_t> &listFormats)
+{
+ listFormats.clear();
+ std::vector<am_CustomConnectionFormat_t>::const_iterator rowSinkIterator = listSinkFormats.begin();
+ std::vector<bool>::const_iterator matrixIterator = convertionMatrix.begin();
- //find the row number of the sink
- rowSinkIterator = find(listSinkFormats.begin(), listSinkFormats.end(), connectionFormat);
- int rowNumberSink = rowSinkIterator - listSinkFormats.begin();
+ // find the row number of the sink
+ rowSinkIterator = find(listSinkFormats.begin(), listSinkFormats.end(), connectionFormat);
+ int rowNumberSink = rowSinkIterator - listSinkFormats.begin();
- //go through the convertionMatrix and find out if the conversion is possible, if yes, add connectionFormat ...
- std::advance(matrixIterator, rowNumberSink);
+ // go through the convertionMatrix and find out if the conversion is possible, if yes, add connectionFormat ...
+ std::advance(matrixIterator, rowNumberSink);
- //iterate line-wise through the matrix and add more formats
- do
+ // iterate line-wise through the matrix and add more formats
+ do
+ {
+ if (*matrixIterator)
{
- if (*matrixIterator)
- {
- listFormats.push_back(listSourceFormats.at((matrixIterator - convertionMatrix.begin()) / listSinkFormats.size()));
- }
- std::advance(matrixIterator, listSinkFormats.size());
- } while (convertionMatrix.end() - matrixIterator > 0);
+ listFormats.push_back(listSourceFormats.at((matrixIterator - convertionMatrix.begin()) / listSinkFormats.size()));
+ }
+
+ std::advance(matrixIterator, listSinkFormats.size());
+ } while (convertionMatrix.end() - matrixIterator > 0);
+
+ return listFormats.size();
+}
- return listFormats.size();
+am_Error_e CAmRouter::getSourceSinkPossibleConnectionFormats(std::vector<CAmRoutingNode *>::iterator iteratorSource,
+ std::vector<CAmRoutingNode *>::iterator iteratorSink, std::vector<am_CustomConnectionFormat_t> &outConnectionFormats)
+{
+ CAmRoutingNode *nodeSink = *iteratorSink;
+ if (nodeSink->getData().type != CAmNodeDataType::SINK)
+ {
+ return (E_UNKNOWN);
}
- am_Error_e CAmRouter::getSourceSinkPossibleConnectionFormats(std::vector<CAmRoutingNode*>::iterator iteratorSource,
- std::vector<CAmRoutingNode*>::iterator iteratorSink, std::vector<am_CustomConnectionFormat_t> & outConnectionFormats)
+ CAmRoutingNode *nodeSource = *iteratorSource;
+ if (nodeSource->getData().type != CAmNodeDataType::SOURCE)
{
- CAmRoutingNode * nodeSink = *iteratorSink;
- if (nodeSink->getData().type != CAmNodeDataType::SINK)
- return (E_UNKNOWN);
+ return (E_UNKNOWN);
+ }
- CAmRoutingNode * nodeSource = *iteratorSource;
- if (nodeSource->getData().type != CAmNodeDataType::SOURCE)
- return (E_UNKNOWN);
+ am_Source_s *source = nodeSource->getData().data.source;
+ am_Sink_s *sink = nodeSink->getData().data.sink;
+ listPossibleConnectionFormats(source->listConnectionFormats, sink->listConnectionFormats, outConnectionFormats);
+ return (E_OK);
+}
- am_Source_s *source = nodeSource->getData().data.source;
- am_Sink_s *sink = nodeSink->getData().data.sink;
- listPossibleConnectionFormats(source->listConnectionFormats, sink->listConnectionFormats, outConnectionFormats);
- return (E_OK);
- }
+am_Error_e CAmRouter::getAllPaths(CAmRoutingNode &aSource, CAmRoutingNode &aSink, std::vector<am_Route_s> &resultPath,
+ std::vector<std::vector<CAmRoutingNode *> > &resultNodesPath, const bool includeCycles, const bool onlyFree)
+{
- am_Error_e CAmRouter::getAllPaths(CAmRoutingNode & aSource, CAmRoutingNode & aSink, std::vector<am_Route_s> & resultPath,
- std::vector<std::vector<CAmRoutingNode*>> & resultNodesPath, const bool includeCycles, const bool onlyFree)
+ if (aSource.getData().type != CAmNodeDataType::SOURCE || aSink.getData().type != CAmNodeDataType::SINK)
{
+ return E_NOT_POSSIBLE;
+ }
- if (aSource.getData().type != CAmNodeDataType::SOURCE || aSink.getData().type != CAmNodeDataType::SINK)
- return E_NOT_POSSIBLE;
+ unsigned cycles;
+ if (includeCycles)
+ {
+ cycles = UINT_MAX;
+ }
+ else
+ {
+ cycles = 0;
+ }
- unsigned cycles;
- if (includeCycles)
- cycles = UINT_MAX;
- else
- cycles = 0;
-
- uint8_t errorsCount = 0, successCount = 0;
- const am_sinkID_t sinkID = aSink.getData().data.sink->sinkID;
- const am_sourceID_t sourceID = aSource.getData().data.source->sourceID;
- std::vector<am_Route_s> paths;
- std::vector<am_domainID_t> visitedDomains;
- visitedDomains.push_back(((CAmRoutingNode*) &aSource)->getData().domainID());
- mRoutingGraph.getAllPaths(aSource, aSink, [&visitedDomains, &cycles, &onlyFree, this](const CAmRoutingNode * node)->bool
- {
- if(CAmRouter::shouldGoInDomain(visitedDomains, node->getData().domainID(), cycles))
+ uint8_t errorsCount = 0, successCount = 0;
+ const am_sinkID_t sinkID = aSink.getData().data.sink->sinkID;
+ const am_sourceID_t sourceID = aSource.getData().data.source->sourceID;
+ std::vector<am_Route_s> paths;
+ std::vector<am_domainID_t> visitedDomains;
+ visitedDomains.push_back(((CAmRoutingNode *)&aSource)->getData().domainID());
+ mRoutingGraph.getAllPaths(aSource, aSink, [&visitedDomains, &cycles, &onlyFree, this](const CAmRoutingNode *node) -> bool {
+ if (CAmRouter::shouldGoInDomain(visitedDomains, node->getData().domainID(), cycles))
{
- const am_RoutingNodeData_s & nodeData = node->getData();
- if(am_RoutingNodeData_s::GATEWAY==nodeData.type)
+ const am_RoutingNodeData_s &nodeData = node->getData();
+ if (am_RoutingNodeData_s::GATEWAY == nodeData.type)
{
- const am_Gateway_s * gateway = nodeData.data.gateway;
+ const am_Gateway_s *gateway = nodeData.data.gateway;
return (!onlyFree || !isComponentConnected(*gateway));
}
- else if(am_RoutingNodeData_s::CONVERTER==nodeData.type)
+ else if (am_RoutingNodeData_s::CONVERTER == nodeData.type)
{
- const am_Converter_s * converter = nodeData.data.converter;
+ const am_Converter_s *converter = nodeData.data.converter;
return (!onlyFree || !isComponentConnected(*converter));
}
+
return true;
}
+
return false;
- }, [&visitedDomains](const CAmRoutingNode * node)
- {
+ }, [&visitedDomains](const CAmRoutingNode *node){
visitedDomains.push_back(node->getData().domainID());
- }, [&visitedDomains](const CAmRoutingNode * node)
- { visitedDomains.erase(visitedDomains.end()-1);},
- [&resultPath, &resultNodesPath, &paths, &errorsCount, &successCount, &sinkID, &sourceID](const std::vector<CAmRoutingNode*> & path)
+ }, [&visitedDomains](const CAmRoutingNode *node){
+ visitedDomains.erase(visitedDomains.end() - 1);
+ },
+ [&resultPath, &resultNodesPath, &paths, &errorsCount, &successCount, &sinkID, &sourceID](const std::vector<CAmRoutingNode *> &path){
+ int index = CAmRouter::insertPostion(path, resultNodesPath);
+ resultNodesPath.emplace(resultNodesPath.begin() + index);
+ paths.emplace(paths.begin() + index);
+ resultNodesPath[index] = path;
+ am_Route_s &nextRoute = paths[index];
+ nextRoute.sinkID = sinkID;
+ nextRoute.sourceID = sourceID;
+ am_RoutingElement_s *element;
+ for (auto it = path.begin(); it != path.end(); it++)
+ {
+ am_RoutingNodeData_s &routingData = (*it)->getData();
+ if (routingData.type == CAmNodeDataType::SOURCE)
{
- int index = CAmRouter::insertPostion(path, resultNodesPath);
- resultNodesPath.emplace(resultNodesPath.begin()+index);
- paths.emplace(paths.begin()+index);
- resultNodesPath[index] = path;
- am_Route_s & nextRoute = paths[index];
- nextRoute.sinkID = sinkID;
- nextRoute.sourceID = sourceID;
- am_RoutingElement_s * element;
- for(auto it = path.begin(); it!=path.end(); it++)
- {
- am_RoutingNodeData_s & routingData = (*it)->getData();
- if(routingData.type==CAmNodeDataType::SOURCE)
- {
- auto iter = nextRoute.route.emplace(nextRoute.route.end());
- element = &(*iter);
- element->domainID = routingData.data.source->domainID;
- element->sourceID = routingData.data.source->sourceID;
- element->connectionFormat = CF_UNKNOWN;
- }
- else if(routingData.type==CAmNodeDataType::SINK)
- {
- element->domainID = routingData.data.sink->domainID;
- element->sinkID = routingData.data.sink->sinkID;
- element->connectionFormat = CF_UNKNOWN;
- }
- }
- });
+ auto iter = nextRoute.route.emplace(nextRoute.route.end());
+ element = &(*iter);
+ element->domainID = routingData.data.source->domainID;
+ element->sourceID = routingData.data.source->sourceID;
+ element->connectionFormat = CF_UNKNOWN;
+ }
+ else if (routingData.type == CAmNodeDataType::SINK)
+ {
+ element->domainID = routingData.data.sink->domainID;
+ element->sinkID = routingData.data.sink->sinkID;
+ element->connectionFormat = CF_UNKNOWN;
+ }
+ }
+ });
- for (auto it = paths.begin(); successCount < mMaxPathCount && it != paths.end(); it++)
+ for (auto it = paths.begin(); successCount < mMaxPathCount && it != paths.end(); it++)
+ {
+ if (cfPermutationsForPath(*it, resultNodesPath[it - paths.begin()], resultPath) == E_UNKNOWN)
{
- if (cfPermutationsForPath(*it, resultNodesPath[it - paths.begin()], resultPath) == E_UNKNOWN)
- errorsCount++;
- else
- successCount++;
+ errorsCount++;
}
+ else
+ {
+ successCount++;
+ }
+ }
- if (successCount)
- return E_OK;
- if (errorsCount)
- return E_NOT_POSSIBLE;
+ if (successCount)
+ {
return E_OK;
}
+ if (errorsCount)
+ {
+ return E_NOT_POSSIBLE;
+ }
+
+ return E_OK;
+}
+
}
diff --git a/AudioManagerCore/src/CAmRoutingReceiver.cpp b/AudioManagerCore/src/CAmRoutingReceiver.cpp
index b3815cd..f372df9 100644
--- a/AudioManagerCore/src/CAmRoutingReceiver.cpp
+++ b/AudioManagerCore/src/CAmRoutingReceiver.cpp
@@ -30,50 +30,50 @@
#include "CAmDltWrapper.h"
#include "CAmSocketHandler.h"
-#define __METHOD_NAME__ std::string (std::string("CAmRoutingReceiver::") + __func__)
+#define __METHOD_NAME__ std::string(std::string("CAmRoutingReceiver::") + __func__)
namespace am
{
-CAmRoutingReceiver::CAmRoutingReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmRoutingSender *iRoutingSender, CAmControlSender *iControlSender, CAmSocketHandler *iSocketHandler) :
- mpDatabaseHandler(iDatabaseHandler),
- mpRoutingSender(iRoutingSender),
- mpControlSender(iControlSender),
- mpSocketHandler(iSocketHandler),
- mpDBusWrapper(NULL),
- mListStartupHandles(),
- mListRundownHandles(),
- handleCount(0),
- mWaitStartup(false),
- mWaitRundown(false),
- mLastStartupError(E_OK),
- mLastRundownError(E_OK)
-{
- assert(mpDatabaseHandler!=NULL);
- assert(mpRoutingSender!=NULL);
- assert(mpControlSender!=NULL);
- assert(mpSocketHandler!=NULL);
-}
-
-CAmRoutingReceiver::CAmRoutingReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmRoutingSender *iRoutingSender, CAmControlSender *iControlSender, CAmSocketHandler *iSocketHandler, CAmDbusWrapper *iDBusWrapper) :
- mpDatabaseHandler(iDatabaseHandler),
- mpRoutingSender(iRoutingSender),
- mpControlSender(iControlSender),
- mpSocketHandler(iSocketHandler),
- mpDBusWrapper(iDBusWrapper),
- mListStartupHandles(),
- mListRundownHandles(),
- handleCount(0),
- mWaitStartup(false),
- mWaitRundown(false),
- mLastStartupError(E_OK),
- mLastRundownError(E_OK)
-{
- assert(mpDatabaseHandler!=NULL);
- assert(mpRoutingSender!=NULL);
- assert(mpControlSender!=NULL);
- assert(mpSocketHandler!=NULL);
- assert(mpDBusWrapper!=NULL);
+CAmRoutingReceiver::CAmRoutingReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmRoutingSender *iRoutingSender, CAmControlSender *iControlSender, CAmSocketHandler *iSocketHandler)
+ : mpDatabaseHandler(iDatabaseHandler)
+ , mpRoutingSender(iRoutingSender)
+ , mpControlSender(iControlSender)
+ , mpSocketHandler(iSocketHandler)
+ , mpDBusWrapper(NULL)
+ , mListStartupHandles()
+ , mListRundownHandles()
+ , handleCount(0)
+ , mWaitStartup(false)
+ , mWaitRundown(false)
+ , mLastStartupError(E_OK)
+ , mLastRundownError(E_OK)
+{
+ assert(mpDatabaseHandler != NULL);
+ assert(mpRoutingSender != NULL);
+ assert(mpControlSender != NULL);
+ assert(mpSocketHandler != NULL);
+}
+
+CAmRoutingReceiver::CAmRoutingReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmRoutingSender *iRoutingSender, CAmControlSender *iControlSender, CAmSocketHandler *iSocketHandler, CAmDbusWrapper *iDBusWrapper)
+ : mpDatabaseHandler(iDatabaseHandler)
+ , mpRoutingSender(iRoutingSender)
+ , mpControlSender(iControlSender)
+ , mpSocketHandler(iSocketHandler)
+ , mpDBusWrapper(iDBusWrapper)
+ , mListStartupHandles()
+ , mListRundownHandles()
+ , handleCount(0)
+ , mWaitStartup(false)
+ , mWaitRundown(false)
+ , mLastStartupError(E_OK)
+ , mLastRundownError(E_OK)
+{
+ assert(mpDatabaseHandler != NULL);
+ assert(mpRoutingSender != NULL);
+ assert(mpControlSender != NULL);
+ assert(mpSocketHandler != NULL);
+ assert(mpDBusWrapper != NULL);
}
CAmRoutingReceiver::~CAmRoutingReceiver()
@@ -88,138 +88,142 @@ void CAmRoutingReceiver::handleCallback(const am_Handle_s handle, const am_Error
}
else
{
- mpRoutingSender->removeHandle(handle);
- }
+ mpRoutingSender->removeHandle(handle);
+ }
}
void CAmRoutingReceiver::ackConnect(const am_Handle_s handle, const am_connectionID_t connectionID, const am_Error_e error)
{
- logInfo(__METHOD_NAME__,"handle=",handle,"connectionID=",connectionID,"error=",error);
+ logInfo(__METHOD_NAME__, "handle=", handle, "connectionID=", connectionID, "error=", error);
if (error == am_Error_e::E_OK)
{
mpRoutingSender->writeToDatabaseAndRemove(handle);
}
else
{
- //only remove connection of handle was found
- if(mpRoutingSender->removeHandle(handle)==0)
- {
- mpDatabaseHandler->removeConnection(connectionID);
- mpRoutingSender->removeConnectionLookup(connectionID);
- }
+ // only remove connection of handle was found
+ if (mpRoutingSender->removeHandle(handle) == 0)
+ {
+ mpDatabaseHandler->removeConnection(connectionID);
+ mpRoutingSender->removeConnectionLookup(connectionID);
+ }
}
+
mpControlSender->cbAckConnect(handle, error);
}
void CAmRoutingReceiver::ackDisconnect(const am_Handle_s handle, const am_connectionID_t connectionID, const am_Error_e error)
{
- logInfo(__METHOD_NAME__,"handle=",handle,"connectionID=",connectionID,"error=",error);
- //only remove connection of handle was found
- if(mpRoutingSender->removeHandle(handle) == 0)
- {
- mpRoutingSender->removeConnectionLookup(connectionID);
- }
+ logInfo(__METHOD_NAME__, "handle=", handle, "connectionID=", connectionID, "error=", error);
+ // only remove connection of handle was found
+ if (mpRoutingSender->removeHandle(handle) == 0)
+ {
+ mpRoutingSender->removeConnectionLookup(connectionID);
+ }
+
mpControlSender->cbAckDisconnect(handle, error);
}
void CAmRoutingReceiver::ackSetSinkVolumeChange(const am_Handle_s handle, const am_volume_t volume, const am_Error_e error)
{
- logInfo(__METHOD_NAME__,"handle=",handle,"volume=",volume,"error=",error);
- if(error == E_OK)
+ logInfo(__METHOD_NAME__, "handle=", handle, "volume=", volume, "error=", error);
+ if (error == E_OK)
{
- mpRoutingSender->checkVolume(handle,volume);
- }
-
- if (error== am_Error_e::E_OK || error== am_Error_e::E_ABORTED)
+ mpRoutingSender->checkVolume(handle, volume);
+ }
+
+ if (error == am_Error_e::E_OK || error == am_Error_e::E_ABORTED)
{
- mpRoutingSender->writeToDatabaseAndRemove(handle);
+ mpRoutingSender->writeToDatabaseAndRemove(handle);
}
else
{
- mpRoutingSender->removeHandle(handle);
- }
+ mpRoutingSender->removeHandle(handle);
+ }
+
mpControlSender->cbAckSetSinkVolumeChange(handle, volume, error);
}
void CAmRoutingReceiver::ackSetSourceVolumeChange(const am_Handle_s handle, const am_volume_t volume, const am_Error_e error)
{
- logInfo(__METHOD_NAME__,"handle=",handle,"volume=",volume,"error=",error);
- if(error == E_OK)
+ logInfo(__METHOD_NAME__, "handle=", handle, "volume=", volume, "error=", error);
+ if (error == E_OK)
{
- mpRoutingSender->checkVolume(handle,volume);
+ mpRoutingSender->checkVolume(handle, volume);
}
- if (error== am_Error_e::E_OK || error== am_Error_e::E_ABORTED)
+ if (error == am_Error_e::E_OK || error == am_Error_e::E_ABORTED)
{
- mpRoutingSender->writeToDatabaseAndRemove(handle);
+ mpRoutingSender->writeToDatabaseAndRemove(handle);
}
else
{
- mpRoutingSender->removeHandle(handle);
- }
+ mpRoutingSender->removeHandle(handle);
+ }
+
mpControlSender->cbAckSetSourceVolumeChange(handle, volume, error);
}
void CAmRoutingReceiver::ackSetSourceState(const am_Handle_s handle, const am_Error_e error)
{
- logInfo(__METHOD_NAME__,"handle=",handle,"error=",error);
- handleCallback(handle,error);
+ logInfo(__METHOD_NAME__, "handle=", handle, "error=", error);
+ handleCallback(handle, error);
mpControlSender->cbAckSetSourceState(handle, error);
}
void CAmRoutingReceiver::ackSetSinkSoundProperty(const am_Handle_s handle, const am_Error_e error)
{
- logInfo(__METHOD_NAME__,"handle=",handle,"error=",error);
- handleCallback(handle,error);
+ logInfo(__METHOD_NAME__, "handle=", handle, "error=", error);
+ handleCallback(handle, error);
mpControlSender->cbAckSetSinkSoundProperty(handle, error);
}
void am::CAmRoutingReceiver::ackSetSinkSoundProperties(const am_Handle_s handle, const am_Error_e error)
{
- logInfo(__METHOD_NAME__,"handle=",handle,"error=",error);
- handleCallback(handle,error);
+ logInfo(__METHOD_NAME__, "handle=", handle, "error=", error);
+ handleCallback(handle, error);
mpControlSender->cbAckSetSinkSoundProperties(handle, error);
}
void CAmRoutingReceiver::ackSetSourceSoundProperty(const am_Handle_s handle, const am_Error_e error)
{
- logInfo(__METHOD_NAME__,"handle=",handle,"error=",error);
- handleCallback(handle,error);
+ logInfo(__METHOD_NAME__, "handle=", handle, "error=", error);
+ handleCallback(handle, error);
mpControlSender->cbAckSetSourceSoundProperty(handle, error);
}
void am::CAmRoutingReceiver::ackSetSourceSoundProperties(const am_Handle_s handle, const am_Error_e error)
{
- logInfo(__METHOD_NAME__,"handle=",handle,"error=",error);
- handleCallback(handle,error);
+ logInfo(__METHOD_NAME__, "handle=", handle, "error=", error);
+ handleCallback(handle, error);
mpControlSender->cbAckSetSourceSoundProperties(handle, error);
}
void CAmRoutingReceiver::ackCrossFading(const am_Handle_s handle, const am_HotSink_e hotSink, const am_Error_e error)
{
- logInfo(__METHOD_NAME__,"handle=",handle,"hotsink=",hotSink,"error=",error);
- handleCallback(handle,error);
+ logInfo(__METHOD_NAME__, "handle=", handle, "hotsink=", hotSink, "error=", error);
+ handleCallback(handle, error);
mpControlSender->cbAckCrossFade(handle, hotSink, error);
}
void CAmRoutingReceiver::ackSourceVolumeTick(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume)
{
- logInfo(__METHOD_NAME__,"handle=",handle,"sourceID=",sourceID,"volume=",volume);
+ logInfo(__METHOD_NAME__, "handle=", handle, "sourceID=", sourceID, "volume=", volume);
mpControlSender->hookSystemSourceVolumeTick(handle, sourceID, volume);
}
void CAmRoutingReceiver::ackSinkVolumeTick(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume)
{
- logInfo(__METHOD_NAME__,"handle=",handle,"sinkID=",sinkID,"volume=",volume);
+ logInfo(__METHOD_NAME__, "handle=", handle, "sinkID=", sinkID, "volume=", volume);
mpControlSender->hookSystemSinkVolumeTick(handle, sinkID, volume);
}
-am_Error_e CAmRoutingReceiver::peekDomain(const std::string & name, am_domainID_t & domainID)
-{
+am_Error_e CAmRoutingReceiver::peekDomain(const std::string &name, am_domainID_t &domainID)
+{
return (mpDatabaseHandler->peekDomain(name, domainID));
}
-am_Error_e CAmRoutingReceiver::registerDomain(const am_Domain_s & domainData, am_domainID_t & domainID)
+am_Error_e CAmRoutingReceiver::registerDomain(const am_Domain_s &domainData, am_domainID_t &domainID)
{
return (mpControlSender->hookSystemRegisterDomain(domainData, domainID));
}
@@ -229,14 +233,14 @@ am_Error_e CAmRoutingReceiver::deregisterDomain(const am_domainID_t domainID)
return (mpControlSender->hookSystemDeregisterDomain(domainID));
}
-am_Error_e CAmRoutingReceiver::registerGateway(const am_Gateway_s & gatewayData, am_gatewayID_t & gatewayID)
+am_Error_e CAmRoutingReceiver::registerGateway(const am_Gateway_s &gatewayData, am_gatewayID_t &gatewayID)
{
return (mpControlSender->hookSystemRegisterGateway(gatewayData, gatewayID));
}
-am_Error_e CAmRoutingReceiver::registerConverter(const am_Converter_s& converterData, am_converterID_t& converterID)
+am_Error_e CAmRoutingReceiver::registerConverter(const am_Converter_s &converterData, am_converterID_t &converterID)
{
- return (mpControlSender->hookSystemRegisterConverter(converterData, converterID));
+ return (mpControlSender->hookSystemRegisterConverter(converterData, converterID));
}
am_Error_e CAmRoutingReceiver::deregisterGateway(const am_gatewayID_t gatewayID)
@@ -244,17 +248,17 @@ am_Error_e CAmRoutingReceiver::deregisterGateway(const am_gatewayID_t gatewayID)
return (mpControlSender->hookSystemDeregisterGateway(gatewayID));
}
-am_Error_e CAmRoutingReceiver::deregisterConverter(const am_converterID_t converterID)
+am_Error_e CAmRoutingReceiver::deregisterConverter(const am_converterID_t converterID)
{
- return (mpControlSender->hookSystemDeregisterConverter(converterID));
+ return (mpControlSender->hookSystemDeregisterConverter(converterID));
}
-am_Error_e CAmRoutingReceiver::peekSink(const std::string& name, am_sinkID_t & sinkID)
+am_Error_e CAmRoutingReceiver::peekSink(const std::string &name, am_sinkID_t &sinkID)
{
return (mpDatabaseHandler->peekSink(name, sinkID));
}
-am_Error_e CAmRoutingReceiver::registerSink(const am_Sink_s & sinkData, am_sinkID_t & sinkID)
+am_Error_e CAmRoutingReceiver::registerSink(const am_Sink_s &sinkData, am_sinkID_t &sinkID)
{
return (mpControlSender->hookSystemRegisterSink(sinkData, sinkID));
}
@@ -264,12 +268,12 @@ am_Error_e CAmRoutingReceiver::deregisterSink(const am_sinkID_t sinkID)
return (mpControlSender->hookSystemDeregisterSink(sinkID));
}
-am_Error_e CAmRoutingReceiver::peekSource(const std::string & name, am_sourceID_t & sourceID)
+am_Error_e CAmRoutingReceiver::peekSource(const std::string &name, am_sourceID_t &sourceID)
{
return (mpDatabaseHandler->peekSource(name, sourceID));
}
-am_Error_e CAmRoutingReceiver::registerSource(const am_Source_s & sourceData, am_sourceID_t & sourceID)
+am_Error_e CAmRoutingReceiver::registerSource(const am_Source_s &sourceData, am_sourceID_t &sourceID)
{
return (mpControlSender->hookSystemRegisterSource(sourceData, sourceID));
}
@@ -279,7 +283,7 @@ am_Error_e CAmRoutingReceiver::deregisterSource(const am_sourceID_t sourceID)
return (mpControlSender->hookSystemDeregisterSource(sourceID));
}
-am_Error_e CAmRoutingReceiver::registerCrossfader(const am_Crossfader_s & crossfaderData, am_crossfaderID_t & crossfaderID)
+am_Error_e CAmRoutingReceiver::registerCrossfader(const am_Crossfader_s &crossfaderData, am_crossfaderID_t &crossfaderID)
{
return (mpControlSender->hookSystemRegisterCrossfader(crossfaderData, crossfaderID));
}
@@ -304,12 +308,12 @@ void CAmRoutingReceiver::hookDomainRegistrationComplete(const am_domainID_t doma
mpControlSender->hookSystemDomainRegistrationComplete(domainID);
}
-void CAmRoutingReceiver::hookSinkAvailablityStatusChange(const am_sinkID_t sinkID, const am_Availability_s & availability)
+void CAmRoutingReceiver::hookSinkAvailablityStatusChange(const am_sinkID_t sinkID, const am_Availability_s &availability)
{
mpControlSender->hookSystemSinkAvailablityStateChange(sinkID, availability);
}
-void CAmRoutingReceiver::hookSourceAvailablityStatusChange(const am_sourceID_t sourceID, const am_Availability_s & availability)
+void CAmRoutingReceiver::hookSourceAvailablityStatusChange(const am_sourceID_t sourceID, const am_Availability_s &availability)
{
mpControlSender->hookSystemSourceAvailablityStateChange(sourceID, availability);
}
@@ -322,157 +326,167 @@ void CAmRoutingReceiver::hookDomainStateChange(const am_domainID_t domainID, con
void CAmRoutingReceiver::hookTimingInformationChanged(const am_connectionID_t connectionID, const am_timeSync_t delay)
{
mpDatabaseHandler->changeConnectionTimingInformation(connectionID, delay);
- mpControlSender->hookSystemSingleTimingInformationChanged(connectionID,delay);
+ mpControlSender->hookSystemSingleTimingInformationChanged(connectionID, delay);
}
-void CAmRoutingReceiver::sendChangedData(const std::vector<am_EarlyData_s> & earlyData)
+void CAmRoutingReceiver::sendChangedData(const std::vector<am_EarlyData_s> &earlyData)
{
mpControlSender->hookSystemReceiveEarlyData(earlyData);
}
-am_Error_e CAmRoutingReceiver::peekSinkClassID(const std::string& name, am_sinkClass_t& sinkClassID)
+am_Error_e CAmRoutingReceiver::peekSinkClassID(const std::string &name, am_sinkClass_t &sinkClassID)
{
return (mpDatabaseHandler->peekSinkClassID(name, sinkClassID));
}
-am_Error_e CAmRoutingReceiver::peekSourceClassID(const std::string& name, am_sourceClass_t& sourceClassID)
+am_Error_e CAmRoutingReceiver::peekSourceClassID(const std::string &name, am_sourceClass_t &sourceClassID)
{
return (mpDatabaseHandler->peekSourceClassID(name, sourceClassID));
}
#ifdef WITH_DBUS_WRAPPER
-am_Error_e CAmRoutingReceiver::getDBusConnectionWrapper(CAmDbusWrapper *& dbusConnectionWrapper) const
+am_Error_e CAmRoutingReceiver::getDBusConnectionWrapper(CAmDbusWrapper * &dbusConnectionWrapper) const
{
dbusConnectionWrapper = mpDBusWrapper;
return (E_OK);
#else
-am_Error_e CAmRoutingReceiver::getDBusConnectionWrapper(CAmDbusWrapper *& ) const
+am_Error_e CAmRoutingReceiver::getDBusConnectionWrapper(CAmDbusWrapper * &) const
{
return (E_UNKNOWN);
-#endif
+#endif // ifdef WITH_DBUS_WRAPPER
}
-am_Error_e CAmRoutingReceiver::getSocketHandler(CAmSocketHandler *& socketHandler) const
+am_Error_e CAmRoutingReceiver::getSocketHandler(CAmSocketHandler * &socketHandler) const
{
socketHandler = mpSocketHandler;
return (E_OK);
}
-void CAmRoutingReceiver::getInterfaceVersion(std::string & version) const
+void CAmRoutingReceiver::getInterfaceVersion(std::string &version) const
{
version = RoutingVersion;
}
-void CAmRoutingReceiver::confirmRoutingReady(const uint16_t handle, const am_Error_e error)
+void CAmRoutingReceiver::confirmRoutingReady(const uint16_t handle, const am_Error_e error)
{
- if (error!=E_OK)
- mLastStartupError=error;
+ if (error != E_OK)
+ {
+ mLastStartupError = error;
+ }
+
mListStartupHandles.erase(std::remove(mListStartupHandles.begin(), mListStartupHandles.end(), handle), mListStartupHandles.end());
if (mWaitStartup && mListStartupHandles.empty())
+ {
mpControlSender->confirmRoutingReady(mLastStartupError);
+ }
}
void CAmRoutingReceiver::confirmRoutingRundown(const uint16_t handle, const am_Error_e error)
{
- if (error!=E_OK)
- mLastRundownError=error;
+ if (error != E_OK)
+ {
+ mLastRundownError = error;
+ }
+
mListRundownHandles.erase(std::remove(mListRundownHandles.begin(), mListRundownHandles.end(), handle), mListRundownHandles.end());
if (mWaitRundown && mListRundownHandles.empty())
+ {
mpControlSender->confirmRoutingRundown(mLastRundownError);
+ }
}
uint16_t am::CAmRoutingReceiver::getStartupHandle()
{
- uint16_t handle = ++handleCount; //todo: handle overflow
+ uint16_t handle = ++handleCount; // todo: handle overflow
mListStartupHandles.push_back(handle);
return (handle);
}
uint16_t am::CAmRoutingReceiver::getRundownHandle()
{
- uint16_t handle = ++handleCount; //todo: handle overflow
+ uint16_t handle = ++handleCount; // todo: handle overflow
mListRundownHandles.push_back(handle);
return (handle);
}
void am::CAmRoutingReceiver::waitOnStartup(bool startup)
{
- mWaitStartup = startup;
- mLastStartupError=E_OK;
+ mWaitStartup = startup;
+ mLastStartupError = E_OK;
}
void CAmRoutingReceiver::ackSinkNotificationConfiguration(const am_Handle_s handle, const am_Error_e error)
{
- logInfo(__METHOD_NAME__,"handle=",handle,"error=",error);
- handleCallback(handle,error);
- mpControlSender->cbAckSetSinkNotificationConfiguration(handle,error);
+ logInfo(__METHOD_NAME__, "handle=", handle, "error=", error);
+ handleCallback(handle, error);
+ mpControlSender->cbAckSetSinkNotificationConfiguration(handle, error);
}
void CAmRoutingReceiver::ackSourceNotificationConfiguration(const am_Handle_s handle, const am_Error_e error)
{
- logInfo(__METHOD_NAME__,"handle=",handle,"error=",error);
- handleCallback(handle,error);
- mpControlSender->cbAckSetSourceNotificationConfiguration(handle,error);
+ logInfo(__METHOD_NAME__, "handle=", handle, "error=", error);
+ handleCallback(handle, error);
+ mpControlSender->cbAckSetSourceNotificationConfiguration(handle, error);
}
-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)
+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)
{
- return (mpControlSender->hookSystemUpdateGateway(gatewayID,listSourceFormats,listSinkFormats,convertionMatrix));
+ return (mpControlSender->hookSystemUpdateGateway(gatewayID, listSourceFormats, listSinkFormats, convertionMatrix));
}
-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)
+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)
{
- return (mpControlSender->hookSystemUpdateConverter(converterID,listSourceFormats,listSinkFormats,convertionMatrix));
+ return (mpControlSender->hookSystemUpdateConverter(converterID, listSourceFormats, listSinkFormats, convertionMatrix));
}
-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)
+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)
{
- return (mpControlSender->hookSystemUpdateSink(sinkID,sinkClassID,listSoundProperties,listConnectionFormats,listMainSoundProperties));
+ return (mpControlSender->hookSystemUpdateSink(sinkID, sinkClassID, listSoundProperties, listConnectionFormats, listMainSoundProperties));
}
-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)
+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)
{
- return (mpControlSender->hookSystemUpdateSource(sourceID,sourceClassID,listSoundProperties,listConnectionFormats,listMainSoundProperties));
+ return (mpControlSender->hookSystemUpdateSource(sourceID, sourceClassID, listSoundProperties, listConnectionFormats, listMainSoundProperties));
}
-void CAmRoutingReceiver::ackSetVolumes(const am_Handle_s handle, const std::vector<am_Volumes_s>& listvolumes, const am_Error_e error)
+void CAmRoutingReceiver::ackSetVolumes(const am_Handle_s handle, const std::vector<am_Volumes_s> &listvolumes, const am_Error_e error)
{
- logInfo(__METHOD_NAME__,"handle=",handle,"error=",error);
- handleCallback(handle,error);
- mpControlSender->cbAckSetVolume(handle,listvolumes,error);
+ logInfo(__METHOD_NAME__, "handle=", handle, "error=", error);
+ handleCallback(handle, error);
+ mpControlSender->cbAckSetVolume(handle, listvolumes, error);
}
-void CAmRoutingReceiver::hookSinkNotificationDataChange(const am_sinkID_t sinkID, const am_NotificationPayload_s& payload)
+void CAmRoutingReceiver::hookSinkNotificationDataChange(const am_sinkID_t sinkID, const am_NotificationPayload_s &payload)
{
- logInfo(__METHOD_NAME__,"sinkID=",sinkID,"type=",payload.type,"notificationValue=",payload.value);
- mpControlSender->hookSinkNotificationDataChanged(sinkID,payload);
+ logInfo(__METHOD_NAME__, "sinkID=", sinkID, "type=", payload.type, "notificationValue=", payload.value);
+ mpControlSender->hookSinkNotificationDataChanged(sinkID, payload);
}
-void CAmRoutingReceiver::hookSourceNotificationDataChange(const am_sourceID_t sourceID, const am_NotificationPayload_s& payload)
+void CAmRoutingReceiver::hookSourceNotificationDataChange(const am_sourceID_t sourceID, const am_NotificationPayload_s &payload)
{
- logInfo(__METHOD_NAME__,"sinkID=",sourceID,"type=",payload.type,"notificationValue=",payload.value);
- mpControlSender->hookSourceNotificationDataChanged(sourceID,payload);
+ logInfo(__METHOD_NAME__, "sinkID=", sourceID, "type=", payload.type, "notificationValue=", payload.value);
+ mpControlSender->hookSourceNotificationDataChanged(sourceID, payload);
}
-am_Error_e CAmRoutingReceiver::getDomainOfSink(const am_sinkID_t sinkID, am_domainID_t& domainID) const
+am_Error_e CAmRoutingReceiver::getDomainOfSink(const am_sinkID_t sinkID, am_domainID_t &domainID) const
{
- return (mpDatabaseHandler->getDomainOfSink(sinkID,domainID));
+ return (mpDatabaseHandler->getDomainOfSink(sinkID, domainID));
}
-am_Error_e CAmRoutingReceiver::getDomainOfSource(const am_sourceID_t sourceID, am_domainID_t& domainID) const
+am_Error_e CAmRoutingReceiver::getDomainOfSource(const am_sourceID_t sourceID, am_domainID_t &domainID) const
{
- return (mpDatabaseHandler->getDomainOfSource(sourceID,domainID));
+ return (mpDatabaseHandler->getDomainOfSource(sourceID, domainID));
}
-am_Error_e CAmRoutingReceiver::getDomainOfCrossfader(const am_crossfaderID_t crossfader, am_domainID_t& domainID) const
+am_Error_e CAmRoutingReceiver::getDomainOfCrossfader(const am_crossfaderID_t crossfader, am_domainID_t &domainID) const
{
- return (mpDatabaseHandler->getDomainOfCrossfader(crossfader,domainID));
+ return (mpDatabaseHandler->getDomainOfCrossfader(crossfader, domainID));
}
void CAmRoutingReceiver::waitOnRundown(bool rundown)
{
- mWaitRundown = rundown;
- mLastRundownError=E_OK;
+ mWaitRundown = rundown;
+ mLastRundownError = E_OK;
}
}
diff --git a/AudioManagerCore/src/CAmRoutingSender.cpp b/AudioManagerCore/src/CAmRoutingSender.cpp
index 9c6e658..cb66fe9 100644
--- a/AudioManagerCore/src/CAmRoutingSender.cpp
+++ b/AudioManagerCore/src/CAmRoutingSender.cpp
@@ -40,78 +40,79 @@
namespace am
{
-#define REQUIRED_INTERFACE_VERSION_MAJOR 1 //!< major interface version. All versions smaller than this will be rejected
+#define REQUIRED_INTERFACE_VERSION_MAJOR 1 //!< major interface version. All versions smaller than this will be rejected
#define REQUIRED_INTERFACE_VERSION_MINOR 0 //!< minor interface version. All versions smaller than this will be rejected
-#define __METHOD_NAME__ std::string (std::string("CAmRoutingSender::") + __func__)
+#define __METHOD_NAME__ std::string(std::string("CAmRoutingSender::") + __func__)
CAmRoutingSender::CAmRoutingSender(
- const std::vector<std::string>& listOfPluginDirectories,
- IAmDatabaseHandler* databaseHandler) :
- mHandleCount(0),
- mlistActiveHandles(),
- mListInterfaces(),
- mMapConnectionInterface(),
- mMapCrossfaderInterface(),
- mMapDomainInterface(),
- mMapSinkInterface(),
- mMapSourceInterface(),
- mpRoutingReceiver(),
- mpDatabaseHandler(databaseHandler) {
+ const std::vector<std::string> &listOfPluginDirectories,
+ IAmDatabaseHandler *databaseHandler)
+ : mHandleCount(0)
+ , mlistActiveHandles()
+ , mListInterfaces()
+ , mMapConnectionInterface()
+ , mMapCrossfaderInterface()
+ , mMapDomainInterface()
+ , mMapSinkInterface()
+ , mMapSourceInterface()
+ , mpRoutingReceiver()
+ , mpDatabaseHandler(databaseHandler)
+{
loadPlugins(listOfPluginDirectories);
- dboNewSink = [&](const am_Sink_s& sink) {
- addSinkLookup(sink);
- };
- dboNewSource = [&](const am_Source_s& source) {
- addSourceLookup(source);
- };
- dboNewDomain = [&](const am_Domain_s& domain) {
- addDomainLookup(domain);
- };
- //todo: newGateway implement something
- //todo: newConverter implement something
- dboNewCrossfader = [&](const am_Crossfader_s& crossfader) {
- addCrossfaderLookup(crossfader);
- };
+ dboNewSink = [&](const am_Sink_s &sink) {
+ addSinkLookup(sink);
+ };
+ dboNewSource = [&](const am_Source_s &source) {
+ addSourceLookup(source);
+ };
+ dboNewDomain = [&](const am_Domain_s &domain) {
+ addDomainLookup(domain);
+ };
+ // todo: newGateway implement something
+ // todo: newConverter implement something
+ dboNewCrossfader = [&](const am_Crossfader_s &crossfader) {
+ addCrossfaderLookup(crossfader);
+ };
dboRemovedSink = [&](const am_sinkID_t sinkID, const bool visible) {
- removeSinkLookup(sinkID);
- };
+ removeSinkLookup(sinkID);
+ };
dboRemovedSource = [&](const am_sourceID_t sourceID, const bool visible) {
- removeSourceLookup(sourceID);
- };
+ removeSourceLookup(sourceID);
+ };
dboRemoveDomain = [&](const am_domainID_t domainID) {
- removeDomainLookup(domainID);
- };
- //todo: removeGateway implement something
- //todo: removeConverter implement something
+ removeDomainLookup(domainID);
+ };
+ // todo: removeGateway implement something
+ // todo: removeConverter implement something
dboRemoveCrossfader = [&](const am_crossfaderID_t crossfaderID) {
- removeCrossfaderLookup(crossfaderID);
- };
+ removeCrossfaderLookup(crossfaderID);
+ };
}
-void CAmRoutingSender::loadPlugins(const std::vector<std::string>& listOfPluginDirectories)
+void CAmRoutingSender::loadPlugins(const std::vector<std::string> &listOfPluginDirectories)
{
if (listOfPluginDirectories.empty())
{
- logError(__METHOD_NAME__,"List of routingplugins is empty");
+ logError(__METHOD_NAME__, "List of routingplugins is empty");
}
- std::vector<std::string> sharedLibraryNameList;
- std::vector<std::string>::const_iterator dirIter = listOfPluginDirectories.begin();
+ std::vector<std::string> sharedLibraryNameList;
+ std::vector<std::string>::const_iterator dirIter = listOfPluginDirectories.begin();
std::vector<std::string>::const_iterator dirIterEnd = listOfPluginDirectories.end();
// search communicator plugins in configured directories
for (; dirIter < dirIterEnd; ++dirIter)
{
- const char* directoryName = dirIter->c_str();
- logInfo(__METHOD_NAME__,"Searching for HookPlugins in", directoryName);
+ const char *directoryName = dirIter->c_str();
+ logInfo(__METHOD_NAME__, "Searching for HookPlugins in", directoryName);
DIR *directory = opendir(directoryName);
if (!directory)
{
- logError(__METHOD_NAME__,"Error opening directory: ", directoryName);
+ logError(__METHOD_NAME__, "Error opening directory: ", directoryName);
continue;
}
@@ -120,10 +121,10 @@ void CAmRoutingSender::loadPlugins(const std::vector<std::string>& listOfPluginD
while ((itemInDirectory = readdir(directory)))
{
unsigned char entryType = itemInDirectory->d_type;
- std::string entryName = itemInDirectory->d_name;
- std::string fullName = *dirIter + "/" + entryName;
+ std::string entryName = itemInDirectory->d_name;
+ std::string fullName = *dirIter + "/" + entryName;
- bool regularFile = (entryType == DT_REG || entryType == DT_LNK);
+ bool regularFile = (entryType == DT_REG || entryType == DT_LNK);
bool sharedLibExtension = ("so" == entryName.substr(entryName.find_last_of(".") + 1));
// Handle cases where readdir() could not determine the file type
@@ -133,7 +134,7 @@ void CAmRoutingSender::loadPlugins(const std::vector<std::string>& listOfPluginD
if (stat(fullName.c_str(), &buf))
{
- logInfo(__METHOD_NAME__,"Failed to stat file: ", entryName, errno);
+ logInfo(__METHOD_NAME__, "Failed to stat file: ", entryName, errno);
continue;
}
@@ -142,7 +143,7 @@ void CAmRoutingSender::loadPlugins(const std::vector<std::string>& listOfPluginD
if (regularFile && sharedLibExtension)
{
- logInfo(__METHOD_NAME__,"adding file: ", entryName);
+ logInfo(__METHOD_NAME__, "adding file: ", entryName);
std::string name(directoryName);
sharedLibraryNameList.push_back(name + "/" + entryName);
}
@@ -156,28 +157,28 @@ void CAmRoutingSender::loadPlugins(const std::vector<std::string>& listOfPluginD
}
// iterate all communicator plugins and start them
- std::vector<std::string>::iterator iter = sharedLibraryNameList.begin();
+ std::vector<std::string>::iterator iter = sharedLibraryNameList.begin();
std::vector<std::string>::iterator iterEnd = sharedLibraryNameList.end();
for (; iter != iterEnd; ++iter)
{
- logInfo(__METHOD_NAME__,"try loading: ", *iter);
+ logInfo(__METHOD_NAME__, "try loading: ", *iter);
- IAmRoutingSend* (*createFunc)();
- void* tempLibHandle = NULL;
- createFunc = getCreateFunction<IAmRoutingSend*()>(*iter, tempLibHandle);
+ IAmRoutingSend *(*createFunc)();
+ void *tempLibHandle = NULL;
+ createFunc = getCreateFunction<IAmRoutingSend *()>(*iter, tempLibHandle);
if (!createFunc)
{
- logError(__METHOD_NAME__,"Entry point of RoutingPlugin not found");
+ logError(__METHOD_NAME__, "Entry point of RoutingPlugin not found");
continue;
}
- IAmRoutingSend* router = createFunc();
+ IAmRoutingSend *router = createFunc();
if (!router)
{
- logError(__METHOD_NAME__,"initialization of plugin ",*iter,"failed. Entry Function not callable");
+ logError(__METHOD_NAME__, "initialization of plugin ", *iter, "failed. Entry Function not callable");
dlclose(tempLibHandle);
continue;
}
@@ -185,7 +186,7 @@ void CAmRoutingSender::loadPlugins(const std::vector<std::string>& listOfPluginD
InterfaceNamePairs routerInterface;
routerInterface.routingInterface = router;
- //check libversion
+ // check libversion
std::string version, cVersion(RoutingVersion);
router->getInterfaceVersion(version);
uint16_t minorVersion, majorVersion, cMinorVersion, cMajorVersion;
@@ -196,12 +197,12 @@ void CAmRoutingSender::loadPlugins(const std::vector<std::string>& listOfPluginD
if (majorVersion < cMajorVersion || ((majorVersion == cMajorVersion) && (minorVersion > cMinorVersion)))
{
- logError(__METHOD_NAME__,"Routing initialization failed. Version of Interface to old");
+ logError(__METHOD_NAME__, "Routing initialization failed. Version of Interface to old");
dlclose(tempLibHandle);
continue;
}
- //here, the busname is saved together with the interface. Later The domains will register with the name and sinks, sources etc with the domain....
+ // here, the busname is saved together with the interface. Later The domains will register with the name and sinks, sources etc with the domain....
router->returnBusName(routerInterface.busName);
assert(!routerInterface.busName.empty());
mListInterfaces.push_back(routerInterface);
@@ -211,13 +212,13 @@ void CAmRoutingSender::loadPlugins(const std::vector<std::string>& listOfPluginD
CAmRoutingSender::~CAmRoutingSender()
{
- //unloadLibraries();
+ // unloadLibraries();
HandlesMap::iterator it = mlistActiveHandles.begin();
- //every open handle is assumed to be an error...
+ // every open handle is assumed to be an error...
for (; it != mlistActiveHandles.end(); ++it)
{
- logError(__METHOD_NAME__,"The action for the handle",it->first,"is still open");
+ logError(__METHOD_NAME__, "The action for the handle", it->first, "is still open");
}
}
@@ -226,7 +227,7 @@ am_Error_e CAmRoutingSender::startupInterfaces(CAmRoutingReceiver *iRoutingRecei
mpRoutingReceiver = iRoutingReceiver;
am_Error_e returnError = E_OK;
- std::vector<InterfaceNamePairs>::iterator iter = mListInterfaces.begin();
+ std::vector<InterfaceNamePairs>::iterator iter = mListInterfaces.begin();
std::vector<InterfaceNamePairs>::iterator iterEnd = mListInterfaces.end();
for (; iter < iterEnd; ++iter)
{
@@ -236,410 +237,428 @@ am_Error_e CAmRoutingSender::startupInterfaces(CAmRoutingReceiver *iRoutingRecei
returnError = error;
}
}
+
return (returnError);
}
-am_Error_e CAmRoutingSender::asyncAbort(const am_Handle_s& handle)
+am_Error_e CAmRoutingSender::asyncAbort(const am_Handle_s &handle)
{
- auto iter (mlistActiveHandles.find(handle));
+ auto iter(mlistActiveHandles.find(handle));
if (iter == mlistActiveHandles.end())
{
- logError(__METHOD_NAME__,"Could not find handle",handle);
- return (E_NON_EXISTENT);
+ logError(__METHOD_NAME__, "Could not find handle", handle);
+ return (E_NON_EXISTENT);
}
- logInfo(__METHOD_NAME__," handle", handle);
- return (iter->second->returnInterface()->asyncAbort(handle));
+
+ logInfo(__METHOD_NAME__, " handle", handle);
+ return (iter->second->returnInterface()->asyncAbort(handle));
}
-am_Error_e CAmRoutingSender::asyncConnect(am_Handle_s& handle, am_connectionID_t& connectionID, const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_CustomConnectionFormat_t connectionFormat)
+am_Error_e CAmRoutingSender::asyncConnect(am_Handle_s &handle, am_connectionID_t &connectionID, const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_CustomConnectionFormat_t connectionFormat)
{
- auto iter (mMapSinkInterface.find(sinkID));
- if (iter == mMapSinkInterface.end())
- {
- logError(__METHOD_NAME__,"Could not find sink",sinkID);
- return (E_NON_EXISTENT);
- }
-
- if(handleExists(handle))
- {
- if (handle.handleType==am_Handle_e::H_CONNECT)
- {
- logInfo(__METHOD_NAME__,"Resending for handle",handle);
- }
- else
- {
- logError(__METHOD_NAME__,"Handle exists but wrong type",handle);
- return(E_UNKNOWN);
- }
- }
- else
- {
-
- am_Connection_s tempConnection;
- tempConnection.sinkID = sinkID;
- tempConnection.sourceID = sourceID;
- tempConnection.connectionFormat = connectionFormat;
- tempConnection.connectionID = 0;
- tempConnection.delay=-1;
-
- am_Error_e connError(mpDatabaseHandler->enterConnectionDB(tempConnection, connectionID));
- if (connError)
- {
- return(connError);
- }
- mMapConnectionInterface.insert(std::make_pair(connectionID, iter->second));
- auto handleData = std::make_shared<handleConnect>(iter->second,connectionID,mpDatabaseHandler);
- handle = createHandle(handleData, am_Handle_e::H_CONNECT);
- }
-
- logInfo(__METHOD_NAME__,"connectionID=",connectionID,"connectionFormat=", connectionFormat, "sourceID=", sourceID, "sinkID=", sinkID,"handle=",handle);
- am_Error_e syncError(iter->second->asyncConnect(handle, connectionID, sourceID, sinkID, connectionFormat));
- if (syncError)
- {
- removeHandle(handle);
- logError(__METHOD_NAME__,"Error while calling connect connectionID:",connectionID,"sourceID:",sourceID,"sinkID:",sinkID,"connectionFormat:",connectionFormat,"handle",handle);
- mpDatabaseHandler->removeConnection(connectionID);
- }
- return(syncError);
+ auto iter(mMapSinkInterface.find(sinkID));
+ if (iter == mMapSinkInterface.end())
+ {
+ logError(__METHOD_NAME__, "Could not find sink", sinkID);
+ return (E_NON_EXISTENT);
+ }
+
+ if (handleExists(handle))
+ {
+ if (handle.handleType == am_Handle_e::H_CONNECT)
+ {
+ logInfo(__METHOD_NAME__, "Resending for handle", handle);
+ }
+ else
+ {
+ logError(__METHOD_NAME__, "Handle exists but wrong type", handle);
+ return(E_UNKNOWN);
+ }
+ }
+ else
+ {
+
+ am_Connection_s tempConnection;
+ tempConnection.sinkID = sinkID;
+ tempConnection.sourceID = sourceID;
+ tempConnection.connectionFormat = connectionFormat;
+ tempConnection.connectionID = 0;
+ tempConnection.delay = -1;
+
+ am_Error_e connError(mpDatabaseHandler->enterConnectionDB(tempConnection, connectionID));
+ if (connError)
+ {
+ return(connError);
+ }
+
+ mMapConnectionInterface.insert(std::make_pair(connectionID, iter->second));
+ auto handleData = std::make_shared<handleConnect>(iter->second, connectionID, mpDatabaseHandler);
+ handle = createHandle(handleData, am_Handle_e::H_CONNECT);
+ }
+
+ logInfo(__METHOD_NAME__, "connectionID=", connectionID, "connectionFormat=", connectionFormat, "sourceID=", sourceID, "sinkID=", sinkID, "handle=", handle);
+ am_Error_e syncError(iter->second->asyncConnect(handle, connectionID, sourceID, sinkID, connectionFormat));
+ if (syncError)
+ {
+ removeHandle(handle);
+ logError(__METHOD_NAME__, "Error while calling connect connectionID:", connectionID, "sourceID:", sourceID, "sinkID:", sinkID, "connectionFormat:", connectionFormat, "handle", handle);
+ mpDatabaseHandler->removeConnection(connectionID);
+ }
+
+ return(syncError);
}
-am_Error_e CAmRoutingSender::asyncDisconnect(am_Handle_s& handle, const am_connectionID_t connectionID)
+am_Error_e CAmRoutingSender::asyncDisconnect(am_Handle_s &handle, const am_connectionID_t connectionID)
{
- auto iter(mMapConnectionInterface.find(connectionID));
- if (iter == mMapConnectionInterface.end())
- {
- logError(__METHOD_NAME__,"Could not find connection",connectionID);
- return (E_NON_EXISTENT);
- }
-
- if(handleExists(handle))
- {
- if (handle.handleType==am_Handle_e::H_DISCONNECT)
- {
- logInfo(__METHOD_NAME__,"Resending for handle",handle);
- }
- else
- {
- logError(__METHOD_NAME__,"Handle exists but wrong type",handle);
- return(E_UNKNOWN);
- }
+ auto iter(mMapConnectionInterface.find(connectionID));
+ if (iter == mMapConnectionInterface.end())
+ {
+ logError(__METHOD_NAME__, "Could not find connection", connectionID);
+ return (E_NON_EXISTENT);
+ }
+
+ if (handleExists(handle))
+ {
+ if (handle.handleType == am_Handle_e::H_DISCONNECT)
+ {
+ logInfo(__METHOD_NAME__, "Resending for handle", handle);
+ }
+ else
+ {
+ logError(__METHOD_NAME__, "Handle exists but wrong type", handle);
+ return(E_UNKNOWN);
+ }
}
else
{
- auto handleData = std::make_shared<handleDisconnect>(iter->second,connectionID,mpDatabaseHandler,this);
- handle = createHandle(handleData, am_Handle_e::H_DISCONNECT);
- }
-
- logInfo(__METHOD_NAME__,"connectionID=", connectionID, "handle=",handle);
- am_Error_e syncError(iter->second->asyncDisconnect(handle, connectionID));
- if (syncError)
- {
- removeHandle(handle);
- logError(__METHOD_NAME__,"Error while calling disconnect connectionID:",connectionID,"handle",handle);
- }
- return(syncError);
+ auto handleData = std::make_shared<handleDisconnect>(iter->second, connectionID, mpDatabaseHandler, this);
+ handle = createHandle(handleData, am_Handle_e::H_DISCONNECT);
+ }
+
+ logInfo(__METHOD_NAME__, "connectionID=", connectionID, "handle=", handle);
+ am_Error_e syncError(iter->second->asyncDisconnect(handle, connectionID));
+ if (syncError)
+ {
+ removeHandle(handle);
+ logError(__METHOD_NAME__, "Error while calling disconnect connectionID:", connectionID, "handle", handle);
+ }
+
+ return(syncError);
}
-am_Error_e CAmRoutingSender::asyncSetSinkVolume(am_Handle_s& handle, const am_sinkID_t sinkID, const am_volume_t volume, const am_CustomRampType_t ramp, const am_time_t time)
+am_Error_e CAmRoutingSender::asyncSetSinkVolume(am_Handle_s &handle, const am_sinkID_t sinkID, const am_volume_t volume, const am_CustomRampType_t ramp, const am_time_t time)
{
- auto iter (mMapSinkInterface.find(sinkID));
- if (iter == mMapSinkInterface.end())
- {
- logError(__METHOD_NAME__,"Could not find sink",sinkID);
- return (E_NON_EXISTENT);
- }
-
- if(handleExists(handle))
- {
- if (handle.handleType==am_Handle_e::H_SETSINKVOLUME)
- {
- logInfo(__METHOD_NAME__,"Resending for handle",handle);
- }
- else
- {
- logError(__METHOD_NAME__,"Handle exists but wrong type",handle);
- return(E_UNKNOWN);
- }
- }
- else
- {
- auto handleData = std::make_shared<handleSinkVolume>(iter->second,sinkID,mpDatabaseHandler,volume);
+ auto iter(mMapSinkInterface.find(sinkID));
+ if (iter == mMapSinkInterface.end())
+ {
+ logError(__METHOD_NAME__, "Could not find sink", sinkID);
+ return (E_NON_EXISTENT);
+ }
+
+ if (handleExists(handle))
+ {
+ if (handle.handleType == am_Handle_e::H_SETSINKVOLUME)
+ {
+ logInfo(__METHOD_NAME__, "Resending for handle", handle);
+ }
+ else
+ {
+ logError(__METHOD_NAME__, "Handle exists but wrong type", handle);
+ return(E_UNKNOWN);
+ }
+ }
+ else
+ {
+ auto handleData = std::make_shared<handleSinkVolume>(iter->second, sinkID, mpDatabaseHandler, volume);
handle = createHandle(handleData, H_SETSINKVOLUME);
}
-
- logInfo(__METHOD_NAME__,"sinkID=", sinkID, "volume=", volume, "ramp=", ramp, "time=", time,"handle=",handle);
- am_Error_e syncError(iter->second->asyncSetSinkVolume(handle, sinkID, volume, ramp, time));
- if (syncError)
- {
- removeHandle(handle);
- logError(__METHOD_NAME__,"Error while calling asyncSetSinkVolume sinkID:",sinkID,"handle:",handle,"volume:",volume,"ramp:",ramp,"time:",time);
- }
- return(syncError);
+
+ logInfo(__METHOD_NAME__, "sinkID=", sinkID, "volume=", volume, "ramp=", ramp, "time=", time, "handle=", handle);
+ am_Error_e syncError(iter->second->asyncSetSinkVolume(handle, sinkID, volume, ramp, time));
+ if (syncError)
+ {
+ removeHandle(handle);
+ logError(__METHOD_NAME__, "Error while calling asyncSetSinkVolume sinkID:", sinkID, "handle:", handle, "volume:", volume, "ramp:", ramp, "time:", time);
+ }
+
+ return(syncError);
}
-am_Error_e CAmRoutingSender::asyncSetSourceVolume(am_Handle_s& handle, const am_sourceID_t sourceID, const am_volume_t volume, const am_CustomRampType_t ramp, const am_time_t time)
+am_Error_e CAmRoutingSender::asyncSetSourceVolume(am_Handle_s &handle, const am_sourceID_t sourceID, const am_volume_t volume, const am_CustomRampType_t ramp, const am_time_t time)
{
- auto iter (mMapSourceInterface.find(sourceID));
- if (iter == mMapSourceInterface.end())
- {
- logError(__METHOD_NAME__,"Could not find sourceID",sourceID);
- return (E_NON_EXISTENT);
- }
-
- if(handleExists(handle))
- {
- if (handle.handleType==am_Handle_e::H_SETSOURCEVOLUME)
- {
- logInfo(__METHOD_NAME__,"Resending for handle",handle);
- }
- else
- {
- logError(__METHOD_NAME__,"Handle exists but wrong type",handle);
- return(E_UNKNOWN);
- }
- }
- else
- {
- auto handleData = std::make_shared<handleSourceVolume>(iter->second,sourceID,mpDatabaseHandler,volume);
+ auto iter(mMapSourceInterface.find(sourceID));
+ if (iter == mMapSourceInterface.end())
+ {
+ logError(__METHOD_NAME__, "Could not find sourceID", sourceID);
+ return (E_NON_EXISTENT);
+ }
+
+ if (handleExists(handle))
+ {
+ if (handle.handleType == am_Handle_e::H_SETSOURCEVOLUME)
+ {
+ logInfo(__METHOD_NAME__, "Resending for handle", handle);
+ }
+ else
+ {
+ logError(__METHOD_NAME__, "Handle exists but wrong type", handle);
+ return(E_UNKNOWN);
+ }
+ }
+ else
+ {
+ auto handleData = std::make_shared<handleSourceVolume>(iter->second, sourceID, mpDatabaseHandler, volume);
handle = createHandle(handleData, H_SETSOURCEVOLUME);
}
-
- logInfo(__METHOD_NAME__,"sourceID=", sourceID,"volume=", volume, "ramp=", ramp, "time=", time,"handle=",handle);
- am_Error_e syncError(iter->second->asyncSetSourceVolume(handle, sourceID, volume, ramp, time));
- if (syncError)
- {
- removeHandle(handle);
- logError(__METHOD_NAME__,"Error while calling asyncSetSourceVolume sourceID:",sourceID,"handle:",handle,"volume:",volume,"ramp:",ramp,"time:",time);
- }
- return(syncError);
+
+ logInfo(__METHOD_NAME__, "sourceID=", sourceID, "volume=", volume, "ramp=", ramp, "time=", time, "handle=", handle);
+ am_Error_e syncError(iter->second->asyncSetSourceVolume(handle, sourceID, volume, ramp, time));
+ if (syncError)
+ {
+ removeHandle(handle);
+ logError(__METHOD_NAME__, "Error while calling asyncSetSourceVolume sourceID:", sourceID, "handle:", handle, "volume:", volume, "ramp:", ramp, "time:", time);
+ }
+
+ return(syncError);
}
-am_Error_e CAmRoutingSender::asyncSetSourceState(am_Handle_s& handle, const am_sourceID_t sourceID, const am_SourceState_e state)
+am_Error_e CAmRoutingSender::asyncSetSourceState(am_Handle_s &handle, const am_sourceID_t sourceID, const am_SourceState_e state)
{
- auto iter (mMapSourceInterface.find(sourceID));
- if (iter == mMapSourceInterface.end())
- {
- logError(__METHOD_NAME__,"Could not find sourceID",sourceID);
- return (E_NON_EXISTENT);
- }
-
- if(handleExists(handle))
- {
- if (handle.handleType==am_Handle_e::H_SETSOURCESTATE)
- {
- logInfo(__METHOD_NAME__,"Resending for handle",handle);
- }
- else
- {
- logError(__METHOD_NAME__,"Handle exists but wrong type",handle);
- return(E_UNKNOWN);
- }
- }
- else
- {
- auto handleData = std::make_shared<handleSourceState>(iter->second,sourceID,state,mpDatabaseHandler);
- handle = createHandle(handleData, H_SETSOURCESTATE);
- }
- logInfo(__METHOD_NAME__,"sourceID=", sourceID, "state=", state,"handle=",handle);
- am_Error_e syncError(iter->second->asyncSetSourceState(handle, sourceID, state));
- if (syncError)
- {
- removeHandle(handle);
- logError(__METHOD_NAME__,"Error while calling asyncSetSourceState sourceID:",sourceID,"handle:",handle,"state:",state);
- }
- return(syncError);
+ auto iter(mMapSourceInterface.find(sourceID));
+ if (iter == mMapSourceInterface.end())
+ {
+ logError(__METHOD_NAME__, "Could not find sourceID", sourceID);
+ return (E_NON_EXISTENT);
+ }
+
+ if (handleExists(handle))
+ {
+ if (handle.handleType == am_Handle_e::H_SETSOURCESTATE)
+ {
+ logInfo(__METHOD_NAME__, "Resending for handle", handle);
+ }
+ else
+ {
+ logError(__METHOD_NAME__, "Handle exists but wrong type", handle);
+ return(E_UNKNOWN);
+ }
+ }
+ else
+ {
+ auto handleData = std::make_shared<handleSourceState>(iter->second, sourceID, state, mpDatabaseHandler);
+ handle = createHandle(handleData, H_SETSOURCESTATE);
+ }
+
+ logInfo(__METHOD_NAME__, "sourceID=", sourceID, "state=", state, "handle=", handle);
+ am_Error_e syncError(iter->second->asyncSetSourceState(handle, sourceID, state));
+ if (syncError)
+ {
+ removeHandle(handle);
+ logError(__METHOD_NAME__, "Error while calling asyncSetSourceState sourceID:", sourceID, "handle:", handle, "state:", state);
+ }
+
+ return(syncError);
}
-am_Error_e CAmRoutingSender::asyncSetSinkSoundProperty(am_Handle_s& handle, const am_sinkID_t sinkID, const am_SoundProperty_s & soundProperty)
+am_Error_e CAmRoutingSender::asyncSetSinkSoundProperty(am_Handle_s &handle, const am_sinkID_t sinkID, const am_SoundProperty_s &soundProperty)
{
- auto iter (mMapSinkInterface.find(sinkID));
- if (iter == mMapSinkInterface.end())
- {
- logError(__METHOD_NAME__,"Could not find sink",sinkID);
- return (E_NON_EXISTENT);
- }
-
- if(handleExists(handle))
- {
- if (handle.handleType==am_Handle_e::H_SETSINKSOUNDPROPERTY)
- {
- logInfo(__METHOD_NAME__,"Resending for handle",handle);
- }
- else
- {
- logError(__METHOD_NAME__,"Handle exists but wrong type",handle);
- return(E_UNKNOWN);
- }
- }
- else
- {
- auto handleData = std::make_shared<handleSinkSoundProperty>(iter->second,sinkID,soundProperty,mpDatabaseHandler);
+ auto iter(mMapSinkInterface.find(sinkID));
+ if (iter == mMapSinkInterface.end())
+ {
+ logError(__METHOD_NAME__, "Could not find sink", sinkID);
+ return (E_NON_EXISTENT);
+ }
+
+ if (handleExists(handle))
+ {
+ if (handle.handleType == am_Handle_e::H_SETSINKSOUNDPROPERTY)
+ {
+ logInfo(__METHOD_NAME__, "Resending for handle", handle);
+ }
+ else
+ {
+ logError(__METHOD_NAME__, "Handle exists but wrong type", handle);
+ return(E_UNKNOWN);
+ }
+ }
+ else
+ {
+ auto handleData = std::make_shared<handleSinkSoundProperty>(iter->second, sinkID, soundProperty, mpDatabaseHandler);
handle = createHandle(handleData, H_SETSINKSOUNDPROPERTY);
- }
-
- logInfo(__METHOD_NAME__,"sinkID=", sinkID, "soundProperty.Type=", soundProperty.type, "soundProperty.value=", soundProperty.value,"handle=",handle);
- am_Error_e syncError(iter->second->asyncSetSinkSoundProperty(handle, sinkID, soundProperty));
- if (syncError)
- {
- removeHandle(handle);
- logError(__METHOD_NAME__,"Error while calling asyncSetSinkSoundProperty sinkID:",sinkID,"handle:",handle,"soundProperty:",soundProperty.type,soundProperty.value);
- }
- return(syncError);
+ }
+
+ logInfo(__METHOD_NAME__, "sinkID=", sinkID, "soundProperty.Type=", soundProperty.type, "soundProperty.value=", soundProperty.value, "handle=", handle);
+ am_Error_e syncError(iter->second->asyncSetSinkSoundProperty(handle, sinkID, soundProperty));
+ if (syncError)
+ {
+ removeHandle(handle);
+ logError(__METHOD_NAME__, "Error while calling asyncSetSinkSoundProperty sinkID:", sinkID, "handle:", handle, "soundProperty:", soundProperty.type, soundProperty.value);
+ }
+
+ return(syncError);
}
-am_Error_e CAmRoutingSender::asyncSetSourceSoundProperty(am_Handle_s& handle, const am_sourceID_t sourceID, const am_SoundProperty_s & soundProperty)
+am_Error_e CAmRoutingSender::asyncSetSourceSoundProperty(am_Handle_s &handle, const am_sourceID_t sourceID, const am_SoundProperty_s &soundProperty)
{
- auto iter (mMapSourceInterface.find(sourceID));
- if (iter == mMapSourceInterface.end())
- {
- logError(__METHOD_NAME__,"Could not find sourceID",sourceID);
- return (E_NON_EXISTENT);
- }
-
- if(handleExists(handle))
- {
- if (handle.handleType==am_Handle_e::H_SETSOURCESOUNDPROPERTY)
- {
- logInfo(__METHOD_NAME__,"Resending for handle",handle);
- }
- else
- {
- logError(__METHOD_NAME__,"Handle exists but wrong type",handle);
- return(E_UNKNOWN);
- }
- }
- else
- {
- auto handleData = std::make_shared<handleSourceSoundProperty>(iter->second,sourceID,soundProperty,mpDatabaseHandler);
+ auto iter(mMapSourceInterface.find(sourceID));
+ if (iter == mMapSourceInterface.end())
+ {
+ logError(__METHOD_NAME__, "Could not find sourceID", sourceID);
+ return (E_NON_EXISTENT);
+ }
+
+ if (handleExists(handle))
+ {
+ if (handle.handleType == am_Handle_e::H_SETSOURCESOUNDPROPERTY)
+ {
+ logInfo(__METHOD_NAME__, "Resending for handle", handle);
+ }
+ else
+ {
+ logError(__METHOD_NAME__, "Handle exists but wrong type", handle);
+ return(E_UNKNOWN);
+ }
+ }
+ else
+ {
+ auto handleData = std::make_shared<handleSourceSoundProperty>(iter->second, sourceID, soundProperty, mpDatabaseHandler);
handle = createHandle(handleData, H_SETSOURCESOUNDPROPERTY);
}
- logInfo(__METHOD_NAME__,"sourceID=", sourceID, "soundProperty.Type=", soundProperty.type, "soundProperty.value=", soundProperty.value,"handle=",handle);
- am_Error_e syncError(iter->second->asyncSetSourceSoundProperty(handle, sourceID, soundProperty));
- if (syncError)
- {
- removeHandle(handle);
- logError(__METHOD_NAME__,"Error while calling asyncSetSourceSoundProperty sourceID:",sourceID,"handle:",handle,"soundProperty:",soundProperty.type,soundProperty.value);
- }
- return(syncError);
+
+ logInfo(__METHOD_NAME__, "sourceID=", sourceID, "soundProperty.Type=", soundProperty.type, "soundProperty.value=", soundProperty.value, "handle=", handle);
+ am_Error_e syncError(iter->second->asyncSetSourceSoundProperty(handle, sourceID, soundProperty));
+ if (syncError)
+ {
+ removeHandle(handle);
+ logError(__METHOD_NAME__, "Error while calling asyncSetSourceSoundProperty sourceID:", sourceID, "handle:", handle, "soundProperty:", soundProperty.type, soundProperty.value);
+ }
+
+ return(syncError);
}
-am_Error_e CAmRoutingSender::asyncSetSourceSoundProperties(am_Handle_s& handle, const std::vector<am_SoundProperty_s> & listSoundProperties, const am_sourceID_t sourceID)
+am_Error_e CAmRoutingSender::asyncSetSourceSoundProperties(am_Handle_s &handle, const std::vector<am_SoundProperty_s> &listSoundProperties, const am_sourceID_t sourceID)
{
- auto iter (mMapSourceInterface.find(sourceID));
- if (iter == mMapSourceInterface.end())
- {
- logError(__METHOD_NAME__,"Could not find sourceID",sourceID);
- return (E_NON_EXISTENT);
- }
-
- if(handleExists(handle))
- {
- if (handle.handleType==am_Handle_e::H_SETSOURCESOUNDPROPERTIES)
- {
- logInfo(__METHOD_NAME__,"Resending for handle",handle);
- }
- else
- {
- logError(__METHOD_NAME__,"Handle exists but wrong type",handle);
- return(E_UNKNOWN);
- }
- }
- else
- {
- auto handleData = std::make_shared<handleSourceSoundProperties>(iter->second,sourceID,listSoundProperties,mpDatabaseHandler);
+ auto iter(mMapSourceInterface.find(sourceID));
+ if (iter == mMapSourceInterface.end())
+ {
+ logError(__METHOD_NAME__, "Could not find sourceID", sourceID);
+ return (E_NON_EXISTENT);
+ }
+
+ if (handleExists(handle))
+ {
+ if (handle.handleType == am_Handle_e::H_SETSOURCESOUNDPROPERTIES)
+ {
+ logInfo(__METHOD_NAME__, "Resending for handle", handle);
+ }
+ else
+ {
+ logError(__METHOD_NAME__, "Handle exists but wrong type", handle);
+ return(E_UNKNOWN);
+ }
+ }
+ else
+ {
+ auto handleData = std::make_shared<handleSourceSoundProperties>(iter->second, sourceID, listSoundProperties, mpDatabaseHandler);
handle = createHandle(handleData, H_SETSOURCESOUNDPROPERTIES);
}
-
- logInfo(__METHOD_NAME__,"sourceID=", sourceID);
- am_Error_e syncError(iter->second->asyncSetSourceSoundProperties(handle, sourceID, listSoundProperties));
- if (syncError)
- {
- removeHandle(handle);
- logError(__METHOD_NAME__,"Error while calling asyncSetSourceSoundProperties sourceID:",sourceID,"handle:",handle);
- }
- return(syncError);
+
+ logInfo(__METHOD_NAME__, "sourceID=", sourceID);
+ am_Error_e syncError(iter->second->asyncSetSourceSoundProperties(handle, sourceID, listSoundProperties));
+ if (syncError)
+ {
+ removeHandle(handle);
+ logError(__METHOD_NAME__, "Error while calling asyncSetSourceSoundProperties sourceID:", sourceID, "handle:", handle);
+ }
+
+ return(syncError);
}
-am_Error_e CAmRoutingSender::asyncSetSinkSoundProperties(am_Handle_s& handle, const std::vector<am_SoundProperty_s> & listSoundProperties, const am_sinkID_t sinkID)
+am_Error_e CAmRoutingSender::asyncSetSinkSoundProperties(am_Handle_s &handle, const std::vector<am_SoundProperty_s> &listSoundProperties, const am_sinkID_t sinkID)
{
- auto iter (mMapSinkInterface.find(sinkID));
- if (iter == mMapSinkInterface.end())
- {
- logError(__METHOD_NAME__,"Could not find sink",sinkID);
- return (E_NON_EXISTENT);
- }
-
- if(handleExists(handle))
- {
- if (handle.handleType==am_Handle_e::H_SETSINKSOUNDPROPERTIES)
- {
- logInfo(__METHOD_NAME__,"Resending for handle",handle);
- }
- else
- {
- logError(__METHOD_NAME__,"Handle exists but wrong type",handle);
- return(E_UNKNOWN);
- }
- }
- else
- {
- auto handleData = std::make_shared<handleSinkSoundProperties>(iter->second,sinkID,listSoundProperties,mpDatabaseHandler);
+ auto iter(mMapSinkInterface.find(sinkID));
+ if (iter == mMapSinkInterface.end())
+ {
+ logError(__METHOD_NAME__, "Could not find sink", sinkID);
+ return (E_NON_EXISTENT);
+ }
+
+ if (handleExists(handle))
+ {
+ if (handle.handleType == am_Handle_e::H_SETSINKSOUNDPROPERTIES)
+ {
+ logInfo(__METHOD_NAME__, "Resending for handle", handle);
+ }
+ else
+ {
+ logError(__METHOD_NAME__, "Handle exists but wrong type", handle);
+ return(E_UNKNOWN);
+ }
+ }
+ else
+ {
+ auto handleData = std::make_shared<handleSinkSoundProperties>(iter->second, sinkID, listSoundProperties, mpDatabaseHandler);
handle = createHandle(handleData, H_SETSINKSOUNDPROPERTIES);
}
-
- logInfo(__METHOD_NAME__,"sinkID=", sinkID,"handle=",handle);
- am_Error_e syncError(iter->second->asyncSetSinkSoundProperties(handle, sinkID, listSoundProperties));
- if (syncError)
- {
- removeHandle(handle);
- logError(__METHOD_NAME__,"Error while calling asyncSetSinkSoundProperties sinkID:",sinkID,"handle:",handle);
- }
- return(syncError);
+
+ logInfo(__METHOD_NAME__, "sinkID=", sinkID, "handle=", handle);
+ am_Error_e syncError(iter->second->asyncSetSinkSoundProperties(handle, sinkID, listSoundProperties));
+ if (syncError)
+ {
+ removeHandle(handle);
+ logError(__METHOD_NAME__, "Error while calling asyncSetSinkSoundProperties sinkID:", sinkID, "handle:", handle);
+ }
+
+ return(syncError);
}
-am_Error_e CAmRoutingSender::asyncCrossFade(am_Handle_s& handle, const am_crossfaderID_t crossfaderID, const am_HotSink_e hotSink, const am_CustomRampType_t rampType, const am_time_t time)
+am_Error_e CAmRoutingSender::asyncCrossFade(am_Handle_s &handle, const am_crossfaderID_t crossfaderID, const am_HotSink_e hotSink, const am_CustomRampType_t rampType, const am_time_t time)
{
- auto iter (mMapCrossfaderInterface.find(crossfaderID));
- if (iter == mMapCrossfaderInterface.end())
- {
- logError(__METHOD_NAME__,"Could not find crossfaderID",crossfaderID);
- return (E_NON_EXISTENT);
- }
-
- if(handleExists(handle))
- {
- if (handle.handleType==am_Handle_e::H_CROSSFADE)
- {
- logInfo(__METHOD_NAME__,"Resending for handle",handle);
- }
- else
- {
- logError(__METHOD_NAME__,"Handle exists but wrong type",handle);
- return(E_UNKNOWN);
- }
- }
- else
- {
- auto handleData = std::make_shared<handleCrossFader>(iter->second,crossfaderID,hotSink,mpDatabaseHandler);
+ auto iter(mMapCrossfaderInterface.find(crossfaderID));
+ if (iter == mMapCrossfaderInterface.end())
+ {
+ logError(__METHOD_NAME__, "Could not find crossfaderID", crossfaderID);
+ return (E_NON_EXISTENT);
+ }
+
+ if (handleExists(handle))
+ {
+ if (handle.handleType == am_Handle_e::H_CROSSFADE)
+ {
+ logInfo(__METHOD_NAME__, "Resending for handle", handle);
+ }
+ else
+ {
+ logError(__METHOD_NAME__, "Handle exists but wrong type", handle);
+ return(E_UNKNOWN);
+ }
+ }
+ else
+ {
+ auto handleData = std::make_shared<handleCrossFader>(iter->second, crossfaderID, hotSink, mpDatabaseHandler);
handle = createHandle(handleData, H_CROSSFADE);
- }
-
- logInfo(__METHOD_NAME__,"hotSource=", hotSink, "crossfaderID=", crossfaderID, "rampType=", rampType, "rampTime=", time,"handle=",handle);
- am_Error_e syncError(iter->second->asyncCrossFade(handle, crossfaderID, hotSink, rampType, time));
- if (syncError)
- {
- removeHandle(handle);
- }
- return(syncError);
+ }
+
+ logInfo(__METHOD_NAME__, "hotSource=", hotSink, "crossfaderID=", crossfaderID, "rampType=", rampType, "rampTime=", time, "handle=", handle);
+ am_Error_e syncError(iter->second->asyncCrossFade(handle, crossfaderID, hotSink, rampType, time));
+ if (syncError)
+ {
+ removeHandle(handle);
+ }
+
+ return(syncError);
}
am_Error_e CAmRoutingSender::setDomainState(const am_domainID_t domainID, const am_DomainState_e domainState)
{
- logInfo(__METHOD_NAME__,"domainID=", domainID, "domainState=", domainState);
+ logInfo(__METHOD_NAME__, "domainID=", domainID, "domainState=", domainState);
DomainInterfaceMap::iterator iter = mMapDomainInterface.begin();
iter = mMapDomainInterface.find(domainID);
if (iter != mMapDomainInterface.end())
+ {
return (iter->second->setDomainState(domainID, domainState));
+ }
+
return (E_NON_EXISTENT);
}
@@ -648,9 +667,9 @@ am_Error_e CAmRoutingSender::setDomainState(const am_domainID_t domainID, const
* this adds the domain to the lookup table of the Router. The data is used to have a quick lookup of the correct pluginInterface.
* This must be done whenever a domain is registered.
*/
-am_Error_e CAmRoutingSender::addDomainLookup(const am_Domain_s& domainData)
+am_Error_e CAmRoutingSender::addDomainLookup(const am_Domain_s &domainData)
{
- std::vector<InterfaceNamePairs>::iterator iter = mListInterfaces.begin();
+ std::vector<InterfaceNamePairs>::iterator iter = mListInterfaces.begin();
std::vector<InterfaceNamePairs>::iterator iterEnd = mListInterfaces.end();
for (; iter < iterEnd; ++iter)
{
@@ -660,7 +679,8 @@ am_Error_e CAmRoutingSender::addDomainLookup(const am_Domain_s& domainData)
return (E_OK);
}
}
- logError(__PRETTY_FUNCTION__," Could not find busname for bus",domainData.busname);
+
+ logError(__PRETTY_FUNCTION__, " Could not find busname for bus", domainData.busname);
return (E_UNKNOWN);
}
@@ -669,7 +689,7 @@ am_Error_e CAmRoutingSender::addDomainLookup(const am_Domain_s& domainData)
* this adds the Source to the lookup table of the Router. The data is used to have a quick lookup of the correct pluginInterface.
* This must be done whenever a Source is registered.
*/
-am_Error_e CAmRoutingSender::addSourceLookup(const am_Source_s& sourceData)
+am_Error_e CAmRoutingSender::addSourceLookup(const am_Source_s &sourceData)
{
DomainInterfaceMap::iterator iter = mMapDomainInterface.begin();
iter = mMapDomainInterface.find(sourceData.domainID);
@@ -678,7 +698,8 @@ am_Error_e CAmRoutingSender::addSourceLookup(const am_Source_s& sourceData)
mMapSourceInterface.insert(std::make_pair(sourceData.sourceID, iter->second));
return (E_OK);
}
- logError(__PRETTY_FUNCTION__," Could not find domainInterface for domainID",sourceData.domainID);
+
+ logError(__PRETTY_FUNCTION__, " Could not find domainInterface for domainID", sourceData.domainID);
return (E_UNKNOWN);
}
@@ -687,7 +708,7 @@ am_Error_e CAmRoutingSender::addSourceLookup(const am_Source_s& sourceData)
* this adds the Sink to the lookup table of the Router. The data is used to have a quick lookup of the correct pluginInterface.
* This must be done whenever a Sink is registered.
*/
-am_Error_e CAmRoutingSender::addSinkLookup(const am_Sink_s& sinkData)
+am_Error_e CAmRoutingSender::addSinkLookup(const am_Sink_s &sinkData)
{
DomainInterfaceMap::iterator iter = mMapDomainInterface.begin();
iter = mMapDomainInterface.find(sinkData.domainID);
@@ -696,7 +717,8 @@ am_Error_e CAmRoutingSender::addSinkLookup(const am_Sink_s& sinkData)
mMapSinkInterface.insert(std::make_pair(sinkData.sinkID, iter->second));
return (E_OK);
}
- logError(__PRETTY_FUNCTION__,"Could not find domainInterface for domainID",sinkData.domainID);
+
+ logError(__PRETTY_FUNCTION__, "Could not find domainInterface for domainID", sinkData.domainID);
return (E_UNKNOWN);
}
@@ -705,7 +727,7 @@ am_Error_e CAmRoutingSender::addSinkLookup(const am_Sink_s& sinkData)
* this adds the Crossfader to the lookup table of the Router. The data is used to have a quick lookup of the correct pluginInterface.
* This must be done whenever a Crossfader is registered.
*/
-am_Error_e CAmRoutingSender::addCrossfaderLookup(const am_Crossfader_s& crossfaderData)
+am_Error_e CAmRoutingSender::addCrossfaderLookup(const am_Crossfader_s &crossfaderData)
{
DomainInterfaceMap::iterator iter = mMapSourceInterface.begin();
iter = mMapSourceInterface.find(crossfaderData.sourceID);
@@ -714,7 +736,8 @@ am_Error_e CAmRoutingSender::addCrossfaderLookup(const am_Crossfader_s& crossfad
mMapSourceInterface.insert(std::make_pair(crossfaderData.crossfaderID, iter->second));
return (E_OK);
}
- logError(__PRETTY_FUNCTION__," Could not find sourceInterface for source",crossfaderData.sourceID);
+
+ logError(__PRETTY_FUNCTION__, " Could not find sourceInterface for source", crossfaderData.sourceID);
return (E_UNKNOWN);
}
@@ -791,17 +814,18 @@ am_Error_e CAmRoutingSender::removeCrossfaderLookup(const am_crossfaderID_t cros
* @param handle to be removed
* @return E_OK in case of success
*/
-am_Error_e CAmRoutingSender::removeHandle(const am_Handle_s& handle)
+am_Error_e CAmRoutingSender::removeHandle(const am_Handle_s &handle)
{
if (mlistActiveHandles.erase(handle))
{
return (E_OK);
}
- logError(__METHOD_NAME__,"Could not remove handle",handle.handle);
+
+ logError(__METHOD_NAME__, "Could not remove handle", handle.handle);
return (E_NON_EXISTENT);
}
-am_Error_e CAmRoutingSender::getListHandles(std::vector<am_Handle_s> & listHandles) const
+am_Error_e CAmRoutingSender::getListHandles(std::vector<am_Handle_s> &listHandles) const
{
listHandles.clear();
HandlesMap::const_iterator it = mlistActiveHandles.begin();
@@ -809,6 +833,7 @@ am_Error_e CAmRoutingSender::getListHandles(std::vector<am_Handle_s> & listHandl
{
listHandles.push_back(it->first);
}
+
return (E_OK);
}
@@ -822,30 +847,32 @@ am_Handle_s CAmRoutingSender::createHandle(std::shared_ptr<handleDataBase> handl
{
am_Handle_s handle;
handle.handleType = type;
-
- for (int checkOverflow=0;checkOverflow<1024;checkOverflow++)
- {
- if (++mHandleCount>=1024) //defined by 10 bit (out if structure!)
- {
- mHandleCount=1;
- }
- handle.handle = mHandleCount;
-
- if ( mlistActiveHandles.find(handle) == mlistActiveHandles.end() )
- {
- mlistActiveHandles.insert(std::make_pair(handle, handleData));
- if (mlistActiveHandles.size()>100)
- {
- logWarning(__METHOD_NAME__,"too many open handles, number of handles: ", mlistActiveHandles.size());
- }
- logInfo(__METHOD_NAME__,handle.handle, handle.handleType);
- return (handle);
- }
- }
-
- logError(__METHOD_NAME__,"could not create new handle, all handles in use!");
- handle.handle=0;
-
+
+ for (int checkOverflow = 0; checkOverflow < 1024; checkOverflow++)
+ {
+ if (++mHandleCount >= 1024) // defined by 10 bit (out if structure!)
+ {
+ mHandleCount = 1;
+ }
+
+ handle.handle = mHandleCount;
+
+ if ( mlistActiveHandles.find(handle) == mlistActiveHandles.end())
+ {
+ mlistActiveHandles.insert(std::make_pair(handle, handleData));
+ if (mlistActiveHandles.size() > 100)
+ {
+ logWarning(__METHOD_NAME__, "too many open handles, number of handles: ", mlistActiveHandles.size());
+ }
+
+ logInfo(__METHOD_NAME__, handle.handle, handle.handleType);
+ return (handle);
+ }
+ }
+
+ logError(__METHOD_NAME__, "could not create new handle, all handles in use!");
+ handle.handle = 0;
+
return(handle);
}
@@ -853,19 +880,19 @@ void CAmRoutingSender::setRoutingReady()
{
mpRoutingReceiver->waitOnStartup(false);
- //create a list of handles
+ // create a list of handles
std::vector<uint16_t> listStartupHandles;
for (size_t i = 0; i < mListInterfaces.size(); i++)
{
listStartupHandles.push_back(mpRoutingReceiver->getStartupHandle());
}
- //set the receiver ready to wait for replies
+ // set the receiver ready to wait for replies
mpRoutingReceiver->waitOnStartup(true);
- std::vector<InterfaceNamePairs>::iterator iter = mListInterfaces.begin();
+ std::vector<InterfaceNamePairs>::iterator iter = mListInterfaces.begin();
std::vector<InterfaceNamePairs>::iterator iterEnd = mListInterfaces.end();
- std::vector<uint16_t>::const_iterator handleIter(listStartupHandles.begin());
+ std::vector<uint16_t>::const_iterator handleIter(listStartupHandles.begin());
for (; iter < iterEnd; ++iter)
{
(*iter).routingInterface->setRoutingReady(*(handleIter++));
@@ -875,301 +902,328 @@ void CAmRoutingSender::setRoutingReady()
void CAmRoutingSender::setRoutingRundown()
{
mpRoutingReceiver->waitOnRundown(false);
- //create a list of handles
+ // create a list of handles
std::vector<uint16_t> listStartupHandles;
for (size_t i = 0; i < mListInterfaces.size(); i++)
{
listStartupHandles.push_back(mpRoutingReceiver->getRundownHandle());
}
- //set the receiver ready to wait for replies
+ // set the receiver ready to wait for replies
mpRoutingReceiver->waitOnRundown(true);
- std::vector<InterfaceNamePairs>::iterator iter = mListInterfaces.begin();
+ std::vector<InterfaceNamePairs>::iterator iter = mListInterfaces.begin();
std::vector<InterfaceNamePairs>::iterator iterEnd = mListInterfaces.end();
- std::vector<uint16_t>::const_iterator handleIter(listStartupHandles.begin());
+ std::vector<uint16_t>::const_iterator handleIter(listStartupHandles.begin());
for (; iter < iterEnd; ++iter)
{
(*iter).routingInterface->setRoutingRundown(*(handleIter++));
}
}
-am_Error_e CAmRoutingSender::asyncSetVolumes(am_Handle_s& handle, const std::vector<am_Volumes_s>& listVolumes)
+am_Error_e CAmRoutingSender::asyncSetVolumes(am_Handle_s &handle, const std::vector<am_Volumes_s> &listVolumes)
{
- IAmRoutingSend* pRoutingInterface(NULL);
+ IAmRoutingSend *pRoutingInterface(NULL);
if (listVolumes.empty())
+ {
return (E_NOT_POSSIBLE);
+ }
- //we need an interface so lets get either the sink or source ID from the first entry in the listVolumes
- if (listVolumes[0].volumeType==VT_SINK)
+ // we need an interface so lets get either the sink or source ID from the first entry in the listVolumes
+ if (listVolumes[0].volumeType == VT_SINK)
{
- am_sinkID_t sinkID=listVolumes[0].volumeID.sink;
- SinkInterfaceMap::iterator iter = mMapSinkInterface.begin();
+ am_sinkID_t sinkID = listVolumes[0].volumeID.sink;
+ SinkInterfaceMap::iterator iter = mMapSinkInterface.begin();
iter = mMapSinkInterface.find(sinkID);
- if(iter!=mMapSinkInterface.end())
- pRoutingInterface=iter->second;
+ if (iter != mMapSinkInterface.end())
+ {
+ pRoutingInterface = iter->second;
+ }
else
+ {
return(E_NON_EXISTENT);
+ }
}
-
- else if (listVolumes[0].volumeType==VT_SOURCE)
+ else if (listVolumes[0].volumeType == VT_SOURCE)
{
- am_sourceID_t sourceID=listVolumes[0].volumeID.source;
- SourceInterfaceMap::iterator iter = mMapSourceInterface.begin();
+ am_sourceID_t sourceID = listVolumes[0].volumeID.source;
+ SourceInterfaceMap::iterator iter = mMapSourceInterface.begin();
iter = mMapSourceInterface.find(sourceID);
- if (iter!=mMapSourceInterface.end())
- pRoutingInterface=iter->second;
+ if (iter != mMapSourceInterface.end())
+ {
+ pRoutingInterface = iter->second;
+ }
else
+ {
return(E_NON_EXISTENT);
+ }
}
else
+ {
return (E_NON_EXISTENT);
+ }
- auto handleData = std::make_shared<handleSetVolumes>(pRoutingInterface,listVolumes,mpDatabaseHandler);
+ auto handleData = std::make_shared<handleSetVolumes>(pRoutingInterface, listVolumes, mpDatabaseHandler);
handle = createHandle(handleData, H_SETVOLUMES);
logInfo(__METHOD_NAME__, "handle=", handle);
am_Error_e syncError(pRoutingInterface->asyncSetVolumes(handle, listVolumes));
if (syncError)
- {
- removeHandle(handle);
- }
- return(syncError);
+ {
+ removeHandle(handle);
+ }
+
+ return(syncError);
}
-am_Error_e CAmRoutingSender::asyncSetSinkNotificationConfiguration(am_Handle_s& handle, const am_sinkID_t sinkID, const am_NotificationConfiguration_s& notificationConfiguration)
+am_Error_e CAmRoutingSender::asyncSetSinkNotificationConfiguration(am_Handle_s &handle, const am_sinkID_t sinkID, const am_NotificationConfiguration_s &notificationConfiguration)
{
- auto iter (mMapSinkInterface.find(sinkID));
- if (iter == mMapSinkInterface.end())
- {
- logError(__METHOD_NAME__,"Could not find sink",sinkID);
- return (E_NON_EXISTENT);
- }
-
- if(handleExists(handle))
- {
- if (handle.handleType==am_Handle_e::H_SETSINKNOTIFICATION)
- {
- logInfo(__METHOD_NAME__,"Resending for handle",handle);
- }
- else
- {
- logError(__METHOD_NAME__,"Handle exists but wrong type",handle);
- return(E_UNKNOWN);
- }
- }
- else
- {
- auto handleData = std::make_shared<handleSetSinkNotificationConfiguration>(iter->second,sinkID,notificationConfiguration,mpDatabaseHandler);
+ auto iter(mMapSinkInterface.find(sinkID));
+ if (iter == mMapSinkInterface.end())
+ {
+ logError(__METHOD_NAME__, "Could not find sink", sinkID);
+ return (E_NON_EXISTENT);
+ }
+
+ if (handleExists(handle))
+ {
+ if (handle.handleType == am_Handle_e::H_SETSINKNOTIFICATION)
+ {
+ logInfo(__METHOD_NAME__, "Resending for handle", handle);
+ }
+ else
+ {
+ logError(__METHOD_NAME__, "Handle exists but wrong type", handle);
+ return(E_UNKNOWN);
+ }
+ }
+ else
+ {
+ auto handleData = std::make_shared<handleSetSinkNotificationConfiguration>(iter->second, sinkID, notificationConfiguration, mpDatabaseHandler);
handle = createHandle(handleData, H_SETSINKNOTIFICATION);
}
- logInfo(__METHOD_NAME__,"sinkID=",sinkID,"notificationConfiguration.type=",notificationConfiguration.type,"notificationConfiguration.status",notificationConfiguration.status,"notificationConfiguration.parameter",notificationConfiguration.parameter);
- am_Error_e syncError(iter->second->asyncSetSinkNotificationConfiguration(handle, sinkID, notificationConfiguration));
- if (syncError)
- {
- removeHandle(handle);
- logError(__METHOD_NAME__,"Error while calling asyncSetSinkNotificationConfiguration sinkID:",sinkID,"handle:",handle);
- }
- return(syncError);
+ logInfo(__METHOD_NAME__, "sinkID=", sinkID, "notificationConfiguration.type=", notificationConfiguration.type, "notificationConfiguration.status", notificationConfiguration.status, "notificationConfiguration.parameter", notificationConfiguration.parameter);
+ am_Error_e syncError(iter->second->asyncSetSinkNotificationConfiguration(handle, sinkID, notificationConfiguration));
+ if (syncError)
+ {
+ removeHandle(handle);
+ logError(__METHOD_NAME__, "Error while calling asyncSetSinkNotificationConfiguration sinkID:", sinkID, "handle:", handle);
+ }
+
+ return(syncError);
}
-am_Error_e CAmRoutingSender::asyncSetSourceNotificationConfiguration(am_Handle_s& handle, const am_sourceID_t sourceID, const am_NotificationConfiguration_s& notificationConfiguration)
+am_Error_e CAmRoutingSender::asyncSetSourceNotificationConfiguration(am_Handle_s &handle, const am_sourceID_t sourceID, const am_NotificationConfiguration_s &notificationConfiguration)
{
- auto iter (mMapSourceInterface.find(sourceID));
- if (iter == mMapSourceInterface.end())
- {
- logError(__METHOD_NAME__,"Could not find sourceID",sourceID);
- return (E_NON_EXISTENT);
- }
-
- if(handleExists(handle))
- {
- if (handle.handleType==am_Handle_e::H_SETSOURCENOTIFICATION)
- {
- logInfo(__METHOD_NAME__,"Resending for handle",handle);
- }
- else
- {
- logError(__METHOD_NAME__,"Handle exists but wrong type",handle);
- return(E_UNKNOWN);
- }
- }
- else
- {
- auto handleData = std::make_shared<handleSetSourceNotificationConfiguration>(iter->second,sourceID,notificationConfiguration,mpDatabaseHandler);
+ auto iter(mMapSourceInterface.find(sourceID));
+ if (iter == mMapSourceInterface.end())
+ {
+ logError(__METHOD_NAME__, "Could not find sourceID", sourceID);
+ return (E_NON_EXISTENT);
+ }
+
+ if (handleExists(handle))
+ {
+ if (handle.handleType == am_Handle_e::H_SETSOURCENOTIFICATION)
+ {
+ logInfo(__METHOD_NAME__, "Resending for handle", handle);
+ }
+ else
+ {
+ logError(__METHOD_NAME__, "Handle exists but wrong type", handle);
+ return(E_UNKNOWN);
+ }
+ }
+ else
+ {
+ auto handleData = std::make_shared<handleSetSourceNotificationConfiguration>(iter->second, sourceID, notificationConfiguration, mpDatabaseHandler);
handle = createHandle(handleData, H_SETSOURCENOTIFICATION);
}
- logInfo(__METHOD_NAME__,"sourceID=",sourceID,"notificationConfiguration.type=",notificationConfiguration.type,"notificationConfiguration.status",notificationConfiguration.status,"notificationConfiguration.parameter",notificationConfiguration.parameter);
- am_Error_e syncError(iter->second->asyncSetSourceNotificationConfiguration(handle, sourceID, notificationConfiguration));
- if (syncError)
- {
- removeHandle(handle);
- logError(__METHOD_NAME__,"Error while calling asyncSetSourceNotificationConfiguration sourceID:",sourceID,"handle:",handle);
- }
- return(syncError);
+ logInfo(__METHOD_NAME__, "sourceID=", sourceID, "notificationConfiguration.type=", notificationConfiguration.type, "notificationConfiguration.status", notificationConfiguration.status, "notificationConfiguration.parameter", notificationConfiguration.parameter);
+ am_Error_e syncError(iter->second->asyncSetSourceNotificationConfiguration(handle, sourceID, notificationConfiguration));
+ if (syncError)
+ {
+ removeHandle(handle);
+ logError(__METHOD_NAME__, "Error while calling asyncSetSourceNotificationConfiguration sourceID:", sourceID, "handle:", handle);
+ }
+
+ return(syncError);
}
void CAmRoutingSender::unloadLibraries(void)
{
- std::vector<void*>::iterator iterator = mListLibraryHandles.begin();
+ std::vector<void *>::iterator iterator = mListLibraryHandles.begin();
for (; iterator < mListLibraryHandles.end(); ++iterator)
{
dlclose(*iterator);
}
+
mListLibraryHandles.clear();
}
-am_Error_e CAmRoutingSender::getListPlugins(std::vector<std::string>& interfaces) const
+am_Error_e CAmRoutingSender::getListPlugins(std::vector<std::string> &interfaces) const
{
std::vector<InterfaceNamePairs>::const_iterator it = mListInterfaces.begin();
for (; it != mListInterfaces.end(); ++it)
{
interfaces.push_back(it->busName);
}
+
return (E_OK);
}
-void CAmRoutingSender::getInterfaceVersion(std::string & version) const
+void CAmRoutingSender::getInterfaceVersion(std::string &version) const
{
version = RoutingVersion;
}
-am_Error_e CAmRoutingSender::resyncConnectionState(const am_domainID_t domainID,std::vector<am_Connection_s>& listOfExistingConnections)
+
+am_Error_e CAmRoutingSender::resyncConnectionState(const am_domainID_t domainID, std::vector<am_Connection_s> &listOfExistingConnections)
{
DomainInterfaceMap::iterator iter = mMapDomainInterface.begin();
iter = mMapDomainInterface.find(domainID);
if (iter != mMapDomainInterface.end())
+ {
return (iter->second->resyncConnectionState(domainID, listOfExistingConnections));
+ }
+
return (E_NON_EXISTENT);
}
am_Error_e CAmRoutingSender::writeToDatabaseAndRemove(const am_Handle_s handle)
{
auto it(mlistActiveHandles.find(handle));
- if (it!=mlistActiveHandles.end())
+ if (it != mlistActiveHandles.end())
{
- am_Error_e error(it->second->writeDataToDatabase());
- mlistActiveHandles.erase(handle);
+ am_Error_e error(it->second->writeDataToDatabase());
+ mlistActiveHandles.erase(handle);
return (error);
}
- logError(__METHOD_NAME__,"could not find handle data for handle",handle);
- return (am_Error_e::E_NON_EXISTENT);
+
+ logError(__METHOD_NAME__, "could not find handle data for handle", handle);
+ return (am_Error_e::E_NON_EXISTENT);
}
void CAmRoutingSender::checkVolume(const am_Handle_s handle, const am_volume_t volume)
{
auto it(mlistActiveHandles.find(handle));
- if (it!=mlistActiveHandles.end())
+ if (it != mlistActiveHandles.end())
{
- handleVolumeBase* basePtr = static_cast<handleVolumeBase*>(it->second.get());
- if (basePtr->returnVolume()!=volume)
- {
- logError(__METHOD_NAME__,"volume returned for handle does not match: ",volume,"expected:",basePtr->returnVolume());
- }
- return;
+ handleVolumeBase *basePtr = static_cast<handleVolumeBase *>(it->second.get());
+ if (basePtr->returnVolume() != volume)
+ {
+ logError(__METHOD_NAME__, "volume returned for handle does not match: ", volume, "expected:", basePtr->returnVolume());
+ }
+
+ return;
}
- logError(__METHOD_NAME__,"could not find handle data for handle",handle);
+
+ logError(__METHOD_NAME__, "could not find handle data for handle", handle);
}
bool CAmRoutingSender::handleExists(const am_Handle_s handle)
{
auto iter(mlistActiveHandles.find(handle));
- if (iter!=mlistActiveHandles.end())
+ if (iter != mlistActiveHandles.end())
{
- return (true);
- }
- return (false);
+ return (true);
+ }
+
+ return (false);
}
am_Error_e CAmRoutingSender::handleSinkSoundProperty::writeDataToDatabase()
{
- return (mpDatabaseHandler->changeSinkSoundPropertyDB(mSoundProperty,mSinkID));
+ return (mpDatabaseHandler->changeSinkSoundPropertyDB(mSoundProperty, mSinkID));
}
am_Error_e CAmRoutingSender::handleSinkSoundProperties::writeDataToDatabase()
{
- std::vector<am_SoundProperty_s>::const_iterator it = mlistSoundProperties.begin();
- for (; it != mlistSoundProperties.end(); ++it)
- {
- mpDatabaseHandler->changeSinkSoundPropertyDB(*it, mSinkID);
- }
- return (am_Error_e::E_OK);
+ std::vector<am_SoundProperty_s>::const_iterator it = mlistSoundProperties.begin();
+ for (; it != mlistSoundProperties.end(); ++it)
+ {
+ mpDatabaseHandler->changeSinkSoundPropertyDB(*it, mSinkID);
+ }
+
+ return (am_Error_e::E_OK);
}
am_Error_e CAmRoutingSender::handleSourceSoundProperty::writeDataToDatabase()
{
- return (mpDatabaseHandler->changeSourceSoundPropertyDB(mSoundProperty,mSourceID));
+ return (mpDatabaseHandler->changeSourceSoundPropertyDB(mSoundProperty, mSourceID));
}
am_Error_e CAmRoutingSender::handleSourceSoundProperties::writeDataToDatabase()
{
- std::vector<am_SoundProperty_s>::const_iterator it = mlistSoundProperties.begin();
- for (; it != mlistSoundProperties.end(); ++it)
- {
- mpDatabaseHandler->changeSourceSoundPropertyDB(*it, mSourceID);
- }
- return (am_Error_e::E_OK);
+ std::vector<am_SoundProperty_s>::const_iterator it = mlistSoundProperties.begin();
+ for (; it != mlistSoundProperties.end(); ++it)
+ {
+ mpDatabaseHandler->changeSourceSoundPropertyDB(*it, mSourceID);
+ }
+
+ return (am_Error_e::E_OK);
}
am_Error_e CAmRoutingSender::handleSourceState::writeDataToDatabase()
{
- return (mpDatabaseHandler->changeSourceState(mSourceID,mSourceState));
+ return (mpDatabaseHandler->changeSourceState(mSourceID, mSourceState));
}
am_Error_e CAmRoutingSender::handleSourceVolume::writeDataToDatabase()
{
- return (mpDatabaseHandler->changeSourceVolume(mSourceID,returnVolume()));
+ return (mpDatabaseHandler->changeSourceVolume(mSourceID, returnVolume()));
}
am_Error_e CAmRoutingSender::handleSinkVolume::writeDataToDatabase()
{
- return (mpDatabaseHandler->changeSinkVolume(mSinkID,returnVolume()));
+ return (mpDatabaseHandler->changeSinkVolume(mSinkID, returnVolume()));
}
am_Error_e CAmRoutingSender::handleCrossFader::writeDataToDatabase()
{
- return (mpDatabaseHandler->changeCrossFaderHotSink(mCrossfaderID, mHotSink));
+ return (mpDatabaseHandler->changeCrossFaderHotSink(mCrossfaderID, mHotSink));
}
am_Error_e CAmRoutingSender::handleConnect::writeDataToDatabase()
{
- mConnectionPending = false;
- return (mpDatabaseHandler->changeConnectionFinal(mConnectionID));
+ mConnectionPending = false;
+ return (mpDatabaseHandler->changeConnectionFinal(mConnectionID));
}
am_Error_e CAmRoutingSender::handleDisconnect::writeDataToDatabase()
{
- return E_OK;
+ return E_OK;
}
am_Error_e CAmRoutingSender::handleSetVolumes::writeDataToDatabase()
{
- std::vector<am_Volumes_s>::const_iterator iterator (mlistVolumes.begin());
-
- for (;iterator!=mlistVolumes.end();++iterator)
- {
- if (iterator->volumeType==VT_SINK)
- {
- return (mpDatabaseHandler->changeSinkVolume(iterator->volumeID.sink,iterator->volume));
- }
- else if (iterator->volumeType==VT_SOURCE)
- {
- return (mpDatabaseHandler->changeSourceVolume(iterator->volumeID.source,iterator->volume));
- }
- }
- return (am_Error_e::E_WRONG_FORMAT);
+ std::vector<am_Volumes_s>::const_iterator iterator(mlistVolumes.begin());
+
+ for (; iterator != mlistVolumes.end(); ++iterator)
+ {
+ if (iterator->volumeType == VT_SINK)
+ {
+ return (mpDatabaseHandler->changeSinkVolume(iterator->volumeID.sink, iterator->volume));
+ }
+ else if (iterator->volumeType == VT_SOURCE)
+ {
+ return (mpDatabaseHandler->changeSourceVolume(iterator->volumeID.source, iterator->volume));
+ }
+ }
+
+ return (am_Error_e::E_WRONG_FORMAT);
}
am_Error_e CAmRoutingSender::handleSetSinkNotificationConfiguration::writeDataToDatabase()
{
- return (mpDatabaseHandler->changeSinkNotificationConfigurationDB(mSinkID,mNotificationConfiguration));
+ return (mpDatabaseHandler->changeSinkNotificationConfigurationDB(mSinkID, mNotificationConfiguration));
}
am_Error_e CAmRoutingSender::handleSetSourceNotificationConfiguration::writeDataToDatabase()
{
- return (mpDatabaseHandler->changeSourceNotificationConfigurationDB(mSourceID,mNotificationConfiguration));
+ return (mpDatabaseHandler->changeSourceNotificationConfigurationDB(mSourceID, mNotificationConfiguration));
}
am_Error_e CAmRoutingSender::removeConnectionLookup(const am_connectionID_t connectionID)
@@ -1181,21 +1235,21 @@ am_Error_e CAmRoutingSender::removeConnectionLookup(const am_connectionID_t conn
mMapConnectionInterface.erase(iter);
return (E_OK);
}
+
return (E_UNKNOWN);
}
CAmRoutingSender::handleConnect::~handleConnect()
{
- if (mConnectionPending)
- {
- mpDatabaseHandler->removeConnection(mConnectionID);
- }
+ if (mConnectionPending)
+ {
+ mpDatabaseHandler->removeConnection(mConnectionID);
+ }
}
CAmRoutingSender::handleDisconnect::~handleDisconnect()
{
- mpDatabaseHandler->removeConnection(mConnectionID);
+ mpDatabaseHandler->removeConnection(mConnectionID);
}
}
-