diff options
Diffstat (limited to 'AudioManagerDaemon/src')
-rw-r--r-- | AudioManagerDaemon/src/ControlSender.cpp | 9 | ||||
-rw-r--r-- | AudioManagerDaemon/src/Router.cpp | 21 |
2 files changed, 21 insertions, 9 deletions
diff --git a/AudioManagerDaemon/src/ControlSender.cpp b/AudioManagerDaemon/src/ControlSender.cpp index 816ed80..a334475 100644 --- a/AudioManagerDaemon/src/ControlSender.cpp +++ b/AudioManagerDaemon/src/ControlSender.cpp @@ -39,7 +39,7 @@ ControlSender::ControlSender(std::string controlPluginFile) : std::ifstream isfile(controlPluginFile.c_str()); if (!isfile) { - logError("ControlSender::ControlSender: Controller plugin not found:",controlPluginFile); + logError("ControlSender::ControlSender: Controller plugin not found:", controlPluginFile); } else if (!controlPluginFile.empty()) { @@ -59,7 +59,8 @@ ControlSender::ControlSender(std::string controlPluginFile) : ControlSender::~ControlSender() { - if (mlibHandle) dlclose(mlibHandle); + if (mlibHandle) + dlclose(mlibHandle); } void ControlSender::hookAllPluginsLoaded() @@ -267,9 +268,9 @@ void ControlSender::cbAckSetSourceSoundProperties(const am_Handle_s handle, cons mController->cbAckSetSourceSoundProperties(handle, error); } -am_Error_e ControlSender::getConnectionFormatChoice(const am_sourceID_t sourceID, const am_sinkID_t sinkID, const std::vector<am_ConnectionFormat_e> listPossibleConnectionFormats, std::vector<am_ConnectionFormat_e> & listPrioConnectionFormats) +am_Error_e am::ControlSender::getConnectionFormatChoice(const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_Route_s listRoute, const std::vector<am_ConnectionFormat_e> listPossibleConnectionFormats, std::vector<am_ConnectionFormat_e> & listPrioConnectionFormats) { - return mController->getConnectionFormatChoice(sourceID, sinkID, listPossibleConnectionFormats, listPrioConnectionFormats); + return mController->getConnectionFormatChoice(sourceID, sinkID, listRoute, listPossibleConnectionFormats, listPrioConnectionFormats); } uint16_t ControlSender::getInterfaceVersion() const diff --git a/AudioManagerDaemon/src/Router.cpp b/AudioManagerDaemon/src/Router.cpp index 9ed0f5b..c74989a 100644 --- a/AudioManagerDaemon/src/Router.cpp +++ b/AudioManagerDaemon/src/Router.cpp @@ -57,8 +57,14 @@ am_Error_e Router::getRoute(const bool onlyfree, const am_sourceID_t sourceID, c std::vector<am_ConnectionFormat_e> listFormats, listPriorityConnectionFormats; listPossibleConnectionFormats(sourceID, sinkID, listFormats); + //dummy route + am_Route_s route; + route.sinkID = sinkID; + route.sourceID = sourceID; + route.route.clear(); + //get the prio of the Controller: - mControlSender->getConnectionFormatChoice(sourceID, sinkID, listFormats, listPriorityConnectionFormats); + mControlSender->getConnectionFormatChoice(sourceID, sinkID, route, listFormats, listPriorityConnectionFormats); //no possible connection, so no route ! But we report OK since there is no fault ... if (listPriorityConnectionFormats.empty()) @@ -144,7 +150,7 @@ am_Error_e Router::getRoute(const bool onlyfree, const am_sourceID_t sourceID, c //Step through the routes and try to use always the best connectionFormat std::vector<am_RoutingElement_s>::iterator routingInterator = actualRoutingElement.begin(); gatewayIterator = listGatewayID.begin(); - if (findBestWay(actualRoutingElement, routingInterator, gatewayIterator) != E_OK) + if (findBestWay(sinkID, sourceID, actualRoutingElement, routingInterator, gatewayIterator) != E_OK) { continue; } @@ -170,7 +176,7 @@ void Router::listPossibleConnectionFormats(const am_sourceID_t sourceID, const a set_intersection(listSourceFormats.begin(), listSourceFormats.end(), listSinkFormats.begin(), listSinkFormats.end(), inserter); } -am_Error_e Router::findBestWay(std::vector<am_RoutingElement_s> & listRoute, std::vector<am_RoutingElement_s>::iterator routeIterator, std::vector<am_gatewayID_t>::iterator gatewayIterator) +am_Error_e Router::findBestWay(am_sinkID_t sinkID, am_sourceID_t sourceID, std::vector<am_RoutingElement_s> & listRoute, std::vector<am_RoutingElement_s>::iterator routeIterator, std::vector<am_gatewayID_t>::iterator gatewayIterator) { am_Error_e returnError = E_NOT_POSSIBLE; std::vector<am_ConnectionFormat_e> listConnectionFormats; @@ -198,8 +204,13 @@ am_Error_e Router::findBestWay(std::vector<am_RoutingElement_s> & listRoute, std listMergeConnectionFormats = listConnectionFormats; } + am_Route_s route; + route.sinkID = sinkID; + route.sourceID = sourceID; + route.route = listRoute; + //let the controller decide: - mControlSender->getConnectionFormatChoice(routeIterator->sourceID, routeIterator->sinkID, listMergeConnectionFormats, listPriorityConnectionFormats); + mControlSender->getConnectionFormatChoice(routeIterator->sourceID, routeIterator->sinkID, route, listMergeConnectionFormats, listPriorityConnectionFormats); //we have the list sorted after prios - now we try one after the other with the next part of the route std::vector<am_ConnectionFormat_e>::iterator connectionFormatIterator = listPriorityConnectionFormats.begin(); @@ -219,7 +230,7 @@ am_Error_e Router::findBestWay(std::vector<am_RoutingElement_s> & listRoute, std for (; connectionFormatIterator != listPriorityConnectionFormats.end(); ++connectionFormatIterator) { routeIterator->connectionFormat = *connectionFormatIterator; - if ((returnError = findBestWay(listRoute, nextIterator, gatewayIterator)) == E_OK) + if ((returnError = findBestWay(sinkID, sourceID, listRoute, nextIterator, gatewayIterator)) == E_OK) { break; } |