- changed domainData, sourceData, sinkData, gatewayData, crossfaderData to D-Bus...
authorNrusingh Dash <ndash@jp.adit-jv.com>
Tue, 26 Feb 2013 14:56:44 +0000 (23:56 +0900)
committerChristian Linke <christian.linke@bmw.de>
Thu, 28 Feb 2013 17:14:36 +0000 (18:14 +0100)
Signed-off-by: Nrusingh Dash <ndash@jp.adit-jv.com>
PluginRoutingInterfaceDbus/include/CAmDbusMessageHandler.h
PluginRoutingInterfaceDbus/include/RoutingReceiver.xml
PluginRoutingInterfaceDbus/src/CAmDbusMessageHandler.cpp
PluginRoutingInterfaceDbus/src/IAmRoutingReceiverShadow.cpp

index 03d9eca..62ad421 100644 (file)
@@ -93,6 +93,7 @@ public:
     am_Source_s getSourceData();
     am_Sink_s getSinkData();
     am_Gateway_s getGatewayData();
+    am_Crossfader_s getCrossfaderData();
     am_MainSoundProperty_s getMainSoundProperty();
 
     /**
index 76f998d..5fb390a 100644 (file)
@@ -66,7 +66,7 @@
                <arg name="error" type="q" direction="out" />
        </method>
        <method name="registerDomain">
-               <arg name="domaindata" type="qsssbbq" direction="in" /> <!-- am_domainID_t domainID; std::string name; std::string busname; std::string nodename; bool early; bool complete; am_DomainState_e state; -->
+               <arg name="domaindata" type="(qsssbbq)" direction="in" /> <!-- am_domainID_t domainID; std::string name; std::string busname; std::string nodename; bool early; bool complete; am_DomainState_e state; -->
                <arg name="returnBusname" type="s" direction="in" /> <!-- the busname for all communication to this domain -->
                <arg name="returnPath" type="s" direction="in" /> <!-- the path for all communication to this domain -->
                <arg name="returnInterface" type="s" direction="in" />  <!-- the interface for all communication to this domain -->
@@ -78,7 +78,7 @@
                <arg name="error" type="q" direction="out" />
        </method>
        <method name="registerGateway">
-               <arg name="gatewayData" type="qsqqqqqa(q)a(q)a(b)" direction="in" /> <!-- am_gatewayID_t gatewayID; std::string name; am_sinkID_t sinkID; am_sourceID_t sourceID; am_domainID_t domainSinkID; am_domainID_t domainSourceID; am_domainID_t controlDomainID; std::vector<am_ConnectionFormat_e> listSourceFormats; std::vector<am_ConnectionFormat_e> listSinkFormats; std::vector<bool> convertionMatrix; -->
+               <arg name="gatewayData" type="(qsqqqqqa(q)a(q)a(b))" direction="in" /> <!-- am_gatewayID_t gatewayID; std::string name; am_sinkID_t sinkID; am_sourceID_t sourceID; am_domainID_t domainSinkID; am_domainID_t domainSourceID; am_domainID_t controlDomainID; std::vector<am_ConnectionFormat_e> listSourceFormats; std::vector<am_ConnectionFormat_e> listSinkFormats; std::vector<bool> convertionMatrix; -->
                <arg name="gatewayID" type="q" direction="out" />
                <arg name="error" type="q" direction="out" />
        </method>
@@ -92,7 +92,7 @@
            <arg name="error" type="q" direction="out" />
        </method>
        <method name="registerSink">      
-               <arg name="sinkData" type="qsqqnb(nn)nna(nn)ana(nn)" direction="in" /> <!-- am_sinkID_t sinkID; std::string name; am_domainID_t domainID; am_sinkClass_t sinkClassID; am_volume_t volume; bool visible; am_Availability_s available; am_MuteState_e muteState;am_mainVolume_t mainVolume; std::vector<am_SoundProperty_s> listSoundProperties; std::vector<am_ConnectionFormat_e> listConnectionFormats;  std::vector<am_MainSoundProperty_s> listMainSoundProperties; -->     
+               <arg name="sinkData" type="(qsqqnb(nn)nna(nn)ana(nn))" direction="in" /> <!-- am_sinkID_t sinkID; std::string name; am_domainID_t domainID; am_sinkClass_t sinkClassID; am_volume_t volume; bool visible; am_Availability_s available; am_MuteState_e muteState;am_mainVolume_t mainVolume; std::vector<am_SoundProperty_s> listSoundProperties; std::vector<am_ConnectionFormat_e> listConnectionFormats;  std::vector<am_MainSoundProperty_s> listMainSoundProperties; -->     
                <arg name="sinkID" type="q" direction="out" /> 
                <arg name="error" type="q" direction="out" />
        </method>
                <arg name="error" type="i" direction="out" />           
        </method>
        <method name="registerSource">      
-               <arg name="sourceData" type="qqsqqnb(nn)qa(nn)ana(nn)" direction="in" />  <!-- am_sourceID_t sourceID; am_domainID_t domainID; std::string name; am_sourceClass_t sourceClassID; am_SourceState_e sourceState; am_volume_t volume; bool visible; am_Availability_s available; am_InterruptState_e interruptState; std::vector<am_SoundProperty_s> listSoundProperties; std::vector<am_ConnectionFormat_e> listConnectionFormats; std::vector<am_MainSoundProperty_s> listMainSoundProperties; -->    
+               <arg name="sourceData" type="(qqsqqnb(nn)qa(nn)ana(nn))" direction="in" />  <!-- am_sourceID_t sourceID; am_domainID_t domainID; std::string name; am_sourceClass_t sourceClassID; am_SourceState_e sourceState; am_volume_t volume; bool visible; am_Availability_s available; am_InterruptState_e interruptState; std::vector<am_SoundProperty_s> listSoundProperties; std::vector<am_ConnectionFormat_e> listConnectionFormats; std::vector<am_MainSoundProperty_s> listMainSoundProperties; -->    
                <arg name="sourceID" type="q" direction="out" /> 
                <arg name="error" type="i" direction="out" />
        </method>
                <arg name="error" type="i" direction="out" />                   
        </method>
        <method name="registerCrossfader">      
-               <arg name="crossfaderData" type="qsqqqq" direction="in" />  <!-- am_crossfaderID_t crossfaderID; std::string name; am_sinkID_t sinkID_A; am_sinkID_t sinkID_B; am_sourceID_t sourceID; am_HotSink_e hotSink; -->
+               <arg name="crossfaderData" type="(qsqqqq)" direction="in" />  <!-- am_crossfaderID_t crossfaderID; std::string name; am_sinkID_t sinkID_A; am_sinkID_t sinkID_B; am_sourceID_t sourceID; am_HotSink_e hotSink; -->
                <arg name="crossfaderID" type="q" direction="out" /> 
                <arg name="error" type="i" direction="out" />
        </method>
index 82f912a..2591012 100644 (file)
@@ -335,149 +335,222 @@ std::vector<am_EarlyData_s> CAmRoutingDbusMessageHandler::getEarlyData()
 am_Domain_s CAmRoutingDbusMessageHandler::getDomainData()
 {
     am_Domain_s domainData;
-    domainData.domainID = static_cast<am_domainID_t>(getUInt());
-    domainData.name = getString();
-    domainData.busname = getString();
-    domainData.nodename = getString();
-    domainData.early = getBool();
-    domainData.complete = getBool();
-    domainData.state = static_cast<am_DomainState_e>(getUInt());
+    DBusMessageIter domainDataIter;
+
+    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, &domainDataIter);
+       domainData.domainID = static_cast<am_domainID_t>(getUInt(domainDataIter, true));
+       domainData.name = getString(domainDataIter, true);
+       domainData.busname = getString(domainDataIter, true);
+       domainData.nodename = getString(domainDataIter, true);
+       domainData.early = getBool(domainDataIter, true);
+       domainData.complete = getBool(domainDataIter, true);
+       domainData.state = static_cast<am_DomainState_e>(getUInt(domainDataIter, false));
+        dbus_message_iter_next(&mDBusMessageIter);
+    }
     return (domainData);
 }
 
 am_Source_s CAmRoutingDbusMessageHandler::getSourceData()
 {
     am_Source_s sourceData;
-    DBusMessageIter availIter, arrayIter, structIter;
+    DBusMessageIter sourceDataIter, availIter, arrayIter, structIter;
     am_SoundProperty_s soundProperty;
     am_ConnectionFormat_e connectionFormat;
     am_MainSoundProperty_s mainSoundProperty;
-    sourceData.sourceID = static_cast<am_sourceID_t>(getUInt());
-    sourceData.domainID = static_cast<am_domainID_t>(getUInt());
-    sourceData.name = getString();
-    sourceData.sourceClassID = static_cast<am_sourceClass_t>(getUInt());
-    sourceData.sourceState = static_cast<am_SourceState_e>(getUInt());
-    sourceData.volume = static_cast<am_volume_t>(getInt());
-    sourceData.visible = getBool();
-    dbus_message_iter_recurse(&mDBusMessageIter, &availIter);
-    sourceData.available.availability = static_cast<am_Availability_e>(getInt(availIter, true));
-    sourceData.available.availabilityReason = static_cast<am_AvailabilityReason_e>(getInt(availIter, false));
-    dbus_message_iter_next(&mDBusMessageIter);
-    sourceData.interruptState = static_cast<am_InterruptState_e>(getUInt());
-    dbus_message_iter_recurse(&mDBusMessageIter, &arrayIter);
-    do
-    {
-        dbus_message_iter_recurse(&arrayIter, &structIter);
-        soundProperty.type = static_cast<am_SoundPropertyType_e>(getInt(structIter, true));
-        soundProperty.value = static_cast<int16_t>(getInt(structIter, false));
-        sourceData.listSoundProperties.push_back(soundProperty);
-    } while (dbus_message_iter_next(&arrayIter));
-    dbus_message_iter_next(&mDBusMessageIter);
-    dbus_message_iter_recurse(&mDBusMessageIter, &arrayIter);
-    do
-    {
-        connectionFormat = static_cast<am_ConnectionFormat_e>(getInt(arrayIter, false));
-        sourceData.listConnectionFormats.push_back(connectionFormat);
-    } while (dbus_message_iter_next(&arrayIter));
-    dbus_message_iter_next(&mDBusMessageIter);
 
-    dbus_message_iter_recurse(&mDBusMessageIter, &arrayIter);
-    do
+    if (DBUS_TYPE_STRUCT != dbus_message_iter_get_arg_type(&mDBusMessageIter))
     {
-        dbus_message_iter_recurse(&arrayIter, &structIter);
-        mainSoundProperty.type = static_cast<am_MainSoundPropertyType_e>(getInt(structIter, true));
-        mainSoundProperty.value = static_cast<int16_t>(getInt(structIter, false));
-        sourceData.listMainSoundProperties.push_back(mainSoundProperty);
-    } while (dbus_message_iter_next(&arrayIter));
+        log(&routingDbus, DLT_LOG_ERROR, "CAmRoutingDbusMessageHandler::getSourceData 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, &sourceDataIter);
+       sourceData.sourceID = static_cast<am_sourceID_t>(getUInt(sourceDataIter, true));
+       sourceData.domainID = static_cast<am_domainID_t>(getUInt(sourceDataIter, true));
+       sourceData.name = getString(sourceDataIter, true);
+       sourceData.sourceClassID = static_cast<am_sourceClass_t>(getUInt(sourceDataIter, true));
+       sourceData.sourceState = static_cast<am_SourceState_e>(getUInt(sourceDataIter, true));
+       sourceData.volume = static_cast<am_volume_t>(getInt(sourceDataIter, true));
+       sourceData.visible = getBool(sourceDataIter, true);
+       dbus_message_iter_recurse(&sourceDataIter, &availIter);
+       sourceData.available.availability = static_cast<am_Availability_e>(getInt(availIter, true));
+       sourceData.available.availabilityReason = static_cast<am_AvailabilityReason_e>(getInt(availIter, false));
+       dbus_message_iter_next(&sourceDataIter);
+       sourceData.interruptState = static_cast<am_InterruptState_e>(getUInt(sourceDataIter, true));
+       dbus_message_iter_recurse(&sourceDataIter, &arrayIter);
+       do
+       {
+           dbus_message_iter_recurse(&arrayIter, &structIter);
+           soundProperty.type = static_cast<am_SoundPropertyType_e>(getInt(structIter, true));
+           soundProperty.value = static_cast<int16_t>(getInt(structIter, false));
+           sourceData.listSoundProperties.push_back(soundProperty);
+       } while (dbus_message_iter_next(&arrayIter));
+       dbus_message_iter_next(&sourceDataIter);
+       dbus_message_iter_recurse(&sourceDataIter, &arrayIter);
+       do
+       {
+           connectionFormat = static_cast<am_ConnectionFormat_e>(getInt(arrayIter, false));
+           sourceData.listConnectionFormats.push_back(connectionFormat);
+       } while (dbus_message_iter_next(&arrayIter));
+       dbus_message_iter_next(&sourceDataIter);
+
+       dbus_message_iter_recurse(&sourceDataIter, &arrayIter);
+       do
+       {
+           dbus_message_iter_recurse(&arrayIter, &structIter);
+           mainSoundProperty.type = static_cast<am_MainSoundPropertyType_e>(getInt(structIter, true));
+           mainSoundProperty.value = static_cast<int16_t>(getInt(structIter, false));
+           sourceData.listMainSoundProperties.push_back(mainSoundProperty);
+       } while (dbus_message_iter_next(&arrayIter));
+        dbus_message_iter_next(&mDBusMessageIter);
+    }
     return (sourceData);
 }
 
 am_Sink_s CAmRoutingDbusMessageHandler::getSinkData()
 {
     am_Sink_s sinkData;
-    DBusMessageIter structIter, availIter, arrayIter;
+    DBusMessageIter sinkDataIter, structIter, availIter, arrayIter;
     am_SoundProperty_s soundProperty;
     am_ConnectionFormat_e connectionFormat;
     am_MainSoundProperty_s mainSoundProperty;
-    sinkData.sinkID = static_cast<am_sinkID_t>(getUInt());
-    sinkData.name = getString();
-    sinkData.domainID = static_cast<am_domainID_t>(getUInt());
-    sinkData.sinkClassID = static_cast<am_sinkClass_t>(getUInt());
-    sinkData.volume = static_cast<am_volume_t>(getInt());
-    sinkData.visible = getBool();
-    dbus_message_iter_recurse(&mDBusMessageIter, &availIter);
-    sinkData.available.availability = static_cast<am_Availability_e>(getInt(availIter, true));
-    sinkData.available.availabilityReason = static_cast<am_AvailabilityReason_e>(getInt(availIter, false));
-    dbus_message_iter_next(&mDBusMessageIter);
-    sinkData.muteState = static_cast<am_MuteState_e>(getInt());
-    sinkData.mainVolume = static_cast<am_mainVolume_t>(getInt());
 
-    dbus_message_iter_recurse(&mDBusMessageIter, &arrayIter);
-    do
-    {
-        dbus_message_iter_recurse(&arrayIter, &structIter);
-        soundProperty.type = static_cast<am_SoundPropertyType_e>(getInt(structIter, true));
-        soundProperty.value = static_cast<int16_t>(getInt(structIter, false));
-        sinkData.listSoundProperties.push_back(soundProperty);
-    } while (dbus_message_iter_next(&arrayIter));
-
-    dbus_message_iter_next(&mDBusMessageIter);
-
-    dbus_message_iter_recurse(&mDBusMessageIter, &arrayIter);
-    do
+    if (DBUS_TYPE_STRUCT != dbus_message_iter_get_arg_type(&mDBusMessageIter))
     {
-        connectionFormat = static_cast<am_ConnectionFormat_e>(getInt(arrayIter, false));
-        sinkData.listConnectionFormats.push_back(connectionFormat);
-    } while (dbus_message_iter_next(&arrayIter));
-    dbus_message_iter_next(&mDBusMessageIter);
-
-    dbus_message_iter_recurse(&mDBusMessageIter, &arrayIter);
-    do
+        log(&routingDbus, DLT_LOG_ERROR, "CAmRoutingDbusMessageHandler::getSinkData DBUS handler argument is no struct!");
+        mErrorName = std::string(DBUS_ERROR_INVALID_ARGS);
+        mErrorMsg = "DBus argument is no struct";
+    }
+    else
     {
-        dbus_message_iter_recurse(&arrayIter, &structIter);
-        mainSoundProperty.type = static_cast<am_MainSoundPropertyType_e>(getInt(structIter, true));
-        mainSoundProperty.value = static_cast<int16_t>(getInt(structIter, false));
-        sinkData.listMainSoundProperties.push_back(mainSoundProperty);
-    } while (dbus_message_iter_next(&arrayIter));
+        dbus_message_iter_recurse(&mDBusMessageIter, &sinkDataIter);
+       sinkData.sinkID = static_cast<am_sinkID_t>(getUInt(sinkDataIter, true));
+       sinkData.name = getString(sinkDataIter, true);
+       sinkData.domainID = static_cast<am_domainID_t>(getUInt(sinkDataIter, true));
+       sinkData.sinkClassID = static_cast<am_sinkClass_t>(getUInt(sinkDataIter, true));
+       sinkData.volume = static_cast<am_volume_t>(getInt(sinkDataIter, true));
+       sinkData.visible = getBool(sinkDataIter, true);
+       dbus_message_iter_recurse(&sinkDataIter, &availIter);
+       sinkData.available.availability = static_cast<am_Availability_e>(getInt(availIter, true));
+       sinkData.available.availabilityReason = static_cast<am_AvailabilityReason_e>(getInt(availIter, false));
+       dbus_message_iter_next(&sinkDataIter);
+       sinkData.muteState = static_cast<am_MuteState_e>(getInt(sinkDataIter, true));
+       sinkData.mainVolume = static_cast<am_mainVolume_t>(getInt(sinkDataIter, true));
+
+       dbus_message_iter_recurse(&sinkDataIter, &arrayIter);
+       do
+       {
+           dbus_message_iter_recurse(&arrayIter, &structIter);
+           soundProperty.type = static_cast<am_SoundPropertyType_e>(getInt(structIter, true));
+           soundProperty.value = static_cast<int16_t>(getInt(structIter, false));
+           sinkData.listSoundProperties.push_back(soundProperty);
+       } while (dbus_message_iter_next(&arrayIter));
+
+       dbus_message_iter_next(&sinkDataIter);
+
+       dbus_message_iter_recurse(&sinkDataIter, &arrayIter);
+       do
+       {
+           connectionFormat = static_cast<am_ConnectionFormat_e>(getInt(arrayIter, false));
+           sinkData.listConnectionFormats.push_back(connectionFormat);
+       } while (dbus_message_iter_next(&arrayIter));
+       dbus_message_iter_next(&sinkDataIter);
+
+       dbus_message_iter_recurse(&sinkDataIter, &arrayIter);
+       do
+       {
+           dbus_message_iter_recurse(&arrayIter, &structIter);
+           mainSoundProperty.type = static_cast<am_MainSoundPropertyType_e>(getInt(structIter, true));
+           mainSoundProperty.value = static_cast<int16_t>(getInt(structIter, false));
+           sinkData.listMainSoundProperties.push_back(mainSoundProperty);
+       } while (dbus_message_iter_next(&arrayIter));
+        dbus_message_iter_next(&mDBusMessageIter);
+    }
     return (sinkData);
 }
 
 am_Gateway_s CAmRoutingDbusMessageHandler::getGatewayData()
 {
     am_Gateway_s gatewayData;
-    DBusMessageIter arrayIter;
+    DBusMessageIter gatewayDataIter, arrayIter;
     am_ConnectionFormat_e connectionFormat;
     bool convertion;
-    gatewayData.gatewayID = static_cast<am_gatewayID_t>(getUInt());
-    gatewayData.name = getString();
-    gatewayData.sinkID = static_cast<am_sinkID_t>(getUInt());
-    gatewayData.sourceID = static_cast<am_sourceID_t>(getUInt());
-    gatewayData.domainSinkID = static_cast<am_domainID_t>(getUInt());
-    gatewayData.domainSourceID = static_cast<am_domainID_t>(getUInt());
-    gatewayData.controlDomainID = static_cast<am_domainID_t>(getUInt());
-    do
-    {
-        dbus_message_iter_recurse(&mDBusMessageIter, &arrayIter);
-        connectionFormat = static_cast<am_ConnectionFormat_e>(getUInt(arrayIter, false));
-        gatewayData.listSourceFormats.push_back(connectionFormat);
-    } while (dbus_message_iter_next(&arrayIter));
-    dbus_message_iter_next(&mDBusMessageIter);
-    do
+    if (DBUS_TYPE_STRUCT != dbus_message_iter_get_arg_type(&mDBusMessageIter))
     {
-        dbus_message_iter_recurse(&mDBusMessageIter, &arrayIter);
-        connectionFormat = static_cast<am_ConnectionFormat_e>(getUInt(arrayIter, false));
-        gatewayData.listSinkFormats.push_back(connectionFormat);
-    } while (dbus_message_iter_next(&arrayIter));
-    dbus_message_iter_next(&mDBusMessageIter);
-    do
+        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, &arrayIter);
-        convertion = getBool(arrayIter, false);
-        gatewayData.convertionMatrix.push_back(convertion);
-    } while (dbus_message_iter_next(&arrayIter));
+        dbus_message_iter_recurse(&mDBusMessageIter, &gatewayDataIter);
+       gatewayData.gatewayID = 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.domainSinkID = static_cast<am_domainID_t>(getUInt(gatewayDataIter, true));
+       gatewayData.domainSourceID = static_cast<am_domainID_t>(getUInt(gatewayDataIter, true));
+       gatewayData.controlDomainID = static_cast<am_domainID_t>(getUInt(gatewayDataIter, true));
+       do
+       {
+           dbus_message_iter_recurse(&gatewayDataIter, &arrayIter);
+           connectionFormat = static_cast<am_ConnectionFormat_e>(getUInt(arrayIter, false));
+           gatewayData.listSourceFormats.push_back(connectionFormat);
+       } while (dbus_message_iter_next(&arrayIter));
+       dbus_message_iter_next(&gatewayDataIter);
+       do
+       {
+           dbus_message_iter_recurse(&gatewayDataIter, &arrayIter);
+           connectionFormat = static_cast<am_ConnectionFormat_e>(getUInt(arrayIter, false));
+           gatewayData.listSinkFormats.push_back(connectionFormat);
+       } while (dbus_message_iter_next(&arrayIter));
+       dbus_message_iter_next(&gatewayDataIter);
+       do
+       {
+           dbus_message_iter_recurse(&gatewayDataIter, &arrayIter);
+           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;
+    DBusMessageIter crossfaderDataIter;
+
+    if (DBUS_TYPE_STRUCT != dbus_message_iter_get_arg_type(&mDBusMessageIter))
+    {
+        log(&routingDbus, DLT_LOG_ERROR, "CAmRoutingDbusMessageHandler::getCrossfaderData 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, &crossfaderDataIter);
+       crossfaderData.crossfaderID = static_cast<am_crossfaderID_t> (getInt(crossfaderDataIter, true));
+       crossfaderData.name = static_cast<std::string> (getString(crossfaderDataIter, true));
+       crossfaderData.sinkID_A = static_cast<am_sinkID_t> (getInt(crossfaderDataIter, true));
+       crossfaderData.sinkID_B = static_cast<am_sinkID_t> (getInt(crossfaderDataIter, true));
+       crossfaderData.sourceID = static_cast<am_sourceID_t> (getInt(crossfaderDataIter, true));
+       crossfaderData.hotSink = static_cast<am_HotSink_e> (getInt(crossfaderDataIter, false));
+        dbus_message_iter_next(&mDBusMessageIter);
+    }
+    return (crossfaderData);
+}
+
 am_MainSoundProperty_s CAmRoutingDbusMessageHandler::getMainSoundProperty()
 {
     am_MainSoundProperty_s mainSoundProperty;
index 4115a21..b07065e 100644 (file)
@@ -146,9 +146,11 @@ void IAmRoutingReceiverShadowDbus::hookDomainRegistrationComplete(DBusConnection
     (void) ((conn));
     assert(mRoutingReceiveInterface != NULL);
     mDBUSMessageHandler.initReceive(msg);
-    am_domainID_t domainID(mDBUSMessageHandler.getInt());
+    am_domainID_t domainID(mDBUSMessageHandler.getUInt());
     log(&routingDbus, DLT_LOG_INFO, "IAmRoutingReceiverShadow::hookDomainRegistrationComplete called, domainID", domainID);
     mRoutingReceiveInterface->hookDomainRegistrationComplete((am_domainID_t)((domainID)));
+    mDBUSMessageHandler.initReply(msg);
+    mDBUSMessageHandler.sendMessage();
 }
 
 void IAmRoutingReceiverShadowDbus::ackConnect(DBusConnection* conn, DBusMessage* msg)
@@ -441,13 +443,7 @@ void IAmRoutingReceiverShadowDbus::registerCrossfader(DBusConnection* conn, DBus
     (void) ((conn));
     assert(mRoutingReceiveInterface != NULL);
     mDBUSMessageHandler.initReceive(msg);
-    am_Crossfader_s crossfader;
-    crossfader.crossfaderID = mDBUSMessageHandler.getInt();
-    crossfader.name = std::string(mDBUSMessageHandler.getString());
-    crossfader.sinkID_A = mDBUSMessageHandler.getInt();
-    crossfader.sinkID_B = mDBUSMessageHandler.getInt();
-    crossfader.sourceID = mDBUSMessageHandler.getInt();
-    crossfader.hotSink = (am_HotSink_e)((mDBUSMessageHandler.getInt()));
+    am_Crossfader_s crossfader (mDBUSMessageHandler.getCrossfaderData());
     log(&routingDbus, DLT_LOG_INFO, "IAmRoutingReceiverShadow::registerCrossfader called, name", crossfader.name);
     am_Error_e returnCode = mRoutingReceiveInterface->registerCrossfader(crossfader, crossfader.crossfaderID);
     mDBUSMessageHandler.initReply(msg);
@@ -546,7 +542,7 @@ void IAmRoutingReceiverShadowDbus::hookDomainStateChange(DBusConnection* conn, D
     (void) ((conn));
     assert(mRoutingReceiveInterface != NULL);
     mDBUSMessageHandler.initReceive(msg);
-    am_domainID_t domainID = mDBUSMessageHandler.getInt();
+    am_domainID_t domainID = mDBUSMessageHandler.getUInt();
     am_DomainState_e domainState = (am_DomainState_e)((mDBUSMessageHandler.getInt()));
     log(&routingDbus, DLT_LOG_INFO, "IAmRoutingReceiverShadow::hookDomainStateChange called, hookDomainStateChange", domainID);
     mRoutingReceiveInterface->hookDomainStateChange(domainID, domainState);
@@ -664,12 +660,14 @@ void IAmRoutingReceiverShadowDbus::confirmRoutingReady(DBusConnection* conn, DBu
     (void) ((conn));
     assert(mRoutingReceiveInterface != NULL);
     mDBUSMessageHandler.initReceive(msg);
-    am_domainID_t domainID(mDBUSMessageHandler.getInt());
+    am_domainID_t domainID(mDBUSMessageHandler.getUInt());
     log(&routingDbus, DLT_LOG_INFO, "IAmRoutingReceiverShadowDbus::confirmRoutingReady called, domainID", domainID);
 
-    mNumberDomains--;
-    if(mNumberDomains==0)
-        mRoutingReceiveInterface->confirmRoutingRundown(mHandle,E_OK);
+    mRoutingReceiveInterface->confirmRoutingReady(mHandle, E_OK);
+    mNumberDomains++;
+
+    mDBUSMessageHandler.initReply(msg);
+    mDBUSMessageHandler.sendMessage();
 }
 
 void IAmRoutingReceiverShadowDbus::confirmRoutingRundown(DBusConnection* conn, DBusMessage* msg)
@@ -677,7 +675,7 @@ void IAmRoutingReceiverShadowDbus::confirmRoutingRundown(DBusConnection* conn, D
     (void) ((conn));
     assert(mRoutingReceiveInterface != NULL);
     mDBUSMessageHandler.initReceive(msg);
-    am_domainID_t domainID(mDBUSMessageHandler.getInt());
+    am_domainID_t domainID(mDBUSMessageHandler.getUInt());
     log(&routingDbus, DLT_LOG_INFO, "IAmRoutingReceiverShadowDbus::confirmRoutingRundown called, domainID", domainID);
 
     mNumberDomains--;