diff options
author | Christian Linke <christian.linke@bmw.de> | 2013-06-20 16:21:48 +0200 |
---|---|---|
committer | Christian Linke <christian.linke@bmw.de> | 2013-06-26 17:46:46 +0200 |
commit | c0fd43259ab0e269dd0918231c162d19d2dea593 (patch) | |
tree | 4149743db66cdb55dbf823af3bb82f557d135f97 /PluginRoutingInterfaceDbus/src | |
parent | e4107bd0ed54194a5cfef60c322fee63bbeeabb2 (diff) | |
download | audiomanager-c0fd43259ab0e269dd0918231c162d19d2dea593.tar.gz |
* some adoptins in the routinginterface
Signed-off-by: Christian Linke <christian.linke@bmw.de>
Diffstat (limited to 'PluginRoutingInterfaceDbus/src')
4 files changed, 405 insertions, 36 deletions
diff --git a/PluginRoutingInterfaceDbus/src/CAmDbusMessageHandler.cpp b/PluginRoutingInterfaceDbus/src/CAmDbusMessageHandler.cpp index 2591012..096dfbf 100644 --- a/PluginRoutingInterfaceDbus/src/CAmDbusMessageHandler.cpp +++ b/PluginRoutingInterfaceDbus/src/CAmDbusMessageHandler.cpp @@ -262,7 +262,7 @@ double CAmRoutingDbusMessageHandler::getDouble() return (getDouble(mDBusMessageIter, true)); } -am::am_Availability_s CAmRoutingDbusMessageHandler::getAvailability() +am_Availability_s CAmRoutingDbusMessageHandler::getAvailability() { am::am_Availability_s availability; availability.availability=A_UNKNOWN; @@ -352,7 +352,7 @@ am_Domain_s CAmRoutingDbusMessageHandler::getDomainData() 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)); + domainData.state = static_cast<am_DomainState_e>(getInt32(domainDataIter, false)); dbus_message_iter_next(&mDBusMessageIter); } return (domainData); @@ -365,6 +365,8 @@ am_Source_s CAmRoutingDbusMessageHandler::getSourceData() am_SoundProperty_s soundProperty; am_ConnectionFormat_e connectionFormat; am_MainSoundProperty_s mainSoundProperty; + am_NotificationConfiguration_s notificationConfiguration; + am_NotificationConfiguration_s MainnotificationConfiguration; if (DBUS_TYPE_STRUCT != dbus_message_iter_get_arg_type(&mDBusMessageIter)) { @@ -379,19 +381,19 @@ am_Source_s CAmRoutingDbusMessageHandler::getSourceData() 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.sourceState = static_cast<am_SourceState_e>(getInt32(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)); + sourceData.available.availability = static_cast<am_Availability_e>(getInt32(availIter, true)); + sourceData.available.availabilityReason = static_cast<am_AvailabilityReason_e>(getInt32(availIter, false)); dbus_message_iter_next(&sourceDataIter); - sourceData.interruptState = static_cast<am_InterruptState_e>(getUInt(sourceDataIter, true)); + sourceData.interruptState = static_cast<am_InterruptState_e>(getInt32(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.type = static_cast<am_SoundPropertyType_e>(getInt32(structIter, true)); soundProperty.value = static_cast<int16_t>(getInt(structIter, false)); sourceData.listSoundProperties.push_back(soundProperty); } while (dbus_message_iter_next(&arrayIter)); @@ -399,7 +401,7 @@ am_Source_s CAmRoutingDbusMessageHandler::getSourceData() dbus_message_iter_recurse(&sourceDataIter, &arrayIter); do { - connectionFormat = static_cast<am_ConnectionFormat_e>(getInt(arrayIter, false)); + connectionFormat = static_cast<am_ConnectionFormat_e>(getInt32(arrayIter, false)); sourceData.listConnectionFormats.push_back(connectionFormat); } while (dbus_message_iter_next(&arrayIter)); dbus_message_iter_next(&sourceDataIter); @@ -408,10 +410,32 @@ am_Source_s CAmRoutingDbusMessageHandler::getSourceData() do { dbus_message_iter_recurse(&arrayIter, &structIter); - mainSoundProperty.type = static_cast<am_MainSoundPropertyType_e>(getInt(structIter, true)); + mainSoundProperty.type = static_cast<am_MainSoundPropertyType_e>(getInt32(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(&sourceDataIter); + + dbus_message_iter_recurse(&sourceDataIter, &arrayIter); + do + { + dbus_message_iter_recurse(&arrayIter, &structIter); + MainnotificationConfiguration.type = static_cast<am_NotificationType_e>(getInt32(structIter, true)); + MainnotificationConfiguration.parameter = static_cast<int16_t>(getInt(structIter, false)); + MainnotificationConfiguration.status = static_cast<am_NotificationStatus_e>(getInt32(structIter, true)); + sourceData.listMainNotificationConfigurations.push_back(MainnotificationConfiguration); + } while (dbus_message_iter_next(&arrayIter)); + dbus_message_iter_next(&sourceDataIter); + + dbus_message_iter_recurse(&sourceDataIter, &arrayIter); + do + { + dbus_message_iter_recurse(&arrayIter, &structIter); + notificationConfiguration.type = static_cast<am_NotificationType_e>(getInt32(structIter, true)); + notificationConfiguration.parameter = static_cast<int16_t>(getInt(structIter, false)); + notificationConfiguration.status = static_cast<am_NotificationStatus_e>(getInt32(structIter, true)); + sourceData.listNotificationConfigurations.push_back(notificationConfiguration); + } while (dbus_message_iter_next(&arrayIter)); dbus_message_iter_next(&mDBusMessageIter); } return (sourceData); @@ -424,6 +448,8 @@ am_Sink_s CAmRoutingDbusMessageHandler::getSinkData() am_SoundProperty_s soundProperty; am_ConnectionFormat_e connectionFormat; am_MainSoundProperty_s mainSoundProperty; + am_NotificationConfiguration_s notificationConfiguration; + am_NotificationConfiguration_s MainnotificationConfiguration; if (DBUS_TYPE_STRUCT != dbus_message_iter_get_arg_type(&mDBusMessageIter)) { @@ -441,17 +467,17 @@ am_Sink_s CAmRoutingDbusMessageHandler::getSinkData() 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)); + sinkData.available.availability = static_cast<am_Availability_e>(getInt32(availIter, true)); + sinkData.available.availabilityReason = static_cast<am_AvailabilityReason_e>(getInt32(availIter, false)); dbus_message_iter_next(&sinkDataIter); - sinkData.muteState = static_cast<am_MuteState_e>(getInt(sinkDataIter, true)); + sinkData.muteState = static_cast<am_MuteState_e>(getInt32(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.type = static_cast<am_SoundPropertyType_e>(getInt32(structIter, true)); soundProperty.value = static_cast<int16_t>(getInt(structIter, false)); sinkData.listSoundProperties.push_back(soundProperty); } while (dbus_message_iter_next(&arrayIter)); @@ -461,19 +487,41 @@ am_Sink_s CAmRoutingDbusMessageHandler::getSinkData() dbus_message_iter_recurse(&sinkDataIter, &arrayIter); do { - connectionFormat = static_cast<am_ConnectionFormat_e>(getInt(arrayIter, false)); + connectionFormat = static_cast<am_ConnectionFormat_e>(getInt32(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_recurse(&sinkDataIter, &arrayIter); + do + { + dbus_message_iter_recurse(&arrayIter, &structIter); + mainSoundProperty.type = static_cast<am_MainSoundPropertyType_e>(getInt32(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(&sinkDataIter); + + dbus_message_iter_recurse(&sinkDataIter, &arrayIter); + do + { + dbus_message_iter_recurse(&arrayIter, &structIter); + MainnotificationConfiguration.type = static_cast<am_NotificationType_e>(getInt32(structIter, true)); + MainnotificationConfiguration.parameter = static_cast<int16_t>(getInt(structIter, false)); + MainnotificationConfiguration.status = static_cast<am_NotificationStatus_e>(getInt32(structIter, true)); + sinkData.listMainNotificationConfigurations.push_back(MainnotificationConfiguration); + } while (dbus_message_iter_next(&arrayIter)); + dbus_message_iter_next(&sinkDataIter); + + dbus_message_iter_recurse(&sinkDataIter, &arrayIter); + do + { + dbus_message_iter_recurse(&arrayIter, &structIter); + notificationConfiguration.type = static_cast<am_NotificationType_e>(getInt32(structIter, true)); + notificationConfiguration.parameter = static_cast<int16_t>(getInt(structIter, false)); + notificationConfiguration.status = static_cast<am_NotificationStatus_e>(getInt32(structIter, true)); + sinkData.listNotificationConfigurations.push_back(notificationConfiguration); + } while (dbus_message_iter_next(&arrayIter)); dbus_message_iter_next(&mDBusMessageIter); } return (sinkData); @@ -504,14 +552,14 @@ am_Gateway_s CAmRoutingDbusMessageHandler::getGatewayData() do { dbus_message_iter_recurse(&gatewayDataIter, &arrayIter); - connectionFormat = static_cast<am_ConnectionFormat_e>(getUInt(arrayIter, false)); + connectionFormat = static_cast<am_ConnectionFormat_e>(getInt32(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)); + connectionFormat = static_cast<am_ConnectionFormat_e>(getInt32(arrayIter, false)); gatewayData.listSinkFormats.push_back(connectionFormat); } while (dbus_message_iter_next(&arrayIter)); dbus_message_iter_next(&gatewayDataIter); @@ -898,6 +946,160 @@ void CAmRoutingDbusMessageHandler::append(const std::vector<am::am_SinkClass_s>& } } +std::vector<am_ConnectionFormat_e> CAmRoutingDbusMessageHandler::getListconnectionFormats() +{ + DBusMessageIter arrayIter; + std::vector<am_ConnectionFormat_e> listConnectionFormats; + if (DBUS_TYPE_ARRAY != dbus_message_iter_get_arg_type(&mDBusMessageIter)) + { + log(&routingDbus, DLT_LOG_ERROR, "CAmRoutingDbusMessageHandler::getListconnectionFormats DBUS handler argument is no array!"); + mErrorName = std::string(DBUS_ERROR_INVALID_ARGS); + mErrorMsg = "DBus argument is no array"; + } + else + { + do + { + dbus_message_iter_recurse(&mDBusMessageIter, &arrayIter); + am_ConnectionFormat_e connectionformat(static_cast<am_ConnectionFormat_e>(getUInt(arrayIter, false))); + listConnectionFormats.push_back(connectionformat); + } while (dbus_message_iter_next(&arrayIter)); + dbus_message_iter_next(&mDBusMessageIter); + } + return (listConnectionFormats); + +} + +std::vector<bool> CAmRoutingDbusMessageHandler::getListBool() +{ + DBusMessageIter arrayIter; + std::vector<bool> listBools; + if (DBUS_TYPE_ARRAY != dbus_message_iter_get_arg_type(&mDBusMessageIter)) + { + log(&routingDbus, DLT_LOG_ERROR, "CAmRoutingDbusMessageHandler::getListBool DBUS handler argument is no array!"); + mErrorName = std::string(DBUS_ERROR_INVALID_ARGS); + mErrorMsg = "DBus argument is no array"; + } + else + { + do + { + dbus_message_iter_recurse(&mDBusMessageIter, &arrayIter); + bool myBool(static_cast<bool>(getBool(arrayIter, false))); + listBools.push_back(myBool); + } while (dbus_message_iter_next(&arrayIter)); + dbus_message_iter_next(&mDBusMessageIter); + } + return (listBools); +} + +am_SoundProperty_s CAmRoutingDbusMessageHandler::getSoundProperty() +{ + am_SoundProperty_s soundProperty; + DBusMessageIter structIter; + + dbus_message_iter_recurse(&mDBusMessageIter, &structIter); + soundProperty.type = static_cast<am_SoundPropertyType_e>(getInt(structIter, true)); + soundProperty.value = static_cast<int16_t>(getInt(structIter, false)); + dbus_message_iter_next(&mDBusMessageIter); + + return(soundProperty); +} + +std::vector<am_SoundProperty_s> CAmRoutingDbusMessageHandler::getListSoundProperties() +{ + DBusMessageIter arrayIter; + DBusMessageIter structIter; + am_SoundProperty_s soundProperty; + std::vector<am_SoundProperty_s> listSoundProperties; + if (DBUS_TYPE_ARRAY != dbus_message_iter_get_arg_type(&mDBusMessageIter)) + { + log(&routingDbus, DLT_LOG_ERROR, "CAmRoutingDbusMessageHandler::getListSoundProperties DBUS handler argument is no array!"); + mErrorName = std::string(DBUS_ERROR_INVALID_ARGS); + mErrorMsg = "DBus argument is no array"; + } + else + { + do + { + dbus_message_iter_recurse(&mDBusMessageIter, &arrayIter); + 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)); + listSoundProperties.push_back(soundProperty); + } while (dbus_message_iter_next(&arrayIter)); + dbus_message_iter_next(&structIter); + } + return (listSoundProperties); +} + +std::vector<am_MainSoundProperty_s> CAmRoutingDbusMessageHandler::getListMainSoundProperties() +{ + DBusMessageIter arrayIter; + DBusMessageIter structIter; + am_MainSoundProperty_s soundProperty; + std::vector<am_MainSoundProperty_s> listSoundProperties; + if (DBUS_TYPE_ARRAY != dbus_message_iter_get_arg_type(&mDBusMessageIter)) + { + log(&routingDbus, DLT_LOG_ERROR, "CAmRoutingDbusMessageHandler::getListSoundProperties DBUS handler argument is no array!"); + mErrorName = std::string(DBUS_ERROR_INVALID_ARGS); + mErrorMsg = "DBus argument is no array"; + } + else + { + do + { + dbus_message_iter_recurse(&mDBusMessageIter, &arrayIter); + dbus_message_iter_recurse(&arrayIter, &structIter); + soundProperty.type = static_cast<am_MainSoundPropertyType_e>(getInt(structIter, true)); + soundProperty.value = static_cast<int16_t>(getInt(structIter, false)); + listSoundProperties.push_back(soundProperty); + } while (dbus_message_iter_next(&arrayIter)); + dbus_message_iter_next(&structIter); + } + return (listSoundProperties); +} + +am_NotificationPayload_s CAmRoutingDbusMessageHandler::getNotificationPayload() +{ + am_NotificationPayload_s notificationPayload; + DBusMessageIter structIter; + + dbus_message_iter_recurse(&mDBusMessageIter, &structIter); + notificationPayload.type = static_cast<am_NotificationType_e>(getInt(structIter, true)); + notificationPayload.value = static_cast<int16_t>(getInt(structIter, false)); + dbus_message_iter_next(&mDBusMessageIter); + + return (notificationPayload); +} + +dbus_int32_t CAmRoutingDbusMessageHandler::getInt32() +{ + return (getInt32(mDBusMessageIter, true)); +} + +dbus_int32_t CAmRoutingDbusMessageHandler::getInt32(DBusMessageIter& iter, bool next) +{ + dbus_int32_t param(0); + #ifdef GLIB_DBUS_TYPES_TOLERANT + if (DBUS_TYPE_INT32 != dbus_message_iter_get_arg_type(&iter) && DBUS_TYPE_INT32 != dbus_message_iter_get_arg_type(&iter)) + #else + if (DBUS_TYPE_INT32 != dbus_message_iter_get_arg_type(&iter)) + #endif + { + log(&routingDbus, DLT_LOG_ERROR, "DBusMessageHandler::getInt DBUS handler argument is no int32_t!"); + mErrorName = std::string(DBUS_ERROR_INVALID_ARGS); + mErrorMsg = "DBus argument is no int32_t"; + } + else + { + dbus_message_iter_get_basic(&iter, ¶m); + if (next) + dbus_message_iter_next(&iter); + } + return (param); +} + void CAmRoutingDbusMessageHandler::append(const std::vector<am::am_SystemProperty_s>& listSystemProperties) { DBusMessageIter arrayIter; @@ -923,7 +1125,7 @@ void CAmRoutingDbusMessageHandler::append(const std::vector<am::am_SystemPropert void CAmRoutingDbusMessageHandler::append(const am::am_Error_e error) { - if (!dbus_message_iter_append_basic(&mDBusMessageIter, DBUS_TYPE_UINT16, &error)) + if (!dbus_message_iter_append_basic(&mDBusMessageIter, DBUS_TYPE_INT32, &error)) { log(&routingDbus, DLT_LOG_ERROR, "DBusMessageHandler::append Cannot allocate DBus message!"); mErrorName = std::string(DBUS_ERROR_NO_MEMORY); diff --git a/PluginRoutingInterfaceDbus/src/CAmDbusSend.cpp b/PluginRoutingInterfaceDbus/src/CAmDbusSend.cpp index 765bc1d..e3bb371 100644 --- a/PluginRoutingInterfaceDbus/src/CAmDbusSend.cpp +++ b/PluginRoutingInterfaceDbus/src/CAmDbusSend.cpp @@ -29,7 +29,8 @@ CAmRoutingDbusSend::CAmRoutingDbusSend(DBusConnection* conn, std::string bus_nam mpDbusMessage(NULL), // mpDbusConnection(conn), // mDbusMessageIter(), // - mDBusError() + mDBusError(), // + mSerial(1) { dbus_error_init(&mDBusError); mpDbusMessage = dbus_message_new_method_call(bus_name.c_str(), path.c_str(), interface.c_str(), method.c_str()); @@ -113,10 +114,20 @@ void CAmRoutingDbusSend::append(am_SoundProperty_s soundProperty) } } +void CAmRoutingDbusSend::append(int integer) +{ + dbus_message_iter_init_append(mpDbusMessage, &mDbusMessageIter); + if (!dbus_message_iter_append_basic(&mDbusMessageIter, DBUS_TYPE_INT32, &integer)) + { + log(&routingDbus, DLT_LOG_ERROR, "CAmRoutingDbusSend::append no more memory"); + this->~CAmRoutingDbusSend(); + } +} + am_Error_e CAmRoutingDbusSend::send() { - int16_t error; + int32_t error; DBusMessage* reply(dbus_connection_send_with_reply_and_block(mpDbusConnection, mpDbusMessage, -1, &mDBusError)); if (!reply) { @@ -124,10 +135,20 @@ am_Error_e CAmRoutingDbusSend::send() return (E_UNKNOWN); } if(!dbus_message_get_args(reply, &mDBusError, // - DBUS_TYPE_INT16, &error, // + DBUS_TYPE_INT32, &error, // DBUS_TYPE_INVALID)) return (E_UNKNOWN); dbus_message_unref(reply); return (static_cast<am_Error_e>(error)); } + +am_Error_e CAmRoutingDbusSend::sendAsync() +{ + + dbus_connection_send(mpDbusConnection, mpDbusMessage, &mSerial); + mSerial++; + return (E_OK); + +} + } diff --git a/PluginRoutingInterfaceDbus/src/CAmRoutingSenderDbus.cpp b/PluginRoutingInterfaceDbus/src/CAmRoutingSenderDbus.cpp index 078f47a..706cbd6 100644 --- a/PluginRoutingInterfaceDbus/src/CAmRoutingSenderDbus.cpp +++ b/PluginRoutingInterfaceDbus/src/CAmRoutingSenderDbus.cpp @@ -116,10 +116,10 @@ am_Error_e CAmRoutingSenderDbus::asyncConnect(const am_Handle_s handle, const am send.append(connectionID); send.append(sourceID); send.append(sinkID); - send.append(static_cast<int16_t>(connectionFormat)); + send.append(static_cast<int32_t>(connectionFormat)); mMapConnections.insert(std::make_pair(connectionID, (iter->second))); mMapHandles.insert(std::make_pair(+handle.handle, iter->second)); - return (send.send()); + return (send.sendAsync()); } log(&routingDbus, DLT_LOG_ERROR, "CAmRoutingSenderDbus::asyncConnect could not find interface"); return (E_UNKNOWN); @@ -136,7 +136,7 @@ am_Error_e CAmRoutingSenderDbus::asyncDisconnect(const am_Handle_s handle, const send.append(handle.handle); send.append(connectionID); mMapHandles.insert(std::make_pair(+handle.handle, iter->second)); - return (send.send()); + return (send.sendAsync()); } log(&routingDbus, DLT_LOG_ERROR, "CAmRoutingSenderDbus::asyncDisconnect could not find interface"); return (E_UNKNOWN); @@ -153,7 +153,7 @@ am_Error_e CAmRoutingSenderDbus::asyncSetSinkVolume(const am_Handle_s handle, co send.append(handle.handle); send.append(sinkID); send.append(volume); - send.append(static_cast<int16_t>(ramp)); + send.append(static_cast<int32_t>(ramp)); send.append(time); mMapHandles.insert(std::make_pair(+handle.handle, iter->second)); return (send.send()); @@ -192,9 +192,9 @@ am_Error_e CAmRoutingSenderDbus::asyncSetSourceState(const am_Handle_s handle, c CAmRoutingDbusSend send(mpDBusConnection, iter->second.busname, iter->second.path, iter->second.interface, "asyncSetSourceState"); send.append(handle.handle); send.append(sourceID); - send.append(static_cast<int16_t>(state)); + send.append(static_cast<int32_t>(state)); mMapHandles.insert(std::make_pair(+handle.handle, iter->second)); - return (send.send()); + return (send.sendAsync()); } log(&routingDbus, DLT_LOG_ERROR, "CAmRoutingSenderDbus::asyncSetSourceState could not find interface"); return (E_UNKNOWN); @@ -292,7 +292,7 @@ am_Error_e CAmRoutingSenderDbus::setDomainState(const am_domainID_t domainID, co { CAmRoutingDbusSend send(mpDBusConnection, iter->second.busname, iter->second.path, iter->second.interface, "setDomainState"); send.append(domainID); - send.append(static_cast<int16_t>(domainState)); + send.append(static_cast<int>(domainState)); return (send.send()); } log(&routingDbus, DLT_LOG_ERROR, "CAmRoutingSenderDbus::setDomainState could not find interface"); diff --git a/PluginRoutingInterfaceDbus/src/IAmRoutingReceiverShadow.cpp b/PluginRoutingInterfaceDbus/src/IAmRoutingReceiverShadow.cpp index 5ba1c34..5f600be 100644 --- a/PluginRoutingInterfaceDbus/src/IAmRoutingReceiverShadow.cpp +++ b/PluginRoutingInterfaceDbus/src/IAmRoutingReceiverShadow.cpp @@ -704,7 +704,12 @@ void IAmRoutingReceiverShadowDbus::confirmRoutingRundown(DBusConnection* conn, D mNumberDomains--; if(mNumberDomains==0) - mRoutingReceiveInterface->confirmRoutingReady(mHandle,E_OK); + { + logInfo("sending out"); + mRoutingReceiveInterface->confirmRoutingRundown(mHandle,E_OK); + } + mDBUSMessageHandler.initReply(msg); + mDBUSMessageHandler.sendMessage(); } void IAmRoutingReceiverShadowDbus::gotReady(int16_t numberDomains, uint16_t handle) @@ -718,6 +723,142 @@ void IAmRoutingReceiverShadowDbus::gotRundown(int16_t numberDomains, uint16_t ha mHandle=handle; } +void IAmRoutingReceiverShadowDbus::updateGateway(DBusConnection* conn, DBusMessage* msg) +{ + (void) ((conn)); + assert(mRoutingReceiveInterface != NULL); + mDBUSMessageHandler.initReceive(msg); + am_gatewayID_t gatewayID(mDBUSMessageHandler.getInt()); + std::vector<am_ConnectionFormat_e> listSourceConnectionFormats(mDBUSMessageHandler.getListconnectionFormats()); + std::vector<am_ConnectionFormat_e> listSinkConnectionFormats(mDBUSMessageHandler.getListconnectionFormats()); + std::vector<bool> convertionMatrix(mDBUSMessageHandler.getListBool()); + + am_Error_e returnCode = mRoutingReceiveInterface->updateGateway(gatewayID,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)); + assert(mRoutingReceiveInterface != NULL); + mDBUSMessageHandler.initReceive(msg); + am_sinkID_t sinkID(mDBUSMessageHandler.getInt()); + am_sinkClass_t sinkClassID(mDBUSMessageHandler.getInt()); + std::vector<am_SoundProperty_s> listSoundProperties(mDBUSMessageHandler.getListSoundProperties()); + std::vector<am_ConnectionFormat_e> listSinkConnectionFormats(mDBUSMessageHandler.getListconnectionFormats()); + std::vector<am_MainSoundProperty_s> listMainSoundProperties(mDBUSMessageHandler.getListMainSoundProperties()); + + am_Error_e returnCode = mRoutingReceiveInterface->updateSink(sinkID,sinkClassID,listSoundProperties,listSinkConnectionFormats,listMainSoundProperties); + mDBUSMessageHandler.initReply(msg); + mDBUSMessageHandler.append(returnCode); + mDBUSMessageHandler.sendMessage(); + if (returnCode != E_OK) + { + log(&routingDbus, DLT_LOG_INFO, "error updateSink"); + return; + } +} + +void IAmRoutingReceiverShadowDbus::updateSource(DBusConnection* conn, DBusMessage* msg) +{ + (void) ((conn)); + assert(mRoutingReceiveInterface != NULL); + mDBUSMessageHandler.initReceive(msg); + am_sourceID_t sourceID(mDBUSMessageHandler.getInt()); + am_sourceClass_t sourceClassID(mDBUSMessageHandler.getInt()); + std::vector<am_SoundProperty_s> listSoundProperties(mDBUSMessageHandler.getListSoundProperties()); + std::vector<am_ConnectionFormat_e> listSinkConnectionFormats(mDBUSMessageHandler.getListconnectionFormats()); + std::vector<am_MainSoundProperty_s> listMainSoundProperties(mDBUSMessageHandler.getListMainSoundProperties()); + + am_Error_e returnCode = mRoutingReceiveInterface->updateSource(sourceID,sourceClassID,listSoundProperties,listSinkConnectionFormats,listMainSoundProperties); + mDBUSMessageHandler.initReply(msg); + mDBUSMessageHandler.append(returnCode); + mDBUSMessageHandler.sendMessage(); + if (returnCode != E_OK) + { + log(&routingDbus, DLT_LOG_INFO, "error updateSink"); + return; + } +} + +void IAmRoutingReceiverShadowDbus::ackSetVolumes(DBusConnection* conn, DBusMessage* msg) +{ + (void) ((conn)); + am_Error_e returnCode(am_Error_e::E_NOT_USED); + mDBUSMessageHandler.initReply(msg); + mDBUSMessageHandler.append(returnCode); + mDBUSMessageHandler.sendMessage(); + log(&routingDbus, DLT_LOG_INFO, "error ackSetVolumes was called - not implemented yet"); + return; +} + +void IAmRoutingReceiverShadowDbus::ackSinkNotificationConfiguration(DBusConnection* conn, DBusMessage* msg) +{ + (void) ((conn)); + assert(mRoutingReceiveInterface != NULL); + mDBUSMessageHandler.initReceive(msg); + uint16_t handle(mDBUSMessageHandler.getUInt()); + am_Error_e error((am_Error_e)((mDBUSMessageHandler.getUInt()))); + log(&routingDbus, DLT_LOG_INFO, "IAmRoutingReceiverShadow::ackSinkNotificationConfiguration called, handle", handle, "error", error); + am_Handle_s myhandle; + myhandle.handleType = H_CONNECT; + myhandle.handle = handle; + mRoutingReceiveInterface->ackSinkNotificationConfiguration(myhandle, error); + mpRoutingSenderDbus->removeHandle(handle); + mDBUSMessageHandler.initReply(msg); + mDBUSMessageHandler.sendMessage(); +} + +void IAmRoutingReceiverShadowDbus::ackSourceNotificationConfiguration(DBusConnection* conn, DBusMessage* msg) +{ + (void) ((conn)); + assert(mRoutingReceiveInterface != NULL); + mDBUSMessageHandler.initReceive(msg); + uint16_t handle(mDBUSMessageHandler.getUInt()); + am_Error_e error((am_Error_e)((mDBUSMessageHandler.getUInt()))); + log(&routingDbus, DLT_LOG_INFO, "IAmRoutingReceiverShadow::ackSourceNotificationConfiguration called, handle", handle, "error", error); + am_Handle_s myhandle; + myhandle.handleType = H_CONNECT; + myhandle.handle = handle; + mRoutingReceiveInterface->ackSourceNotificationConfiguration(myhandle, error); + mpRoutingSenderDbus->removeHandle(handle); + mDBUSMessageHandler.initReply(msg); + mDBUSMessageHandler.sendMessage(); +} + +void IAmRoutingReceiverShadowDbus::hookSinkNotificationDataChange(DBusConnection* conn, DBusMessage* msg) +{ + (void) ((conn)); + assert(mRoutingReceiveInterface != NULL); + mDBUSMessageHandler.initReceive(msg); + am_sinkID_t sinkID(mDBUSMessageHandler.getUInt()); + am_NotificationPayload_s payload(mDBUSMessageHandler.getNotificationPayload()); + log(&routingDbus, DLT_LOG_INFO, "IAmRoutingReceiverShadow::hookSinkNotificationDataChange called, sinkID", sinkID); + mRoutingReceiveInterface->hookSinkNotificationDataChange(sinkID, payload); + mDBUSMessageHandler.initReply(msg); + mDBUSMessageHandler.sendMessage(); +} + +void IAmRoutingReceiverShadowDbus::hookSourceNotificationDataChange(DBusConnection* conn, DBusMessage* msg) +{ + (void) ((conn)); + assert(mRoutingReceiveInterface != NULL); + mDBUSMessageHandler.initReceive(msg); + am_sourceID_t sourceID(mDBUSMessageHandler.getUInt()); + am_NotificationPayload_s payload(mDBUSMessageHandler.getNotificationPayload()); + log(&routingDbus, DLT_LOG_INFO, "IAmRoutingReceiverShadow::hookSourceNotificationDataChange called, sourceID", sourceID); + mRoutingReceiveInterface->hookSourceNotificationDataChange(sourceID, payload); + mDBUSMessageHandler.initReply(msg); + mDBUSMessageHandler.sendMessage(); +} + IAmRoutingReceiverShadowDbus::functionMap_t IAmRoutingReceiverShadowDbus::createMap() { functionMap_t m; @@ -757,6 +898,11 @@ IAmRoutingReceiverShadowDbus::functionMap_t IAmRoutingReceiverShadowDbus::create m["sendChangedData"] = &IAmRoutingReceiverShadowDbus::sendChangedData; m["confirmRoutingReady"] = &IAmRoutingReceiverShadowDbus::confirmRoutingReady; m["confirmRoutingRundown"] = &IAmRoutingReceiverShadowDbus::confirmRoutingRundown; + m["ackSetVolumes"] = &IAmRoutingReceiverShadowDbus::ackSetVolumes; + m["ackSinkNotificationConfiguration"] = &IAmRoutingReceiverShadowDbus::ackSinkNotificationConfiguration; + m["ackSourceNotificationConfiguration"] = &IAmRoutingReceiverShadowDbus::ackSourceNotificationConfiguration; + m["hookSinkNotificationDataChange"] = &IAmRoutingReceiverShadowDbus::hookSinkNotificationDataChange; + m["hookSourceNotificationDataChange"] = &IAmRoutingReceiverShadowDbus::hookSourceNotificationDataChange; return (m); } } |