diff options
author | Christian Mueller <christian@lmuc329619u.(none)> | 2011-12-18 16:33:52 +0100 |
---|---|---|
committer | Christian Mueller <christian@lmuc329619u.(none)> | 2011-12-18 16:33:52 +0100 |
commit | 18b59afe6cda90607ad0b193088000d4f9749a97 (patch) | |
tree | cd25bd8fd2b3b9d1e71e1e7df7059f9c0afc2df0 /PluginCommandInterfaceDbus | |
parent | 392d090c63dcb03df8a044abbc6cc84807e341e5 (diff) | |
download | audiomanager-18b59afe6cda90607ad0b193088000d4f9749a97.tar.gz |
- added comments in XML description
- fixed bug in Dbus signal sending
- corrected namespace usage
Diffstat (limited to 'PluginCommandInterfaceDbus')
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); |