summaryrefslogtreecommitdiff
path: root/PluginCommandInterfaceDbus
diff options
context:
space:
mode:
authorChristian Mueller <christian@lmuc329619u.(none)>2011-12-18 16:33:52 +0100
committerChristian Mueller <christian@lmuc329619u.(none)>2011-12-18 16:33:52 +0100
commit18b59afe6cda90607ad0b193088000d4f9749a97 (patch)
treecd25bd8fd2b3b9d1e71e1e7df7059f9c0afc2df0 /PluginCommandInterfaceDbus
parent392d090c63dcb03df8a044abbc6cc84807e341e5 (diff)
downloadaudiomanager-18b59afe6cda90607ad0b193088000d4f9749a97.tar.gz
- added comments in XML description
- fixed bug in Dbus signal sending - corrected namespace usage
Diffstat (limited to 'PluginCommandInterfaceDbus')
-rw-r--r--PluginCommandInterfaceDbus/CMakeLists.txt5
-rw-r--r--PluginCommandInterfaceDbus/include/CommandReceiverShadow.h11
-rw-r--r--PluginCommandInterfaceDbus/include/DBusCommandSender.h18
-rw-r--r--PluginCommandInterfaceDbus/include/DBusMessageHandler.h14
-rw-r--r--PluginCommandInterfaceDbus/src/CommandReceiverShadow.cpp10
-rw-r--r--PluginCommandInterfaceDbus/src/DBusCommandSender.cpp21
-rw-r--r--PluginCommandInterfaceDbus/src/DBusMessageHandler.cpp31
7 files changed, 68 insertions, 42 deletions
diff --git a/PluginCommandInterfaceDbus/CMakeLists.txt b/PluginCommandInterfaceDbus/CMakeLists.txt
index 8926b33..bdf60f5 100644
--- a/PluginCommandInterfaceDbus/CMakeLists.txt
+++ b/PluginCommandInterfaceDbus/CMakeLists.txt
@@ -2,9 +2,8 @@ cmake_minimum_required(VERSION 2.6)
PROJECT(PluginCommandInterfaceDbus)
-#set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xlinker -export-dynamic")
-set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic")
-set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -pipe -g -Wall -W -D_REENTRANT")
+#set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic")
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -DDLT_CONTEXT=CommandPluginDbus")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}")
diff --git a/PluginCommandInterfaceDbus/include/CommandReceiverShadow.h b/PluginCommandInterfaceDbus/include/CommandReceiverShadow.h
index c05a0ad..b558d0c 100644
--- a/PluginCommandInterfaceDbus/include/CommandReceiverShadow.h
+++ b/PluginCommandInterfaceDbus/include/CommandReceiverShadow.h
@@ -26,19 +26,20 @@
#ifndef COMMANDRECEIVERSHADOW_H_
#define COMMANDRECEIVERSHADOW_H_
-#include "DBusMessageHandler.h"
-
#include <command/CommandReceiveInterface.h>
#include <dbus/dbus.h>
#include <dlt/dlt.h>
#include <map>
+#include "DBusWrapper.h"
+#include "DBusMessageHandler.h"
+
+namespace am {
-DLT_IMPORT_CONTEXT(DBusCommandPlugin)
#define INTROSPECTION_XML_FILE "/home/christian/workspace/gitserver/dbusIncludes/CommandInterface.xml"
+
class CommandReceiverShadow;
-using namespace am;
typedef void (CommandReceiverShadow::*CallBackMethod)(DBusConnection *connection, DBusMessage *message);
@@ -107,4 +108,6 @@ private:
functionMap_t createMap();
};
+}
+
#endif /* COMMANDRECEIVERSHADOW_H_ */
diff --git a/PluginCommandInterfaceDbus/include/DBusCommandSender.h b/PluginCommandInterfaceDbus/include/DBusCommandSender.h
index 724f412..d3d058e 100644
--- a/PluginCommandInterfaceDbus/include/DBusCommandSender.h
+++ b/PluginCommandInterfaceDbus/include/DBusCommandSender.h
@@ -27,17 +27,19 @@
#ifndef DBUSCOMMANDSENDER_H_
#define DBUSCOMMANDSENDER_H_
-#include "DBusMessageHandler.h"
-#include "CommandReceiverShadow.h"
-#include "DBusWrapper.h"
+#ifdef UNIT_TEST
+#include "../test/DbusCommandInterfaceBackdoor.h"
+#endif
#include <command/CommandSendInterface.h>
#include <dbus/dbus.h>
#include <map>
+#include "DBusMessageHandler.h"
+#include "CommandReceiverShadow.h"
+#include "DBusWrapper.h"
-using namespace am;
+namespace am {
-#define DLT_CONTEXT DBusCommandPlugin
const char MY_NODE[]="CommandInterface";
/**
@@ -65,6 +67,10 @@ public:
void cbSinkMuteStateChanged(const am_sinkID_t sinkID, const am_MuteState_e muteState) ;
void cbSystemPropertyChanged(const am_SystemProperty_s& SystemProperty) ;
void cbTimingInformationChanged(const am_mainConnectionID_t mainConnection, const am_timeSync_t time) ;
+
+#ifdef UNIT_TEST
+ friend class DbusCommandInterfaceBackdoor;
+#endif
private:
DBusMessageHandler mDBUSMessageHandler;
CommandReceiverShadow mCommandReceiverShadow;
@@ -105,4 +111,6 @@ private:
};
+}
+
#endif /* DBUSCOMMANDSENDER_H_ */
diff --git a/PluginCommandInterfaceDbus/include/DBusMessageHandler.h b/PluginCommandInterfaceDbus/include/DBusMessageHandler.h
index 75955a8..d874fb0 100644
--- a/PluginCommandInterfaceDbus/include/DBusMessageHandler.h
+++ b/PluginCommandInterfaceDbus/include/DBusMessageHandler.h
@@ -28,18 +28,15 @@
#include <audiomanagertypes.h>
+#include <dbus/dbus.h>
+#include <dlt/dlt.h>
#include <vector>
#include <sstream>
-using std::stringstream;
-
#include <string>
-using std::string;
-
-#include <dbus/dbus.h>
#include <list>
-#include <dlt/dlt.h>
-DLT_IMPORT_CONTEXT(DBusCommandPlugin)
+namespace am {
+
/**
* handles DBus Messages, is used to extract & append parameters and send messages
@@ -114,7 +111,6 @@ public:
void append(const std::vector<am::am_SinkClass_s>& listSinkClasses);
void append(const std::vector<am::am_SystemProperty_s>& listSystemProperties);
-
private:
DBusMessageIter mDBusMessageIter;
@@ -127,4 +123,6 @@ private:
DBusConnection* mDBusConnection;
};
+}
+
#endif // _DBUSMESSAGEWRAPPER_H_
diff --git a/PluginCommandInterfaceDbus/src/CommandReceiverShadow.cpp b/PluginCommandInterfaceDbus/src/CommandReceiverShadow.cpp
index b53fb52..c7885a3 100644
--- a/PluginCommandInterfaceDbus/src/CommandReceiverShadow.cpp
+++ b/PluginCommandInterfaceDbus/src/CommandReceiverShadow.cpp
@@ -24,14 +24,16 @@
*/
-#include "CommandReceiverShadow.h"
-#include "DBusCommandSender.h"
-#include "DBusWrapper.h"
#include <audiomanagertypes.h>
-
#include <string>
#include <fstream>
#include <assert.h>
+#include "CommandReceiverShadow.h"
+#include "DBusCommandSender.h"
+
+using namespace am;
+
+DLT_IMPORT_CONTEXT(DLT_CONTEXT)
/**
* static ObjectPathTable is needed for DBus Callback handling
diff --git a/PluginCommandInterfaceDbus/src/DBusCommandSender.cpp b/PluginCommandInterfaceDbus/src/DBusCommandSender.cpp
index 462e794..09d204f 100644
--- a/PluginCommandInterfaceDbus/src/DBusCommandSender.cpp
+++ b/PluginCommandInterfaceDbus/src/DBusCommandSender.cpp
@@ -26,7 +26,7 @@
#include "DBusCommandSender.h"
#include "DBusMessageHandler.h"
#include "DBusWrapper.h"
-
+#include "command/CommandReceiveInterface.h"
#include <dlt/dlt.h>
#include <algorithm>
#include <string>
@@ -34,7 +34,10 @@
#include <assert.h>
#include <set>
-DLT_DECLARE_CONTEXT(DBusCommandPlugin)
+using namespace am;
+
+DLT_DECLARE_CONTEXT(DLT_CONTEXT)
+//DLT_IMPORT_CONTEXT(DLT_CONTEXT);
/**
* factory for plugin loading
@@ -59,14 +62,14 @@ DbusCommandSender::DbusCommandSender()
mDBusWrapper(NULL),
mCommandReceiveInterface(NULL)
{
- DLT_REGISTER_CONTEXT(DBusCommandPlugin,"DBP","DBus Plugin");
+ DLT_REGISTER_CONTEXT(DLT_CONTEXT,"DBP","DBus Plugin");
DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DbusCommandSender constructed"));
}
DbusCommandSender::~DbusCommandSender()
{
DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DbusCommandSender destructed"));
- DLT_UNREGISTER_CONTEXT(DBusCommandPlugin);
+ DLT_UNREGISTER_CONTEXT(DLT_CONTEXT);
}
am_Error_e DbusCommandSender::startupInterface(CommandReceiveInterface* commandreceiveinterface)
@@ -99,6 +102,7 @@ am_Error_e DbusCommandSender::cbCommunicationReady()
/**
* todo: implement DbusCommandSender::cbCommunicationReady()
*/
+ return E_NOT_USED;
}
@@ -109,6 +113,7 @@ am_Error_e DbusCommandSender::cbCommunicationRundown()
/**
* todo: implement DbusCommandSender::cbCommunicationRundown()
*/
+ return E_NOT_USED;
}
@@ -131,12 +136,12 @@ void DbusCommandSender::cbNumberOfSinksChanged()
std::vector<am_SinkType_s> diffList;
mCommandReceiveInterface->getListMainSinks(newListSinks);
std::sort(newListSinks.begin(),newListSinks.end(),sortBySinkID());
- std::set_difference(newListSinks.begin(),newListSinks.end(),mlistSinks.begin(),mlistSinks.end(),std::back_inserter(diffList), sortBySinkID());
+ std::set_symmetric_difference(newListSinks.begin(),newListSinks.end(),mlistSinks.begin(),mlistSinks.end(),std::back_inserter(diffList), sortBySinkID());
assert(diffList.size()==1);
if (newListSinks.size()>mlistSinks.size())
{
mDBUSMessageHandler.initSignal(std::string(MY_NODE),"SinkAdded");
- mDBUSMessageHandler.append(&diffList.at(0));
+ mDBUSMessageHandler.append(diffList[0]);
DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("send signal SinkAdded"));
}
@@ -162,12 +167,12 @@ void DbusCommandSender::cbNumberOfSourcesChanged()
std::vector<am_SourceType_s> diffList;
mCommandReceiveInterface->getListMainSources(newlistSources);
std::sort(newlistSources.begin(),newlistSources.end(),sortBySourceID());
- std::set_difference(newlistSources.begin(),newlistSources.end(),mlistSources.begin(),mlistSources.end(),std::back_inserter(diffList), sortBySourceID());
+ std::set_symmetric_difference(newlistSources.begin(),newlistSources.end(),mlistSources.begin(),mlistSources.end(),std::back_inserter(diffList), sortBySourceID());
assert(diffList.size()==1);
if (newlistSources.size()>mlistSources.size())
{
mDBUSMessageHandler.initSignal(std::string(MY_NODE),"SourceAdded");
- mDBUSMessageHandler.append(&diffList.at(0));
+ mDBUSMessageHandler.append(diffList[0]);
DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("send signal SourceAdded"));
}
diff --git a/PluginCommandInterfaceDbus/src/DBusMessageHandler.cpp b/PluginCommandInterfaceDbus/src/DBusMessageHandler.cpp
index 315a51e..33b0191 100644
--- a/PluginCommandInterfaceDbus/src/DBusMessageHandler.cpp
+++ b/PluginCommandInterfaceDbus/src/DBusMessageHandler.cpp
@@ -30,6 +30,9 @@
#include <assert.h>
#include <vector>
+using namespace am;
+
+DLT_IMPORT_CONTEXT(DLT_CONTEXT)
DBusMessageHandler::DBusMessageHandler()
: mDBusMessageIter(),
@@ -84,12 +87,20 @@ void DBusMessageHandler::initSignal(std::string path, std::string signalName)
{
DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusMessageHandler::initSignal Cannot allocate DBus message!"));
}
+ dbus_message_iter_init_append(mDbusMessage, &mDBusMessageIter);
}
void DBusMessageHandler::sendMessage()
{
assert(mDBusConnection!=NULL);
- mSerial=dbus_message_get_serial(mReveiveMessage);
+ if(mReveiveMessage!=0)
+ {
+ mSerial=dbus_message_get_serial(mReveiveMessage);
+ }
+ else
+ {
+ mSerial=1;
+ }
if (!mErrorName.empty()) {
mDbusMessage = dbus_message_new_error(mReveiveMessage, mErrorName.c_str(), mErrorMsg.c_str());
}
@@ -292,14 +303,14 @@ void DBusMessageHandler::append(const am::am_SinkType_s& sinkType)
DBusMessageIter structIter;
DBusMessageIter structAvailIter;
dbus_bool_t success=true;
- success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, "us(ii)iiu", &structIter);
+ success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, NULL, &structIter);
success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &sinkType.sinkID);
success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &sinkType.name);
- success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, "(ii)", &structAvailIter);
+ success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_STRUCT, NULL, &structAvailIter);
success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &sinkType.availability.availability);
success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &sinkType.availability.availabilityReason);
- success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structAvailIter);
+ success=success && dbus_message_iter_close_container(&structIter, &structAvailIter);
success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &sinkType.volume);
success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &sinkType.muteState);
@@ -319,14 +330,14 @@ void DBusMessageHandler::append(const am::am_SourceType_s & sourceType)
DBusMessageIter structIter;
DBusMessageIter structAvailIter;
dbus_bool_t success=true;
- success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, "us(ii)u", &structIter);
+ success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, NULL, &structIter);
success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &sourceType.sourceID);
success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_STRING, &sourceType.name);
- success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, "(ii)", &structAvailIter);
+ success=success && dbus_message_iter_open_container(&structIter, DBUS_TYPE_STRUCT, NULL, &structAvailIter);
success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &sourceType.availability.availability);
success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &sourceType.availability.availabilityReason);
- success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structAvailIter);
+ success=success && dbus_message_iter_close_container(&structIter, &structAvailIter);
success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_UINT16, &sourceType.sourceClassID);
success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structIter);
@@ -343,7 +354,7 @@ void DBusMessageHandler::append(const am::am_MainSoundProperty_s mainSoundProper
{
DBusMessageIter structIter;
dbus_bool_t success=true;
- success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, "(ii)", &structIter);
+ success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, NULL, &structIter);
success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &mainSoundProperty.type);
success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &mainSoundProperty.value);
success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structIter);
@@ -360,7 +371,7 @@ void DBusMessageHandler::append(const am::am_Availability_s & availability)
{
DBusMessageIter structAvailIter;
dbus_bool_t success=true;
- success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, "(ii)", &structAvailIter);
+ success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT,NULL, &structAvailIter);
success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &availability.availability);
success=success && dbus_message_iter_append_basic(&structAvailIter, DBUS_TYPE_INT16, &availability.availabilityReason);
success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structAvailIter);
@@ -377,7 +388,7 @@ void DBusMessageHandler::append(const am::am_SystemProperty_s & SystemProperty)
{
DBusMessageIter structIter;
dbus_bool_t success=true;
- success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, "(ii)", &structIter);
+ success=success && dbus_message_iter_open_container(&mDBusMessageIter, DBUS_TYPE_STRUCT, NULL, &structIter);
success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &SystemProperty.type);
success=success && dbus_message_iter_append_basic(&structIter, DBUS_TYPE_INT16, &SystemProperty.value);
success=success && dbus_message_iter_close_container(&mDBusMessageIter, &structIter);