From bec7e4f38620d7855c0e5c0d4cea933dcf2827f3 Mon Sep 17 00:00:00 2001 From: christian mueller Date: Thu, 23 Feb 2012 17:25:23 +0100 Subject: * [ GAM-4 ] Change Database Obsever notification implementation working, test are not ready yet. This implies that the Sockethandler is mandatory so I removed the cmake options. --- AudioManagerDaemon/include/CommandReceiver.h | 1 - AudioManagerDaemon/include/CommandSender.h | 21 +- AudioManagerDaemon/include/ControlReceiver.h | 1 - AudioManagerDaemon/include/DatabaseObserver.h | 111 +++++++++- AudioManagerDaemon/include/RoutingReceiver.h | 1 - AudioManagerDaemon/src/CommandReceiver.cpp | 14 -- AudioManagerDaemon/src/CommandSender.cpp | 24 +++ AudioManagerDaemon/src/ControlReceiver.cpp | 16 -- AudioManagerDaemon/src/DBusWrapper.cpp | 41 ---- AudioManagerDaemon/src/DatabaseHandler.cpp | 2 +- AudioManagerDaemon/src/DatabaseObserver.cpp | 225 ++++++++++++++++++--- AudioManagerDaemon/src/RoutingReceiver.cpp | 24 +-- AudioManagerDaemon/src/main.cpp | 38 +--- .../test/controlInterface/controlInterfaceTest.cpp | 17 +- .../test/controlInterface/controlInterfaceTest.h | 28 +-- CMakeLists.txt | 8 +- .../src/DBusCommandSender.cpp | 29 ++- .../src/RoutingReceiverAsyncShadow.cpp | 1 + README | 4 +- cmake/DoxyFile.in | 2 +- cmake/config.cmake | 2 - 21 files changed, 414 insertions(+), 196 deletions(-) diff --git a/AudioManagerDaemon/include/CommandReceiver.h b/AudioManagerDaemon/include/CommandReceiver.h index 1d00216..c7154f1 100644 --- a/AudioManagerDaemon/include/CommandReceiver.h +++ b/AudioManagerDaemon/include/CommandReceiver.h @@ -42,7 +42,6 @@ class SocketHandler; class CommandReceiver: public CommandReceiveInterface { public: - CommandReceiver(DatabaseHandler* iDatabaseHandler, ControlSender* iControlSender, DBusWrapper* iDBusWrapper); CommandReceiver(DatabaseHandler* iDatabaseHandler, ControlSender* iControlSender, SocketHandler* iSocketHandler); CommandReceiver(DatabaseHandler* iDatabaseHandler, ControlSender* iControlSender, SocketHandler* iSocketHandler, DBusWrapper* iDBusWrapper); virtual ~CommandReceiver(); diff --git a/AudioManagerDaemon/include/CommandSender.h b/AudioManagerDaemon/include/CommandSender.h index 37b99d7..1a17134 100644 --- a/AudioManagerDaemon/include/CommandSender.h +++ b/AudioManagerDaemon/include/CommandSender.h @@ -45,22 +45,25 @@ public: virtual ~CommandSender(); am_Error_e startupInterface(CommandReceiveInterface* commandreceiveinterface); am_Error_e stopInterface(); - void cbCommunicationReady(); - void cbCommunicationRundown(); - void cbNumberOfMainConnectionsChanged(); - void cbNumberOfSinksChanged(); - void cbNumberOfSourcesChanged(); + am_Error_e cbCommunicationReady(); + am_Error_e cbCommunicationRundown(); + void cbNewMainConnection(const am_MainConnectionType_s mainConnection); + void cbRemovedMainConnection(const am_MainConnectionType_s mainConnection); + void cbNewSink(const am_SinkType_s sink); + void cbRemovedSink(const am_SinkType_s sink); + void cbNewSource(const am_SourceType_s source); + void cbRemovedSource(const am_SourceType_s source); void cbNumberOfSinkClassesChanged(); void cbNumberOfSourceClassesChanged(); void cbMainConnectionStateChanged(const am_mainConnectionID_t connectionID, const am_ConnectionState_e connectionState); - void cbMainSinkSoundPropertyChanged(const am_sinkID_t sinkID, const am_MainSoundProperty_s SoundProperty); - void cbMainSourceSoundPropertyChanged(const am_sourceID_t sourceID, const am_MainSoundProperty_s& SoundProperty); + void cbMainSinkSoundPropertyChanged(const am_sinkID_t sinkID, const am_MainSoundProperty_s soundProperty); + void cbMainSourceSoundPropertyChanged(const am_sourceID_t sourceID, const am_MainSoundProperty_s& soundProperty); void cbSinkAvailabilityChanged(const am_sinkID_t sinkID, const am_Availability_s& availability); void cbSourceAvailabilityChanged(const am_sourceID_t sourceID, const am_Availability_s& availability); void cbVolumeChanged(const am_sinkID_t sinkID, const am_mainVolume_t volume); 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); + void cbSystemPropertyChanged(const am_SystemProperty_s& systemProperty); + void cbTimingInformationChanged(const am_mainConnectionID_t mainConnectionID, const am_timeSync_t time); uint16_t getInterfaceVersion() const; am_Error_e getListPlugins(std::vector& interfaces) const; #ifdef UNIT_TEST diff --git a/AudioManagerDaemon/include/ControlReceiver.h b/AudioManagerDaemon/include/ControlReceiver.h index 9aec23f..c67e0d9 100644 --- a/AudioManagerDaemon/include/ControlReceiver.h +++ b/AudioManagerDaemon/include/ControlReceiver.h @@ -44,7 +44,6 @@ class ControlReceiver: public ControlReceiveInterface { public: ControlReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, CommandSender *iCommandSender, SocketHandler *iSocketHandler, Router* iRouter); - ControlReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, CommandSender *iCommandSender, Router* iRouter); virtual ~ControlReceiver(); am_Error_e getRoute(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector& returnList); am_Error_e connect(am_Handle_s& handle, am_connectionID_t& connectionID, const am_ConnectionFormat_e format, const am_sourceID_t sourceID, const am_sinkID_t sinkID); diff --git a/AudioManagerDaemon/include/DatabaseObserver.h b/AudioManagerDaemon/include/DatabaseObserver.h index 3ccdc0d..75fed77 100644 --- a/AudioManagerDaemon/include/DatabaseObserver.h +++ b/AudioManagerDaemon/include/DatabaseObserver.h @@ -26,6 +26,8 @@ #define DATABASEOBSERVER_H_ #include +#include +#include namespace am { @@ -33,14 +35,16 @@ namespace am class TelnetServer; class CommandSender; class RoutingSender; + /** * This class observes the Database and notifies other classes about important events, mainly the CommandSender. */ + class DatabaseObserver { public: - DatabaseObserver(CommandSender *iCommandSender, RoutingSender *iRoutingSender); - DatabaseObserver(CommandSender *iCommandSender, RoutingSender *iRoutingSender, TelnetServer *iTelnetServer); + DatabaseObserver(CommandSender *iCommandSender, RoutingSender *iRoutingSender, SocketHandler *iSocketHandler); + DatabaseObserver(CommandSender *iCommandSender, RoutingSender *iRoutingSender, SocketHandler *iSocketHandler, TelnetServer *iTelnetServer); virtual ~DatabaseObserver(); void numberOfMainConnectionsChanged(); void numberOfSinkClassesChanged(); @@ -64,10 +68,113 @@ public: void sinkMuteStateChanged(const am_sinkID_t sinkID, const am_MuteState_e muteState); void systemPropertyChanged(const am_SystemProperty_s& SystemProperty); void timingInformationChanged(const am_mainConnectionID_t mainConnection, const am_timeSync_t time); + + void receiverCallback(const pollfd pollfd, const sh_pollHandle_t handle, void* userData); + bool dispatcherCallback(const sh_pollHandle_t handle, void* userData); + bool checkerCallback(const sh_pollHandle_t handle, void* userData); + + shPollFired_T receiverCallbackT; + shPollDispatch_T dispatcherCallbackT; + shPollCheck_T checkerCallbackT; + private: + + enum do_msgID_e + { + MDO_cbNumberOfSinksChanged, // + MDO_cbNumberOfSourcesChanged, // + MDO_cbNumberOfMainConnectionsChanged, // + MDO_cbNumberOfSinkClassesChanged, // + MDO_cbNumberOfSourceClassesChanged, // + MDO_cbMainConnectionStateChanged, // + MDO_cbMainSinkSoundPropertyChanged, // + MDO_cbMainSourceSoundPropertyChanged, // + MDO_cbSinkAvailabilityChanged, // + MDO_cbSourceAvailabilityChanged, // + MDO_cbVolumeChanged, // + MDO_cbSinkMuteStateChanged, // + MDO_cbSystemPropertyChanged, // + MDO_cbTimingInformationChanged + }; + + struct do_connectionStateChanged_s + { + am_mainConnectionID_t connectionID; + am_ConnectionState_e connectionState; + }; + + struct do_mainSinkSoundPropertyChanged_s + { + am_sinkID_t sinkID; + am_MainSoundProperty_s SoundProperty; + }; + + struct do_mainSourceSoundPropertyChanged_s + { + am_sourceID_t sourceID; + am_MainSoundProperty_s SoundProperty; + }; + + struct do_sinkAvailabilityChanged_s + { + am_sinkID_t sinkID; + am_Availability_s availability; + }; + + struct do_sourceAvailabilityChanged_s + { + am_sourceID_t sourceID; + am_Availability_s availability; + }; + + struct do_volumeChanged_s + { + am_sinkID_t sinkID; + am_mainVolume_t volume; + }; + + struct do_sinkMuteStateChanged_s + { + am_sinkID_t sinkID; + am_MuteState_e muteState; + }; + + struct do_timingInformationChanged_s + { + am_mainConnectionID_t mainConnection; + am_timeSync_t time; + }; + + union do_parameter_u + { + do_connectionStateChanged_s connectionStateChanged; + do_mainSinkSoundPropertyChanged_s mainSinkSoundPropertyChanged; + do_mainSourceSoundPropertyChanged_s mainSourceSoundPropertyChanged; + do_sinkAvailabilityChanged_s sinkAvailabilityChanged; + do_sourceAvailabilityChanged_s sourceAvailabilityChanged; + do_volumeChanged_s volumeChanged; + do_sinkMuteStateChanged_s sinkMuteStateChanged; + do_timingInformationChanged_s timingInformationChanged; + am_SystemProperty_s systemProperty; + }; + + struct do_msg_s + { + do_msgID_e msgID; + do_parameter_u parameters; + }; + + void pipeCommand(const do_msg_s& message); + + void commonConstructor(); //!< this is called from both constructors CommandSender *mCommandSender; //!< pointer to the comandSender RoutingSender* mRoutingSender; //!< pointer to the routingSender TelnetServer* mTelnetServer; //!< pointer to the telnetserver + SocketHandler* mSocketHandler; //!< pointer to the sockethandler + + int mPipe[2]; + sh_pollHandle_t mHandle; + std::queue mQueue; }; } diff --git a/AudioManagerDaemon/include/RoutingReceiver.h b/AudioManagerDaemon/include/RoutingReceiver.h index d3675a8..08af182 100644 --- a/AudioManagerDaemon/include/RoutingReceiver.h +++ b/AudioManagerDaemon/include/RoutingReceiver.h @@ -44,7 +44,6 @@ class RoutingReceiver: public RoutingReceiveInterface { public: RoutingReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, ControlSender *iControlSender, SocketHandler *iSocketHandler); - RoutingReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, ControlSender *iControlSender, DBusWrapper *iDBusWrapper); RoutingReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, ControlSender *iControlSender, SocketHandler *iSocketHandler, DBusWrapper *iDBusWrapper); virtual ~RoutingReceiver(); void ackConnect(const am_Handle_s handle, const am_connectionID_t connectionID, const am_Error_e error); diff --git a/AudioManagerDaemon/src/CommandReceiver.cpp b/AudioManagerDaemon/src/CommandReceiver.cpp index 6114076..ff092dd 100644 --- a/AudioManagerDaemon/src/CommandReceiver.cpp +++ b/AudioManagerDaemon/src/CommandReceiver.cpp @@ -32,16 +32,6 @@ using namespace am; -CommandReceiver::CommandReceiver(DatabaseHandler *iDatabaseHandler, ControlSender *iControlSender, DBusWrapper *iDBusWrapper) : - mDatabaseHandler(iDatabaseHandler), // - mControlSender(iControlSender), // - mDBusWrapper(iDBusWrapper) -{ - assert(mDatabaseHandler!=NULL); - assert(mDBusWrapper!=NULL); - assert(mControlSender!=NULL); -} - CommandReceiver::CommandReceiver(DatabaseHandler *iDatabaseHandler, ControlSender *iControlSender, SocketHandler *iSocketHandler) : mDatabaseHandler(iDatabaseHandler), // mControlSender(iControlSender), // @@ -174,12 +164,8 @@ am_Error_e CommandReceiver::getDBusConnectionWrapper(DBusWrapper*& dbusConnectio am_Error_e CommandReceiver::getSocketHandler(SocketHandler *& socketHandler) const { -#ifdef WITH_SOCKETHANDLER_LOOP socketHandler = mSocketHandler; return E_OK; -#else - return E_UNKNOWN; -#endif /*WITH_SOCKETHANDLER_LOOP*/ } uint16_t CommandReceiver::getInterfaceVersion() const diff --git a/AudioManagerDaemon/src/CommandSender.cpp b/AudioManagerDaemon/src/CommandSender.cpp index d2cc1ca..c70509f 100644 --- a/AudioManagerDaemon/src/CommandSender.cpp +++ b/AudioManagerDaemon/src/CommandSender.cpp @@ -245,6 +245,30 @@ am_Error_e am::CommandSender::getListPlugins(std::vector & interfac return E_OK; } +void am::CommandSender::cbNewMainConnection(const am_MainConnectionType_s mainConnection) +{ +} + +void am::CommandSender::cbRemovedMainConnection(const am_MainConnectionType_s mainConnection) +{ +} + +void am::CommandSender::cbNewSink(const am_SinkType_s sink) +{ +} + +void am::CommandSender::cbRemovedSink(const am_SinkType_s sink) +{ +} + +void am::CommandSender::cbNewSource(const am_SourceType_s source) +{ +} + +void am::CommandSender::cbRemovedSource(const am_SourceType_s source) +{ +} + void CommandSender::unloadLibraries(void) { std::vector::iterator iterator = mListLibraryHandles.begin(); diff --git a/AudioManagerDaemon/src/ControlReceiver.cpp b/AudioManagerDaemon/src/ControlReceiver.cpp index 5671fd0..2b2e8b0 100644 --- a/AudioManagerDaemon/src/ControlReceiver.cpp +++ b/AudioManagerDaemon/src/ControlReceiver.cpp @@ -48,18 +48,6 @@ ControlReceiver::ControlReceiver(DatabaseHandler *iDatabaseHandler, RoutingSende assert(mRouter!=NULL); } -ControlReceiver::ControlReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, CommandSender *iCommandSender, Router* iRouter) : - mDatabaseHandler(iDatabaseHandler), // - mRoutingSender(iRoutingSender), // - mCommandSender(iCommandSender), // - mRouter(iRouter) -{ - assert(mDatabaseHandler!=NULL); - assert(mRoutingSender!=NULL); - assert(mCommandSender!=NULL); - assert(mRouter!=NULL); -} - ControlReceiver::~ControlReceiver() { } @@ -491,12 +479,8 @@ void ControlReceiver::setRoutingReady() am_Error_e ControlReceiver::getSocketHandler(SocketHandler *& socketHandler) { -#ifdef WITH_SOCKETHANDLER_LOOP socketHandler = mSocketHandler; return E_OK; -#else - return E_UNKNOWN; -#endif } void am::ControlReceiver::setCommandRundown() diff --git a/AudioManagerDaemon/src/DBusWrapper.cpp b/AudioManagerDaemon/src/DBusWrapper.cpp index ac073a5..5a310ce 100644 --- a/AudioManagerDaemon/src/DBusWrapper.cpp +++ b/AudioManagerDaemon/src/DBusWrapper.cpp @@ -45,47 +45,6 @@ DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \ DBusWrapper* DBusWrapper::mReference = NULL; -DBusWrapper::DBusWrapper() : - pDbusDispatchCallback(this, &DBusWrapper::dbusDispatchCallback), // - pDbusFireCallback(this, &DBusWrapper::dbusFireCallback), // - pDbusCheckCallback(this, &DBusWrapper::dbusCheckCallback), // - pDbusTimerCallback(this, &DBusWrapper::dbusTimerCallback), // - mDbusConnection(0), // - mDBusError(), // - mNodesList(), // - mListTimerhandlePointer() -{ - dbus_error_init(&mDBusError); - logInfo("DBusWrapper::DBusWrapper Opening DBus connection"); - mDbusConnection = dbus_bus_get(DBUS_BUS_SESSION, &mDBusError); - if (dbus_error_is_set(&mDBusError)) - { - logError("DBusWrapper::DBusWrapper Error while getting the DBus"); - dbus_error_free(&mDBusError); - } - if (NULL == mDbusConnection) - { - logError("DBusWrapper::DBusWrapper DBus Connection is null"); - } - - //first, we are old enought to live longer then the connection: - dbus_connection_set_exit_on_disconnect(mDbusConnection, FALSE); - - mObjectPathVTable.message_function = DBusWrapper::cbRootIntrospection; - dbus_connection_register_object_path(mDbusConnection, DBUS_SERVICE_OBJECT_PATH, &mObjectPathVTable, this); - int ret = dbus_bus_request_name(mDbusConnection, DBUS_SERVICE_PREFIX, DBUS_NAME_FLAG_DO_NOT_QUEUE, &mDBusError); - if (dbus_error_is_set(&mDBusError)) - { - logError("DBusWrapper::DBusWrapper Name Error",mDBusError.message); - dbus_error_free(&mDBusError); - } - if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) - { - logError("DBusWrapper::DBusWrapper Wrapper is not the Primary Owner",ret); - exit(1); - } -} - DBusWrapper::DBusWrapper(SocketHandler* socketHandler) : pDbusDispatchCallback(this, &DBusWrapper::dbusDispatchCallback), // pDbusFireCallback(this, &DBusWrapper::dbusFireCallback), // diff --git a/AudioManagerDaemon/src/DatabaseHandler.cpp b/AudioManagerDaemon/src/DatabaseHandler.cpp index 2337142..a80e241 100644 --- a/AudioManagerDaemon/src/DatabaseHandler.cpp +++ b/AudioManagerDaemon/src/DatabaseHandler.cpp @@ -818,7 +818,7 @@ am_Error_e DatabaseHandler::enterSourceDB(const am_Source_s & sourceData, am_sou } } - logInfo("DatabaseHandler::enterSinkDB entered new source with name", sourceData.name, "domainID:", sourceData.domainID, "classID:", sourceData.sourceClassID, "visible:", sourceData.visible, "assigned ID:", sourceID); + logInfo("DatabaseHandler::enterSourceDB entered new source with name", sourceData.name, "domainID:", sourceData.domainID, "classID:", sourceData.sourceClassID, "visible:", sourceData.visible, "assigned ID:", sourceID); am_Source_s source = sourceData; source.sourceID = sourceID; diff --git a/AudioManagerDaemon/src/DatabaseObserver.cpp b/AudioManagerDaemon/src/DatabaseObserver.cpp index 97a1d07..a1bc123 100644 --- a/AudioManagerDaemon/src/DatabaseObserver.cpp +++ b/AudioManagerDaemon/src/DatabaseObserver.cpp @@ -23,29 +23,72 @@ */ #include "DatabaseObserver.h" +#include +#include +#include +#include +#include #include "CommandSender.h" #include "RoutingSender.h" #include "TelnetServer.h" -#include +#include "DLTWrapper.h" using namespace am; -DatabaseObserver::DatabaseObserver(CommandSender *iCommandSender, RoutingSender *iRoutingSender) : +DatabaseObserver::DatabaseObserver(CommandSender *iCommandSender, RoutingSender *iRoutingSender, SocketHandler *iSocketHandler) : + receiverCallbackT(this, &DatabaseObserver::receiverCallback), // + dispatcherCallbackT(this, &DatabaseObserver::dispatcherCallback), // + checkerCallbackT(this, &DatabaseObserver::checkerCallback), // mCommandSender(iCommandSender), // - mRoutingSender(iRoutingSender) + mRoutingSender(iRoutingSender), // + mSocketHandler(iSocketHandler), // + mPipe(), // + mHandle(), // + mQueue() { - assert(mCommandSender!=0); - assert(mRoutingSender!=0); + commonConstructor(); } -DatabaseObserver::DatabaseObserver(CommandSender *iCommandSender, RoutingSender *iRoutingSender, TelnetServer *iTelnetServer) : +DatabaseObserver::DatabaseObserver(CommandSender *iCommandSender, RoutingSender *iRoutingSender, SocketHandler *iSocketHandler, TelnetServer *iTelnetServer) : + receiverCallbackT(this, &DatabaseObserver::receiverCallback), // + dispatcherCallbackT(this, &DatabaseObserver::dispatcherCallback), // + checkerCallbackT(this, &DatabaseObserver::checkerCallback), // mCommandSender(iCommandSender), // mRoutingSender(iRoutingSender), // - mTelnetServer(iTelnetServer) + mTelnetServer(iTelnetServer), // + mSocketHandler(iSocketHandler), // + mPipe(), // + mHandle(), // + mQueue() +{ + assert(mTelnetServer!=0); + commonConstructor(); +} + +void DatabaseObserver::pipeCommand(const do_msg_s & message) +{ + mQueue.push(message); + + if (write(mPipe[1], &message.msgID, sizeof(do_msg_s)) == -1) + { + logError("DatabaseObserver::msgID pipe write failed, error code:", strerror(errno)); + } +} + +void DatabaseObserver::commonConstructor() { assert(mCommandSender!=0); assert(mRoutingSender!=0); - assert(mTelnetServer!=0); + assert(mSocketHandler!=0); + if (pipe(mPipe) == -1) + { + logError("RoutingReceiverAsyncShadow::setRoutingInterface could not create pipe!:"); + throw "could not create pipe"; + } + + short event = 0; + event |= POLLIN; + mSocketHandler->addFDPoll(mPipe[0], event, NULL, &receiverCallbackT, &checkerCallbackT, &dispatcherCallbackT, NULL, mHandle); } DatabaseObserver::~DatabaseObserver() @@ -55,13 +98,18 @@ DatabaseObserver::~DatabaseObserver() void DatabaseObserver::newSink(am_Sink_s sink) { mRoutingSender->addSinkLookup(sink); - mCommandSender->cbNumberOfSinksChanged(); + do_msg_s msg; + msg.msgID = MDO_cbNumberOfSinksChanged; + pipeCommand(msg); + } void DatabaseObserver::newSource(am_Source_s source) { mRoutingSender->addSourceLookup(source); - mCommandSender->cbNumberOfSourcesChanged(); + do_msg_s msg; + msg.msgID = MDO_cbNumberOfSourcesChanged; + pipeCommand(msg); } void DatabaseObserver::newDomain(am_Domain_s domain) @@ -83,13 +131,17 @@ void DatabaseObserver::newCrossfader(am_Crossfader_s crossfader) void DatabaseObserver::removedSink(am_sinkID_t sinkID) { mRoutingSender->removeSinkLookup(sinkID); - mCommandSender->cbNumberOfSinksChanged(); + do_msg_s msg; + msg.msgID = MDO_cbNumberOfSinksChanged; + pipeCommand(msg); } void DatabaseObserver::removedSource(am_sourceID_t sourceID) { mRoutingSender->removeSourceLookup(sourceID); - mCommandSender->cbNumberOfSourcesChanged(); + do_msg_s msg; + msg.msgID = MDO_cbNumberOfSourcesChanged; + pipeCommand(msg); } void DatabaseObserver::removeDomain(am_domainID_t domainID) @@ -110,62 +162,187 @@ void DatabaseObserver::removeCrossfader(am_crossfaderID_t crossfaderID) void DatabaseObserver::numberOfMainConnectionsChanged() { - mCommandSender->cbNumberOfMainConnectionsChanged(); + do_msg_s msg; + msg.msgID = MDO_cbNumberOfMainConnectionsChanged; + pipeCommand(msg); } void DatabaseObserver::numberOfSinkClassesChanged() { - mCommandSender->cbNumberOfSinkClassesChanged(); + do_msg_s msg; + msg.msgID = MDO_cbNumberOfSinkClassesChanged; + pipeCommand(msg); } void DatabaseObserver::numberOfSourceClassesChanged() { - mCommandSender->cbNumberOfSourceClassesChanged(); + do_msg_s msg; + msg.msgID = MDO_cbNumberOfSourceClassesChanged; + pipeCommand(msg); } void DatabaseObserver::mainConnectionStateChanged(const am_mainConnectionID_t connectionID, const am_ConnectionState_e connectionState) { - mCommandSender->cbMainConnectionStateChanged(connectionID, connectionState); + do_msg_s msg; + msg.msgID = MDO_cbMainConnectionStateChanged; + msg.parameters.connectionStateChanged.connectionID = connectionID; + msg.parameters.connectionStateChanged.connectionState = connectionState; + pipeCommand(msg); } void DatabaseObserver::mainSinkSoundPropertyChanged(const am_sinkID_t sinkID, const am_MainSoundProperty_s SoundProperty) { - mCommandSender->cbMainSinkSoundPropertyChanged(sinkID, SoundProperty); + do_msg_s msg; + msg.msgID = MDO_cbMainSinkSoundPropertyChanged; + msg.parameters.mainSinkSoundPropertyChanged.sinkID = sinkID; + msg.parameters.mainSinkSoundPropertyChanged.SoundProperty = SoundProperty; + pipeCommand(msg); } void DatabaseObserver::mainSourceSoundPropertyChanged(const am_sourceID_t sourceID, const am_MainSoundProperty_s & SoundProperty) { - mCommandSender->cbMainSourceSoundPropertyChanged(sourceID, SoundProperty); + do_msg_s msg; + msg.msgID = MDO_cbMainSourceSoundPropertyChanged; + msg.parameters.mainSourceSoundPropertyChanged.sourceID = sourceID; + msg.parameters.mainSourceSoundPropertyChanged.SoundProperty = SoundProperty; + pipeCommand(msg); } void DatabaseObserver::sinkAvailabilityChanged(const am_sinkID_t sinkID, const am_Availability_s & availability) { - mCommandSender->cbSinkAvailabilityChanged(sinkID, availability); + do_msg_s msg; + msg.msgID = MDO_cbSinkAvailabilityChanged; + msg.parameters.sinkAvailabilityChanged.sinkID = sinkID; + msg.parameters.sinkAvailabilityChanged.availability = availability; + pipeCommand(msg); } void DatabaseObserver::sourceAvailabilityChanged(const am_sourceID_t sourceID, const am_Availability_s & availability) { - mCommandSender->cbSourceAvailabilityChanged(sourceID, availability); + do_msg_s msg; + msg.msgID = MDO_cbSourceAvailabilityChanged; + msg.parameters.sourceAvailabilityChanged.sourceID = sourceID; + msg.parameters.sourceAvailabilityChanged.availability = availability; + pipeCommand(msg); } void DatabaseObserver::volumeChanged(const am_sinkID_t sinkID, const am_mainVolume_t volume) { - mCommandSender->cbVolumeChanged(sinkID, volume); + do_msg_s msg; + msg.msgID = MDO_cbVolumeChanged; + msg.parameters.volumeChanged.sinkID = sinkID; + msg.parameters.volumeChanged.volume = volume; + pipeCommand(msg); } void DatabaseObserver::sinkMuteStateChanged(const am_sinkID_t sinkID, const am_MuteState_e muteState) { - mCommandSender->cbSinkMuteStateChanged(sinkID, muteState); + do_msg_s msg; + msg.msgID = MDO_cbSinkMuteStateChanged; + msg.parameters.sinkMuteStateChanged.sinkID = sinkID; + msg.parameters.sinkMuteStateChanged.muteState = muteState; + pipeCommand(msg); } void DatabaseObserver::systemPropertyChanged(const am_SystemProperty_s & SystemProperty) { - mCommandSender->cbSystemPropertyChanged(SystemProperty); + do_msg_s msg; + msg.msgID = MDO_cbSystemPropertyChanged; + msg.parameters.systemProperty = SystemProperty; + pipeCommand(msg); } void DatabaseObserver::timingInformationChanged(const am_mainConnectionID_t mainConnection, const am_timeSync_t time) { - mCommandSender->cbTimingInformationChanged(mainConnection, time); + do_msg_s msg; + msg.msgID = MDO_cbTimingInformationChanged; + msg.parameters.timingInformationChanged.mainConnection = mainConnection; + msg.parameters.timingInformationChanged.time = time; + pipeCommand(msg); //todo:inform the controller via controlsender } +void DatabaseObserver::receiverCallback(const pollfd pollfd, const sh_pollHandle_t handle, void *userData) +{ + (void) handle; + (void) userData; + //it is no really important what to read here, we will read the queue later... + char buffer[10]; + if (read(pollfd.fd, buffer, 10) == -1) + { + logError("DatabaseObserver::receiverCallback could not read pipe!"); + } +} + +bool DatabaseObserver::dispatcherCallback(const sh_pollHandle_t handle, void *userData) +{ + (void) handle; + (void) userData; + do_msg_s msg; + + msg = mQueue.front(); + mQueue.pop(); + + switch (msg.msgID) + { + case MDO_cbNumberOfSinksChanged: + mCommandSender->cbNumberOfSinksChanged(); + break; + case MDO_cbNumberOfSourcesChanged: + mCommandSender->cbNumberOfSourcesChanged(); + break; + case MDO_cbNumberOfMainConnectionsChanged: + mCommandSender->cbNumberOfMainConnectionsChanged(); + break; + case MDO_cbNumberOfSinkClassesChanged: + mCommandSender->cbNumberOfSinkClassesChanged(); + break; + case MDO_cbNumberOfSourceClassesChanged: + mCommandSender->cbNumberOfSourceClassesChanged(); + break; + case MDO_cbMainConnectionStateChanged: + mCommandSender->cbMainConnectionStateChanged(msg.parameters.connectionStateChanged.connectionID, msg.parameters.connectionStateChanged.connectionState); + break; + case MDO_cbMainSinkSoundPropertyChanged: + mCommandSender->cbMainSinkSoundPropertyChanged(msg.parameters.mainSinkSoundPropertyChanged.sinkID, msg.parameters.mainSinkSoundPropertyChanged.SoundProperty); + break; + case MDO_cbMainSourceSoundPropertyChanged: + mCommandSender->cbMainSourceSoundPropertyChanged(msg.parameters.mainSourceSoundPropertyChanged.sourceID, msg.parameters.mainSourceSoundPropertyChanged.SoundProperty); + break; + case MDO_cbSinkAvailabilityChanged: + mCommandSender->cbSinkAvailabilityChanged(msg.parameters.sinkAvailabilityChanged.sinkID, msg.parameters.sinkAvailabilityChanged.availability); + break; + case MDO_cbSourceAvailabilityChanged: + mCommandSender->cbSourceAvailabilityChanged(msg.parameters.sourceAvailabilityChanged.sourceID, msg.parameters.sourceAvailabilityChanged.availability); + break; + case MDO_cbVolumeChanged: + mCommandSender->cbVolumeChanged(msg.parameters.volumeChanged.sinkID, msg.parameters.volumeChanged.volume); + break; + case MDO_cbSinkMuteStateChanged: + mCommandSender->cbSinkMuteStateChanged(msg.parameters.sinkMuteStateChanged.sinkID, msg.parameters.sinkMuteStateChanged.muteState); + break; + case MDO_cbSystemPropertyChanged: + mCommandSender->cbSystemPropertyChanged(msg.parameters.systemProperty); + break; + case MDO_cbTimingInformationChanged: + mCommandSender->cbTimingInformationChanged(msg.parameters.timingInformationChanged.mainConnection, msg.parameters.timingInformationChanged.time); + break; + default: + logError("Something went totally wrong in DatabaseObserver::dispatcherCallback"); + break; + } + + if (mQueue.size() > 0) + return (true); + return (false); +} + +bool DatabaseObserver::checkerCallback(const sh_pollHandle_t handle, void *userData) +{ + (void) handle; + (void) userData; + if (mQueue.size() > 0) + return (true); + return (false); +} + diff --git a/AudioManagerDaemon/src/RoutingReceiver.cpp b/AudioManagerDaemon/src/RoutingReceiver.cpp index b4b7764..49ee3f9 100644 --- a/AudioManagerDaemon/src/RoutingReceiver.cpp +++ b/AudioManagerDaemon/src/RoutingReceiver.cpp @@ -35,7 +35,7 @@ using namespace am; -am::RoutingReceiver::RoutingReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, ControlSender *iControlSender, SocketHandler *iSocketHandler) : +RoutingReceiver::RoutingReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, ControlSender *iControlSender, SocketHandler *iSocketHandler) : mDatabaseHandler(iDatabaseHandler), // mRoutingSender(iRoutingSender), // mControlSender(iControlSender), // @@ -47,19 +47,7 @@ am::RoutingReceiver::RoutingReceiver(DatabaseHandler *iDatabaseHandler, RoutingS assert(mSocketHandler!=NULL); } -am::RoutingReceiver::RoutingReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, ControlSender *iControlSender, DBusWrapper *iDBusWrapper) : - mDatabaseHandler(iDatabaseHandler), // - mRoutingSender(iRoutingSender), // - mControlSender(iControlSender), // - mDBusWrapper(iDBusWrapper) // -{ - assert(mDatabaseHandler!=NULL); - assert(mRoutingSender!=NULL); - assert(mControlSender!=NULL); - assert(mDBusWrapper!=NULL); -} - -am::RoutingReceiver::RoutingReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, ControlSender *iControlSender, SocketHandler *iSocketHandler, DBusWrapper *iDBusWrapper) : +RoutingReceiver::RoutingReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, ControlSender *iControlSender, SocketHandler *iSocketHandler, DBusWrapper *iDBusWrapper) : mDatabaseHandler(iDatabaseHandler), // mRoutingSender(iRoutingSender), // mControlSender(iControlSender), // @@ -317,12 +305,12 @@ void RoutingReceiver::sendChangedData(const std::vector & earlyD am_Error_e RoutingReceiver::peekSinkClassID(const std::string& name, am_sinkClass_t& sinkClassID) { - return mDatabaseHandler->peekSinkClassID(name,sinkClassID); + return mDatabaseHandler->peekSinkClassID(name, sinkClassID); } am_Error_e RoutingReceiver::peekSourceClassID(const std::string& name, am_sourceClass_t& sourceClassID) { - return mDatabaseHandler->peekSourceClassID(name,sourceClassID); + return mDatabaseHandler->peekSourceClassID(name, sourceClassID); } am_Error_e RoutingReceiver::getDBusConnectionWrapper(DBusWrapper *& dbusConnectionWrapper) const @@ -337,12 +325,8 @@ am_Error_e RoutingReceiver::getDBusConnectionWrapper(DBusWrapper *& dbusConnecti am_Error_e RoutingReceiver::getSocketHandler(SocketHandler *& socketHandler) const { -#ifdef WITH_SOCKETHANDLER_LOOP socketHandler = mSocketHandler; return E_OK; -#else - return E_UNKNOWN; -#endif } uint16_t RoutingReceiver::getInterfaceVersion() const diff --git a/AudioManagerDaemon/src/main.cpp b/AudioManagerDaemon/src/main.cpp index bc74580..b4f0e99 100644 --- a/AudioManagerDaemon/src/main.cpp +++ b/AudioManagerDaemon/src/main.cpp @@ -37,12 +37,10 @@ #ifdef WITH_TELNET #include "TelnetServer.h" #endif -#ifdef WITH_SOCKETHANDLER_LOOP -#include -#endif #ifdef WITH_DBUS_WRAPPER #include #endif +#include #include "DatabaseHandler.h" #include "ControlSender.h" #include "CommandSender.h" @@ -258,16 +256,11 @@ int main(int argc, char *argv[]) std::set_new_handler(&OutOfMemoryHandler); //Instantiate all classes. Keep in same order ! -#ifdef WITH_SOCKETHANDLER_LOOP SocketHandler iSocketHandler; -#endif + #ifdef WITH_DBUS_WRAPPER -#ifdef WITH_SOCKETHANDLER_LOOP DBusWrapper iDBusWrapper(&iSocketHandler); -#else /*WITH_SOCKETHANDLER_LOOP*/ - DBusWrapper iDBusWrapper; -#endif /*WITH_SOCKETHANDLER_LOOP*/ #endif /*WITH_DBUS_WRAPPER */ DatabaseHandler iDatabaseHandler(databasePath); @@ -277,33 +270,27 @@ int main(int argc, char *argv[]) Router iRouter(&iDatabaseHandler, &iControlSender); #ifdef WITH_DBUS_WRAPPER -#ifdef WITH_SOCKETHANDLER_LOOP CommandReceiver iCommandReceiver(&iDatabaseHandler, &iControlSender, &iSocketHandler, &iDBusWrapper); RoutingReceiver iRoutingReceiver(&iDatabaseHandler, &iRoutingSender, &iControlSender, &iSocketHandler, &iDBusWrapper); ControlReceiver iControlReceiver(&iDatabaseHandler, &iRoutingSender, &iCommandSender, &iSocketHandler, &iRouter); #ifdef WITH_TELNET TelnetServer iTelnetServer(&iSocketHandler, &iCommandSender, &iCommandReceiver, &iRoutingSender, &iRoutingReceiver, &iControlSender, &iControlReceiver, &iDatabaseHandler, &iRouter, telnetport, maxConnections); + DatabaseObserver iObserver(&iCommandSender, &iRoutingSender, &iSocketHandler, &iTelnetServer); +#else /*WITH_TELNET*/ + DatabaseObserver iObserver(&iCommandSender, &iSocketHandler, &iRoutingSender); #endif -#else /*WITH_SOCKETHANDLER_LOOP */ - CommandReceiver iCommandReceiver(&iDatabaseHandler,&iControlSender,&iDBusWrapper); - RoutingReceiver iRoutingReceiver(&iDatabaseHandler,&iRoutingSender,&iControlSender,&iDBusWrapper); - ControlReceiver iControlReceiver(&iDatabaseHandler,&iRoutingSender,&iCommandSender, &iRouter); -#endif /*WITH_SOCKETHANDLER_LOOP*/ #else /*WITH_DBUS_WRAPPER*/ CommandReceiver iCommandReceiver(&iDatabaseHandler,&iControlSender,&iSocketHandler); RoutingReceiver iRoutingReceiver(&iDatabaseHandler,&iRoutingSender,&iControlSender,&iSocketHandler); ControlReceiver iControlReceiver(&iDatabaseHandler,&iRoutingSender,&iCommandSender,&iSocketHandler, &iRouter); #ifdef WITH_TELNET TelnetServer iTelnetServer(&iSocketHandler,telnetport,maxConnections); + DatabaseObserver iObserver(&iCommandSender, &iRoutingSender, &iSocketHandler, &iTelnetServer); +#else /*WITH_TELNET*/ + DatabaseObserver iObserver(&iCommandSender, &iSocketHandler, &iRoutingSender); #endif #endif /*WITH_DBUS_WRAPPER*/ -#ifdef WITH_TELNET - DatabaseObserver iObserver(&iCommandSender, &iRoutingSender, &iTelnetServer); -#else - DatabaseObserver iObserver(&iCommandSender, &iRoutingSender); -#endif - iDatabaseHandler.registerObserver(&iObserver); //startup all the Plugins and Interfaces @@ -314,15 +301,8 @@ int main(int argc, char *argv[]) //when the routingInterface is done, all plugins are loaded: iControlSender.hookAllPluginsLoaded(); -#ifdef WITH_SOCKETHANDLER_LOOP + //start the mainloop here.... iSocketHandler.start_listenting(); -#endif /*WITH_SOCKETHANDLER_LOOP*/ - -#ifdef WITH_DBUS_WRAPPER -#ifdef WITH_SIMPLEDBUS_LOOP - iDBusWrapper.dbusMainLoop(); -#endif/*WITH_SIMPLEDBUS_LOOP*/ -#endif /*WITH_DBUS_WRAPPER*/ close(fd0); close(fd1); diff --git a/AudioManagerDaemon/test/controlInterface/controlInterfaceTest.cpp b/AudioManagerDaemon/test/controlInterface/controlInterfaceTest.cpp index c479004..61f11a0 100644 --- a/AudioManagerDaemon/test/controlInterface/controlInterfaceTest.cpp +++ b/AudioManagerDaemon/test/controlInterface/controlInterfaceTest.cpp @@ -28,11 +28,26 @@ #include #include #include "DLTWrapper.h" +#include +#include "MockInterfaces.h" +#include "DatabaseHandler.h" +#include "ControlReceiver.h" +#include "RoutingReceiver.h" +#include "DatabaseObserver.h" +#include "ControlSender.h" +#include "RoutingSender.h" +#include "SocketHandler.h" +#include "Router.h" +#include "../RoutingInterfaceBackdoor.h" +#include "../CommandInterfaceBackdoor.h" +#include "../ControlInterfaceBackdoor.h" +#include "../CommonFunctions.h" using namespace am; using namespace testing; controlInterfaceTest::controlInterfaceTest() : + pSocketHandler(), // pDBusWrapper((DBusWrapper*) 1), // plistCommandPluginDirs(), // plistRoutingPluginDirs(), // @@ -46,7 +61,7 @@ controlInterfaceTest::controlInterfaceTest() : pControlInterfaceBackdoor(), // pControlSender(std::string("")), // pRouter(&pDatabaseHandler,&pControlSender), // - pDatabaseObserver(&pCommandSender, &pRoutingSender), // + pDatabaseObserver(&pCommandSender, &pSocketHandler, &pRoutingSender), // pControlReceiver(&pDatabaseHandler, &pRoutingSender, &pCommandSender,&pRouter), // pRoutingReceiver(&pDatabaseHandler, &pRoutingSender, &pControlSender, pDBusWrapper) { diff --git a/AudioManagerDaemon/test/controlInterface/controlInterfaceTest.h b/AudioManagerDaemon/test/controlInterface/controlInterfaceTest.h index 7eb182d..864f072 100644 --- a/AudioManagerDaemon/test/controlInterface/controlInterfaceTest.h +++ b/AudioManagerDaemon/test/controlInterface/controlInterfaceTest.h @@ -27,19 +27,20 @@ #include #include -#include -#include "MockInterfaces.h" -#include "DatabaseHandler.h" -#include "ControlReceiver.h" -#include "RoutingReceiver.h" -#include "DatabaseObserver.h" -#include "ControlSender.h" -#include "RoutingSender.h" -#include "Router.h" -#include "../RoutingInterfaceBackdoor.h" -#include "../CommandInterfaceBackdoor.h" -#include "../ControlInterfaceBackdoor.h" -#include "../CommonFunctions.h" + +class DatbaseHandler; +class SocketHandler; +class RoutingSender; +class CommandSender; +class RoutingInterfaceBackdoor; +class CommandInterfaceBackdoor; +class ControlSender; +class Router; +class DatabaseObserver; +class ControlReceiver; +class RoutingReceiver; +class CommonFunctions; + namespace am { @@ -49,6 +50,7 @@ class controlInterfaceTest: public ::testing::Test public: controlInterfaceTest(); ~controlInterfaceTest(); + SocketHandler pSocketHandler; DBusWrapper* pDBusWrapper; std::vector plistCommandPluginDirs; std::vector plistRoutingPluginDirs; diff --git a/CMakeLists.txt b/CMakeLists.txt index d33ca05..4b386ca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,12 +49,6 @@ PROJECT(AudioManagerDeamon) OPTION( WITH_DBUS_WRAPPER "Enable Dbus Wrapper Support" ON ) -OPTION( WITH_SOCKETHANDLER_LOOP - "Enable SocketHandler Support (cannot work with SimpleDBusLoop)" ON ) - -OPTION( WITH_SIMPLEDBUS_LOOP - "Enable SimpleDBusLoop (requires DBus_Wrapper,cannot work with SocketHandler)" OFF ) - OPTION( WITH_TESTS "Build together with all available unitTest" ON ) @@ -129,7 +123,7 @@ SET(INTROSPECTION_COMMAND_XML_FILE "${AUDIO_INCLUDES_FOLDER}/dbus/CommandInterfa CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/cmake/config.cmake ${CMAKE_SOURCE_DIR}/includes/config.h ) FIND_PACKAGE(PkgConfig) -pkg_check_modules(DLT REQUIRED automotive-dlt) +pkg_check_modules(DLT REQUIRED automotive-dlt>=2.2.0) #this is due to BUGFIX [GDLT-41] IF(WITH_DOCUMENTATION) find_package(Doxygen) diff --git a/PluginCommandInterfaceDbus/src/DBusCommandSender.cpp b/PluginCommandInterfaceDbus/src/DBusCommandSender.cpp index 57dc56f..3bebdde 100644 --- a/PluginCommandInterfaceDbus/src/DBusCommandSender.cpp +++ b/PluginCommandInterfaceDbus/src/DBusCommandSender.cpp @@ -136,25 +136,32 @@ void DbusCommandSender::cbNumberOfSinksChanged() mCommandReceiveInterface->getListMainSinks(newListSinks); std::sort(newListSinks.begin(), newListSinks.end(), sortBySinkID()); std::set_symmetric_difference(newListSinks.begin(), newListSinks.end(), mlistSinks.begin(), mlistSinks.end(), std::back_inserter(diffList), sortBySinkID()); - assert(diffList.size()==1); if (mReady) { if (newListSinks.size() > mlistSinks.size()) { - mDBUSMessageHandler.initSignal(std::string(MY_NODE), "SinkAdded"); - mDBUSMessageHandler.append(diffList[0]); - - log(&commandDbus, DLT_LOG_INFO, "send signal SinkAdded"); - + std::vector::iterator iter(diffList.begin()); + for (;iter!=diffList.end();++iter) + { + mDBUSMessageHandler.initSignal(std::string(MY_NODE), "SinkAdded"); + mDBUSMessageHandler.append(*iter); + + log(&commandDbus, DLT_LOG_INFO, "send signal SinkAdded"); + mDBUSMessageHandler.sendMessage(); + } } else { - mDBUSMessageHandler.initSignal(std::string(MY_NODE), "SinkRemoved"); - mDBUSMessageHandler.append(diffList.begin()->sinkID); - - log(&commandDbus, DLT_LOG_INFO, "send signal SinkRemoved"); + std::vector::iterator iter(diffList.begin()); + for (;iter!=diffList.end();++iter) + { + mDBUSMessageHandler.initSignal(std::string(MY_NODE), "SinkAdded"); + mDBUSMessageHandler.append(*iter); + + log(&commandDbus, DLT_LOG_INFO, "send signal SinkAdded"); + mDBUSMessageHandler.sendMessage(); + } } - mDBUSMessageHandler.sendMessage(); } mlistSinks = newListSinks; diff --git a/PluginRoutingInterfaceAsync/src/RoutingReceiverAsyncShadow.cpp b/PluginRoutingInterfaceAsync/src/RoutingReceiverAsyncShadow.cpp index f433a2c..17e5a93 100644 --- a/PluginRoutingInterfaceAsync/src/RoutingReceiverAsyncShadow.cpp +++ b/PluginRoutingInterfaceAsync/src/RoutingReceiverAsyncShadow.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include "DLTWrapper.h" using namespace am; diff --git a/README b/README index 4458fa8..486f2a3 100644 --- a/README +++ b/README @@ -55,7 +55,7 @@ the commandline for cmake or (when installed via ccmake) You will need some packages in order to comile the GENIVI AudioManager Daemon, these are: -dbus (only when DBUS_WRAPPER==ON) [tested on version 1.2.16] -sqlite3 [tested on version 3.6.22] - -automotive-dlt [tested on version 2.2.0] + -automotive-dlt [greater 2.5.0] -doxygen (only when WITH_DOCUMENTATION==ON) [tested on version 1.6.3] to install them in a build environment like Ubuntu you can use: @@ -76,7 +76,7 @@ The build was tested on a freshly setup LinuxMint 12 (don't like Unity) with the sudo apt-get upgrade sudo apt-get install libdbus-1-dev libsqlite3-dev doxygen libgtest-dev google-mock git cmake build-essential python2.6-dev - git clone https://:@git.genivi.org/srv/git/DLT-daemon + git clone https://:@git.genivi.org/srv/git/AudioManager In order to build the project (out of source build), please follow these instructions on the commandline: diff --git a/cmake/DoxyFile.in b/cmake/DoxyFile.in index 8c0df15..25cabe1 100644 --- a/cmake/DoxyFile.in +++ b/cmake/DoxyFile.in @@ -31,7 +31,7 @@ PROJECT_NAME = AudioManager # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 0.9.30 +PROJECT_NUMBER = 0.9.32 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff --git a/cmake/config.cmake b/cmake/config.cmake index c753c32..4d84d73 100644 --- a/cmake/config.cmake +++ b/cmake/config.cmake @@ -4,8 +4,6 @@ #cmakedefine DAEMONVERSION "@DAEMONVERSION@" #cmakedefine WITH_DBUS_WRAPPER -#cmakedefine WITH_SOCKETHANDLER_LOOP -#cmakedefine WITH_SIMPLEDBUS_LOOP #cmakedefine WITH_PPOLL #cmakedefine WITH_TELNET #cmakedefine GLIB_DBUS_TYPES_TOLERANT -- cgit v1.2.1