diff options
author | Aleksandar Donchev <Aleksander.Donchev@partner.bmw.de> | 2014-08-26 18:15:19 +0200 |
---|---|---|
committer | Christian Linke <christian.linke@bmw.de> | 2014-11-05 18:35:35 +0100 |
commit | 57c2f4ea0148287d0bcea913cb34ba716489df4b (patch) | |
tree | 0aa026a28c4f4f2d727da882b0bee03cc671cb28 /PluginRoutingInterfaceDbus | |
parent | afadaf4260e8d436b454289e61e85ac8c5bab071 (diff) | |
download | audiomanager-57c2f4ea0148287d0bcea913cb34ba716489df4b.tar.gz |
* Converter Implementation .6.2
Signed-off-by: Christian Linke <christian.linke@bmw.de>
Diffstat (limited to 'PluginRoutingInterfaceDbus')
5 files changed, 116 insertions, 0 deletions
diff --git a/PluginRoutingInterfaceDbus/include/CAmDbusMessageHandler.h b/PluginRoutingInterfaceDbus/include/CAmDbusMessageHandler.h index 2ba8e81..fb3160e 100644 --- a/PluginRoutingInterfaceDbus/include/CAmDbusMessageHandler.h +++ b/PluginRoutingInterfaceDbus/include/CAmDbusMessageHandler.h @@ -95,6 +95,7 @@ public: am_Source_s getSourceData(); am_Sink_s getSinkData(); am_Gateway_s getGatewayData(); + am_Converter_s getConverterData(); am_Crossfader_s getCrossfaderData(); am_SoundProperty_s getSoundProperty(); am_MainSoundProperty_s getMainSoundProperty(); diff --git a/PluginRoutingInterfaceDbus/include/IAmRoutingReceiverShadow.h b/PluginRoutingInterfaceDbus/include/IAmRoutingReceiverShadow.h index 4a1d781..b39b674 100644 --- a/PluginRoutingInterfaceDbus/include/IAmRoutingReceiverShadow.h +++ b/PluginRoutingInterfaceDbus/include/IAmRoutingReceiverShadow.h @@ -54,9 +54,11 @@ public: void registerSource(DBusConnection *conn, DBusMessage *msg); void registerSink(DBusConnection *conn, DBusMessage *msg); void registerGateway(DBusConnection *conn, DBusMessage *msg); + void registerConverter(DBusConnection *conn, DBusMessage *msg); void peekDomain(DBusConnection *conn, DBusMessage *msg); void deregisterDomain(DBusConnection *conn, DBusMessage *msg); void deregisterGateway(DBusConnection *conn, DBusMessage *msg); + void deregisterConverter(DBusConnection *conn, DBusMessage *msg); void peekSink(DBusConnection *conn, DBusMessage *msg); void deregisterSink(DBusConnection *conn, DBusMessage *msg); void peekSource(DBusConnection *conn, DBusMessage *msg); @@ -75,6 +77,7 @@ public: void confirmRoutingReady(DBusConnection *conn, DBusMessage *msg); void confirmRoutingRundown(DBusConnection *conn, DBusMessage *msg); void updateGateway(DBusConnection *conn, DBusMessage *msg); + void updateConverter(DBusConnection *conn, DBusMessage *msg); void updateSink(DBusConnection *conn, DBusMessage *msg); void updateSource(DBusConnection *conn, DBusMessage *msg); void ackSetVolumes(DBusConnection *conn, DBusMessage *msg); diff --git a/PluginRoutingInterfaceDbus/include/RoutingReceiver.xml b/PluginRoutingInterfaceDbus/include/RoutingReceiver.xml index 34c90a6..8e15bb1 100644 --- a/PluginRoutingInterfaceDbus/include/RoutingReceiver.xml +++ b/PluginRoutingInterfaceDbus/include/RoutingReceiver.xml @@ -85,10 +85,19 @@ <arg name="gatewayID" type="q" direction="out" /> <arg name="error" type="q" direction="out" /> </method> + <method name="registerConverter"> + <arg name="converterData" type="(qsqqqaiaiab)" direction="in" /> <!-- am_converterID_t converterID; std::string name; am_sinkID_t sinkID; am_sourceID_t sourceID; am_domainID_t domainID; std::vector<am_CustomAvailabilityReason_t> listSourceFormats; std::vector<am_CustomAvailabilityReason_t> listSinkFormats; std::vector<bool> convertionMatrix; --> + <arg name="converterID" type="q" direction="out" /> + <arg name="error" type="q" direction="out" /> + </method> <method name="deregisterGateway"> <arg name="gatewayID" type="q" direction="in" /> <arg name="error" type="q" direction="out" /> </method> + <method name="deregisterConverter"> + <arg name="converterID" type="q" direction="in" /> + <arg name="error" type="q" direction="out" /> + </method> <method name="peekSink"> <arg name="name" type="s" direction="in" /> <arg name="sinkID" type="q" direction="out" /> @@ -175,6 +184,12 @@ <arg name="listSinkFormats" type="a(q)" direction="in" /> <arg name="conversionMatrix" type="a(b)" direction="in" /> </method> + <method name="updateConverter"> + <arg name="converterID" type="q" direction="in" /> + <arg name="listSourceFormats" type="a(q)" direction="in" /> + <arg name="listSinkFormats" type="a(q)" direction="in" /> + <arg name="conversionMatrix" type="a(b)" direction="in" /> + </method> <method name="updateSink"> <arg name="sinkID" type="q" direction="in" /> <arg name="sinkClassID" type="q" direction="in" /> diff --git a/PluginRoutingInterfaceDbus/src/CAmDbusMessageHandler.cpp b/PluginRoutingInterfaceDbus/src/CAmDbusMessageHandler.cpp index e85012c..0426c10 100644 --- a/PluginRoutingInterfaceDbus/src/CAmDbusMessageHandler.cpp +++ b/PluginRoutingInterfaceDbus/src/CAmDbusMessageHandler.cpp @@ -574,6 +574,51 @@ am_Gateway_s CAmRoutingDbusMessageHandler::getGatewayData() return (gatewayData); } +am_Converter_s CAmRoutingDbusMessageHandler::getConverterData() +{ + am_Converter_s gatewayData; + DBusMessageIter gatewayDataIter, arrayIter; + am_CustomAvailabilityReason_t connectionFormat; + bool convertion; + if (DBUS_TYPE_STRUCT != dbus_message_iter_get_arg_type(&mDBusMessageIter)) + { + log(&routingDbus, DLT_LOG_ERROR, "CAmRoutingDbusMessageHandler::getDomainData DBUS handler argument is no struct!"); + mErrorName = std::string(DBUS_ERROR_INVALID_ARGS); + mErrorMsg = "DBus argument is no struct"; + } + else + { + dbus_message_iter_recurse(&mDBusMessageIter, &gatewayDataIter); + gatewayData.converterID = static_cast<am_gatewayID_t>(getUInt(gatewayDataIter, true)); + gatewayData.name = getString(gatewayDataIter, true); + gatewayData.sinkID = static_cast<am_sinkID_t>(getUInt(gatewayDataIter, true)); + gatewayData.sourceID = static_cast<am_sourceID_t>(getUInt(gatewayDataIter, true)); + gatewayData.domainID = static_cast<am_domainID_t>(getUInt(gatewayDataIter, true)); + dbus_message_iter_recurse(&gatewayDataIter, &arrayIter); + do + { + connectionFormat = static_cast<am_CustomAvailabilityReason_t>(getInt32(arrayIter, false)); + gatewayData.listSourceFormats.push_back(connectionFormat); + } while (dbus_message_iter_next(&arrayIter)); + dbus_message_iter_next(&gatewayDataIter); + dbus_message_iter_recurse(&gatewayDataIter, &arrayIter); + do + { + connectionFormat = static_cast<am_CustomAvailabilityReason_t>(getInt32(arrayIter, false)); + gatewayData.listSinkFormats.push_back(connectionFormat); + } while (dbus_message_iter_next(&arrayIter)); + dbus_message_iter_next(&gatewayDataIter); + dbus_message_iter_recurse(&gatewayDataIter, &arrayIter); + do + { + convertion = getBool(arrayIter, false); + gatewayData.convertionMatrix.push_back(convertion); + } while (dbus_message_iter_next(&arrayIter)); + dbus_message_iter_next(&mDBusMessageIter); + } + return (gatewayData); +} + am_Crossfader_s CAmRoutingDbusMessageHandler::getCrossfaderData() { am_Crossfader_s crossfaderData; diff --git a/PluginRoutingInterfaceDbus/src/IAmRoutingReceiverShadow.cpp b/PluginRoutingInterfaceDbus/src/IAmRoutingReceiverShadow.cpp index 7287df7..c2924ba 100644 --- a/PluginRoutingInterfaceDbus/src/IAmRoutingReceiverShadow.cpp +++ b/PluginRoutingInterfaceDbus/src/IAmRoutingReceiverShadow.cpp @@ -142,6 +142,24 @@ void IAmRoutingReceiverShadowDbus::registerGateway(DBusConnection* conn, DBusMes } } +void IAmRoutingReceiverShadowDbus::registerConverter(DBusConnection* conn, DBusMessage* msg) +{ + (void) ((conn)); + assert(mRoutingReceiveInterface != NULL); + mDBUSMessageHandler.initReceive(msg); + am_Converter_s gatewayData(mDBUSMessageHandler.getConverterData()); + am_Error_e returnCode = mRoutingReceiveInterface->registerConverter(gatewayData, gatewayData.converterID); + mDBUSMessageHandler.initReply(msg); + mDBUSMessageHandler.append(gatewayData.converterID); + mDBUSMessageHandler.append(returnCode); + mDBUSMessageHandler.sendMessage(); + if (returnCode != E_OK) + { + log(&routingDbus, DLT_LOG_INFO, "error registering gateway"); + return; + } +} + void IAmRoutingReceiverShadowDbus::hookDomainRegistrationComplete(DBusConnection* conn, DBusMessage* msg) { (void) ((conn)); @@ -406,6 +424,19 @@ void IAmRoutingReceiverShadowDbus::deregisterGateway(DBusConnection* conn, DBusM mDBUSMessageHandler.sendMessage(); } +void IAmRoutingReceiverShadowDbus::deregisterConverter(DBusConnection* conn, DBusMessage* msg) +{ + (void) ((conn)); + assert(mRoutingReceiveInterface != NULL); + mDBUSMessageHandler.initReceive(msg); + am_converterID_t converterID = mDBUSMessageHandler.getUInt(); + log(&routingDbus, DLT_LOG_INFO, "IAmRoutingReceiverShadow::deregisterGateway called, id", converterID); + am_Error_e returnCode = mRoutingReceiveInterface->deregisterConverter(converterID); + mDBUSMessageHandler.initReply(msg); + mDBUSMessageHandler.append(returnCode); + mDBUSMessageHandler.sendMessage(); +} + void IAmRoutingReceiverShadowDbus::peekSink(DBusConnection* conn, DBusMessage* msg) { (void) ((conn)); @@ -758,6 +789,27 @@ void IAmRoutingReceiverShadowDbus::updateGateway(DBusConnection* conn, DBusMessa } } +void IAmRoutingReceiverShadowDbus::updateConverter(DBusConnection* conn, DBusMessage* msg) +{ + (void) ((conn)); + assert(mRoutingReceiveInterface != NULL); + mDBUSMessageHandler.initReceive(msg); + am_converterID_t converterID(mDBUSMessageHandler.getInt()); + std::vector<am_CustomAvailabilityReason_t> listSourceConnectionFormats(mDBUSMessageHandler.getListconnectionFormats()); + std::vector<am_CustomAvailabilityReason_t> listSinkConnectionFormats(mDBUSMessageHandler.getListconnectionFormats()); + std::vector<bool> convertionMatrix(mDBUSMessageHandler.getListBool()); + + am_Error_e returnCode = mRoutingReceiveInterface->updateConverter(converterID,listSourceConnectionFormats,listSinkConnectionFormats,convertionMatrix); + mDBUSMessageHandler.initReply(msg); + mDBUSMessageHandler.append(returnCode); + mDBUSMessageHandler.sendMessage(); + if (returnCode != E_OK) + { + log(&routingDbus, DLT_LOG_INFO, "error updateGateway"); + return; + } +} + void IAmRoutingReceiverShadowDbus::updateSink(DBusConnection* conn, DBusMessage* msg) { (void) ((conn)); |