diff options
author | Kapildev Patel <kpatel@jp.adit-jv.com> | 2017-04-24 18:58:31 +0900 |
---|---|---|
committer | Jens Lorenz <jlorenz@de.adit-jv.com> | 2017-09-29 11:42:01 +0200 |
commit | 3e9f7977dc599b6a91e875c8239480f212a4cd3a (patch) | |
tree | 072aeba3a6245eaa6470d7cd21c58afe93d5d051 /AudioManagerCore/include | |
parent | f620be8a774f966fbd76ca8892a39ce28037a213 (diff) | |
download | audiomanager-3e9f7977dc599b6a91e875c8239480f212a4cd3a.tar.gz |
AM: Destroy plugin implementation.
With these changes AudioManager would call destroy function of the
controller plugin at the time of shutdown.
Signed-off-by: Kapildev Patel <kpatel@jp.adit-jv.com>
Diffstat (limited to 'AudioManagerCore/include')
-rw-r--r-- | AudioManagerCore/include/CAmControlSender.h | 1 | ||||
-rw-r--r-- | AudioManagerCore/include/TAmPluginTemplate.h | 91 |
2 files changed, 1 insertions, 91 deletions
diff --git a/AudioManagerCore/include/CAmControlSender.h b/AudioManagerCore/include/CAmControlSender.h index 40ab379..2c31cf9 100644 --- a/AudioManagerCore/include/CAmControlSender.h +++ b/AudioManagerCore/include/CAmControlSender.h @@ -147,6 +147,7 @@ private: IAmControlSend* mController; //!< pointer to the ControlSend interface static CAmControlSender* mInstance; int16_t mSignal; + std::string mControlPluginFile; }; } diff --git a/AudioManagerCore/include/TAmPluginTemplate.h b/AudioManagerCore/include/TAmPluginTemplate.h deleted file mode 100644 index f000fbe..0000000 --- a/AudioManagerCore/include/TAmPluginTemplate.h +++ /dev/null @@ -1,91 +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 2011,2012 - * - * \file TAmPluginTemplate.h - * For further information see http://www.genivi.org/. - * - */ - -#ifndef PLUGINTEMPLATE_H_ -#define PLUGINTEMPLATE_H_ - -#include <dlfcn.h> -#include <libgen.h> -#include "CAmDltWrapper.h" - -namespace am -{ - -/** - * * This template tries to load a library and cast to a class - * @param libname the full path to the library to be loaded - * @param libraryHandle the handle to the library that gets returned - * @return returns the pointer to the class to be loaded - */ -template<class T> T* getCreateFunction(const std::string& libname, void*& libraryHandle) -{ - - logInfo("getCreateFunction : Trying to load library with name: ",libname); - - // cut off directories - char* fileWithPath = const_cast<char*>(libname.c_str()); - std::string libFileName = basename(fileWithPath); - - // cut off "lib" in front and cut off .so end" - std::string createFunctionName = libFileName.substr(3, libFileName.length() - 6) + "Factory"; - // open library - dlerror(); // Clear any existing error - libraryHandle = dlopen(libname.c_str(), RTLD_LAZY ); - const char* dlopen_error = dlerror(); - if (!libraryHandle || dlopen_error) - { - logError("getCreateFunction : dlopen failed",dlopen_error); - return (0); - } - - // get entry point from shared lib - dlerror(); // Clear any existing error - - union - { - void* voidPointer; - T* typedPointer; - } functionPointer; - - // Note: direct cast is not allowed by ISO C++. e.g. - // T* createFunction = reinterpret_cast<T*>(dlsym(libraryHandle, createFunctionName.c_str())); - // compiler warning: "forbids casting between pointer-to-function and pointer-to-object" - - functionPointer.voidPointer = dlsym(libraryHandle, createFunctionName.c_str()); - T* createFunction = functionPointer.typedPointer; - - const char* dlsym_error = dlerror(); - if (!createFunction || dlsym_error) - { - logError("getCreateFunction: Failed to load shared lib entry point",dlsym_error); - } - else - { - logInfo("getCreateFunction : loaded successfully plugin", createFunctionName); - } - return (createFunction); -} - -} - -#endif /* PLUGINTEMPLATE_H_ */ |