summaryrefslogtreecommitdiff
path: root/PluginRoutingInterfaceDbus
diff options
context:
space:
mode:
Diffstat (limited to 'PluginRoutingInterfaceDbus')
-rw-r--r--PluginRoutingInterfaceDbus/include/CAmDbusMessageHandler.h1
-rw-r--r--PluginRoutingInterfaceDbus/include/IAmRoutingReceiverShadow.h3
-rw-r--r--PluginRoutingInterfaceDbus/include/RoutingReceiver.xml15
-rw-r--r--PluginRoutingInterfaceDbus/src/CAmDbusMessageHandler.cpp45
-rw-r--r--PluginRoutingInterfaceDbus/src/IAmRoutingReceiverShadow.cpp52
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));