--- /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(×tamp, &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
+
+
+