--- /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 <ctsy/serviceapi/ctsysatmessagingbase.h>
+
+#include <ctsy/ltsy/ltsylogger.h>
+#include "testsattsyfactory.h"
+
+#include <ctsy/ltsy/mltsydispatchfactory.h>
+
+
+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;
+ }