summaryrefslogtreecommitdiff
path: root/AudioManagerCore/src
diff options
context:
space:
mode:
Diffstat (limited to 'AudioManagerCore/src')
-rw-r--r--AudioManagerCore/src/CAmControlReceiver.cpp5
-rw-r--r--AudioManagerCore/src/CAmControlSender.cpp4
-rw-r--r--AudioManagerCore/src/CAmRoutingReceiver.cpp43
3 files changed, 39 insertions, 13 deletions
diff --git a/AudioManagerCore/src/CAmControlReceiver.cpp b/AudioManagerCore/src/CAmControlReceiver.cpp
index bbd1116..737e659 100644
--- a/AudioManagerCore/src/CAmControlReceiver.cpp
+++ b/AudioManagerCore/src/CAmControlReceiver.cpp
@@ -291,6 +291,11 @@ am_Error_e CAmControlReceiver::getSourceInfoDB(const am_sourceID_t sourceID, am_
return (mDatabaseHandler->getSourceInfoDB(sourceID, sourceData));
}
+am_Error_e CAmControlReceiver::getConnectionInfoDB(const am_connectionID_t connectionID, am_Connection_s &connectionData) const
+{
+ return (mDatabaseHandler->getConnectionInfoDB(connectionID, connectionData));
+}
+
am_Error_e CAmControlReceiver::getMainConnectionInfoDB(const am_mainConnectionID_t mainConnectionID, am_MainConnection_s &mainConnectionData) const
{
return (mDatabaseHandler->getMainConnectionInfoDB(mainConnectionID, mainConnectionData));
diff --git a/AudioManagerCore/src/CAmControlSender.cpp b/AudioManagerCore/src/CAmControlSender.cpp
index 0d28dfb..6bd4f07 100644
--- a/AudioManagerCore/src/CAmControlSender.cpp
+++ b/AudioManagerCore/src/CAmControlSender.cpp
@@ -320,10 +320,10 @@ am_Error_e CAmControlSender::hookSystemDeregisterCrossfader(const am_crossfaderI
}
am_Error_e CAmControlSender::hookSystemRegisterEarlyConnection(am_domainID_t domainID
- , const am_MainConnection_s &mainConnectionData)
+ , const am_MainConnection_s &mainConnectionData, const am_Route_s &route)
{
assert(mController);
- return mController->hookSystemRegisterEarlyMainConnection(domainID, mainConnectionData);
+ return mController->hookSystemRegisterEarlyMainConnection(domainID, mainConnectionData, route);
}
void CAmControlSender::hookSystemSinkVolumeTick(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume)
diff --git a/AudioManagerCore/src/CAmRoutingReceiver.cpp b/AudioManagerCore/src/CAmRoutingReceiver.cpp
index 8f4d1ba..29aea65 100644
--- a/AudioManagerCore/src/CAmRoutingReceiver.cpp
+++ b/AudioManagerCore/src/CAmRoutingReceiver.cpp
@@ -247,37 +247,58 @@ am_Error_e CAmRoutingReceiver::deregisterDomain(const am_domainID_t domainID)
}
am_Error_e CAmRoutingReceiver::registerEarlyConnection(am_domainID_t domainID
- , const std::vector< am_Connection_s > &route, am_ConnectionState_e state)
+ , const am_Route_s &route, am_ConnectionState_e state)
{
- if (route.size() < 1)
+ const auto &segmentList = route.route;
+ if (segmentList.size() < 1)
{
- logWarning(__METHOD_NAME__, "route empty");
+ logError(__METHOD_NAME__, "empty route from domain", domainID);
return E_NOT_POSSIBLE;
}
am_MainConnection_s mainConnectionData;
- mainConnectionData.sourceID = route.front().sourceID;
- mainConnectionData.sinkID = route.back().sinkID;
+ mainConnectionData.sourceID = segmentList.front().sourceID;
+ mainConnectionData.sinkID = segmentList.back().sinkID;
mainConnectionData.connectionState = state;
- mainConnectionData.listConnectionID.reserve(route.size());
- for (auto & conn : route)
+ mainConnectionData.listConnectionID.reserve(segmentList.size());
+ for (const auto &segment : segmentList)
{
- am_connectionID_t connectionID;
- am_Error_e success = mpDatabaseHandler->enterConnectionDB(conn, connectionID);
+ am_Connection_s conn;
+ conn.sourceID = segment.sourceID;
+ conn.sinkID = segment.sinkID;
+ conn.connectionFormat = segment.connectionFormat;
+ conn.connectionID = 0;
+ am_Error_e success = mpDatabaseHandler->enterConnectionDB(conn, conn.connectionID);
switch (success)
{
case E_OK:
case E_ALREADY_EXISTS:
case E_NO_CHANGE:
- mainConnectionData.listConnectionID.push_back(connectionID);
+ mainConnectionData.listConnectionID.push_back(conn.connectionID);
break;
default:
+ logError(__METHOD_NAME__, "failed to enter connection segment", conn.sourceID
+ , "to", conn.sinkID, "from domain", domainID, "error=", success);
return success;
}
}
- return mpControlSender->hookSystemRegisterEarlyConnection(domainID, mainConnectionData);
+ am_Error_e success = mpDatabaseHandler->enterMainConnectionDB(mainConnectionData, mainConnectionData.mainConnectionID);
+ switch (success)
+ {
+ case E_OK:
+ case E_ALREADY_EXISTS:
+ case E_NO_CHANGE:
+ break;
+
+ default:
+ logError(__METHOD_NAME__, "failed to enter main connection", mainConnectionData.sourceID
+ , "to", mainConnectionData.sinkID, "from domain", domainID, "error=", success);
+ return success;
+ }
+
+ return mpControlSender->hookSystemRegisterEarlyConnection(domainID, mainConnectionData, route);
}
am_Error_e CAmRoutingReceiver::registerGateway(const am_Gateway_s &gatewayData, am_gatewayID_t &gatewayID)