summaryrefslogtreecommitdiff
path: root/PluginRoutingInterfaceDbus
diff options
context:
space:
mode:
authorAleksandar Donchev <aleksander.donchev@partner.bmw.de>2013-09-02 11:57:28 +0200
committerChristian Linke <Christian.Linke@bmw.de>2013-09-03 17:26:04 +0200
commita2edae5cee4254b933f42399edc0e092abd4f5cf (patch)
treeead58f525b947deed4b8c76ab9c89c80b5056227 /PluginRoutingInterfaceDbus
parent7aee1baeea1777318932cc49a8eac18f194233cd (diff)
downloadaudiomanager-a2edae5cee4254b933f42399edc0e092abd4f5cf.tar.gz
*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 <christian.linke@bmw.de> (cherry picked from commit ea96ef59e29466667c90b506426e2a5a9cdb82d2)
Diffstat (limited to 'PluginRoutingInterfaceDbus')
-rw-r--r--PluginRoutingInterfaceDbus/CMakeLists.txt4
-rw-r--r--PluginRoutingInterfaceDbus/include/CAmRoutingSenderDbus.h3
-rw-r--r--PluginRoutingInterfaceDbus/include/RoutingReceiver.xml9
-rw-r--r--PluginRoutingInterfaceDbus/include/configRoutingDbus.h2
-rw-r--r--PluginRoutingInterfaceDbus/src/CAmRoutingSenderDbus.cpp42
-rw-r--r--PluginRoutingInterfaceDbus/src/IAmRoutingReceiverShadow.cpp3
6 files changed, 48 insertions, 15 deletions
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<am_connectionID_t,rs_lookupData_s> mapConnections_t;
typedef std::map<uint16_t,rs_lookupData_s> mapHandles_t;
+ template <typename TKey> static void removeEntriesForValue(const rs_lookupData_s & value, std::map<TKey,rs_lookupData_s> & 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 @@
<arg name="domainid" type="q" direction="out" />
<arg name="error" type="q" direction="out" />
</method>
+<!--check the parameters-->
<method name="deregisterDomain">
<arg name="handle" type="q" direction="in" />
<arg name="error" type="q" direction="in" />
@@ -144,19 +145,19 @@
</method>
<method name="hookSinkAvailablityStatusChange">
<arg name="sinkID" type="q" direction="in" />
- <arg name="availability" type="(nn)" direction="out"/>
+ <arg name="availability" type="(nn)" direction="in"/>
</method>
<method name="hookSourceAvailablityStatusChange">
<arg name="sourceID" type="q" direction="in" />
- <arg name="availability" type="(nn)" direction="out"/>
+ <arg name="availability" type="(nn)" direction="in"/>
</method>
<method name="hookDomainStateChange">
<arg name="domainID" type="q" direction="in" />
- <arg name="domainState" type="q" direction="out"/>
+ <arg name="domainState" type="q" direction="in"/>
</method>
<method name="hookTimingInformationChanged">
<arg name="connectionID" type="q" direction="in" />
- <arg name="delay" type="n" direction="out"/>
+ <arg name="delay" type="n" direction="in"/>
</method>
<method name="sendChangedData"> <!--am_EarlyDataType_e type; am_DataType_u sinksource; am_EarlyData_u data; -->
<arg name="earlyData_volumes" type="a(qqn)" direction="in" /> <!-- only the volumes as array -->
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 <typename TKey> void CAmRoutingSenderDbus::removeEntriesForValue(const rs_lookupData_s & value, std::map<TKey,rs_lookupData_s> & map)
+{
+ typename std::map<TKey,rs_lookupData_s>::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<TKey,rs_lookupData_s>::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<am_Volumes_s>& 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);