diff options
author | Christian Linke <christian.linke@bmw.de> | 2015-09-22 17:32:01 +0100 |
---|---|---|
committer | Christian Linke <christian.linke@bmw.de> | 2015-09-22 17:32:01 +0100 |
commit | bd7ec24a2abe47ae4398b23282e8288e00eaec47 (patch) | |
tree | 778cf5ffa440b44752bb1cbcfd4c75d950bd48c4 /AudioManagerDaemon/src | |
parent | a9f86b94f3cc83a9474e8a0d7e21de4c8e452526 (diff) | |
download | audiomanager-bd7ec24a2abe47ae4398b23282e8288e00eaec47.tar.gz |
Remove nodestatemanager7.2
Make audiomanager compile with Dbus and CommonAPI Wrapper at the same time
Signed-off-by: Christian Linke <christian.linke@bmw.de>
Diffstat (limited to 'AudioManagerDaemon/src')
-rw-r--r-- | AudioManagerDaemon/src/CAmControlReceiver.cpp | 154 | ||||
-rw-r--r-- | AudioManagerDaemon/src/CAmControlSender.cpp | 24 | ||||
-rw-r--r-- | AudioManagerDaemon/src/CAmNodeStateCommunicatorCAPI.cpp | 386 | ||||
-rw-r--r-- | AudioManagerDaemon/src/CAmNodeStateCommunicatorDBus.cpp | 778 | ||||
-rwxr-xr-x | AudioManagerDaemon/src/main.cpp | 27 |
5 files changed, 4 insertions, 1365 deletions
diff --git a/AudioManagerDaemon/src/CAmControlReceiver.cpp b/AudioManagerDaemon/src/CAmControlReceiver.cpp index 2915f5e..198109d 100644 --- a/AudioManagerDaemon/src/CAmControlReceiver.cpp +++ b/AudioManagerDaemon/src/CAmControlReceiver.cpp @@ -32,30 +32,9 @@ #include "CAmRouter.h" #include "CAmDltWrapper.h" #include "CAmSocketHandler.h" -#ifdef WITH_NSM - #include "CAmNodeStateCommunicator.h" -#endif - - namespace am { -CAmControlReceiver::CAmControlReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmRoutingSender *iRoutingSender, CAmCommandSender *iCommandSender, CAmSocketHandler *iSocketHandler, CAmRouter* iRouter, CAmNodeStateCommunicator* iNodeStateCommunicator) : - mDatabaseHandler(iDatabaseHandler), // - mRoutingSender(iRoutingSender), // - mCommandSender(iCommandSender), // - mSocketHandler(iSocketHandler), // - mRouter(iRouter), // - mNodeStateCommunicator(iNodeStateCommunicator) -{ - assert(mDatabaseHandler!=NULL); - assert(mRoutingSender!=NULL); - assert(mCommandSender!=NULL); - assert(mSocketHandler!=NULL); - assert(mRouter!=NULL); - assert(iNodeStateCommunicator!=NULL); -} - CAmControlReceiver::CAmControlReceiver(IAmDatabaseHandler *iDatabaseHandler, CAmRoutingSender *iRoutingSender, CAmCommandSender *iCommandSender, CAmSocketHandler *iSocketHandler, CAmRouter* iRouter) : mDatabaseHandler(iDatabaseHandler), // mRoutingSender(iRoutingSender), // @@ -456,7 +435,6 @@ void CAmControlReceiver::setRoutingReady() void CAmControlReceiver::confirmControllerReady(const am_Error_e error) { - //todo: one time implement here system interaction with NSM if (error!=E_OK) logError("CAmControlReceiver::confirmControllerReady controller reported error", error); } @@ -565,138 +543,6 @@ am_Error_e CAmControlReceiver::changeMainSourceNotificationConfigurationDB(const return (mDatabaseHandler->changeMainSourceNotificationConfigurationDB(sourceID,mainNotificationConfiguration)); } -am_Error_e CAmControlReceiver::getRestartReasonPropertyNSM(NsmRestartReason_e& restartReason) -{ - if (!mNodeStateCommunicator) - return (E_NON_EXISTENT); -#ifdef WITH_NSM - return (mNodeStateCommunicator->nsmGetRestartReasonProperty(restartReason)); -#else - (void)restartReason; - return (E_NON_EXISTENT); -#endif -} - -am_Error_e CAmControlReceiver::getShutdownReasonPropertyNSM(NsmShutdownReason_e& ShutdownReason) -{ - if (!mNodeStateCommunicator) - return (E_NON_EXISTENT); -#ifdef WITH_NSM - return (mNodeStateCommunicator->nsmGetShutdownReasonProperty(ShutdownReason)); -#else - (void)ShutdownReason; - return (E_NON_EXISTENT); -#endif - -} - -am_Error_e CAmControlReceiver::getRunningReasonPropertyNSM(NsmRunningReason_e& nsmRunningReason) -{ - if (!mNodeStateCommunicator) - return (E_NON_EXISTENT); -#ifdef WITH_NSM - return (mNodeStateCommunicator->nsmGetRunningReasonProperty(nsmRunningReason)); -#else - (void)nsmRunningReason; - return (E_NON_EXISTENT); -#endif - -} - -NsmErrorStatus_e CAmControlReceiver::getNodeStateNSM(NsmNodeState_e& nsmNodeState) -{ - if (!mNodeStateCommunicator) - return (NsmErrorStatus_Error); -#ifdef WITH_NSM - return (mNodeStateCommunicator->nsmGetNodeState(nsmNodeState)); -#else - (void) nsmNodeState; - return (NsmErrorStatus_Error); -#endif -} - -NsmErrorStatus_e CAmControlReceiver::getSessionStateNSM(const std::string& sessionName, const NsmSeat_e seatID, NsmSessionState_e& sessionState) -{ - if (!mNodeStateCommunicator) - return (NsmErrorStatus_Error); -#ifdef WITH_NSM - return (mNodeStateCommunicator->nsmGetSessionState(sessionName,seatID,sessionState)); -#else - (void) sessionName; - (void) seatID; - (void) sessionState; - return (NsmErrorStatus_Error); -#endif - -} - -NsmErrorStatus_e CAmControlReceiver::getApplicationModeNSM(NsmApplicationMode_e& applicationMode) -{ - if (!mNodeStateCommunicator) - return (NsmErrorStatus_Error); -#ifdef WITH_NSM - return (mNodeStateCommunicator->nsmGetApplicationMode(applicationMode)); -#else - (void) applicationMode; - return (NsmErrorStatus_Error); -#endif - -} - -NsmErrorStatus_e CAmControlReceiver::registerShutdownClientNSM(const uint32_t shutdownMode, const uint32_t timeoutMs) -{ - if (!mNodeStateCommunicator) - return (NsmErrorStatus_Error); -#ifdef WITH_NSM - return (mNodeStateCommunicator->nsmRegisterShutdownClient(shutdownMode,timeoutMs)); -#else - (void) shutdownMode; - (void) timeoutMs; - return (NsmErrorStatus_Error); -#endif - -} - -NsmErrorStatus_e CAmControlReceiver::unRegisterShutdownClientNSM(const uint32_t shutdownMode) -{ - if (!mNodeStateCommunicator) - return (NsmErrorStatus_Error); -#ifdef WITH_NSM - return (mNodeStateCommunicator->nsmUnRegisterShutdownClient(shutdownMode)); -#else - (void) shutdownMode; - return (NsmErrorStatus_Error); -#endif - -} - -am_Error_e CAmControlReceiver::getInterfaceVersionNSM(uint32_t& version) -{ - if (!mNodeStateCommunicator) - return (E_NON_EXISTENT); -#ifdef WITH_NSM - return (mNodeStateCommunicator->nsmGetInterfaceVersion(version)); -#else - (void) version; - return (E_NON_EXISTENT); -#endif - -} - -NsmErrorStatus_e CAmControlReceiver::sendLifecycleRequestCompleteNSM(const uint32_t RequestId, const NsmErrorStatus_e status) -{ - if (!mNodeStateCommunicator) - return (NsmErrorStatus_Error); -#ifdef WITH_NSM - return (mNodeStateCommunicator->nsmSendLifecycleRequestComplete(RequestId,status)); -#else - (void) RequestId; - (void) status; - return (NsmErrorStatus_Error); -#endif - -} - am_Error_e CAmControlReceiver::getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s>& listSoundproperties) const { logInfo("CAmControlReceiver::getListMainSinkSoundProperties was called, sinkID", sinkID); diff --git a/AudioManagerDaemon/src/CAmControlSender.cpp b/AudioManagerDaemon/src/CAmControlSender.cpp index c85bd57..672c2d5 100644 --- a/AudioManagerDaemon/src/CAmControlSender.cpp +++ b/AudioManagerDaemon/src/CAmControlSender.cpp @@ -398,18 +398,6 @@ void CAmControlSender::confirmRoutingRundown(const am_Error_e error) mController->confirmRoutingRundown(error); } -void CAmControlSender::hookSystemNodeStateChanged(const NsmNodeState_e NodeStateId) -{ - assert(mController); - mController->hookSystemNodeStateChanged(NodeStateId); -} - -void CAmControlSender::hookSystemNodeApplicationModeChanged(const NsmApplicationMode_e ApplicationModeId) -{ - assert(mController); - mController->hookSystemNodeApplicationModeChanged(ApplicationModeId); -} - am_Error_e CAmControlSender::hookSystemUpdateSink(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_SoundProperty_s>& listSoundProperties, const std::vector<am_CustomConnectionFormat_t>& listConnectionFormats, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties) { assert(mController); @@ -491,18 +479,6 @@ bool CAmControlSender::checkerCallback(const sh_pollHandle_t handle, void* userD return (true); } -void CAmControlSender::hookSystemSessionStateChanged(const std::string& sessionName, const NsmSeat_e seatID, const NsmSessionState_e sessionStateID) -{ - assert(mController); - mController->hookSystemSessionStateChanged(sessionName,seatID,sessionStateID); -} - -NsmErrorStatus_e CAmControlSender::hookSystemLifecycleRequest(const uint32_t Request, const uint32_t RequestId) -{ - assert(mController); - return (mController->hookSystemLifecycleRequest(Request,RequestId)); -} - void CAmControlSender::hookSystemSingleTimingInformationChanged(const am_connectionID_t connectionID, const am_timeSync_t time) { assert(mController); diff --git a/AudioManagerDaemon/src/CAmNodeStateCommunicatorCAPI.cpp b/AudioManagerDaemon/src/CAmNodeStateCommunicatorCAPI.cpp deleted file mode 100644 index 07c8b1f..0000000 --- a/AudioManagerDaemon/src/CAmNodeStateCommunicatorCAPI.cpp +++ /dev/null @@ -1,386 +0,0 @@ -/** - * SPDX license identifier: MPL-2.0 - * - * Copyright (C) 2012, BMW AG - * - * This file is part of GENIVI Project AudioManager. - * - * Contributions are licensed to the GENIVI Alliance under one or more - * Contribution License Agreements. - * - * \copyright - * This Source Code Form is subject to the terms of the - * Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with - * this file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * - * \author Aleksandar Donchev, aleksander.donchev@partner.bmw.de BMW 2013 - * - * \file CAmNodeStateCommunicatorCAPI.cpp - * For further information see http://www.genivi.org/. - * - */ - -#include <assert.h> -#include <string> -#include <fstream> -#include <sstream> -#include <stdexcept> -#include <functional> -#include <memory> -#include "audiomanagerconfig.h" -#include "CAmDltWrapper.h" -#include "CAmNodeStateCommunicatorCAPI.h" -#include "CAmControlSender.h" -#include <v1_0/org/genivi/NodeStateManager/LifeCycleConsumerProxy.hpp> - - -namespace am -{ - -#define LIFECYCLE_SERVICE_INTERFACE NSM_BUS_INTERFACE ".LifeCycleConsumer" - -const char * CAmNodeStateCommunicatorCAPI::DEFAULT_DOMAIN_STRING = "local"; - -const char * CAmNodeStateCommunicatorCAPI::CLIENT_INSTANCE_STRING = NSM_BUS_INTERFACE; -const char * CAmNodeStateCommunicatorCAPI::CLIENT_INTERFACE_STRING = NSM_INTERFACE; - -const char * CAmNodeStateCommunicatorCAPI::LIFECYCLE_SERVICE_INSTANCE_STRING = DBUS_SERVICE_PREFIX; -const char * CAmNodeStateCommunicatorCAPI::LIFECYCLE_SERVICE_INTERFACE_STRING = LIFECYCLE_SERVICE_INTERFACE; - -const char * CAmNodeStateCommunicatorCAPI::OBJECT_NAME = DBUS_SERVICE_OBJECT_PATH; -const char * CAmNodeStateCommunicatorCAPI::BUS_NAME = LIFECYCLE_SERVICE_INTERFACE "_" DBUS_SERVICE_PREFIX; - - -#define IF_NOT_AVAILABLE_RETURN(error) \ -if(!mIsServiceAvailable) { logError(__PRETTY_FUNCTION__, "Node State Manager not available yet"); return error; } - -/** - * Retrieves the value from given attribute wrapper. - */ -template <typename TValueReturnType, class TValueClass> am_Error_e getAttributeValue(CommonAPI::Attribute<TValueClass>* attribute, TValueReturnType & resultValue) -{ - CommonAPI::CallStatus status; - typename CommonAPI::Attribute<TValueClass>::ValueType value; - attribute->getValue(status, value); - std::cout << std::endl << "CallStatus : " << static_cast<int>(status) << std::endl; - if( CommonAPI::CallStatus::SUCCESS == status) - { - resultValue = static_cast<TValueReturnType>(value); - return E_OK; - } - return E_UNKNOWN; -} - - -CAmNodeStateCommunicatorCAPI::CAmNodeStateCommunicatorCAPI(CAmCommonAPIWrapper* iCAPIWrapper) : - CAmNodeStateCommunicator(), - mpCAPIWrapper(iCAPIWrapper), - mIsServiceAvailable(false) -{ - assert(mpCAPIWrapper); - logInfo("CAmNodeStateCommunicatorCAPI::CAmNodeStateCommunicatorCAPI started"); - - //Gets the factory pointer and build a proxy object - mNSMProxy = iCAPIWrapper->buildProxy<am_nodestatemanager::ConsumerProxy>( CAmNodeStateCommunicatorCAPI::DEFAULT_DOMAIN_STRING, - CAmNodeStateCommunicatorCAPI::CLIENT_INSTANCE_STRING); - //Makes subscriptions to the following 3 events - mNSMProxy->getNodeStateEvent().subscribe( - std::bind(&CAmNodeStateCommunicatorCAPI::onNodeStateEvent, this, std::placeholders::_1) - ); - mNSMProxy->getNodeApplicationModeEvent().subscribe( - std::bind(&CAmNodeStateCommunicatorCAPI::onNodeApplicationModeEvent, this, std::placeholders::_1) - ); - mNSMProxy->getSessionStateChangedEvent().subscribe( - std::bind(&CAmNodeStateCommunicatorCAPI::onSessionStateChangedEvent, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3) - ); - mNSMProxy->getProxyStatusEvent().subscribe(std::bind(&CAmNodeStateCommunicatorCAPI::onServiceStatusEvent,this,std::placeholders::_1)); - //Instantiates the concrete stub implementation - mNSMStub = std::make_shared<CAmNodeStateCommunicatorCAPI::CAmNodeStateCommunicatorServiceImpl>(this); - - //Registers the service - if(!iCAPIWrapper->registerService(mNSMStub,CAmNodeStateCommunicatorCAPI::DEFAULT_DOMAIN_STRING,CAmNodeStateCommunicatorCAPI::LIFECYCLE_SERVICE_INSTANCE_STRING)) - logError("AudioManager can't register service"); -} - -CAmNodeStateCommunicatorCAPI::~CAmNodeStateCommunicatorCAPI() -{ - mNSMProxy.reset(); - mpCAPIWrapper->unregisterService(CAmNodeStateCommunicatorCAPI::DEFAULT_DOMAIN_STRING, - CAmNodeStateCommunicatorCAPI::LIFECYCLE_SERVICE_INTERFACE_STRING, - CAmNodeStateCommunicatorCAPI::LIFECYCLE_SERVICE_INSTANCE_STRING); - mNSMStub->setDelegate(NULL); - mNSMStub.reset(); - mpCAPIWrapper = NULL; -} - -bool CAmNodeStateCommunicatorCAPI::isServiceAvailable() -{ - return mIsServiceAvailable; -} - -/** retrieves the actual restart reason - * - * @param restartReason - * @return E_OK on success - */ -am_Error_e CAmNodeStateCommunicatorCAPI::nsmGetRestartReasonProperty(NsmRestartReason_e& restartReason) -{ - //Check the service via the proxy object is available - IF_NOT_AVAILABLE_RETURN(E_NOT_POSSIBLE) - //Get the attribute - int32_t value; - CommonAPI::CallStatus status; - mNSMProxy->getRestartReasonAttribute().getValue(status,value); - if (status!=CommonAPI::CallStatus::SUCCESS) - return (E_UNKNOWN); - restartReason=static_cast<NsmRestartReason_e>(value); - return (E_OK); -} - -/** retrieves the actual shutdown reason - * - * @param ShutdownReason - * @return E_OK on success - */ -am_Error_e CAmNodeStateCommunicatorCAPI::nsmGetShutdownReasonProperty(NsmShutdownReason_e& ShutdownReason) -{ - //Check the service via the proxy object is available - IF_NOT_AVAILABLE_RETURN(E_NOT_POSSIBLE) - //Get the attribute - int32_t value; - CommonAPI::CallStatus status; - mNSMProxy->getShutdownReasonAttribute().getValue(status,value); - if (status!=CommonAPI::CallStatus::SUCCESS) - return (E_UNKNOWN); - ShutdownReason=static_cast<NsmShutdownReason_e>(value); - return (E_OK); -} - -/** retrieves the actual running reason - * - * @param nsmRunningReason - * @return E_OK on success - */ -am_Error_e CAmNodeStateCommunicatorCAPI::nsmGetRunningReasonProperty(NsmRunningReason_e& nsmRunningReason) -{ - //Check the service via the proxy object is available - IF_NOT_AVAILABLE_RETURN(E_NOT_POSSIBLE) - //Get the attribute - int32_t value; - CommonAPI::CallStatus status; - mNSMProxy->getWakeUpReasonAttribute().getValue(status,value); - if (status!=CommonAPI::CallStatus::SUCCESS) - return (E_UNKNOWN); - nsmRunningReason=static_cast<NsmRunningReason_e>(value); - return (E_OK); -} - -/** gets the node state - * - * @param nsmNodeState - * @return NsmErrorStatus_Ok on success - */ -NsmErrorStatus_e CAmNodeStateCommunicatorCAPI::nsmGetNodeState(NsmNodeState_e& nsmNodeState) -{ - //Check the service via the proxy object is available - IF_NOT_AVAILABLE_RETURN(NsmErrorStatus_Error) - - CommonAPI::CallStatus callStatus; - int32_t tmpNodeState = 0, errorCode = 0; - mNSMProxy->GetNodeState(callStatus, tmpNodeState, errorCode); - if( CommonAPI::CallStatus::SUCCESS == callStatus ) - { - nsmNodeState = static_cast<NsmNodeState_e>(tmpNodeState); - return (static_cast<NsmErrorStatus_e>(errorCode)); - } - return NsmErrorStatus_Error; -} - -/** gets the session state for a session and seatID - * - * @param sessionName the name of the session - * @param seatID the seatID - * @param sessionState - * @return NsmErrorStatus_Ok on success - */ -NsmErrorStatus_e CAmNodeStateCommunicatorCAPI::nsmGetSessionState(const std::string& sessionName, const NsmSeat_e& seatID, NsmSessionState_e& sessionState) -{ - //Check the service via the proxy object is available - IF_NOT_AVAILABLE_RETURN(NsmErrorStatus_Error) - - CommonAPI::CallStatus callStatus; - int32_t tmpSessionState = 0 , errorCode = 0; - mNSMProxy->GetSessionState(sessionName,seatID,callStatus, tmpSessionState, errorCode); - - if( CommonAPI::CallStatus::SUCCESS == callStatus) - { - sessionState = static_cast<NsmSessionState_e>(tmpSessionState); - return (static_cast<NsmErrorStatus_e>(errorCode)); - } - return NsmErrorStatus_Error; -} - -/** gets the application mode - * - * @param applicationMode - * @return NsmErrorStatus_Ok on success - */ -NsmErrorStatus_e CAmNodeStateCommunicatorCAPI::nsmGetApplicationMode(NsmApplicationMode_e& applicationMode) -{ - //Check the service via the proxy object is available - IF_NOT_AVAILABLE_RETURN(NsmErrorStatus_Error) - - CommonAPI::CallStatus callStatus; - int32_t tmpAppMode = 0 , errorCode = 0; - mNSMProxy->GetApplicationMode(callStatus, tmpAppMode, errorCode); - if( CommonAPI::CallStatus::SUCCESS == callStatus) - { - applicationMode = static_cast<NsmApplicationMode_e>(tmpAppMode); - return (static_cast<NsmErrorStatus_e>(errorCode)); - } - return NsmErrorStatus_Dbus; -} - -/** this function registers the AudioManager as shutdown client at the NSM - * for more information check the Nodestatemanager - * @param shutdownMode the shutdownmode you wish to set - * @param timeoutMs the timeout you need to have - * @return NsmErrorStatus_Ok on success - */ -NsmErrorStatus_e CAmNodeStateCommunicatorCAPI::nsmRegisterShutdownClient(const uint32_t shutdownMode, const uint32_t timeoutMs) -{ - //Check the service via the proxy object is available - IF_NOT_AVAILABLE_RETURN(NsmErrorStatus_Error) - - CommonAPI::CallStatus callStatus; - int32_t errorCode = 0; - std::string objName = std::string(CAmNodeStateCommunicatorCAPI::OBJECT_NAME); - std::string busName = std::string(CAmNodeStateCommunicatorCAPI::BUS_NAME); - mNSMProxy->RegisterShutdownClient(busName, objName, shutdownMode, timeoutMs, callStatus, errorCode); - if( CommonAPI::CallStatus::SUCCESS == callStatus) - return (static_cast<NsmErrorStatus_e>(errorCode)); - return NsmErrorStatus_Dbus; - -} - -/** this function unregisters the AudioManager as shutdown client at the NSM - * - * @param shutdownMode - * @return NsmErrorStatus_Ok on success - */ -NsmErrorStatus_e CAmNodeStateCommunicatorCAPI::nsmUnRegisterShutdownClient(const uint32_t shutdownMode) -{ - //Check the service via the proxy object is available - IF_NOT_AVAILABLE_RETURN(NsmErrorStatus_Error) - - CommonAPI::CallStatus callStatus; - int32_t errorCode = 0; - std::string objName = std::string(CAmNodeStateCommunicatorCAPI::OBJECT_NAME); - std::string busName = std::string(CAmNodeStateCommunicatorCAPI::BUS_NAME); - mNSMProxy->UnRegisterShutdownClient(busName, objName, shutdownMode, callStatus, errorCode); - if( CommonAPI::CallStatus::SUCCESS == callStatus) - return (static_cast<NsmErrorStatus_e>(errorCode)); - return NsmErrorStatus_Dbus; -} - -/** returns the interface version - * - * @param version - * @return E_OK on success - */ -am_Error_e CAmNodeStateCommunicatorCAPI::nsmGetInterfaceVersion(uint32_t& version) -{ - //Check the service via the proxy object is available - IF_NOT_AVAILABLE_RETURN(E_NOT_POSSIBLE) - - CommonAPI::CallStatus callStatus; - mNSMProxy->GetInterfaceVersion(callStatus, version); - if( CommonAPI::CallStatus::SUCCESS == callStatus) - return E_OK; - return E_UNKNOWN; -} - -/** sends out the Lifecycle request complete message - * - * @param RequestId - * @param status - * @return NsmErrorStatus_Ok on success - */ -NsmErrorStatus_e CAmNodeStateCommunicatorCAPI::nsmSendLifecycleRequestComplete(const uint32_t RequestId, const NsmErrorStatus_e status) -{ - //Check the service via the proxy object is available - IF_NOT_AVAILABLE_RETURN(NsmErrorStatus_Error) - - CommonAPI::CallStatus callStatus; - int32_t errorCode = 0; - mNSMProxy->LifecycleRequestComplete(RequestId, status, callStatus, errorCode); - if( CommonAPI::CallStatus::SUCCESS == callStatus) - { - return (static_cast<NsmErrorStatus_e>(errorCode)); - } - return NsmErrorStatus_Dbus; -} - -/** notification handler for changed node state - * - * @param nodeState - * @return none - */ -void CAmNodeStateCommunicatorCAPI::onNodeStateEvent(const int32_t nodeState) -{ - logInfo(__PRETTY_FUNCTION__, " got signal NodeState, with nodeState",nodeState); - assert(mpControlSender); - mpControlSender->hookSystemNodeStateChanged(static_cast<NsmNodeState_e>(nodeState)); -} - -/** notification handler for changed node application mode - * - * @param nodeApplicationMode - * @return none - */ -void CAmNodeStateCommunicatorCAPI::onNodeApplicationModeEvent(const int32_t nodeApplicationMode) -{ - logInfo(__PRETTY_FUNCTION__, " got signal nodeApplicationMode, with applicationMode",nodeApplicationMode); - assert(mpControlSender); - mpControlSender->hookSystemNodeApplicationModeChanged(static_cast<NsmApplicationMode_e>(nodeApplicationMode)); -} - -/** notification handler for changed session state - * - * @param sessionName - * @param seatID - * @param sessionState - * @return none - */ -void CAmNodeStateCommunicatorCAPI::onSessionStateChangedEvent(const std::string & sessionName, const int32_t seatID, const int32_t sessionState) -{ - logInfo(__PRETTY_FUNCTION__, " got signal sessionStateChanged, with session",sessionName,"seatID=",seatID,"sessionState",sessionState); - assert(mpControlSender); - mpControlSender->hookSystemSessionStateChanged(sessionName, static_cast<NsmSeat_e>(seatID), static_cast<NsmSessionState_e>(sessionState)); -} - -void CAmNodeStateCommunicatorCAPI::onServiceStatusEvent(const CommonAPI::AvailabilityStatus& serviceStatus) -{ - std::stringstream avail; - avail << "(" << static_cast<int>(serviceStatus) << ")"; - - logInfo("Service Status of the NSM changed to ", avail.str()); - std::cout << std::endl << "Service Status of the NSM changed to " << avail.str(); - mIsServiceAvailable = (serviceStatus==CommonAPI::AvailabilityStatus::AVAILABLE); -} - -/** implements the service part, which is invoked from the node state manager - * - * @param sessionName - * @param seatID - * @param sessionState - * @return none - */ -void CAmNodeStateCommunicatorCAPI::cbReceivedLifecycleRequest(uint32_t Request, uint32_t RequestId, int32_t& ErrorCode) -{ - assert(mpControlSender); - ErrorCode = mpControlSender->hookSystemLifecycleRequest(Request, RequestId); -} - -} /* namespace am */ diff --git a/AudioManagerDaemon/src/CAmNodeStateCommunicatorDBus.cpp b/AudioManagerDaemon/src/CAmNodeStateCommunicatorDBus.cpp deleted file mode 100644 index 501dfd8..0000000 --- a/AudioManagerDaemon/src/CAmNodeStateCommunicatorDBus.cpp +++ /dev/null @@ -1,778 +0,0 @@ -/** - * SPDX license identifier: MPL-2.0 - * - * Copyright (C) 2012, BMW AG - * - * This file is part of GENIVI Project AudioManager. - * - * Contributions are licensed to the GENIVI Alliance under one or more - * Contribution License Agreements. - * - * \copyright - * This Source Code Form is subject to the terms of the - * Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with - * this file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * - * \author Christian Linke, christian.linke@bmw.de BMW 2012 - * - * \file CAmNodeStateCommunicatorDBus.cpp - * For further information see http://www.genivi.org/. - * - */ - -#include "CAmNodeStateCommunicatorDBus.h" -#include <assert.h> -#include <string> -#include <fstream> -#include <sstream> -#include <stdexcept> -#include "CAmControlSender.h" -#include "CAmDltWrapper.h" -#include "audiomanagerconfig.h" - -namespace am -{ - -static DBusObjectPathVTable gObjectPathVTable; - -CAmNodeStateCommunicatorDBus::CAmNodeStateCommunicatorDBus(CAmDbusWrapper* iDbusWrapper) : CAmNodeStateCommunicator(), - mpDbusWrapper(iDbusWrapper), // - mpDBusConnection(NULL) -{ - assert(mpDbusWrapper); - logInfo("CAmNodeStateCommunicator::CAmNodeStateCommunicator started"); - - //save the DBusConnection - mpDbusWrapper->getDBusConnection(mpDBusConnection); - assert(mpDBusConnection!=NULL); - - //register the path and the callback for receiving messages - std::string path("LifeCycleConsumer"); - gObjectPathVTable.message_function=CAmNodeStateCommunicatorDBus::receiveCallback; - mpDbusWrapper->registerCallback(&gObjectPathVTable, path, this); - - //now we need to make sure we catch the signals from the NSM: - dbus_bus_add_match(mpDBusConnection, "type=\'signal\',path=\'/org/genivi/NodeStateManager\'", NULL); - if (!dbus_connection_add_filter(mpDBusConnection, CAmNodeStateCommunicatorDBus::signalCallback, this, NULL)) - { - logError("CAmNodeStateCommunicator::CAmNodeStateCommunicator not enought memory!"); - throw std::runtime_error("CAmNodeStateCommunicator::CAmNodeStateCommunicator not enought memory!"); - } - dbus_connection_flush(mpDBusConnection); -} - -CAmNodeStateCommunicatorDBus::~CAmNodeStateCommunicatorDBus() -{} - -/** retrieves the actual restartReason - * - * @param restartReason - * @return E_OK on success - */ -am_Error_e CAmNodeStateCommunicatorDBus::nsmGetRestartReasonProperty(NsmRestartReason_e& restartReason) -{ - int32_t answer(0); - am_Error_e error=readIntegerProperty("RestartReason",answer); - restartReason=static_cast<NsmRestartReason_e>(answer); - return(error); -} - -/** retrieves the actual shutdownreason - * - * @param ShutdownReason - * @return E_OK on success - */ -am_Error_e CAmNodeStateCommunicatorDBus::nsmGetShutdownReasonProperty(NsmShutdownReason_e& ShutdownReason) -{ - int32_t answer(0); - am_Error_e error=readIntegerProperty("ShutdownReason",answer); - ShutdownReason=static_cast<NsmShutdownReason_e>(answer); - return(error); -} - -/** retrieves the actual runnuing reason - * - * @param nsmRunningReason - * @return E_OK on success - */ -am_Error_e CAmNodeStateCommunicatorDBus::nsmGetRunningReasonProperty(NsmRunningReason_e& nsmRunningReason) -{ - int32_t answer(0); - am_Error_e error=readIntegerProperty("WakeUpReason",answer); - nsmRunningReason=static_cast<NsmRunningReason_e>(answer); - return(error); -} - -/** gets the node state - * - * @param nsmNodeState - * @return NsmErrorStatus_Ok on success - */ -NsmErrorStatus_e CAmNodeStateCommunicatorDBus::nsmGetNodeState(NsmNodeState_e& nsmNodeState) -{ - DBusError error; - dbus_error_init(&error); - - uint32_t nodeStateID; - uint32_t returnedError; - - DBusMessage * message = dbus_message_new_method_call(NSM_BUS_INTERFACE, NSM_PATH, NSM_INTERFACE, "GetNodeState"); - - if (!message) - { - logError("CAmNodeStateCommunicatorDBus::nsmGetNodeState dbus error:", error.message); - return (NsmErrorStatus_Dbus); - } - - DBusMessage* reply(dbus_connection_send_with_reply_and_block(mpDBusConnection, message, -1, &error)); - if (!reply) - { - logError("CAmNodeStateCommunicatorDBus::nsmGetNodeState failed, dbus error", error.message); - return (NsmErrorStatus_Dbus); - } - - if(!dbus_message_get_args(reply, &error, DBUS_TYPE_INT32, &nodeStateID, DBUS_TYPE_INT32, &returnedError, DBUS_TYPE_INVALID)) - return (NsmErrorStatus_Dbus); - - dbus_message_unref(reply); - - nsmNodeState=static_cast<NsmNodeState_e>(nodeStateID); - return (static_cast<NsmErrorStatus_e>(returnedError)); -} - -/** gets the session state for a session and seatID - * - * @param sessionName the name of the session - * @param seatID the seatID - * @param sessionState - * @return NsmErrorStatus_Ok on success - */ -NsmErrorStatus_e CAmNodeStateCommunicatorDBus::nsmGetSessionState(const std::string& sessionName, const NsmSeat_e& seatID, NsmSessionState_e& sessionState) -{ - DBusError error; - dbus_error_init(&error); - DBusMessageIter iter; - - uint32_t returnedError; - int32_t BsessionState(0); - - DBusMessage * message = dbus_message_new_method_call(NSM_BUS_INTERFACE, NSM_PATH, NSM_INTERFACE, "GetSessionState"); - - if (!message) - { - logError("CAmNodeStateCommunicatorDBus::nsmGetSessionState dbus error:", error.message); - return (NsmErrorStatus_Dbus); - } - - dbus_message_iter_init_append(message, &iter); - - if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &sessionName)) - { - logError( "CAmNodeStateCommunicatorDBus::nsmGetSessionState no more memory"); - return (NsmErrorStatus_Dbus); - } - - if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32, &seatID)) - { - logError( "CAmNodeStateCommunicatorDBus::nsmGetSessionState no more memory"); - return (NsmErrorStatus_Dbus); - } - - DBusMessage* reply(dbus_connection_send_with_reply_and_block(mpDBusConnection, message, -1, &error)); - if (!reply) - { - logError("CAmNodeStateCommunicatorDBus::nsmGetSessionState failed, dbus error", error.message); - return (NsmErrorStatus_Dbus); - } - - if(!dbus_message_get_args(reply, &error, - DBUS_TYPE_INT32, &BsessionState, - DBUS_TYPE_INT32, &returnedError,DBUS_TYPE_INVALID)) - return (NsmErrorStatus_Dbus); - - dbus_message_unref(reply); - - sessionState=static_cast<NsmSessionState_e>(BsessionState); - return (static_cast<NsmErrorStatus_e>(returnedError)); -} - -/** gets the application mode - * - * @param applicationMode - * @return NsmErrorStatus_Ok on success - */ -NsmErrorStatus_e CAmNodeStateCommunicatorDBus::nsmGetApplicationMode(NsmApplicationMode_e& applicationMode) -{ - DBusError error; - dbus_error_init(&error); - - uint32_t BapplicationMode(0),returnedError(0); - - DBusMessage * message = dbus_message_new_method_call(NSM_BUS_INTERFACE, NSM_PATH, NSM_INTERFACE, "GetApplicationMode"); - - if (!message) - { - logError("CAmNodeStateCommunicatorDBus::nsmGetApplicationMode dbus error:", error.message); - return (NsmErrorStatus_Dbus); - } - - DBusMessage* reply(dbus_connection_send_with_reply_and_block(mpDBusConnection, message, -1, &error)); - if (!reply) - { - logError("CAmNodeStateCommunicatorDBus::nsmGetApplicationMode failed, dbus error", error.message); - return (NsmErrorStatus_Dbus); - } - - if(!dbus_message_get_args(reply, &error, DBUS_TYPE_INT32, &BapplicationMode, DBUS_TYPE_INT32, &returnedError, DBUS_TYPE_INVALID)) - return (NsmErrorStatus_Dbus); - - dbus_message_unref(reply); - - applicationMode=static_cast<NsmApplicationMode_e>(BapplicationMode); - return (static_cast<NsmErrorStatus_e>(returnedError)); -} - -/** this function registers the AudioManager as shutdown client at the NSM - * for more information check the Nodestatemanager - * @param shutdownMode the shutdownmode you wish to set - * @param timeoutMs the timeout you need to have - * @return NsmErrorStatus_Ok on success - */ -NsmErrorStatus_e CAmNodeStateCommunicatorDBus::nsmRegisterShutdownClient(const uint32_t shutdownMode, const uint32_t timeoutMs) -{ - DBusError error; - DBusMessageIter iter; - dbus_error_init(&error); - int32_t returnError(0); - std::string path = std::string(DBUS_SERVICE_OBJECT_PATH) + "/LifeCycleConsumer"; - const char* charPath = path.c_str(); - const char* service =DBUS_SERVICE_PREFIX; - DBusMessage * message = dbus_message_new_method_call(NSM_BUS_INTERFACE, NSM_PATH, NSM_INTERFACE, "RegisterShutdownClient"); - - if (!message) - { - logError( "CAmNodeStateCommunicatorDBus::nsmRegisterShutdownClient dbus error:", error.message); - return (NsmErrorStatus_Dbus); - } - dbus_message_iter_init_append(message, &iter); - - if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &service)) - { - logError( "CAmNodeStateCommunicatorDBus::nsmRegisterShutdownClient no more memory"); - return (NsmErrorStatus_Dbus); - } - - if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &charPath)) - { - logError( "CAmNodeStateCommunicatorDBus::nsmRegisterShutdownClient no more memory"); - return (NsmErrorStatus_Dbus); - } - - if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_UINT32, &shutdownMode)) - { - logError( "CAmNodeStateCommunicatorDBus::nsmRegisterShutdownClient no more memory"); - return (NsmErrorStatus_Dbus); - } - - if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_UINT32, &timeoutMs)) - { - logError( "CAmNodeStateCommunicatorDBus::nsmRegisterShutdownClient no more memory"); - return (NsmErrorStatus_Dbus); - } - - DBusMessage* reply(dbus_connection_send_with_reply_and_block(mpDBusConnection, message, -1, &error)); - dbus_message_unref(message); - - if (!reply) - { - logError( "CAmRoutingDbusSend::send failed, dbus error", error.message); - return (NsmErrorStatus_Dbus); - } - - if(!dbus_message_get_args(reply, &error, DBUS_TYPE_INT32, &returnError,DBUS_TYPE_INVALID)) - { - logError( "CAmRoutingDbusSend::send failed, dbus error", error.message); - return (NsmErrorStatus_Dbus); - } - dbus_message_unref(reply); - - return (static_cast<NsmErrorStatus_e>(returnError)); - -} - -/** this function unregisters the AudioManager as shutdown client at the NSM - * - * @param shutdownMode - * @return NsmErrorStatus_Ok on success - */ -NsmErrorStatus_e CAmNodeStateCommunicatorDBus::nsmUnRegisterShutdownClient(const uint32_t shutdownMode) -{ - DBusError error; - DBusMessageIter iter; - dbus_error_init(&error); - int32_t returnError(0); - std::string path = std::string(DBUS_SERVICE_OBJECT_PATH) + "/LifeCycleConsumer"; - const char* charPath = path.c_str(); - const char* service =DBUS_SERVICE_PREFIX; - DBusMessage * message = dbus_message_new_method_call(NSM_BUS_INTERFACE, NSM_PATH, NSM_INTERFACE, "UnRegisterShutdownClient"); - - if (!message) - { - logError( "CAmNodeStateCommunicatorDBus::nsmUnRegisterShutdownClient dbus error:", error.message); - return (NsmErrorStatus_Dbus); - } - dbus_message_iter_init_append(message, &iter); - - if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &service)) - { - logError( "CAmNodeStateCommunicatorDBus::nsmUnRegisterShutdownClient no more memory"); - return (NsmErrorStatus_Dbus); - } - - if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &charPath)) - { - logError( "CAmNodeStateCommunicatorDBus::nsmUnRegisterShutdownClient no more memory"); - return (NsmErrorStatus_Dbus); - } - - if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_UINT32, &shutdownMode)) - { - logError( "CAmNodeStateCommunicatorDBus::nsmUnRegisterShutdownClient no more memory"); - return (NsmErrorStatus_Dbus); - } - - DBusMessage* reply(dbus_connection_send_with_reply_and_block(mpDBusConnection, message, -1, &error)); - dbus_message_unref(message); - - if (!reply) - { - logError( "CAmNodeStateCommunicatorDBus::nsmUnRegisterShutdownClient failed, dbus error", error.message); - return (NsmErrorStatus_Dbus); - } - - if(!dbus_message_get_args(reply, &error, DBUS_TYPE_INT32, &returnError, DBUS_TYPE_INVALID)) - { - logError( "CAmNodeStateCommunicatorDBus::nsmUnRegisterShutdownClient failed, dbus error", error.message); - return (NsmErrorStatus_Dbus); - } - dbus_message_unref(reply); - - return (static_cast<NsmErrorStatus_e>(returnError)); -} - -/** returns the interface version - * - * @param version - * @return E_OK on success - */ -am_Error_e CAmNodeStateCommunicatorDBus::nsmGetInterfaceVersion(uint32_t& version) -{ - DBusError error; - dbus_error_init(&error); - - DBusMessage * message = dbus_message_new_method_call(NSM_BUS_INTERFACE, NSM_PATH, NSM_INTERFACE, "GetInterfaceVersion"); - - if (!message) - { - logError("CAmNodeStateCommunicatorDBus::nsmGetInterfaceVersion dbus error:", error.message); - return (E_UNKNOWN); - } - - DBusMessage* reply(dbus_connection_send_with_reply_and_block(mpDBusConnection, message, -1, &error)); - - dbus_message_unref(message); - - if (!reply) - { - logError("CAmNodeStateCommunicatorDBus::nsmGetInterfaceVersion failed, dbus error", error.message); - return (E_UNKNOWN); - } - - if(!dbus_message_get_args(reply, &error, DBUS_TYPE_UINT32, &version, DBUS_TYPE_INVALID)) - { - logError("CAmNodeStateCommunicatorDBus::nsmGetInterfaceVersion failed, dbus error", error.message); - return (E_UNKNOWN); - } - - dbus_message_unref(reply); - - return (E_OK); -} - -/** sends out the Lifecycle request complete message - * - * @param RequestId - * @param status - * @return NsmErrorStatus_Ok on success - */ -NsmErrorStatus_e CAmNodeStateCommunicatorDBus::nsmSendLifecycleRequestComplete(const uint32_t RequestId, const NsmErrorStatus_e status) -{ - DBusError error; - DBusMessageIter iter; - dbus_error_init(&error); - int32_t returnError(0); - DBusMessage * message = dbus_message_new_method_call(NSM_BUS_INTERFACE, NSM_PATH, NSM_INTERFACE, "LifecycleRequestComplete"); - - if (!message) - { - logError( "CAmNodeStateCommunicatorDBus::nsmSendLifecycleRequestComplete dbus error:", error.message); - return (NsmErrorStatus_Dbus); - } - dbus_message_iter_init_append(message, &iter); - - if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_UINT32, &RequestId)) - { - logError( "CAmNodeStateCommunicatorDBus::nsmSendLifecycleRequestComplete no more memory"); - return (NsmErrorStatus_Dbus); - } - - if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32,&status)) - { - logError( "CAmNodeStateCommunicatorDBus::nsmSendLifecycleRequestComplete no more memory"); - return (NsmErrorStatus_Dbus); - } - - DBusMessage* reply(dbus_connection_send_with_reply_and_block(mpDBusConnection, message, -1, &error)); - dbus_message_unref(message); - - if (!reply) - { - logError( "CAmNodeStateCommunicatorDBus::nsmSendLifecycleRequestComplete failed, dbus error", error.message); - return (NsmErrorStatus_Dbus); - } - - if(!dbus_message_get_args(reply, &error,DBUS_TYPE_INT32, &returnError, DBUS_TYPE_INVALID)) - { - logError( "CAmNodeStateCommunicatorDBus::nsmSendLifecycleRequestComplete failed, dbus error", error.message); - return (NsmErrorStatus_Dbus); - } - dbus_message_unref(reply); - - return (static_cast<NsmErrorStatus_e>(returnError)); -} - -DBusHandlerResult CAmNodeStateCommunicatorDBus::receiveCallback(DBusConnection* conn, DBusMessage* msg, void* user_data) -{ - CAmNodeStateCommunicatorDBus* instance = static_cast<CAmNodeStateCommunicatorDBus*>(user_data); - assert(instance); - return (instance->receiveCallbackDelegate(conn,msg)); -} - -DBusHandlerResult CAmNodeStateCommunicatorDBus::receiveCallbackDelegate(DBusConnection* conn, DBusMessage* msg) -{ - if (dbus_message_is_method_call(msg, DBUS_INTERFACE_INTROSPECTABLE, "Introspect")) - { - sendIntrospection(conn, msg); - return (DBUS_HANDLER_RESULT_HANDLED); - } - else - { - DBusMessage * returnMessage; - dbus_uint32_t Request(0),RequestId(0); - //no introspection - ok. So we are only interested in out LifecycleRequest message... - std::string method(dbus_message_get_member(msg)); - if (method=="LifecycleRequest") - { - DBusMessageIter iter,replyIter; - if (!dbus_message_iter_init(msg, &iter)) - { - logError("CAmNodeStateCommunicatorDBus::receiveCallbackDelegate DBus Message has no arguments!"); - returnMessage = dbus_message_new_error(msg,DBUS_ERROR_INVALID_ARGS, "DBUS Message has no arguments!"); - sendMessage(returnMessage,msg); - return (DBUS_HANDLER_RESULT_HANDLED); - } - - if (dbus_message_iter_get_arg_type(&iter)!=DBUS_TYPE_UINT32) - { - logError("CAmNodeStateCommunicatorDBus::receiveCallbackDelegate DBus Message has invalid arguments!"); - returnMessage = dbus_message_new_error(msg,DBUS_ERROR_INVALID_ARGS,"DBus argument is not uint32_t!"); - sendMessage(returnMessage,msg); - return (DBUS_HANDLER_RESULT_HANDLED); - } - - dbus_message_iter_get_basic(&iter, &Request); - dbus_message_iter_next(&iter); - - if (dbus_message_iter_get_arg_type(&iter)!=DBUS_TYPE_UINT32) - { - logError("CAmNodeStateCommunicatorDBus::receiveCallbackDelegate DBus Message has invalid arguments!"); - returnMessage = dbus_message_new_error(msg,DBUS_ERROR_INVALID_ARGS,"DBus argument is not uint32_t!"); - sendMessage(returnMessage,msg); - return (DBUS_HANDLER_RESULT_HANDLED); - } - - dbus_message_iter_get_basic(&iter, &RequestId); - - assert(mpControlSender); - NsmErrorStatus_e returnError = mpControlSender->hookSystemLifecycleRequest(static_cast<uint32_t>(Request),static_cast<uint32_t>(RequestId)); - - returnMessage = dbus_message_new_method_return(msg); - - if (returnMessage == NULL) - { - logError("CAmNodeStateCommunicatorDBus::receiveCallbackDelegate Cannot allocate DBus message!"); - returnMessage = dbus_message_new_error(msg,DBUS_ERROR_NO_MEMORY,"Cannot create reply!"); - sendMessage(returnMessage,msg); - return (DBUS_HANDLER_RESULT_HANDLED); - } - - dbus_message_iter_init_append(returnMessage, &replyIter); - - if (!dbus_message_iter_append_basic(&replyIter, DBUS_TYPE_INT32, &returnError)) - { - logError("CAmNodeStateCommunicatorDBus::receiveCallbackDelegate Cannot allocate DBus message!"); - returnMessage = dbus_message_new_error(msg,DBUS_ERROR_NO_MEMORY,"Cannot create reply!"); - } - sendMessage(returnMessage,msg); - return (DBUS_HANDLER_RESULT_HANDLED); - } - } - return (DBUS_HANDLER_RESULT_NOT_YET_HANDLED); -} - -void CAmNodeStateCommunicatorDBus::sendIntrospection(DBusConnection* conn, DBusMessage* msg) -{ - assert(conn != NULL); - assert(msg != NULL); - DBusMessage* reply; - DBusMessageIter args; - dbus_uint32_t serial = 0; - - // create a reply from the message - reply = dbus_message_new_method_return(msg); - std::string fullpath(NSM_INTROSPECTION_FILE); - std::ifstream in(fullpath.c_str(), std::ifstream::in); - if (!in) - { - logError("IAmCommandReceiverShadow::sendIntrospection could not load xml file ",fullpath); - throw std::runtime_error("IAmCommandReceiverShadow::sendIntrospection Could not load introspecton XML"); - } - std::stringstream buffer; - buffer << in.rdbuf(); - std::string introspect = buffer.str(); - const char* string = introspect.c_str(); - - // add the arguments to the reply - dbus_message_iter_init_append(reply, &args); - if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &string)) - { - logError( "CAmNodeStateCommunicatorDBus::sendIntrospection DBUS handler Out Of Memory!"); - } - - // send the reply && flush the connection - if (!dbus_connection_send(conn, reply, &serial)) - { - logError( "CAmNodeStateCommunicatorDBus::sendIntrospection DBUS handler Out Of Memory!"); - } - dbus_connection_flush(conn); - - // free the reply - dbus_message_unref(reply); -} - -void CAmNodeStateCommunicatorDBus::sendMessage(DBusMessage* message, DBusMessage* origMessage) -{ - dbus_uint32_t serial = dbus_message_get_serial(origMessage); - - if(!dbus_connection_send(mpDBusConnection, message, &serial)) - { - logError( "CAmNodeStateCommunicatorDBus::sendMessage DBUS handler Out Of Memory!"); - } - dbus_connection_flush(mpDBusConnection); - dbus_message_unref(message); -} - -DBusHandlerResult CAmNodeStateCommunicatorDBus::signalCallback(DBusConnection* conn, DBusMessage* msg, void* user_data) -{ - (void) conn; - CAmNodeStateCommunicatorDBus* instance(static_cast<CAmNodeStateCommunicatorDBus*>(user_data)); - - const char* iface = dbus_message_get_interface(msg); - if (iface==NULL) - return (DBUS_HANDLER_RESULT_NOT_YET_HANDLED); - std::string interface(iface); - std::string member = dbus_message_get_member(msg); - - if (interface=="org.genivi.NodeStateManager.Consumer") - { - if (member=="NodeState") - { - int32_t nodeState; - DBusMessageIter iter; - if (!dbus_message_iter_init(msg, &iter)) - { - logError("CAmNodeStateCommunicatorDBus::signalCallback NodeState DBus Message has no arguments!"); - return (DBUS_HANDLER_RESULT_HANDLED); - } - - if (dbus_message_iter_get_arg_type(&iter)!=DBUS_TYPE_INT32) - { - logError("CAmNodeStateCommunicatorDBus::signalCallback NodeState DBus Message has invalid arguments!"); - return (DBUS_HANDLER_RESULT_HANDLED); - } - - dbus_message_iter_get_basic(&iter, &nodeState); - - logInfo("CAmNodeStateCommunicatorDBus::signalCallback got signal NodeState, with nodeState",nodeState); - - assert(instance->mpControlSender); - instance->mpControlSender->hookSystemNodeStateChanged(static_cast<NsmNodeState_e>(nodeState)); - return (DBUS_HANDLER_RESULT_HANDLED); - } - - else if (member=="NodeApplicationMode") - { - int32_t nodeApplicationMode; - DBusMessageIter iter; - if (!dbus_message_iter_init(msg, &iter)) - { - logError("CAmNodeStateCommunicatorDBus::signalCallback nodeApplicationMode DBus Message has no arguments!"); - return (DBUS_HANDLER_RESULT_HANDLED); - } - - if (dbus_message_iter_get_arg_type(&iter)!=DBUS_TYPE_INT32) - { - logError("CAmNodeStateCommunicatorDBus::signalCallback nodeApplicationMode DBus Message has invalid arguments!"); - return (DBUS_HANDLER_RESULT_HANDLED); - } - - dbus_message_iter_get_basic(&iter, &nodeApplicationMode); - - logInfo("CAmNodeStateCommunicatorDBus::signalCallback got signal nodeApplicationMode, with applicationMode",nodeApplicationMode); - - assert(instance->mpControlSender); - instance->mpControlSender->hookSystemNodeApplicationModeChanged(static_cast<NsmApplicationMode_e>(nodeApplicationMode)); - return (DBUS_HANDLER_RESULT_HANDLED); - } - - else if (member=="SessionStateChanged") - { - std::string sessionName; - NsmSeat_e seatID; - NsmSessionState_e sessionState; - DBusMessageIter iter; - if (!dbus_message_iter_init(msg, &iter)) - { - logError("CAmNodeStateCommunicatorDBus::signalCallback nodeApplicationMode DBus Message has no arguments!"); - return (DBUS_HANDLER_RESULT_HANDLED); - } - - if (dbus_message_iter_get_arg_type(&iter)!=DBUS_TYPE_STRING) - { - logError("CAmNodeStateCommunicatorDBus::signalCallback nodeApplicationMode DBus Message has invalid arguments!"); - return (DBUS_HANDLER_RESULT_HANDLED); - } - - char * sessionNameChar; - dbus_message_iter_get_basic(&iter, &sessionNameChar); - sessionName=std::string(sessionNameChar); - dbus_message_iter_next(&iter); - - if (dbus_message_iter_get_arg_type(&iter)!=DBUS_TYPE_INT32) - { - logError("CAmNodeStateCommunicatorDBus::signalCallback nodeApplicationMode DBus Message has invalid arguments!"); - return (DBUS_HANDLER_RESULT_HANDLED); - } - - dbus_message_iter_get_basic(&iter, &seatID); - dbus_message_iter_next(&iter); - - if (dbus_message_iter_get_arg_type(&iter)!=DBUS_TYPE_INT32) - { - logError("CAmNodeStateCommunicatorDBus::signalCallback nodeApplicationMode DBus Message has invalid arguments!"); - return (DBUS_HANDLER_RESULT_HANDLED); - } - - dbus_message_iter_get_basic(&iter, &sessionState); - - - logInfo("CAmNodeStateCommunicatorDBus::signalCallback got signal sessionStateChanged, with session",sessionName,"seatID=",seatID,"sessionState",sessionState); - - assert(instance->mpControlSender); - instance->mpControlSender->hookSystemSessionStateChanged(sessionName,seatID,sessionState); - return (DBUS_HANDLER_RESULT_HANDLED); - } - - else - { - return (DBUS_HANDLER_RESULT_NOT_YET_HANDLED); - } - } - - return (DBUS_HANDLER_RESULT_NOT_YET_HANDLED); -} - -am_Error_e CAmNodeStateCommunicatorDBus::readIntegerProperty(const std::string property, int32_t& value) -{ - DBusError error; - dbus_error_init(&error); - DBusMessageIter iter,iterVariant; - - DBusMessage * message = dbus_message_new_method_call(NSM_BUS_INTERFACE, NSM_PATH, "org.freedesktop.DBus.Properties", "Get"); - - if (!message) - { - logError("CAmNodeStateCommunicatorDBus::readIntegerProperty dbus error:", error.message); - dbus_message_unref(message); - return (E_UNKNOWN); - } - - - dbus_message_iter_init_append(message, &iter); - const char *interface=NSM_INTERFACE; - const char *propertyChar=property.c_str(); - if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &interface)) - { - logError("CAmNodeStateCommunicatorDBus::readIntegerProperty append error"); - dbus_message_unref(message); - return (E_UNKNOWN); - } - - if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &propertyChar)) - { - logError("CAmNodeStateCommunicatorDBus::readIntegerProperty append error"); - dbus_message_unref(message); - return (E_UNKNOWN); - } - - DBusMessage* reply(dbus_connection_send_with_reply_and_block(mpDBusConnection, message, -1, &error)); - if (!reply) - { - logError("CAmNodeStateCommunicatorDBus::readIntegerProperty failed, dbus error", error.message); - dbus_message_unref(message); - return (E_UNKNOWN); - } - - if(!dbus_message_iter_init(reply,&iterVariant)) - { - logError("CAmNodeStateCommunicatorDBus::readIntegerProperty failed, dbus error", error.message); - dbus_message_unref(message); - dbus_message_unref(reply); - return (E_UNKNOWN); - } - if (dbus_message_iter_get_arg_type (&iterVariant)!= DBUS_TYPE_VARIANT) - { - logError("CAmNodeStateCommunicatorDBus::readIntegerProperty failed, dbus return type wrong"); - dbus_message_unref(reply); - dbus_message_unref(message); - return (E_UNKNOWN); - } - DBusMessageIter subiter; - dbus_message_iter_recurse (&iterVariant, &subiter); - if (dbus_message_iter_get_arg_type (&subiter)!= DBUS_TYPE_INT32) - { - logError("CAmNodeStateCommunicatorDBus::readIntegerProperty failed, dbus return type wrong"); - dbus_message_unref(reply); - dbus_message_unref(message); - return (E_UNKNOWN); - } - - dbus_message_iter_get_basic(&subiter,&value); - dbus_message_unref(reply); - dbus_message_unref(message); - - return (E_OK); -} - -} /* namespace am */ diff --git a/AudioManagerDaemon/src/main.cpp b/AudioManagerDaemon/src/main.cpp index 6db7715..5942e18 100755 --- a/AudioManagerDaemon/src/main.cpp +++ b/AudioManagerDaemon/src/main.cpp @@ -30,20 +30,13 @@ #ifdef WITH_CAPI_WRAPPER #include "CAmCommonAPIWrapper.h" -#else - #ifdef WITH_DBUS_WRAPPER - #include "CAmDbusWrapper.h" - #endif #endif -#ifdef WITH_NSM - #ifdef WITH_DBUS_WRAPPER - #include "CAmNodeStateCommunicatorDBus.h" - #else - #include "CAmNodeStateCommunicatorCAPI.h" - #endif +#ifdef WITH_DBUS_WRAPPER + #include "CAmDbusWrapper.h" #endif + #ifdef WITH_DATABASE_STORAGE #include "CAmDatabaseHandlerSQLite.h" #else @@ -336,19 +329,12 @@ void mainProgram(int argc, char *argv[]) #ifdef WITH_CAPI_WRAPPER //We instantiate a singleton with the current socket handler, which loads the common-api runtime. CAmCommonAPIWrapper *pCAPIWrapper = CAmCommonAPIWrapper::instantiateOnce(&iSocketHandler, "AudioManager"); - CAmCommonAPIWrapper iDBusWrapper = *pCAPIWrapper; -#ifdef WITH_NSM - CAmNodeStateCommunicatorCAPI iNodeStateCommunicator(&iDBusWrapper); -#endif /*WITH_NSM*/ #endif /*WITH_CAPI_WRAPPER */ #ifdef WITH_DBUS_WRAPPER if (dbusWrapperTypeBool.getValue()) dbusWrapperType=DBUS_BUS_SYSTEM; CAmDbusWrapper iDBusWrapper(&iSocketHandler,dbusWrapperType); -#ifdef WITH_NSM - CAmNodeStateCommunicatorDBus iNodeStateCommunicator(&iDBusWrapper); -#endif /*WITH_NSM*/ #endif /*WITH_DBUS_WRAPPER */ #ifdef WITH_SYSTEMD_WATCHDOG @@ -371,12 +357,7 @@ void mainProgram(int argc, char *argv[]) CAmRoutingReceiver iRoutingReceiver(pDatabaseHandler,&iRoutingSender,&iControlSender,&iSocketHandler); #endif /*WITH_DBUS_WRAPPER*/ -#ifdef WITH_NSM - CAmControlReceiver iControlReceiver(pDatabaseHandler,&iRoutingSender,&iCommandSender,&iSocketHandler, &iRouter, &iNodeStateCommunicator); - iNodeStateCommunicator.registerControlSender(&iControlSender); -#else /*WITH_NSM*/ - CAmControlReceiver iControlReceiver(pDatabaseHandler,&iRoutingSender,&iCommandSender,&iSocketHandler, &iRouter); -#endif /*WITH_NSM*/ +CAmControlReceiver iControlReceiver(pDatabaseHandler,&iRoutingSender,&iCommandSender,&iSocketHandler, &iRouter); #ifdef WITH_TELNET CAmTelnetServer iTelnetServer(&iSocketHandler, &iCommandSender, &iCommandReceiver, &iRoutingSender, &iRoutingReceiver, &iControlSender, &iControlReceiver, pDatabaseHandler, &iRouter, telnetPort.getValue(), maxConnections.getValue()); |