From a2edae5cee4254b933f42399edc0e092abd4f5cf Mon Sep 17 00:00:00 2001 From: Aleksandar Donchev Date: Mon, 2 Sep 2013 11:57:28 +0200 Subject: *PluginCommandInterfaceCAPI, PluginRoutingInterfaceCAPI, NodeStateCommunicatorCAPI with unit tests first version. Choosing between DBUS and Common-API via cmake. CommonAPI - legacy support for DBus properties (Set 1) Signed-off-by: Christian Linke (cherry picked from commit ea96ef59e29466667c90b506426e2a5a9cdb82d2) --- PluginRoutingInterfaceDbus/CMakeLists.txt | 4 +-- .../include/CAmRoutingSenderDbus.h | 3 ++ .../include/RoutingReceiver.xml | 9 ++--- .../include/configRoutingDbus.h | 2 +- .../src/CAmRoutingSenderDbus.cpp | 42 ++++++++++++++++++---- .../src/IAmRoutingReceiverShadow.cpp | 3 +- 6 files changed, 48 insertions(+), 15 deletions(-) (limited to 'PluginRoutingInterfaceDbus') diff --git a/PluginRoutingInterfaceDbus/CMakeLists.txt b/PluginRoutingInterfaceDbus/CMakeLists.txt index ec636c3..be7548c 100644 --- a/PluginRoutingInterfaceDbus/CMakeLists.txt +++ b/PluginRoutingInterfaceDbus/CMakeLists.txt @@ -60,7 +60,7 @@ INCLUDE_DIRECTORIES( file(GLOB PLUGINDBUS_SRCS_CXX "src/*.cpp") -add_library(PluginRoutingInterfaceDbus SHARED ${PLUGINDBUS_SRCS_CXX}) +add_library(PluginRoutingInterfaceDbus MODULE ${PLUGINDBUS_SRCS_CXX}) SET_TARGET_PROPERTIES(PluginRoutingInterfaceDbus PROPERTIES SOVERSION "${LIB_INTERFACE_VERSION}" @@ -109,4 +109,4 @@ INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/RoutingReceiver.xml SET(ADD_DEPEND "audiomanager-bin" "dlt" "libdbus-1-3(>=1.2.16)") set_property(GLOBAL APPEND PROPERTY sampleplugins_prop "${ADD_DEPEND}") -ENDIF(WITH_ROUTING_INTERFACE_DBUS) +ENDIF() diff --git a/PluginRoutingInterfaceDbus/include/CAmRoutingSenderDbus.h b/PluginRoutingInterfaceDbus/include/CAmRoutingSenderDbus.h index 631ebd3..9530174 100644 --- a/PluginRoutingInterfaceDbus/include/CAmRoutingSenderDbus.h +++ b/PluginRoutingInterfaceDbus/include/CAmRoutingSenderDbus.h @@ -2,6 +2,7 @@ * Copyright (c) 2012 BMW * * \author Christian Mueller, christian.ei.mueller@bmw.de BMW 2011,2012 + * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013 * * \copyright * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, @@ -81,6 +82,8 @@ private: typedef std::map mapConnections_t; typedef std::map mapHandles_t; + template static void removeEntriesForValue(const rs_lookupData_s & value, std::map & map); + mapDomain_t mMapDomains; mapSinks_t mMapSinks; mapSources_t mMapSources; diff --git a/PluginRoutingInterfaceDbus/include/RoutingReceiver.xml b/PluginRoutingInterfaceDbus/include/RoutingReceiver.xml index 291bdbd..cfdbf7c 100644 --- a/PluginRoutingInterfaceDbus/include/RoutingReceiver.xml +++ b/PluginRoutingInterfaceDbus/include/RoutingReceiver.xml @@ -73,6 +73,7 @@ + @@ -144,19 +145,19 @@ - + - + - + - + diff --git a/PluginRoutingInterfaceDbus/include/configRoutingDbus.h b/PluginRoutingInterfaceDbus/include/configRoutingDbus.h index aa95328..87ab078 100644 --- a/PluginRoutingInterfaceDbus/include/configRoutingDbus.h +++ b/PluginRoutingInterfaceDbus/include/configRoutingDbus.h @@ -1,6 +1,6 @@ #ifndef _ROUTINGDBUS_CONFIG_H #define _ROUTINGDBUS_CONFIG_H -#define ROUTING_DBUS_INTROSPECTION_FILE "/home/genius/workspace/workspace/AudioManager/bin/RoutingReceiver.xml" +#define ROUTING_DBUS_INTROSPECTION_FILE "/home/genius/workspace/AudioManager2/bin/RoutingReceiver.xml" #endif /* _ROUTINGDBUS_CONFIG_H */ diff --git a/PluginRoutingInterfaceDbus/src/CAmRoutingSenderDbus.cpp b/PluginRoutingInterfaceDbus/src/CAmRoutingSenderDbus.cpp index 706cbd6..06da0e6 100644 --- a/PluginRoutingInterfaceDbus/src/CAmRoutingSenderDbus.cpp +++ b/PluginRoutingInterfaceDbus/src/CAmRoutingSenderDbus.cpp @@ -4,6 +4,7 @@ * * \author Christian Mueller, christian.ei.mueller@bmw.de BMW 2011,2012 * \author Sampreeth Ramavana + * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013 * * \copyright * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, @@ -335,14 +336,46 @@ void CAmRoutingSenderDbus::addSinkLookup(am_sinkID_t sinkID, am_domainID_t domai } } +template void CAmRoutingSenderDbus::removeEntriesForValue(const rs_lookupData_s & value, std::map & map) +{ + typename std::map::iterator it = map.begin(); + while ( it != map.end() ) + { + if (it->second.busname == value.busname && + it->second.interface == value.interface && + it->second.path == value.path) + { + typename std::map::iterator it_tmp = it; + it++; + map.erase(it_tmp); + } + else + ++it; + } +} + void CAmRoutingSenderDbus::removeDomainLookup(am_domainID_t domainID) { - mMapHandles.erase(domainID); + mapDomain_t::iterator iter(mMapDomains.begin()); + iter = mMapDomains.find(domainID); + if (iter != mMapDomains.end()) + { + CAmRoutingSenderDbus::removeEntriesForValue(iter->second, mMapSources); + CAmRoutingSenderDbus::removeEntriesForValue(iter->second, mMapSinks); + CAmRoutingSenderDbus::removeEntriesForValue(iter->second, mMapHandles); + CAmRoutingSenderDbus::removeEntriesForValue(iter->second, mMapConnections); + mMapDomains.erase(domainID); + } } void CAmRoutingSenderDbus::removeSourceLookup(am_sourceID_t sourceID) { - mMapHandles.erase(sourceID); + mMapSources.erase(sourceID); +} + +void CAmRoutingSenderDbus::removeSinkLookup(am_sinkID_t sinkID) +{ + mMapSinks.erase(sinkID); } am_Error_e CAmRoutingSenderDbus::asyncSetVolumes(const am_Handle_s handle, const std::vector& listVolumes) @@ -371,10 +404,5 @@ am_Error_e CAmRoutingSenderDbus::asyncSetSourceNotificationConfiguration(const a return (E_NOT_USED); } -void CAmRoutingSenderDbus::removeSinkLookup(am_sinkID_t sinkID) -{ - mMapHandles.erase(sinkID); -} - } diff --git a/PluginRoutingInterfaceDbus/src/IAmRoutingReceiverShadow.cpp b/PluginRoutingInterfaceDbus/src/IAmRoutingReceiverShadow.cpp index 435abf1..96e7070 100644 --- a/PluginRoutingInterfaceDbus/src/IAmRoutingReceiverShadow.cpp +++ b/PluginRoutingInterfaceDbus/src/IAmRoutingReceiverShadow.cpp @@ -186,6 +186,7 @@ void IAmRoutingReceiverShadowDbus::ackDisconnect(DBusConnection* conn, DBusMessa myhandle.handle = handle; mRoutingReceiveInterface->ackDisconnect(myhandle, connectionID, error); mpRoutingSenderDbus->removeHandle(handle); + //todo: Connection removal ??? mDBUSMessageHandler.initReply(msg); mDBUSMessageHandler.sendMessage(); } @@ -252,7 +253,7 @@ void IAmRoutingReceiverShadowDbus::ackSourceVolumeTick(DBusConnection* conn, DBu am_volume_t volume(mDBUSMessageHandler.getInt()); log(&routingDbus, DLT_LOG_INFO, "IAmRoutingReceiverShadow::ackSourceVolumeTick called, handle", handle, "sourceID", sourceID, "volume", volume); am_Handle_s myhandle; - myhandle.handleType = H_SETSINKVOLUME; + myhandle.handleType = H_SETSOURCEVOLUME; myhandle.handle = handle; mRoutingReceiveInterface->ackSourceVolumeTick(myhandle, sourceID, volume); mDBUSMessageHandler.initReply(msg); -- cgit v1.2.1