/** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved.* This component and the accompanying materials are made available* under the terms of "Eclipse Public License v1.0"* which accompanies this distribution, and is available* at the URL "http://www.eclipse.org/legal/epl-v10.html".** Initial Contributors:* Nokia Corporation - initial contribution.** Contributors:* * Description:* This file contains the header file of the Plugin, FrontendPlugin,* CommChannelPlugin and CommChannelPluginObserver classes and implementation* of DummyCommObserver.*/// INCLUDES#include "plugin.h"#include "util.h"#include "serialcommplugin.h"#include "IPCommPlugin.h"extern DWORD g_ErrorCode;//**********************************************************************************// Class Plugin////**********************************************************************************Plugin::Plugin(){ Init();}DWORD Plugin::Init(){ m_Name = "NULL Plugin"; return NO_ERRORS;}const string& Plugin::GetName(string *name){ if (name != NULL) { *name = m_Name; } return m_Name;}//**********************************************************************************// Class CommChannelPlugin//// This class is the parent class of all communication channel plugins used// in DataGateway.//**********************************************************************************CommChannelPlugin* CommChannelPlugin::m_Self = NULL;/* * This method creates instance of specified plugin */CommChannelPlugin* CommChannelPlugin::Instance(const string& pluginname, const CommChannelPluginObserver* observer){ if (m_Self == NULL) { if (pluginname.compare("SERIAL") == 0 ) { m_Self = new SerialCommPlugin(observer); } else if (pluginname.compare("IPCOMM") == 0 ) { m_Self = new IPCommPlugin(observer); } else { string err = "Error when creating communication channel plugin.\n"; err += "Unknown plugin '" + pluginname + "'"; Util::Error(err); m_Self = NULL; g_ErrorCode = ERR_DG_UNKNOWN_COMMCHANNEL; } } return m_Self;}/* * This method initializes and connects the instance of plugin */DWORD CommChannelPlugin::Connect(){ if (m_Self == NULL) return ERR_DG_UNINITIALISED_COMMCHANNEL; DWORD res; if ((res = m_Self->Init()) != NO_ERRORS) return res; return m_Self->Open();}/* * This method closes and deletes the instance of plugin */DWORD CommChannelPlugin::Disconnect(){ if (m_Self == NULL) return ERR_DG_UNINITIALISED_COMMCHANNEL; Util::Info("[DataGateway] Waiting Communication Channel Plugin to shutdown"); m_Self->Close(); delete m_Self; m_Self = NULL; return NO_ERRORS;}CommChannelPlugin::CommChannelPlugin(const CommChannelPluginObserver* observer) : Plugin(){ if (observer == NULL) { m_Observer = new DummyCommObserver; } else { m_Observer = observer; }}DWORD CommChannelPlugin::Init(){ DWORD res; res = Plugin::Init(); m_Open = false; return res;}// End of the file