telephonyserverplugins/ctsydispatchlayer/src/csimdispatcher.cpp
changeset 0 3553901f7fa8
child 19 630d2f34d719
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/ctsydispatchlayer/src/csimdispatcher.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,1750 @@
+// 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 "csimdispatcher.h"
+
+#include <ctsy/ltsy/mltsydispatchsiminterface.h>
+#include <ctsy/pluginapi/mmmessagemanagercallback.h>
+#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
+
+#include <ctsy/rmmcustomapi.h>
+#include <ctsy/ltsy/ltsylogger.h>
+#include "ctsydispatcherpanic.h"
+#include "tdispatcherholder.h"
+
+static const TInt KApduInfoLength = 3;
+
+CSimDispatcher::CSimDispatcher(
+		MLtsyDispatchFactoryV1& aLtsyFactory,
+		MmMessageManagerCallback& aMessageManagerCallback,
+		CRequestQueueOneShot& aRequestAsyncOneShot)
+	: 	iLtsyFactoryV1(aLtsyFactory),
+		iMessageManagerCallback(aMessageManagerCallback),
+		iRequestAsyncOneShot(aRequestAsyncOneShot)
+	{
+	} // CSimDispatcher::CSimDispatcher
+
+	  
+CSimDispatcher::~CSimDispatcher()
+	{
+	} // CSimDispatcher::~CSimDispatcher
+
+
+CSimDispatcher* CSimDispatcher::NewLC(
+	MLtsyDispatchFactoryV1& aLtsyFactory,
+	MmMessageManagerCallback& aMessageManagerCallback,
+	CRequestQueueOneShot& aRequestAsyncOneShot)
+	{
+	TSYLOGENTRYEXIT;
+	CSimDispatcher* self =
+		new (ELeave) CSimDispatcher(aLtsyFactory, aMessageManagerCallback, aRequestAsyncOneShot);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	} // CSimDispatcher::NewLC
+
+
+CSimDispatcher* CSimDispatcher::NewL(
+	MLtsyDispatchFactoryV1& aLtsyFactory,
+	MmMessageManagerCallback& aMessageManagerCallback,
+	CRequestQueueOneShot& aRequestAsyncOneShot)
+	{
+	TSYLOGENTRYEXIT;
+	CSimDispatcher* self =
+		CSimDispatcher::NewLC(aLtsyFactory, aMessageManagerCallback, aRequestAsyncOneShot);
+	CleanupStack::Pop (self);
+	return self;
+	} // CSimDispatcher::NewL
+
+
+void CSimDispatcher::ConstructL()
+/**
+ * Second phase constructor.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+	// Get the Licensee LTSY interfaces related to Sim functionality
+	// from the factory
+	
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetApnControlListServiceStatus::KLtsyDispatchSimGetApnControlListServiceStatusApiId))
+		{
+		TAny* getApnControlListServiceStatusInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+		       	MLtsyDispatchSimGetApnControlListServiceStatus::KLtsyDispatchSimGetApnControlListServiceStatusApiId,
+		       	getApnControlListServiceStatusInterface);
+		iLtsyDispatchSimGetApnControlListServiceStatus =
+				static_cast<MLtsyDispatchSimGetApnControlListServiceStatus*>(getApnControlListServiceStatusInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimGetApnControlListServiceStatus, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimDeleteApnName::KLtsyDispatchSimDeleteApnNameApiId))
+		{
+		TAny* deleteApnNameInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+		       	MLtsyDispatchSimDeleteApnName::KLtsyDispatchSimDeleteApnNameApiId,
+		       	deleteApnNameInterface);
+		iLtsyDispatchSimDeleteApnName =
+				static_cast<MLtsyDispatchSimDeleteApnName*>(deleteApnNameInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimDeleteApnName, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimEnumerateApnEntries::KLtsyDispatchSimEnumerateApnEntriesApiId))
+		{
+		TAny* enumerateApnEntriesInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+		       	MLtsyDispatchSimEnumerateApnEntries::KLtsyDispatchSimEnumerateApnEntriesApiId,
+		       	enumerateApnEntriesInterface);
+		iLtsyDispatchSimEnumerateApnEntries =
+				static_cast<MLtsyDispatchSimEnumerateApnEntries*>(enumerateApnEntriesInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimEnumerateApnEntries, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimChangeSecurityCode::KLtsyDispatchSimChangeSecurityCodeApiId))
+		{
+		TAny* changeSecurityCodeInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+		       	MLtsyDispatchSimChangeSecurityCode::KLtsyDispatchSimChangeSecurityCodeApiId,
+		       	changeSecurityCodeInterface);
+		iLtsyDispatchSimChangeSecurityCode =
+				static_cast<MLtsyDispatchSimChangeSecurityCode*>(changeSecurityCodeInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimChangeSecurityCode, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSetFdnSetting::KLtsyDispatchSimSetFdnSettingApiId))
+		{
+		TAny* setFdnSettingInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+		       	MLtsyDispatchSimSetFdnSetting::KLtsyDispatchSimSetFdnSettingApiId,
+		       	setFdnSettingInterface);
+		iLtsyDispatchSimSetFdnSetting =
+				static_cast<MLtsyDispatchSimSetFdnSetting*>(setFdnSettingInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimSetFdnSetting, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetCustomerServiceProfile::KLtsyDispatchSimGetCustomerServiceProfileApiId))
+		{
+		TAny* getCustomerServiceProfileInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+		       	MLtsyDispatchSimGetCustomerServiceProfile::KLtsyDispatchSimGetCustomerServiceProfileApiId,
+		       	getCustomerServiceProfileInterface);
+		iLtsyDispatchSimGetCustomerServiceProfile =
+				static_cast<MLtsyDispatchSimGetCustomerServiceProfile*>(getCustomerServiceProfileInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimGetCustomerServiceProfile, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetSubscriberId::KLtsyDispatchSimGetSubscriberIdApiId))
+		{
+		TAny* getSubscriberIdInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+		       	MLtsyDispatchSimGetSubscriberId::KLtsyDispatchSimGetSubscriberIdApiId,
+		       	getSubscriberIdInterface);
+		iLtsyDispatchSimGetSubscriberId =
+				static_cast<MLtsyDispatchSimGetSubscriberId*>(getSubscriberIdInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimGetSubscriberId, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimAppendApnName::KLtsyDispatchSimAppendApnNameApiId))
+		{
+		TAny* appendApnNameInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+		       	MLtsyDispatchSimAppendApnName::KLtsyDispatchSimAppendApnNameApiId,
+		       	appendApnNameInterface);
+		iLtsyDispatchSimAppendApnName =
+				static_cast<MLtsyDispatchSimAppendApnName*>(appendApnNameInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimAppendApnName, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetActiveIccApplicationType::KLtsyDispatchSimGetActiveIccApplicationTypeApiId))
+		{
+		TAny* getIccTypeInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+		       	MLtsyDispatchSimGetActiveIccApplicationType::KLtsyDispatchSimGetActiveIccApplicationTypeApiId,
+		       	getIccTypeInterface);
+		iLtsyDispatchSimGetIccType =
+				static_cast<MLtsyDispatchSimGetActiveIccApplicationType*>(getIccTypeInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimGetIccType, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSetIccMessageWaitingIndicators::KLtsyDispatchSimSetIccMessageWaitingIndicatorsApiId))
+		{
+		TAny* setIccMessageWaitingIndicatorsInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+		       	MLtsyDispatchSimSetIccMessageWaitingIndicators::KLtsyDispatchSimSetIccMessageWaitingIndicatorsApiId,
+		       	setIccMessageWaitingIndicatorsInterface);
+		iLtsyDispatchSimSetIccMessageWaitingIndicators =
+				static_cast<MLtsyDispatchSimSetIccMessageWaitingIndicators*>(setIccMessageWaitingIndicatorsInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimSetIccMessageWaitingIndicators, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSetApnControlListServiceStatus::KLtsyDispatchSimSetApnControlListServiceStatusApiId))
+		{
+		TAny* setApnControlListServiceStatusInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+		       	MLtsyDispatchSimSetApnControlListServiceStatus::KLtsyDispatchSimSetApnControlListServiceStatusApiId,
+		       	setApnControlListServiceStatusInterface);
+		iLtsyDispatchSimSetApnControlListServiceStatus =
+				static_cast<MLtsyDispatchSimSetApnControlListServiceStatus*>(setApnControlListServiceStatusInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimSetApnControlListServiceStatus, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetApnName::KLtsyDispatchSimGetApnNameApiId))
+		{
+		TAny* getApnNameInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+		       	MLtsyDispatchSimGetApnName::KLtsyDispatchSimGetApnNameApiId,
+		       	getApnNameInterface);
+		iLtsyDispatchSimGetApnName =
+				static_cast<MLtsyDispatchSimGetApnName*>(getApnNameInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimGetApnName, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSimRefreshDone::KLtsyDispatchSimSimRefreshDoneApiId))
+		{
+		TAny* simRefreshDoneInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+		       	MLtsyDispatchSimSimRefreshDone::KLtsyDispatchSimSimRefreshDoneApiId,
+		       	simRefreshDoneInterface);
+		iLtsyDispatchSimSimRefreshDone =
+				static_cast<MLtsyDispatchSimSimRefreshDone*>(simRefreshDoneInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimSimRefreshDone, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetServiceTable::KLtsyDispatchSimGetServiceTableApiId))
+		{
+		TAny* getServiceTableInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+		       	MLtsyDispatchSimGetServiceTable::KLtsyDispatchSimGetServiceTableApiId,
+		       	getServiceTableInterface);
+		iLtsyDispatchSimGetServiceTable =
+			static_cast<MLtsyDispatchSimGetServiceTable*>(getServiceTableInterface);
+  		__ASSERT_DEBUG(iLtsyDispatchSimGetServiceTable, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetIccMessageWaitingIndicators::KLtsyDispatchSimGetIccMessageWaitingIndicatorsApiId))
+		{
+	    TAny* getIccMessageWaitingIndicatorsInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+		       	MLtsyDispatchSimGetIccMessageWaitingIndicators::KLtsyDispatchSimGetIccMessageWaitingIndicatorsApiId,
+		       	getIccMessageWaitingIndicatorsInterface);
+		iLtsyDispatchSimGetIccMessageWaitingIndicators =
+			static_cast<MLtsyDispatchSimGetIccMessageWaitingIndicators*>(getIccMessageWaitingIndicatorsInterface);
+		__ASSERT_DEBUG(iLtsyDispatchSimGetIccMessageWaitingIndicators, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSimLockActivate::KLtsyDispatchSimSimLockActivateApiId))
+		{
+		TAny* simLockActivateInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+				MLtsyDispatchSimSimLockActivate::KLtsyDispatchSimSimLockActivateApiId,
+		       	simLockActivateInterface);
+		iLtsyDispatchSimSimLockActivate =
+				static_cast<MLtsyDispatchSimSimLockActivate*>(simLockActivateInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimSimLockActivate, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSimLockDeActivate::KLtsyDispatchSimSimLockDeActivateApiId))
+		{
+		TAny* simLockDeActivateInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+				MLtsyDispatchSimSimLockDeActivate::KLtsyDispatchSimSimLockDeActivateApiId,
+		       	simLockDeActivateInterface);
+		iLtsyDispatchSimSimLockDeActivate =
+				static_cast<MLtsyDispatchSimSimLockDeActivate*>(simLockDeActivateInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimSimLockDeActivate, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetAnswerToReset::KLtsyDispatchSimGetAnswerToResetApiId))
+		{
+		TAny* getAnswerToResetInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+				MLtsyDispatchSimGetAnswerToReset::KLtsyDispatchSimGetAnswerToResetApiId,
+		       	getAnswerToResetInterface);
+		iLtsyDispatchSimGetAnswerToReset =
+				static_cast<MLtsyDispatchSimGetAnswerToReset*>(getAnswerToResetInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimGetAnswerToReset, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetSimCardReaderStatus::KLtsyDispatchSimGetSimCardReaderStatusApiId))
+		{
+		TAny* getSimCardReaderStatusInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+				MLtsyDispatchSimGetSimCardReaderStatus::KLtsyDispatchSimGetSimCardReaderStatusApiId,
+		       	getSimCardReaderStatusInterface);
+		iLtsyDispatchSimGetSimCardReaderStatus =
+				static_cast<MLtsyDispatchSimGetSimCardReaderStatus*>(getSimCardReaderStatusInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimGetSimCardReaderStatus, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetSimAuthenticationEapSimData::KLtsyDispatchSimGetSimAuthenticationEapSimDataApiId))
+		{
+		TAny* getSimAuthenticationEapSimDataInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+				MLtsyDispatchSimGetSimAuthenticationEapSimData::KLtsyDispatchSimGetSimAuthenticationEapSimDataApiId,
+				getSimAuthenticationEapSimDataInterface);
+		iLtsyDispatchSimGetSimAuthenticationEapSimData =
+				static_cast<MLtsyDispatchSimGetSimAuthenticationEapSimData*>(getSimAuthenticationEapSimDataInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimGetSimAuthenticationEapSimData, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetSimAuthenticationEapAkaData::KLtsyDispatchSimGetSimAuthenticationEapAkaDataApiId))
+		{
+		TAny* getSimAuthenticationEapAkaDataInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+				MLtsyDispatchSimGetSimAuthenticationEapAkaData::KLtsyDispatchSimGetSimAuthenticationEapAkaDataApiId,
+		       	getSimAuthenticationEapAkaDataInterface);
+		iLtsyDispatchSimGetSimAuthenticationEapAkaData =
+				static_cast<MLtsyDispatchSimGetSimAuthenticationEapAkaData*>(getSimAuthenticationEapAkaDataInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimGetSimAuthenticationEapAkaData, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimPowerSimOff::KLtsyDispatchSimPowerSimOffApiId))
+		{
+		TAny* powerSimOffInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+				MLtsyDispatchSimPowerSimOff::KLtsyDispatchSimPowerSimOffApiId,
+		       	powerSimOffInterface);
+		iLtsyDispatchSimPowerSimOff =
+				static_cast<MLtsyDispatchSimPowerSimOff*>(powerSimOffInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimPowerSimOff, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimPowerSimOn::KLtsyDispatchSimPowerSimOnApiId))
+		{
+		TAny* powerSimOnInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+				MLtsyDispatchSimPowerSimOn::KLtsyDispatchSimPowerSimOnApiId,
+		       	powerSimOnInterface);
+		iLtsyDispatchSimPowerSimOn =
+				static_cast<MLtsyDispatchSimPowerSimOn*>(powerSimOnInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimPowerSimOn, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimReadSimFile::KLtsyDispatchSimReadSimFileApiId))
+		{
+		TAny* readSimFileInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+				MLtsyDispatchSimReadSimFile::KLtsyDispatchSimReadSimFileApiId,
+		       	readSimFileInterface);
+		iLtsyDispatchSimReadSimFile =
+				static_cast<MLtsyDispatchSimReadSimFile*>(readSimFileInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimReadSimFile, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSendApduRequest::KLtsyDispatchSimSendApduRequestApiId))
+		{
+		TAny* sendApduRequestInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+				MLtsyDispatchSimSendApduRequest::KLtsyDispatchSimSendApduRequestApiId,
+				sendApduRequestInterface);
+		iLtsyDispatchSimSendApduRequest =
+				static_cast<MLtsyDispatchSimSendApduRequest*>(sendApduRequestInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimSendApduRequest, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSendApduRequestV2::KLtsyDispatchSimSendApduRequestV2ApiId))
+		{
+		TAny* sendApduRequestV2Interface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+				MLtsyDispatchSimSendApduRequestV2::KLtsyDispatchSimSendApduRequestV2ApiId,
+				sendApduRequestV2Interface);
+		iLtsyDispatchSimSendApduRequestV2 =
+				static_cast<MLtsyDispatchSimSendApduRequestV2*>(sendApduRequestV2Interface);
+        __ASSERT_DEBUG(iLtsyDispatchSimSendApduRequestV2, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSimWarmReset::KLtsyDispatchSimSimWarmResetApiId))
+		{
+		TAny* simWarmResetInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+				MLtsyDispatchSimSimWarmReset::KLtsyDispatchSimSimWarmResetApiId,
+		       	simWarmResetInterface);
+		iLtsyDispatchSimSimWarmReset =
+				static_cast<MLtsyDispatchSimSimWarmReset*>(simWarmResetInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimSimWarmReset, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSetSimMessageStatusRead::KLtsyDispatchSimSetSimMessageStatusReadApiId))
+		{
+		TAny* setSimMessageStatusReadInterface = NULL;
+		iLtsyFactoryV1.GetDispatchHandler(
+				MLtsyDispatchSimSetSimMessageStatusRead::KLtsyDispatchSimSetSimMessageStatusReadApiId,
+		       	setSimMessageStatusReadInterface);
+		iLtsyDispatchSimSetSimMessageStatusRead =
+				static_cast<MLtsyDispatchSimSetSimMessageStatusRead*>(setSimMessageStatusReadInterface);
+        __ASSERT_DEBUG(iLtsyDispatchSimSetSimMessageStatusRead, CtsyDispatcherPanic(EInvalidNullPtr));
+  		}
+	
+	} // CSimDispatcher::ConstructL
+
+void CSimDispatcher::SetDispatcherHolder(TDispatcherHolder& aDispatcherHolder)
+/**
+ * Set the dispatcher holder.  
+ * 
+ * @param aDispatcherHolder Reference to dispatcher holder.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+	iDispatcherHolder = &aDispatcherHolder;
+	} // CSimDispatcher::SetDispatcherHolder
+
+TInt CSimDispatcher::DispatchGetApnControlListServiceStatusL()
+/**
+ * Unpack data related to EMobilePhoneGetAPNControlListServiceStatus
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+
+	// Call Handle... method in Licensee LTSY
+	if (iLtsyDispatchSimGetApnControlListServiceStatus)
+		{
+		ret = iLtsyDispatchSimGetApnControlListServiceStatus->HandleGetApnControlListServiceStatusReqL();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchGetApnControlListServiceStatusL
+
+TInt CSimDispatcher::DispatchDeleteApnNameL(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to EMobilePhoneDeleteAPNName
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+
+	// Call HandleDeleteApnNameReqL method in Licensee LTSY
+	if (iLtsyDispatchSimDeleteApnName)
+		{
+		TUint32 index;
+		aDataPackage->UnPackData(index);
+		ret = iLtsyDispatchSimDeleteApnName->HandleDeleteApnNameReqL(index);
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchDeleteApnNameL
+
+TInt CSimDispatcher::DispatchEnumerateApnEntriesL()
+/**
+ * Unpack data related to EMobilePhoneEnumerateAPNEntries
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+
+	// Call Handle... method in Licensee LTSY
+	if (iLtsyDispatchSimEnumerateApnEntries)
+		{
+		ret = iLtsyDispatchSimEnumerateApnEntries->HandleEnumerateApnEntriesReqL();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchEnumerateApnEntriesL
+
+TInt CSimDispatcher::DispatchChangeSecurityCodeL(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to EMobilePhoneChangeSecurityCode
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+
+	// Call Handle... method in Licensee LTSY
+	if(iLtsyDispatchSimChangeSecurityCode)
+		{
+		RMobilePhone::TMobilePhoneSecurityCode* secCode = NULL;
+		RMobilePhone::TMobilePhonePasswordChangeV1* passwds = NULL;
+		aDataPackage->UnPackData(&secCode, &passwds);
+		
+		__ASSERT_DEBUG(secCode, CtsyDispatcherPanic(EInvalidNullPtr));
+		__ASSERT_DEBUG(passwds, CtsyDispatcherPanic(EInvalidNullPtr));			
+		
+		ret = iLtsyDispatchSimChangeSecurityCode->HandleChangeSecurityCodeReqL(*secCode, *passwds);
+		}
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchChangeSecurityCodeL
+
+TInt CSimDispatcher::DispatchSetFdnSettingL(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to EMobilePhoneSetFdnSetting
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+
+	// Call Handle... method in Licensee LTSY
+	if (iLtsyDispatchSimSetFdnSetting)
+		{
+		RMobilePhone::TMobilePhoneFdnSetting fdnSetting;
+		aDataPackage->UnPackData(fdnSetting);
+		ret = iLtsyDispatchSimSetFdnSetting->HandleSetFdnSettingReqL(fdnSetting);
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchSetFdnSettingL
+
+TInt CSimDispatcher::DispatchGetCustomerServiceProfileL()
+/**
+ * Unpack data related to EMobilePhoneGetCustomerServiceProfile
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+
+	// Call Handle... method in Licensee LTSY
+	if (iLtsyDispatchSimGetCustomerServiceProfile)
+		{
+		ret = iLtsyDispatchSimGetCustomerServiceProfile->HandleGetCustomerServiceProfileReqL();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchGetCustomerServiceProfileL
+
+TInt CSimDispatcher::DispatchGetSubscriberIdL()
+/**
+ * Unpack data related to EMobilePhoneGetSubscriberId
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+
+	// Call Handle... method in Licensee LTSY
+	if (iLtsyDispatchSimGetSubscriberId)
+		{
+		ret = iLtsyDispatchSimGetSubscriberId->HandleGetSubscriberIdReqL();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchGetSubscriberIdL
+
+TInt CSimDispatcher::DispatchAppendApnNameL(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to EMobilePhoneAppendAPNName
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+
+	// Call HandleAppendApnNameReqL method in Licensee LTSY
+	if (iLtsyDispatchSimAppendApnName)
+		{
+		RMobilePhone::TAPNEntryV3* entry = NULL;
+		aDataPackage->UnPackData(&entry);
+
+		__ASSERT_DEBUG(entry, CtsyDispatcherPanic(EInvalidNullPtr));
+		
+		ret = iLtsyDispatchSimAppendApnName->HandleAppendApnNameReqL(*entry);
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchAppendApnNameL
+
+TInt CSimDispatcher::DispatchGetIccTypeL()
+/**
+ * Unpack data related to EMmTsySimGetICCType
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+
+	// Call Handle... method in Licensee LTSY
+	if (iLtsyDispatchSimGetIccType)
+		{
+		ret = iLtsyDispatchSimGetIccType->HandleGetActiveIccApplicationTypeReqL();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchGetIccTypeL
+
+TInt CSimDispatcher::DispatchSetIccMessageWaitingIndicatorsL(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to EMobilePhoneSetIccMessageWaitingIndicators
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+
+	// Call HandleSetIccMessageWaitingIndicatorsReqL method in Licensee LTSY
+	if (iLtsyDispatchSimSetIccMessageWaitingIndicators)
+		{
+		RMobilePhone::TMobilePhoneMessageWaitingV1* indicators = NULL;
+		aDataPackage->UnPackData(&indicators);
+
+		__ASSERT_DEBUG(indicators, CtsyDispatcherPanic(EInvalidNullPtr));
+		
+		ret = iLtsyDispatchSimSetIccMessageWaitingIndicators->HandleSetIccMessageWaitingIndicatorsReqL(*indicators);
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchSetIccMessageWaitingIndicatorsL
+
+TInt CSimDispatcher::DispatchSetApnControlListServiceStatusL(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to EMobilePhoneSetAPNControlListServiceStatus
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+
+	// Call HandleSetApnControlListServiceStatusReqL method in Licensee LTSY
+	if (iLtsyDispatchSimSetApnControlListServiceStatus)
+		{
+		RMobilePhone::TAPNControlListServiceStatus status;
+		aDataPackage->UnPackData(status); 
+		ret = iLtsyDispatchSimSetApnControlListServiceStatus->HandleSetApnControlListServiceStatusReqL(status);
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchSetApnControlListServiceStatusL
+
+TInt CSimDispatcher::DispatchGetApnNameL(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to EMobilePhoneGetAPNname
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+
+	// Call HandleGetApnNameReqL method in Licensee LTSY
+	if (iLtsyDispatchSimGetApnName)
+		{
+		TUint32 index;
+		aDataPackage->UnPackData(index);
+		ret = iLtsyDispatchSimGetApnName->HandleGetApnNameReqL(index);
+		}
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchGetApnNameL
+
+TInt CSimDispatcher::DispatchSimRefreshDoneL(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to EMmTsySimRefreshDoneIPC
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+
+	// Call Handle... method in Licensee LTSY
+	if (iLtsyDispatchSimSimRefreshDone)
+		{
+		//packed as a TBool in the CTSY really a TInt containing KErrXXX
+		TBool error;
+		aDataPackage->UnPackData(error);
+			
+		ret = iLtsyDispatchSimSimRefreshDone->HandleSimRefreshDoneReqL(static_cast<TInt>(error));
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchSimRefreshDoneL
+
+TInt CSimDispatcher::DispatchGetServiceTableL(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to RMobilePhone::GetServiceTable
+ * and pass request on to Licensee LTSY.
+ * 
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+	
+	// Call Handle... method in Licensee LTSY
+	if (iLtsyDispatchSimGetServiceTable)
+		{		
+		RMobilePhone::TMobilePhoneServiceTable serviceTable; 
+		aDataPackage->UnPackData(serviceTable);  		
+		ret = iLtsyDispatchSimGetServiceTable->HandleGetServiceTableReqL(serviceTable);
+		}
+	
+	return TSYLOGSETEXITERR(ret);	
+	} // CSimDispatcher::DispatchGetServiceTableL
+	
+TInt CSimDispatcher::DispatchGetIccMessageWaitingIndicatorsL()
+/**
+ * Unpack data related to EMobilePhoneGetIccMessageWaitingIndicators
+ * and pass request on to Licensee LTSY.
+ * 
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+
+	// Call Handle... method in Licensee LTSY
+	if (iLtsyDispatchSimGetIccMessageWaitingIndicators)
+		{
+		ret = iLtsyDispatchSimGetIccMessageWaitingIndicators->HandleGetIccMessageWaitingIndicatorsReqL();
+		}
+		
+	return TSYLOGSETEXITERR(ret);	
+	} // CSimDispatcher::DispatchGetIccMessageWaitingIndicatorsL
+	
+TInt CSimDispatcher::DispatchSimLockActivateL(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to ECustomSimLockActivateIPC
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+
+	// Can Handle... method in Licensee LTSY
+	if (iLtsyDispatchSimSimLockActivate)
+		{		
+		RMmCustomAPI::TSimLockPassword* password = NULL; 
+		RMmCustomAPI::TLockNumber* lockNumber = NULL;
+		aDataPackage->UnPackData(&password, &lockNumber);
+		__ASSERT_DEBUG(password, CtsyDispatcherPanic(EInvalidNullPtr));
+		__ASSERT_DEBUG(lockNumber, CtsyDispatcherPanic(EInvalidNullPtr));
+
+		ret = iLtsyDispatchSimSimLockActivate->HandleSimLockActivateReqL(*password, *lockNumber);
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchSimLockActivateL
+
+TInt CSimDispatcher::DispatchSimLockDeActivateL(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to ECustomSimLockDeActivateIPC
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+
+	// Can Handle... method in Licensee LTSY
+	if (iLtsyDispatchSimSimLockDeActivate)
+		{
+		RMmCustomAPI::TSimLockPassword* password = NULL; 
+		RMmCustomAPI::TLockNumber* lockNumber = NULL;
+		aDataPackage->UnPackData(&password, &lockNumber);
+		__ASSERT_DEBUG(password, CtsyDispatcherPanic(EInvalidNullPtr));
+		__ASSERT_DEBUG(lockNumber, CtsyDispatcherPanic(EInvalidNullPtr));
+
+		ret = iLtsyDispatchSimSimLockDeActivate->HandleSimLockDeActivateReqL(*password, *lockNumber);
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchSimLockDeActivateL
+
+TInt CSimDispatcher::DispatchGetAnswerToResetL(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to ECustomGetATRIPC
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+	
+	if (iLtsyDispatchSimGetAnswerToReset)
+		{
+		TDes8* answerToReset = NULL;
+		aDataPackage->UnPackData(answerToReset);
+		__ASSERT_DEBUG(answerToReset, CtsyDispatcherPanic(EInvalidNullPtr));
+		
+		ret = iLtsyDispatchSimGetAnswerToReset->HandleGetAnswerToResetReqL(*answerToReset);
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchGetAnswerToResetL
+
+TInt CSimDispatcher::DispatchGetSimCardReaderStatusL()
+/**
+ * Pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	
+	if (iLtsyDispatchSimGetSimCardReaderStatus)
+		{
+		ret = iLtsyDispatchSimGetSimCardReaderStatus->HandleGetSimCardReaderStatusReqL();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchGetSimCardReaderStatusL
+
+TInt CSimDispatcher::DispatchGetSimAuthenticationDataL(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to ECustomGetSimAuthenticationDataIPC
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+
+	RMmCustomAPI::TSimAuthenticationBase* basePtr = NULL;
+	TInt* rfStateInfo = 0;
+	aDataPackage->UnPackData(&basePtr, &rfStateInfo);
+	__ASSERT_DEBUG(basePtr, CtsyDispatcherPanic(EInvalidNullPtr));
+	
+	if(basePtr->ExtensionId() == RMmCustomAPI::TSimAuthenticationBase::EEapSim)
+		{
+		RMmCustomAPI::TSimAuthenticationEapSim* eapSim = static_cast<RMmCustomAPI::TSimAuthenticationEapSim*> (basePtr);
+		
+		if (iLtsyDispatchSimGetSimAuthenticationEapSimData)
+			{
+			ret = iLtsyDispatchSimGetSimAuthenticationEapSimData->HandleGetSimAuthenticationEapSimDataReqL(eapSim->iRandomParameters,
+																										   *rfStateInfo);
+			}
+		}
+	else
+	if(basePtr->ExtensionId() == RMmCustomAPI::TSimAuthenticationBase::EEapAka)
+		{	
+		RMmCustomAPI::TSimAuthenticationEapAka* eapAka = static_cast<RMmCustomAPI::TSimAuthenticationEapAka*>(basePtr);
+		
+		if (iLtsyDispatchSimGetSimAuthenticationEapAkaData)
+			{
+			ret = iLtsyDispatchSimGetSimAuthenticationEapAkaData->HandleGetSimAuthenticationEapAkaDataReqL(eapAka->iRandomParameters, 
+																										   eapAka->iAUTN,
+																										   *rfStateInfo);
+			}
+		}
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchGetSimAuthenticationDataL
+
+TInt CSimDispatcher::DispatchPowerSimOffL()
+/**
+ * Pass ECustomPowerSimOffIPC request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	
+	// Can Handle... method in Licensee LTSY
+	if (iLtsyDispatchSimPowerSimOff)
+		{
+		ret = iLtsyDispatchSimPowerSimOff->HandlePowerSimOffReqL();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchPowerSimOffL
+
+TInt CSimDispatcher::DispatchPowerSimOnL()
+/**
+ * Pass ECustomPowerSimOnIPC request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+
+	// Can Handle... method in Licensee LTSY
+	if (iLtsyDispatchSimPowerSimOn)
+		{
+		ret = iLtsyDispatchSimPowerSimOn->HandlePowerSimOnReqL();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchPowerSimOnL
+
+TInt CSimDispatcher::DispatchReadSimFileL(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to ECustomReadSimFileIPC
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+
+	// Can Handle... method in Licensee LTSY
+	if (iLtsyDispatchSimReadSimFile)
+		{
+		
+		RMmCustomAPI::TSimFileInfo* simFileInfo = NULL;
+		aDataPackage->UnPackData(&simFileInfo);
+		__ASSERT_DEBUG(simFileInfo, CtsyDispatcherPanic(EInvalidNullPtr));
+
+		ret = iLtsyDispatchSimReadSimFile->HandleReadSimFileReqL(simFileInfo->iPath,simFileInfo->iOffSet,simFileInfo->iSize);
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchReadSimFileL
+
+TInt CSimDispatcher::DispatchSendApduRequestL(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to ECustomSendAPDUReqIPC
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+
+	// Can Handle... method in Licensee LTSY
+	if (iLtsyDispatchSimSendApduRequest)
+		{
+		RMmCustomAPI::TApdu* apduReq = NULL;
+		aDataPackage->UnPackData(&apduReq);
+
+		__ASSERT_DEBUG(apduReq, CtsyDispatcherPanic(EInvalidNullPtr));
+		//will cause a ETel panic 1 if either iInfo or iData is missing
+		__ASSERT_DEBUG(apduReq->iInfo, CtsyDispatcherPanic(EInvalidNullPtr));
+		__ASSERT_DEBUG(apduReq->iData, CtsyDispatcherPanic(EInvalidNullPtr));
+		__ASSERT_DEBUG(apduReq->iInfo->Length() >= KApduInfoLength, CtsyDispatcherPanic(EBadLength));
+
+		const TDesC8& info = *(apduReq->iInfo);
+		
+		ret = iLtsyDispatchSimSendApduRequest->HandleSimSendApduRequestReqL(info[0],info[1],info[2],*(apduReq->iData));
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchSendApduRequestL
+
+TInt CSimDispatcher::DispatchSendApduRequestV2L(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to ECustomSendAPDUReqV2IPC
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+
+	// Can Handle... method in Licensee LTSY
+	if (iLtsyDispatchSimSendApduRequestV2)
+		{
+		
+		RMmCustomAPI::TApduParameters* apduParameters = NULL;
+		aDataPackage->UnPackData(apduParameters);
+		__ASSERT_DEBUG(apduParameters, CtsyDispatcherPanic(EInvalidNullPtr));
+		
+		ret = iLtsyDispatchSimSendApduRequestV2->HandleSimSendApduRequestV2ReqL(apduParameters->iCardReaderId,apduParameters->iCmdData);
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchSendApduRequestV2L
+
+TInt CSimDispatcher::DispatchSimWarmResetL()
+/**
+ * Pass ECustomSimWarmResetIPC request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	
+	// Can Handle... method in Licensee LTSY
+	if (iLtsyDispatchSimSimWarmReset)
+		{
+		ret = iLtsyDispatchSimSimWarmReset->HandleSimWarmResetReqL();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchSimWarmResetL
+
+TInt CSimDispatcher::DispatchSetSimMessageStatusReadL(const CMmDataPackage* aDataPackage)
+/**
+ * Unpack data related to ECustomSetSimMessageStatusReadIPC
+ * and pass request on to Licensee LTSY.
+ *
+ * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
+ * the Licensee LTSY does not support this request.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	
+	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
+
+	// Unpack data for this request here if required.
+	TTime* timestamp = NULL;
+	TInt* timezone = NULL;
+	aDataPackage->UnPackData(&timestamp, &timezone);
+
+	if (!timestamp || !timezone)
+		{
+		ret = KErrCorrupt;
+		}
+	// Can Handle... method in Licensee LTSY
+	else if (iLtsyDispatchSimSetSimMessageStatusRead) 
+		{
+		ret = iLtsyDispatchSimSetSimMessageStatusRead->HandleSetSimMessageStatusReadReqL(*timestamp,*timezone);
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CSimDispatcher::DispatchSetSimMessageStatusReadL
+
+//
+// Callback handlers follow
+//
+
+
+
+void CSimDispatcher::CallbackRefreshSimFiles(TInt aError, TUint16 aRefreshFileList)
+/**
+ * Callback function to be used by the request to complete.
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ * @param @param aRefreshFileList Bitmask containing list of files to refresh. The list of possible files is specified in TCacheFileTypes.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d, aRefreshFileList=%d"), aError, aRefreshFileList);
+	
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(&aRefreshFileList);
+	
+	iMessageManagerCallback.Complete(EMmTsySimRefreshNowIPC, &dataPackage, aError);
+	
+	} // CSimDispatcher::CallbackRefreshSimFiles
+
+void CSimDispatcher::CallbackNotifyIccMessageWaitingIndicatorsChange(TInt aError,
+		const RMobilePhone::TMobilePhoneMessageWaitingV1& aIndicators)
+/**
+ * Callback function to be used by the request to complete.
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ * @param aIndicators The ICC message waiting indicators to return.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	// Pack the data to return to the Common TSY
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(const_cast<RMobilePhone::TMobilePhoneMessageWaitingV1*>(&aIndicators));
+
+	iMessageManagerCallback.Complete(EMobilePhoneNotifyIccMessageWaitingIndicatorsChange, &dataPackage, aError);
+	
+	} // CSimDispatcher::CallbackNotifyIccMessageWaitingIndicatorsChange
+
+void CSimDispatcher::CallbackNotifyApnListChange(TInt aError)
+/**
+ * Callback function to be used by the request to complete.
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	iMessageManagerCallback.Complete(EMobilePhoneNotifyAPNListChanged, aError);
+	
+	} // CSimDispatcher::CallbackNotifyApnListChange
+
+void CSimDispatcher::CallbackNotifyApnControlListServiceStatusChange(TInt aError,
+		RMobilePhone::TAPNControlListServiceStatus aStatus)
+/**
+ * Callback function to be used by the request to complete.
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ * @param aStatus The new service status to return.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	// Pack the data to return to the Common TSY
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(&aStatus);
+
+	iMessageManagerCallback.Complete(EMobilePhoneNotifyAPNControlListServiceStatusChange, &dataPackage, aError);
+	
+	} // CSimDispatcher::CallbackNotifyApnControlListServiceStatusChange
+
+void CSimDispatcher::CallbackGetApnControlListServiceStatus(TInt aError,
+		RMobilePhone::TAPNControlListServiceStatus aStatus)
+/**
+ * Callback function to be used by the request to complete.
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ * @param aStatus The APN Control List Service status stored on the USIM.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	// Pack the data to return to the Common TSY
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(&aStatus);
+	
+	iMessageManagerCallback.Complete(EMobilePhoneGetAPNControlListServiceStatus, &dataPackage, aError);
+	
+	} // CSimDispatcher::CallbackGetApnControlListServiceStatus
+
+void CSimDispatcher::CallbackDeleteApnName(TInt aError)
+/**
+ * Callback function to be used by the request to complete.
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	iMessageManagerCallback.Complete(EMobilePhoneDeleteAPNName, aError);
+	
+	} // CSimDispatcher::CallbackDeleteApnName
+
+void CSimDispatcher::CallbackEnumerateApnEntries(TInt aError,
+		TUint32 aNumEntries)
+/**
+ * Callback function to be used by the request to complete.
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ * @param aNumEntries The total number of available entries.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d, aNumEntries=%d"), aError, aNumEntries);
+
+	// Pack the data to return to the Common TSY
+
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(&aNumEntries);
+	
+	iMessageManagerCallback.Complete(EMobilePhoneEnumerateAPNEntries, &dataPackage, aError);
+	
+	} // CSimDispatcher::CallbackEnumerateApnEntries
+
+void CSimDispatcher::CallbackChangeSecurityCode(TInt aError)
+/**
+ * Callback function to be used by the request to complete the EMobilePhoneChangeSecurityCode
+ * request back to the Common TSY.
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	// Pack the data to return to the Common TSY
+
+	iMessageManagerCallback.Complete(EMobilePhoneChangeSecurityCode, aError);
+	} // CSimDispatcher::CallbackChangeSecurityCode
+
+void CSimDispatcher::CallbackSetFdnSetting(TInt aError)
+/**
+ * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimSetFdnSettingComp().
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	iMessageManagerCallback.Complete(EMobilePhoneSetFdnSetting, aError);
+	
+	} // CSimDispatcher::CallbackSetFdnSetting
+
+void CSimDispatcher::CallbackGetCustomerServiceProfile(TInt aError,
+		const RMobilePhone::TMobilePhoneCspFileV1& aCsp)
+/**
+ * Callback function to be used by the request to complete.
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ * @param aCsp The Customer Service Profile file that is stored on the SIM.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	// Pack the data to return to the Common TSY
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(const_cast<RMobilePhone::TMobilePhoneCspFileV1*>(&aCsp));
+
+	iMessageManagerCallback.Complete(EMobilePhoneGetCustomerServiceProfile, &dataPackage, aError);
+	
+	} // CSimDispatcher::CallbackGetCustomerServiceProfile
+
+void CSimDispatcher::CallbackGetSubscriberId(TInt aError,
+		const TDesC8& aId)
+/**
+ * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimGetSubscriberIdComp().
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ * @param aId The subscriber id to be returned.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+	__ASSERT_DEBUG(aId.Length() <= RMobilePhone::KIMSISize, CtsyDispatcherPanic(EBadLength));
+
+	//the CTSY unpack ad does a TDesC copy to a TBuf8 of size KGsmUssdDataSize
+	TPtrC8 imsi = aId.Left(RMobilePhone::KIMSISize);
+	
+	// Pack the data to return to the Common TSY
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(&imsi);
+
+	iMessageManagerCallback.Complete(EMobilePhoneGetSubscriberId, &dataPackage, aError);
+	
+	} // CSimDispatcher::CallbackGetSubscriberId
+
+void CSimDispatcher::CallbackAppendApnName(TInt aError)
+/**
+ * Callback function to be used by the request to complete.
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	iMessageManagerCallback.Complete(EMobilePhoneAppendAPNName, aError);
+	
+	} // CSimDispatcher::CallbackAppendApnName
+
+void CSimDispatcher::CallbackGetActiveIccApplicationType(TInt aError, MLtsyDispatchSimGetActiveIccApplicationType::TIccType aIccType)
+/**
+ * Callback function to be used by the request to complete.
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ * @param aIccType active application type
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d, aIccType=%d"), aError, aIccType);
+
+	// Pack the data to return to the Common TSY
+	CMmDataPackage dataPackage;
+	
+	//effectively a static cast from MLtsyDispatchSimGetActiveIccApplicationType::TIccType to
+	//a CMmPhoneGsmWcdmaExt::TICCType when the data is unpacked.
+	//This is only correct if the two enums match, unfortunately CMmPhoneGsmWcdmaExt::TICCType is 
+	//not an exported header file.
+	dataPackage.PackData(&aIccType);
+	
+	iMessageManagerCallback.Complete(EMmTsySimGetICCType, &dataPackage, aError);
+	
+	} // CSimDispatcher::CallbackGetIccType
+
+void CSimDispatcher::CallbackSetIccMessageWaitingIndicators(TInt aError)
+/**
+ * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimSetIccMessageWaitingIndicatorsComp().
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	iMessageManagerCallback.Complete(EMobilePhoneSetIccMessageWaitingIndicators, aError);
+	
+	} // CSimDispatcher::CallbackSetIccMessageWaitingIndicators
+
+void CSimDispatcher::CallbackSetApnControlListServiceStatus(TInt aError)
+/**
+ * Callback function to be used by the request to complete.
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	iMessageManagerCallback.Complete(EMobilePhoneSetAPNControlListServiceStatus, aError);
+	
+	} // CSimDispatcher::CallbackSetApnControlListServiceStatus
+
+void CSimDispatcher::CallbackGetApnName(TInt aError,
+			const RMobilePhone::TAPNEntryV3& aEntry)
+/**
+ * Callback function to be used by the request to complete.
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ * @param aEntry The Access Point Name (APN) entry.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	// Pack the data to return to the Common TSY
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(const_cast<RMobilePhone::TAPNEntryV3*>(&aEntry));
+	
+	iMessageManagerCallback.Complete(EMobilePhoneGetAPNname, &dataPackage, aError);
+	
+	} // CSimDispatcher::CallbackGetApnName
+
+void CSimDispatcher::CallbackGetServiceTable(
+				TInt aError,
+				const RMobilePhone::TMobilePhoneServiceTableV1& aServiceTable)
+/**
+ * Packages the data returned by the Licensee LTSY and completes the 
+ * RMobilePhone::GetServiceTable back to the Common TSY.
+ * 
+ * @param aServiceTable The service table data to return back to Common TSY.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	// Package up data to return to Common TSY
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(
+		const_cast<RMobilePhone::TMobilePhoneServiceTableV1*>(&aServiceTable));
+
+	// Now complete the actual get request
+	iMessageManagerCallback.Complete(EMobilePhoneGetServiceTable, &dataPackage, aError);	
+	} // CSimDispatcher::CallbackGetServiceTable
+
+void CSimDispatcher::CallbackGetIccMessageWaitingIndicators(
+		TInt aError, const RMobilePhone::TMobilePhoneMessageWaitingV1& aMessageWaitingIndicator)
+/**
+ * Packages the data returned by the Licensee LTSY and completes the 
+ * RMobilePhone::GetIccMessageWaitingIndicators back to the Common TSY.
+ * 
+ * @param aError The error code to complete back.
+ * @param aMessageWaitingIndicator The message waiting indicators to return.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	// Package up data to return to Common TSY
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(
+			const_cast<RMobilePhone::TMobilePhoneMessageWaitingV1*>
+											(&aMessageWaitingIndicator));
+
+	// Now complete the actual get request
+	iMessageManagerCallback.Complete(
+			EMobilePhoneGetIccMessageWaitingIndicators, &dataPackage, aError);
+	
+	} // CPhoneDispatcher::CallbackGetIccMessageWaitingIndicators
+
+void CSimDispatcher::CallbackNotifySimCardStatus(TInt aError,
+		RMmCustomAPI::TSIMCardStatus aSimCardStatus)
+/**
+ * Callback function to be used by the request to complete 
+ * CCtsyDispatcherCallback::CallbackSimNotifySimCardStatusInd().
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ * @param aSimCardStatus whether the sim card is enabled/disabled etc.
+ * @see RMmCustomAPI::NotifySimCardStatus()
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	// Pack the data to return to the Common TSY
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(&aSimCardStatus);
+	
+	iMessageManagerCallback.Complete(ECustomNotifySimCardStatusIPC, &dataPackage, aError);
+	
+	} // CSimDispatcher::CallbackNotifySimCardStatus
+
+void CSimDispatcher::CallbackSimLockActivate(TInt aError)
+/**
+ * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimSimLockActivateComp().
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+	iMessageManagerCallback.Complete(ECustomSimLockActivateIPC, aError);
+	
+	} // CSimDispatcher::CallbackSimLockActivate
+
+void CSimDispatcher::CallbackSimLockDeActivate(TInt aError)
+/**
+ * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimSimLockDeActivateComp().
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+	iMessageManagerCallback.Complete(ECustomSimLockDeActivateIPC, aError);
+	
+	} // CSimDispatcher::CallbackSimLockDeActivate
+
+void CSimDispatcher::CallbackGetAnswerToReset(TInt aError, const TDesC8& aAnswerToReset)
+/**
+ * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimGetAnswerToResetComp().
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ * @param aAnswerToReset The answer to reset.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d, aAnswerToReset=%S"), aError, &aAnswerToReset);
+
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(&const_cast<TDesC8&>(aAnswerToReset));
+
+	iMessageManagerCallback.Complete(ECustomGetATRIPC, &dataPackage, aError);
+	
+	} // CSimDispatcher::CallbackGetAnswerToReset
+
+void CSimDispatcher::CallbackGetSimCardReaderStatus(TInt aError, TUint8 aSimCardReaderStatus)
+/**
+ * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimGetSimCardReaderStatusComp().
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ * @param aSimCardReaderStatus The sim card reader's status.
+ * 							   Bits: 
+ *								1-3  Identity of card reader,
+ *								4    0=Card reader is not removable,
+ *								     1=Card reader is removable,
+ *								5    0=Card reader is not present,
+ * 									 1=Card reader is present,
+ *								6    0=Card reader present is not ID-1 size,
+ *									 1=Card reader present is ID-1 size,
+ *								7    0=No card present,
+ *									 1=Card is present in reader,
+ *								8    0=No card powered,
+ *									 1=Card in reader is powered.
+ *
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d, aSimCardReaderStatus=%d"), aError, aSimCardReaderStatus);
+
+	TBuf8<1> status;
+	status.Append(aSimCardReaderStatus);
+	
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(&status);
+	
+	iMessageManagerCallback.Complete(ECustomGetSimCardReaderStatusIPC, &dataPackage, aError);
+	
+	} // CSimDispatcher::CallbackGetSimCardReaderStatus
+
+void CSimDispatcher::CallbackGetSimAuthenticationData(
+		TInt aError, const TDesC8& aSignedResponse, const TDesC8& aCipheringKey)
+/**
+ * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimGetSimAuthenticationDataComp().
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ * @param aSignedResponse The signed response. The length should not be greater than RMmCustomAPI::KMaxParametersLength.
+ * @param aCipheringKey The ciphering key. The length should not be greater than RMmCustomAPI::KMaxParametersLength.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d, aSignedResponse=%S, aCipheringKey=%S"), aError, &aSignedResponse, &aCipheringKey);
+	
+	RMmCustomAPI::TSimAuthenticationEapSim authenticationEapSim;
+	TInt error = aError;
+	if ( error == KErrNone)
+		{
+		if (RMmCustomAPI::KMaxParametersLength < aSignedResponse.Length() 
+			|| RMmCustomAPI::KMaxParametersLength < aCipheringKey.Length())
+			{
+			error = KErrCorrupt;
+			}
+		else
+			{
+			authenticationEapSim.iSRES.Copy(aSignedResponse);
+			authenticationEapSim.iKC.Copy(aCipheringKey);
+			}
+		}
+	
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(&authenticationEapSim);
+	
+	iMessageManagerCallback.Complete(ECustomGetSimAuthenticationDataIPC, &dataPackage, error);
+	
+	} // CSimDispatcher::CallbackGetSimAuthenticationData
+
+void CSimDispatcher::CallbackGetSimAuthenticationData(
+		TInt aError, const TDesC8& aResponse, const TDesC8& aCipheringKey, const TDesC8& aIntegrityKey, const TDesC8& aAUTS)
+/**
+ * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimGetSimAuthenticationDataComp().
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ * @param aResponse The response. The length should not be greater than RMmCustomAPI::KMaxParametersLength.
+ * @param aCipheringKey The ciphering key. The length should not be greater than RMmCustomAPI::KMaxParametersLength.
+ * @param aIntegrityKey The integrity key. The length should not be greater than RMmCustomAPI::KMaxParametersLength.
+ * @param aAUTS The AUTS value. A value generated by the peer upon experiencing a synchronization failure, 112 bits. 
+ * 		  This is needed only in error case. The length should not be greater than RMmCustomAPI::KMaxParametersLength.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d, aResponse=%S, aCipheringKey=%S, aIntegrityKey=%S, aAUTS=%S"), aError, &aResponse, &aCipheringKey, &aIntegrityKey, &aAUTS);
+
+	RMmCustomAPI::TSimAuthenticationEapAka authenticationEapAka;
+	TInt error = aError;
+	
+	if ( error == KErrNone)
+		{
+		if (RMmCustomAPI::KMaxParametersLength < aResponse.Length() 
+			|| RMmCustomAPI::KMaxParametersLength < aCipheringKey.Length() 
+			|| RMmCustomAPI::KMaxParametersLength < aIntegrityKey.Length()) 
+			{
+			error = KErrCorrupt;
+			}
+		else
+			{
+			authenticationEapAka.iRES.Copy(aResponse);
+			authenticationEapAka.iCK.Copy(aCipheringKey);
+			authenticationEapAka.iIK.Copy(aIntegrityKey);
+			}
+		}
+	else
+		{
+		if (RMmCustomAPI::KMaxParametersLength < aAUTS.Length()) 
+			{
+			error = KErrCorrupt;
+			}
+		else
+			{
+			authenticationEapAka.iAUTS.Copy(aAUTS);
+			}
+		}
+	
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(&authenticationEapAka);
+	
+	iMessageManagerCallback.Complete(ECustomGetSimAuthenticationDataIPC, &dataPackage, error);
+	
+	} // CSimDispatcher::CallbackGetSimAuthenticationData
+
+void CSimDispatcher::CallbackPowerSimOff(TInt aError)
+/**
+ * Callback function to be used by the request to complete
+ * CCtsyDispatcherCallback::CallbackSimPowerSimOffComp()
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	iMessageManagerCallback.Complete(ECustomPowerSimOffIPC, aError);
+	
+	} // CSimDispatcher::CallbackPowerSimOff
+
+void CSimDispatcher::CallbackPowerSimOn(TInt aError)
+/**
+ * Callback function to be used by the request to complete 
+ * CCtsyDispatcherCallback::CallbackSimPowerSimOnComp()
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	iMessageManagerCallback.Complete(ECustomPowerSimOnIPC, aError);
+	
+	} // CSimDispatcher::CallbackPowerSimOn
+
+void CSimDispatcher::CallbackReadSimFile(TInt aError, const TDesC8& aResponseBytes)
+/**
+ * Callback function to be used by the request to complete 
+ * CCtsyDispatcherCallback::CallbackSimReadSimFileComp()
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ * @param aResponseBytes The bytes read from the SIM.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	//local need so will compile for ARM	
+	TDesC8* responseBytesPtr = &const_cast<TDesC8&>(aResponseBytes);
+	
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(&responseBytesPtr);
+	
+	iMessageManagerCallback.Complete(ECustomReadSimFileIPC, &dataPackage, aError);
+	
+	} // CSimDispatcher::CallbackReadSimFile
+
+void CSimDispatcher::CallbackSendApduRequest(
+		TInt aError, TUint8 aServiceType, TUint8 aCardReaderNumber, TUint8 aApplicationType, const TDesC8& aResponseData)
+/**
+ * Callback function to be used by the request to complete 
+ * CCtsyDispatcherCallback::CallbackSimSendApduRequestComp()
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ * @param aServiceType The value for the service type of the request to be returned to the client.
+ * @param aCardReaderNumber The value for the card reader number of the request to be returned to the client.
+ * @param aApplicationType The value for the application type of the request to be returned to the client.
+ * @param aResponseData The transparent response data conveyed from the baseband to be returned to the client.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d,aServiceType=%d,aCardReaderNumber=%d,aApplicationType=%d"), aError, aServiceType, aCardReaderNumber, aApplicationType);
+
+	TBuf8<KApduInfoLength> info;
+	info.Append(aServiceType);
+	info.Append(aCardReaderNumber);
+	info.Append(aApplicationType);
+
+	TPtrC8 infoPtr(info);
+	TPtrC8 responsePtr(aResponseData);
+	
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(&infoPtr,&responsePtr);
+	
+	iMessageManagerCallback.Complete(ECustomSendAPDUReqIPC, &dataPackage, aError);
+	
+	} // CSimDispatcher::CallbackSendApduRequest
+
+void CSimDispatcher::CallbackSendApduRequestV2(TInt aError, const TDesC8& aResponseData)
+/**
+ * Callback function to be used by the request to complete 
+ * CCtsyDispatcherCallback::CallbackSimSendApduRequestV2Comp()
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ * @param aResponseData The transparent response data conveyed from the baseband to be returned to the client.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+	
+	CMmDataPackage dataPackage;
+	dataPackage.PackData(&const_cast<TDesC8&>(aResponseData));
+	
+	iMessageManagerCallback.Complete(ECustomSendAPDUReqV2IPC, &dataPackage, aError);
+	
+	} // CSimDispatcher::CallbackSendApduRequestV2
+
+void CSimDispatcher::CallbackSimWarmReset(TInt aError)
+/**
+ * Callback function to be used by the request to complete 
+ * CCtsyDispatcherCallback::CallbackSimSimWarmResetComp()
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	iMessageManagerCallback.Complete(ECustomSimWarmResetIPC, aError);
+	
+	} // CSimDispatcher::CallbackSimWarmReset
+
+void CSimDispatcher::CallbackSetSimMessageStatusRead(TInt aError)
+/**
+ * Callback function to be used by the request to complete 
+ * CCtsyDispatcherCallback::CallbackSimSetMessageStatusReadComp()
+ *
+ * @param aError The error code to be returned to the CTSY Dispatcher.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
+
+	iMessageManagerCallback.Complete(ECustomSetSimMessageStatusReadIPC, aError);
+	
+	} // CSimDispatcher::CallbackSetSimMessageStatusRead
+
+void CSimDispatcher::CallbackSync(CRequestQueueOneShot::TIpcDataPackage& aIpcDataPackage)
+/**
+ * Part of the MDispatcherCallback interface. Used to complete requests handled
+ * synchronously by the Licensee LTSY asynchronously back to the Common TSY.
+ *  
+ * @param aIpcDataPackage Package encapsulating the request.
+ * 
+ * @see MDispatcherCallback::CallbackSync()
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+	switch (aIpcDataPackage.iIpc)
+		{
+	
+	default:
+		LOG(_L8("WARNING: CSimDispatcher::CallbackSync unhandled IPC=%d"), aIpcDataPackage.iIpc);
+		__ASSERT_DEBUG(NULL, CtsyDispatcherPanic(EUnhandledCtsyIpc));
+		break;		
+		} // switch (aIpcDataPackage.iIpc)
+	
+	} // CSimDispatcher::CallbackSync
+
+
+