diff options
author | Martin Koch <mkoch@de.adit-jv.com> | 2020-01-17 09:07:47 +0100 |
---|---|---|
committer | Martin Koch <mkoch@de.adit-jv.com> | 2020-01-17 09:14:51 +0100 |
commit | c1e284360ec02b06ccb0a97a00fed05ef0bb2c60 (patch) | |
tree | 752b600be063bd3938e7e8fc7b304ac46f53ef1d /AudioManagerCore | |
parent | a2af83777be4860d554bceaf28c87218729cf309 (diff) | |
download | audiomanager-c1e284360ec02b06ccb0a97a00fed05ef0bb2c60.tar.gz |
AM: add plural form of setSystemProperties for global configuration attributes to command and control interface
- implement plural form of requests and acknowledgments in core
- provide empty default implementations in interfaces to ensure backward compatibility with older plugins
- accommodate extension in module tests
Main purpose of this extension is to allow for one-shot (uninterrupted), consistent change of multiple, possibly interrelated configuration attributes.
Signed-off-by: Martin Koch <mkoch@de.adit-jv.com>
Diffstat (limited to 'AudioManagerCore')
-rw-r--r-- | AudioManagerCore/include/CAmCommandReceiver.h | 1 | ||||
-rw-r--r-- | AudioManagerCore/include/CAmCommandSender.h | 1 | ||||
-rw-r--r-- | AudioManagerCore/include/CAmControlReceiver.h | 1 | ||||
-rw-r--r-- | AudioManagerCore/include/CAmControlSender.h | 1 | ||||
-rw-r--r-- | AudioManagerCore/include/CAmDatabaseHandlerMap.h | 2 | ||||
-rw-r--r-- | AudioManagerCore/include/IAmDatabaseHandler.h | 1 | ||||
-rw-r--r-- | AudioManagerCore/src/CAmCommandReceiver.cpp | 5 | ||||
-rw-r--r-- | AudioManagerCore/src/CAmCommandSender.cpp | 8 | ||||
-rw-r--r-- | AudioManagerCore/src/CAmControlReceiver.cpp | 5 | ||||
-rw-r--r-- | AudioManagerCore/src/CAmControlSender.cpp | 6 | ||||
-rw-r--r-- | AudioManagerCore/src/CAmDatabaseHandlerMap.cpp | 26 | ||||
-rw-r--r-- | AudioManagerCore/test/AmMapHandlerTest/CAmTestDatabaseObserver.cpp | 2 | ||||
-rw-r--r-- | AudioManagerCore/test/AmMapHandlerTest/MockDatabaseObserver.h | 2 | ||||
-rw-r--r-- | AudioManagerCore/test/MockIAmCommandSend.h | 2 | ||||
-rw-r--r-- | AudioManagerCore/test/MockIAmControlSend.h | 2 |
15 files changed, 65 insertions, 0 deletions
diff --git a/AudioManagerCore/include/CAmCommandReceiver.h b/AudioManagerCore/include/CAmCommandReceiver.h index 8c43987..17c3fd4 100644 --- a/AudioManagerCore/include/CAmCommandReceiver.h +++ b/AudioManagerCore/include/CAmCommandReceiver.h @@ -53,6 +53,7 @@ public: am_Error_e setMainSourceSoundProperty(const am_MainSoundProperty_s &soundProperty, const am_sourceID_t sourceID); am_Error_e setMainSourceSoundProperties(const std::vector<am_MainSoundProperty_s> &listSoundProperties, const am_sourceID_t sourceID); am_Error_e setSystemProperty(const am_SystemProperty_s &property); + am_Error_e setSystemProperties(const std::vector<am_SystemProperty_s> &listSystemProperties); 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; diff --git a/AudioManagerCore/include/CAmCommandSender.h b/AudioManagerCore/include/CAmCommandSender.h index c438711..5e47837 100644 --- a/AudioManagerCore/include/CAmCommandSender.h +++ b/AudioManagerCore/include/CAmCommandSender.h @@ -68,6 +68,7 @@ public: 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 cbSystemPropertiesChanged(const std::vector<am_SystemProperty_s> &listSystemProperties); 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; diff --git a/AudioManagerCore/include/CAmControlReceiver.h b/AudioManagerCore/include/CAmControlReceiver.h index a710d23..0a0e1f3 100644 --- a/AudioManagerCore/include/CAmControlReceiver.h +++ b/AudioManagerCore/include/CAmControlReceiver.h @@ -81,6 +81,7 @@ public: am_Error_e changeMainSourceSoundPropertiesDB(const std::vector<am_MainSoundProperty_s> &listSoundProperties, 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 changeSystemPropertiesDB(const std::vector<am_SystemProperty_s> &listSystemProperties); 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); diff --git a/AudioManagerCore/include/CAmControlSender.h b/AudioManagerCore/include/CAmControlSender.h index f6c2f0e..77e8e2c 100644 --- a/AudioManagerCore/include/CAmControlSender.h +++ b/AudioManagerCore/include/CAmControlSender.h @@ -54,6 +54,7 @@ public: am_Error_e hookUserSetMainSourceSoundProperty(const am_sourceID_t sourceID, const am_MainSoundProperty_s &soundProperty); am_Error_e hookUserSetMainSourceSoundProperties(const am_sourceID_t sourceID, const std::vector<am_MainSoundProperty_s > &listSoundProperties); am_Error_e hookUserSetSystemProperty(const am_SystemProperty_s &property); + am_Error_e hookUserSetSystemProperties(const std::vector<am_SystemProperty_s> &listSystemProperties); 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); diff --git a/AudioManagerCore/include/CAmDatabaseHandlerMap.h b/AudioManagerCore/include/CAmDatabaseHandlerMap.h index f3c39d8..46da560 100644 --- a/AudioManagerCore/include/CAmDatabaseHandlerMap.h +++ b/AudioManagerCore/include/CAmDatabaseHandlerMap.h @@ -105,6 +105,7 @@ public: 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 std::vector<am_SystemProperty_s> &)>dboSystemPropertiesChanged; 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; @@ -146,6 +147,7 @@ public: 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 changeSystemPropertiesDB(const std::vector<am_SystemProperty_s> &listSystemProperties); 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); diff --git a/AudioManagerCore/include/IAmDatabaseHandler.h b/AudioManagerCore/include/IAmDatabaseHandler.h index 2185cd4..8e4118e 100644 --- a/AudioManagerCore/include/IAmDatabaseHandler.h +++ b/AudioManagerCore/include/IAmDatabaseHandler.h @@ -86,6 +86,7 @@ public: 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 changeSystemPropertiesDB(const std::vector<am_SystemProperty_s> &listSystemProperties) = 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; diff --git a/AudioManagerCore/src/CAmCommandReceiver.cpp b/AudioManagerCore/src/CAmCommandReceiver.cpp index 1937f32..028b6ef 100644 --- a/AudioManagerCore/src/CAmCommandReceiver.cpp +++ b/AudioManagerCore/src/CAmCommandReceiver.cpp @@ -135,6 +135,11 @@ am_Error_e CAmCommandReceiver::setSystemProperty(const am_SystemProperty_s &prop return (mControlSender->hookUserSetSystemProperty(property)); } +am_Error_e CAmCommandReceiver::setSystemProperties(const std::vector<am_SystemProperty_s> &listSystemProperties) +{ + return (mControlSender->hookUserSetSystemProperties(listSystemProperties)); +} + am_Error_e CAmCommandReceiver::getVolume(const am_sinkID_t sinkID, am_mainVolume_t &mainVolume) const { return (mDatabaseHandler->getSinkMainVolume(sinkID, mainVolume)); diff --git a/AudioManagerCore/src/CAmCommandSender.cpp b/AudioManagerCore/src/CAmCommandSender.cpp index 622e5fd..fd1be69 100644 --- a/AudioManagerCore/src/CAmCommandSender.cpp +++ b/AudioManagerCore/src/CAmCommandSender.cpp @@ -142,6 +142,9 @@ CAmCommandSender::CAmCommandSender(const std::vector<std::string> &listOfPluginD dboSystemPropertyChanged = [&](const am_SystemProperty_s &SystemProperty) { mSerializer.asyncCall(this, &CAmCommandSender::cbSystemPropertyChanged, SystemProperty); }; + dboSystemPropertiesChanged = [&](const std::vector<am_SystemProperty_s> &SystemProperties) { + mSerializer.asyncCall(this, &CAmCommandSender::cbSystemPropertiesChanged, SystemProperties); + }; dboTimingInformationChanged = [&](const am_mainConnectionID_t mainConnection, const am_timeSync_t time) { mSerializer.asyncCall(this, &CAmCommandSender::cbTimingInformationChanged, mainConnection, time); }; @@ -356,6 +359,11 @@ void CAmCommandSender::cbSystemPropertyChanged(const am_SystemProperty_s &System CALL_ALL_INTERFACES(cbSystemPropertyChanged(SystemProperty)) } +void CAmCommandSender::cbSystemPropertiesChanged(const std::vector<am_SystemProperty_s> &listSystemProperties) +{ + CALL_ALL_INTERFACES(cbSystemPropertiesChanged(listSystemProperties)) +} + void CAmCommandSender::cbTimingInformationChanged(const am_mainConnectionID_t mainConnection, const am_timeSync_t time) { CALL_ALL_INTERFACES(cbTimingInformationChanged(mainConnection, time)) diff --git a/AudioManagerCore/src/CAmControlReceiver.cpp b/AudioManagerCore/src/CAmControlReceiver.cpp index 0fe9b03..c72d733 100644 --- a/AudioManagerCore/src/CAmControlReceiver.cpp +++ b/AudioManagerCore/src/CAmControlReceiver.cpp @@ -231,6 +231,11 @@ am_Error_e CAmControlReceiver::changeSystemPropertyDB(const am_SystemProperty_s return (mDatabaseHandler->changeSystemPropertyDB(property)); } +am_Error_e CAmControlReceiver::changeSystemPropertiesDB(const std::vector<am_SystemProperty_s> &listSystemProperties) +{ + return (mDatabaseHandler->changeSystemPropertiesDB(listSystemProperties)); +} + am_Error_e CAmControlReceiver::removeMainConnectionDB(const am_mainConnectionID_t mainConnectionID) { return (mDatabaseHandler->removeMainConnectionDB(mainConnectionID)); diff --git a/AudioManagerCore/src/CAmControlSender.cpp b/AudioManagerCore/src/CAmControlSender.cpp index e8f2285..a683a42 100644 --- a/AudioManagerCore/src/CAmControlSender.cpp +++ b/AudioManagerCore/src/CAmControlSender.cpp @@ -217,6 +217,12 @@ am_Error_e CAmControlSender::hookUserSetSystemProperty(const am_SystemProperty_s return (mController->hookUserSetSystemProperty(property)); } +am_Error_e CAmControlSender::hookUserSetSystemProperties(const std::vector<am_SystemProperty_s> &listSystemProperties) +{ + assert(mController); + return (mController->hookUserSetSystemProperties(listSystemProperties)); +} + am_Error_e CAmControlSender::hookUserVolumeChange(const am_sinkID_t sinkID, const am_mainVolume_t newVolume) { assert(mController); diff --git a/AudioManagerCore/src/CAmDatabaseHandlerMap.cpp b/AudioManagerCore/src/CAmDatabaseHandlerMap.cpp index eabcb18..928ce8f 100644 --- a/AudioManagerCore/src/CAmDatabaseHandlerMap.cpp +++ b/AudioManagerCore/src/CAmDatabaseHandlerMap.cpp @@ -1689,6 +1689,32 @@ am_Error_e CAmDatabaseHandlerMap::changeSystemPropertyDB(const am_SystemProperty } } +am_Error_e CAmDatabaseHandlerMap::changeSystemPropertiesDB(const std::vector<am_SystemProperty_s> &listSystemProperties) +{ + std::vector<am_SystemProperty_s>::iterator elementIterator; + + for (auto &itlistSystemProperties : listSystemProperties) + { + for (elementIterator = mMappedData.mSystemProperties.begin(); elementIterator != mMappedData.mSystemProperties.end(); + ++elementIterator) + { + if (elementIterator->type == itlistSystemProperties.type) + { + DB_COND_UPDATE_RIE(elementIterator->value, itlistSystemProperties.value); + } + else + logVerbose("DatabaseHandler::changeSystemPropertiesDB system property does not match the internal list"); + } + + } + + logVerbose("DatabaseHandler::changeSystemPropertiesDB changed system property"); + + NOTIFY_OBSERVERS1(dboSystemPropertiesChanged, listSystemProperties) + + return (E_OK); +} + am_Error_e CAmDatabaseHandlerMap::removeMainConnectionDB(const am_mainConnectionID_t mainConnectionID) { diff --git a/AudioManagerCore/test/AmMapHandlerTest/CAmTestDatabaseObserver.cpp b/AudioManagerCore/test/AmMapHandlerTest/CAmTestDatabaseObserver.cpp index 77b6ecb..f318852 100644 --- a/AudioManagerCore/test/AmMapHandlerTest/CAmTestDatabaseObserver.cpp +++ b/AudioManagerCore/test/AmMapHandlerTest/CAmTestDatabaseObserver.cpp @@ -80,6 +80,8 @@ CAmDatabaseObserver::CAmDatabaseObserver() { MockDatabaseObserver::getMockObserverObject()->sinkMuteStateChanged(sinkID, muteState); }; dboSystemPropertyChanged = [&](const am_SystemProperty_s& SystemProperty) { MockDatabaseObserver::getMockObserverObject()->systemPropertyChanged(SystemProperty); }; + dboSystemPropertiesChanged = [&](const std::vector<am_SystemProperty_s>& listSystemProperties) + { MockDatabaseObserver::getMockObserverObject()->systemPropertiesChanged(listSystemProperties); }; dboTimingInformationChanged = [&](const am_mainConnectionID_t mainConnection, const am_timeSync_t time) { MockDatabaseObserver::getMockObserverObject()->timingInformationChanged(mainConnection,time); }; dboSinkUpdated = [&](const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties, const bool visible) diff --git a/AudioManagerCore/test/AmMapHandlerTest/MockDatabaseObserver.h b/AudioManagerCore/test/AmMapHandlerTest/MockDatabaseObserver.h index 894db07..0c7399c 100644 --- a/AudioManagerCore/test/AmMapHandlerTest/MockDatabaseObserver.h +++ b/AudioManagerCore/test/AmMapHandlerTest/MockDatabaseObserver.h @@ -69,6 +69,7 @@ public: virtual void volumeChanged(const am_sinkID_t sinkID, const am_mainVolume_t volume) = 0; virtual void sinkMuteStateChanged(const am_sinkID_t sinkID, const am_MuteState_e muteState) = 0; virtual void systemPropertyChanged(const am_SystemProperty_s& SystemProperty) = 0; + virtual void systemPropertiesChanged(const std::vector<am_SystemProperty_s>& listSystemProperties) = 0; virtual void timingInformationChanged(const am_mainConnectionID_t mainConnection, const am_timeSync_t time) = 0; virtual void sinkUpdated(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties, const bool visible) = 0; virtual void sourceUpdated(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties, const bool visible) = 0; @@ -105,6 +106,7 @@ class MockDatabaseObserver : public IAmDatabaseObserver{ MOCK_METHOD2(volumeChanged, void(const am_sinkID_t sinkID, const am_mainVolume_t volume)); MOCK_METHOD2(sinkMuteStateChanged, void(const am_sinkID_t sinkID, const am_MuteState_e muteState)); MOCK_METHOD1(systemPropertyChanged, void(const am_SystemProperty_s& SystemProperty)); + MOCK_METHOD1(systemPropertiesChanged, void(const std::vector<am_SystemProperty_s>& listSystemProperties)); MOCK_METHOD2(timingInformationChanged, void(const am_mainConnectionID_t mainConnection, const am_timeSync_t time)); MOCK_METHOD4(sinkUpdated, void(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties, const bool visible)); MOCK_METHOD4(sourceUpdated, void(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties, const bool visible)); diff --git a/AudioManagerCore/test/MockIAmCommandSend.h b/AudioManagerCore/test/MockIAmCommandSend.h index 2310c81..f7cb9bb 100644 --- a/AudioManagerCore/test/MockIAmCommandSend.h +++ b/AudioManagerCore/test/MockIAmCommandSend.h @@ -75,6 +75,8 @@ class MockIAmCommandSend : public IAmCommandSend { void(const am_sinkID_t sinkID, const am_MuteState_e muteState)); MOCK_METHOD1(cbSystemPropertyChanged, void(const am_SystemProperty_s& systemProperty)); + MOCK_METHOD1(cbSystemPropertiesChanged, + void(const std::vector<am_SystemProperty_s>& listSystemProperties)); MOCK_METHOD2(cbTimingInformationChanged, void(const am_mainConnectionID_t mainConnectionID, const am_timeSync_t time)); MOCK_METHOD3(cbSinkUpdated, diff --git a/AudioManagerCore/test/MockIAmControlSend.h b/AudioManagerCore/test/MockIAmControlSend.h index 1f0b7df..9115d00 100644 --- a/AudioManagerCore/test/MockIAmControlSend.h +++ b/AudioManagerCore/test/MockIAmControlSend.h @@ -53,6 +53,8 @@ class MockIAmControlSend : public IAmControlSend { am_Error_e(const am_sourceID_t sourceID, const std::vector<am_MainSoundProperty_s > &listSoundProperty)); MOCK_METHOD1(hookUserSetSystemProperty, am_Error_e(const am_SystemProperty_s& property)); + MOCK_METHOD1(hookUserSetSystemProperties, + am_Error_e(const std::vector<am_SystemProperty_s>& listSystemProperties)); MOCK_METHOD2(hookUserVolumeChange, am_Error_e(const am_sinkID_t SinkID, const am_mainVolume_t newVolume)); MOCK_METHOD2(hookUserVolumeStep, |