diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/ctsydispatchlayer/src/cctsydispatcherfactory.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserverplugins/ctsydispatchlayer/src/cctsydispatcherfactory.cpp Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,123 @@ +// Copyright (c) 2008-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: +// + + +#include "cctsydispatcherfactory.h" +#include "cmessagerouter.h" + +#include + +#include +#include "testsattsyfactory.h" + +#include + + +CCtsyDispatcherFactoryV1* CCtsyDispatcherFactoryV1::NewL() + { + TSYLOGENTRYEXIT; + CCtsyDispatcherFactoryV1* self = new (ELeave) CCtsyDispatcherFactoryV1; + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +CCtsyDispatcherFactoryV1::CCtsyDispatcherFactoryV1() + { + } + +void CCtsyDispatcherFactoryV1::ConstructL() + { + TSYLOGENTRYEXIT; + } + +CCtsyDispatcherFactoryV1::~CCtsyDispatcherFactoryV1() + { + iloadedLib.Close(); + delete iMessageRouter; + } + +MLtsyFactoryBase::TCtsyInterfaceVersion CCtsyDispatcherFactoryV1::Version() + { + TSYLOGENTRYEXIT; + return MLtsyFactoryBase::EIfVersion1; + } + +void CCtsyDispatcherFactoryV1::Release() + { + TSYLOGENTRYEXIT; + delete this; + } + +MMessageRouter* CCtsyDispatcherFactoryV1::GetMessageRouter(MmMessageManagerCallback& aMessageManager) + { + TSYLOGENTRYEXIT; + if (!iMessageRouter) + { + TInt err = KErrNone; + TRAP(err, iMessageRouter = CMessageRouter::NewL(aMessageManager)); + } + return iMessageRouter; + } + +CTsySatMessagingBase* CCtsyDispatcherFactoryV1::GetSatMessagingService(MCtsySatService& aSatMessagingService) + { + TSYLOGENTRYEXIT; + //create message router to pass to STK CTSY + CTsySatMessagingBase* satbase = NULL; + TRAP_IGNORE(satbase = GetSatMessagingServiceL(aSatMessagingService)); + return satbase; + } + +CTsySatMessagingBase* CCtsyDispatcherFactoryV1::GetSatMessagingServiceL(MCtsySatService& aSatMessagingService) + { + + // When used by a licensee the TEST_CODE macro should be undefined and + // the licensee must provide an implementation for the GetSatMessagingService + // method in their dispatcher factory implementation + +#define TEST_CODE +#ifndef TEST_CODE + + __ASSERT_DEBUG(iMessageRouter, CtsyDispatcherPanic(EInvalidNullPtr)); + return iMessageRouter->iLtsyFactoryV1->GetSatMessagingService(aSatMessagingService); + +#else + + // Our test SAT TSY component is loaded only when the dispatcher is used in our + // test environment. + _LIT(KSatDllName, "cstktsy.dll"); + User::LeaveIfError(iloadedLib.Load(KSatDllName)); + typedef CSatTsyFactory* (*CSatTsyNewLC)(); + CSatTsyNewLC libEntry = (CSatTsyNewLC)iloadedLib.Lookup(1); + + CSatTsyFactory* satfactory = (*libEntry)(); // libEntry may leave. + CSatTsyFactory::TSatTsyPtrContainer satptr = satfactory->CreateSatTsyL(*iMessageRouter,aSatMessagingService); + + CleanupStack::PopAndDestroy(satfactory); + iMessageRouter->SetSatMessageManager(*satptr.iSatTsyMessageManagerCallback); + MStkTsyCallOrigin* origin = satptr.iSatTsy; + iMessageRouter->SetSatCallOriginInterface(*origin); + return satptr.iSatTsy; +#endif + } + +EXPORT_C MLtsyFactoryBase* CtsyDispatcherFactoryL() + { + TSYLOGENTRYEXIT; + CCtsyDispatcherFactoryV1* factory = CCtsyDispatcherFactoryV1::NewL(); + return factory; + }