diff options
Diffstat (limited to 'PluginRoutingInterfaceDbus/src/CAmDbusMessageHandler.cpp')
-rw-r--r-- | PluginRoutingInterfaceDbus/src/CAmDbusMessageHandler.cpp | 287 |
1 files changed, 180 insertions, 107 deletions
diff --git a/PluginRoutingInterfaceDbus/src/CAmDbusMessageHandler.cpp b/PluginRoutingInterfaceDbus/src/CAmDbusMessageHandler.cpp index 82f912a..2591012 100644 --- a/PluginRoutingInterfaceDbus/src/CAmDbusMessageHandler.cpp +++ b/PluginRoutingInterfaceDbus/src/CAmDbusMessageHandler.cpp @@ -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; |