telephonyserverplugins/ctsydispatchlayer/src/csimdispatcher.cpp
changeset 0 3553901f7fa8
child 19 630d2f34d719
equal deleted inserted replaced
-1:000000000000 0:3553901f7fa8
       
     1 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 #include "csimdispatcher.h"
       
    17 
       
    18 #include <ctsy/ltsy/mltsydispatchsiminterface.h>
       
    19 #include <ctsy/pluginapi/mmmessagemanagercallback.h>
       
    20 #include <ctsy/serviceapi/mmtsy_ipcdefs.h>
       
    21 
       
    22 #include <ctsy/rmmcustomapi.h>
       
    23 #include <ctsy/ltsy/ltsylogger.h>
       
    24 #include "ctsydispatcherpanic.h"
       
    25 #include "tdispatcherholder.h"
       
    26 
       
    27 static const TInt KApduInfoLength = 3;
       
    28 
       
    29 CSimDispatcher::CSimDispatcher(
       
    30 		MLtsyDispatchFactoryV1& aLtsyFactory,
       
    31 		MmMessageManagerCallback& aMessageManagerCallback,
       
    32 		CRequestQueueOneShot& aRequestAsyncOneShot)
       
    33 	: 	iLtsyFactoryV1(aLtsyFactory),
       
    34 		iMessageManagerCallback(aMessageManagerCallback),
       
    35 		iRequestAsyncOneShot(aRequestAsyncOneShot)
       
    36 	{
       
    37 	} // CSimDispatcher::CSimDispatcher
       
    38 
       
    39 	  
       
    40 CSimDispatcher::~CSimDispatcher()
       
    41 	{
       
    42 	} // CSimDispatcher::~CSimDispatcher
       
    43 
       
    44 
       
    45 CSimDispatcher* CSimDispatcher::NewLC(
       
    46 	MLtsyDispatchFactoryV1& aLtsyFactory,
       
    47 	MmMessageManagerCallback& aMessageManagerCallback,
       
    48 	CRequestQueueOneShot& aRequestAsyncOneShot)
       
    49 	{
       
    50 	TSYLOGENTRYEXIT;
       
    51 	CSimDispatcher* self =
       
    52 		new (ELeave) CSimDispatcher(aLtsyFactory, aMessageManagerCallback, aRequestAsyncOneShot);
       
    53 	CleanupStack::PushL(self);
       
    54 	self->ConstructL();
       
    55 	return self;
       
    56 	} // CSimDispatcher::NewLC
       
    57 
       
    58 
       
    59 CSimDispatcher* CSimDispatcher::NewL(
       
    60 	MLtsyDispatchFactoryV1& aLtsyFactory,
       
    61 	MmMessageManagerCallback& aMessageManagerCallback,
       
    62 	CRequestQueueOneShot& aRequestAsyncOneShot)
       
    63 	{
       
    64 	TSYLOGENTRYEXIT;
       
    65 	CSimDispatcher* self =
       
    66 		CSimDispatcher::NewLC(aLtsyFactory, aMessageManagerCallback, aRequestAsyncOneShot);
       
    67 	CleanupStack::Pop (self);
       
    68 	return self;
       
    69 	} // CSimDispatcher::NewL
       
    70 
       
    71 
       
    72 void CSimDispatcher::ConstructL()
       
    73 /**
       
    74  * Second phase constructor.
       
    75  */
       
    76 	{
       
    77 	TSYLOGENTRYEXIT;
       
    78 	
       
    79 	// Get the Licensee LTSY interfaces related to Sim functionality
       
    80 	// from the factory
       
    81 	
       
    82 	
       
    83 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetApnControlListServiceStatus::KLtsyDispatchSimGetApnControlListServiceStatusApiId))
       
    84 		{
       
    85 		TAny* getApnControlListServiceStatusInterface = NULL;
       
    86 		iLtsyFactoryV1.GetDispatchHandler(
       
    87 		       	MLtsyDispatchSimGetApnControlListServiceStatus::KLtsyDispatchSimGetApnControlListServiceStatusApiId,
       
    88 		       	getApnControlListServiceStatusInterface);
       
    89 		iLtsyDispatchSimGetApnControlListServiceStatus =
       
    90 				static_cast<MLtsyDispatchSimGetApnControlListServiceStatus*>(getApnControlListServiceStatusInterface);
       
    91         __ASSERT_DEBUG(iLtsyDispatchSimGetApnControlListServiceStatus, CtsyDispatcherPanic(EInvalidNullPtr));
       
    92   		}
       
    93 	
       
    94 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimDeleteApnName::KLtsyDispatchSimDeleteApnNameApiId))
       
    95 		{
       
    96 		TAny* deleteApnNameInterface = NULL;
       
    97 		iLtsyFactoryV1.GetDispatchHandler(
       
    98 		       	MLtsyDispatchSimDeleteApnName::KLtsyDispatchSimDeleteApnNameApiId,
       
    99 		       	deleteApnNameInterface);
       
   100 		iLtsyDispatchSimDeleteApnName =
       
   101 				static_cast<MLtsyDispatchSimDeleteApnName*>(deleteApnNameInterface);
       
   102         __ASSERT_DEBUG(iLtsyDispatchSimDeleteApnName, CtsyDispatcherPanic(EInvalidNullPtr));
       
   103   		}
       
   104 	
       
   105 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimEnumerateApnEntries::KLtsyDispatchSimEnumerateApnEntriesApiId))
       
   106 		{
       
   107 		TAny* enumerateApnEntriesInterface = NULL;
       
   108 		iLtsyFactoryV1.GetDispatchHandler(
       
   109 		       	MLtsyDispatchSimEnumerateApnEntries::KLtsyDispatchSimEnumerateApnEntriesApiId,
       
   110 		       	enumerateApnEntriesInterface);
       
   111 		iLtsyDispatchSimEnumerateApnEntries =
       
   112 				static_cast<MLtsyDispatchSimEnumerateApnEntries*>(enumerateApnEntriesInterface);
       
   113         __ASSERT_DEBUG(iLtsyDispatchSimEnumerateApnEntries, CtsyDispatcherPanic(EInvalidNullPtr));
       
   114   		}
       
   115 	
       
   116 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimChangeSecurityCode::KLtsyDispatchSimChangeSecurityCodeApiId))
       
   117 		{
       
   118 		TAny* changeSecurityCodeInterface = NULL;
       
   119 		iLtsyFactoryV1.GetDispatchHandler(
       
   120 		       	MLtsyDispatchSimChangeSecurityCode::KLtsyDispatchSimChangeSecurityCodeApiId,
       
   121 		       	changeSecurityCodeInterface);
       
   122 		iLtsyDispatchSimChangeSecurityCode =
       
   123 				static_cast<MLtsyDispatchSimChangeSecurityCode*>(changeSecurityCodeInterface);
       
   124         __ASSERT_DEBUG(iLtsyDispatchSimChangeSecurityCode, CtsyDispatcherPanic(EInvalidNullPtr));
       
   125   		}
       
   126 	
       
   127 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSetFdnSetting::KLtsyDispatchSimSetFdnSettingApiId))
       
   128 		{
       
   129 		TAny* setFdnSettingInterface = NULL;
       
   130 		iLtsyFactoryV1.GetDispatchHandler(
       
   131 		       	MLtsyDispatchSimSetFdnSetting::KLtsyDispatchSimSetFdnSettingApiId,
       
   132 		       	setFdnSettingInterface);
       
   133 		iLtsyDispatchSimSetFdnSetting =
       
   134 				static_cast<MLtsyDispatchSimSetFdnSetting*>(setFdnSettingInterface);
       
   135         __ASSERT_DEBUG(iLtsyDispatchSimSetFdnSetting, CtsyDispatcherPanic(EInvalidNullPtr));
       
   136   		}
       
   137 	
       
   138 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetCustomerServiceProfile::KLtsyDispatchSimGetCustomerServiceProfileApiId))
       
   139 		{
       
   140 		TAny* getCustomerServiceProfileInterface = NULL;
       
   141 		iLtsyFactoryV1.GetDispatchHandler(
       
   142 		       	MLtsyDispatchSimGetCustomerServiceProfile::KLtsyDispatchSimGetCustomerServiceProfileApiId,
       
   143 		       	getCustomerServiceProfileInterface);
       
   144 		iLtsyDispatchSimGetCustomerServiceProfile =
       
   145 				static_cast<MLtsyDispatchSimGetCustomerServiceProfile*>(getCustomerServiceProfileInterface);
       
   146         __ASSERT_DEBUG(iLtsyDispatchSimGetCustomerServiceProfile, CtsyDispatcherPanic(EInvalidNullPtr));
       
   147   		}
       
   148 	
       
   149 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetSubscriberId::KLtsyDispatchSimGetSubscriberIdApiId))
       
   150 		{
       
   151 		TAny* getSubscriberIdInterface = NULL;
       
   152 		iLtsyFactoryV1.GetDispatchHandler(
       
   153 		       	MLtsyDispatchSimGetSubscriberId::KLtsyDispatchSimGetSubscriberIdApiId,
       
   154 		       	getSubscriberIdInterface);
       
   155 		iLtsyDispatchSimGetSubscriberId =
       
   156 				static_cast<MLtsyDispatchSimGetSubscriberId*>(getSubscriberIdInterface);
       
   157         __ASSERT_DEBUG(iLtsyDispatchSimGetSubscriberId, CtsyDispatcherPanic(EInvalidNullPtr));
       
   158   		}
       
   159 	
       
   160 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimAppendApnName::KLtsyDispatchSimAppendApnNameApiId))
       
   161 		{
       
   162 		TAny* appendApnNameInterface = NULL;
       
   163 		iLtsyFactoryV1.GetDispatchHandler(
       
   164 		       	MLtsyDispatchSimAppendApnName::KLtsyDispatchSimAppendApnNameApiId,
       
   165 		       	appendApnNameInterface);
       
   166 		iLtsyDispatchSimAppendApnName =
       
   167 				static_cast<MLtsyDispatchSimAppendApnName*>(appendApnNameInterface);
       
   168         __ASSERT_DEBUG(iLtsyDispatchSimAppendApnName, CtsyDispatcherPanic(EInvalidNullPtr));
       
   169   		}
       
   170 	
       
   171 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetActiveIccApplicationType::KLtsyDispatchSimGetActiveIccApplicationTypeApiId))
       
   172 		{
       
   173 		TAny* getIccTypeInterface = NULL;
       
   174 		iLtsyFactoryV1.GetDispatchHandler(
       
   175 		       	MLtsyDispatchSimGetActiveIccApplicationType::KLtsyDispatchSimGetActiveIccApplicationTypeApiId,
       
   176 		       	getIccTypeInterface);
       
   177 		iLtsyDispatchSimGetIccType =
       
   178 				static_cast<MLtsyDispatchSimGetActiveIccApplicationType*>(getIccTypeInterface);
       
   179         __ASSERT_DEBUG(iLtsyDispatchSimGetIccType, CtsyDispatcherPanic(EInvalidNullPtr));
       
   180   		}
       
   181 	
       
   182 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSetIccMessageWaitingIndicators::KLtsyDispatchSimSetIccMessageWaitingIndicatorsApiId))
       
   183 		{
       
   184 		TAny* setIccMessageWaitingIndicatorsInterface = NULL;
       
   185 		iLtsyFactoryV1.GetDispatchHandler(
       
   186 		       	MLtsyDispatchSimSetIccMessageWaitingIndicators::KLtsyDispatchSimSetIccMessageWaitingIndicatorsApiId,
       
   187 		       	setIccMessageWaitingIndicatorsInterface);
       
   188 		iLtsyDispatchSimSetIccMessageWaitingIndicators =
       
   189 				static_cast<MLtsyDispatchSimSetIccMessageWaitingIndicators*>(setIccMessageWaitingIndicatorsInterface);
       
   190         __ASSERT_DEBUG(iLtsyDispatchSimSetIccMessageWaitingIndicators, CtsyDispatcherPanic(EInvalidNullPtr));
       
   191   		}
       
   192 	
       
   193 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSetApnControlListServiceStatus::KLtsyDispatchSimSetApnControlListServiceStatusApiId))
       
   194 		{
       
   195 		TAny* setApnControlListServiceStatusInterface = NULL;
       
   196 		iLtsyFactoryV1.GetDispatchHandler(
       
   197 		       	MLtsyDispatchSimSetApnControlListServiceStatus::KLtsyDispatchSimSetApnControlListServiceStatusApiId,
       
   198 		       	setApnControlListServiceStatusInterface);
       
   199 		iLtsyDispatchSimSetApnControlListServiceStatus =
       
   200 				static_cast<MLtsyDispatchSimSetApnControlListServiceStatus*>(setApnControlListServiceStatusInterface);
       
   201         __ASSERT_DEBUG(iLtsyDispatchSimSetApnControlListServiceStatus, CtsyDispatcherPanic(EInvalidNullPtr));
       
   202   		}
       
   203 	
       
   204 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetApnName::KLtsyDispatchSimGetApnNameApiId))
       
   205 		{
       
   206 		TAny* getApnNameInterface = NULL;
       
   207 		iLtsyFactoryV1.GetDispatchHandler(
       
   208 		       	MLtsyDispatchSimGetApnName::KLtsyDispatchSimGetApnNameApiId,
       
   209 		       	getApnNameInterface);
       
   210 		iLtsyDispatchSimGetApnName =
       
   211 				static_cast<MLtsyDispatchSimGetApnName*>(getApnNameInterface);
       
   212         __ASSERT_DEBUG(iLtsyDispatchSimGetApnName, CtsyDispatcherPanic(EInvalidNullPtr));
       
   213   		}
       
   214 	
       
   215 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSimRefreshDone::KLtsyDispatchSimSimRefreshDoneApiId))
       
   216 		{
       
   217 		TAny* simRefreshDoneInterface = NULL;
       
   218 		iLtsyFactoryV1.GetDispatchHandler(
       
   219 		       	MLtsyDispatchSimSimRefreshDone::KLtsyDispatchSimSimRefreshDoneApiId,
       
   220 		       	simRefreshDoneInterface);
       
   221 		iLtsyDispatchSimSimRefreshDone =
       
   222 				static_cast<MLtsyDispatchSimSimRefreshDone*>(simRefreshDoneInterface);
       
   223         __ASSERT_DEBUG(iLtsyDispatchSimSimRefreshDone, CtsyDispatcherPanic(EInvalidNullPtr));
       
   224   		}
       
   225 	
       
   226 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetServiceTable::KLtsyDispatchSimGetServiceTableApiId))
       
   227 		{
       
   228 		TAny* getServiceTableInterface = NULL;
       
   229 		iLtsyFactoryV1.GetDispatchHandler(
       
   230 		       	MLtsyDispatchSimGetServiceTable::KLtsyDispatchSimGetServiceTableApiId,
       
   231 		       	getServiceTableInterface);
       
   232 		iLtsyDispatchSimGetServiceTable =
       
   233 			static_cast<MLtsyDispatchSimGetServiceTable*>(getServiceTableInterface);
       
   234   		__ASSERT_DEBUG(iLtsyDispatchSimGetServiceTable, CtsyDispatcherPanic(EInvalidNullPtr));
       
   235   		}
       
   236 	
       
   237 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetIccMessageWaitingIndicators::KLtsyDispatchSimGetIccMessageWaitingIndicatorsApiId))
       
   238 		{
       
   239 	    TAny* getIccMessageWaitingIndicatorsInterface = NULL;
       
   240 		iLtsyFactoryV1.GetDispatchHandler(
       
   241 		       	MLtsyDispatchSimGetIccMessageWaitingIndicators::KLtsyDispatchSimGetIccMessageWaitingIndicatorsApiId,
       
   242 		       	getIccMessageWaitingIndicatorsInterface);
       
   243 		iLtsyDispatchSimGetIccMessageWaitingIndicators =
       
   244 			static_cast<MLtsyDispatchSimGetIccMessageWaitingIndicators*>(getIccMessageWaitingIndicatorsInterface);
       
   245 		__ASSERT_DEBUG(iLtsyDispatchSimGetIccMessageWaitingIndicators, CtsyDispatcherPanic(EInvalidNullPtr));
       
   246   		}
       
   247 	
       
   248 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSimLockActivate::KLtsyDispatchSimSimLockActivateApiId))
       
   249 		{
       
   250 		TAny* simLockActivateInterface = NULL;
       
   251 		iLtsyFactoryV1.GetDispatchHandler(
       
   252 				MLtsyDispatchSimSimLockActivate::KLtsyDispatchSimSimLockActivateApiId,
       
   253 		       	simLockActivateInterface);
       
   254 		iLtsyDispatchSimSimLockActivate =
       
   255 				static_cast<MLtsyDispatchSimSimLockActivate*>(simLockActivateInterface);
       
   256         __ASSERT_DEBUG(iLtsyDispatchSimSimLockActivate, CtsyDispatcherPanic(EInvalidNullPtr));
       
   257   		}
       
   258 	
       
   259 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSimLockDeActivate::KLtsyDispatchSimSimLockDeActivateApiId))
       
   260 		{
       
   261 		TAny* simLockDeActivateInterface = NULL;
       
   262 		iLtsyFactoryV1.GetDispatchHandler(
       
   263 				MLtsyDispatchSimSimLockDeActivate::KLtsyDispatchSimSimLockDeActivateApiId,
       
   264 		       	simLockDeActivateInterface);
       
   265 		iLtsyDispatchSimSimLockDeActivate =
       
   266 				static_cast<MLtsyDispatchSimSimLockDeActivate*>(simLockDeActivateInterface);
       
   267         __ASSERT_DEBUG(iLtsyDispatchSimSimLockDeActivate, CtsyDispatcherPanic(EInvalidNullPtr));
       
   268   		}
       
   269 	
       
   270 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetAnswerToReset::KLtsyDispatchSimGetAnswerToResetApiId))
       
   271 		{
       
   272 		TAny* getAnswerToResetInterface = NULL;
       
   273 		iLtsyFactoryV1.GetDispatchHandler(
       
   274 				MLtsyDispatchSimGetAnswerToReset::KLtsyDispatchSimGetAnswerToResetApiId,
       
   275 		       	getAnswerToResetInterface);
       
   276 		iLtsyDispatchSimGetAnswerToReset =
       
   277 				static_cast<MLtsyDispatchSimGetAnswerToReset*>(getAnswerToResetInterface);
       
   278         __ASSERT_DEBUG(iLtsyDispatchSimGetAnswerToReset, CtsyDispatcherPanic(EInvalidNullPtr));
       
   279   		}
       
   280 	
       
   281 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetSimCardReaderStatus::KLtsyDispatchSimGetSimCardReaderStatusApiId))
       
   282 		{
       
   283 		TAny* getSimCardReaderStatusInterface = NULL;
       
   284 		iLtsyFactoryV1.GetDispatchHandler(
       
   285 				MLtsyDispatchSimGetSimCardReaderStatus::KLtsyDispatchSimGetSimCardReaderStatusApiId,
       
   286 		       	getSimCardReaderStatusInterface);
       
   287 		iLtsyDispatchSimGetSimCardReaderStatus =
       
   288 				static_cast<MLtsyDispatchSimGetSimCardReaderStatus*>(getSimCardReaderStatusInterface);
       
   289         __ASSERT_DEBUG(iLtsyDispatchSimGetSimCardReaderStatus, CtsyDispatcherPanic(EInvalidNullPtr));
       
   290   		}
       
   291 	
       
   292 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetSimAuthenticationEapSimData::KLtsyDispatchSimGetSimAuthenticationEapSimDataApiId))
       
   293 		{
       
   294 		TAny* getSimAuthenticationEapSimDataInterface = NULL;
       
   295 		iLtsyFactoryV1.GetDispatchHandler(
       
   296 				MLtsyDispatchSimGetSimAuthenticationEapSimData::KLtsyDispatchSimGetSimAuthenticationEapSimDataApiId,
       
   297 				getSimAuthenticationEapSimDataInterface);
       
   298 		iLtsyDispatchSimGetSimAuthenticationEapSimData =
       
   299 				static_cast<MLtsyDispatchSimGetSimAuthenticationEapSimData*>(getSimAuthenticationEapSimDataInterface);
       
   300         __ASSERT_DEBUG(iLtsyDispatchSimGetSimAuthenticationEapSimData, CtsyDispatcherPanic(EInvalidNullPtr));
       
   301   		}
       
   302 	
       
   303 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimGetSimAuthenticationEapAkaData::KLtsyDispatchSimGetSimAuthenticationEapAkaDataApiId))
       
   304 		{
       
   305 		TAny* getSimAuthenticationEapAkaDataInterface = NULL;
       
   306 		iLtsyFactoryV1.GetDispatchHandler(
       
   307 				MLtsyDispatchSimGetSimAuthenticationEapAkaData::KLtsyDispatchSimGetSimAuthenticationEapAkaDataApiId,
       
   308 		       	getSimAuthenticationEapAkaDataInterface);
       
   309 		iLtsyDispatchSimGetSimAuthenticationEapAkaData =
       
   310 				static_cast<MLtsyDispatchSimGetSimAuthenticationEapAkaData*>(getSimAuthenticationEapAkaDataInterface);
       
   311         __ASSERT_DEBUG(iLtsyDispatchSimGetSimAuthenticationEapAkaData, CtsyDispatcherPanic(EInvalidNullPtr));
       
   312   		}
       
   313 	
       
   314 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimPowerSimOff::KLtsyDispatchSimPowerSimOffApiId))
       
   315 		{
       
   316 		TAny* powerSimOffInterface = NULL;
       
   317 		iLtsyFactoryV1.GetDispatchHandler(
       
   318 				MLtsyDispatchSimPowerSimOff::KLtsyDispatchSimPowerSimOffApiId,
       
   319 		       	powerSimOffInterface);
       
   320 		iLtsyDispatchSimPowerSimOff =
       
   321 				static_cast<MLtsyDispatchSimPowerSimOff*>(powerSimOffInterface);
       
   322         __ASSERT_DEBUG(iLtsyDispatchSimPowerSimOff, CtsyDispatcherPanic(EInvalidNullPtr));
       
   323   		}
       
   324 	
       
   325 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimPowerSimOn::KLtsyDispatchSimPowerSimOnApiId))
       
   326 		{
       
   327 		TAny* powerSimOnInterface = NULL;
       
   328 		iLtsyFactoryV1.GetDispatchHandler(
       
   329 				MLtsyDispatchSimPowerSimOn::KLtsyDispatchSimPowerSimOnApiId,
       
   330 		       	powerSimOnInterface);
       
   331 		iLtsyDispatchSimPowerSimOn =
       
   332 				static_cast<MLtsyDispatchSimPowerSimOn*>(powerSimOnInterface);
       
   333         __ASSERT_DEBUG(iLtsyDispatchSimPowerSimOn, CtsyDispatcherPanic(EInvalidNullPtr));
       
   334   		}
       
   335 	
       
   336 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimReadSimFile::KLtsyDispatchSimReadSimFileApiId))
       
   337 		{
       
   338 		TAny* readSimFileInterface = NULL;
       
   339 		iLtsyFactoryV1.GetDispatchHandler(
       
   340 				MLtsyDispatchSimReadSimFile::KLtsyDispatchSimReadSimFileApiId,
       
   341 		       	readSimFileInterface);
       
   342 		iLtsyDispatchSimReadSimFile =
       
   343 				static_cast<MLtsyDispatchSimReadSimFile*>(readSimFileInterface);
       
   344         __ASSERT_DEBUG(iLtsyDispatchSimReadSimFile, CtsyDispatcherPanic(EInvalidNullPtr));
       
   345   		}
       
   346 	
       
   347 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSendApduRequest::KLtsyDispatchSimSendApduRequestApiId))
       
   348 		{
       
   349 		TAny* sendApduRequestInterface = NULL;
       
   350 		iLtsyFactoryV1.GetDispatchHandler(
       
   351 				MLtsyDispatchSimSendApduRequest::KLtsyDispatchSimSendApduRequestApiId,
       
   352 				sendApduRequestInterface);
       
   353 		iLtsyDispatchSimSendApduRequest =
       
   354 				static_cast<MLtsyDispatchSimSendApduRequest*>(sendApduRequestInterface);
       
   355         __ASSERT_DEBUG(iLtsyDispatchSimSendApduRequest, CtsyDispatcherPanic(EInvalidNullPtr));
       
   356   		}
       
   357 	
       
   358 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSendApduRequestV2::KLtsyDispatchSimSendApduRequestV2ApiId))
       
   359 		{
       
   360 		TAny* sendApduRequestV2Interface = NULL;
       
   361 		iLtsyFactoryV1.GetDispatchHandler(
       
   362 				MLtsyDispatchSimSendApduRequestV2::KLtsyDispatchSimSendApduRequestV2ApiId,
       
   363 				sendApduRequestV2Interface);
       
   364 		iLtsyDispatchSimSendApduRequestV2 =
       
   365 				static_cast<MLtsyDispatchSimSendApduRequestV2*>(sendApduRequestV2Interface);
       
   366         __ASSERT_DEBUG(iLtsyDispatchSimSendApduRequestV2, CtsyDispatcherPanic(EInvalidNullPtr));
       
   367   		}
       
   368 	
       
   369 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSimWarmReset::KLtsyDispatchSimSimWarmResetApiId))
       
   370 		{
       
   371 		TAny* simWarmResetInterface = NULL;
       
   372 		iLtsyFactoryV1.GetDispatchHandler(
       
   373 				MLtsyDispatchSimSimWarmReset::KLtsyDispatchSimSimWarmResetApiId,
       
   374 		       	simWarmResetInterface);
       
   375 		iLtsyDispatchSimSimWarmReset =
       
   376 				static_cast<MLtsyDispatchSimSimWarmReset*>(simWarmResetInterface);
       
   377         __ASSERT_DEBUG(iLtsyDispatchSimSimWarmReset, CtsyDispatcherPanic(EInvalidNullPtr));
       
   378   		}
       
   379 	
       
   380 	if(iLtsyFactoryV1.IsDispatchInterfaceSupported(KDispatchSimFuncUnitId, MLtsyDispatchSimSetSimMessageStatusRead::KLtsyDispatchSimSetSimMessageStatusReadApiId))
       
   381 		{
       
   382 		TAny* setSimMessageStatusReadInterface = NULL;
       
   383 		iLtsyFactoryV1.GetDispatchHandler(
       
   384 				MLtsyDispatchSimSetSimMessageStatusRead::KLtsyDispatchSimSetSimMessageStatusReadApiId,
       
   385 		       	setSimMessageStatusReadInterface);
       
   386 		iLtsyDispatchSimSetSimMessageStatusRead =
       
   387 				static_cast<MLtsyDispatchSimSetSimMessageStatusRead*>(setSimMessageStatusReadInterface);
       
   388         __ASSERT_DEBUG(iLtsyDispatchSimSetSimMessageStatusRead, CtsyDispatcherPanic(EInvalidNullPtr));
       
   389   		}
       
   390 	
       
   391 	} // CSimDispatcher::ConstructL
       
   392 
       
   393 void CSimDispatcher::SetDispatcherHolder(TDispatcherHolder& aDispatcherHolder)
       
   394 /**
       
   395  * Set the dispatcher holder.  
       
   396  * 
       
   397  * @param aDispatcherHolder Reference to dispatcher holder.
       
   398  */
       
   399 	{
       
   400 	TSYLOGENTRYEXIT;
       
   401 	
       
   402 	iDispatcherHolder = &aDispatcherHolder;
       
   403 	} // CSimDispatcher::SetDispatcherHolder
       
   404 
       
   405 TInt CSimDispatcher::DispatchGetApnControlListServiceStatusL()
       
   406 /**
       
   407  * Unpack data related to EMobilePhoneGetAPNControlListServiceStatus
       
   408  * and pass request on to Licensee LTSY.
       
   409  *
       
   410  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   411  * the Licensee LTSY does not support this request.
       
   412  */
       
   413 	{
       
   414 	TSYLOGENTRYEXIT;
       
   415 	TInt ret = KErrNotSupported;
       
   416 
       
   417 	// Call Handle... method in Licensee LTSY
       
   418 	if (iLtsyDispatchSimGetApnControlListServiceStatus)
       
   419 		{
       
   420 		ret = iLtsyDispatchSimGetApnControlListServiceStatus->HandleGetApnControlListServiceStatusReqL();
       
   421 		}
       
   422 
       
   423 	return TSYLOGSETEXITERR(ret);
       
   424 	} // CSimDispatcher::DispatchGetApnControlListServiceStatusL
       
   425 
       
   426 TInt CSimDispatcher::DispatchDeleteApnNameL(const CMmDataPackage* aDataPackage)
       
   427 /**
       
   428  * Unpack data related to EMobilePhoneDeleteAPNName
       
   429  * and pass request on to Licensee LTSY.
       
   430  *
       
   431  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   432  * the Licensee LTSY does not support this request.
       
   433  */
       
   434 	{
       
   435 	TSYLOGENTRYEXIT;
       
   436 	TInt ret = KErrNotSupported;
       
   437 	
       
   438 	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
       
   439 
       
   440 	// Call HandleDeleteApnNameReqL method in Licensee LTSY
       
   441 	if (iLtsyDispatchSimDeleteApnName)
       
   442 		{
       
   443 		TUint32 index;
       
   444 		aDataPackage->UnPackData(index);
       
   445 		ret = iLtsyDispatchSimDeleteApnName->HandleDeleteApnNameReqL(index);
       
   446 		}
       
   447 	return TSYLOGSETEXITERR(ret);
       
   448 	} // CSimDispatcher::DispatchDeleteApnNameL
       
   449 
       
   450 TInt CSimDispatcher::DispatchEnumerateApnEntriesL()
       
   451 /**
       
   452  * Unpack data related to EMobilePhoneEnumerateAPNEntries
       
   453  * and pass request on to Licensee LTSY.
       
   454  *
       
   455  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   456  * the Licensee LTSY does not support this request.
       
   457  */
       
   458 	{
       
   459 	TSYLOGENTRYEXIT;
       
   460 	TInt ret = KErrNotSupported;
       
   461 
       
   462 	// Call Handle... method in Licensee LTSY
       
   463 	if (iLtsyDispatchSimEnumerateApnEntries)
       
   464 		{
       
   465 		ret = iLtsyDispatchSimEnumerateApnEntries->HandleEnumerateApnEntriesReqL();
       
   466 		}
       
   467 
       
   468 	return TSYLOGSETEXITERR(ret);
       
   469 	} // CSimDispatcher::DispatchEnumerateApnEntriesL
       
   470 
       
   471 TInt CSimDispatcher::DispatchChangeSecurityCodeL(const CMmDataPackage* aDataPackage)
       
   472 /**
       
   473  * Unpack data related to EMobilePhoneChangeSecurityCode
       
   474  * and pass request on to Licensee LTSY.
       
   475  *
       
   476  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   477  * the Licensee LTSY does not support this request.
       
   478  */
       
   479 	{
       
   480 	TSYLOGENTRYEXIT;
       
   481 	TInt ret = KErrNotSupported;
       
   482 	
       
   483 	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
       
   484 
       
   485 	// Call Handle... method in Licensee LTSY
       
   486 	if(iLtsyDispatchSimChangeSecurityCode)
       
   487 		{
       
   488 		RMobilePhone::TMobilePhoneSecurityCode* secCode = NULL;
       
   489 		RMobilePhone::TMobilePhonePasswordChangeV1* passwds = NULL;
       
   490 		aDataPackage->UnPackData(&secCode, &passwds);
       
   491 		
       
   492 		__ASSERT_DEBUG(secCode, CtsyDispatcherPanic(EInvalidNullPtr));
       
   493 		__ASSERT_DEBUG(passwds, CtsyDispatcherPanic(EInvalidNullPtr));			
       
   494 		
       
   495 		ret = iLtsyDispatchSimChangeSecurityCode->HandleChangeSecurityCodeReqL(*secCode, *passwds);
       
   496 		}
       
   497 	
       
   498 	return TSYLOGSETEXITERR(ret);
       
   499 	} // CSimDispatcher::DispatchChangeSecurityCodeL
       
   500 
       
   501 TInt CSimDispatcher::DispatchSetFdnSettingL(const CMmDataPackage* aDataPackage)
       
   502 /**
       
   503  * Unpack data related to EMobilePhoneSetFdnSetting
       
   504  * and pass request on to Licensee LTSY.
       
   505  *
       
   506  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   507  * the Licensee LTSY does not support this request.
       
   508  */
       
   509 	{
       
   510 	TSYLOGENTRYEXIT;
       
   511 	TInt ret = KErrNotSupported;
       
   512 	
       
   513 	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
       
   514 
       
   515 	// Call Handle... method in Licensee LTSY
       
   516 	if (iLtsyDispatchSimSetFdnSetting)
       
   517 		{
       
   518 		RMobilePhone::TMobilePhoneFdnSetting fdnSetting;
       
   519 		aDataPackage->UnPackData(fdnSetting);
       
   520 		ret = iLtsyDispatchSimSetFdnSetting->HandleSetFdnSettingReqL(fdnSetting);
       
   521 		}
       
   522 
       
   523 	return TSYLOGSETEXITERR(ret);
       
   524 	} // CSimDispatcher::DispatchSetFdnSettingL
       
   525 
       
   526 TInt CSimDispatcher::DispatchGetCustomerServiceProfileL()
       
   527 /**
       
   528  * Unpack data related to EMobilePhoneGetCustomerServiceProfile
       
   529  * and pass request on to Licensee LTSY.
       
   530  *
       
   531  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   532  * the Licensee LTSY does not support this request.
       
   533  */
       
   534 	{
       
   535 	TSYLOGENTRYEXIT;
       
   536 	TInt ret = KErrNotSupported;
       
   537 
       
   538 	// Call Handle... method in Licensee LTSY
       
   539 	if (iLtsyDispatchSimGetCustomerServiceProfile)
       
   540 		{
       
   541 		ret = iLtsyDispatchSimGetCustomerServiceProfile->HandleGetCustomerServiceProfileReqL();
       
   542 		}
       
   543 
       
   544 	return TSYLOGSETEXITERR(ret);
       
   545 	} // CSimDispatcher::DispatchGetCustomerServiceProfileL
       
   546 
       
   547 TInt CSimDispatcher::DispatchGetSubscriberIdL()
       
   548 /**
       
   549  * Unpack data related to EMobilePhoneGetSubscriberId
       
   550  * and pass request on to Licensee LTSY.
       
   551  *
       
   552  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   553  * the Licensee LTSY does not support this request.
       
   554  */
       
   555 	{
       
   556 	TSYLOGENTRYEXIT;
       
   557 	TInt ret = KErrNotSupported;
       
   558 
       
   559 	// Call Handle... method in Licensee LTSY
       
   560 	if (iLtsyDispatchSimGetSubscriberId)
       
   561 		{
       
   562 		ret = iLtsyDispatchSimGetSubscriberId->HandleGetSubscriberIdReqL();
       
   563 		}
       
   564 
       
   565 	return TSYLOGSETEXITERR(ret);
       
   566 	} // CSimDispatcher::DispatchGetSubscriberIdL
       
   567 
       
   568 TInt CSimDispatcher::DispatchAppendApnNameL(const CMmDataPackage* aDataPackage)
       
   569 /**
       
   570  * Unpack data related to EMobilePhoneAppendAPNName
       
   571  * and pass request on to Licensee LTSY.
       
   572  *
       
   573  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   574  * the Licensee LTSY does not support this request.
       
   575  */
       
   576 	{
       
   577 	TSYLOGENTRYEXIT;
       
   578 	TInt ret = KErrNotSupported;
       
   579 	
       
   580 	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
       
   581 
       
   582 	// Call HandleAppendApnNameReqL method in Licensee LTSY
       
   583 	if (iLtsyDispatchSimAppendApnName)
       
   584 		{
       
   585 		RMobilePhone::TAPNEntryV3* entry = NULL;
       
   586 		aDataPackage->UnPackData(&entry);
       
   587 
       
   588 		__ASSERT_DEBUG(entry, CtsyDispatcherPanic(EInvalidNullPtr));
       
   589 		
       
   590 		ret = iLtsyDispatchSimAppendApnName->HandleAppendApnNameReqL(*entry);
       
   591 		}
       
   592 	return TSYLOGSETEXITERR(ret);
       
   593 	} // CSimDispatcher::DispatchAppendApnNameL
       
   594 
       
   595 TInt CSimDispatcher::DispatchGetIccTypeL()
       
   596 /**
       
   597  * Unpack data related to EMmTsySimGetICCType
       
   598  * and pass request on to Licensee LTSY.
       
   599  *
       
   600  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   601  * the Licensee LTSY does not support this request.
       
   602  */
       
   603 	{
       
   604 	TSYLOGENTRYEXIT;
       
   605 	TInt ret = KErrNotSupported;
       
   606 
       
   607 	// Call Handle... method in Licensee LTSY
       
   608 	if (iLtsyDispatchSimGetIccType)
       
   609 		{
       
   610 		ret = iLtsyDispatchSimGetIccType->HandleGetActiveIccApplicationTypeReqL();
       
   611 		}
       
   612 
       
   613 	return TSYLOGSETEXITERR(ret);
       
   614 	} // CSimDispatcher::DispatchGetIccTypeL
       
   615 
       
   616 TInt CSimDispatcher::DispatchSetIccMessageWaitingIndicatorsL(const CMmDataPackage* aDataPackage)
       
   617 /**
       
   618  * Unpack data related to EMobilePhoneSetIccMessageWaitingIndicators
       
   619  * and pass request on to Licensee LTSY.
       
   620  *
       
   621  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   622  * the Licensee LTSY does not support this request.
       
   623  */
       
   624 	{
       
   625 	TSYLOGENTRYEXIT;
       
   626 	TInt ret = KErrNotSupported;
       
   627 	
       
   628 	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
       
   629 
       
   630 	// Call HandleSetIccMessageWaitingIndicatorsReqL method in Licensee LTSY
       
   631 	if (iLtsyDispatchSimSetIccMessageWaitingIndicators)
       
   632 		{
       
   633 		RMobilePhone::TMobilePhoneMessageWaitingV1* indicators = NULL;
       
   634 		aDataPackage->UnPackData(&indicators);
       
   635 
       
   636 		__ASSERT_DEBUG(indicators, CtsyDispatcherPanic(EInvalidNullPtr));
       
   637 		
       
   638 		ret = iLtsyDispatchSimSetIccMessageWaitingIndicators->HandleSetIccMessageWaitingIndicatorsReqL(*indicators);
       
   639 		}
       
   640 
       
   641 	return TSYLOGSETEXITERR(ret);
       
   642 	} // CSimDispatcher::DispatchSetIccMessageWaitingIndicatorsL
       
   643 
       
   644 TInt CSimDispatcher::DispatchSetApnControlListServiceStatusL(const CMmDataPackage* aDataPackage)
       
   645 /**
       
   646  * Unpack data related to EMobilePhoneSetAPNControlListServiceStatus
       
   647  * and pass request on to Licensee LTSY.
       
   648  *
       
   649  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   650  * the Licensee LTSY does not support this request.
       
   651  */
       
   652 	{
       
   653 	TSYLOGENTRYEXIT;
       
   654 	TInt ret = KErrNotSupported;
       
   655 
       
   656 	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
       
   657 
       
   658 	// Call HandleSetApnControlListServiceStatusReqL method in Licensee LTSY
       
   659 	if (iLtsyDispatchSimSetApnControlListServiceStatus)
       
   660 		{
       
   661 		RMobilePhone::TAPNControlListServiceStatus status;
       
   662 		aDataPackage->UnPackData(status); 
       
   663 		ret = iLtsyDispatchSimSetApnControlListServiceStatus->HandleSetApnControlListServiceStatusReqL(status);
       
   664 		}
       
   665 
       
   666 	return TSYLOGSETEXITERR(ret);
       
   667 	} // CSimDispatcher::DispatchSetApnControlListServiceStatusL
       
   668 
       
   669 TInt CSimDispatcher::DispatchGetApnNameL(const CMmDataPackage* aDataPackage)
       
   670 /**
       
   671  * Unpack data related to EMobilePhoneGetAPNname
       
   672  * and pass request on to Licensee LTSY.
       
   673  *
       
   674  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   675  * the Licensee LTSY does not support this request.
       
   676  */
       
   677 	{
       
   678 	TSYLOGENTRYEXIT;
       
   679 	TInt ret = KErrNotSupported;
       
   680 	
       
   681 	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
       
   682 
       
   683 	// Call HandleGetApnNameReqL method in Licensee LTSY
       
   684 	if (iLtsyDispatchSimGetApnName)
       
   685 		{
       
   686 		TUint32 index;
       
   687 		aDataPackage->UnPackData(index);
       
   688 		ret = iLtsyDispatchSimGetApnName->HandleGetApnNameReqL(index);
       
   689 		}
       
   690 	
       
   691 	return TSYLOGSETEXITERR(ret);
       
   692 	} // CSimDispatcher::DispatchGetApnNameL
       
   693 
       
   694 TInt CSimDispatcher::DispatchSimRefreshDoneL(const CMmDataPackage* aDataPackage)
       
   695 /**
       
   696  * Unpack data related to EMmTsySimRefreshDoneIPC
       
   697  * and pass request on to Licensee LTSY.
       
   698  *
       
   699  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   700  * the Licensee LTSY does not support this request.
       
   701  */
       
   702 	{
       
   703 	TSYLOGENTRYEXIT;
       
   704 	TInt ret = KErrNotSupported;
       
   705 
       
   706 	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
       
   707 
       
   708 	// Call Handle... method in Licensee LTSY
       
   709 	if (iLtsyDispatchSimSimRefreshDone)
       
   710 		{
       
   711 		//packed as a TBool in the CTSY really a TInt containing KErrXXX
       
   712 		TBool error;
       
   713 		aDataPackage->UnPackData(error);
       
   714 			
       
   715 		ret = iLtsyDispatchSimSimRefreshDone->HandleSimRefreshDoneReqL(static_cast<TInt>(error));
       
   716 		}
       
   717 
       
   718 	return TSYLOGSETEXITERR(ret);
       
   719 	} // CSimDispatcher::DispatchSimRefreshDoneL
       
   720 
       
   721 TInt CSimDispatcher::DispatchGetServiceTableL(const CMmDataPackage* aDataPackage)
       
   722 /**
       
   723  * Unpack data related to RMobilePhone::GetServiceTable
       
   724  * and pass request on to Licensee LTSY.
       
   725  * 
       
   726  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   727  * the Licensee LTSY does not support this request.
       
   728  */
       
   729 	{
       
   730 	TSYLOGENTRYEXIT;
       
   731 	TInt ret = KErrNotSupported;
       
   732 	
       
   733 	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
       
   734 	
       
   735 	// Call Handle... method in Licensee LTSY
       
   736 	if (iLtsyDispatchSimGetServiceTable)
       
   737 		{		
       
   738 		RMobilePhone::TMobilePhoneServiceTable serviceTable; 
       
   739 		aDataPackage->UnPackData(serviceTable);  		
       
   740 		ret = iLtsyDispatchSimGetServiceTable->HandleGetServiceTableReqL(serviceTable);
       
   741 		}
       
   742 	
       
   743 	return TSYLOGSETEXITERR(ret);	
       
   744 	} // CSimDispatcher::DispatchGetServiceTableL
       
   745 	
       
   746 TInt CSimDispatcher::DispatchGetIccMessageWaitingIndicatorsL()
       
   747 /**
       
   748  * Unpack data related to EMobilePhoneGetIccMessageWaitingIndicators
       
   749  * and pass request on to Licensee LTSY.
       
   750  * 
       
   751  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   752  * the Licensee LTSY does not support this request.
       
   753  */
       
   754 	{
       
   755 	TSYLOGENTRYEXIT;
       
   756 	TInt ret = KErrNotSupported;
       
   757 
       
   758 	// Call Handle... method in Licensee LTSY
       
   759 	if (iLtsyDispatchSimGetIccMessageWaitingIndicators)
       
   760 		{
       
   761 		ret = iLtsyDispatchSimGetIccMessageWaitingIndicators->HandleGetIccMessageWaitingIndicatorsReqL();
       
   762 		}
       
   763 		
       
   764 	return TSYLOGSETEXITERR(ret);	
       
   765 	} // CSimDispatcher::DispatchGetIccMessageWaitingIndicatorsL
       
   766 	
       
   767 TInt CSimDispatcher::DispatchSimLockActivateL(const CMmDataPackage* aDataPackage)
       
   768 /**
       
   769  * Unpack data related to ECustomSimLockActivateIPC
       
   770  * and pass request on to Licensee LTSY.
       
   771  *
       
   772  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   773  * the Licensee LTSY does not support this request.
       
   774  */
       
   775 	{
       
   776 	TSYLOGENTRYEXIT;
       
   777 	TInt ret = KErrNotSupported;
       
   778 
       
   779 	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
       
   780 
       
   781 	// Can Handle... method in Licensee LTSY
       
   782 	if (iLtsyDispatchSimSimLockActivate)
       
   783 		{		
       
   784 		RMmCustomAPI::TSimLockPassword* password = NULL; 
       
   785 		RMmCustomAPI::TLockNumber* lockNumber = NULL;
       
   786 		aDataPackage->UnPackData(&password, &lockNumber);
       
   787 		__ASSERT_DEBUG(password, CtsyDispatcherPanic(EInvalidNullPtr));
       
   788 		__ASSERT_DEBUG(lockNumber, CtsyDispatcherPanic(EInvalidNullPtr));
       
   789 
       
   790 		ret = iLtsyDispatchSimSimLockActivate->HandleSimLockActivateReqL(*password, *lockNumber);
       
   791 		}
       
   792 
       
   793 	return TSYLOGSETEXITERR(ret);
       
   794 	} // CSimDispatcher::DispatchSimLockActivateL
       
   795 
       
   796 TInt CSimDispatcher::DispatchSimLockDeActivateL(const CMmDataPackage* aDataPackage)
       
   797 /**
       
   798  * Unpack data related to ECustomSimLockDeActivateIPC
       
   799  * and pass request on to Licensee LTSY.
       
   800  *
       
   801  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   802  * the Licensee LTSY does not support this request.
       
   803  */
       
   804 	{
       
   805 	TSYLOGENTRYEXIT;
       
   806 	TInt ret = KErrNotSupported;
       
   807 	
       
   808 	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
       
   809 
       
   810 	// Can Handle... method in Licensee LTSY
       
   811 	if (iLtsyDispatchSimSimLockDeActivate)
       
   812 		{
       
   813 		RMmCustomAPI::TSimLockPassword* password = NULL; 
       
   814 		RMmCustomAPI::TLockNumber* lockNumber = NULL;
       
   815 		aDataPackage->UnPackData(&password, &lockNumber);
       
   816 		__ASSERT_DEBUG(password, CtsyDispatcherPanic(EInvalidNullPtr));
       
   817 		__ASSERT_DEBUG(lockNumber, CtsyDispatcherPanic(EInvalidNullPtr));
       
   818 
       
   819 		ret = iLtsyDispatchSimSimLockDeActivate->HandleSimLockDeActivateReqL(*password, *lockNumber);
       
   820 		}
       
   821 
       
   822 	return TSYLOGSETEXITERR(ret);
       
   823 	} // CSimDispatcher::DispatchSimLockDeActivateL
       
   824 
       
   825 TInt CSimDispatcher::DispatchGetAnswerToResetL(const CMmDataPackage* aDataPackage)
       
   826 /**
       
   827  * Unpack data related to ECustomGetATRIPC
       
   828  * and pass request on to Licensee LTSY.
       
   829  *
       
   830  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   831  * the Licensee LTSY does not support this request.
       
   832  */
       
   833 	{
       
   834 	TSYLOGENTRYEXIT;
       
   835 	TInt ret = KErrNotSupported;
       
   836 	
       
   837 	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
       
   838 	
       
   839 	if (iLtsyDispatchSimGetAnswerToReset)
       
   840 		{
       
   841 		TDes8* answerToReset = NULL;
       
   842 		aDataPackage->UnPackData(answerToReset);
       
   843 		__ASSERT_DEBUG(answerToReset, CtsyDispatcherPanic(EInvalidNullPtr));
       
   844 		
       
   845 		ret = iLtsyDispatchSimGetAnswerToReset->HandleGetAnswerToResetReqL(*answerToReset);
       
   846 		}
       
   847 
       
   848 	return TSYLOGSETEXITERR(ret);
       
   849 	} // CSimDispatcher::DispatchGetAnswerToResetL
       
   850 
       
   851 TInt CSimDispatcher::DispatchGetSimCardReaderStatusL()
       
   852 /**
       
   853  * Pass request on to Licensee LTSY.
       
   854  *
       
   855  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   856  * the Licensee LTSY does not support this request.
       
   857  */
       
   858 	{
       
   859 	TSYLOGENTRYEXIT;
       
   860 	TInt ret = KErrNotSupported;
       
   861 	
       
   862 	if (iLtsyDispatchSimGetSimCardReaderStatus)
       
   863 		{
       
   864 		ret = iLtsyDispatchSimGetSimCardReaderStatus->HandleGetSimCardReaderStatusReqL();
       
   865 		}
       
   866 
       
   867 	return TSYLOGSETEXITERR(ret);
       
   868 	} // CSimDispatcher::DispatchGetSimCardReaderStatusL
       
   869 
       
   870 TInt CSimDispatcher::DispatchGetSimAuthenticationDataL(const CMmDataPackage* aDataPackage)
       
   871 /**
       
   872  * Unpack data related to ECustomGetSimAuthenticationDataIPC
       
   873  * and pass request on to Licensee LTSY.
       
   874  *
       
   875  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   876  * the Licensee LTSY does not support this request.
       
   877  */
       
   878 	{
       
   879 	TSYLOGENTRYEXIT;
       
   880 	TInt ret = KErrNotSupported;
       
   881 	
       
   882 	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
       
   883 
       
   884 	RMmCustomAPI::TSimAuthenticationBase* basePtr = NULL;
       
   885 	TInt* rfStateInfo = 0;
       
   886 	aDataPackage->UnPackData(&basePtr, &rfStateInfo);
       
   887 	__ASSERT_DEBUG(basePtr, CtsyDispatcherPanic(EInvalidNullPtr));
       
   888 	
       
   889 	if(basePtr->ExtensionId() == RMmCustomAPI::TSimAuthenticationBase::EEapSim)
       
   890 		{
       
   891 		RMmCustomAPI::TSimAuthenticationEapSim* eapSim = static_cast<RMmCustomAPI::TSimAuthenticationEapSim*> (basePtr);
       
   892 		
       
   893 		if (iLtsyDispatchSimGetSimAuthenticationEapSimData)
       
   894 			{
       
   895 			ret = iLtsyDispatchSimGetSimAuthenticationEapSimData->HandleGetSimAuthenticationEapSimDataReqL(eapSim->iRandomParameters,
       
   896 																										   *rfStateInfo);
       
   897 			}
       
   898 		}
       
   899 	else
       
   900 	if(basePtr->ExtensionId() == RMmCustomAPI::TSimAuthenticationBase::EEapAka)
       
   901 		{	
       
   902 		RMmCustomAPI::TSimAuthenticationEapAka* eapAka = static_cast<RMmCustomAPI::TSimAuthenticationEapAka*>(basePtr);
       
   903 		
       
   904 		if (iLtsyDispatchSimGetSimAuthenticationEapAkaData)
       
   905 			{
       
   906 			ret = iLtsyDispatchSimGetSimAuthenticationEapAkaData->HandleGetSimAuthenticationEapAkaDataReqL(eapAka->iRandomParameters, 
       
   907 																										   eapAka->iAUTN,
       
   908 																										   *rfStateInfo);
       
   909 			}
       
   910 		}
       
   911 	
       
   912 	return TSYLOGSETEXITERR(ret);
       
   913 	} // CSimDispatcher::DispatchGetSimAuthenticationDataL
       
   914 
       
   915 TInt CSimDispatcher::DispatchPowerSimOffL()
       
   916 /**
       
   917  * Pass ECustomPowerSimOffIPC request on to Licensee LTSY.
       
   918  *
       
   919  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   920  * the Licensee LTSY does not support this request.
       
   921  */
       
   922 	{
       
   923 	TSYLOGENTRYEXIT;
       
   924 	TInt ret = KErrNotSupported;
       
   925 	
       
   926 	// Can Handle... method in Licensee LTSY
       
   927 	if (iLtsyDispatchSimPowerSimOff)
       
   928 		{
       
   929 		ret = iLtsyDispatchSimPowerSimOff->HandlePowerSimOffReqL();
       
   930 		}
       
   931 
       
   932 	return TSYLOGSETEXITERR(ret);
       
   933 	} // CSimDispatcher::DispatchPowerSimOffL
       
   934 
       
   935 TInt CSimDispatcher::DispatchPowerSimOnL()
       
   936 /**
       
   937  * Pass ECustomPowerSimOnIPC request on to Licensee LTSY.
       
   938  *
       
   939  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   940  * the Licensee LTSY does not support this request.
       
   941  */
       
   942 	{
       
   943 	TSYLOGENTRYEXIT;
       
   944 	TInt ret = KErrNotSupported;
       
   945 
       
   946 	// Can Handle... method in Licensee LTSY
       
   947 	if (iLtsyDispatchSimPowerSimOn)
       
   948 		{
       
   949 		ret = iLtsyDispatchSimPowerSimOn->HandlePowerSimOnReqL();
       
   950 		}
       
   951 
       
   952 	return TSYLOGSETEXITERR(ret);
       
   953 	} // CSimDispatcher::DispatchPowerSimOnL
       
   954 
       
   955 TInt CSimDispatcher::DispatchReadSimFileL(const CMmDataPackage* aDataPackage)
       
   956 /**
       
   957  * Unpack data related to ECustomReadSimFileIPC
       
   958  * and pass request on to Licensee LTSY.
       
   959  *
       
   960  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   961  * the Licensee LTSY does not support this request.
       
   962  */
       
   963 	{
       
   964 	TSYLOGENTRYEXIT;
       
   965 	TInt ret = KErrNotSupported;
       
   966 	
       
   967 	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
       
   968 
       
   969 	// Can Handle... method in Licensee LTSY
       
   970 	if (iLtsyDispatchSimReadSimFile)
       
   971 		{
       
   972 		
       
   973 		RMmCustomAPI::TSimFileInfo* simFileInfo = NULL;
       
   974 		aDataPackage->UnPackData(&simFileInfo);
       
   975 		__ASSERT_DEBUG(simFileInfo, CtsyDispatcherPanic(EInvalidNullPtr));
       
   976 
       
   977 		ret = iLtsyDispatchSimReadSimFile->HandleReadSimFileReqL(simFileInfo->iPath,simFileInfo->iOffSet,simFileInfo->iSize);
       
   978 		}
       
   979 
       
   980 	return TSYLOGSETEXITERR(ret);
       
   981 	} // CSimDispatcher::DispatchReadSimFileL
       
   982 
       
   983 TInt CSimDispatcher::DispatchSendApduRequestL(const CMmDataPackage* aDataPackage)
       
   984 /**
       
   985  * Unpack data related to ECustomSendAPDUReqIPC
       
   986  * and pass request on to Licensee LTSY.
       
   987  *
       
   988  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
   989  * the Licensee LTSY does not support this request.
       
   990  */
       
   991 	{
       
   992 	TSYLOGENTRYEXIT;
       
   993 	TInt ret = KErrNotSupported;
       
   994 	
       
   995 	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
       
   996 
       
   997 	// Can Handle... method in Licensee LTSY
       
   998 	if (iLtsyDispatchSimSendApduRequest)
       
   999 		{
       
  1000 		RMmCustomAPI::TApdu* apduReq = NULL;
       
  1001 		aDataPackage->UnPackData(&apduReq);
       
  1002 
       
  1003 		__ASSERT_DEBUG(apduReq, CtsyDispatcherPanic(EInvalidNullPtr));
       
  1004 		//will cause a ETel panic 1 if either iInfo or iData is missing
       
  1005 		__ASSERT_DEBUG(apduReq->iInfo, CtsyDispatcherPanic(EInvalidNullPtr));
       
  1006 		__ASSERT_DEBUG(apduReq->iData, CtsyDispatcherPanic(EInvalidNullPtr));
       
  1007 		__ASSERT_DEBUG(apduReq->iInfo->Length() >= KApduInfoLength, CtsyDispatcherPanic(EBadLength));
       
  1008 
       
  1009 		const TDesC8& info = *(apduReq->iInfo);
       
  1010 		
       
  1011 		ret = iLtsyDispatchSimSendApduRequest->HandleSimSendApduRequestReqL(info[0],info[1],info[2],*(apduReq->iData));
       
  1012 		}
       
  1013 
       
  1014 	return TSYLOGSETEXITERR(ret);
       
  1015 	} // CSimDispatcher::DispatchSendApduRequestL
       
  1016 
       
  1017 TInt CSimDispatcher::DispatchSendApduRequestV2L(const CMmDataPackage* aDataPackage)
       
  1018 /**
       
  1019  * Unpack data related to ECustomSendAPDUReqV2IPC
       
  1020  * and pass request on to Licensee LTSY.
       
  1021  *
       
  1022  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
  1023  * the Licensee LTSY does not support this request.
       
  1024  */
       
  1025 	{
       
  1026 	TSYLOGENTRYEXIT;
       
  1027 	TInt ret = KErrNotSupported;
       
  1028 	
       
  1029 	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
       
  1030 
       
  1031 	// Can Handle... method in Licensee LTSY
       
  1032 	if (iLtsyDispatchSimSendApduRequestV2)
       
  1033 		{
       
  1034 		
       
  1035 		RMmCustomAPI::TApduParameters* apduParameters = NULL;
       
  1036 		aDataPackage->UnPackData(apduParameters);
       
  1037 		__ASSERT_DEBUG(apduParameters, CtsyDispatcherPanic(EInvalidNullPtr));
       
  1038 		
       
  1039 		ret = iLtsyDispatchSimSendApduRequestV2->HandleSimSendApduRequestV2ReqL(apduParameters->iCardReaderId,apduParameters->iCmdData);
       
  1040 		}
       
  1041 
       
  1042 	return TSYLOGSETEXITERR(ret);
       
  1043 	} // CSimDispatcher::DispatchSendApduRequestV2L
       
  1044 
       
  1045 TInt CSimDispatcher::DispatchSimWarmResetL()
       
  1046 /**
       
  1047  * Pass ECustomSimWarmResetIPC request on to Licensee LTSY.
       
  1048  *
       
  1049  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
  1050  * the Licensee LTSY does not support this request.
       
  1051  */
       
  1052 	{
       
  1053 	TSYLOGENTRYEXIT;
       
  1054 	TInt ret = KErrNotSupported;
       
  1055 	
       
  1056 	// Can Handle... method in Licensee LTSY
       
  1057 	if (iLtsyDispatchSimSimWarmReset)
       
  1058 		{
       
  1059 		ret = iLtsyDispatchSimSimWarmReset->HandleSimWarmResetReqL();
       
  1060 		}
       
  1061 
       
  1062 	return TSYLOGSETEXITERR(ret);
       
  1063 	} // CSimDispatcher::DispatchSimWarmResetL
       
  1064 
       
  1065 TInt CSimDispatcher::DispatchSetSimMessageStatusReadL(const CMmDataPackage* aDataPackage)
       
  1066 /**
       
  1067  * Unpack data related to ECustomSetSimMessageStatusReadIPC
       
  1068  * and pass request on to Licensee LTSY.
       
  1069  *
       
  1070  * @return Returns error code returned by the Licensee LTSY or KErrNotSupported if
       
  1071  * the Licensee LTSY does not support this request.
       
  1072  */
       
  1073 	{
       
  1074 	TSYLOGENTRYEXIT;
       
  1075 	TInt ret = KErrNotSupported;
       
  1076 	
       
  1077 	__ASSERT_DEBUG(aDataPackage, CtsyDispatcherPanic(EInvalidNullPtr));
       
  1078 
       
  1079 	// Unpack data for this request here if required.
       
  1080 	TTime* timestamp = NULL;
       
  1081 	TInt* timezone = NULL;
       
  1082 	aDataPackage->UnPackData(&timestamp, &timezone);
       
  1083 
       
  1084 	if (!timestamp || !timezone)
       
  1085 		{
       
  1086 		ret = KErrCorrupt;
       
  1087 		}
       
  1088 	// Can Handle... method in Licensee LTSY
       
  1089 	else if (iLtsyDispatchSimSetSimMessageStatusRead) 
       
  1090 		{
       
  1091 		ret = iLtsyDispatchSimSetSimMessageStatusRead->HandleSetSimMessageStatusReadReqL(*timestamp,*timezone);
       
  1092 		}
       
  1093 
       
  1094 	return TSYLOGSETEXITERR(ret);
       
  1095 	} // CSimDispatcher::DispatchSetSimMessageStatusReadL
       
  1096 
       
  1097 //
       
  1098 // Callback handlers follow
       
  1099 //
       
  1100 
       
  1101 
       
  1102 
       
  1103 void CSimDispatcher::CallbackRefreshSimFiles(TInt aError, TUint16 aRefreshFileList)
       
  1104 /**
       
  1105  * Callback function to be used by the request to complete.
       
  1106  *
       
  1107  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1108  * @param @param aRefreshFileList Bitmask containing list of files to refresh. The list of possible files is specified in TCacheFileTypes.
       
  1109  */
       
  1110 	{
       
  1111 	TSYLOGENTRYEXITARGS(_L8("aError=%d, aRefreshFileList=%d"), aError, aRefreshFileList);
       
  1112 	
       
  1113 	CMmDataPackage dataPackage;
       
  1114 	dataPackage.PackData(&aRefreshFileList);
       
  1115 	
       
  1116 	iMessageManagerCallback.Complete(EMmTsySimRefreshNowIPC, &dataPackage, aError);
       
  1117 	
       
  1118 	} // CSimDispatcher::CallbackRefreshSimFiles
       
  1119 
       
  1120 void CSimDispatcher::CallbackNotifyIccMessageWaitingIndicatorsChange(TInt aError,
       
  1121 		const RMobilePhone::TMobilePhoneMessageWaitingV1& aIndicators)
       
  1122 /**
       
  1123  * Callback function to be used by the request to complete.
       
  1124  *
       
  1125  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1126  * @param aIndicators The ICC message waiting indicators to return.
       
  1127  */
       
  1128 	{
       
  1129 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1130 
       
  1131 	// Pack the data to return to the Common TSY
       
  1132 	CMmDataPackage dataPackage;
       
  1133 	dataPackage.PackData(const_cast<RMobilePhone::TMobilePhoneMessageWaitingV1*>(&aIndicators));
       
  1134 
       
  1135 	iMessageManagerCallback.Complete(EMobilePhoneNotifyIccMessageWaitingIndicatorsChange, &dataPackage, aError);
       
  1136 	
       
  1137 	} // CSimDispatcher::CallbackNotifyIccMessageWaitingIndicatorsChange
       
  1138 
       
  1139 void CSimDispatcher::CallbackNotifyApnListChange(TInt aError)
       
  1140 /**
       
  1141  * Callback function to be used by the request to complete.
       
  1142  *
       
  1143  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1144  */
       
  1145 	{
       
  1146 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1147 
       
  1148 	iMessageManagerCallback.Complete(EMobilePhoneNotifyAPNListChanged, aError);
       
  1149 	
       
  1150 	} // CSimDispatcher::CallbackNotifyApnListChange
       
  1151 
       
  1152 void CSimDispatcher::CallbackNotifyApnControlListServiceStatusChange(TInt aError,
       
  1153 		RMobilePhone::TAPNControlListServiceStatus aStatus)
       
  1154 /**
       
  1155  * Callback function to be used by the request to complete.
       
  1156  *
       
  1157  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1158  * @param aStatus The new service status to return.
       
  1159  */
       
  1160 	{
       
  1161 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1162 
       
  1163 	// Pack the data to return to the Common TSY
       
  1164 	CMmDataPackage dataPackage;
       
  1165 	dataPackage.PackData(&aStatus);
       
  1166 
       
  1167 	iMessageManagerCallback.Complete(EMobilePhoneNotifyAPNControlListServiceStatusChange, &dataPackage, aError);
       
  1168 	
       
  1169 	} // CSimDispatcher::CallbackNotifyApnControlListServiceStatusChange
       
  1170 
       
  1171 void CSimDispatcher::CallbackGetApnControlListServiceStatus(TInt aError,
       
  1172 		RMobilePhone::TAPNControlListServiceStatus aStatus)
       
  1173 /**
       
  1174  * Callback function to be used by the request to complete.
       
  1175  *
       
  1176  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1177  * @param aStatus The APN Control List Service status stored on the USIM.
       
  1178  */
       
  1179 	{
       
  1180 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1181 
       
  1182 	// Pack the data to return to the Common TSY
       
  1183 	CMmDataPackage dataPackage;
       
  1184 	dataPackage.PackData(&aStatus);
       
  1185 	
       
  1186 	iMessageManagerCallback.Complete(EMobilePhoneGetAPNControlListServiceStatus, &dataPackage, aError);
       
  1187 	
       
  1188 	} // CSimDispatcher::CallbackGetApnControlListServiceStatus
       
  1189 
       
  1190 void CSimDispatcher::CallbackDeleteApnName(TInt aError)
       
  1191 /**
       
  1192  * Callback function to be used by the request to complete.
       
  1193  *
       
  1194  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1195  */
       
  1196 	{
       
  1197 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1198 
       
  1199 	iMessageManagerCallback.Complete(EMobilePhoneDeleteAPNName, aError);
       
  1200 	
       
  1201 	} // CSimDispatcher::CallbackDeleteApnName
       
  1202 
       
  1203 void CSimDispatcher::CallbackEnumerateApnEntries(TInt aError,
       
  1204 		TUint32 aNumEntries)
       
  1205 /**
       
  1206  * Callback function to be used by the request to complete.
       
  1207  *
       
  1208  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1209  * @param aNumEntries The total number of available entries.
       
  1210  */
       
  1211 	{
       
  1212 	TSYLOGENTRYEXITARGS(_L8("aError=%d, aNumEntries=%d"), aError, aNumEntries);
       
  1213 
       
  1214 	// Pack the data to return to the Common TSY
       
  1215 
       
  1216 	CMmDataPackage dataPackage;
       
  1217 	dataPackage.PackData(&aNumEntries);
       
  1218 	
       
  1219 	iMessageManagerCallback.Complete(EMobilePhoneEnumerateAPNEntries, &dataPackage, aError);
       
  1220 	
       
  1221 	} // CSimDispatcher::CallbackEnumerateApnEntries
       
  1222 
       
  1223 void CSimDispatcher::CallbackChangeSecurityCode(TInt aError)
       
  1224 /**
       
  1225  * Callback function to be used by the request to complete the EMobilePhoneChangeSecurityCode
       
  1226  * request back to the Common TSY.
       
  1227  *
       
  1228  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1229  */
       
  1230 	{
       
  1231 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1232 
       
  1233 	// Pack the data to return to the Common TSY
       
  1234 
       
  1235 	iMessageManagerCallback.Complete(EMobilePhoneChangeSecurityCode, aError);
       
  1236 	} // CSimDispatcher::CallbackChangeSecurityCode
       
  1237 
       
  1238 void CSimDispatcher::CallbackSetFdnSetting(TInt aError)
       
  1239 /**
       
  1240  * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimSetFdnSettingComp().
       
  1241  *
       
  1242  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1243  */
       
  1244 	{
       
  1245 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1246 
       
  1247 	iMessageManagerCallback.Complete(EMobilePhoneSetFdnSetting, aError);
       
  1248 	
       
  1249 	} // CSimDispatcher::CallbackSetFdnSetting
       
  1250 
       
  1251 void CSimDispatcher::CallbackGetCustomerServiceProfile(TInt aError,
       
  1252 		const RMobilePhone::TMobilePhoneCspFileV1& aCsp)
       
  1253 /**
       
  1254  * Callback function to be used by the request to complete.
       
  1255  *
       
  1256  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1257  * @param aCsp The Customer Service Profile file that is stored on the SIM.
       
  1258  */
       
  1259 	{
       
  1260 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1261 
       
  1262 	// Pack the data to return to the Common TSY
       
  1263 	CMmDataPackage dataPackage;
       
  1264 	dataPackage.PackData(const_cast<RMobilePhone::TMobilePhoneCspFileV1*>(&aCsp));
       
  1265 
       
  1266 	iMessageManagerCallback.Complete(EMobilePhoneGetCustomerServiceProfile, &dataPackage, aError);
       
  1267 	
       
  1268 	} // CSimDispatcher::CallbackGetCustomerServiceProfile
       
  1269 
       
  1270 void CSimDispatcher::CallbackGetSubscriberId(TInt aError,
       
  1271 		const TDesC8& aId)
       
  1272 /**
       
  1273  * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimGetSubscriberIdComp().
       
  1274  *
       
  1275  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1276  * @param aId The subscriber id to be returned.
       
  1277  */
       
  1278 	{
       
  1279 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1280 	__ASSERT_DEBUG(aId.Length() <= RMobilePhone::KIMSISize, CtsyDispatcherPanic(EBadLength));
       
  1281 
       
  1282 	//the CTSY unpack ad does a TDesC copy to a TBuf8 of size KGsmUssdDataSize
       
  1283 	TPtrC8 imsi = aId.Left(RMobilePhone::KIMSISize);
       
  1284 	
       
  1285 	// Pack the data to return to the Common TSY
       
  1286 	CMmDataPackage dataPackage;
       
  1287 	dataPackage.PackData(&imsi);
       
  1288 
       
  1289 	iMessageManagerCallback.Complete(EMobilePhoneGetSubscriberId, &dataPackage, aError);
       
  1290 	
       
  1291 	} // CSimDispatcher::CallbackGetSubscriberId
       
  1292 
       
  1293 void CSimDispatcher::CallbackAppendApnName(TInt aError)
       
  1294 /**
       
  1295  * Callback function to be used by the request to complete.
       
  1296  *
       
  1297  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1298  */
       
  1299 	{
       
  1300 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1301 
       
  1302 	iMessageManagerCallback.Complete(EMobilePhoneAppendAPNName, aError);
       
  1303 	
       
  1304 	} // CSimDispatcher::CallbackAppendApnName
       
  1305 
       
  1306 void CSimDispatcher::CallbackGetActiveIccApplicationType(TInt aError, MLtsyDispatchSimGetActiveIccApplicationType::TIccType aIccType)
       
  1307 /**
       
  1308  * Callback function to be used by the request to complete.
       
  1309  *
       
  1310  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1311  * @param aIccType active application type
       
  1312  */
       
  1313 	{
       
  1314 	TSYLOGENTRYEXITARGS(_L8("aError=%d, aIccType=%d"), aError, aIccType);
       
  1315 
       
  1316 	// Pack the data to return to the Common TSY
       
  1317 	CMmDataPackage dataPackage;
       
  1318 	
       
  1319 	//effectively a static cast from MLtsyDispatchSimGetActiveIccApplicationType::TIccType to
       
  1320 	//a CMmPhoneGsmWcdmaExt::TICCType when the data is unpacked.
       
  1321 	//This is only correct if the two enums match, unfortunately CMmPhoneGsmWcdmaExt::TICCType is 
       
  1322 	//not an exported header file.
       
  1323 	dataPackage.PackData(&aIccType);
       
  1324 	
       
  1325 	iMessageManagerCallback.Complete(EMmTsySimGetICCType, &dataPackage, aError);
       
  1326 	
       
  1327 	} // CSimDispatcher::CallbackGetIccType
       
  1328 
       
  1329 void CSimDispatcher::CallbackSetIccMessageWaitingIndicators(TInt aError)
       
  1330 /**
       
  1331  * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimSetIccMessageWaitingIndicatorsComp().
       
  1332  *
       
  1333  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1334  */
       
  1335 	{
       
  1336 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1337 
       
  1338 	iMessageManagerCallback.Complete(EMobilePhoneSetIccMessageWaitingIndicators, aError);
       
  1339 	
       
  1340 	} // CSimDispatcher::CallbackSetIccMessageWaitingIndicators
       
  1341 
       
  1342 void CSimDispatcher::CallbackSetApnControlListServiceStatus(TInt aError)
       
  1343 /**
       
  1344  * Callback function to be used by the request to complete.
       
  1345  *
       
  1346  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1347  */
       
  1348 	{
       
  1349 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1350 
       
  1351 	iMessageManagerCallback.Complete(EMobilePhoneSetAPNControlListServiceStatus, aError);
       
  1352 	
       
  1353 	} // CSimDispatcher::CallbackSetApnControlListServiceStatus
       
  1354 
       
  1355 void CSimDispatcher::CallbackGetApnName(TInt aError,
       
  1356 			const RMobilePhone::TAPNEntryV3& aEntry)
       
  1357 /**
       
  1358  * Callback function to be used by the request to complete.
       
  1359  *
       
  1360  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1361  * @param aEntry The Access Point Name (APN) entry.
       
  1362  */
       
  1363 	{
       
  1364 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1365 
       
  1366 	// Pack the data to return to the Common TSY
       
  1367 	CMmDataPackage dataPackage;
       
  1368 	dataPackage.PackData(const_cast<RMobilePhone::TAPNEntryV3*>(&aEntry));
       
  1369 	
       
  1370 	iMessageManagerCallback.Complete(EMobilePhoneGetAPNname, &dataPackage, aError);
       
  1371 	
       
  1372 	} // CSimDispatcher::CallbackGetApnName
       
  1373 
       
  1374 void CSimDispatcher::CallbackGetServiceTable(
       
  1375 				TInt aError,
       
  1376 				const RMobilePhone::TMobilePhoneServiceTableV1& aServiceTable)
       
  1377 /**
       
  1378  * Packages the data returned by the Licensee LTSY and completes the 
       
  1379  * RMobilePhone::GetServiceTable back to the Common TSY.
       
  1380  * 
       
  1381  * @param aServiceTable The service table data to return back to Common TSY.
       
  1382  */
       
  1383 	{
       
  1384 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1385 
       
  1386 	// Package up data to return to Common TSY
       
  1387 	CMmDataPackage dataPackage;
       
  1388 	dataPackage.PackData(
       
  1389 		const_cast<RMobilePhone::TMobilePhoneServiceTableV1*>(&aServiceTable));
       
  1390 
       
  1391 	// Now complete the actual get request
       
  1392 	iMessageManagerCallback.Complete(EMobilePhoneGetServiceTable, &dataPackage, aError);	
       
  1393 	} // CSimDispatcher::CallbackGetServiceTable
       
  1394 
       
  1395 void CSimDispatcher::CallbackGetIccMessageWaitingIndicators(
       
  1396 		TInt aError, const RMobilePhone::TMobilePhoneMessageWaitingV1& aMessageWaitingIndicator)
       
  1397 /**
       
  1398  * Packages the data returned by the Licensee LTSY and completes the 
       
  1399  * RMobilePhone::GetIccMessageWaitingIndicators back to the Common TSY.
       
  1400  * 
       
  1401  * @param aError The error code to complete back.
       
  1402  * @param aMessageWaitingIndicator The message waiting indicators to return.
       
  1403  */
       
  1404 	{
       
  1405 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1406 
       
  1407 	// Package up data to return to Common TSY
       
  1408 	CMmDataPackage dataPackage;
       
  1409 	dataPackage.PackData(
       
  1410 			const_cast<RMobilePhone::TMobilePhoneMessageWaitingV1*>
       
  1411 											(&aMessageWaitingIndicator));
       
  1412 
       
  1413 	// Now complete the actual get request
       
  1414 	iMessageManagerCallback.Complete(
       
  1415 			EMobilePhoneGetIccMessageWaitingIndicators, &dataPackage, aError);
       
  1416 	
       
  1417 	} // CPhoneDispatcher::CallbackGetIccMessageWaitingIndicators
       
  1418 
       
  1419 void CSimDispatcher::CallbackNotifySimCardStatus(TInt aError,
       
  1420 		RMmCustomAPI::TSIMCardStatus aSimCardStatus)
       
  1421 /**
       
  1422  * Callback function to be used by the request to complete 
       
  1423  * CCtsyDispatcherCallback::CallbackSimNotifySimCardStatusInd().
       
  1424  *
       
  1425  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1426  * @param aSimCardStatus whether the sim card is enabled/disabled etc.
       
  1427  * @see RMmCustomAPI::NotifySimCardStatus()
       
  1428  */
       
  1429 	{
       
  1430 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1431 
       
  1432 	// Pack the data to return to the Common TSY
       
  1433 	CMmDataPackage dataPackage;
       
  1434 	dataPackage.PackData(&aSimCardStatus);
       
  1435 	
       
  1436 	iMessageManagerCallback.Complete(ECustomNotifySimCardStatusIPC, &dataPackage, aError);
       
  1437 	
       
  1438 	} // CSimDispatcher::CallbackNotifySimCardStatus
       
  1439 
       
  1440 void CSimDispatcher::CallbackSimLockActivate(TInt aError)
       
  1441 /**
       
  1442  * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimSimLockActivateComp().
       
  1443  *
       
  1444  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1445  */
       
  1446 	{
       
  1447 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1448 	iMessageManagerCallback.Complete(ECustomSimLockActivateIPC, aError);
       
  1449 	
       
  1450 	} // CSimDispatcher::CallbackSimLockActivate
       
  1451 
       
  1452 void CSimDispatcher::CallbackSimLockDeActivate(TInt aError)
       
  1453 /**
       
  1454  * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimSimLockDeActivateComp().
       
  1455  *
       
  1456  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1457  */
       
  1458 	{
       
  1459 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1460 	iMessageManagerCallback.Complete(ECustomSimLockDeActivateIPC, aError);
       
  1461 	
       
  1462 	} // CSimDispatcher::CallbackSimLockDeActivate
       
  1463 
       
  1464 void CSimDispatcher::CallbackGetAnswerToReset(TInt aError, const TDesC8& aAnswerToReset)
       
  1465 /**
       
  1466  * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimGetAnswerToResetComp().
       
  1467  *
       
  1468  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1469  * @param aAnswerToReset The answer to reset.
       
  1470  */
       
  1471 	{
       
  1472 	TSYLOGENTRYEXITARGS(_L8("aError=%d, aAnswerToReset=%S"), aError, &aAnswerToReset);
       
  1473 
       
  1474 	CMmDataPackage dataPackage;
       
  1475 	dataPackage.PackData(&const_cast<TDesC8&>(aAnswerToReset));
       
  1476 
       
  1477 	iMessageManagerCallback.Complete(ECustomGetATRIPC, &dataPackage, aError);
       
  1478 	
       
  1479 	} // CSimDispatcher::CallbackGetAnswerToReset
       
  1480 
       
  1481 void CSimDispatcher::CallbackGetSimCardReaderStatus(TInt aError, TUint8 aSimCardReaderStatus)
       
  1482 /**
       
  1483  * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimGetSimCardReaderStatusComp().
       
  1484  *
       
  1485  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1486  * @param aSimCardReaderStatus The sim card reader's status.
       
  1487  * 							   Bits: 
       
  1488  *								1-3  Identity of card reader,
       
  1489  *								4    0=Card reader is not removable,
       
  1490  *								     1=Card reader is removable,
       
  1491  *								5    0=Card reader is not present,
       
  1492  * 									 1=Card reader is present,
       
  1493  *								6    0=Card reader present is not ID-1 size,
       
  1494  *									 1=Card reader present is ID-1 size,
       
  1495  *								7    0=No card present,
       
  1496  *									 1=Card is present in reader,
       
  1497  *								8    0=No card powered,
       
  1498  *									 1=Card in reader is powered.
       
  1499  *
       
  1500  */
       
  1501 	{
       
  1502 	TSYLOGENTRYEXITARGS(_L8("aError=%d, aSimCardReaderStatus=%d"), aError, aSimCardReaderStatus);
       
  1503 
       
  1504 	TBuf8<1> status;
       
  1505 	status.Append(aSimCardReaderStatus);
       
  1506 	
       
  1507 	CMmDataPackage dataPackage;
       
  1508 	dataPackage.PackData(&status);
       
  1509 	
       
  1510 	iMessageManagerCallback.Complete(ECustomGetSimCardReaderStatusIPC, &dataPackage, aError);
       
  1511 	
       
  1512 	} // CSimDispatcher::CallbackGetSimCardReaderStatus
       
  1513 
       
  1514 void CSimDispatcher::CallbackGetSimAuthenticationData(
       
  1515 		TInt aError, const TDesC8& aSignedResponse, const TDesC8& aCipheringKey)
       
  1516 /**
       
  1517  * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimGetSimAuthenticationDataComp().
       
  1518  *
       
  1519  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1520  * @param aSignedResponse The signed response. The length should not be greater than RMmCustomAPI::KMaxParametersLength.
       
  1521  * @param aCipheringKey The ciphering key. The length should not be greater than RMmCustomAPI::KMaxParametersLength.
       
  1522  */
       
  1523 	{
       
  1524 	TSYLOGENTRYEXITARGS(_L8("aError=%d, aSignedResponse=%S, aCipheringKey=%S"), aError, &aSignedResponse, &aCipheringKey);
       
  1525 	
       
  1526 	RMmCustomAPI::TSimAuthenticationEapSim authenticationEapSim;
       
  1527 	TInt error = aError;
       
  1528 	if ( error == KErrNone)
       
  1529 		{
       
  1530 		if (RMmCustomAPI::KMaxParametersLength < aSignedResponse.Length() 
       
  1531 			|| RMmCustomAPI::KMaxParametersLength < aCipheringKey.Length())
       
  1532 			{
       
  1533 			error = KErrCorrupt;
       
  1534 			}
       
  1535 		else
       
  1536 			{
       
  1537 			authenticationEapSim.iSRES.Copy(aSignedResponse);
       
  1538 			authenticationEapSim.iKC.Copy(aCipheringKey);
       
  1539 			}
       
  1540 		}
       
  1541 	
       
  1542 	CMmDataPackage dataPackage;
       
  1543 	dataPackage.PackData(&authenticationEapSim);
       
  1544 	
       
  1545 	iMessageManagerCallback.Complete(ECustomGetSimAuthenticationDataIPC, &dataPackage, error);
       
  1546 	
       
  1547 	} // CSimDispatcher::CallbackGetSimAuthenticationData
       
  1548 
       
  1549 void CSimDispatcher::CallbackGetSimAuthenticationData(
       
  1550 		TInt aError, const TDesC8& aResponse, const TDesC8& aCipheringKey, const TDesC8& aIntegrityKey, const TDesC8& aAUTS)
       
  1551 /**
       
  1552  * Callback function to be used by the request to complete CCtsyDispatcherCallback::CallbackSimGetSimAuthenticationDataComp().
       
  1553  *
       
  1554  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1555  * @param aResponse The response. The length should not be greater than RMmCustomAPI::KMaxParametersLength.
       
  1556  * @param aCipheringKey The ciphering key. The length should not be greater than RMmCustomAPI::KMaxParametersLength.
       
  1557  * @param aIntegrityKey The integrity key. The length should not be greater than RMmCustomAPI::KMaxParametersLength.
       
  1558  * @param aAUTS The AUTS value. A value generated by the peer upon experiencing a synchronization failure, 112 bits. 
       
  1559  * 		  This is needed only in error case. The length should not be greater than RMmCustomAPI::KMaxParametersLength.
       
  1560  */
       
  1561 	{
       
  1562 	TSYLOGENTRYEXITARGS(_L8("aError=%d, aResponse=%S, aCipheringKey=%S, aIntegrityKey=%S, aAUTS=%S"), aError, &aResponse, &aCipheringKey, &aIntegrityKey, &aAUTS);
       
  1563 
       
  1564 	RMmCustomAPI::TSimAuthenticationEapAka authenticationEapAka;
       
  1565 	TInt error = aError;
       
  1566 	
       
  1567 	if ( error == KErrNone)
       
  1568 		{
       
  1569 		if (RMmCustomAPI::KMaxParametersLength < aResponse.Length() 
       
  1570 			|| RMmCustomAPI::KMaxParametersLength < aCipheringKey.Length() 
       
  1571 			|| RMmCustomAPI::KMaxParametersLength < aIntegrityKey.Length()) 
       
  1572 			{
       
  1573 			error = KErrCorrupt;
       
  1574 			}
       
  1575 		else
       
  1576 			{
       
  1577 			authenticationEapAka.iRES.Copy(aResponse);
       
  1578 			authenticationEapAka.iCK.Copy(aCipheringKey);
       
  1579 			authenticationEapAka.iIK.Copy(aIntegrityKey);
       
  1580 			}
       
  1581 		}
       
  1582 	else
       
  1583 		{
       
  1584 		if (RMmCustomAPI::KMaxParametersLength < aAUTS.Length()) 
       
  1585 			{
       
  1586 			error = KErrCorrupt;
       
  1587 			}
       
  1588 		else
       
  1589 			{
       
  1590 			authenticationEapAka.iAUTS.Copy(aAUTS);
       
  1591 			}
       
  1592 		}
       
  1593 	
       
  1594 	CMmDataPackage dataPackage;
       
  1595 	dataPackage.PackData(&authenticationEapAka);
       
  1596 	
       
  1597 	iMessageManagerCallback.Complete(ECustomGetSimAuthenticationDataIPC, &dataPackage, error);
       
  1598 	
       
  1599 	} // CSimDispatcher::CallbackGetSimAuthenticationData
       
  1600 
       
  1601 void CSimDispatcher::CallbackPowerSimOff(TInt aError)
       
  1602 /**
       
  1603  * Callback function to be used by the request to complete
       
  1604  * CCtsyDispatcherCallback::CallbackSimPowerSimOffComp()
       
  1605  *
       
  1606  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1607  */
       
  1608 	{
       
  1609 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1610 
       
  1611 	iMessageManagerCallback.Complete(ECustomPowerSimOffIPC, aError);
       
  1612 	
       
  1613 	} // CSimDispatcher::CallbackPowerSimOff
       
  1614 
       
  1615 void CSimDispatcher::CallbackPowerSimOn(TInt aError)
       
  1616 /**
       
  1617  * Callback function to be used by the request to complete 
       
  1618  * CCtsyDispatcherCallback::CallbackSimPowerSimOnComp()
       
  1619  *
       
  1620  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1621  */
       
  1622 	{
       
  1623 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1624 
       
  1625 	iMessageManagerCallback.Complete(ECustomPowerSimOnIPC, aError);
       
  1626 	
       
  1627 	} // CSimDispatcher::CallbackPowerSimOn
       
  1628 
       
  1629 void CSimDispatcher::CallbackReadSimFile(TInt aError, const TDesC8& aResponseBytes)
       
  1630 /**
       
  1631  * Callback function to be used by the request to complete 
       
  1632  * CCtsyDispatcherCallback::CallbackSimReadSimFileComp()
       
  1633  *
       
  1634  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1635  * @param aResponseBytes The bytes read from the SIM.
       
  1636  */
       
  1637 	{
       
  1638 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1639 
       
  1640 	//local need so will compile for ARM	
       
  1641 	TDesC8* responseBytesPtr = &const_cast<TDesC8&>(aResponseBytes);
       
  1642 	
       
  1643 	CMmDataPackage dataPackage;
       
  1644 	dataPackage.PackData(&responseBytesPtr);
       
  1645 	
       
  1646 	iMessageManagerCallback.Complete(ECustomReadSimFileIPC, &dataPackage, aError);
       
  1647 	
       
  1648 	} // CSimDispatcher::CallbackReadSimFile
       
  1649 
       
  1650 void CSimDispatcher::CallbackSendApduRequest(
       
  1651 		TInt aError, TUint8 aServiceType, TUint8 aCardReaderNumber, TUint8 aApplicationType, const TDesC8& aResponseData)
       
  1652 /**
       
  1653  * Callback function to be used by the request to complete 
       
  1654  * CCtsyDispatcherCallback::CallbackSimSendApduRequestComp()
       
  1655  *
       
  1656  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1657  * @param aServiceType The value for the service type of the request to be returned to the client.
       
  1658  * @param aCardReaderNumber The value for the card reader number of the request to be returned to the client.
       
  1659  * @param aApplicationType The value for the application type of the request to be returned to the client.
       
  1660  * @param aResponseData The transparent response data conveyed from the baseband to be returned to the client.
       
  1661  */
       
  1662 	{
       
  1663 	TSYLOGENTRYEXITARGS(_L8("aError=%d,aServiceType=%d,aCardReaderNumber=%d,aApplicationType=%d"), aError, aServiceType, aCardReaderNumber, aApplicationType);
       
  1664 
       
  1665 	TBuf8<KApduInfoLength> info;
       
  1666 	info.Append(aServiceType);
       
  1667 	info.Append(aCardReaderNumber);
       
  1668 	info.Append(aApplicationType);
       
  1669 
       
  1670 	TPtrC8 infoPtr(info);
       
  1671 	TPtrC8 responsePtr(aResponseData);
       
  1672 	
       
  1673 	CMmDataPackage dataPackage;
       
  1674 	dataPackage.PackData(&infoPtr,&responsePtr);
       
  1675 	
       
  1676 	iMessageManagerCallback.Complete(ECustomSendAPDUReqIPC, &dataPackage, aError);
       
  1677 	
       
  1678 	} // CSimDispatcher::CallbackSendApduRequest
       
  1679 
       
  1680 void CSimDispatcher::CallbackSendApduRequestV2(TInt aError, const TDesC8& aResponseData)
       
  1681 /**
       
  1682  * Callback function to be used by the request to complete 
       
  1683  * CCtsyDispatcherCallback::CallbackSimSendApduRequestV2Comp()
       
  1684  *
       
  1685  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1686  * @param aResponseData The transparent response data conveyed from the baseband to be returned to the client.
       
  1687  */
       
  1688 	{
       
  1689 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1690 	
       
  1691 	CMmDataPackage dataPackage;
       
  1692 	dataPackage.PackData(&const_cast<TDesC8&>(aResponseData));
       
  1693 	
       
  1694 	iMessageManagerCallback.Complete(ECustomSendAPDUReqV2IPC, &dataPackage, aError);
       
  1695 	
       
  1696 	} // CSimDispatcher::CallbackSendApduRequestV2
       
  1697 
       
  1698 void CSimDispatcher::CallbackSimWarmReset(TInt aError)
       
  1699 /**
       
  1700  * Callback function to be used by the request to complete 
       
  1701  * CCtsyDispatcherCallback::CallbackSimSimWarmResetComp()
       
  1702  *
       
  1703  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1704  */
       
  1705 	{
       
  1706 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1707 
       
  1708 	iMessageManagerCallback.Complete(ECustomSimWarmResetIPC, aError);
       
  1709 	
       
  1710 	} // CSimDispatcher::CallbackSimWarmReset
       
  1711 
       
  1712 void CSimDispatcher::CallbackSetSimMessageStatusRead(TInt aError)
       
  1713 /**
       
  1714  * Callback function to be used by the request to complete 
       
  1715  * CCtsyDispatcherCallback::CallbackSimSetMessageStatusReadComp()
       
  1716  *
       
  1717  * @param aError The error code to be returned to the CTSY Dispatcher.
       
  1718  */
       
  1719 	{
       
  1720 	TSYLOGENTRYEXITARGS(_L8("aError=%d"), aError);
       
  1721 
       
  1722 	iMessageManagerCallback.Complete(ECustomSetSimMessageStatusReadIPC, aError);
       
  1723 	
       
  1724 	} // CSimDispatcher::CallbackSetSimMessageStatusRead
       
  1725 
       
  1726 void CSimDispatcher::CallbackSync(CRequestQueueOneShot::TIpcDataPackage& aIpcDataPackage)
       
  1727 /**
       
  1728  * Part of the MDispatcherCallback interface. Used to complete requests handled
       
  1729  * synchronously by the Licensee LTSY asynchronously back to the Common TSY.
       
  1730  *  
       
  1731  * @param aIpcDataPackage Package encapsulating the request.
       
  1732  * 
       
  1733  * @see MDispatcherCallback::CallbackSync()
       
  1734  */
       
  1735 	{
       
  1736 	TSYLOGENTRYEXIT;
       
  1737 	
       
  1738 	switch (aIpcDataPackage.iIpc)
       
  1739 		{
       
  1740 	
       
  1741 	default:
       
  1742 		LOG(_L8("WARNING: CSimDispatcher::CallbackSync unhandled IPC=%d"), aIpcDataPackage.iIpc);
       
  1743 		__ASSERT_DEBUG(NULL, CtsyDispatcherPanic(EUnhandledCtsyIpc));
       
  1744 		break;		
       
  1745 		} // switch (aIpcDataPackage.iIpc)
       
  1746 	
       
  1747 	} // CSimDispatcher::CallbackSync
       
  1748 
       
  1749 
       
  1750