telephonyserver/etelmultimode/DTsy/mmtsyphone.cpp
changeset 0 3553901f7fa8
child 19 630d2f34d719
equal deleted inserted replaced
-1:000000000000 0:3553901f7fa8
       
     1 // Copyright (c) 1997-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 /**
       
    17  @file
       
    18 */
       
    19 
       
    20 
       
    21 #include "mmtsy.h"
       
    22 #include "testdef.h"
       
    23 #include "ETELMM.H"
       
    24 #include <et_clsvr.h>
       
    25 #include "Dmmlog.h"
       
    26 #include <etelmmerr.h>
       
    27 
       
    28 //
       
    29 //	CPhoneDMmTsy
       
    30 //
       
    31 CPhoneDMmTsy* CPhoneDMmTsy::NewL(CPhoneFactoryDummyBase* aFac)
       
    32 	{
       
    33 	CPhoneDMmTsy* phone=new(ELeave) CPhoneDMmTsy(aFac);
       
    34 	CleanupStack::PushL(phone);
       
    35 	phone->ConstructL();
       
    36 	CleanupStack::Pop();
       
    37 	return phone;
       
    38 	}
       
    39 
       
    40 CPhoneDMmTsy::CPhoneDMmTsy(CPhoneFactoryDummyBase* aFac)
       
    41 : CPhoneDummyBase(aFac),
       
    42   iActiveRequestObjects(_FOFF(CPhoneDMmTsy::CActiveListNode,iNext))
       
    43 	{}
       
    44 
       
    45 void CPhoneDMmTsy::ConstructL()
       
    46 	{
       
    47 	iPhoneTestCount=1;
       
    48 	CPhoneDummyBase::ConstructL();
       
    49 	iGetDetectedNetworks = new CArrayPtrFlat<CListReadAllAttempt>(1);
       
    50 	iGetCFStatus = new CArrayPtrFlat<CListReadAllAttempt>(1);
       
    51 	iGetCB = new CArrayPtrFlat<CListReadAllAttempt>(1);
       
    52 	iGetCWStatus = new CArrayPtrFlat<CListReadAllAttempt>(1);
       
    53 	iGetCcbsRequests = new CArrayPtrFlat<CListReadAllAttempt>(1);
       
    54 	iGetPreferredNetworks = new CArrayPtrFlat<CListReadAllAttempt>(1);
       
    55 	iGetAuthorizationData = new CArrayPtrFlat<CListReadAllAttempt>(1);
       
    56 	iGetWlanSIDsData = new CArrayPtrFlat<CListReadAllAttempt>(1);
       
    57 	iAuthReadAll = new CArrayPtrFlat<CListReadAllAttempt>(1);
       
    58 
       
    59 	iAuthInfo=RMobilePhone::CImsAuthorizationInfoV5::NewL();
       
    60 	LOGTEXT(_L8("CPhoneDMmTsy created"));
       
    61 	}
       
    62 
       
    63 CPhoneDMmTsy::~CPhoneDMmTsy()
       
    64 	{
       
    65 	if (iGetDetectedNetworks)
       
    66 		iGetDetectedNetworks->ResetAndDestroy();
       
    67 	if (iGetCFStatus)
       
    68 		iGetCFStatus->ResetAndDestroy();
       
    69 	if (iGetCB)
       
    70 		iGetCB->ResetAndDestroy();
       
    71 	if (iGetCWStatus)
       
    72 		iGetCWStatus->ResetAndDestroy();
       
    73 	if (iGetCcbsRequests)
       
    74 		iGetCcbsRequests->ResetAndDestroy();
       
    75 	if(iGetPreferredNetworks)
       
    76 		iGetPreferredNetworks->ResetAndDestroy();
       
    77 	
       
    78 	if(iGetAuthorizationData)
       
    79 		iGetAuthorizationData->ResetAndDestroy();
       
    80 	
       
    81 	if(iGetWlanSIDsData)
       
    82 		iGetWlanSIDsData->ResetAndDestroy();
       
    83 	
       
    84   	if(iAuthReadAll)
       
    85 		iAuthReadAll->ResetAndDestroy();
       
    86   
       
    87 	delete iGetDetectedNetworks;
       
    88 	delete iGetCFStatus;
       
    89 	delete iGetCB;
       
    90 	delete iGetCWStatus;
       
    91 	delete iGetCcbsRequests;
       
    92 	delete iGetPreferredNetworks;
       
    93 	delete iGetAuthorizationData;
       
    94 	delete iAuthInfo;
       
    95 	delete iGetWlanSIDsData;
       
    96 	delete iAuthReadAll;
       
    97 	
       
    98 	LOGTEXT(_L8("CPhoneDMmTsy destroyed"));
       
    99 	}
       
   100 
       
   101 void CPhoneDMmTsy::Init()
       
   102 	{
       
   103 	// server calls this function once it has created the sub-session
       
   104 	// it gives the TSY chance to do any initialisation it may need to do for
       
   105 	// this sub-session
       
   106 	}
       
   107 
       
   108 CTelObject* CPhoneDMmTsy::OpenNewObjectByNameL(const TDesC& aName)
       
   109 	{
       
   110 	// Server calls this function when a client is opening an object from the phone
       
   111 	// for the first time.
       
   112 	// Multiple clients opening handles to the same sub-session object will be dealt with
       
   113 	// by the server - i.e. by reference counting
       
   114 
       
   115 	if((aName.Compare(DMMTSY_LINE_VOICE_NAME)==KErrNone) ||
       
   116 	   (aName.Compare(DMMTSY_LINE_VOICE2_NAME)==KErrNone) ||
       
   117 	   (aName.Compare(DMMTSY_LINE_DATA_NAME)==KErrNone) ||
       
   118 	   (aName.Compare(DMMTSY_LINE_FAX_NAME)==KErrNone))
       
   119 
       
   120 	   return REINTERPRET_CAST(CTelObject*,CLineDMmTsy::NewL(this,FacPtr()));
       
   121 
       
   122 	if (aName.Compare(KETelSmsMessaging)==KErrNone)
       
   123 	   return REINTERPRET_CAST(CTelObject*,CSmsMessagingDMmTsy::NewL(this,FacPtr(),aName));
       
   124 
       
   125 	if (aName.Compare(KETelBroadcastMessaging)==KErrNone)
       
   126 	   return REINTERPRET_CAST(CTelObject*,CBroadcastMessagingDMmTsy::NewL(this,FacPtr(),aName));
       
   127 
       
   128 	if (aName.Compare(KETelUssdMessaging)==KErrNone)
       
   129 	   return REINTERPRET_CAST(CTelObject*,CUssdMessagingDMmTsy::NewL(this,FacPtr(),aName));
       
   130 
       
   131 	if (aName.Compare(KETelNamStore)==KErrNone)
       
   132 		return REINTERPRET_CAST(CTelObject*, CNamStoreDMmTsy::NewL(this,FacPtr(),aName));
       
   133 
       
   134 	if (aName.Compare(KETelOwnNumberStore)==KErrNone)
       
   135 		return REINTERPRET_CAST(CTelObject*, CONStoreDMmTsy::NewL(this,FacPtr(),aName));
       
   136 
       
   137 	if (aName.Compare(KETelEmergencyNumberStore)==KErrNone)
       
   138 		return REINTERPRET_CAST(CTelObject*, CENStoreDMmTsy::NewL(this,FacPtr(),aName));
       
   139 
       
   140 	if (aName.Compare(KETelIccVoiceMailBox)==KErrNone)
       
   141 		return REINTERPRET_CAST(CTelObject*, CMobilePhoneBookStoreDMmTsy::NewL(this,FacPtr(),aName));
       
   142 
       
   143 	if (aName.Compare(KETelConferenceCall) == 0)
       
   144 		return REINTERPRET_CAST(CTelObject*, CMobileConferenceCallDMmTsy::NewL(this,FacPtr(),aName));
       
   145     
       
   146     if (aName.Compare(KETelLocationServices) == 0)
       
   147 		return REINTERPRET_CAST(CTelObject*, CMobileLocationServicesDMmTsy::NewL(this,FacPtr(),aName));
       
   148 	
       
   149 	if (aName.Left(SCEAP_SSN_LENGTH).Compare(KETelSmartCardEapSession) == 0)
       
   150 		{
       
   151 		TInt len;
       
   152 
       
   153 		// Extracting AID
       
   154 		RMobilePhone::TAID tempAID;
       
   155 		len = CharToSeptNumL(aName[SCEAP_SSN_LENGTH]) * 2;
       
   156 		TPtrC ptrAid = aName.Mid(SCEAP_SSN_LENGTH + 1, len);
       
   157 		ConvertTextToBinary(ptrAid, tempAID);
       
   158 
       
   159 		// Extracting EapType
       
   160 		RMobileSmartCardEap::TEapType eapType;
       
   161 		TInt posTypeLength = SCEAP_SSN_LENGTH + len + 1;
       
   162 		len = CharToSeptNumL(aName[posTypeLength]);
       
   163 		TPtrC ptrEapT = aName.Mid(posTypeLength + 1, len);
       
   164 		eapType.Copy(ptrEapT);
       
   165 
       
   166 		CSmartCardEapDMmTsy* eapSubSessObj = NULL;
       
   167 		TRAPD(err, eapSubSessObj = CSmartCardEapDMmTsy::NewL(this, tempAID, eapType, FacPtr()));
       
   168 
       
   169 		if (err != KErrNone || eapSubSessObj == NULL)
       
   170 			{
       
   171 			User::Leave((err == KErrNone ? KErrGeneral : err));
       
   172 			}
       
   173 
       
   174 		return eapSubSessObj;
       
   175 		} // End of opening Smart Card EAP sub-session
       
   176 
       
   177 	TInt tLength;
       
   178 	TPtrC remain(aName);
       
   179 
       
   180 	if ((tLength=remain.Find(PHBOOK_DELIMITER))!=KErrNotFound)
       
   181 		{
       
   182 		if(aName.Left(tLength) == KETelIccVoiceMailBox
       
   183 			&&	aName.Right(aName.Length()-tLength-2) == KEtelUSimPhoneBookType) 
       
   184 			return REINTERPRET_CAST(CTelObject*, 
       
   185 					CMobilePhoneBookStoreDMmTsy::NewL(this,FacPtr(),aName.Left(tLength),
       
   186 												  aName.Right(aName.Length()-tLength-2)));
       
   187 		}
       
   188 
       
   189 	return NULL;
       
   190 	}
       
   191 
       
   192 /**
       
   193 Returns the numerical value that corresponds to the numeric character
       
   194 of its parameter (in base 17).
       
   195 
       
   196 @param aDigit A char between '0' to '9' or between 'A' to 'G'
       
   197 */
       
   198 TInt CPhoneDMmTsy::CharToSeptNumL(const TChar& aChar) const
       
   199 	{
       
   200 	TInt ret = 0;
       
   201 
       
   202 	if((aChar >= '0') && (aChar <= '9'))
       
   203 		{
       
   204 		ret = TUint(aChar) - '0';
       
   205 		}
       
   206 	else if((aChar >= 'A') && (aChar <= 'G'))
       
   207 		{
       
   208 		ret = TUint(aChar) - 'A' + 10;
       
   209 		}
       
   210 	else
       
   211 		{
       
   212 		User::Leave(KErrArgument);
       
   213 		}
       
   214 
       
   215 	return ret;
       
   216 	}
       
   217 
       
   218 /**
       
   219 Converts a buffer containing string of the hexadecimal characters,
       
   220 representing the binary data, into this binary data!
       
   221 
       
   222 @param aSrc The buffer containing text representation.
       
   223 @param aDst Binary data will be written to this buffer.
       
   224 */
       
   225 void CPhoneDMmTsy::ConvertTextToBinary(const TDesC& aSrc, TDes8& aDst)
       
   226 	{
       
   227 	aDst.SetLength(aSrc.Length() / 2);
       
   228 
       
   229 	for (TInt i = 0; i < aSrc.Length(); i += 2)
       
   230 		{
       
   231 		TInt val = 0;
       
   232 		if ((aSrc[i] >= '0') && (aSrc[i] <= '9'))
       
   233 			{
       
   234 			val = ((aSrc[i] - '0') << 4);
       
   235 			}
       
   236 		else if ((aSrc[i] >= 'A') && (aSrc[i] <= 'F'))
       
   237 			{
       
   238 			val = ((aSrc[i] - 'A' + 10) << 4);
       
   239 			}
       
   240 
       
   241 		if ((aSrc[i+1] >= '0') && (aSrc[i+1] <= '9'))
       
   242 			{
       
   243 			val += (aSrc[i+1] - '0');
       
   244 			}
       
   245 		else if ((aSrc[i+1] >= 'A') && (aSrc[i+1] <= 'F'))
       
   246 			{
       
   247 			val += (aSrc[i+1] - 'A' + 10);
       
   248 			}
       
   249 
       
   250 		aDst[i/2] = (TUint8) val;
       
   251 		}
       
   252 	}
       
   253 
       
   254 CTelObject* CPhoneDMmTsy::OpenNewObjectL(TDes& /*aNewName*/)
       
   255 	{
       
   256 	// all objects opened from the phone are opened by name, hence this method
       
   257 	// is not supported
       
   258 	User::Leave(KErrNotSupported);
       
   259 	return NULL;
       
   260 	}
       
   261 
       
   262 
       
   263 CTelObject::TReqMode CPhoneDMmTsy::ReqModeL(const TInt aIpc)
       
   264 	{
       
   265 	// ReqModeL is called from the server's CTelObject::ReqAnalyserL
       
   266 	// in order to check the type of request it has.
       
   267 
       
   268 	// The following are example request types for this dummy TSY
       
   269 	// All TSYs do not have to have these request types but they have been given
       
   270 	// "sensible" values in this test code
       
   271 
       
   272 	CTelObject::TReqMode ret=0;
       
   273 	switch (aIpc)
       
   274 		{
       
   275 	// Asynchronous Notification Requests
       
   276 	case EMobilePhoneNotifyDTMFCapsChange:
       
   277 	case EMobilePhoneNotifyStopInDTMFString:
       
   278 	case EMobilePhoneNotifyModeChange:
       
   279 	case EMobilePhoneNotifyNetworkRegistrationStatusChange:
       
   280 	case EMobilePhoneNotifyCurrentNetworkChange:
       
   281 	case EMobilePhoneNotifyCellInfoChange:
       
   282 	case EMobilePhoneNotifyIccAccessCapsChange:
       
   283 	case EMobilePhoneNotifyBatteryInfoChange:
       
   284 	case EMobilePhoneNotifySignalStrengthChange:
       
   285 	case EMobilePhoneNotifyIndicatorChange:
       
   286 	case EMobilePhoneNotifyCallServiceCapsChange:
       
   287 	case EMobilePhoneNotifyCallForwardingStatusChange:
       
   288 	case EMobilePhoneNotifyCallForwardingActive:
       
   289 	case EMobilePhoneNotifyNetworkSelectionSettingChange:
       
   290 	case EMobilePhoneNotifyNITZInfoChange:
       
   291 	case EMobilePhoneNotifyCallBarringStatusChange:
       
   292 	case EMobilePhoneNotifyCallWaitingStatusChange:
       
   293 	case EMobilePhoneNotifyCCBSStatusChange:
       
   294 	case EMobilePhoneNotifyCCBSRecall:
       
   295 	case EMobilePhoneNotifyAlternatingCallCapsChange:
       
   296 	case EMobilePhoneNotifyAlternatingCallModeChange:
       
   297 	case EMobilePhoneNotifyALSLineChange:
       
   298 	case EMobilePhoneNotifyCostCapsChange:
       
   299 	case EMobilePhoneNotifyCostInfoChange:
       
   300 	case EMobilePhoneNotifySecurityCapsChange:
       
   301 	case EMobilePhoneNotifyLockInfoChange:
       
   302 	case EMobilePhoneNotifySecurityCodeInfoChange:
       
   303 	case EMobilePhoneNotifySecurityEvent:
       
   304 	case EMobilePhoneNotifyMessageWaiting:
       
   305 	case EMobilePhoneNotifyIccMessageWaitingIndicatorsChange:
       
   306 	case EMobilePhoneNotifyFdnStatusChange:
       
   307 	case EMobilePhoneNotifyMulticallParamsChange:
       
   308 	case EMobilePhoneNotifyIncomingCallTypeChange:
       
   309 	case EMobilePhoneNotifyUUSSettingChange:
       
   310 	case EMobilePhoneNotifyDefaultPrivacyChange:
       
   311 	case EMobilePhoneNotifyMultimediaCallPreferenceChange:
       
   312 	case EMobilePhoneNotifyNetworkSecurityLevelChange:
       
   313 	case EMobilePhoneNotifyUSimAppsSelectionModeChange:
       
   314 	case EMobilePhoneNotifyUSimApplicationsInfoChange:
       
   315 	case EMobilePhoneNotifyMailboxNumbersChange:
       
   316 	case EMobilePhoneNotifyMmsUpdate:
       
   317 	case EMobilePhoneNotifyMmsConfig:
       
   318 	case EMobilePhoneNotifyNetworkInvScanChange:
       
   319 	case EMobilePhoneNotifyNetworkInvScanEvent:
       
   320 	case EMobilePhoneNotifyAirTimeDurationChange:
       
   321 	case EMobilePhoneNotifySendNetworkServiceRequest:
       
   322 	case EMobilePhoneNotifyAllSendNetworkServiceRequest:
       
   323 	case EMobilePhoneNotifyDTMFEvent:
       
   324 	case EMobilePhoneNotifyStorePreferredNetworksListChange:
       
   325 	case EMobilePhoneNotifyCipheringIndicatorStatus:
       
   326 	case EMobilePhoneNotifyIdentityServiceStatus:
       
   327 	case EMobilePhoneNotifyIdentitySuppressionRejected:
       
   328 	case EMobilePhoneNotifyMulticallIndicatorChange:
       
   329 	case EMobilePhoneNotifySmartCardApplicationInfoChange:
       
   330 	case EMobilePhoneNotifyCurrentNetworkNoLocationChange:
       
   331 	case EMobilePhoneNotifyImsAuthorizationInfoChanged:
       
   332 	case EMobilePhoneNotifyAPNListChanged:
       
   333 	case EMobilePhoneNotifyAuthenticateDataChange:
       
   334 	case EMobilePhoneNotifyWlanDataChange:
       
   335 	case EMobilePhoneNotifyPreferredWlanSIDListChange:
       
   336 	
       
   337 
       
   338 	case EMobilePhoneNotifyAPNControlListServiceStatusChange:
       
   339 	ret=KReqModeMultipleCompletionEnabled | KReqModeRePostImmediately;
       
   340 		break;
       
   341 	
       
   342 	// Non flow-controlled requests
       
   343 	case EMobilePhoneGetDTMFCaps:
       
   344 	case EMobilePhoneStopDTMFTone:
       
   345 	case EMobilePhoneGetNetworkCaps:
       
   346 	case EMobilePhoneGetCurrentMode:
       
   347 	case EMobilePhoneGetNetworkRegistrationStatus:
       
   348 	case EMobilePhoneGetHomeNetwork:
       
   349 	case EMobilePhoneGetCurrentNetwork:
       
   350 	case EMobilePhoneGetCellInfo:
       
   351 	case EMobilePhoneGetDetectedNetworksPhase1:
       
   352 	case EMobilePhoneGetDetectedNetworksPhase2:
       
   353 	case EMobilePhoneGetDetectedNetworksV2Phase1:
       
   354 	case EMobilePhoneGetDetectedNetworksV2Phase2:
       
   355 	case EMobilePhoneGetDetectedNetworksV5Phase1:
       
   356 	case EMobilePhoneGetDetectedNetworksV5Phase2:
       
   357 	case EMobilePhoneGetDetectedNetworksV8Phase1:
       
   358 	case EMobilePhoneGetDetectedNetworksV8Phase2:
       
   359 	case EMobilePhoneGetMultimodeCaps:
       
   360 	case EMobilePhoneGetPhoneStoreInfo:
       
   361 	case EMobilePhoneGetIccAccessCaps:
       
   362 	case EMobilePhoneGetIccIdentity:
       
   363 	case EMobilePhoneGetCustomerServiceProfile:
       
   364 	case EMobilePhoneGetServiceTable:
       
   365 	case EMobilePhoneGetBatteryCaps:
       
   366 	case EMobilePhoneGetBatteryInfo:
       
   367 	case EMobilePhoneGetSignalCaps:
       
   368 	case EMobilePhoneGetSignalStrength:
       
   369 	case EMobilePhoneGetIndicatorCaps:
       
   370 	case EMobilePhoneGetIndicator:
       
   371 	case EMobilePhoneGetIdentityCaps:
       
   372 	case EMobilePhoneGetPhoneId:
       
   373 	case EMobilePhoneGetSubscriberId:
       
   374 	case EMobilePhoneGetCallServiceCaps:
       
   375 	case EMobilePhoneGetCallForwardingStatusPhase1:
       
   376 	case EMobilePhoneGetCallForwardingStatusPhase2:
       
   377 	case EMobilePhoneGetFeatureCode:
       
   378 	case EMobilePhoneGetNetworkSelectionSetting:
       
   379 	case EMobilePhoneSetNetworkSelectionSetting:
       
   380 	case EMobilePhoneSelectNetwork:
       
   381 	case EMobilePhoneGetNITZInfo:
       
   382 	case EMobilePhoneGetServiceProviderName:
       
   383 	case EMobilePhoneGetIdentityServiceStatus:
       
   384 	case EMobilePhoneGetBarringStatusPhase1:
       
   385 	case EMobilePhoneGetBarringStatusPhase2:
       
   386 	case EMobilePhoneSetCallBarringStatus:
       
   387 	case EMobilePhoneSetCallBarringPassword:
       
   388 	case EMobilePhoneGetWaitingStatusPhase1:
       
   389 	case EMobilePhoneGetWaitingStatusPhase2:
       
   390 	case EMobilePhoneSetCallWaitingStatus:
       
   391 	case EMobilePhoneGetCCBSStatus:
       
   392 	case EMobilePhoneDeactivateCCBS:
       
   393 	case EMobilePhoneAcceptCCBSRecall:
       
   394 	case EMobilePhoneRefuseCCBSRecall:
       
   395 	case EMobilePhoneGetCompletionRequestsPhase1:
       
   396 	case EMobilePhoneGetCompletionRequestsPhase2:
       
   397 	case EMobilePhoneGetAlternatingCallCaps:
       
   398 	case EMobilePhoneGetAlternatingCallMode:
       
   399 	case EMobilePhoneSetAlternatingCallMode:
       
   400 	case EMobilePhoneGetALSLine:
       
   401 	case EMobilePhoneSetALSLine:
       
   402 	case EMobilePhoneGetCostCaps:
       
   403 	case EMobilePhoneClearCostMeter:
       
   404 	case EMobilePhoneSetMaxCostMeter:
       
   405 	case EMobilePhoneSetPuct:
       
   406 	case EMobilePhoneGetCostInfo:
       
   407 	case EMobilePhoneGetSecurityCaps:
       
   408 	case EMobilePhoneGetLockInfo:
       
   409 	case EMobilePhoneSetLockSetting:
       
   410 	case EMobilePhoneGetSecurityCodeInfo:
       
   411 	case EMobilePhoneChangeSecurityCode:
       
   412 	case EMobilePhoneVerifySecurityCode:
       
   413 	case EMobilePhoneAbortSecurityCode:
       
   414 	case EMobilePhoneGetFdnStatus:
       
   415 	case EMobilePhoneSetFdnSetting:
       
   416 	case EMobilePhoneGetMulticallParams:
       
   417 	case EMobilePhoneSetMulticallParams:
       
   418 	case EMobilePhoneGetIncomingCallType:
       
   419 	case EMobilePhoneSetIncomingCallType:
       
   420 	case EMobilePhoneGetUUSSetting:
       
   421 	case EMobilePhoneSetUUSSetting:
       
   422 	case EMobilePhoneGetDefaultPrivacy:
       
   423 	case EMobilePhoneSetDefaultPrivacy:
       
   424 	case EMobilePhoneGetIccMessageWaitingIndicators:
       
   425 	case EMobilePhoneSetIccMessageWaitingIndicators:
       
   426 	case EMobilePhoneGetMultimediaCallPreference:
       
   427 	case EMobilePhoneSetMultimediaCallPreference:
       
   428 	case EMobilePhoneGetNetworkSecurityLevel:
       
   429 	case EMobilePhoneEnumerateUSimApplications:
       
   430 	case EMobilePhoneGetUSimAppsSelectionMode:
       
   431 	case EMobilePhoneSetUSimAppsSelectionMode:
       
   432 	case EMobilePhoneSetUSimApplicationStatus:
       
   433 	case EMobilePhoneGetUSimApplicationsInfo:
       
   434 	case EMobilePhoneSetSSPassword:
       
   435 	case EMobilePhoneGetMailboxNumbers:
       
   436 	case EMobilePhoneSetMmsUserConnParams:	
       
   437 	case EMobilePhoneSetMmsUserPreferences:
       
   438 	case EMobilePhoneGetMmsConfig:
       
   439 	case EMobilePhoneGetHomeNetworkSearchPeriod:
       
   440 	case EMobilePhoneGetLastUsedAccessTechnology:
       
   441 	case EMobilePhoneGetNetworkInvScanSetting:
       
   442 	case EMobilePhoneGetCallForwardingIndicator:
       
   443 	case EMobilePhoneGetCompMethodName:
       
   444 	case EMobilePhoneEnumerateAPNEntries:
       
   445 	case EMobilePhoneGetAPNname:
       
   446 	case EMobilePhoneAppendAPNName:
       
   447 	case EMobilePhoneDeleteAPNName:
       
   448 	case EMobilePhoneSetAPNControlListServiceStatus:
       
   449 	case EMobilePhoneGetAPNControlListServiceStatus:
       
   450 	case EMobilePhoneGetAirTimeDuration:
       
   451 	case EMobilePhoneClearBlacklist:
       
   452 	case EMobilePhoneGetPersonalisationCaps:
       
   453 	case EMobilePhoneGetPersonalisationStatus:
       
   454 	case EMobilePhoneSetPersonalisationStatus:
       
   455 	case EMobilePhoneGetNetworkName:
       
   456 	case EMobilePhoneGetPreferredNetworksPhase1:
       
   457 	case EMobilePhoneGetPreferredNetworksPhase2:
       
   458 	case EMobilePhoneStorePreferredNetworksList:
       
   459 	case EMobilePhoneGetCipheringIndicatorStatus:
       
   460 	case EMobilePhoneSetIdentityServiceStatus:
       
   461 	case EMobilePhoneEnumerateSmartCardApplications:
       
   462 	case EMobilePhoneGetSmartCardApplicationInfo:
       
   463 	case EMobilePhoneSetSmartCardApplicationStatus:
       
   464 	case EMobilePhoneGetScFileInfo:
       
   465 	case EMobilePhoneReadScFile:
       
   466 	case EMobilePhoneUpdateScFile:
       
   467 	case EMobilePhoneGetCurrentActiveUSimApplication:
       
   468 	case EMobilePhoneGetCurrentNetworkNoLocation:		
       
   469 	case EMobilePhoneAuthorizationInfoPhase1:
       
   470 	case EMobilePhoneAuthorizationInfoPhase2:
       
   471 	case EMobilePhoneIMSAuthenticate:
       
   472 	case EMobilePhoneSmartCardAuthenticate:
       
   473 	case EETelPhoneSetEmergencyClient:
       
   474 	case EMobilePhoneGetAuthenticationParams:
       
   475 	case EMobilePhoneSetGbaBootstrapParams:
       
   476 	case EMobilePhoneAuthenticationListPhase1:
       
   477 	case EMobilePhoneAuthenticationListPhase2:
       
   478 	case EMobilePhoneGetWlanData:
       
   479 	case EMobilePhoneSetWlanData:
       
   480 	case EMobilePhoneGetPreferredWlanSIDsPhase1:
       
   481 	case EMobilePhoneGetPreferredWlanSIDsPhase2:
       
   482 	case EMobilePhoneStorePreferredWlanSIDList:
       
   483 		break;
       
   484 
       
   485 	// Flow controlled requests
       
   486 	case EMobilePhoneSendNetworkServiceRequest:
       
   487 	case EMobilePhoneSendDTMFTones:
       
   488 	case EMobilePhoneReadDTMFTones:
       
   489 	case EMobilePhoneStartDTMFTone:
       
   490 	case EMobilePhoneContinueDTMFStringSending:
       
   491 	case EMobilePhoneSetCallForwardingStatus:
       
   492 	case EMobilePhoneProgramFeatureCode:
       
   493 	case EMobilePhoneTerminateAllCalls:
       
   494 		ret=KReqModeFlowControlObeyed;
       
   495 		break;
       
   496 	default:
       
   497 		ret=CPhoneBase::ReqModeL(aIpc);
       
   498 		break;
       
   499 		}
       
   500 	return ret;
       
   501 	}
       
   502 
       
   503 TInt CPhoneDMmTsy::RegisterNotification(const TInt aIpc)
       
   504 	{
       
   505 	// RegisterNotification is called when the server recognises that this notification
       
   506 	// is being posted for the first time on this sub-session object.
       
   507 
       
   508 	// It enables the TSY to "turn on" any regular notification messages that it may 
       
   509 	// receive from the phone
       
   510 
       
   511 	switch (aIpc)
       
   512 		{
       
   513 	case EMobilePhoneNotifyDTMFCapsChange:
       
   514 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - DTMF Caps Change "));
       
   515 		return KErrNone;
       
   516 	case EMobilePhoneNotifyStopInDTMFString:
       
   517 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - DTMF Stop In DTMF String "));
       
   518 		return KErrNone;
       
   519 	case EMobilePhoneNotifyModeChange:
       
   520 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Mode Change "));
       
   521 		return KErrNone;
       
   522 	case EMobilePhoneNotifyNetworkRegistrationStatusChange:
       
   523 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Registration Status Change "));
       
   524 		return KErrNone;
       
   525 	case EMobilePhoneNotifyCurrentNetworkChange:
       
   526 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Current network Change "));
       
   527 		return KErrNone;
       
   528 	case EMobilePhoneNotifyCurrentNetworkNoLocationChange:
       
   529 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Current network ISV Change No Location"));
       
   530 		return KErrNone;
       
   531 	case EMobilePhoneNotifyCellInfoChange:
       
   532 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Cell information Change "));
       
   533 		return KErrNone;		
       
   534 	case EMobilePhoneNotifyIccAccessCapsChange:
       
   535 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - SIM Access Caps Change "));
       
   536 		return KErrNone;
       
   537 	case EMobilePhoneNotifyBatteryInfoChange:
       
   538 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Battery Info Change "));
       
   539 		return KErrNone;
       
   540 	case EMobilePhoneNotifySignalStrengthChange:
       
   541 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Signal Strength Change "));
       
   542 		return KErrNone;
       
   543 	case EMobilePhoneNotifyIndicatorChange:
       
   544 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Indicator Change "));
       
   545 		return KErrNone;
       
   546 	case EMobilePhoneNotifyCallServiceCapsChange:
       
   547 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Call Service Caps Change "));
       
   548 		return KErrNone;
       
   549 	case EMobilePhoneNotifyCallForwardingStatusChange:
       
   550 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Call Forwarding Status Change "));
       
   551 		return KErrNone;
       
   552 	case EMobilePhoneNotifyCallForwardingActive:
       
   553 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Call Forwarding Active"));
       
   554 		return KErrNone;
       
   555 	case EMobilePhoneNotifyNetworkSelectionSettingChange:
       
   556 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Network Selection Setting Change "));
       
   557 		return KErrNone;
       
   558 	case EMobilePhoneNotifyNITZInfoChange:
       
   559 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Network Time Info Change "));
       
   560 		return KErrNone;
       
   561 	case EMobilePhoneNotifyCallBarringStatusChange:
       
   562 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Call Barring Status Change"));
       
   563 		return KErrNone;
       
   564 	case EMobilePhoneNotifyCallWaitingStatusChange:
       
   565 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Call Waiting Status Change"));
       
   566 		return KErrNone;
       
   567 	case EMobilePhoneNotifyCCBSStatusChange:
       
   568 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify CCBS Status Change"));
       
   569 		return KErrNone;
       
   570 	case EMobilePhoneNotifyCCBSRecall:
       
   571 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify CCBS Recall"));
       
   572 		return KErrNone;
       
   573 	case EMobilePhoneNotifyAlternatingCallCapsChange:
       
   574 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Alternating Call Caps Change"));
       
   575 		return KErrNone;
       
   576 	case EMobilePhoneNotifyAlternatingCallModeChange:
       
   577 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Alternating Mode Caps Change"));
       
   578 		return KErrNone;
       
   579 	case EMobilePhoneNotifyALSLineChange:
       
   580 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify ALSLine Change"));
       
   581 		return KErrNone;
       
   582 	case EMobilePhoneNotifyCostCapsChange:
       
   583 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Cost Caps Change"));
       
   584 		return KErrNone;
       
   585 	case EMobilePhoneNotifyCostInfoChange:
       
   586 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Cost Info Change"));
       
   587 		return KErrNone;
       
   588 	case EMobilePhoneNotifySecurityCapsChange:
       
   589 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Security Caps Change"));
       
   590 		return KErrNone;
       
   591 	case EMobilePhoneNotifyLockInfoChange:
       
   592 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Lock Info Change"));
       
   593 		return KErrNone;
       
   594 	case EMobilePhoneNotifySecurityCodeInfoChange:
       
   595 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Security Code Info Change"));
       
   596 		return KErrNone;
       
   597 	case EMobilePhoneNotifySecurityEvent:
       
   598 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify On Security Event"));
       
   599 		return KErrNone;
       
   600 	case EMobilePhoneNotifyMessageWaiting:
       
   601 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Message Waiting"));
       
   602 		return KErrNone;
       
   603 	case EMobilePhoneNotifyIccMessageWaitingIndicatorsChange:
       
   604 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Icc Message Waiting Indicators Change"));
       
   605 		return KErrNone;
       
   606 	case EMobilePhoneNotifyFdnStatusChange:
       
   607 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Fdn Status Change"));
       
   608 		return KErrNone;
       
   609 	case EMobilePhoneNotifyMulticallParamsChange:
       
   610 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Multicall Params Change"));
       
   611 		return KErrNone;
       
   612 	case EMobilePhoneNotifyIncomingCallTypeChange:
       
   613 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Incoming Call Type Change"));
       
   614 		return KErrNone;
       
   615 	case EMobilePhoneNotifyUUSSettingChange:
       
   616 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify UUS Setting Change"));
       
   617 		return KErrNone;
       
   618 	case EMobilePhoneNotifyDefaultPrivacyChange:
       
   619 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Privacy Setting Change"));
       
   620 		return KErrNone;
       
   621 	case EMobilePhoneNotifyMultimediaCallPreferenceChange:
       
   622 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Multimedia Call Setting Change"));
       
   623 		return KErrNone;
       
   624 	case EMobilePhoneNotifyNetworkSecurityLevelChange:
       
   625 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Network Security Level Change"));
       
   626 		return KErrNone;	
       
   627 	case EMobilePhoneNotifyUSimAppsSelectionModeChange:
       
   628 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify USim Applications Selection Mode Change"));
       
   629 		return KErrNone;
       
   630 	case EMobilePhoneNotifyUSimApplicationsInfoChange:
       
   631 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify USim Applications Info Change"));
       
   632 		return KErrNone;
       
   633 	case EMobilePhoneNotifyMailboxNumbersChange:
       
   634 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Mobile Mailbox Numbers functionality"));
       
   635 		return KErrNone;
       
   636 	case EMobilePhoneNotifyMmsUpdate:
       
   637 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Mobile MMS Update functionality"));
       
   638 		return KErrNone;
       
   639 	case EMobilePhoneNotifyMmsConfig:
       
   640 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Mobile MMS  Config functionality"));
       
   641 		return KErrNone;
       
   642 	case EMobilePhoneNotifyNetworkInvScanChange:
       
   643 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Network Investigation Scan Change functionality"));
       
   644 		return KErrNone;
       
   645 	case EMobilePhoneNotifyNetworkInvScanEvent:
       
   646 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Network Investigation Scan Event functionality"));
       
   647 		return KErrNone;
       
   648 	case EMobilePhoneNotifyAirTimeDurationChange:
       
   649 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Air Time Duration Change"));
       
   650 		return KErrNone;
       
   651 	case EMobilePhoneNotifySendNetworkServiceRequest:
       
   652 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Send Network Service Request"));
       
   653 		return KErrNone;
       
   654 	case EMobilePhoneNotifyAllSendNetworkServiceRequest:
       
   655 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify All Send Network Service Request"));
       
   656 		return KErrNone;
       
   657 	case EMobilePhoneNotifyDTMFEvent:
       
   658 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify DTMF Event"));
       
   659 		return KErrNone;
       
   660 	case EMobilePhoneNotifyStorePreferredNetworksListChange:
       
   661 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Stored Networks List Change"));
       
   662 		return KErrNone;
       
   663 	case EMobilePhoneNotifyCipheringIndicatorStatus:
       
   664 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Ciphering Indicator Status Change"));
       
   665 		return KErrNone;
       
   666 	case EMobilePhoneNotifyIdentityServiceStatus:
       
   667 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Identity Service Status Change"));
       
   668 		return KErrNone;
       
   669 	case EMobilePhoneNotifyIdentitySuppressionRejected:
       
   670 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Identity Suppression Rejected"));
       
   671 		return KErrNone;
       
   672 	case EMobilePhoneNotifyMulticallIndicatorChange:
       
   673 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Multicall Indicator Change"));
       
   674 		return KErrNone;
       
   675 	case EMobilePhoneNotifyImsAuthorizationInfoChanged:
       
   676 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Ims Authorization Info Changed"));
       
   677 		return KErrNone;
       
   678 	case EMobilePhoneNotifySmartCardApplicationInfoChange:
       
   679 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Smart Card Application Info Change"));
       
   680 		return KErrNone;
       
   681 	case EMobilePhoneNotifyAPNListChanged:
       
   682 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify APN Control List Change"));
       
   683 		return KErrNone;
       
   684 	case EMobilePhoneNotifyAPNControlListServiceStatusChange:
       
   685 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify APN Control List Service Status Change"));
       
   686 		return KErrNone;
       
   687 	case EMobilePhoneNotifyAuthenticateDataChange:
       
   688 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Authentication Data Change"));
       
   689 		return KErrNone;
       
   690 	case EMobilePhoneNotifyWlanDataChange:
       
   691 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Wlan Data Change"));
       
   692 		return KErrNone;
       
   693 	case EMobilePhoneNotifyPreferredWlanSIDListChange:
       
   694 		LOGTEXT(_L8("CPhoneDMmTsy: RegisterNotification - Notify Wlan SIDs List Change"));
       
   695 		return KErrNone;		
       
   696 		
       
   697 	default:
       
   698 		// Unknown or invalid SMS IPC
       
   699 		return KErrNotSupported;
       
   700 		}
       
   701 	}
       
   702 
       
   703 TInt CPhoneDMmTsy::DeregisterNotification(const TInt aIpc)
       
   704 	{
       
   705 	// DeregisterNotification is called when the server recognises that this notification
       
   706 	// will not be posted again because the last client to have a handle on this sub-session
       
   707 	// object has just closed the handle.
       
   708 
       
   709 	// It enables the TSY to "turn off" any regular notification messages that it may
       
   710 	// receive from the phone.
       
   711 
       
   712 	switch (aIpc)
       
   713 		{
       
   714 	case EMobilePhoneNotifyDTMFCapsChange:
       
   715 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - DTMF Caps Change "));
       
   716 		return KErrNone;
       
   717 	case EMobilePhoneNotifyStopInDTMFString:
       
   718 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - DTMF Stop In DTMF String "));
       
   719 		return KErrNone;
       
   720 	case EMobilePhoneNotifyModeChange:
       
   721 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Mode Change "));
       
   722 		return KErrNone;
       
   723 	case EMobilePhoneNotifyNetworkRegistrationStatusChange:
       
   724 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Registration Status Change "));
       
   725 		return KErrNone;
       
   726 	case EMobilePhoneNotifyCurrentNetworkChange:
       
   727 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Current network Change "));
       
   728 		return KErrNone;
       
   729 	case EMobilePhoneNotifyCurrentNetworkNoLocationChange:
       
   730 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Current network Change No Location"));
       
   731 		return KErrNone;
       
   732 	case EMobilePhoneNotifyCellInfoChange:
       
   733 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Cell information Change "));
       
   734 		return KErrNone;		
       
   735 	case EMobilePhoneNotifyIccAccessCapsChange:
       
   736 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - SIM Access Caps Change "));
       
   737 		return KErrNone;
       
   738 	case EMobilePhoneNotifyBatteryInfoChange:
       
   739 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Battery Info Change "));
       
   740 		return KErrNone;
       
   741 	case EMobilePhoneNotifySignalStrengthChange:
       
   742 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Signal Strength Change "));
       
   743 		return KErrNone;
       
   744 	case EMobilePhoneNotifyIndicatorChange:
       
   745 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Indicator Change "));
       
   746 		return KErrNone;
       
   747 	case EMobilePhoneNotifyCallServiceCapsChange:
       
   748 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Call Service Caps Change "));
       
   749 		return KErrNone;
       
   750 	case EMobilePhoneNotifyCallForwardingStatusChange:
       
   751 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Call Forwarding Status Change "));
       
   752 		return KErrNone;
       
   753 	case EMobilePhoneNotifyCallForwardingActive:
       
   754 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Call Forwarding Active"));
       
   755 		return KErrNone;
       
   756 	case EMobilePhoneNotifyNetworkSelectionSettingChange:
       
   757 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Network Selection Setting Change "));
       
   758 		return KErrNone;
       
   759 	case EMobilePhoneNotifyNITZInfoChange:
       
   760 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Network Time Info Change "));
       
   761 		return KErrNone;
       
   762 	case EMobilePhoneNotifyCallBarringStatusChange:
       
   763 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Call Barring Status Change"));
       
   764 		return KErrNone;
       
   765 	case EMobilePhoneNotifyCallWaitingStatusChange:
       
   766 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Call Waiting Status Change"));
       
   767 		return KErrNone;
       
   768 	case EMobilePhoneNotifyCCBSStatusChange:
       
   769 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify CCBS Status Change"));
       
   770 		return KErrNone;
       
   771 	case EMobilePhoneNotifyCCBSRecall:
       
   772 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify CCBS Recall"));
       
   773 		return KErrNone;
       
   774 	case EMobilePhoneNotifyAlternatingCallCapsChange:
       
   775 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Alternating Call Caps Change"));
       
   776 		return KErrNone;
       
   777 	case EMobilePhoneNotifyAlternatingCallModeChange:
       
   778 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Alternating Mode Caps Change"));
       
   779 		return KErrNone;
       
   780 	case EMobilePhoneNotifyALSLineChange:
       
   781 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify ALSLine Change"));
       
   782 		return KErrNone;
       
   783 	case EMobilePhoneNotifyCostCapsChange:
       
   784 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Cost Caps Change"));
       
   785 		return KErrNone;
       
   786 	case EMobilePhoneNotifyCostInfoChange:
       
   787 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Cost Info Change"));
       
   788 		return KErrNone;
       
   789 	case EMobilePhoneNotifySecurityCapsChange:
       
   790 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Security Caps Change"));
       
   791 		return KErrNone;
       
   792 	case EMobilePhoneNotifyLockInfoChange:
       
   793 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Lock Info Change"));
       
   794 		return KErrNone;
       
   795 	case EMobilePhoneNotifySecurityCodeInfoChange:
       
   796 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Security Code Info Change"));
       
   797 		return KErrNone;
       
   798 	case EMobilePhoneNotifySecurityEvent:
       
   799 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify On Security Event"));
       
   800 		return KErrNone;	
       
   801 	case EMobilePhoneNotifyMessageWaiting:
       
   802 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Message Waiting"));
       
   803 		return KErrNone;
       
   804 	case EMobilePhoneNotifyIccMessageWaitingIndicatorsChange:
       
   805 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Icc Message Waiting Indicators Change"));
       
   806 		return KErrNone;
       
   807 	case EMobilePhoneNotifyFdnStatusChange:
       
   808 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Fdn Status Change"));
       
   809 		return KErrNone;
       
   810 	case EMobilePhoneNotifyMulticallParamsChange:
       
   811 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Multicall Params Change"));
       
   812 		return KErrNone;
       
   813 	case EMobilePhoneNotifyIncomingCallTypeChange:
       
   814 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Incoming Call Type Change"));
       
   815 		return KErrNone;
       
   816 	case EMobilePhoneNotifyUUSSettingChange:
       
   817 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify UUS Setting Change"));
       
   818 		return KErrNone;
       
   819 	case EMobilePhoneNotifyDefaultPrivacyChange:
       
   820 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Privacy Setting Change"));
       
   821 		return KErrNone;
       
   822 	case EMobilePhoneNotifyMultimediaCallPreferenceChange:	
       
   823 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Multimedia Call Setting Change"));
       
   824 		return KErrNone;
       
   825 	case EMobilePhoneNotifyNetworkSecurityLevelChange:
       
   826 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Network Security Level Change"));
       
   827 		return KErrNone;	
       
   828 	case EMobilePhoneNotifyUSimAppsSelectionModeChange:
       
   829 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify USim Applications Selection Mode Change"));
       
   830 		return KErrNone;
       
   831 	case EMobilePhoneNotifyUSimApplicationsInfoChange:
       
   832 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify USim Applications Info Change"));
       
   833 		return KErrNone;
       
   834 	case EMobilePhoneNotifyMailboxNumbersChange:			
       
   835 		LOGTEXT(_L8("CPhoneDMmTsy:  DeregisterNotification - Notify Mobile Mailbox Numbers functionality"));
       
   836 		return KErrNone;
       
   837 	case EMobilePhoneNotifyMmsUpdate:
       
   838 		LOGTEXT(_L8("CPhoneDMmTsy:  DeregisterNotification - Notify Mobile MMS Update functionality"));
       
   839 		return KErrNone;
       
   840 	case EMobilePhoneNotifyMmsConfig:
       
   841 		LOGTEXT(_L8("CPhoneDMmTsy:  DeregisterNotification - Notify Mobile MMS Config functionality"));
       
   842 		return KErrNone;
       
   843 	case EMobilePhoneNotifyNetworkInvScanChange:
       
   844 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Network Investigation Scan Change functionality"));
       
   845 		return KErrNone;
       
   846 	case EMobilePhoneNotifyNetworkInvScanEvent:
       
   847 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Network Investigation Scan Event functionality"));
       
   848 		return KErrNone;
       
   849 	case EMobilePhoneNotifyAirTimeDurationChange:
       
   850 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Air Time Duration Change"));
       
   851 		return KErrNone;
       
   852 	case EMobilePhoneNotifySendNetworkServiceRequest:
       
   853 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Send Network Service Request"));
       
   854 		return KErrNone;
       
   855 	case EMobilePhoneNotifyAllSendNetworkServiceRequest:
       
   856 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify All Send Network Service Request"));
       
   857 		return KErrNone;
       
   858 	case EMobilePhoneNotifyDTMFEvent:
       
   859 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify DTMF Event"));
       
   860 		return KErrNone;	
       
   861 	case EMobilePhoneNotifyStorePreferredNetworksListChange:
       
   862 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Stored Networks List Change"));
       
   863 		return KErrNone;
       
   864 	case EMobilePhoneNotifyCipheringIndicatorStatus:
       
   865 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Ciphering IndicatorStatus Change"));
       
   866 		return KErrNone;
       
   867 	case EMobilePhoneNotifyIdentityServiceStatus:
       
   868 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Identity Service Status Change"));
       
   869 		return KErrNone;	
       
   870 	case EMobilePhoneNotifyIdentitySuppressionRejected:
       
   871 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Identity Suppression Rejected"));
       
   872 		return KErrNone;	
       
   873 	case EMobilePhoneNotifyMulticallIndicatorChange:
       
   874 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify MulticallIndicator Change"));
       
   875 		return KErrNone;
       
   876 	case EMobilePhoneNotifyImsAuthorizationInfoChanged:
       
   877 		LOGTEXT(_L8("CPhoneDMmTsy:DeregisterNotification - Notify Ims Authorization Info Changed"));
       
   878 		return KErrNone;
       
   879 	case EMobilePhoneNotifySmartCardApplicationInfoChange:
       
   880 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Smart Card Application Info Change"));
       
   881 		return KErrNone;
       
   882 	case EMobilePhoneNotifyAPNListChanged:
       
   883 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify APN Control List Change"));
       
   884 		return KErrNone;
       
   885 	case EMobilePhoneNotifyAPNControlListServiceStatusChange:
       
   886 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify APN Control List Service Status Change"));
       
   887 		return KErrNone;
       
   888 	case EMobilePhoneNotifyAuthenticateDataChange:
       
   889 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Authentication Data Change"));
       
   890 		return KErrNone;
       
   891 	case EMobilePhoneNotifyWlanDataChange:
       
   892 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Wlan Data Change"));
       
   893 		return KErrNone;
       
   894 	case EMobilePhoneNotifyPreferredWlanSIDListChange:
       
   895 		LOGTEXT(_L8("CPhoneDMmTsy: DeregisterNotification - Notify Wlan SIDs list Change"));
       
   896 		return KErrNone;		
       
   897 	default:
       
   898 		// Unknown or invalid sms IPC
       
   899 		return KErrNotSupported;
       
   900 		}
       
   901 	}
       
   902 
       
   903 TInt CPhoneDMmTsy::NumberOfSlotsL(const TInt aIpc)
       
   904 	{
       
   905 	// NumberOfSlotsL is called by the server when it is registering a new notification.
       
   906 	// It enables the TSY to tell the server how many buffer slots to allocate for
       
   907 	// "repost immediately" notifications that may trigger before clients collect them
       
   908 
       
   909 	TInt numberOfSlots=1;
       
   910 	switch (aIpc)
       
   911 		{
       
   912 	case EMobilePhoneNotifyBatteryInfoChange:
       
   913 	case EMobilePhoneNotifySignalStrengthChange:
       
   914 	case EMobilePhoneNotifyIndicatorChange:
       
   915 		LOGTEXT(_L8("CPhoneDMmTsy: Registered with 10 slots"));
       
   916 		numberOfSlots=10;
       
   917 		break;
       
   918 
       
   919 	case EMobilePhoneNotifyDTMFCapsChange:
       
   920 	case EMobilePhoneNotifyStopInDTMFString:
       
   921 	case EMobilePhoneNotifyCallServiceCapsChange:
       
   922 	case EMobilePhoneNotifyCCBSRecall:
       
   923 	case EMobilePhoneNotifyDTMFEvent:
       
   924 		LOGTEXT(_L8("CPhoneDMmTsy: Registered with 5 slots"));
       
   925 		numberOfSlots=5;
       
   926 		break;
       
   927 	
       
   928 	case EMobilePhoneNotifyModeChange:
       
   929 	case EMobilePhoneNotifyNetworkRegistrationStatusChange:
       
   930 	case EMobilePhoneNotifyCurrentNetworkChange:
       
   931 	case EMobilePhoneNotifyCurrentNetworkNoLocationChange:
       
   932 	case EMobilePhoneNotifyCellInfoChange:
       
   933 	case EMobilePhoneNotifyIccAccessCapsChange:
       
   934 	case EMobilePhoneNotifyCallForwardingStatusChange:
       
   935 	case EMobilePhoneNotifyCallForwardingActive:
       
   936 	case EMobilePhoneNotifyNetworkSelectionSettingChange:
       
   937 	case EMobilePhoneNotifyNITZInfoChange:
       
   938 	case EMobilePhoneNotifyCallBarringStatusChange:
       
   939 	case EMobilePhoneNotifyCallWaitingStatusChange:
       
   940 	case EMobilePhoneNotifyCCBSStatusChange:
       
   941 	case EMobilePhoneNotifyAlternatingCallCapsChange:
       
   942 	case EMobilePhoneNotifyAlternatingCallModeChange:
       
   943 	case EMobilePhoneNotifyALSLineChange:
       
   944 	case EMobilePhoneNotifyCostCapsChange:
       
   945 	case EMobilePhoneNotifyCostInfoChange:
       
   946 	case EMobilePhoneNotifySecurityCapsChange:
       
   947 	case EMobilePhoneNotifyLockInfoChange:
       
   948 	case EMobilePhoneNotifySecurityCodeInfoChange:
       
   949 	case EMobilePhoneNotifySecurityEvent:
       
   950 	case EMobilePhoneNotifyMessageWaiting:
       
   951 	case EMobilePhoneNotifyIccMessageWaitingIndicatorsChange:
       
   952 	case EMobilePhoneNotifyFdnStatusChange:
       
   953 	case EMobilePhoneNotifyMulticallParamsChange:
       
   954 	case EMobilePhoneNotifyIncomingCallTypeChange:
       
   955 	case EMobilePhoneNotifyUUSSettingChange:
       
   956 	case EMobilePhoneNotifyDefaultPrivacyChange:
       
   957 	case EMobilePhoneNotifyMultimediaCallPreferenceChange:
       
   958 	case EMobilePhoneNotifyNetworkSecurityLevelChange:
       
   959 	case EMobilePhoneNotifyUSimAppsSelectionModeChange:
       
   960 	case EMobilePhoneNotifyUSimApplicationsInfoChange:
       
   961 	case EMobilePhoneNotifyMailboxNumbersChange:
       
   962 	case EMobilePhoneNotifyMmsUpdate:
       
   963 	case EMobilePhoneNotifyMmsConfig:
       
   964 	case EMobilePhoneNotifyNetworkInvScanChange:
       
   965 	case EMobilePhoneNotifyNetworkInvScanEvent:
       
   966 	case EMobilePhoneNotifyAirTimeDurationChange:
       
   967 	case EMobilePhoneNotifySendNetworkServiceRequest:
       
   968 	case EMobilePhoneNotifyAllSendNetworkServiceRequest:
       
   969 	case EMobilePhoneNotifyStorePreferredNetworksListChange:
       
   970 	case EMobilePhoneNotifyCipheringIndicatorStatus:
       
   971 	case EMobilePhoneNotifyIdentityServiceStatus:
       
   972 	case EMobilePhoneNotifyIdentitySuppressionRejected:
       
   973 	case EMobilePhoneNotifyMulticallIndicatorChange:
       
   974 	case EMobilePhoneNotifyImsAuthorizationInfoChanged:
       
   975 	case EMobilePhoneNotifySmartCardApplicationInfoChange:
       
   976 	case EMobilePhoneNotifyAPNListChanged:
       
   977 	case EMobilePhoneNotifyAPNControlListServiceStatusChange:
       
   978 	case EMobilePhoneNotifyAuthenticateDataChange:
       
   979 	case EMobilePhoneNotifyWlanDataChange:
       
   980 	case EMobilePhoneNotifyPreferredWlanSIDListChange:
       
   981 		LOGTEXT(_L8("CPhoneDMmTsy: Registered with 2 slots"));
       
   982 		numberOfSlots=2;
       
   983 		break;
       
   984 	default:
       
   985 		// Unknown or invalid Phone IPC
       
   986 		User::Leave(KErrNotSupported);
       
   987 		break;
       
   988 		}
       
   989 	return numberOfSlots;
       
   990 	}
       
   991 
       
   992 
       
   993 TInt CPhoneDMmTsy::ExtFunc(const TTsyReqHandle aTsyReqHandle,const TInt aIpc,
       
   994 		 				 const TDataPackage& aPackage)
       
   995 	{
       
   996 	// ExtFunc is called by the server when it has a "extended", i.e. non-core ETel request 
       
   997 	// for the TSY to process
       
   998 	// A request handle, request type and request data are passed to the TSY
       
   999 
       
  1000 	TAny* dataPtr=aPackage.Ptr1();
       
  1001 	TAny* dataPtr2=aPackage.Ptr2();
       
  1002 	
       
  1003 	// The request data has to extracted from TDataPackage and the TAny* pointers have to
       
  1004 	// be "cast" to the expected request data type
       
  1005 	
       
  1006 	switch (aIpc)
       
  1007 		{
       
  1008 	// Non-Flow controlled requests
       
  1009 
       
  1010 	case EMobilePhoneGetDTMFCaps:
       
  1011 		return GetDTMFCaps(aTsyReqHandle,
       
  1012 			REINTERPRET_CAST(TUint32*, dataPtr));
       
  1013 
       
  1014 	case EMobilePhoneStopDTMFTone:
       
  1015 		return StopDTMFTone(aTsyReqHandle);
       
  1016 
       
  1017 	case EMobilePhoneGetNetworkCaps:
       
  1018 		return GetNetworkCaps(aTsyReqHandle,
       
  1019 			REINTERPRET_CAST(TUint32*, dataPtr));
       
  1020 
       
  1021 	case EMobilePhoneGetNetworkRegistrationStatus:
       
  1022 		return GetNetworkRegistrationStatus(aTsyReqHandle,
       
  1023 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneRegistrationStatus*, dataPtr));
       
  1024 
       
  1025 	case EMobilePhoneGetHomeNetwork:
       
  1026 		return GetHomeNetwork(aTsyReqHandle, aPackage.Des1n());
       
  1027 
       
  1028 	case EMobilePhoneGetCurrentMode:
       
  1029 		return GetCurrentMode(aTsyReqHandle,
       
  1030 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneNetworkMode*, dataPtr));
       
  1031 
       
  1032 	case EMobilePhoneGetCurrentNetwork:
       
  1033 		return GetCurrentNetwork(aTsyReqHandle, aPackage.Des1n(),
       
  1034 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneLocationAreaV1*, dataPtr2));
       
  1035 
       
  1036 	case EMobilePhoneGetCellInfo:
       
  1037 		return GetCellInfo(aTsyReqHandle, aPackage.Des1n());
       
  1038 		
       
  1039 	case EMobilePhoneGetCurrentNetworkNoLocation:
       
  1040 		return GetCurrentNetwork(aTsyReqHandle, aPackage.Des1n(), NULL);
       
  1041 
       
  1042 	case EMobilePhoneGetDetectedNetworksPhase1:
       
  1043 		return GetDetectedNetworksPhase1(aTsyReqHandle,
       
  1044 			REINTERPRET_CAST(RMobilePhone::TClientId*, dataPtr),
       
  1045 			REINTERPRET_CAST(TInt*, dataPtr2));
       
  1046 
       
  1047 	case EMobilePhoneGetDetectedNetworksPhase2:
       
  1048 		return GetDetectedNetworksPhase2(aTsyReqHandle,
       
  1049 			REINTERPRET_CAST(RMobilePhone::TClientId*, dataPtr), aPackage.Des2n());
       
  1050 
       
  1051 	case EMobilePhoneGetDetectedNetworksV2Phase1:
       
  1052 		return GetDetectedNetworksV2Phase1(aTsyReqHandle,
       
  1053 			REINTERPRET_CAST(RMobilePhone::TClientId*, dataPtr),
       
  1054 			REINTERPRET_CAST(TInt*, dataPtr2));
       
  1055 
       
  1056 	case EMobilePhoneGetDetectedNetworksV2Phase2:
       
  1057 		return GetDetectedNetworksV2Phase2(aTsyReqHandle,
       
  1058 			REINTERPRET_CAST(RMobilePhone::TClientId*, dataPtr), aPackage.Des2n());
       
  1059 
       
  1060 	case EMobilePhoneGetDetectedNetworksV5Phase1:
       
  1061 		return GetDetectedNetworksV5Phase1(aTsyReqHandle,
       
  1062 			REINTERPRET_CAST(RMobilePhone::TClientId*, dataPtr),
       
  1063 			REINTERPRET_CAST(TInt*, dataPtr2));
       
  1064 
       
  1065 	case EMobilePhoneGetDetectedNetworksV5Phase2:
       
  1066 		return GetDetectedNetworksV5Phase2(aTsyReqHandle,
       
  1067 			REINTERPRET_CAST(RMobilePhone::TClientId*, dataPtr), aPackage.Des2n());
       
  1068 
       
  1069 	case EMobilePhoneGetDetectedNetworksV8Phase1:
       
  1070 		return GetDetectedNetworksV8Phase1(aTsyReqHandle,
       
  1071 			REINTERPRET_CAST(RMobilePhone::TClientId*, dataPtr),
       
  1072 			REINTERPRET_CAST(TInt*, dataPtr2));
       
  1073 
       
  1074 	case EMobilePhoneGetDetectedNetworksV8Phase2:
       
  1075 		return GetDetectedNetworksV8Phase2(aTsyReqHandle,
       
  1076 			REINTERPRET_CAST(RMobilePhone::TClientId*, dataPtr), aPackage.Des2n());
       
  1077 
       
  1078 	case EMobilePhoneGetNetworkSelectionSetting:
       
  1079 		return GetNetworkSelectionSetting(aTsyReqHandle, aPackage.Des1n());
       
  1080 
       
  1081 	case EMobilePhoneSetNetworkSelectionSetting:
       
  1082 		return SetNetworkSelectionSetting(aTsyReqHandle, aPackage.Des1n());
       
  1083 
       
  1084 	case EMobilePhoneSelectNetwork:
       
  1085 		return SelectNetwork(aTsyReqHandle,
       
  1086 			REINTERPRET_CAST(TBool*, dataPtr),
       
  1087 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneNetworkManualSelection*, dataPtr2));
       
  1088 
       
  1089 	case EMobilePhoneGetNITZInfo:
       
  1090 		return GetNetworkTimeInfo(aTsyReqHandle,
       
  1091 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneNITZ*, dataPtr));
       
  1092 
       
  1093 	case EMobilePhoneGetServiceProviderName:
       
  1094 		return GetServiceProviderName(aTsyReqHandle,
       
  1095 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneServiceProviderNameV2*, dataPtr));
       
  1096 
       
  1097 	case EMobilePhoneGetMultimodeCaps:
       
  1098 		return GetMultimodeCaps(aTsyReqHandle,
       
  1099 			REINTERPRET_CAST(TUint32*, dataPtr));
       
  1100 
       
  1101 	case EMobilePhoneGetPhoneStoreInfo:
       
  1102 		switch(aPackage.Type())
       
  1103 			{
       
  1104 			// Switch between the alternative implementations of GetPhoneStoreInfo
       
  1105 			case TDataPackage::EPackage1n2u:
       
  1106 				return GetPhoneStoreInfo(aTsyReqHandle,
       
  1107 						aPackage.Des1n(),aPackage.Des2u());
       
  1108 			case TDataPackage::EPackage1n2n:
       
  1109 				return GetPhoneStoreInfo(aTsyReqHandle, aPackage.Des2n(),
       
  1110 						REINTERPRET_CAST(RMobilePhone::TPhoneStoreNameAndIccType*, dataPtr));
       
  1111 			default:
       
  1112 				return NULL;
       
  1113 			}
       
  1114 
       
  1115 	case EMobilePhoneGetIccAccessCaps:
       
  1116 		return GetIccAccessCaps(aTsyReqHandle,
       
  1117 			REINTERPRET_CAST(TUint32*, dataPtr));
       
  1118 			
       
  1119 	case EMobilePhoneGetIccIdentity:
       
  1120 		return GetIccIdentity(aTsyReqHandle, REINTERPRET_CAST(RMobilePhone::TIccIdentity*, dataPtr));
       
  1121 
       
  1122 	case EMobilePhoneGetCustomerServiceProfile:
       
  1123 		return GetCustomerServiceProfile(aTsyReqHandle, aPackage.Des1n());
       
  1124 
       
  1125 	case EMobilePhoneGetServiceTable:
       
  1126 		return GetServiceTable(aTsyReqHandle,
       
  1127 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneServiceTable*,dataPtr),
       
  1128 			aPackage.Des2n());
       
  1129 
       
  1130 	case EMobilePhoneGetBatteryCaps:
       
  1131 		return GetBatteryCaps(aTsyReqHandle,
       
  1132 			REINTERPRET_CAST(TUint32*, dataPtr));
       
  1133 
       
  1134 	case EMobilePhoneGetBatteryInfo:
       
  1135 		return GetBatteryInfo(aTsyReqHandle,
       
  1136 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneBatteryInfoV1*, dataPtr));
       
  1137 
       
  1138 	case EMobilePhoneGetSignalCaps:
       
  1139 		return GetSignalCaps(aTsyReqHandle,
       
  1140 			REINTERPRET_CAST(TUint32*, dataPtr));
       
  1141 
       
  1142 	case EMobilePhoneGetSignalStrength:
       
  1143 		return GetSignalStrength(aTsyReqHandle,
       
  1144 			REINTERPRET_CAST(TInt32*, dataPtr),
       
  1145 			REINTERPRET_CAST(TInt8*, dataPtr2));
       
  1146 
       
  1147 	case EMobilePhoneGetIndicatorCaps:
       
  1148 		return GetIndicatorCaps(aTsyReqHandle,
       
  1149 			REINTERPRET_CAST(TUint32*, dataPtr),
       
  1150 			REINTERPRET_CAST(TUint32*, dataPtr2));
       
  1151 
       
  1152 	case EMobilePhoneGetIndicator:
       
  1153 		return GetIndicator(aTsyReqHandle,
       
  1154 			REINTERPRET_CAST(TUint32*, dataPtr));
       
  1155 
       
  1156 	case EMobilePhoneGetIdentityCaps:
       
  1157 		return GetIdentityCaps(aTsyReqHandle,
       
  1158 			REINTERPRET_CAST(TUint32*, dataPtr));
       
  1159 
       
  1160 	case EMobilePhoneGetPhoneId:
       
  1161 		return GetPhoneId(aTsyReqHandle,
       
  1162 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneIdentityV1*, dataPtr));
       
  1163 
       
  1164 	case EMobilePhoneGetSubscriberId:
       
  1165 		return GetSubscriberId(aTsyReqHandle,
       
  1166 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneSubscriberId*, dataPtr));
       
  1167 
       
  1168 	case EMobilePhoneGetDefaultPrivacy:
       
  1169 		return GetDefaultPrivacy(aTsyReqHandle,
       
  1170 			REINTERPRET_CAST(RMobilePhone::TMobilePhonePrivacy*, dataPtr));
       
  1171 
       
  1172 	case EMobilePhoneSetDefaultPrivacy:
       
  1173 		return SetDefaultPrivacy(aTsyReqHandle,
       
  1174 			REINTERPRET_CAST(RMobilePhone::TMobilePhonePrivacy*, dataPtr));
       
  1175 
       
  1176 	case EMobilePhoneGetCallServiceCaps:
       
  1177 		return GetCallServiceCaps(aTsyReqHandle,
       
  1178 			REINTERPRET_CAST(TUint32*, dataPtr));
       
  1179 
       
  1180 	case EMobilePhoneGetCallForwardingStatusPhase1:
       
  1181 		return GetCallForwardingStatusPhase1(aTsyReqHandle,
       
  1182 			REINTERPRET_CAST(CRetrieveMobilePhoneCFList::TGetCallForwardingRequest*, dataPtr),
       
  1183 			REINTERPRET_CAST(TInt*, dataPtr2));
       
  1184 
       
  1185 	case EMobilePhoneGetCallForwardingStatusPhase2:
       
  1186 		return GetCallForwardingStatusPhase2(aTsyReqHandle,
       
  1187 			REINTERPRET_CAST(RMobilePhone::TClientId*, dataPtr), aPackage.Des2n());
       
  1188 
       
  1189 	case EMobilePhoneGetFeatureCode:
       
  1190 		return GetFeatureCodeString(aTsyReqHandle,
       
  1191 			REINTERPRET_CAST(RMobilePhone::TNetworkServiceAndAction*, dataPtr),
       
  1192 			aPackage.Des2u());
       
  1193 
       
  1194 	case EMobilePhoneGetIdentityServiceStatus:
       
  1195 		return GetIdentityServiceStatus(aTsyReqHandle,
       
  1196 			REINTERPRET_CAST(RMobilePhone::TIdServiceAndLocation*, dataPtr),
       
  1197 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneIdServiceStatus*,dataPtr2));
       
  1198 
       
  1199 	case EMobilePhoneGetBarringStatusPhase1:
       
  1200 		return GetCallBarringPhase1(aTsyReqHandle,
       
  1201 			REINTERPRET_CAST(CRetrieveMobilePhoneCBList::TGetCallBarringRequest*, dataPtr),
       
  1202 			REINTERPRET_CAST(TInt*, dataPtr2));
       
  1203 
       
  1204 	case EMobilePhoneGetBarringStatusPhase2:
       
  1205 		return GetCallBarringPhase2(aTsyReqHandle,
       
  1206 			REINTERPRET_CAST(RMobilePhone::TClientId*, dataPtr), aPackage.Des2n());
       
  1207 
       
  1208 	case EMobilePhoneSetCallBarringStatus:
       
  1209 		return SetCallBarringStatus(aTsyReqHandle,
       
  1210 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneCBCondition*,dataPtr),
       
  1211 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneCBChangeV1*,dataPtr2));
       
  1212 
       
  1213 	case EMobilePhoneSetCallBarringPassword:
       
  1214 		return SetCallBarringPassword(aTsyReqHandle,
       
  1215 			REINTERPRET_CAST(RMobilePhone::TMobilePhonePasswordChangeV1*,dataPtr));
       
  1216 
       
  1217 	case EMobilePhoneSetSSPassword:
       
  1218 		return SetSSPassword(aTsyReqHandle,
       
  1219 			REINTERPRET_CAST(RMobilePhone::TMobilePhonePasswordChangeV2*,dataPtr),
       
  1220 			REINTERPRET_CAST(TInt*, dataPtr2));
       
  1221 
       
  1222 	case EMobilePhoneGetWaitingStatusPhase1:
       
  1223 		return GetCallWaitingPhase1(aTsyReqHandle,
       
  1224 			REINTERPRET_CAST(CRetrieveMobilePhoneCWList::TGetCallWaitingRequest*, dataPtr),
       
  1225 			REINTERPRET_CAST(TInt*, dataPtr2));
       
  1226 
       
  1227 	case EMobilePhoneGetWaitingStatusPhase2:
       
  1228 		return GetCallWaitingPhase2(aTsyReqHandle,
       
  1229 			REINTERPRET_CAST(RMobilePhone::TClientId*, dataPtr), aPackage.Des2n());
       
  1230 
       
  1231 	case EMobilePhoneSetCallWaitingStatus:
       
  1232 		return SetCallWaitingStatus(aTsyReqHandle,
       
  1233 			REINTERPRET_CAST(RMobilePhone::TMobileService*, dataPtr),
       
  1234 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneServiceAction*, dataPtr2));
       
  1235 
       
  1236 	case EMobilePhoneGetCCBSStatus:
       
  1237 		return GetCCBSStatus(aTsyReqHandle,
       
  1238 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneCCBSStatus*,dataPtr),
       
  1239 			REINTERPRET_CAST(RMobilePhone::TMobileInfoLocation*,dataPtr2));
       
  1240 
       
  1241 	case EMobilePhoneAcceptCCBSRecall:
       
  1242 		return AcceptCCBSRecall(aTsyReqHandle,
       
  1243 			REINTERPRET_CAST(TInt* ,dataPtr),aPackage.Des2u());
       
  1244 
       
  1245 	case EMobilePhoneRefuseCCBSRecall:
       
  1246 		return RefuseCCBSRecall(aTsyReqHandle,
       
  1247 			REINTERPRET_CAST(TInt* ,dataPtr));
       
  1248 
       
  1249 	case EMobilePhoneDeactivateCCBS:
       
  1250 		return DeactivateCCBS(aTsyReqHandle, 
       
  1251 			REINTERPRET_CAST(TInt* ,dataPtr));
       
  1252 
       
  1253 	case EMobilePhoneGetCompletionRequestsPhase1:
       
  1254 		return GetCallCompletionPhase1(aTsyReqHandle, 
       
  1255 			REINTERPRET_CAST(RMobilePhone::TClientId*,dataPtr), REINTERPRET_CAST(TInt*,dataPtr2));
       
  1256 
       
  1257 	case EMobilePhoneGetCompletionRequestsPhase2:
       
  1258 		return GetCallCompletionPhase2(aTsyReqHandle, 
       
  1259 			REINTERPRET_CAST(RMobilePhone::TClientId*,dataPtr), aPackage.Des2n());
       
  1260 
       
  1261 	case EMobilePhoneGetAlternatingCallCaps:
       
  1262 		return GetAlternatingCallCaps(aTsyReqHandle,
       
  1263 			REINTERPRET_CAST(TUint32*,dataPtr));
       
  1264 
       
  1265 	case EMobilePhoneGetAlternatingCallMode:
       
  1266 		return GetAlternatingCallMode(aTsyReqHandle,
       
  1267 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneAlternatingCallMode*,dataPtr),
       
  1268 			REINTERPRET_CAST(RMobilePhone::TMobileService*,dataPtr2));
       
  1269 	
       
  1270 	case EMobilePhoneSetAlternatingCallMode:
       
  1271 		return SetAlternatingCallMode(aTsyReqHandle,
       
  1272 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneAlternatingCallMode*,dataPtr),
       
  1273 			REINTERPRET_CAST(RMobilePhone::TMobileService*,dataPtr2));
       
  1274 	
       
  1275 	case EMobilePhoneGetALSLine:
       
  1276 		return GetALSLine(aTsyReqHandle,
       
  1277 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneALSLine*,dataPtr));
       
  1278 	
       
  1279 	case EMobilePhoneSetALSLine:
       
  1280 		return SetALSLine(aTsyReqHandle,
       
  1281 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneALSLine*,dataPtr));
       
  1282 
       
  1283 	case EMobilePhoneGetCostCaps:
       
  1284 		return GetCostCaps(aTsyReqHandle,
       
  1285 			REINTERPRET_CAST(TUint32*,dataPtr));
       
  1286 
       
  1287 	case EMobilePhoneSetMaxCostMeter:
       
  1288 		return SetMaxCostMeter(aTsyReqHandle,
       
  1289 			REINTERPRET_CAST(TUint*,dataPtr));
       
  1290 
       
  1291 	case EMobilePhoneClearCostMeter:
       
  1292 		return ClearCostMeter(aTsyReqHandle,
       
  1293 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneCostMeters*,dataPtr));
       
  1294 
       
  1295 	case EMobilePhoneSetPuct:
       
  1296 		return SetPuct(aTsyReqHandle,aPackage.Des1n());
       
  1297 
       
  1298 	case EMobilePhoneGetCostInfo:
       
  1299 		return GetCostInfo(aTsyReqHandle,aPackage.Des1n());
       
  1300 
       
  1301 	case EMobilePhoneGetSecurityCaps:
       
  1302 		return GetSecurityCaps(aTsyReqHandle,
       
  1303 			REINTERPRET_CAST(TUint32*,dataPtr));
       
  1304 
       
  1305 	case EMobilePhoneGetLockInfo:
       
  1306 		return GetLockInfo(aTsyReqHandle,
       
  1307 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneLock *, dataPtr),
       
  1308 			aPackage.Des2n());
       
  1309 
       
  1310 	case EMobilePhoneSetLockSetting:
       
  1311 		return SetLockSetting(aTsyReqHandle,
       
  1312 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneLock *, dataPtr),
       
  1313 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneLockSetting *, dataPtr2)
       
  1314 			);
       
  1315 	case EMobilePhoneChangeSecurityCode:
       
  1316 		return ChangeSecurityCode(aTsyReqHandle,
       
  1317 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneSecurityCode *, dataPtr),
       
  1318 			REINTERPRET_CAST(RMobilePhone::TMobilePhonePasswordChangeV1 *, dataPtr2));
       
  1319 
       
  1320 	case EMobilePhoneGetSecurityCodeInfo:
       
  1321 		return GetSecurityCodeInfo(aTsyReqHandle,
       
  1322 			reinterpret_cast<RMobilePhone::TMobilePhoneSecurityCode *> (dataPtr),
       
  1323 			aPackage.Des2n());
       
  1324 
       
  1325 	case EMobilePhoneVerifySecurityCode:
       
  1326 		return VerifySecurityCode(aTsyReqHandle,
       
  1327 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneSecurityCode *,dataPtr),
       
  1328 			REINTERPRET_CAST(RMobilePhone::TCodeAndUnblockCode *, dataPtr2));
       
  1329 
       
  1330 	case EMobilePhoneAbortSecurityCode:
       
  1331 		return AbortSecurityCode(aTsyReqHandle,
       
  1332 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneSecurityCode *, dataPtr));
       
  1333 
       
  1334 	case EMobilePhoneGetFdnStatus:
       
  1335 		return GetFdnStatus(aTsyReqHandle,
       
  1336 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneFdnStatus*, dataPtr));
       
  1337 
       
  1338 	case EMobilePhoneSetFdnSetting:
       
  1339 		return SetFdnSetting(aTsyReqHandle,
       
  1340 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneFdnSetting*, dataPtr));
       
  1341 
       
  1342 	case EMobilePhoneGetMulticallParams:
       
  1343 		return GetMulticallParams(aTsyReqHandle, aPackage.Des1n());
       
  1344 
       
  1345 	case EMobilePhoneSetMulticallParams:
       
  1346 		return SetMulticallParams(aTsyReqHandle, REINTERPRET_CAST(TInt*, dataPtr));
       
  1347 
       
  1348 	case EMobilePhoneGetIncomingCallType:
       
  1349 		return GetIncomingCallType(aTsyReqHandle, 
       
  1350 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneIncomingCallType*, dataPtr), 
       
  1351 			aPackage.Des2n());
       
  1352 
       
  1353 	case EMobilePhoneSetIncomingCallType:
       
  1354 		return SetIncomingCallType(aTsyReqHandle,
       
  1355 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneIncomingCallType*, dataPtr), 
       
  1356 			aPackage.Des2n());
       
  1357 
       
  1358 	case EMobilePhoneGetUUSSetting:
       
  1359 		return GetUUSSetting(aTsyReqHandle, 
       
  1360 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneUUSSetting*, dataPtr));
       
  1361 
       
  1362 	case EMobilePhoneSetUUSSetting:
       
  1363 		return SetUUSSetting(aTsyReqHandle, 
       
  1364 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneUUSSetting*, dataPtr));
       
  1365 
       
  1366 	case EMobilePhoneGetIccMessageWaitingIndicators:
       
  1367 		return GetIccMessageWaitingIndicators(aTsyReqHandle,aPackage.Des1n());
       
  1368 
       
  1369 	case EMobilePhoneSetIccMessageWaitingIndicators:
       
  1370 		return SetIccMessageWaitingIndicators(aTsyReqHandle,aPackage.Des1n());
       
  1371 	
       
  1372 	case EMobilePhoneGetMultimediaCallPreference:
       
  1373 		return GetMultimediaCallPreference(aTsyReqHandle,
       
  1374 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneMultimediaSettings*, dataPtr));
       
  1375 
       
  1376 	case EMobilePhoneSetMultimediaCallPreference:
       
  1377 		return SetMultimediaCallPreference(aTsyReqHandle,
       
  1378 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneMultimediaSettings*, dataPtr));
       
  1379 
       
  1380 	case EMobilePhoneGetNetworkSecurityLevel:
       
  1381 		return GetNetworkSecurityLevel(aTsyReqHandle, 
       
  1382 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneNetworkSecurity*, dataPtr));
       
  1383 
       
  1384 	case EMobilePhoneEnumerateUSimApplications:
       
  1385 		return EnumerateUSimApplications(aTsyReqHandle,
       
  1386 			REINTERPRET_CAST(TInt*, dataPtr),
       
  1387 			REINTERPRET_CAST(RMobilePhone::TAID*, dataPtr2));
       
  1388 
       
  1389 	case EMobilePhoneGetUSimAppsSelectionMode:
       
  1390 		return GetUSimAppsSelectionMode(aTsyReqHandle,
       
  1391 			REINTERPRET_CAST(RMobilePhone::TUSimSelectionMode*, dataPtr));
       
  1392 
       
  1393 	case EMobilePhoneSetUSimAppsSelectionMode:
       
  1394 		return SetUSimAppsSelectionMode(aTsyReqHandle,
       
  1395 			REINTERPRET_CAST(RMobilePhone::TUSimSelectionMode*, dataPtr));
       
  1396 
       
  1397 	case EMobilePhoneSetUSimApplicationStatus:
       
  1398 		return SetUSimApplicationStatus(aTsyReqHandle,
       
  1399 			REINTERPRET_CAST(RMobilePhone::TAID*, dataPtr),
       
  1400 			REINTERPRET_CAST(RMobilePhone::TUSimAppAction*, dataPtr2));
       
  1401 
       
  1402 	case EMobilePhoneGetUSimApplicationsInfo:
       
  1403 		return GetUSimApplicationInfo(aTsyReqHandle,
       
  1404 			REINTERPRET_CAST(TInt*, dataPtr),
       
  1405 			REINTERPRET_CAST(RMobilePhone::TUSimApplicationInfoV2*, dataPtr2));
       
  1406 			
       
  1407 	case EMobilePhoneEnumerateSmartCardApplications:
       
  1408 		return EnumerateSmartCardApplications(aTsyReqHandle,
       
  1409 			reinterpret_cast<TUint*>(dataPtr));
       
  1410 			
       
  1411 	case EMobilePhoneGetSmartCardApplicationInfo:
       
  1412 		return GetSmartCardApplicationInfo(aTsyReqHandle, reinterpret_cast<TUint*>(dataPtr), aPackage.Des2n());
       
  1413 		
       
  1414 	case EMobilePhoneNotifySmartCardApplicationInfoChange:
       
  1415 		return NotifySmartCardApplicationInfoChange(aTsyReqHandle, reinterpret_cast<RMobilePhone::TSmartCardApplicationEvent*>(dataPtr2), reinterpret_cast<RMobilePhone::TAID*>(dataPtr));
       
  1416 		
       
  1417 	case EMobilePhoneSetSmartCardApplicationStatus:
       
  1418 		return SetSmartCardApplicationStatus(aTsyReqHandle, reinterpret_cast<RMobilePhone::TAID*>(dataPtr), *reinterpret_cast<RMobilePhone::TSmartCardApplicationAction*>(dataPtr2));
       
  1419 		
       
  1420 	case EMobilePhoneGetScFileInfo:
       
  1421 		return GetScFileInfo(aTsyReqHandle, *reinterpret_cast<RMobilePhone::TScFilePath*>(dataPtr), aPackage.Des2n());
       
  1422 		
       
  1423 	case EMobilePhoneReadScFile:
       
  1424 		return ReadScFile(aTsyReqHandle, *reinterpret_cast<RMobilePhone::TScFilePathWithAccessOffsets*>(dataPtr), aPackage.Des2n());
       
  1425 		
       
  1426 	case EMobilePhoneUpdateScFile:
       
  1427 		return UpdateScFile(aTsyReqHandle, *reinterpret_cast<RMobilePhone::TScFilePathWithAccessOffsets*>(dataPtr), aPackage.Des2n());
       
  1428 		
       
  1429 	case EMobilePhoneGetCurrentActiveUSimApplication:
       
  1430 		return GetCurrentActiveUSimApplication(aTsyReqHandle, reinterpret_cast<RMobilePhone::TAID*>(dataPtr));
       
  1431 			
       
  1432 	case EMobilePhoneGetHomeNetworkSearchPeriod:
       
  1433 		return GetHomeNetworkSearchPeriod(aTsyReqHandle,
       
  1434 			REINTERPRET_CAST(TInt*, dataPtr));
       
  1435 			
       
  1436 	case EMobilePhoneGetLastUsedAccessTechnology:
       
  1437 		return GetLastUsedAccessTechnology(aTsyReqHandle, 
       
  1438 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneNetworkAccess*, dataPtr));
       
  1439 			
       
  1440 	case EMobilePhoneGetNetworkInvScanSetting:
       
  1441 		return GetNetworkInvScanSetting(aTsyReqHandle, 
       
  1442 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneInvestigationScan*, dataPtr));
       
  1443 			
       
  1444 	case EMobilePhoneGetCallForwardingIndicator:
       
  1445 		return GetCallForwardingIndicator(aTsyReqHandle, aPackage.Des1n());
       
  1446 		
       
  1447 	case EMobilePhoneGetCompMethodName:
       
  1448 		return GetCompMethodName(aTsyReqHandle, 
       
  1449 			*REINTERPRET_CAST(TUint8*, dataPtr), aPackage.Des2u());
       
  1450 			
       
  1451 	case EMobilePhoneEnumerateAPNEntries:
       
  1452 		return EnumerateAPNEntries(aTsyReqHandle, 
       
  1453 			REINTERPRET_CAST(TUint32*, dataPtr));
       
  1454 	
       
  1455 	case EMobilePhoneGetAPNname:
       
  1456 		return GetAPNname(aTsyReqHandle, 
       
  1457 			*REINTERPRET_CAST(TUint32*, dataPtr), aPackage.Des2n());
       
  1458 
       
  1459 	case EMobilePhoneAppendAPNName:
       
  1460 		return AppendAPNName(aTsyReqHandle, aPackage.Des1n());
       
  1461 			
       
  1462 	case EMobilePhoneDeleteAPNName:
       
  1463 		return DeleteAPNName(aTsyReqHandle, 
       
  1464 			*REINTERPRET_CAST(TUint32*, dataPtr));
       
  1465 	
       
  1466 	case EMobilePhoneNotifyAPNListChanged:
       
  1467 		return NotifyAPNListChanged(aTsyReqHandle);
       
  1468 	
       
  1469 	case EMobilePhoneSetAPNControlListServiceStatus:
       
  1470 		return SetAPNControlListServiceStatus(aTsyReqHandle, 
       
  1471 			*REINTERPRET_CAST(RMobilePhone::TAPNControlListServiceStatus*, dataPtr));
       
  1472 			
       
  1473 	case EMobilePhoneGetAPNControlListServiceStatus:
       
  1474 		return GetAPNControlListServiceStatus(aTsyReqHandle,
       
  1475 			REINTERPRET_CAST(RMobilePhone::TAPNControlListServiceStatus*, dataPtr));
       
  1476 			
       
  1477 	case EMobilePhoneNotifyAPNControlListServiceStatusChange:
       
  1478 		return NotifyAPNControlListServiceStatusChange(aTsyReqHandle,
       
  1479 			REINTERPRET_CAST(RMobilePhone::TAPNControlListServiceStatus*, dataPtr));
       
  1480 	
       
  1481 	case EMobilePhoneGetAirTimeDuration:
       
  1482 		return GetAirTimeDuration(aTsyReqHandle, 
       
  1483 			REINTERPRET_CAST(TTimeIntervalSeconds*, dataPtr));
       
  1484 			
       
  1485 	case EMobilePhoneClearBlacklist:
       
  1486 		return ClearBlacklist(aTsyReqHandle);
       
  1487 		
       
  1488 	case EMobilePhoneGetPersonalisationCaps:
       
  1489 		return GetPersonalisationCaps(aTsyReqHandle,
       
  1490 			REINTERPRET_CAST(TUint32*, dataPtr));
       
  1491 			
       
  1492 	case EMobilePhoneGetPersonalisationStatus:
       
  1493 		return GetPersonalisationStatus(aTsyReqHandle,
       
  1494 			REINTERPRET_CAST(TUint32*, dataPtr));
       
  1495 			
       
  1496 	case EMobilePhoneSetPersonalisationStatus:
       
  1497 		return SetPersonalisationStatus(aTsyReqHandle,
       
  1498 			REINTERPRET_CAST(RMobilePhone::TMobilePhonePersonalisation*, dataPtr), aPackage.Des2u()); 
       
  1499 			
       
  1500 	case EMobilePhoneGetNetworkName:
       
  1501 		return GetCurrentNetworkName(aTsyReqHandle, aPackage.Des1n(), aPackage.Des2n());	
       
  1502 		
       
  1503 	case EMobilePhoneGetPreferredNetworksPhase1:
       
  1504 		return GetPreferredNetworksPhase1(aTsyReqHandle, 
       
  1505 			REINTERPRET_CAST(RMobilePhone::TClientId*, dataPtr), 
       
  1506 			REINTERPRET_CAST(TInt*, dataPtr2));
       
  1507 
       
  1508 	case EMobilePhoneGetPreferredNetworksPhase2:
       
  1509 		return GetPreferredNetworksPhase2(aTsyReqHandle, 
       
  1510 			REINTERPRET_CAST(RMobilePhone::TClientId*, dataPtr), aPackage.Des2n());		
       
  1511 			
       
  1512 	case EMobilePhoneStorePreferredNetworksList:
       
  1513 		return StorePreferredNetworksList(aTsyReqHandle, aPackage.Des1n());
       
  1514 		
       
  1515 	case EMobilePhoneGetCipheringIndicatorStatus:
       
  1516 		return GetCipheringIndicatorStatus(aTsyReqHandle, 
       
  1517 			*REINTERPRET_CAST(RMobilePhone::TMobileCallCipheringIndicator*, dataPtr));
       
  1518 			
       
  1519 	case EMobilePhoneSetIdentityServiceStatus:
       
  1520 		return SetIdentityServiceStatus(aTsyReqHandle, 
       
  1521 			*REINTERPRET_CAST(RMobilePhone::TMobilePhoneIdService*, dataPtr),
       
  1522 			*REINTERPRET_CAST(RMobilePhone::TMobilePhoneIdServiceSetting*, dataPtr2));
       
  1523 
       
  1524 	// Flow controlled requests
       
  1525 
       
  1526 	case EMobilePhoneSendNetworkServiceRequest:
       
  1527 		return SendNetworkServiceRequest(aTsyReqHandle, aPackage.Des1u());
       
  1528 
       
  1529 	case EMobilePhoneSendDTMFTones:
       
  1530 		return SendDTMFTones(aTsyReqHandle, aPackage.Des1u());
       
  1531 
       
  1532 	case EMobilePhoneReadDTMFTones:
       
  1533 		return ReadDTMFTones(aTsyReqHandle, aPackage.Des1u());
       
  1534 
       
  1535 	case EMobilePhoneStartDTMFTone:
       
  1536 		return StartDTMFTone(aTsyReqHandle, 
       
  1537 			REINTERPRET_CAST(TChar*, dataPtr));
       
  1538 
       
  1539 	case EMobilePhoneContinueDTMFStringSending:
       
  1540 		return ContinueDTMFStringSending(aTsyReqHandle,
       
  1541 			REINTERPRET_CAST(TBool*,dataPtr));
       
  1542 
       
  1543 	case EMobilePhoneSetCallForwardingStatus:
       
  1544 		return SetCallForwardingStatus(aTsyReqHandle, 
       
  1545 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneCFCondition*, dataPtr),
       
  1546 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneCFChangeV1*, dataPtr2) );
       
  1547 
       
  1548 	case EMobilePhoneProgramFeatureCode:
       
  1549 		return ProgramFeatureCodeString(aTsyReqHandle, 
       
  1550 			aPackage.Des2u(),
       
  1551 			REINTERPRET_CAST(RMobilePhone::TNetworkServiceAndAction*, dataPtr));
       
  1552 		
       
  1553 	case EMobilePhoneTerminateAllCalls:
       
  1554 		return TerminateAllCalls(aTsyReqHandle);
       
  1555 			
       
  1556 	case EMobilePhoneGetMailboxNumbers:
       
  1557 		return GetMailboxNumbers (aTsyReqHandle, aPackage.Des1n());
       
  1558 		
       
  1559 	case EMobilePhoneSetMmsUserConnParams:
       
  1560 		return SetMmsUserConnParams(aTsyReqHandle, aPackage.Des1n());
       
  1561 		
       
  1562 	case EMobilePhoneSetMmsUserPreferences:
       
  1563 		return SetMmsUserPreferences(aTsyReqHandle, aPackage.Des1n());
       
  1564 		
       
  1565 	case EMobilePhoneGetMmsConfig:
       
  1566 		return GetMmsConfig(aTsyReqHandle, 		
       
  1567 			*REINTERPRET_CAST(RMobilePhone::TMmsConnParams*,dataPtr), aPackage.Des2n());			
       
  1568 	//
       
  1569 	// Notification requests
       
  1570 	//
       
  1571 
       
  1572 	case EMobilePhoneNotifyModeChange:
       
  1573 		return NotifyModeChange(aTsyReqHandle, 
       
  1574 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneNetworkMode*, dataPtr));
       
  1575 
       
  1576 	case EMobilePhoneNotifyDTMFCapsChange:
       
  1577 		return NotifyDTMFCapsChange(aTsyReqHandle, 
       
  1578 			REINTERPRET_CAST(TUint32*, dataPtr));
       
  1579 	
       
  1580 	case EMobilePhoneNotifyStopInDTMFString:
       
  1581 		return NotifyStopInDTMFString(aTsyReqHandle);
       
  1582 
       
  1583 	case EMobilePhoneNotifyNetworkRegistrationStatusChange:
       
  1584 		return NotifyNetworkRegistrationStatusChange(aTsyReqHandle, 
       
  1585 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneRegistrationStatus*, dataPtr));
       
  1586 
       
  1587 	case EMobilePhoneNotifyCurrentNetworkChange:
       
  1588 		return NotifyCurrentNetworkChange(aTsyReqHandle, aPackage.Des1n(),
       
  1589 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneLocationAreaV1*, dataPtr2));
       
  1590 
       
  1591 	case EMobilePhoneNotifyCurrentNetworkNoLocationChange:
       
  1592 		return NotifyCurrentNetworkChange(aTsyReqHandle, aPackage.Des1n(), NULL);
       
  1593 
       
  1594 	case EMobilePhoneNotifyCellInfoChange:
       
  1595 		return NotifyCellInfoChange(aTsyReqHandle, aPackage.Des1n());
       
  1596 	
       
  1597 	case EMobilePhoneNotifyIccAccessCapsChange:
       
  1598 		return NotifyIccAccessCapsChange(aTsyReqHandle, 
       
  1599 			REINTERPRET_CAST(TUint32*, dataPtr));
       
  1600 
       
  1601 	case EMobilePhoneNotifyBatteryInfoChange:
       
  1602 		return NotifyBatteryInfoChange(aTsyReqHandle, 
       
  1603 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneBatteryInfoV1*, dataPtr));
       
  1604 
       
  1605 	case EMobilePhoneNotifySignalStrengthChange:
       
  1606 		return NotifySignalStrengthChange(aTsyReqHandle,
       
  1607 			REINTERPRET_CAST(TInt32*, dataPtr), REINTERPRET_CAST(TInt8*, dataPtr2));
       
  1608 
       
  1609 	case EMobilePhoneNotifyIndicatorChange:
       
  1610 		return NotifyIndicatorChange(aTsyReqHandle, REINTERPRET_CAST(TUint32*, dataPtr));
       
  1611 
       
  1612 	case EMobilePhoneNotifyDefaultPrivacyChange:
       
  1613 		return NotifyDefaultPrivacyChange(aTsyReqHandle,
       
  1614 			REINTERPRET_CAST(RMobilePhone::TMobilePhonePrivacy*, dataPtr));
       
  1615 
       
  1616 	case EMobilePhoneNotifyCallForwardingStatusChange:
       
  1617 		return NotifyCallForwardingStatusChange(aTsyReqHandle,
       
  1618 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneCFCondition*, dataPtr));
       
  1619 
       
  1620 	case EMobilePhoneNotifyCallForwardingActive:
       
  1621 		return NotifyCallForwardingActive(aTsyReqHandle,
       
  1622 			REINTERPRET_CAST(RMobilePhone::TMobileService*, dataPtr),
       
  1623 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneCFActive*, dataPtr2));
       
  1624 
       
  1625 	case EMobilePhoneNotifyNetworkSelectionSettingChange:
       
  1626 		return NotifyNetworkSelectionSettingChange(aTsyReqHandle, aPackage.Des1n());
       
  1627 
       
  1628 	case EMobilePhoneNotifyNITZInfoChange:
       
  1629 		return NotifyNetworkTimeInfoChange(aTsyReqHandle,
       
  1630 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneNITZ*, dataPtr));
       
  1631 
       
  1632 	case EMobilePhoneNotifyCallServiceCapsChange:
       
  1633 		return NotifyCallServiceCapsChange(aTsyReqHandle, 
       
  1634 			REINTERPRET_CAST(TUint32*, dataPtr));
       
  1635 
       
  1636 	case EMobilePhoneNotifyCallBarringStatusChange:
       
  1637 		return NotifyCallBarringStatusChange(aTsyReqHandle,
       
  1638 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneCBCondition*,dataPtr));
       
  1639 	
       
  1640 	case EMobilePhoneNotifyCallWaitingStatusChange:
       
  1641 		return NotifyCallWaitingStatusChange(aTsyReqHandle,
       
  1642 			aPackage.Des1n());
       
  1643 
       
  1644 	case EMobilePhoneNotifyCCBSStatusChange:
       
  1645 		return NotifyCCBSStatusChange(aTsyReqHandle,
       
  1646 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneCCBSStatus*,dataPtr));
       
  1647 
       
  1648 	case EMobilePhoneNotifyCCBSRecall:
       
  1649 		return NotifyCCBSRecall(aTsyReqHandle,aPackage.Des1n());
       
  1650 
       
  1651 	case EMobilePhoneNotifyAlternatingCallCapsChange:
       
  1652 		return NotifyAlternatingCallCapsChange(aTsyReqHandle,
       
  1653 			REINTERPRET_CAST(TUint32*,dataPtr));
       
  1654 
       
  1655 	case EMobilePhoneNotifyAlternatingCallModeChange:
       
  1656 		return NotifyAlternatingCallModeChange(aTsyReqHandle,
       
  1657 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneAlternatingCallMode*,dataPtr),
       
  1658 			REINTERPRET_CAST(RMobilePhone::TMobileService*,dataPtr2));
       
  1659 
       
  1660 	case EMobilePhoneNotifyALSLineChange:
       
  1661 		return NotifyALSLineChange(aTsyReqHandle,
       
  1662 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneALSLine*,dataPtr));
       
  1663 
       
  1664 	case EMobilePhoneNotifyCostCapsChange:
       
  1665 		return NotifyCostCapsChange(aTsyReqHandle,
       
  1666 			REINTERPRET_CAST(TUint32*,dataPtr));
       
  1667 
       
  1668 	case EMobilePhoneNotifyCostInfoChange:
       
  1669 		return NotifyCostInfoChange(aTsyReqHandle,aPackage.Des1n());
       
  1670 
       
  1671 	case EMobilePhoneNotifySecurityCapsChange:
       
  1672 		return NotifySecurityCapsChange(aTsyReqHandle,
       
  1673 			REINTERPRET_CAST(TUint32*, dataPtr));
       
  1674 
       
  1675 	case EMobilePhoneNotifyLockInfoChange:
       
  1676 		return NotifyLockInfoChange(aTsyReqHandle,
       
  1677 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneLock *, dataPtr),
       
  1678 			aPackage.Des2n());
       
  1679 
       
  1680 	case EMobilePhoneNotifySecurityCodeInfoChange:
       
  1681 		return NotifySecurityCodeInfoChange(aTsyReqHandle,
       
  1682 			reinterpret_cast<RMobilePhone::TMobilePhoneSecurityCode*> (dataPtr),
       
  1683 			aPackage.Des2n());
       
  1684 
       
  1685 	case EMobilePhoneNotifySecurityEvent:
       
  1686 		return NotifyOnSecurityEvent(aTsyReqHandle,
       
  1687 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneSecurityEvent*,dataPtr));
       
  1688 
       
  1689 	case EMobilePhoneNotifyMessageWaiting:
       
  1690 		return NotifyMessageWaiting(aTsyReqHandle,REINTERPRET_CAST(TInt*,dataPtr));
       
  1691 
       
  1692 	case EMobilePhoneNotifyIccMessageWaitingIndicatorsChange:
       
  1693 		return NotifyIccMessageWaitingIndicatorsChange(aTsyReqHandle,aPackage.Des1n());
       
  1694 	
       
  1695 	case EMobilePhoneNotifyFdnStatusChange:
       
  1696 		return NotifyFdnStatusChange(aTsyReqHandle,
       
  1697 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneFdnStatus*,dataPtr));
       
  1698 
       
  1699 	case EMobilePhoneNotifyMulticallParamsChange:
       
  1700 		return NotifyMulticallParamsChange(aTsyReqHandle, aPackage.Des1n());
       
  1701 
       
  1702 	case EMobilePhoneNotifyIncomingCallTypeChange:
       
  1703 		return NotifyIncomingCallTypeChange(aTsyReqHandle, 
       
  1704 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneIncomingCallType*, dataPtr),
       
  1705 			aPackage.Des2n());
       
  1706 	
       
  1707 	case EMobilePhoneNotifyUUSSettingChange:
       
  1708 		return NotifyUUSSettingChange(aTsyReqHandle, 
       
  1709 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneUUSSetting*, dataPtr));
       
  1710 
       
  1711 	case EMobilePhoneNotifyMultimediaCallPreferenceChange:
       
  1712 		return NotifyMultimediaCallPreferenceChange(aTsyReqHandle, 
       
  1713 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneMultimediaSettings*, dataPtr));
       
  1714 
       
  1715 	case EMobilePhoneNotifyNetworkSecurityLevelChange:
       
  1716 		return NotifyNetworkSecurityLevelChange(aTsyReqHandle, 
       
  1717 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneNetworkSecurity*, dataPtr));
       
  1718 
       
  1719 	case EMobilePhoneNotifyUSimAppsSelectionModeChange:
       
  1720 		return NotifyUSimAppsSelectionModeChange(aTsyReqHandle, 
       
  1721 			REINTERPRET_CAST(RMobilePhone::TUSimSelectionMode*, dataPtr));	
       
  1722 
       
  1723 	case EMobilePhoneNotifyUSimApplicationsInfoChange:
       
  1724 		return NotifyUSimApplicationsInfoChange(aTsyReqHandle,
       
  1725 			REINTERPRET_CAST(TInt*, dataPtr),
       
  1726 			REINTERPRET_CAST(RMobilePhone::TAID*, dataPtr2));	
       
  1727 			
       
  1728 	case EMobilePhoneNotifyMailboxNumbersChange:		
       
  1729 			return NotifyMailboxNumbersChange (aTsyReqHandle, aPackage.Des1n());		
       
  1730 
       
  1731 	case EMobilePhoneNotifyMmsUpdate:
       
  1732 		return NotifyMmsUpdate (aTsyReqHandle, aPackage.Des1n());
       
  1733 
       
  1734 	case EMobilePhoneNotifyMmsConfig:
       
  1735 		return NotifyMmsConfig(aTsyReqHandle, 		
       
  1736 			*REINTERPRET_CAST(RMobilePhone::TMmsConnParams*,dataPtr), aPackage.Des2n());
       
  1737 		
       
  1738 	case EMobilePhoneNotifyNetworkInvScanChange:
       
  1739 		return NotifyNetworkInvScanChange(aTsyReqHandle, 
       
  1740 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneInvestigationScan*, dataPtr));
       
  1741 			
       
  1742 	case EMobilePhoneNotifyNetworkInvScanEvent:
       
  1743 		return NotifyNetworkInvScanEvent(aTsyReqHandle, 
       
  1744 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneInvestigationScanEvent*, dataPtr));
       
  1745 			
       
  1746 	case EMobilePhoneNotifyAirTimeDurationChange:
       
  1747 		return NotifyAirTimeDurationChange(aTsyReqHandle,
       
  1748 			REINTERPRET_CAST(TTimeIntervalSeconds*,dataPtr));
       
  1749 
       
  1750 	case EMobilePhoneNotifySendNetworkServiceRequest:
       
  1751 		return NotifySendNetworkServiceRequest(aTsyReqHandle,
       
  1752 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneNotifySendSSOperation*, dataPtr), aPackage.Des2n());
       
  1753 
       
  1754 	case EMobilePhoneNotifyAllSendNetworkServiceRequest:
       
  1755 		return NotifyAllSendNetworkServiceRequest(aTsyReqHandle,
       
  1756 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneNotifySendSSOperation*, dataPtr), aPackage.Des2n());
       
  1757 	
       
  1758 	case EMobilePhoneNotifyDTMFEvent:
       
  1759 		return NotifyDTMFEvent(aTsyReqHandle, REINTERPRET_CAST(RMobilePhone::TMobilePhoneDTMFEvent*, dataPtr));
       
  1760 
       
  1761 	case EMobilePhoneNotifyStorePreferredNetworksListChange:
       
  1762 		return NotifyStorePreferredNetworksListChange(aTsyReqHandle);
       
  1763 
       
  1764 	case EMobilePhoneNotifyCipheringIndicatorStatus:
       
  1765 		return NotifyCipheringIndicatorStatus(aTsyReqHandle,
       
  1766 			*REINTERPRET_CAST(RMobilePhone::TMobileCallCipheringIndicator*, dataPtr));
       
  1767 
       
  1768 	case EMobilePhoneNotifyIdentityServiceStatus:
       
  1769 		return NotifyIdentityServiceStatus(aTsyReqHandle,
       
  1770 			*REINTERPRET_CAST(RMobilePhone::TMobilePhoneIdService*, dataPtr),
       
  1771 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneIdServiceStatus*, dataPtr2));
       
  1772 
       
  1773 	case EMobilePhoneNotifyIdentitySuppressionRejected:
       
  1774 		return NotifyIdentitySuppressionRejected(aTsyReqHandle);
       
  1775 
       
  1776 	case EMobilePhoneNotifyMulticallIndicatorChange:
       
  1777 		return NotifyMulticallIndicatorChange(aTsyReqHandle,
       
  1778 			REINTERPRET_CAST(RMobilePhone::TMobilePhoneMulticallIndicator*, dataPtr));
       
  1779 
       
  1780 	case EMobilePhoneAuthorizationInfoPhase1:
       
  1781 			return GetAuthorizationInfoPhase1(aTsyReqHandle,
       
  1782 			REINTERPRET_CAST(RMobilePhone::TClientId*,dataPtr),
       
  1783 			REINTERPRET_CAST(TInt*,dataPtr2));
       
  1784 
       
  1785 
       
  1786 	case EMobilePhoneAuthorizationInfoPhase2:
       
  1787 		return GetAuthorizationInfoPhase2(aTsyReqHandle,
       
  1788 			REINTERPRET_CAST(RMobilePhone::TClientId*,dataPtr), aPackage.Des2n());
       
  1789 			
       
  1790 	case EMobilePhoneIMSAuthenticate:
       
  1791 		return GetAuthenticationData(aTsyReqHandle, aPackage.Des1n());
       
  1792 
       
  1793 	case EMobilePhoneSmartCardAuthenticate:
       
  1794 		return GetSmartCardAuthenticationData(aTsyReqHandle, aPackage.Des1n(),
       
  1795 		         reinterpret_cast<RMobilePhone::TAID*>(dataPtr2));
       
  1796 
       
  1797 	case EMobilePhoneNotifyImsAuthorizationInfoChanged:
       
  1798 		return NotifyImsAuthorizationInfoChanged(aTsyReqHandle);
       
  1799 	
       
  1800 	case EETelPhoneSetEmergencyClient:
       
  1801 		return SetEmergencyClient(aTsyReqHandle,REINTERPRET_CAST(TUint32*, dataPtr));
       
  1802 
       
  1803 	case EMobilePhoneNotifyAuthenticateDataChange:
       
  1804 		return NotifyAuthenticateDataChange(aTsyReqHandle, aPackage.Des1n());
       
  1805 
       
  1806 	case EMobilePhoneGetAuthenticationParams:
       
  1807 		return GetAuthenticationParams(aTsyReqHandle, aPackage.Des1n(),aPackage.Des2n());
       
  1808 		
       
  1809 	case EMobilePhoneSetGbaBootstrapParams:
       
  1810 		return SetGbaBootstrapParams(aTsyReqHandle, reinterpret_cast<RMobilePhone::TAID*>(dataPtr2),aPackage.Des1n());
       
  1811 	
       
  1812 	case EMobilePhoneAuthenticationListPhase1:
       
  1813 		return GetAuthenticationListPhase1(aTsyReqHandle,
       
  1814 			REINTERPRET_CAST(CRetrieveMobilePhoneAuthenticationIds::TAuthRequestData*, dataPtr),REINTERPRET_CAST(TInt*, dataPtr2));
       
  1815 			
       
  1816 	case EMobilePhoneAuthenticationListPhase2:
       
  1817 		return GetAuthenticationListPhase2(aTsyReqHandle,
       
  1818 			REINTERPRET_CAST(RMobilePhone::TClientId*, dataPtr), aPackage.Des2n());
       
  1819 	
       
  1820 	case EMobilePhoneNotifyWlanDataChange:
       
  1821 		return NotifyWlanDataChange(aTsyReqHandle,aPackage.Des1n());
       
  1822 	
       
  1823 	case EMobilePhoneNotifyPreferredWlanSIDListChange:
       
  1824 		return NotifyPreferredWlanSIDListChange(aTsyReqHandle);
       
  1825 		
       
  1826 	case EMobilePhoneGetWlanData:
       
  1827 		return GetWlanData(aTsyReqHandle,aPackage.Des1n());
       
  1828 		
       
  1829 	case EMobilePhoneSetWlanData:
       
  1830 		return SetWlanData(aTsyReqHandle,aPackage.Des1n());
       
  1831 	
       
  1832 	case EMobilePhoneGetPreferredWlanSIDsPhase1:
       
  1833 		return GetPreferredWlanSIDsPhase1(aTsyReqHandle, 
       
  1834 			REINTERPRET_CAST(RMobilePhone::TClientId*, dataPtr), 
       
  1835 			REINTERPRET_CAST(TInt*, dataPtr2));
       
  1836 			
       
  1837 	case EMobilePhoneGetPreferredWlanSIDsPhase2:
       
  1838 		return GetPreferredWlanSIDsPhase2(aTsyReqHandle, 
       
  1839 			REINTERPRET_CAST(RMobilePhone::TClientId*, dataPtr), aPackage.Des2n());		
       
  1840 						
       
  1841 	case EMobilePhoneStorePreferredWlanSIDList:
       
  1842 		return StorePreferredWlanSIDList(aTsyReqHandle, aPackage.Des1n());
       
  1843 		
       
  1844 	default:
       
  1845 		return KErrNotSupported;
       
  1846 		}
       
  1847 	}
       
  1848 
       
  1849 TInt CPhoneDMmTsy::CancelService(const TInt aIpc,const TTsyReqHandle aTsyReqHandle)
       
  1850 	{
       
  1851 	// CancelService is called by the server when it is "cleaning-up" any still outstanding
       
  1852 	// asynchronous requests before closing a client's sub-session.
       
  1853 	// This will happen if a client closes its R-class handle without cancelling outstanding
       
  1854 	// asynchronous requests.
       
  1855 
       
  1856 	switch (aIpc)
       
  1857 		{
       
  1858 	case EMobilePhoneGetHomeNetwork:
       
  1859 		return GetHomeNetworkCancel(aTsyReqHandle);
       
  1860 	case EMobilePhoneNotifyModeChange:
       
  1861 		return NotifyModeChangeCancel(aTsyReqHandle);
       
  1862 	case EMobilePhoneNotifyDTMFCapsChange:
       
  1863 		return NotifyDTMFCapsChangeCancel(aTsyReqHandle);
       
  1864 	case EMobilePhoneSendDTMFTones:
       
  1865 		return SendDTMFTonesCancel(aTsyReqHandle);
       
  1866 	case EMobilePhoneReadDTMFTones:
       
  1867 		return ReadDTMFTonesCancel(aTsyReqHandle);
       
  1868 	case EMobilePhoneNotifyStopInDTMFString:
       
  1869 		return NotifyStopInDTMFStringCancel(aTsyReqHandle);
       
  1870 	case EMobilePhoneGetNetworkRegistrationStatus:
       
  1871 		return GetNetworkRegistrationStatusCancel(aTsyReqHandle);
       
  1872 	case EMobilePhoneNotifyNetworkRegistrationStatusChange:
       
  1873 		return NotifyNetworkRegistrationStatusChangeCancel(aTsyReqHandle);
       
  1874 	case EMobilePhoneGetCurrentNetwork:
       
  1875 		return GetCurrentNetworkCancel(aTsyReqHandle);
       
  1876 	case EMobilePhoneNotifyCurrentNetworkChange:
       
  1877 		return NotifyCurrentNetworkChangeCancel(aTsyReqHandle);
       
  1878 	case EMobilePhoneGetCurrentNetworkNoLocation:
       
  1879 		return GetCurrentNetworkCancel(aTsyReqHandle);
       
  1880 	case EMobilePhoneNotifyCurrentNetworkNoLocationChange:
       
  1881 		return NotifyCurrentNetworkChangeCancel(aTsyReqHandle);
       
  1882 	case EMobilePhoneGetCellInfo:
       
  1883 		return GetCellInfoCancel(aTsyReqHandle);
       
  1884 	case EMobilePhoneNotifyCellInfoChange:
       
  1885 		return NotifyCellInfoChangeCancel(aTsyReqHandle);
       
  1886 	case EMobilePhoneGetDetectedNetworksPhase1:
       
  1887 	case EMobilePhoneGetDetectedNetworksPhase2:
       
  1888 		return GetDetectedNetworksCancel(aTsyReqHandle);
       
  1889 	case EMobilePhoneGetDetectedNetworksV2Phase1:
       
  1890 	case EMobilePhoneGetDetectedNetworksV2Phase2:
       
  1891 		return GetDetectedNetworksV2Cancel(aTsyReqHandle);
       
  1892 	case EMobilePhoneGetDetectedNetworksV5Phase1:
       
  1893 	case EMobilePhoneGetDetectedNetworksV5Phase2:
       
  1894 		return GetDetectedNetworksV5Cancel(aTsyReqHandle);	
       
  1895 	case EMobilePhoneGetDetectedNetworksV8Phase1:
       
  1896 	case EMobilePhoneGetDetectedNetworksV8Phase2:
       
  1897 		return GetDetectedNetworksV8Cancel(aTsyReqHandle);
       
  1898 	case EMobilePhoneGetPhoneStoreInfo:
       
  1899 		return GetPhoneStoreInfoCancel(aTsyReqHandle);
       
  1900 	case EMobilePhoneNotifyIccAccessCapsChange:
       
  1901 		return NotifyIccAccessCapsChangeCancel(aTsyReqHandle);
       
  1902 	case EMobilePhoneGetCustomerServiceProfile:
       
  1903 		return GetCustomerServiceProfileCancel(aTsyReqHandle);
       
  1904 	case EMobilePhoneGetServiceTable:
       
  1905 		return GetServiceTableCancel(aTsyReqHandle);
       
  1906 	case EMobilePhoneGetBatteryInfo:
       
  1907 		return GetBatteryInfoCancel(aTsyReqHandle);
       
  1908 	case EMobilePhoneNotifyBatteryInfoChange:
       
  1909 		return NotifyBatteryInfoChangeCancel(aTsyReqHandle);
       
  1910 	case EMobilePhoneGetSignalStrength:
       
  1911 		return GetSignalStrengthCancel(aTsyReqHandle);
       
  1912 	case EMobilePhoneNotifySignalStrengthChange:
       
  1913 		return NotifySignalStrengthChangeCancel(aTsyReqHandle);
       
  1914 	case EMobilePhoneGetIndicator:
       
  1915 		return GetIndicatorCancel(aTsyReqHandle);
       
  1916 	case EMobilePhoneNotifyIndicatorChange:
       
  1917 		return NotifyIndicatorChangeCancel(aTsyReqHandle);
       
  1918 	case EMobilePhoneGetPhoneId:
       
  1919 		return GetPhoneIdCancel(aTsyReqHandle);
       
  1920 	case EMobilePhoneGetSubscriberId:
       
  1921 		return GetSubscriberIdCancel(aTsyReqHandle);
       
  1922 	case EMobilePhoneNotifyCallServiceCapsChange:
       
  1923 		return NotifyCallServiceCapsChangeCancel(aTsyReqHandle);
       
  1924 	case EMobilePhoneGetCallForwardingStatusPhase1:
       
  1925 	case EMobilePhoneGetCallForwardingStatusPhase2:
       
  1926 		return GetCallForwardingStatusCancel(aTsyReqHandle);
       
  1927 	case EMobilePhoneSetCallForwardingStatus:
       
  1928 		return SetCallForwardingStatusCancel(aTsyReqHandle);
       
  1929 	case EMobilePhoneNotifyCallForwardingStatusChange:
       
  1930 		return NotifyCallForwardingStatusChangeCancel(aTsyReqHandle);
       
  1931 	case EMobilePhoneNotifyCallForwardingActive:
       
  1932 		return NotifyCallForwardingActiveCancel(aTsyReqHandle);
       
  1933 	case EMobilePhoneProgramFeatureCode:
       
  1934 		return ProgramFeatureCodeStringCancel(aTsyReqHandle);
       
  1935 	case EMobilePhoneGetFeatureCode:
       
  1936 		return GetFeatureCodeStringCancel(aTsyReqHandle);
       
  1937 	case EMobilePhoneSendNetworkServiceRequest:
       
  1938 		return SendNetworkServiceRequestCancel(aTsyReqHandle);
       
  1939 	case EMobilePhoneNotifyNetworkSelectionSettingChange:
       
  1940 		return NotifyNetworkSelectionSettingChangeCancel(aTsyReqHandle);
       
  1941 	case EMobilePhoneSelectNetwork:
       
  1942 		return SelectNetworkCancel(aTsyReqHandle);
       
  1943 	case EMobilePhoneNotifyNITZInfoChange:
       
  1944 		return NotifyNetworkTimeInfoChangeCancel(aTsyReqHandle);
       
  1945 	case EMobilePhoneGetServiceProviderName:
       
  1946 		return GetServiceProviderNameCancel(aTsyReqHandle);
       
  1947 	case EMobilePhoneGetIdentityServiceStatus:
       
  1948 		return GetIdentityServiceStatusCancel(aTsyReqHandle);
       
  1949 	case EMobilePhoneGetBarringStatusPhase1:
       
  1950 	case EMobilePhoneGetBarringStatusPhase2:
       
  1951 		return GetCallBarringCancel(aTsyReqHandle);
       
  1952 	case EMobilePhoneSetCallBarringStatus:
       
  1953 		return SetCallBarringStatusCancel(aTsyReqHandle);
       
  1954 	case EMobilePhoneSetCallBarringPassword:
       
  1955 		return SetCallBarringPasswordCancel(aTsyReqHandle);
       
  1956 	case EMobilePhoneNotifyCallBarringStatusChange:
       
  1957 		return NotifyCallBarringStatusChangeCancel(aTsyReqHandle);
       
  1958 	case EMobilePhoneGetWaitingStatusPhase1:
       
  1959 	case EMobilePhoneGetWaitingStatusPhase2:
       
  1960 		return GetCallWaitingCancel(aTsyReqHandle);
       
  1961 	case EMobilePhoneSetCallWaitingStatus:
       
  1962 		return SetCallWaitingStatusCancel(aTsyReqHandle);
       
  1963 	case EMobilePhoneNotifyCallWaitingStatusChange:
       
  1964 		return NotifyCallWaitingStatusChangeCancel(aTsyReqHandle);
       
  1965 	case EMobilePhoneGetCCBSStatus:
       
  1966 		return GetCCBSStatusCancel(aTsyReqHandle);
       
  1967 	case EMobilePhoneNotifyCCBSStatusChange:
       
  1968 		return NotifyCCBSStatusChangeCancel(aTsyReqHandle);
       
  1969 	case EMobilePhoneDeactivateCCBS:
       
  1970 		return DeactivateCCBSCancel(aTsyReqHandle);
       
  1971 	case EMobilePhoneAcceptCCBSRecall:
       
  1972 		return AcceptCCBSRecallCancel(aTsyReqHandle);
       
  1973 	case EMobilePhoneNotifyCCBSRecall:
       
  1974 		return NotifyCCBSRecallCancel(aTsyReqHandle);
       
  1975 	case EMobilePhoneGetCompletionRequestsPhase1:
       
  1976 	case EMobilePhoneGetCompletionRequestsPhase2:
       
  1977 		return GetCallCompletionCancel(aTsyReqHandle);
       
  1978 	case EMobilePhoneNotifyAlternatingCallCapsChange:
       
  1979 		return NotifyAlternatingCallCapsChangeCancel(aTsyReqHandle);
       
  1980 	case EMobilePhoneNotifyAlternatingCallModeChange:
       
  1981 		return NotifyAlternatingCallModeChangeCancel(aTsyReqHandle);
       
  1982 	case EMobilePhoneSetALSLine:
       
  1983 		return SetALSLineCancel(aTsyReqHandle);
       
  1984 	case EMobilePhoneNotifyALSLineChange:
       
  1985 		return NotifyALSLineChangeCancel(aTsyReqHandle);
       
  1986 	case EMobilePhoneNotifyCostCapsChange:
       
  1987 		return NotifyCostCapsChangeCancel(aTsyReqHandle);
       
  1988 	case EMobilePhoneClearCostMeter:
       
  1989 		return ClearCostMeterCancel(aTsyReqHandle);
       
  1990 	case EMobilePhoneSetMaxCostMeter:
       
  1991 		return SetMaxCostMeterCancel(aTsyReqHandle);
       
  1992 	case EMobilePhoneSetPuct:
       
  1993 		return SetPuctCancel(aTsyReqHandle);
       
  1994 	case EMobilePhoneGetCostInfo:
       
  1995 		return GetCostInfoCancel(aTsyReqHandle);
       
  1996 	case EMobilePhoneNotifyCostInfoChange:
       
  1997 		return NotifyCostInfoChangeCancel(aTsyReqHandle);
       
  1998 	case EMobilePhoneNotifySecurityCapsChange:
       
  1999 		return NotifySecurityCapsChangeCancel(aTsyReqHandle);
       
  2000 	 case EMobilePhoneGetLockInfo:
       
  2001 		return GetLockInfoCancel(aTsyReqHandle);
       
  2002 	case EMobilePhoneNotifyLockInfoChange:
       
  2003 		return NotifyLockInfoChangeCancel(aTsyReqHandle);
       
  2004 	case EMobilePhoneSetLockSetting:
       
  2005 		return SetLockSettingCancel(aTsyReqHandle);
       
  2006 	case EMobilePhoneChangeSecurityCode:
       
  2007 		return ChangeSecurityCodeCancel(aTsyReqHandle);
       
  2008 	case EMobilePhoneGetSecurityCodeInfo:
       
  2009 		return GetSecurityCodeInfoCancel(aTsyReqHandle);
       
  2010 	case EMobilePhoneNotifySecurityCodeInfoChange:
       
  2011 		return NotifySecurityCodeInfoChangeCancel(aTsyReqHandle);
       
  2012 	case EMobilePhoneNotifySecurityEvent:
       
  2013 		return NotifyOnSecurityEventCancel(aTsyReqHandle);
       
  2014 	case EMobilePhoneVerifySecurityCode:
       
  2015 		return VerifySecurityCodeCancel(aTsyReqHandle);
       
  2016 	case EMobilePhoneNotifyMessageWaiting:
       
  2017 		return NotifyMessageWaitingCancel(aTsyReqHandle);
       
  2018 	case EMobilePhoneNotifyIccMessageWaitingIndicatorsChange:
       
  2019 		return NotifyIccMessageWaitingIndicatorsChangeCancel(aTsyReqHandle);
       
  2020 	case EMobilePhoneGetIccMessageWaitingIndicators:
       
  2021 		return GetIccMessageWaitingIndicatorsCancel(aTsyReqHandle);
       
  2022 	case EMobilePhoneSetIccMessageWaitingIndicators:
       
  2023 		return SetIccMessageWaitingIndicatorsCancel(aTsyReqHandle);
       
  2024 	case EMobilePhoneGetFdnStatus:
       
  2025 		return GetFdnStatusCancel(aTsyReqHandle);
       
  2026 	case EMobilePhoneSetFdnSetting:
       
  2027 		return SetFdnSettingCancel(aTsyReqHandle);
       
  2028 	case EMobilePhoneNotifyFdnStatusChange:
       
  2029 		return NotifyFdnStatusChangeCancel(aTsyReqHandle);
       
  2030 	case EMobilePhoneSetNetworkSelectionSetting:
       
  2031 		return SetNetworkSelectionSettingCancel(aTsyReqHandle);
       
  2032 	case EMobilePhoneSetAlternatingCallMode:
       
  2033 		return SetAlternatingCallModeCancel(aTsyReqHandle);
       
  2034 	case EMobilePhoneGetMulticallParams:
       
  2035 		return GetMulticallParamsCancel(aTsyReqHandle);
       
  2036 	case EMobilePhoneSetMulticallParams:
       
  2037 		return SetMulticallParamsCancel(aTsyReqHandle);
       
  2038 	case EMobilePhoneNotifyMulticallParamsChange:
       
  2039 		return NotifyMulticallParamsChangeCancel(aTsyReqHandle);
       
  2040 	case EMobilePhoneGetIncomingCallType:
       
  2041 		return GetIncomingCallTypeCancel(aTsyReqHandle);
       
  2042 	case EMobilePhoneSetIncomingCallType:
       
  2043 		return SetIncomingCallTypeCancel(aTsyReqHandle);
       
  2044 	case EMobilePhoneNotifyIncomingCallTypeChange:
       
  2045 		return NotifyIncomingCallTypeChangeCancel(aTsyReqHandle);
       
  2046 	case EMobilePhoneGetUUSSetting:
       
  2047 		return GetUUSSettingCancel(aTsyReqHandle);
       
  2048 	case EMobilePhoneSetUUSSetting:
       
  2049 		return SetUUSSettingCancel(aTsyReqHandle);
       
  2050 	case EMobilePhoneNotifyUUSSettingChange:
       
  2051 		return NotifyUUSSettingChangeCancel(aTsyReqHandle);
       
  2052 	case EMobilePhoneSetDefaultPrivacy:
       
  2053 		return SetDefaultPrivacyCancel(aTsyReqHandle);
       
  2054 	case EMobilePhoneNotifyDefaultPrivacyChange:
       
  2055 		return NotifyDefaultPrivacyChangeCancel(aTsyReqHandle);
       
  2056 	case EMobilePhoneSetMultimediaCallPreference:
       
  2057 		return SetMultimediaCallPreferenceCancel(aTsyReqHandle);
       
  2058 	case EMobilePhoneNotifyMultimediaCallPreferenceChange:
       
  2059 		return NotifyMultimediaCallPreferenceChangeCancel(aTsyReqHandle);
       
  2060 	case EMobilePhoneGetNetworkSecurityLevel:
       
  2061 		return GetNetworkSecurityLevelCancel(aTsyReqHandle);
       
  2062 	case EMobilePhoneNotifyNetworkSecurityLevelChange:
       
  2063 		return NotifyNetworkSecurityLevelChangeCancel(aTsyReqHandle);
       
  2064 	case EMobilePhoneNotifyUSimAppsSelectionModeChange:
       
  2065 		return NotifyUSimAppsSelectionModeChangeCancel(aTsyReqHandle);
       
  2066 	case EMobilePhoneSetUSimApplicationStatus:
       
  2067 		return SetUSimApplicationStatusCancel(aTsyReqHandle);
       
  2068 	case EMobilePhoneGetUSimApplicationsInfo:
       
  2069 		return GetUSimApplicationInfoCancel(aTsyReqHandle);
       
  2070 	case EMobilePhoneNotifyUSimApplicationsInfoChange:
       
  2071 		return NotifyUSimApplicationsInfoChangeCancel(aTsyReqHandle);
       
  2072 	case EMobilePhoneEnumerateUSimApplications:
       
  2073 		return EnumerateUSimApplicationsCancel(aTsyReqHandle);
       
  2074 	case EMobilePhoneEnumerateSmartCardApplications:
       
  2075 		return EnumerateSmartCardApplicationsCancel(aTsyReqHandle);
       
  2076 	case EMobilePhoneGetSmartCardApplicationInfo:
       
  2077 		return GetSmartCardApplicationInfoCancel(aTsyReqHandle);
       
  2078 	case EMobilePhoneNotifySmartCardApplicationInfoChange:
       
  2079 		return NotifySmartCardApplicationInfoChangeCancel(aTsyReqHandle);
       
  2080 	case EMobilePhoneSetSmartCardApplicationStatus:
       
  2081 		return SetSmartCardApplicationStatusCancel(aTsyReqHandle);
       
  2082 	case EMobilePhoneGetScFileInfo:
       
  2083 		return GetScFileInfoCancel(aTsyReqHandle);
       
  2084 	case EMobilePhoneReadScFile:
       
  2085 		return ReadScFileCancel(aTsyReqHandle);
       
  2086 	case EMobilePhoneUpdateScFile:
       
  2087 		return UpdateScFileCancel(aTsyReqHandle);
       
  2088 	case EMobilePhoneGetCurrentActiveUSimApplication:
       
  2089 		return GetCurrentActiveUSimApplicationCancel(aTsyReqHandle);
       
  2090 	case EMobilePhoneSetSSPassword:
       
  2091 		return SetSSPasswordCancel(aTsyReqHandle);
       
  2092 	case EMobilePhoneNotifyMailboxNumbersChange:
       
  2093 		return NotifyMailboxNumbersChangeCancel(aTsyReqHandle);
       
  2094 	case EMobilePhoneGetMailboxNumbers:
       
  2095 		return GetMailboxNumbersCancel(aTsyReqHandle);
       
  2096 	case EMobilePhoneNotifyMmsUpdate:
       
  2097 		return NotifyMmsUpdateCancel(aTsyReqHandle);
       
  2098 	case EMobilePhoneNotifyMmsConfig:
       
  2099 		return SetMmsUserConnParamsCancel(aTsyReqHandle);
       
  2100 	case EMobilePhoneSetMmsUserConnParams:
       
  2101 		return SetMmsUserConnParamsCancel(aTsyReqHandle);
       
  2102 	case EMobilePhoneSetMmsUserPreferences:
       
  2103 		return SetMmsUserPreferencesCancel(aTsyReqHandle);
       
  2104 	case EMobilePhoneGetMmsConfig:
       
  2105 		return GetMmsConfigCancel(aTsyReqHandle);
       
  2106 	case EMobilePhoneGetHomeNetworkSearchPeriod:
       
  2107 		return GetHomeNetworkSearchPeriodCancel(aTsyReqHandle);
       
  2108 	case EMobilePhoneGetLastUsedAccessTechnology:
       
  2109 		return GetLastUsedAccessTechnologyCancel(aTsyReqHandle);
       
  2110 	case EMobilePhoneNotifyNetworkInvScanChange:
       
  2111 		return NotifyNetworkInvScanChangeCancel(aTsyReqHandle);
       
  2112 	case EMobilePhoneNotifyNetworkInvScanEvent:
       
  2113 		return NotifyNetworkInvScanEventCancel(aTsyReqHandle);
       
  2114 	case EMobilePhoneGetCallForwardingIndicator:
       
  2115 		return GetCallForwardingIndicatorCancel(aTsyReqHandle);
       
  2116 	case EMobilePhoneGetCompMethodName:
       
  2117 		return GetCompMethodNameCancel(aTsyReqHandle);
       
  2118 	case EMobilePhoneEnumerateAPNEntries:
       
  2119 		return EnumerateAPNEntriesCancel(aTsyReqHandle);
       
  2120 	case EMobilePhoneGetAPNname:
       
  2121 		return GetAPNnameCancel(aTsyReqHandle);
       
  2122 	case EMobilePhoneAppendAPNName:
       
  2123 		return AppendAPNNameCancel(aTsyReqHandle);
       
  2124 	case EMobilePhoneDeleteAPNName:
       
  2125 		return DeleteAPNNameCancel(aTsyReqHandle);
       
  2126 	case EMobilePhoneNotifyAPNListChanged:
       
  2127 		return NotifyAPNListChangedCancel(aTsyReqHandle);
       
  2128 	case EMobilePhoneSetAPNControlListServiceStatus:
       
  2129 		return SetAPNControlListServiceStatusCancel(aTsyReqHandle);
       
  2130 	case EMobilePhoneGetAPNControlListServiceStatus:
       
  2131 		return GetAPNControlListServiceStatusCancel(aTsyReqHandle);
       
  2132 	case EMobilePhoneNotifyAPNControlListServiceStatusChange:
       
  2133 		return NotifyAPNControlListServiceStatusChangeCancel(aTsyReqHandle);
       
  2134 	case EMobilePhoneNotifyAirTimeDurationChange:
       
  2135 		return NotifyAirTimeDurationChangeCancel(aTsyReqHandle);
       
  2136 	case EMobilePhoneTerminateAllCalls:
       
  2137 		return TerminateAllCallsCancel(aTsyReqHandle);
       
  2138 	case EMobilePhoneNotifySendNetworkServiceRequest:
       
  2139 		return NotifySendNetworkServiceRequestCancel(aTsyReqHandle);
       
  2140 	case EMobilePhoneNotifyAllSendNetworkServiceRequest:
       
  2141 		return NotifyAllSendNetworkServiceRequestCancel(aTsyReqHandle);
       
  2142 	case EMobilePhoneClearBlacklist:
       
  2143 		return ClearBlacklistCancel(aTsyReqHandle);
       
  2144 	case EMobilePhoneNotifyDTMFEvent:
       
  2145 		return NotifyDTMFEventCancel(aTsyReqHandle);
       
  2146 	case EMobilePhoneGetPersonalisationCaps:
       
  2147 		return GetPersonalisationCapsCancel(aTsyReqHandle);
       
  2148 	case EMobilePhoneGetPersonalisationStatus:
       
  2149 		return GetPersonalisationStatusCancel(aTsyReqHandle);
       
  2150 	case EMobilePhoneSetPersonalisationStatus:
       
  2151 		return SetPersonalisationStatusCancel(aTsyReqHandle);
       
  2152 	case EMobilePhoneGetNetworkName:
       
  2153 		return GetCurrentNetworkNameCancel(aTsyReqHandle);
       
  2154 	case EMobilePhoneGetPreferredNetworksPhase1:
       
  2155 	case EMobilePhoneGetPreferredNetworksPhase2:
       
  2156 		return GetPreferredNetworksCancel(aTsyReqHandle);
       
  2157 	case EMobilePhoneStorePreferredNetworksList:
       
  2158 		return StorePreferredNetworksListCancel(aTsyReqHandle);
       
  2159 	case EMobilePhoneNotifyStorePreferredNetworksListChange:
       
  2160 		return NotifyStorePreferredNetworksListChangeCancel(aTsyReqHandle);
       
  2161 	case EMobilePhoneGetCipheringIndicatorStatus:
       
  2162 		return GetCipheringIndicatorStatusCancel(aTsyReqHandle);
       
  2163 	case EMobilePhoneNotifyCipheringIndicatorStatus:
       
  2164 		return NotifyCipheringIndicatorStatusCancel(aTsyReqHandle);
       
  2165 	case EMobilePhoneSetIdentityServiceStatus:
       
  2166 		return SetIdentityServiceStatusCancel(aTsyReqHandle);
       
  2167 	case EMobilePhoneNotifyIdentityServiceStatus:
       
  2168 		return NotifyIdentityServiceStatusCancel(aTsyReqHandle);
       
  2169 	case EMobilePhoneNotifyIdentitySuppressionRejected:
       
  2170 		return NotifyIdentitySuppressionRejectedCancel(aTsyReqHandle);
       
  2171 	case EMobilePhoneNotifyMulticallIndicatorChange:
       
  2172 		return NotifyMulticallIndicatorChangeCancel(aTsyReqHandle);
       
  2173 	case EMobilePhoneNotifyImsAuthorizationInfoChanged:
       
  2174 		return NotifyImsAuthorizationInfoChangedCancel(aTsyReqHandle);
       
  2175 	case EMobilePhoneAuthorizationInfoPhase1:
       
  2176 	case EMobilePhoneAuthorizationInfoPhase2:
       
  2177 		return GetAuthorizationInfoCancel(aTsyReqHandle);
       
  2178 	case EMobilePhoneIMSAuthenticate:
       
  2179 		return GetAuthenticationDataCancel(aTsyReqHandle);
       
  2180 	case EMobilePhoneSmartCardAuthenticate:
       
  2181 		return GetSmartCardAuthenticationDataCancel(aTsyReqHandle);
       
  2182 	case EMobilePhoneGetIccIdentity:
       
  2183 		return GetIccIdentityCancel(aTsyReqHandle);
       
  2184 	case EMobilePhoneNotifyAuthenticateDataChange:
       
  2185 		return NotifyAuthenticateDataChangeCancel(aTsyReqHandle);
       
  2186 	case EMobilePhoneGetAuthenticationParams:
       
  2187 		return GetAuthenticationParamsCancel(aTsyReqHandle);
       
  2188 	case EMobilePhoneSetGbaBootstrapParams:
       
  2189 		return SetGbaBootstrapParamsCancel(aTsyReqHandle);
       
  2190 	case EMobilePhoneAuthenticationListPhase1:
       
  2191 	case EMobilePhoneAuthenticationListPhase2:
       
  2192 		return GetAuthenticationListCancel(aTsyReqHandle);
       
  2193 	case EMobilePhoneNotifyWlanDataChange:
       
  2194 		return NotifyWlanDataChangeCancel(aTsyReqHandle);
       
  2195 	case EMobilePhoneNotifyPreferredWlanSIDListChange:
       
  2196 		return NotifyPreferredWlanSIDListChangeCancel(aTsyReqHandle);
       
  2197 	case EMobilePhoneGetWlanData:
       
  2198 		return GetWlanDataCancel(aTsyReqHandle);
       
  2199 	case EMobilePhoneSetWlanData:
       
  2200 		return SetWlanDataCancel(aTsyReqHandle);
       
  2201 	case EMobilePhoneGetPreferredWlanSIDsPhase1:
       
  2202 	case EMobilePhoneGetPreferredWlanSIDsPhase2:
       
  2203 		return GetPreferredWlanSIDsCancel(aTsyReqHandle);
       
  2204 	case EMobilePhoneStorePreferredWlanSIDList:
       
  2205 		return StorePreferredWlanSIDListCancel(aTsyReqHandle);
       
  2206 	
       
  2207 	default:
       
  2208 		return CPhoneBase::CancelService(aIpc,aTsyReqHandle);
       
  2209 		}
       
  2210 	}
       
  2211 
       
  2212 /***********************************************************************************/
       
  2213 //
       
  2214 // The following methods are called from ExtFunc and/or CancelService.
       
  2215 // Each of these will process a TSY request or cancel a TSY request
       
  2216 // Here, example values are returned or checked within this dummy TSY in order to ensure
       
  2217 // that the integrity of the data passed to/from client is maintained
       
  2218 //
       
  2219 /***********************************************************************************/
       
  2220 
       
  2221 TInt CPhoneDMmTsy::GetMultimodeCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps)
       
  2222 	{
       
  2223 	LOGTEXT(_L8("CPhoneDMmTsy::GetMultimodeCaps called"));
       
  2224 	*aCaps=DMMTSY_PHONE_MULTIMODE_CAPS;
       
  2225 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  2226 	return KErrNone;
       
  2227 	}
       
  2228 
       
  2229 TInt CPhoneDMmTsy::GetPhoneStoreInfo(const TTsyReqHandle aTsyReqHandle, TDes8* aGetInfo,
       
  2230 		TDes* aName)
       
  2231 	{
       
  2232 	LOGTEXT(_L8("CPhoneDMmTsy::GetPhoneStoreInfo called"));
       
  2233 
       
  2234 	RMobilePhoneStore::TMobilePhoneStoreInfoV1Pckg *infoPckg = REINTERPRET_CAST(RMobilePhoneStore::TMobilePhoneStoreInfoV1Pckg *,aGetInfo);
       
  2235 	RMobilePhoneStore::TMobilePhoneStoreInfoV1 &info = (*infoPckg)();
       
  2236 
       
  2237 	if (aName->Compare(DMMTSY_PHONE_STORE_NAME1) == 0)
       
  2238 		{
       
  2239 		info.iName=DMMTSY_PHONE_STORE_NAME1;
       
  2240 		info.iType=DMMTSY_PHONE_STORE_TYPE1;
       
  2241 		info.iTotalEntries=DMMTSY_PHONE_STORE_TOTAL_ENTRIES1;
       
  2242 		info.iUsedEntries=DMMTSY_PHONE_STORE_USED_ENTRIES1;
       
  2243 		info.iCaps=DMMTSY_PHONE_STORE_CAPS1;
       
  2244 		AddDelayedReq(aTsyReqHandle,this);
       
  2245 		}
       
  2246 	else if (aName->Compare(DMMTSY_PHONE_STORE_NAME2) == 0)
       
  2247 		{
       
  2248 		info.iName=DMMTSY_PHONE_STORE_NAME2;
       
  2249 		info.iType=DMMTSY_PHONE_STORE_TYPE2;
       
  2250 		info.iTotalEntries=DMMTSY_PHONE_STORE_TOTAL_ENTRIES2;
       
  2251 		info.iUsedEntries=DMMTSY_PHONE_STORE_USED_ENTRIES2;
       
  2252 		info.iCaps=DMMTSY_PHONE_STORE_CAPS2;
       
  2253 		AddDelayedReq(aTsyReqHandle,this);
       
  2254 		}
       
  2255 	else
       
  2256 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  2257 		
       
  2258 	return KErrNone;
       
  2259 	}
       
  2260 
       
  2261 TInt CPhoneDMmTsy::GetPhoneStoreInfo(const TTsyReqHandle aTsyReqHandle, TDes8* aGetInfo, 
       
  2262 		RMobilePhone::TPhoneStoreNameAndIccType* aTable)
       
  2263 	{
       
  2264 	LOGTEXT(_L8("CPhoneDMmTsy::GetPhoneStoreInfo called using IccType"));
       
  2265 
       
  2266 	RMobilePhoneStore::TMobilePhoneStoreInfoV1Pckg *infoPckg = REINTERPRET_CAST(RMobilePhoneStore::TMobilePhoneStoreInfoV1Pckg *,aGetInfo);
       
  2267 	RMobilePhoneStore::TMobilePhoneStoreInfoV1 &info = (*infoPckg)();
       
  2268 
       
  2269 	if ((aTable->iStoreName.Compare(DMMTSY_PHONE_STORE_NAME1) == 0) &&
       
  2270 				(aTable->iMode.Compare(DMMTSY_PHONEBOOK_TYPE) == 0))
       
  2271 		{
       
  2272 		info.iName=DMMTSY_PHONE_STORE_NAME1;
       
  2273 		info.iType=DMMTSY_PHONE_STORE_TYPE1;
       
  2274 		info.iTotalEntries=DMMTSY_PHONE_STORE_TOTAL_ENTRIES1;
       
  2275 		info.iUsedEntries=DMMTSY_PHONE_STORE_USED_ENTRIES1;
       
  2276 		info.iCaps=DMMTSY_PHONE_STORE_CAPS1;
       
  2277 		AddDelayedReq(aTsyReqHandle,this);
       
  2278 		}
       
  2279 	else if ((aTable->iStoreName.Compare(DMMTSY_PHONE_STORE_NAME2) == 0) &&
       
  2280 					(aTable->iMode.Compare(DMMTSY_PHONEBOOK_TYPE) == 0))
       
  2281 		{
       
  2282 		info.iName=DMMTSY_PHONE_STORE_NAME2;
       
  2283 		info.iType=DMMTSY_PHONE_STORE_TYPE2;
       
  2284 		info.iTotalEntries=DMMTSY_PHONE_STORE_TOTAL_ENTRIES2;
       
  2285 		info.iUsedEntries=DMMTSY_PHONE_STORE_USED_ENTRIES2;
       
  2286 		info.iCaps=DMMTSY_PHONE_STORE_CAPS2;
       
  2287 		AddDelayedReq(aTsyReqHandle,this);
       
  2288 		}
       
  2289 	else
       
  2290 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  2291 		
       
  2292 	return KErrNone;
       
  2293 	}
       
  2294 
       
  2295 TInt CPhoneDMmTsy::GetPhoneStoreInfoCancel(const TTsyReqHandle aTsyReqHandle)
       
  2296 	{
       
  2297 	LOGTEXT(_L8("CPhoneDMmTsy::GetPhoneStoreInfoCancel called"));
       
  2298 	RemoveDelayedReq(aTsyReqHandle);
       
  2299 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2300 	return KErrNone;
       
  2301 	}
       
  2302 
       
  2303 TInt CPhoneDMmTsy::GetIccAccessCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps)
       
  2304 	{
       
  2305 	LOGTEXT(_L8("CPhoneDMmTsy::GetIccAccessCaps called"));
       
  2306 	*aCaps=DMMTSY_PHONE_SIM_ACCESS_CAPS1;
       
  2307 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  2308 	return KErrNone;
       
  2309 	}
       
  2310 
       
  2311 TInt CPhoneDMmTsy::NotifyIccAccessCapsChange(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps)
       
  2312 	{
       
  2313 	if (!iNotifyIccAccessCaps++)
       
  2314 		{
       
  2315 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyIccAccessCapsChange called"));
       
  2316 		*aCaps=DMMTSY_PHONE_SIM_ACCESS_CAPS2;
       
  2317 		AddDelayedReq(aTsyReqHandle,this);
       
  2318 		}
       
  2319 	return KErrNone;
       
  2320 	}
       
  2321 
       
  2322 TInt CPhoneDMmTsy::NotifyIccAccessCapsChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  2323 	{
       
  2324 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyIccAccessCapsChangeCancel called"));
       
  2325 	RemoveDelayedReq(aTsyReqHandle);
       
  2326 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2327 	return KErrNone;
       
  2328 	}
       
  2329 	
       
  2330 TInt CPhoneDMmTsy::GetIccIdentity(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TIccIdentity* aIdentity)
       
  2331 	{
       
  2332 	LOGTEXT(_L8("CPhoneDMmTsy::GetIccIdentity called"));
       
  2333 	*aIdentity=DMMTSY_PHONE_ICC_ID;
       
  2334 	AddDelayedReq(aTsyReqHandle,this);
       
  2335 	return KErrNone;
       
  2336 	}
       
  2337 	
       
  2338 TInt CPhoneDMmTsy::GetIccIdentityCancel(const TTsyReqHandle aTsyReqHandle)
       
  2339 	{
       
  2340 	LOGTEXT(_L8("CPhoneDMmTsy::GetIccIdentity called"));
       
  2341 	RemoveDelayedReq(aTsyReqHandle);
       
  2342 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2343 	return KErrNone;
       
  2344 	}
       
  2345 
       
  2346 TInt CPhoneDMmTsy::GetCustomerServiceProfile(const TTsyReqHandle aTsyReqHandle, TDes8* aFile)
       
  2347 	{
       
  2348 	LOGTEXT(_L8("CPhoneDMmTsy::GetCustomerServiceProfile called"));
       
  2349 	RMobilePhone::TMobilePhoneCspFileV1Pckg* cspV1Pckg = (RMobilePhone::TMobilePhoneCspFileV1Pckg*)aFile;
       
  2350 	RMobilePhone::TMobilePhoneCspFileV1& cspV1 = (*cspV1Pckg)();
       
  2351 
       
  2352 	cspV1.iCallOfferingServices=DMMTSY_PHONE_CSP_BYTE1;
       
  2353 	cspV1.iCallRestrictionServices=DMMTSY_PHONE_CSP_BYTE2;
       
  2354 	cspV1.iOtherSuppServices=DMMTSY_PHONE_CSP_BYTE3;
       
  2355 	cspV1.iCallCompletionServices=DMMTSY_PHONE_CSP_BYTE4;
       
  2356 	cspV1.iTeleservices=DMMTSY_PHONE_CSP_BYTE5;
       
  2357 	cspV1.iCphsTeleservices=DMMTSY_PHONE_CSP_BYTE6;
       
  2358 	cspV1.iCphsFeatures=DMMTSY_PHONE_CSP_BYTE7;
       
  2359 	cspV1.iNumberIdentServices=DMMTSY_PHONE_CSP_BYTE8;
       
  2360 	cspV1.iPhase2PlusServices=DMMTSY_PHONE_CSP_BYTE9;
       
  2361 	cspV1.iValueAddedServices=DMMTSY_PHONE_CSP_BYTE10;
       
  2362 
       
  2363 	AddDelayedReq(aTsyReqHandle,this);
       
  2364 	return KErrNone;
       
  2365 	}
       
  2366 
       
  2367 TInt CPhoneDMmTsy::GetCustomerServiceProfileCancel(const TTsyReqHandle aTsyReqHandle)
       
  2368 	{
       
  2369 	LOGTEXT(_L8("CPhoneDMmTsy::GetCustomerServiceProfileCancel called"));
       
  2370 	RemoveDelayedReq(aTsyReqHandle);
       
  2371 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2372 	return KErrNone;
       
  2373 	}
       
  2374 
       
  2375 TInt CPhoneDMmTsy::GetServiceTable(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneServiceTable* aTable, TDes8* aFile)
       
  2376 	{
       
  2377 	LOGTEXT(_L8("CPhoneDMmTsy::GetServiceTable called"));
       
  2378 	RMobilePhone::TMobilePhoneServiceTableV1Pckg* sstFilePckg = (RMobilePhone::TMobilePhoneServiceTableV1Pckg*) aFile;
       
  2379 	RMobilePhone::TMobilePhoneServiceTableV1 &sstFile = (*sstFilePckg)();
       
  2380 		
       
  2381 	if (*aTable!=DMMTSY_PHONE_SERVICE_TABLE)
       
  2382 		ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2383 	else
       
  2384 		{
       
  2385 		if(sstFile.ExtensionId()==KEtelExtMultimodeV8)
       
  2386 			{
       
  2387 			LOGTEXT(_L8("CPhoneDMmTsy::GetServiceTable is using V8table"));
       
  2388 			RMobilePhone::TMobilePhoneServiceTableV8Pckg* sstV8Pckg = (RMobilePhone::TMobilePhoneServiceTableV8Pckg*)aFile;
       
  2389 			RMobilePhone::TMobilePhoneServiceTableV8& sstV8 = (*sstV8Pckg)();
       
  2390 
       
  2391 			sstV8.iServices1To8=DMMTSY_PHONE_SST_BYTE1;
       
  2392 			sstV8.iServices9To16=DMMTSY_PHONE_SST_BYTE2;
       
  2393 			sstV8.iServices17To24=DMMTSY_PHONE_SST_BYTE3;
       
  2394 			sstV8.iServices25To32=DMMTSY_PHONE_SST_BYTE4;
       
  2395 			sstV8.iServices33To40=DMMTSY_PHONE_SST_BYTE5;
       
  2396 			sstV8.iServices41To48=DMMTSY_PHONE_SST_BYTE6;
       
  2397 			sstV8.iServices49To56=DMMTSY_PHONE_SST_BYTE7;
       
  2398 			sstV8.iAID=DMMTSY_PHONE_USIM_AID;			
       
  2399 			sstV8.iServices57To64=DMMTSY_PHONE_SST_BYTE8;
       
  2400 			sstV8.iServices65To72=DMMTSY_PHONE_SST_BYTE9;
       
  2401 			}
       
  2402 			
       
  2403 		if(sstFile.ExtensionId()==KETelExtMultimodeV2)
       
  2404 			{
       
  2405 			LOGTEXT(_L8("CPhoneDMmTsy::GetServiceTable is using V2table"));
       
  2406 			RMobilePhone::TMobilePhoneServiceTableV2Pckg* sstV2Pckg = (RMobilePhone::TMobilePhoneServiceTableV2Pckg*)aFile;
       
  2407 			RMobilePhone::TMobilePhoneServiceTableV2& sstV2 = (*sstV2Pckg)();
       
  2408 
       
  2409 			sstV2.iServices1To8=DMMTSY_PHONE_SST_BYTE1;
       
  2410 			sstV2.iServices9To16=DMMTSY_PHONE_SST_BYTE2;
       
  2411 			sstV2.iServices17To24=DMMTSY_PHONE_SST_BYTE3;
       
  2412 			sstV2.iServices25To32=DMMTSY_PHONE_SST_BYTE4;
       
  2413 			sstV2.iServices33To40=DMMTSY_PHONE_SST_BYTE5;
       
  2414 			sstV2.iServices41To48=DMMTSY_PHONE_SST_BYTE6;
       
  2415 			sstV2.iServices49To56=DMMTSY_PHONE_SST_BYTE7;
       
  2416 			sstV2.iAID=DMMTSY_PHONE_USIM_AID;
       
  2417 			}
       
  2418 		else if(sstFile.ExtensionId()==KETelExtMultimodeV1)
       
  2419 			{
       
  2420 			LOGTEXT(_L8("CPhoneDMmTsy::GetServiceTable is using V1table"));
       
  2421 
       
  2422 			sstFile.iServices1To8=DMMTSY_PHONE_SST_BYTE1;
       
  2423 			sstFile.iServices9To16=DMMTSY_PHONE_SST_BYTE2;
       
  2424 			sstFile.iServices17To24=DMMTSY_PHONE_SST_BYTE3;
       
  2425 			sstFile.iServices25To32=DMMTSY_PHONE_SST_BYTE4;
       
  2426 			sstFile.iServices33To40=DMMTSY_PHONE_SST_BYTE5;
       
  2427 			sstFile.iServices41To48=DMMTSY_PHONE_SST_BYTE6;
       
  2428 			sstFile.iServices49To56=DMMTSY_PHONE_SST_BYTE7;
       
  2429 			}
       
  2430 
       
  2431 		AddDelayedReq(aTsyReqHandle,this);
       
  2432 		}
       
  2433 	return KErrNone;
       
  2434 	}
       
  2435 
       
  2436 TInt CPhoneDMmTsy::GetServiceTableCancel(const TTsyReqHandle aTsyReqHandle)
       
  2437 	{
       
  2438 	LOGTEXT(_L8("CPhoneDMmTsy::GetServiceTableCancel called"));
       
  2439 	RemoveDelayedReq(aTsyReqHandle);
       
  2440 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2441 	return KErrNone;
       
  2442 	}
       
  2443 
       
  2444 TInt CPhoneDMmTsy::GetBatteryCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps)
       
  2445 	{
       
  2446 	LOGTEXT(_L8("CPhoneDMmTsy::GetBatteryCaps called"));
       
  2447 	*aCaps=DMMTSY_PHONE_BATTERY_CAPS;
       
  2448 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  2449 	return KErrNone;
       
  2450 	}
       
  2451 
       
  2452 TInt CPhoneDMmTsy::GetBatteryInfo(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneBatteryInfoV1* aInfo)
       
  2453 	{
       
  2454 	LOGTEXT(_L8("CPhoneDMmTsy::GetBatteryInfo called"));
       
  2455 	aInfo->iStatus=DMMTSY_PHONE_BATTERY_STATUS1;
       
  2456 	aInfo->iChargeLevel=DMMTSY_PHONE_BATTERY_CHARGE1;
       
  2457 	AddDelayedReq(aTsyReqHandle,this);
       
  2458 	return KErrNone;
       
  2459 	}
       
  2460 
       
  2461 TInt CPhoneDMmTsy::GetBatteryInfoCancel(const TTsyReqHandle aTsyReqHandle)
       
  2462 	{
       
  2463 	LOGTEXT(_L8("CPhoneDMmTsy::GetBatteryInfoCancel called"));
       
  2464 	RemoveDelayedReq(aTsyReqHandle);
       
  2465 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2466 	return KErrNone;
       
  2467 	}
       
  2468 
       
  2469 TInt CPhoneDMmTsy::NotifyBatteryInfoChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneBatteryInfoV1* aInfo)
       
  2470 	{
       
  2471 	if (!iNotifyBatteryInfoChange++)
       
  2472 		{
       
  2473 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyBatteryInfoChange called"));
       
  2474 		aInfo->iStatus=DMMTSY_PHONE_BATTERY_STATUS2;
       
  2475 		aInfo->iChargeLevel=DMMTSY_PHONE_BATTERY_CHARGE2;
       
  2476 		AddDelayedReq(aTsyReqHandle,this);
       
  2477 		}
       
  2478 	return KErrNone;
       
  2479 	}
       
  2480 
       
  2481 TInt CPhoneDMmTsy::NotifyBatteryInfoChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  2482 	{
       
  2483 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyBatteryInfoChangeCancel called"));
       
  2484 	RemoveDelayedReq(aTsyReqHandle);
       
  2485 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2486 	return KErrNone;
       
  2487 	}
       
  2488 
       
  2489 TInt CPhoneDMmTsy::GetSignalCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps)
       
  2490 	{
       
  2491 	LOGTEXT(_L8("CPhoneDMmTsy::GetSignalCaps called"));
       
  2492 	*aCaps=DMMTSY_PHONE_SIGNAL_CAPS;
       
  2493 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  2494 	return KErrNone;
       
  2495 	}
       
  2496 
       
  2497 TInt CPhoneDMmTsy::GetSignalStrength(const TTsyReqHandle aTsyReqHandle, TInt32* aSignalStrength, TInt8* aBar)
       
  2498 	{
       
  2499 	LOGTEXT(_L8("CPhoneDMmTsy::GetSignalStrength called"));
       
  2500 	*aSignalStrength=DMMTSY_PHONE_SIGNAL_STRENGTH1;
       
  2501 	*aBar=DMMTSY_PHONE_SIGNAL_BAR1;
       
  2502 	AddDelayedReq(aTsyReqHandle,this);
       
  2503 	return KErrNone;
       
  2504 	}
       
  2505 
       
  2506 TInt CPhoneDMmTsy::GetSignalStrengthCancel(const TTsyReqHandle aTsyReqHandle)
       
  2507 	{
       
  2508 	LOGTEXT(_L8("CPhoneDMmTsy::GetSignalStrengthCancel called"));
       
  2509 	RemoveDelayedReq(aTsyReqHandle);
       
  2510 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2511 	return KErrNone;
       
  2512 	}
       
  2513 
       
  2514 TInt CPhoneDMmTsy::NotifySignalStrengthChange(const TTsyReqHandle aTsyReqHandle, TInt32* aSignalStrength, TInt8* aBar)
       
  2515 	{
       
  2516 	if (!iNotifySignalStrengthChange++)
       
  2517 		{
       
  2518 		LOGTEXT(_L8("CPhoneDMmTsy::NotifySignalStrengthChange called"));
       
  2519 		*aSignalStrength=DMMTSY_PHONE_SIGNAL_STRENGTH2;
       
  2520 		*aBar=DMMTSY_PHONE_SIGNAL_BAR2;
       
  2521 		AddDelayedReq(aTsyReqHandle,this);
       
  2522 		}
       
  2523 	return KErrNone;
       
  2524 	}
       
  2525 
       
  2526 TInt CPhoneDMmTsy::NotifySignalStrengthChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  2527 	{
       
  2528 	LOGTEXT(_L8("CPhoneDMmTsy::NotifySignalStrengthChangeCancel called"));
       
  2529 	RemoveDelayedReq(aTsyReqHandle);
       
  2530 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2531 	return KErrNone;
       
  2532 	}
       
  2533 
       
  2534 TInt CPhoneDMmTsy::GetIndicatorCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aActionCaps, TUint32* aIndCaps)
       
  2535 	{
       
  2536 	LOGTEXT(_L8("CPhoneDMmTsy::GetIndicatorCaps called"));
       
  2537 	*aActionCaps=DMMTSY_PHONE_ACTION_INDICATOR_CAPS;
       
  2538 	*aIndCaps=DMMTSY_PHONE_INDICATOR_CAPS;
       
  2539 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  2540 	return KErrNone;
       
  2541 	}
       
  2542 
       
  2543 TInt CPhoneDMmTsy::GetIndicator(const TTsyReqHandle aTsyReqHandle, TUint32* aIndicator)
       
  2544 	{
       
  2545 	LOGTEXT(_L8("CPhoneDMmTsy::GetIndicator called"));
       
  2546 	*aIndicator=DMMTSY_PHONE_INDICATOR1;
       
  2547 	AddDelayedReq(aTsyReqHandle,this);
       
  2548 	return KErrNone;
       
  2549 	}
       
  2550 
       
  2551 TInt CPhoneDMmTsy::GetIndicatorCancel(const TTsyReqHandle aTsyReqHandle)
       
  2552 	{
       
  2553 	LOGTEXT(_L8("CPhoneDMmTsy::GetIndicatorCancel called"));
       
  2554 	RemoveDelayedReq(aTsyReqHandle);
       
  2555 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2556 	return KErrNone;
       
  2557 	}
       
  2558 
       
  2559 TInt CPhoneDMmTsy::NotifyIndicatorChange(const TTsyReqHandle aTsyReqHandle, TUint32* aIndicator)
       
  2560 	{
       
  2561 	if (!iNotifyIndicatorChange++)
       
  2562 		{
       
  2563 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyIndicatorChange called"));
       
  2564 		*aIndicator=DMMTSY_PHONE_INDICATOR2;
       
  2565 		AddDelayedReq(aTsyReqHandle,this);
       
  2566 		}
       
  2567 	return KErrNone;
       
  2568 	}
       
  2569 
       
  2570 TInt CPhoneDMmTsy::NotifyIndicatorChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  2571 	{
       
  2572 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyIndicatorChangeCancel called"));
       
  2573 	RemoveDelayedReq(aTsyReqHandle);
       
  2574 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2575 	return KErrNone;
       
  2576 	}
       
  2577 
       
  2578 TInt CPhoneDMmTsy::GetIdentityCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps)
       
  2579 	{
       
  2580 	LOGTEXT(_L8("CPhoneDMmTsy::GetIdentityCaps called"));
       
  2581 	*aCaps=DMMTSY_PHONE_IDENTITY_CAPS;
       
  2582 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  2583 	return KErrNone;
       
  2584 	}
       
  2585 
       
  2586 TInt CPhoneDMmTsy::GetPhoneId(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneIdentityV1* aId)
       
  2587 	{
       
  2588 	LOGTEXT(_L8("CPhoneDMmTsy::GetPhoneId called"));
       
  2589 	aId->iManufacturer=DMMTSY_PHONE_MANUFACTURER;
       
  2590 	aId->iModel=DMMTSY_PHONE_MODEL;
       
  2591 	aId->iRevision=DMMTSY_PHONE_REVISION;
       
  2592 	aId->iSerialNumber=DMMTSY_PHONE_SERIAL_NUMBER;
       
  2593 	AddDelayedReq(aTsyReqHandle,this);
       
  2594 	return KErrNone;
       
  2595 	}
       
  2596 
       
  2597 TInt CPhoneDMmTsy::GetPhoneIdCancel(const TTsyReqHandle aTsyReqHandle)
       
  2598 	{
       
  2599 	LOGTEXT(_L8("CPhoneDMmTsy::GetPhoneIdCancel called"));
       
  2600 	RemoveDelayedReq(aTsyReqHandle);
       
  2601 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2602 	return KErrNone;
       
  2603 	}
       
  2604 
       
  2605 TInt CPhoneDMmTsy::GetSubscriberId(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneSubscriberId* aId)
       
  2606 	{
       
  2607 	LOGTEXT(_L8("CPhoneDMmTsy::GetSubscriberId called"));
       
  2608 	*aId=DMMTSY_PHONE_SUBSCRIBER_ID;
       
  2609 	AddDelayedReq(aTsyReqHandle,this);
       
  2610 	return KErrNone;
       
  2611 	}
       
  2612 
       
  2613 TInt CPhoneDMmTsy::GetSubscriberIdCancel(const TTsyReqHandle aTsyReqHandle)
       
  2614 	{
       
  2615 	LOGTEXT(_L8("CPhoneDMmTsy::GetSubscriberIdCancel called"));
       
  2616 	RemoveDelayedReq(aTsyReqHandle);
       
  2617 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2618 	return KErrNone;
       
  2619 	}
       
  2620 
       
  2621 TInt CPhoneDMmTsy::GetDTMFCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps)
       
  2622 	{
       
  2623 	LOGTEXT(_L8("CPhoneDMmTsy::GetDTMFCaps called"));
       
  2624 	*aCaps=DMMTSY_PHONE_DTMF_CAPS1;
       
  2625 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  2626 	return KErrNone;
       
  2627 	}
       
  2628 
       
  2629 TInt CPhoneDMmTsy::NotifyDTMFCapsChange(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps)
       
  2630 	{
       
  2631 	if (!iNotifyDTMFCapsChange++)
       
  2632 		{
       
  2633 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyDTMFCapsChange called"));
       
  2634 		*aCaps=DMMTSY_PHONE_DTMF_CAPS2;
       
  2635 		AddDelayedReq(aTsyReqHandle,this);
       
  2636 		}
       
  2637 	return KErrNone;
       
  2638 	}
       
  2639 
       
  2640 TInt CPhoneDMmTsy::NotifyDTMFCapsChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  2641 	{
       
  2642 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyDTMFCapsChangeCancel called"));
       
  2643 	RemoveDelayedReq(aTsyReqHandle);
       
  2644 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2645 	return KErrNone;
       
  2646 	}
       
  2647 
       
  2648 TInt CPhoneDMmTsy::NotifyStopInDTMFString(const TTsyReqHandle aTsyReqHandle)
       
  2649 	{
       
  2650 	if (!iNotifyStopInDTMFString++)
       
  2651 		{
       
  2652 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyStopInDTMFString called"));
       
  2653 		AddDelayedReq(aTsyReqHandle,this);
       
  2654 		}
       
  2655 	return KErrNone;
       
  2656 	}
       
  2657 
       
  2658 TInt CPhoneDMmTsy::NotifyStopInDTMFStringCancel(const TTsyReqHandle aTsyReqHandle)
       
  2659 	{
       
  2660 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyStopInDTMFStringCancel called"));
       
  2661 	RemoveDelayedReq(aTsyReqHandle);
       
  2662 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2663 	return KErrNone;
       
  2664 	}
       
  2665 
       
  2666 TInt CPhoneDMmTsy::ContinueDTMFStringSending(const TTsyReqHandle aTsyReqHandle, TBool *aContinue)
       
  2667 	{
       
  2668 	TInt err = KErrNone;
       
  2669 	if (!(*aContinue))
       
  2670 		err = KErrCorrupt;
       
  2671 	ReqCompleted(aTsyReqHandle,err);
       
  2672 	return KErrNone;
       
  2673 	}
       
  2674 
       
  2675 TInt CPhoneDMmTsy::SendDTMFTones(const TTsyReqHandle aTsyReqHandle, TDesC* aTones)
       
  2676 	{
       
  2677 	LOGTEXT(_L8("CPhoneDMmTsy::SendDTMFTones called"));
       
  2678 	if (aTones->Length()!=DMMTSY_PHONE_SEND_TONES_LENGTH)
       
  2679 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  2680 	else if (aTones->Compare(DMMTSY_PHONE_SEND_TONES)!=KErrNone)
       
  2681 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  2682 	else
       
  2683 		AddDelayedReq(aTsyReqHandle,this);
       
  2684 	return KErrNone;
       
  2685 	}
       
  2686 
       
  2687 TInt CPhoneDMmTsy::SendDTMFTonesCancel(const TTsyReqHandle aTsyReqHandle)
       
  2688 	{
       
  2689 	LOGTEXT(_L8("CPhoneDMmTsy::SendDTMFTonesCancel called"));
       
  2690 	RemoveDelayedReq(aTsyReqHandle);
       
  2691 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2692 	return KErrNone;
       
  2693 	}
       
  2694 
       
  2695 TInt CPhoneDMmTsy::ReadDTMFTones(const TTsyReqHandle aTsyReqHandle, TDes* aTones)
       
  2696 	{
       
  2697 	LOGTEXT(_L8("CPhoneDMmTsy::ReadDTMFTones called"));
       
  2698 	aTones->Copy(DMMTSY_PHONE_READ_TONES);
       
  2699 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  2700 	return KErrNone;
       
  2701 	}
       
  2702 
       
  2703 TInt CPhoneDMmTsy::ReadDTMFTonesCancel(const TTsyReqHandle aTsyReqHandle)
       
  2704 	{
       
  2705 	LOGTEXT(_L8("CPhoneDMmTsy::ReadDTMFTonesCancel called"));
       
  2706 	RemoveDelayedReq(aTsyReqHandle);
       
  2707 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2708 	return KErrNone;
       
  2709 	}
       
  2710 
       
  2711 TInt CPhoneDMmTsy::StartDTMFTone(const TTsyReqHandle aTsyReqHandle, TChar* aTone)
       
  2712 	{
       
  2713 	LOGTEXT(_L8("CPhoneDMmTsy::StartDTMFTone called"));
       
  2714 	if (*aTone != DMMTSY_PHONE_SINGLE_TONE)
       
  2715 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  2716 	else
       
  2717 		AddDelayedReq(aTsyReqHandle,this);
       
  2718 
       
  2719 	return KErrNone;
       
  2720 	}
       
  2721 
       
  2722 TInt CPhoneDMmTsy::StopDTMFTone(const TTsyReqHandle aTsyReqHandle)
       
  2723 	{
       
  2724 	LOGTEXT(_L8("CPhoneDMmTsy::StopDTMFTone called"));
       
  2725 	AddDelayedReq(aTsyReqHandle,this);
       
  2726 	return KErrNone;
       
  2727 	}
       
  2728 
       
  2729 TInt CPhoneDMmTsy::GetNetworkCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps)
       
  2730 	{
       
  2731 	LOGTEXT(_L8("CPhoneDMmTsy::GetNetworkCaps called"));
       
  2732 	*aCaps=DMMTSY_PHONE_NETWORK_CAPS;
       
  2733 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  2734 	return KErrNone;
       
  2735 	}
       
  2736 
       
  2737 TInt CPhoneDMmTsy::GetCurrentMode(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneNetworkMode* aMode)
       
  2738 	{
       
  2739 	LOGTEXT(_L8("CPhoneDMmTsy::GetCurrentMode called"));
       
  2740 	*aMode=DMMTSY_PHONE_NETWORK_MODE1;
       
  2741 	AddDelayedReq(aTsyReqHandle,this);
       
  2742 	return KErrNone;
       
  2743 	}
       
  2744 
       
  2745 TInt CPhoneDMmTsy::NotifyModeChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneNetworkMode* aMode)
       
  2746 	{
       
  2747 	if (!iNotifyModeChange++)
       
  2748 		{
       
  2749 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyModeChange called"));
       
  2750 		*aMode=DMMTSY_PHONE_NETWORK_MODE2;
       
  2751 		AddDelayedReq(aTsyReqHandle,this);
       
  2752 		}
       
  2753 	return KErrNone;
       
  2754 	}
       
  2755 
       
  2756 TInt CPhoneDMmTsy::NotifyModeChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  2757 	{
       
  2758 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyModeChangeCancel called"));
       
  2759 	RemoveDelayedReq(aTsyReqHandle);
       
  2760 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2761 	return KErrNone;
       
  2762 	}
       
  2763 
       
  2764 TInt CPhoneDMmTsy::GetHomeNetwork(const TTsyReqHandle aTsyReqHandle, TDes8* aNetworkInfoPckg)
       
  2765 	{
       
  2766 	LOGTEXT(_L8("CPhoneDMmTsy::GetHomeNetwork called"));
       
  2767 	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg* networkInfoV1Pckg = (RMobilePhone::TMobilePhoneNetworkInfoV1Pckg*)aNetworkInfoPckg;
       
  2768 	RMobilePhone::TMobilePhoneNetworkInfoV1& networkInfoV1 = (*networkInfoV1Pckg)();
       
  2769 	
       
  2770 	networkInfoV1.iMode=DMMTSY_PHONE_HOME_NETWORK_MODE;
       
  2771 	networkInfoV1.iStatus=DMMTSY_PHONE_HOME_NETWORK_STATUS;
       
  2772 	networkInfoV1.iBandInfo=DMMTSY_PHONE_HOME_NETWORK_BAND;
       
  2773 	networkInfoV1.iCountryCode=DMMTSY_PHONE_HOME_NETWORK_MCC;
       
  2774 	networkInfoV1.iNetworkId=DMMTSY_PHONE_HOME_NETWORK_ID;
       
  2775 	networkInfoV1.iCdmaSID=DMMTSY_PHONE_HOME_NETWORK_SID;
       
  2776 	networkInfoV1.iAnalogSID=DMMTSY_PHONE_HOME_NETWORK_SID;
       
  2777 	networkInfoV1.iDisplayTag=DMMTSY_PHONE_HOME_NETWORK_TAG;
       
  2778 	networkInfoV1.iShortName=DMMTSY_PHONE_HOME_NETWORK_SHORT_NAME;
       
  2779 	networkInfoV1.iLongName=DMMTSY_PHONE_HOME_NETWORK_LONG_NAME;
       
  2780 
       
  2781 	if(networkInfoV1.ExtensionId() == KEtelExtMultimodeV8)
       
  2782 	{
       
  2783 		RMobilePhone::TMobilePhoneNetworkInfoV8Pckg* networkInfoV8Pckg = (RMobilePhone::TMobilePhoneNetworkInfoV8Pckg*)aNetworkInfoPckg;
       
  2784 		RMobilePhone::TMobilePhoneNetworkInfoV8& networkInfoV8 = (*networkInfoV8Pckg)();
       
  2785 		networkInfoV8.iAccess=DMMTSY_PHONE_HOME_NETWORK_ACCESS_TECH;
       
  2786 		networkInfoV8.iHsdpaAvailableIndicator=DMMTSY_PHONE_HOME_NETWORK_HSDPA_AVAILABILITY;
       
  2787 		networkInfoV8.iEgprsAvailableIndicator=DMMTSY_PHONE_HOME_NETWORK_EGPRS_AVAILABILITY;
       
  2788 		networkInfoV8.iHsupaAvailableIndicator=DMMTSY_PHONE_HOME_NETWORK_HSUPA_AVAILABILITY;
       
  2789 	}
       
  2790 
       
  2791 	AddDelayedReq(aTsyReqHandle,this);
       
  2792 	return KErrNone;
       
  2793 	}
       
  2794 
       
  2795 TInt CPhoneDMmTsy::GetHomeNetworkCancel(const TTsyReqHandle aTsyReqHandle)
       
  2796 	{
       
  2797 	LOGTEXT(_L8("CPhoneDMmTsy::GetHomeNetworkCancel called"));
       
  2798 	RemoveDelayedReq(aTsyReqHandle);
       
  2799 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2800 	return KErrNone;
       
  2801 	}
       
  2802 
       
  2803 TInt CPhoneDMmTsy::GetCurrentNetwork(const TTsyReqHandle aTsyReqHandle, TDes8* aNetworkInfoPckg, RMobilePhone::TMobilePhoneLocationAreaV1* aArea)
       
  2804 	{
       
  2805 	LOGTEXT(_L8("CPhoneDMmTsy::GetCurrentNetwork called"));
       
  2806 	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg* networkInfoV1Pckg = (RMobilePhone::TMobilePhoneNetworkInfoV1Pckg*)aNetworkInfoPckg;
       
  2807 	RMobilePhone::TMobilePhoneNetworkInfoV1& networkInfoV1 = (*networkInfoV1Pckg)();
       
  2808 	
       
  2809 	if(networkInfoV1.ExtensionId() == KETelExt3rdPartyV1)
       
  2810 		{
       
  2811 		LOGTEXT(_L8("CPhoneDMmTsy::GetCurrentNetworkISV called"));
       
  2812 		RMobilePhone::TEtel3rdPartyMobileNetworkInfoV1Pckg* networkInfoISVPckg = (RMobilePhone::TEtel3rdPartyMobileNetworkInfoV1Pckg*)aNetworkInfoPckg;
       
  2813 		RMobilePhone::TEtel3rdPartyMobileNetworkInfoV1& networkInfoISV = (*networkInfoISVPckg)();
       
  2814 
       
  2815 		networkInfoISV.iMode=DMMTSY_PHONE_CURRENT_NETWORK_MODE_ISV;
       
  2816 		networkInfoISV.iStatus=DMMTSY_PHONE_CURRENT_NETWORK_STATUS_ISV;
       
  2817 		networkInfoISV.iBandInfo=DMMTSY_PHONE_CURRENT_NETWORK_BAND_ISV;
       
  2818 		networkInfoISV.iCountryCode=DMMTSY_PHONE_CURRENT_NETWORK_MCC_ISV;
       
  2819 		networkInfoISV.iNetworkId=DMMTSY_PHONE_CURRENT_NETWORK_ID_ISV;
       
  2820 		networkInfoISV.iDisplayTag=DMMTSY_PHONE_CURRENT_NETWORK_TAG_ISV;
       
  2821 		networkInfoISV.iShortName=DMMTSY_PHONE_CURRENT_NETWORK_SHORT_NAME_ISV;
       
  2822 		networkInfoISV.iLongName=DMMTSY_PHONE_CURRENT_NETWORK_LONG_NAME_ISV;
       
  2823 		networkInfoISV.iCdmaSID=DMMTSY_PHONE_CURRENT_NETWORK_CDMASID_ISV;
       
  2824 		networkInfoISV.iAccess=DMMTSY_PHONE_CURRENT_NETWORK_ACCESS_UTRAN_ISV;
       
  2825 		
       
  2826 		if(aArea)
       
  2827 			{
       
  2828 			aArea->iAreaKnown=DMMTSY_PHONE_CURRENT_NETWORK_AREAKNOWN_ISV;
       
  2829 			aArea->iLocationAreaCode=DMMTSY_PHONE_CURRENT_NETWORK_LAC_ISV;
       
  2830 			aArea->iCellId=DMMTSY_PHONE_CURRENT_NETWORK_CELLID_ISV;
       
  2831 			
       
  2832 			}	
       
  2833 		
       
  2834 		}
       
  2835 	else
       
  2836 		{
       
  2837 		if(networkInfoV1.ExtensionId() == KEtelExtMultimodeV8)
       
  2838 			{
       
  2839 			RMobilePhone::TMobilePhoneNetworkInfoV8Pckg* networkInfoV8Pckg = (RMobilePhone::TMobilePhoneNetworkInfoV8Pckg*)aNetworkInfoPckg;
       
  2840 			RMobilePhone::TMobilePhoneNetworkInfoV8& networkInfoV8 = (*networkInfoV8Pckg)();
       
  2841 			networkInfoV8.iAccess = DMMTSY_PHONE_CURRENT_NETWORK_ACCESS_TECH1;
       
  2842 			
       
  2843 			networkInfoV8.iHsdpaAvailableIndicator = DMMTSY_PHONE_CURRENT_NETWORK_HSDPA_AVAILABILITY1;
       
  2844 			networkInfoV8.iEgprsAvailableIndicator = DMMTSY_PHONE_CURRENT_NETWORK_EGPRS_AVAILABILITY1;
       
  2845 			networkInfoV8.iHsupaAvailableIndicator = DMMTSY_PHONE_CURRENT_NETWORK_HSUPA_AVAILABILITY1;
       
  2846 			}
       
  2847 			
       
  2848 
       
  2849 		else if(networkInfoV1.ExtensionId() == KEtelExtMultimodeV5)
       
  2850 			{
       
  2851 			RMobilePhone::TMobilePhoneNetworkInfoV5Pckg* networkInfoV5Pckg = (RMobilePhone::TMobilePhoneNetworkInfoV5Pckg*)aNetworkInfoPckg;
       
  2852 			RMobilePhone::TMobilePhoneNetworkInfoV5& networkInfoV5 = (*networkInfoV5Pckg)();
       
  2853 			networkInfoV5.iAccess = DMMTSY_PHONE_CURRENT_NETWORK_ACCESS_GSM;
       
  2854 			
       
  2855 			networkInfoV5.iHsdpaAvailableIndicator = DMMTSY_PHONE_CURRENT_NETWORK_HSDPA_AVAILABILITY;
       
  2856 			networkInfoV5.iEgprsAvailableIndicator = DMMTSY_PHONE_CURRENT_NETWORK_EGPRS_AVAILABILITY;
       
  2857 			}
       
  2858 			
       
  2859 		else if(networkInfoV1.ExtensionId() == KETelExtMultimodeV2)
       
  2860 			{
       
  2861 			RMobilePhone::TMobilePhoneNetworkInfoV2Pckg* networkInfoV2Pckg = (RMobilePhone::TMobilePhoneNetworkInfoV2Pckg*)aNetworkInfoPckg;
       
  2862 			RMobilePhone::TMobilePhoneNetworkInfoV2& networkInfoV2 = (*networkInfoV2Pckg)();
       
  2863 			networkInfoV2.iAccess = DMMTSY_PHONE_CURRENT_NETWORK_ACCESS_GSM;
       
  2864 			}
       
  2865 		
       
  2866 		networkInfoV1.iMode=DMMTSY_PHONE_CURRENT_NETWORK_MODE1;
       
  2867 		networkInfoV1.iStatus=DMMTSY_PHONE_CURRENT_NETWORK_STATUS1;
       
  2868 		networkInfoV1.iBandInfo=DMMTSY_PHONE_CURRENT_NETWORK_BAND1;
       
  2869 		networkInfoV1.iCountryCode=DMMTSY_PHONE_CURRENT_NETWORK_MCC1;
       
  2870 		networkInfoV1.iNetworkId=DMMTSY_PHONE_CURRENT_NETWORK_ID1;
       
  2871 		networkInfoV1.iCdmaSID=DMMTSY_PHONE_CURRENT_NETWORK_SID;
       
  2872 		networkInfoV1.iAnalogSID=DMMTSY_PHONE_CURRENT_NETWORK_SID;
       
  2873 		networkInfoV1.iDisplayTag=DMMTSY_PHONE_CURRENT_NETWORK_TAG1;
       
  2874 		networkInfoV1.iShortName=DMMTSY_PHONE_CURRENT_NETWORK_SHORT_NAME1;
       
  2875 		networkInfoV1.iLongName=DMMTSY_PHONE_CURRENT_NETWORK_LONG_NAME1;
       
  2876 
       
  2877 		if(aArea)
       
  2878 			{
       
  2879 			aArea->iAreaKnown=DMMTSY_PHONE_CURRENT_NETWORK_AREAKNOWN;
       
  2880 			aArea->iLocationAreaCode=DMMTSY_PHONE_CURRENT_NETWORK_LAC1;
       
  2881 			aArea->iCellId=DMMTSY_PHONE_CURRENT_NETWORK_CELLID1;
       
  2882 			}	
       
  2883 		}
       
  2884 
       
  2885 	AddDelayedReq(aTsyReqHandle,this);
       
  2886 	return KErrNone;
       
  2887 	}
       
  2888 
       
  2889 TInt CPhoneDMmTsy::GetCurrentNetworkCancel(const TTsyReqHandle aTsyReqHandle)
       
  2890 	{
       
  2891 	LOGTEXT(_L8("CPhoneDMmTsy::GetCurrentNetworkCancel called"));
       
  2892 	RemoveDelayedReq(aTsyReqHandle);
       
  2893 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2894 	return KErrNone;
       
  2895 	}
       
  2896 
       
  2897 TInt CPhoneDMmTsy::NotifyCurrentNetworkChange(const TTsyReqHandle aTsyReqHandle, TDes8* aNetworkInfoPckg, RMobilePhone::TMobilePhoneLocationAreaV1* aArea)
       
  2898 	{
       
  2899 	if (!iNotifyCurrentNetworkChange++)
       
  2900 		{
       
  2901 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyCurrentNetworkChange called"));
       
  2902 
       
  2903 		RMobilePhone::TMobilePhoneNetworkInfoV1Pckg* networkInfoPckg = (RMobilePhone::TMobilePhoneNetworkInfoV1Pckg*)aNetworkInfoPckg;
       
  2904 		RMobilePhone::TMobilePhoneNetworkInfoV1& networkInfo = (*networkInfoPckg)();
       
  2905 		
       
  2906 		if(networkInfo.ExtensionId() == KETelExt3rdPartyV1)
       
  2907 			{
       
  2908 			LOGTEXT(_L8("CPhoneDMmTsy::GetCurrentNetworkISV called"));
       
  2909 			RMobilePhone::TEtel3rdPartyMobileNetworkInfoV1Pckg* networkInfoISVPckg = (RMobilePhone::TEtel3rdPartyMobileNetworkInfoV1Pckg*)aNetworkInfoPckg;
       
  2910 			RMobilePhone::TEtel3rdPartyMobileNetworkInfoV1& networkInfoISV = (*networkInfoISVPckg)();
       
  2911 
       
  2912 			networkInfoISV.iMode=DMMTSY_PHONE_CURRENT_NETWORK_MODE_ISV2;
       
  2913 			networkInfoISV.iStatus=DMMTSY_PHONE_CURRENT_NETWORK_STATUS_ISV2;
       
  2914 			networkInfoISV.iBandInfo=DMMTSY_PHONE_CURRENT_NETWORK_BAND_ISV2;
       
  2915 			networkInfoISV.iCountryCode=DMMTSY_PHONE_CURRENT_NETWORK_MCC_ISV2;
       
  2916 			networkInfoISV.iNetworkId=DMMTSY_PHONE_CURRENT_NETWORK_ID_ISV2;
       
  2917 			networkInfoISV.iDisplayTag=DMMTSY_PHONE_CURRENT_NETWORK_TAG_ISV2;
       
  2918 			networkInfoISV.iShortName=DMMTSY_PHONE_CURRENT_NETWORK_SHORT_NAME_ISV2;
       
  2919 			networkInfoISV.iLongName=DMMTSY_PHONE_CURRENT_NETWORK_LONG_NAME_ISV2;
       
  2920 			networkInfoISV.iCdmaSID=DMMTSY_PHONE_CURRENT_NETWORK_CDMASID_ISV2;
       
  2921 			networkInfoISV.iAccess=DMMTSY_PHONE_CURRENT_NETWORK_ACCESS_UTRAN_ISV2;
       
  2922 					
       
  2923 			aArea->iAreaKnown=DMMTSY_PHONE_CURRENT_NETWORK_AREAKNOWN_ISV2;
       
  2924 			aArea->iLocationAreaCode=DMMTSY_PHONE_CURRENT_NETWORK_LAC_ISV2;
       
  2925 			aArea->iCellId=DMMTSY_PHONE_CURRENT_NETWORK_CELLID_ISV2;		
       
  2926 			
       
  2927 			}
       
  2928 		else
       
  2929 			{
       
  2930 			if(networkInfo.ExtensionId() == KETelExtMultimodeV2)
       
  2931 				{
       
  2932 				RMobilePhone::TMobilePhoneNetworkInfoV2Pckg* networkInfoV2Pckg = (RMobilePhone::TMobilePhoneNetworkInfoV2Pckg*)aNetworkInfoPckg;
       
  2933 				RMobilePhone::TMobilePhoneNetworkInfoV2& networkInfoV2 = (*networkInfoV2Pckg)();
       
  2934 				networkInfoV2.iAccess = DMMTSY_PHONE_CURRENT_NETWORK_ACCESS_GSM;
       
  2935 				//reset for V1
       
  2936 				iNotifyCurrentNetworkChange = 0;
       
  2937 				}		
       
  2938 
       
  2939 			if(networkInfo.ExtensionId() == KEtelExtMultimodeV8)
       
  2940 				{
       
  2941 				RMobilePhone::TMobilePhoneNetworkInfoV8Pckg* networkInfoV8Pckg = (RMobilePhone::TMobilePhoneNetworkInfoV8Pckg*)aNetworkInfoPckg;
       
  2942 				RMobilePhone::TMobilePhoneNetworkInfoV8& networkInfoV8 = (*networkInfoV8Pckg)();
       
  2943 				networkInfoV8.iAccess = DMMTSY_PHONE_CURRENT_NETWORK_ACCESS_TECH2;
       
  2944 				//reset for V8
       
  2945 				networkInfoV8.iHsdpaAvailableIndicator= DMMTSY_PHONE_CURRENT_NETWORK_HSDPA_AVAILABILITY2;
       
  2946 				networkInfoV8.iEgprsAvailableIndicator= DMMTSY_PHONE_CURRENT_NETWORK_EGPRS_AVAILABILITY2;
       
  2947 				networkInfoV8.iHsupaAvailableIndicator= DMMTSY_PHONE_CURRENT_NETWORK_HSUPA_AVAILABILITY2;
       
  2948 				iNotifyCurrentNetworkChange = 0;
       
  2949 				}		
       
  2950 
       
  2951 			networkInfo.iMode=DMMTSY_PHONE_CURRENT_NETWORK_MODE2;
       
  2952 			networkInfo.iStatus=DMMTSY_PHONE_CURRENT_NETWORK_STATUS2;
       
  2953 			networkInfo.iBandInfo=DMMTSY_PHONE_CURRENT_NETWORK_BAND2;
       
  2954 			networkInfo.iCountryCode=DMMTSY_PHONE_CURRENT_NETWORK_MCC2;
       
  2955 			networkInfo.iNetworkId=DMMTSY_PHONE_CURRENT_NETWORK_ID2;
       
  2956 			networkInfo.iDisplayTag=DMMTSY_PHONE_CURRENT_NETWORK_TAG2;
       
  2957 			networkInfo.iShortName=DMMTSY_PHONE_CURRENT_NETWORK_SHORT_NAME2;
       
  2958 			networkInfo.iLongName=DMMTSY_PHONE_CURRENT_NETWORK_LONG_NAME2;
       
  2959 
       
  2960 			if(aArea)
       
  2961 				{
       
  2962 				aArea->iAreaKnown=DMMTSY_PHONE_CURRENT_NETWORK_AREAKNOWN;
       
  2963 				aArea->iLocationAreaCode=DMMTSY_PHONE_CURRENT_NETWORK_LAC2;
       
  2964 				aArea->iCellId=DMMTSY_PHONE_CURRENT_NETWORK_CELLID2;
       
  2965 				}
       
  2966 				
       
  2967 
       
  2968 			}
       
  2969 		//reset for etel3rd
       
  2970 		iNotifyCurrentNetworkChange = 0;
       
  2971 
       
  2972 		AddDelayedReq(aTsyReqHandle,this);	
       
  2973 		}
       
  2974 	else
       
  2975 		{
       
  2976 		//reset for multiple completion test
       
  2977 		iNotifyCurrentNetworkChange = 0;
       
  2978 		}
       
  2979 	return KErrNone;
       
  2980 	}
       
  2981 
       
  2982 TInt CPhoneDMmTsy::NotifyCurrentNetworkChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  2983 	{
       
  2984 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyCurrentNetworkChangeCancel called"));
       
  2985 	RemoveDelayedReq(aTsyReqHandle);
       
  2986 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  2987 	return KErrNone;
       
  2988 	}
       
  2989 
       
  2990 TInt CPhoneDMmTsy::GetCellInfo(const TTsyReqHandle aTsyReqHandle, TDes8* aCellInfoPckg)
       
  2991 	{
       
  2992 	LOGTEXT(_L8("CPhoneDMmTsy::GetCellInfo called"));
       
  2993 	RMobilePhone::TMobilePhoneCellInfoV9Pckg* cellInfoPckg = (RMobilePhone::TMobilePhoneCellInfoV9Pckg*)aCellInfoPckg;
       
  2994 	RMobilePhone::TMobilePhoneCellInfoV9& cellInfo = (*cellInfoPckg)();
       
  2995 	
       
  2996 	cellInfo.iMode = DMMTSY_PHONE_CELL_INFO_MODE;
       
  2997 	cellInfo.iCellId = DMMTSY_PHONE_CELL_INFO_CELLID;
       
  2998 	cellInfo.iTimingAdvance = DMMTSY_PHONE_CELL_INFO_TIMING_ADVANCE;	
       
  2999 	cellInfo.iStatus = DMMTSY_PHONE_CELL_INFO_STATUS;
       
  3000 	
       
  3001 	AddDelayedReq(aTsyReqHandle,this);
       
  3002 	return KErrNone;
       
  3003 	}
       
  3004 
       
  3005 TInt CPhoneDMmTsy::GetCellInfoCancel(const TTsyReqHandle aTsyReqHandle)
       
  3006 	{
       
  3007 	LOGTEXT(_L8("CPhoneDMmTsy::GetCellInfoCancel called"));
       
  3008 	RemoveDelayedReq(aTsyReqHandle);
       
  3009 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3010 	return KErrNone;
       
  3011 	}
       
  3012 
       
  3013 TInt CPhoneDMmTsy::NotifyCellInfoChange(const TTsyReqHandle aTsyReqHandle, TDes8* aCellInfoPckg)
       
  3014 	{
       
  3015 	if (!iNotifyCellInfoChange++)
       
  3016 		{
       
  3017 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyCellInfoChange called"));
       
  3018 
       
  3019 		RMobilePhone::TMobilePhoneCellInfoV9Pckg* cellInfoPckg = (RMobilePhone::TMobilePhoneCellInfoV9Pckg*)aCellInfoPckg;
       
  3020 		RMobilePhone::TMobilePhoneCellInfoV9& cellInfo = (*cellInfoPckg)();
       
  3021 	
       
  3022 		cellInfo.iMode = DMMTSY_PHONE_CELL_INFO_MODE2;
       
  3023 		cellInfo.iCellId = DMMTSY_PHONE_CELL_INFO_CELLID2;
       
  3024 		cellInfo.iTimingAdvance = DMMTSY_PHONE_CELL_INFO_TIMING_ADVANCE2;
       
  3025 		cellInfo.iStatus = DMMTSY_PHONE_CELL_INFO_STATUS2;
       
  3026 		
       
  3027 		AddDelayedReq(aTsyReqHandle,this);	
       
  3028 		}
       
  3029 	else
       
  3030 		{
       
  3031 		//reset for multiple completion test
       
  3032 		iNotifyCellInfoChange = 0;
       
  3033 		}
       
  3034 	return KErrNone;
       
  3035 	}
       
  3036 
       
  3037 TInt CPhoneDMmTsy::NotifyCellInfoChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  3038 	{
       
  3039 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyCellInfoChangeCancel called"));
       
  3040 	RemoveDelayedReq(aTsyReqHandle);
       
  3041 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3042 	return KErrNone;
       
  3043 	}
       
  3044 
       
  3045 TInt CPhoneDMmTsy::GetNetworkRegistrationStatus(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneRegistrationStatus* aStatus)
       
  3046 	{
       
  3047 	LOGTEXT(_L8("CPhoneDMmTsy::GetNetworkRegistrationStatus called"));
       
  3048 	*aStatus=DMMTSY_PHONE_REGISTRATION_STATUS1;
       
  3049 	AddDelayedReq(aTsyReqHandle,this);
       
  3050 	return KErrNone;
       
  3051 	}
       
  3052 
       
  3053 TInt CPhoneDMmTsy::GetNetworkRegistrationStatusCancel(const TTsyReqHandle aTsyReqHandle)
       
  3054 	{
       
  3055 	LOGTEXT(_L8("CPhoneDMmTsy::GetNetworkRegistrationStatusCancel called"));
       
  3056 	RemoveDelayedReq(aTsyReqHandle);
       
  3057 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3058 	return KErrNone;
       
  3059 	}
       
  3060 
       
  3061 TInt CPhoneDMmTsy::NotifyNetworkRegistrationStatusChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneRegistrationStatus* aStatus)
       
  3062 	{
       
  3063 	if(!iNotifyNetworkRegistrationStatusChange++)
       
  3064 		{
       
  3065 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyNetworkRegistrationStatusChange called"));
       
  3066 		*aStatus=DMMTSY_PHONE_REGISTRATION_STATUS2;
       
  3067 		AddDelayedReq(aTsyReqHandle,this);
       
  3068 		}
       
  3069 	return KErrNone;
       
  3070 	}
       
  3071 
       
  3072 TInt CPhoneDMmTsy::NotifyNetworkRegistrationStatusChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  3073 	{
       
  3074 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyNetworkRegistrationStatusChangeCancel called"));
       
  3075 	RemoveDelayedReq(aTsyReqHandle);
       
  3076 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3077 	return KErrNone;
       
  3078 	}
       
  3079 
       
  3080 TInt CPhoneDMmTsy::GetDetectedNetworksPhase1(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aClient, TInt* aBufSize)
       
  3081 	{
       
  3082 	LOGTEXT(_L8("CPhoneDMmTsy::GetDetectedNetworksPhase1 called"));
       
  3083 	TInt ret=KErrNone;
       
  3084 	TInt leaveCode=KErrNone;
       
  3085 	TRAP(leaveCode, ret=ProcessGetDetectedNetworksPhase1L(aTsyReqHandle, aClient, aBufSize););
       
  3086 	if (leaveCode != KErrNone)
       
  3087 		ReqCompleted(aTsyReqHandle,leaveCode);
       
  3088 	return ret;
       
  3089 	}
       
  3090 
       
  3091 TInt CPhoneDMmTsy::ProcessGetDetectedNetworksPhase1L(const TTsyReqHandle aTsyReqHandle, 
       
  3092 													 RMobilePhone::TClientId* aClient, 
       
  3093 													 TInt* aBufSize)
       
  3094 	{
       
  3095 	// retrieve detected networks from phone, 
       
  3096 	// store each network as a list entry,
       
  3097 	// stream the list and then return size of this buffer to client
       
  3098 	CMobilePhoneNetworkList* list=CMobilePhoneNetworkList::NewL();
       
  3099 	CleanupStack::PushL(list);
       
  3100 
       
  3101 	RMobilePhone::TMobilePhoneNetworkInfoV1 entry;
       
  3102 
       
  3103 	// fill up an example list
       
  3104 	for (TInt index=0; index < DMMTSY_NETWORK_COUNT; index++)
       
  3105 		{
       
  3106 		switch (index)
       
  3107 			{
       
  3108 		case 0:
       
  3109 			entry.iMode=DMMTSY_PHONE_CURRENT_NETWORK_MODE1;
       
  3110 			entry.iStatus=DMMTSY_PHONE_CURRENT_NETWORK_STATUS1;
       
  3111 			entry.iBandInfo=DMMTSY_PHONE_CURRENT_NETWORK_BAND1;
       
  3112 			entry.iCountryCode=DMMTSY_PHONE_CURRENT_NETWORK_MCC1;
       
  3113 			entry.iNetworkId=DMMTSY_PHONE_CURRENT_NETWORK_ID1;
       
  3114 			entry.iDisplayTag=DMMTSY_PHONE_CURRENT_NETWORK_TAG1;
       
  3115 			entry.iShortName=DMMTSY_PHONE_CURRENT_NETWORK_SHORT_NAME1;
       
  3116 			entry.iLongName=DMMTSY_PHONE_CURRENT_NETWORK_LONG_NAME1;
       
  3117 			break;
       
  3118 		case 1:
       
  3119 			entry.iMode=DMMTSY_PHONE_CURRENT_NETWORK_MODE2;
       
  3120 			entry.iStatus=DMMTSY_PHONE_CURRENT_NETWORK_STATUS2;
       
  3121 			entry.iBandInfo=DMMTSY_PHONE_CURRENT_NETWORK_BAND2;
       
  3122 			entry.iCountryCode=DMMTSY_PHONE_CURRENT_NETWORK_MCC2;
       
  3123 			entry.iNetworkId=DMMTSY_PHONE_CURRENT_NETWORK_ID2;
       
  3124 			entry.iDisplayTag=DMMTSY_PHONE_CURRENT_NETWORK_TAG2;
       
  3125 			entry.iShortName=DMMTSY_PHONE_CURRENT_NETWORK_SHORT_NAME2;
       
  3126 			entry.iLongName=DMMTSY_PHONE_CURRENT_NETWORK_LONG_NAME2;
       
  3127 			break;
       
  3128 		case 2:
       
  3129 		default:
       
  3130 			entry.iMode=DMMTSY_PHONE_HOME_NETWORK_MODE;
       
  3131 			entry.iStatus=DMMTSY_PHONE_HOME_NETWORK_STATUS;
       
  3132 			entry.iBandInfo=DMMTSY_PHONE_HOME_NETWORK_BAND;
       
  3133 			entry.iCountryCode=DMMTSY_PHONE_HOME_NETWORK_MCC;
       
  3134 			entry.iNetworkId=DMMTSY_PHONE_HOME_NETWORK_ID;
       
  3135 			entry.iDisplayTag=DMMTSY_PHONE_HOME_NETWORK_TAG;
       
  3136 			entry.iShortName=DMMTSY_PHONE_HOME_NETWORK_SHORT_NAME;
       
  3137 			entry.iLongName=DMMTSY_PHONE_HOME_NETWORK_LONG_NAME;
       
  3138 			break;
       
  3139 			}
       
  3140 			// Add the entry into the list, at the next empty location
       
  3141 			list->AddEntryL(entry);
       
  3142 		}
       
  3143 
       
  3144 	// Store the streamed list and the client ID
       
  3145 	CListReadAllAttempt* read=CListReadAllAttempt::NewL(aClient,aTsyReqHandle);
       
  3146 	CleanupStack::PushL(read);
       
  3147 	
       
  3148 	read->iListBuf = list->StoreLC();
       
  3149 	CleanupStack::Pop(); // pop the CBufBase allocated by StoreLC
       
  3150 	
       
  3151 	iGetDetectedNetworks->AppendL(read);
       
  3152 	CleanupStack::Pop(); // pop the CListReadAllAttempt
       
  3153 	
       
  3154 	// return the CBufBase’s size to client
       
  3155 	*aBufSize=(read->iListBuf)->Size();
       
  3156 	
       
  3157 	// Complete first phase of list retrieval
       
  3158 	AddDelayedReq(aTsyReqHandle,this);
       
  3159 	CleanupStack::PopAndDestroy(); // pop&destroy list
       
  3160 	return KErrNone;
       
  3161 	}
       
  3162 
       
  3163 
       
  3164 
       
  3165 TInt CPhoneDMmTsy::GetDetectedNetworksPhase2(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aClient, TDes8* aBuf)
       
  3166 	{
       
  3167 	LOGTEXT(_L8("CPhoneDMmTsy::GetDetectedNetworksPhase2 called"));
       
  3168 	CListReadAllAttempt* read=NULL;
       
  3169 	// Find the get detected network attempt from this client
       
  3170 	for (TInt i=0; i<iGetDetectedNetworks->Count(); ++i)
       
  3171 		{
       
  3172 		read = iGetDetectedNetworks->At(i);
       
  3173 		if ((read->iClient.iSessionHandle==aClient->iSessionHandle) &&
       
  3174 		    (read->iClient.iSubSessionHandle==aClient->iSubSessionHandle))
       
  3175 			{
       
  3176 			TPtr8 bufPtr((read->iListBuf)->Ptr(0));
       
  3177 			// Copy the streamed list to the client
       
  3178 			aBuf->Copy(bufPtr);
       
  3179 			delete read;
       
  3180 			iGetDetectedNetworks->Delete(i);
       
  3181 			ReqCompleted(aTsyReqHandle,KErrNone);
       
  3182 			return KErrNone;
       
  3183 			}
       
  3184 		}
       
  3185 	// Should handle error case of not finding the matching client from read all phase 1
       
  3186 	return KErrNotFound;
       
  3187 	}
       
  3188 
       
  3189 TInt CPhoneDMmTsy::GetDetectedNetworksCancel(const TTsyReqHandle aTsyReqHandle)
       
  3190 	{
       
  3191 	LOGTEXT(_L8("CPhoneDMmTsy::GetDetectedNetworksCancel called"));
       
  3192 	RemoveDelayedReq(aTsyReqHandle);
       
  3193 	// Remove the read all attempt from iGetDetectedNetworks
       
  3194 	CListReadAllAttempt* read=NULL;
       
  3195 	for (TInt i=0; i<iGetDetectedNetworks->Count(); ++i)
       
  3196 		{
       
  3197 		read = iGetDetectedNetworks->At(i);
       
  3198 		if (read->iReqHandle == aTsyReqHandle)
       
  3199 			{
       
  3200 			delete read;
       
  3201 			iGetDetectedNetworks->Delete(i);
       
  3202 			break;
       
  3203 			}
       
  3204 		}
       
  3205 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3206 	return KErrNone;
       
  3207 	}
       
  3208 
       
  3209 TInt CPhoneDMmTsy::GetDetectedNetworksV2Phase1(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aClient, TInt* aBufSize)
       
  3210 	{
       
  3211 	LOGTEXT(_L8("CPhoneDMmTsy::GetDetectedNetworksV2Phase1 called"));
       
  3212 	TInt ret=KErrNone;
       
  3213 	TInt leaveCode=KErrNone;
       
  3214 	TRAP(leaveCode, ret=ProcessGetDetectedNetworksV2Phase1L(aTsyReqHandle, aClient, aBufSize););
       
  3215 	if (leaveCode != KErrNone)
       
  3216 		ReqCompleted(aTsyReqHandle,leaveCode);
       
  3217 	return ret;
       
  3218 	}
       
  3219 
       
  3220 TInt CPhoneDMmTsy::ProcessGetDetectedNetworksV2Phase1L(const TTsyReqHandle aTsyReqHandle, 
       
  3221 													 RMobilePhone::TClientId* aClient, 
       
  3222 													 TInt* aBufSize)
       
  3223 	{
       
  3224 	// Retrieve detected networks from phone, 
       
  3225 	// Store each network as a list entry of type TMobilePhoneNetworkInfoV2,
       
  3226 	// Stream the list and then return size of this buffer to client
       
  3227 	CMobilePhoneNetworkListV2* list=CMobilePhoneNetworkListV2::NewL();
       
  3228 	CleanupStack::PushL(list);
       
  3229 
       
  3230 	RMobilePhone::TMobilePhoneNetworkInfoV2 entry;
       
  3231 
       
  3232 	// fill up an example list
       
  3233 	for (TInt index=0; index < DMMTSY_NETWORK_COUNT; index++)
       
  3234 		{
       
  3235 		switch (index)
       
  3236 			{
       
  3237 		case 0:
       
  3238 			entry.iMode=DMMTSY_PHONE_CURRENT_NETWORK_MODE1;
       
  3239 			entry.iStatus=DMMTSY_PHONE_CURRENT_NETWORK_STATUS1;
       
  3240 			entry.iBandInfo=DMMTSY_PHONE_CURRENT_NETWORK_BAND1;
       
  3241 			entry.iCountryCode=DMMTSY_PHONE_CURRENT_NETWORK_MCC1;
       
  3242 			entry.iNetworkId=DMMTSY_PHONE_CURRENT_NETWORK_ID1;
       
  3243 			entry.iDisplayTag=DMMTSY_PHONE_CURRENT_NETWORK_TAG1;
       
  3244 			entry.iShortName=DMMTSY_PHONE_CURRENT_NETWORK_SHORT_NAME1;
       
  3245 			entry.iLongName=DMMTSY_PHONE_CURRENT_NETWORK_LONG_NAME1;
       
  3246 			entry.iAccess=DMMTSY_PHONE_CURRENT_NETWORK_ACCESS_TECH1;
       
  3247 			break;
       
  3248 		case 1:
       
  3249 			entry.iMode=DMMTSY_PHONE_CURRENT_NETWORK_MODE2;
       
  3250 			entry.iStatus=DMMTSY_PHONE_CURRENT_NETWORK_STATUS2;
       
  3251 			entry.iBandInfo=DMMTSY_PHONE_CURRENT_NETWORK_BAND2;
       
  3252 			entry.iCountryCode=DMMTSY_PHONE_CURRENT_NETWORK_MCC2;
       
  3253 			entry.iNetworkId=DMMTSY_PHONE_CURRENT_NETWORK_ID2;
       
  3254 			entry.iDisplayTag=DMMTSY_PHONE_CURRENT_NETWORK_TAG2;
       
  3255 			entry.iShortName=DMMTSY_PHONE_CURRENT_NETWORK_SHORT_NAME2;
       
  3256 			entry.iLongName=DMMTSY_PHONE_CURRENT_NETWORK_LONG_NAME2;
       
  3257 			entry.iAccess=DMMTSY_PHONE_CURRENT_NETWORK_ACCESS_TECH2;
       
  3258 			break;
       
  3259 		case 2:
       
  3260 			entry.iMode=DMMTSY_PHONE_HOME_NETWORK_MODE;
       
  3261 			entry.iStatus=DMMTSY_PHONE_HOME_NETWORK_STATUS;
       
  3262 			entry.iBandInfo=DMMTSY_PHONE_HOME_NETWORK_BAND;
       
  3263 			entry.iCountryCode=DMMTSY_PHONE_HOME_NETWORK_MCC;
       
  3264 			entry.iNetworkId=DMMTSY_PHONE_HOME_NETWORK_ID;
       
  3265 			entry.iDisplayTag=DMMTSY_PHONE_HOME_NETWORK_TAG;
       
  3266 			entry.iShortName=DMMTSY_PHONE_HOME_NETWORK_SHORT_NAME;
       
  3267 			entry.iLongName=DMMTSY_PHONE_HOME_NETWORK_LONG_NAME;
       
  3268 			entry.iAccess=DMMTSY_PHONE_HOME_NETWORK_ACCESS_TECH;
       
  3269 			break;
       
  3270 		case 3:
       
  3271 		default:
       
  3272 			entry.iMode=DMMTSY_PHONE_HOME_NETWORK_MODE;
       
  3273 			entry.iStatus=DMMTSY_PHONE_HOME_NETWORK_STATUS;
       
  3274 			entry.iBandInfo=DMMTSY_PHONE_HOME_NETWORK_BAND;
       
  3275 			entry.iCountryCode=DMMTSY_PHONE_HOME_NETWORK_MCC;
       
  3276 			entry.iNetworkId=DMMTSY_PHONE_HOME_NETWORK_ID;
       
  3277 			entry.iDisplayTag=DMMTSY_PHONE_HOME_NETWORK_TAG;
       
  3278 			entry.iShortName=DMMTSY_PHONE_HOME_NETWORK_SHORT_NAME;
       
  3279 			entry.iLongName=DMMTSY_PHONE_HOME_NETWORK_LONG_NAME;
       
  3280 			entry.iAccess=DMMTSY_PHONE_HOME_NETWORK_ACCESS_TECH3;
       
  3281 			break;
       
  3282 			}
       
  3283 			// Add the entry into the list, at the next empty location
       
  3284 			list->AddEntryL(entry);
       
  3285 		}
       
  3286 
       
  3287 	// Store the streamed list and the client ID
       
  3288 	CListReadAllAttempt* read=CListReadAllAttempt::NewL(aClient,aTsyReqHandle);
       
  3289 	CleanupStack::PushL(read);
       
  3290 	
       
  3291 	read->iListBuf = list->StoreLC();
       
  3292 	CleanupStack::Pop(); // pop the CBufBase allocated by StoreLC
       
  3293 	
       
  3294 	iGetDetectedNetworks->AppendL(read);
       
  3295 	CleanupStack::Pop(); // pop the CListReadAllAttempt
       
  3296 	
       
  3297 	// return the CBufBase’s size to client
       
  3298 	*aBufSize=(read->iListBuf)->Size();
       
  3299 	
       
  3300 	// Complete first phase of list retrieval
       
  3301 	AddDelayedReq(aTsyReqHandle,this);
       
  3302 	CleanupStack::PopAndDestroy(); // pop&destroy list
       
  3303 	return KErrNone;
       
  3304 	}
       
  3305 
       
  3306 
       
  3307 
       
  3308 TInt CPhoneDMmTsy::GetDetectedNetworksV2Phase2(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aClient, TDes8* aBuf)
       
  3309 	{
       
  3310 	LOGTEXT(_L8("CPhoneDMmTsy::GetDetectedNetworksV2Phase2 called"));
       
  3311 	CListReadAllAttempt* read=NULL;
       
  3312 	// Find the get detected network attempt from this client
       
  3313 	for (TInt i=0; i<iGetDetectedNetworks->Count(); ++i)
       
  3314 		{
       
  3315 		read = iGetDetectedNetworks->At(i);
       
  3316 		if ((read->iClient.iSessionHandle==aClient->iSessionHandle) &&
       
  3317 		    (read->iClient.iSubSessionHandle==aClient->iSubSessionHandle))
       
  3318 			{
       
  3319 			TPtr8 bufPtr((read->iListBuf)->Ptr(0));
       
  3320 			// Copy the streamed list to the client
       
  3321 			aBuf->Copy(bufPtr);
       
  3322 			delete read;
       
  3323 			iGetDetectedNetworks->Delete(i);
       
  3324 			ReqCompleted(aTsyReqHandle,KErrNone);
       
  3325 			return KErrNone;
       
  3326 			}
       
  3327 		}
       
  3328 	// Should handle error case of not finding the matching client from read all phase 1
       
  3329 	return KErrNotFound;
       
  3330 	}
       
  3331 
       
  3332 TInt CPhoneDMmTsy::GetDetectedNetworksV2Cancel(const TTsyReqHandle aTsyReqHandle)
       
  3333 	{
       
  3334 	LOGTEXT(_L8("CPhoneDMmTsy::GetDetectedNetworksV2Cancel called"));
       
  3335 	RemoveDelayedReq(aTsyReqHandle);
       
  3336 	// Remove the read all attempt from iGetDetectedNetworks
       
  3337 	CListReadAllAttempt* read=NULL;
       
  3338 	for (TInt i=0; i<iGetDetectedNetworks->Count(); ++i)
       
  3339 		{
       
  3340 		read = iGetDetectedNetworks->At(i);
       
  3341 		if (read->iReqHandle == aTsyReqHandle)
       
  3342 			{
       
  3343 			delete read;
       
  3344 			iGetDetectedNetworks->Delete(i);
       
  3345 			break;
       
  3346 			}
       
  3347 		}
       
  3348 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3349 	return KErrNone;
       
  3350 	}
       
  3351 
       
  3352 //
       
  3353 // GetDetectedNetworksV8 //
       
  3354 //
       
  3355 TInt CPhoneDMmTsy::GetDetectedNetworksV8Phase1(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aClient, TInt* aBufSize)
       
  3356 	{
       
  3357 	LOGTEXT(_L8("CPhoneDMmTsy::GetDetectedNetworksV8Phase1 called"));
       
  3358 	TInt ret=KErrNone;
       
  3359 	TRAPD(leaveCode, ret=ProcessGetDetectedNetworksV8Phase1L(aTsyReqHandle, aClient, aBufSize););
       
  3360 	if (leaveCode != KErrNone)
       
  3361 		ReqCompleted(aTsyReqHandle,leaveCode);
       
  3362 	return ret;
       
  3363 	}
       
  3364 
       
  3365 TInt CPhoneDMmTsy::ProcessGetDetectedNetworksV8Phase1L(const TTsyReqHandle aTsyReqHandle, 
       
  3366 					RMobilePhone::TClientId* aClient, TInt* aBufSize)
       
  3367 	{
       
  3368 	// Retrieve detected networks from phone, 
       
  3369 	// Store each network as a list entry of type TMobilePhoneNetworkInfoV8,
       
  3370 	// Stream the list and then return size of this buffer to client
       
  3371 	CMobilePhoneNetworkListV8* list=CMobilePhoneNetworkListV8::NewL();
       
  3372 	CleanupStack::PushL(list);
       
  3373 
       
  3374 	RMobilePhone::TMobilePhoneNetworkInfoV8 entry;
       
  3375 
       
  3376 	// fill up an example list
       
  3377 	for (TInt index=0; index < DMMTSY_NETWORK_COUNT; index++)
       
  3378 		{
       
  3379 		switch (index)
       
  3380 			{
       
  3381 		case 0:
       
  3382 			entry.iMode=DMMTSY_PHONE_CURRENT_NETWORK_MODE1;
       
  3383 			entry.iStatus=DMMTSY_PHONE_CURRENT_NETWORK_STATUS1;
       
  3384 			entry.iBandInfo=DMMTSY_PHONE_CURRENT_NETWORK_BAND1;
       
  3385 			entry.iCountryCode=DMMTSY_PHONE_CURRENT_NETWORK_MCC1;
       
  3386 			entry.iNetworkId=DMMTSY_PHONE_CURRENT_NETWORK_ID1;
       
  3387 			entry.iDisplayTag=DMMTSY_PHONE_CURRENT_NETWORK_TAG1;
       
  3388 			entry.iShortName=DMMTSY_PHONE_CURRENT_NETWORK_SHORT_NAME1;
       
  3389 			entry.iLongName=DMMTSY_PHONE_CURRENT_NETWORK_LONG_NAME1;
       
  3390 			entry.iAccess=DMMTSY_PHONE_CURRENT_NETWORK_ACCESS_TECH1;
       
  3391 			entry.iHsdpaAvailableIndicator=DMMTSY_PHONE_CURRENT_NETWORK_HSDPA_AVAILABILITY1;
       
  3392 			entry.iEgprsAvailableIndicator=DMMTSY_PHONE_CURRENT_NETWORK_EGPRS_AVAILABILITY1;
       
  3393 			entry.iHsupaAvailableIndicator=DMMTSY_PHONE_CURRENT_NETWORK_HSUPA_AVAILABILITY1;
       
  3394 			break;
       
  3395 		case 1:
       
  3396 			entry.iMode=DMMTSY_PHONE_CURRENT_NETWORK_MODE2;
       
  3397 			entry.iStatus=DMMTSY_PHONE_CURRENT_NETWORK_STATUS2;
       
  3398 			entry.iBandInfo=DMMTSY_PHONE_CURRENT_NETWORK_BAND2;
       
  3399 			entry.iCountryCode=DMMTSY_PHONE_CURRENT_NETWORK_MCC2;
       
  3400 			entry.iNetworkId=DMMTSY_PHONE_CURRENT_NETWORK_ID2;
       
  3401 			entry.iDisplayTag=DMMTSY_PHONE_CURRENT_NETWORK_TAG2;
       
  3402 			entry.iShortName=DMMTSY_PHONE_CURRENT_NETWORK_SHORT_NAME2;
       
  3403 			entry.iLongName=DMMTSY_PHONE_CURRENT_NETWORK_LONG_NAME2;
       
  3404 			entry.iAccess=DMMTSY_PHONE_CURRENT_NETWORK_ACCESS_TECH2;
       
  3405 			entry.iHsdpaAvailableIndicator=DMMTSY_PHONE_CURRENT_NETWORK_HSDPA_AVAILABILITY2;
       
  3406 			entry.iEgprsAvailableIndicator=DMMTSY_PHONE_CURRENT_NETWORK_EGPRS_AVAILABILITY2;
       
  3407 			entry.iHsupaAvailableIndicator=DMMTSY_PHONE_CURRENT_NETWORK_HSUPA_AVAILABILITY2;
       
  3408 			break;
       
  3409 		case 2:
       
  3410 			entry.iMode=DMMTSY_PHONE_HOME_NETWORK_MODE;
       
  3411 			entry.iStatus=DMMTSY_PHONE_HOME_NETWORK_STATUS;
       
  3412 			entry.iBandInfo=DMMTSY_PHONE_HOME_NETWORK_BAND;
       
  3413 			entry.iCountryCode=DMMTSY_PHONE_HOME_NETWORK_MCC;
       
  3414 			entry.iNetworkId=DMMTSY_PHONE_HOME_NETWORK_ID;
       
  3415 			entry.iDisplayTag=DMMTSY_PHONE_HOME_NETWORK_TAG;
       
  3416 			entry.iShortName=DMMTSY_PHONE_HOME_NETWORK_SHORT_NAME;
       
  3417 			entry.iLongName=DMMTSY_PHONE_HOME_NETWORK_LONG_NAME;
       
  3418 			entry.iAccess=DMMTSY_PHONE_HOME_NETWORK_ACCESS_TECH;
       
  3419 			entry.iHsdpaAvailableIndicator=DMMTSY_PHONE_HOME_NETWORK_HSDPA_AVAILABILITY;
       
  3420 			entry.iEgprsAvailableIndicator=DMMTSY_PHONE_HOME_NETWORK_EGPRS_AVAILABILITY;
       
  3421 			entry.iHsupaAvailableIndicator=DMMTSY_PHONE_HOME_NETWORK_HSUPA_AVAILABILITY;
       
  3422 			break;
       
  3423 		case 3:
       
  3424 		default:
       
  3425 			entry.iMode=DMMTSY_PHONE_HOME_NETWORK_MODE;
       
  3426 			entry.iStatus=DMMTSY_PHONE_HOME_NETWORK_STATUS;
       
  3427 			entry.iBandInfo=DMMTSY_PHONE_HOME_NETWORK_BAND;
       
  3428 			entry.iCountryCode=DMMTSY_PHONE_HOME_NETWORK_MCC;
       
  3429 			entry.iNetworkId=DMMTSY_PHONE_HOME_NETWORK_ID;
       
  3430 			entry.iDisplayTag=DMMTSY_PHONE_HOME_NETWORK_TAG;
       
  3431 			entry.iShortName=DMMTSY_PHONE_HOME_NETWORK_SHORT_NAME;
       
  3432 			entry.iLongName=DMMTSY_PHONE_HOME_NETWORK_LONG_NAME;
       
  3433 			entry.iAccess=DMMTSY_PHONE_HOME_NETWORK_ACCESS_TECH3;
       
  3434 			entry.iHsdpaAvailableIndicator=DMMTSY_PHONE_HOME_NETWORK_HSDPA_AVAILABILITY;
       
  3435 			entry.iEgprsAvailableIndicator=DMMTSY_PHONE_HOME_NETWORK_EGPRS_AVAILABILITY;
       
  3436 			entry.iHsupaAvailableIndicator=DMMTSY_PHONE_HOME_NETWORK_HSUPA_AVAILABILITY;
       
  3437 			break;
       
  3438 			}
       
  3439 			// Add the entry into the list, at the next empty location
       
  3440 			list->AddEntryL(entry);
       
  3441 		}
       
  3442 	// Store the streamed list and the client ID
       
  3443 	CListReadAllAttempt* read=CListReadAllAttempt::NewL(aClient,aTsyReqHandle);
       
  3444 	CleanupStack::PushL(read);
       
  3445 	
       
  3446 	read->iListBuf = list->StoreLC();
       
  3447 	CleanupStack::Pop(); // pop the CBufBase allocated by StoreLC
       
  3448 	
       
  3449 	iGetDetectedNetworks->AppendL(read);
       
  3450 	CleanupStack::Pop(); // pop the CListReadAllAttempt
       
  3451 	
       
  3452 	// return the CBufBase’s size to client
       
  3453 	*aBufSize=(read->iListBuf)->Size();
       
  3454 	
       
  3455 	// Complete first phase of list retrieval
       
  3456 	AddDelayedReq(aTsyReqHandle,this);
       
  3457 	CleanupStack::PopAndDestroy(); // pop&destroy list
       
  3458 	return KErrNone;
       
  3459 	}
       
  3460 
       
  3461 TInt CPhoneDMmTsy::GetDetectedNetworksV8Phase2(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aClient, TDes8* aBuf)
       
  3462 	{
       
  3463 	LOGTEXT(_L8("CPhoneDMmTsy::GetDetectedNetworksV8Phase2 called"));
       
  3464 	CListReadAllAttempt* read=NULL;
       
  3465 	// Find the get detected network attempt from this client
       
  3466 	for (TInt i=0; i<iGetDetectedNetworks->Count(); ++i)
       
  3467 		{
       
  3468 		read = iGetDetectedNetworks->At(i);
       
  3469 		if ((read->iClient.iSessionHandle==aClient->iSessionHandle) &&
       
  3470 		    (read->iClient.iSubSessionHandle==aClient->iSubSessionHandle))
       
  3471 			{
       
  3472 			TPtr8 bufPtr((read->iListBuf)->Ptr(0));
       
  3473 			// Copy the streamed list to the client
       
  3474 			aBuf->Copy(bufPtr);
       
  3475 			delete read;
       
  3476 			iGetDetectedNetworks->Delete(i);
       
  3477 			ReqCompleted(aTsyReqHandle,KErrNone);
       
  3478 			return KErrNone;
       
  3479 			}
       
  3480 		}
       
  3481 	// Should handle error case of not finding the matching client from read all phase 1
       
  3482 	return KErrNotFound;
       
  3483 	}
       
  3484 
       
  3485 TInt CPhoneDMmTsy::GetDetectedNetworksV8Cancel(const TTsyReqHandle aTsyReqHandle)
       
  3486 	{
       
  3487 	LOGTEXT(_L8("CPhoneDMmTsy::GetDetectedNetworksV8Cancel called"));
       
  3488 	RemoveDelayedReq(aTsyReqHandle);
       
  3489 	// Remove the read all attempt from iGetDetectedNetworks
       
  3490 	CListReadAllAttempt* read=NULL;
       
  3491 	for (TInt i=0; i<iGetDetectedNetworks->Count(); ++i)
       
  3492 		{
       
  3493 		read = iGetDetectedNetworks->At(i);
       
  3494 		if (read->iReqHandle == aTsyReqHandle)
       
  3495 			{
       
  3496 			delete read;
       
  3497 			iGetDetectedNetworks->Delete(i);
       
  3498 			break;
       
  3499 			}
       
  3500 		}
       
  3501 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3502 	return KErrNone;
       
  3503 	}
       
  3504 
       
  3505 
       
  3506 //
       
  3507 // GetDetectedNetworksV5 //
       
  3508 //
       
  3509 TInt CPhoneDMmTsy::GetDetectedNetworksV5Phase1(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aClient, TInt* aBufSize)
       
  3510 	{
       
  3511 	LOGTEXT(_L8("CPhoneDMmTsy::GetDetectedNetworksV5Phase1 called"));
       
  3512 	TInt ret=KErrNone;
       
  3513 	TInt leaveCode=KErrNone;
       
  3514 	TRAP(leaveCode, ret=ProcessGetDetectedNetworksV5Phase1L(aTsyReqHandle, aClient, aBufSize););
       
  3515 	if (leaveCode != KErrNone)
       
  3516 		ReqCompleted(aTsyReqHandle,leaveCode);
       
  3517 	return ret;
       
  3518 	}
       
  3519 
       
  3520 TInt CPhoneDMmTsy::ProcessGetDetectedNetworksV5Phase1L(const TTsyReqHandle aTsyReqHandle, 
       
  3521 													 RMobilePhone::TClientId* aClient, 
       
  3522 													 TInt* aBufSize)
       
  3523 	{
       
  3524 	// Retrieve detected networks from phone, 
       
  3525 	// Store each network as a list entry of type TMobilePhoneNetworkInfoV2,
       
  3526 	// Stream the list and then return size of this buffer to client
       
  3527 	CMobilePhoneNetworkListV5* list=CMobilePhoneNetworkListV5::NewL();
       
  3528 	CleanupStack::PushL(list);
       
  3529 
       
  3530 	RMobilePhone::TMobilePhoneNetworkInfoV5 entry;
       
  3531 
       
  3532 	// fill up an example list
       
  3533 	for (TInt index=0; index < DMMTSY_NETWORK_COUNT; index++)
       
  3534 		{
       
  3535 		switch (index)
       
  3536 			{
       
  3537 		case 0:
       
  3538 			entry.iMode=DMMTSY_PHONE_CURRENT_NETWORK_MODE1;
       
  3539 			entry.iStatus=DMMTSY_PHONE_CURRENT_NETWORK_STATUS1;
       
  3540 			entry.iBandInfo=DMMTSY_PHONE_CURRENT_NETWORK_BAND1;
       
  3541 			entry.iCountryCode=DMMTSY_PHONE_CURRENT_NETWORK_MCC1;
       
  3542 			entry.iNetworkId=DMMTSY_PHONE_CURRENT_NETWORK_ID1;
       
  3543 			entry.iDisplayTag=DMMTSY_PHONE_CURRENT_NETWORK_TAG1;
       
  3544 			entry.iShortName=DMMTSY_PHONE_CURRENT_NETWORK_SHORT_NAME1;
       
  3545 			entry.iLongName=DMMTSY_PHONE_CURRENT_NETWORK_LONG_NAME1;
       
  3546 			entry.iAccess=DMMTSY_PHONE_CURRENT_NETWORK_ACCESS_TECH1;
       
  3547 			entry.iHsdpaAvailableIndicator=DMMTSY_PHONE_CURRENT_NETWORK_HSDPA_AVAILABILITY1;
       
  3548 			entry.iEgprsAvailableIndicator=DMMTSY_PHONE_CURRENT_NETWORK_EGPRS_AVAILABILITY1;
       
  3549 			break;
       
  3550 		case 1:
       
  3551 			entry.iMode=DMMTSY_PHONE_CURRENT_NETWORK_MODE2;
       
  3552 			entry.iStatus=DMMTSY_PHONE_CURRENT_NETWORK_STATUS2;
       
  3553 			entry.iBandInfo=DMMTSY_PHONE_CURRENT_NETWORK_BAND2;
       
  3554 			entry.iCountryCode=DMMTSY_PHONE_CURRENT_NETWORK_MCC2;
       
  3555 			entry.iNetworkId=DMMTSY_PHONE_CURRENT_NETWORK_ID2;
       
  3556 			entry.iDisplayTag=DMMTSY_PHONE_CURRENT_NETWORK_TAG2;
       
  3557 			entry.iShortName=DMMTSY_PHONE_CURRENT_NETWORK_SHORT_NAME2;
       
  3558 			entry.iLongName=DMMTSY_PHONE_CURRENT_NETWORK_LONG_NAME2;
       
  3559 			entry.iAccess=DMMTSY_PHONE_CURRENT_NETWORK_ACCESS_TECH2;
       
  3560 			entry.iHsdpaAvailableIndicator=DMMTSY_PHONE_CURRENT_NETWORK_HSDPA_AVAILABILITY2;
       
  3561 			entry.iEgprsAvailableIndicator=DMMTSY_PHONE_CURRENT_NETWORK_EGPRS_AVAILABILITY2;
       
  3562 			break;
       
  3563 		case 2:
       
  3564 			entry.iMode=DMMTSY_PHONE_HOME_NETWORK_MODE;
       
  3565 			entry.iStatus=DMMTSY_PHONE_HOME_NETWORK_STATUS;
       
  3566 			entry.iBandInfo=DMMTSY_PHONE_HOME_NETWORK_BAND;
       
  3567 			entry.iCountryCode=DMMTSY_PHONE_HOME_NETWORK_MCC;
       
  3568 			entry.iNetworkId=DMMTSY_PHONE_HOME_NETWORK_ID;
       
  3569 			entry.iDisplayTag=DMMTSY_PHONE_HOME_NETWORK_TAG;
       
  3570 			entry.iShortName=DMMTSY_PHONE_HOME_NETWORK_SHORT_NAME;
       
  3571 			entry.iLongName=DMMTSY_PHONE_HOME_NETWORK_LONG_NAME;
       
  3572 			entry.iAccess=DMMTSY_PHONE_HOME_NETWORK_ACCESS_TECH;
       
  3573 			entry.iHsdpaAvailableIndicator=DMMTSY_PHONE_HOME_NETWORK_HSDPA_AVAILABILITY;
       
  3574 			entry.iEgprsAvailableIndicator=DMMTSY_PHONE_HOME_NETWORK_EGPRS_AVAILABILITY;
       
  3575 			break;
       
  3576 		case 3:
       
  3577 		default:
       
  3578 			entry.iMode=DMMTSY_PHONE_HOME_NETWORK_MODE;
       
  3579 			entry.iStatus=DMMTSY_PHONE_HOME_NETWORK_STATUS;
       
  3580 			entry.iBandInfo=DMMTSY_PHONE_HOME_NETWORK_BAND;
       
  3581 			entry.iCountryCode=DMMTSY_PHONE_HOME_NETWORK_MCC;
       
  3582 			entry.iNetworkId=DMMTSY_PHONE_HOME_NETWORK_ID;
       
  3583 			entry.iDisplayTag=DMMTSY_PHONE_HOME_NETWORK_TAG;
       
  3584 			entry.iShortName=DMMTSY_PHONE_HOME_NETWORK_SHORT_NAME;
       
  3585 			entry.iLongName=DMMTSY_PHONE_HOME_NETWORK_LONG_NAME;
       
  3586 			entry.iAccess=DMMTSY_PHONE_HOME_NETWORK_ACCESS_TECH3;
       
  3587 			entry.iHsdpaAvailableIndicator=DMMTSY_PHONE_HOME_NETWORK_HSDPA_AVAILABILITY;
       
  3588 			entry.iEgprsAvailableIndicator=DMMTSY_PHONE_HOME_NETWORK_EGPRS_AVAILABILITY;
       
  3589 			break;
       
  3590 			}
       
  3591 			// Add the entry into the list, at the next empty location
       
  3592 			list->AddEntryL(entry);
       
  3593 		}
       
  3594 
       
  3595 	// Store the streamed list and the client ID
       
  3596 	CListReadAllAttempt* read=CListReadAllAttempt::NewL(aClient,aTsyReqHandle);
       
  3597 	CleanupStack::PushL(read);
       
  3598 	
       
  3599 	read->iListBuf = list->StoreLC();
       
  3600 	CleanupStack::Pop(); // pop the CBufBase allocated by StoreLC
       
  3601 	
       
  3602 	iGetDetectedNetworks->AppendL(read);
       
  3603 	CleanupStack::Pop(); // pop the CListReadAllAttempt
       
  3604 	
       
  3605 	// return the CBufBase’s size to client
       
  3606 	*aBufSize=(read->iListBuf)->Size();
       
  3607 	
       
  3608 	// Complete first phase of list retrieval
       
  3609 	AddDelayedReq(aTsyReqHandle,this);
       
  3610 	CleanupStack::PopAndDestroy(); // pop&destroy list
       
  3611 	return KErrNone;
       
  3612 	}
       
  3613 
       
  3614 TInt CPhoneDMmTsy::GetDetectedNetworksV5Phase2(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aClient, TDes8* aBuf)
       
  3615 	{
       
  3616 	LOGTEXT(_L8("CPhoneDMmTsy::GetDetectedNetworksV5Phase2 called"));
       
  3617 	CListReadAllAttempt* read=NULL;
       
  3618 	// Find the get detected network attempt from this client
       
  3619 	for (TInt i=0; i<iGetDetectedNetworks->Count(); ++i)
       
  3620 		{
       
  3621 		read = iGetDetectedNetworks->At(i);
       
  3622 		if ((read->iClient.iSessionHandle==aClient->iSessionHandle) &&
       
  3623 		    (read->iClient.iSubSessionHandle==aClient->iSubSessionHandle))
       
  3624 			{
       
  3625 			TPtr8 bufPtr((read->iListBuf)->Ptr(0));
       
  3626 			// Copy the streamed list to the client
       
  3627 			aBuf->Copy(bufPtr);
       
  3628 			delete read;
       
  3629 			iGetDetectedNetworks->Delete(i);
       
  3630 			ReqCompleted(aTsyReqHandle,KErrNone);
       
  3631 			return KErrNone;
       
  3632 			}
       
  3633 		}
       
  3634 	// Should handle error case of not finding the matching client from read all phase 1
       
  3635 	return KErrNotFound;
       
  3636 	}
       
  3637 
       
  3638 TInt CPhoneDMmTsy::GetDetectedNetworksV5Cancel(const TTsyReqHandle aTsyReqHandle)
       
  3639 	{
       
  3640 	LOGTEXT(_L8("CPhoneDMmTsy::GetDetectedNetworksV5Cancel called"));
       
  3641 	RemoveDelayedReq(aTsyReqHandle);
       
  3642 	// Remove the read all attempt from iGetDetectedNetworks
       
  3643 	CListReadAllAttempt* read=NULL;
       
  3644 	for (TInt i=0; i<iGetDetectedNetworks->Count(); ++i)
       
  3645 		{
       
  3646 		read = iGetDetectedNetworks->At(i);
       
  3647 		if (read->iReqHandle == aTsyReqHandle)
       
  3648 			{
       
  3649 			delete read;
       
  3650 			iGetDetectedNetworks->Delete(i);
       
  3651 			break;
       
  3652 			}
       
  3653 		}
       
  3654 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3655 	return KErrNone;
       
  3656 	}
       
  3657 
       
  3658 //
       
  3659 
       
  3660 TInt CPhoneDMmTsy::GetNetworkSelectionSetting(const TTsyReqHandle aTsyReqHandle, TDes8* aSetting)
       
  3661 	{
       
  3662 	LOGTEXT(_L8("CPhoneDMmTsy::GetNetworkSelectionSetting called"));
       
  3663 	RMobilePhone::TMobilePhoneNetworkSelectionV1Pckg* selectionPckg = (RMobilePhone::TMobilePhoneNetworkSelectionV1Pckg*)aSetting;
       
  3664 	RMobilePhone::TMobilePhoneNetworkSelectionV1& selection = (*selectionPckg)();
       
  3665 
       
  3666 	selection.iMethod = DMMTSY_PHONE_NETWORK_SELECTION_METHOD1;
       
  3667 	selection.iBandClass = DMMTSY_PHONE_NETWORK_SELECTION_BAND1;
       
  3668 	selection.iOperationMode = DMMTSY_PHONE_NETWORK_SELECTION_OPERATION1;
       
  3669 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  3670 	return KErrNone;
       
  3671 	}
       
  3672 
       
  3673 TInt CPhoneDMmTsy::SetNetworkSelectionSetting(const TTsyReqHandle aTsyReqHandle, TDes8* aSetting)
       
  3674 	{
       
  3675 	LOGTEXT(_L8("CPhoneDMmTsy::SetNetworkSelectionSetting called"));
       
  3676 	RMobilePhone::TMobilePhoneNetworkSelectionV1Pckg* selectionPckg = (RMobilePhone::TMobilePhoneNetworkSelectionV1Pckg*)aSetting;
       
  3677 	RMobilePhone::TMobilePhoneNetworkSelectionV1& selection = (*selectionPckg)();
       
  3678 
       
  3679 	if ((selection.iMethod != DMMTSY_PHONE_NETWORK_SELECTION_METHOD2) ||
       
  3680 	    (selection.iBandClass != DMMTSY_PHONE_NETWORK_SELECTION_BAND2) ||
       
  3681 	    (selection.iOperationMode != DMMTSY_PHONE_NETWORK_SELECTION_OPERATION2))
       
  3682 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  3683 	else
       
  3684 		AddDelayedReq(aTsyReqHandle,this);
       
  3685 	return KErrNone;
       
  3686 	}
       
  3687 
       
  3688 TInt CPhoneDMmTsy::SetNetworkSelectionSettingCancel(const TTsyReqHandle aTsyReqHandle)
       
  3689 	{
       
  3690 	LOGTEXT(_L8("CPhoneDMmTsy::SetNetworkSelectionSettingCancel called"));
       
  3691 	RemoveDelayedReq(aTsyReqHandle);
       
  3692 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3693 	return KErrNone;
       
  3694 	}
       
  3695 
       
  3696 TInt CPhoneDMmTsy::NotifyNetworkSelectionSettingChange(const TTsyReqHandle aTsyReqHandle, TDes8* aSetting)
       
  3697 	{
       
  3698 	if(!iNotifyNetworkSelectionSettingChange++)
       
  3699 		{
       
  3700 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyNetworkSelectionSettingChange called"));
       
  3701 
       
  3702 		RMobilePhone::TMobilePhoneNetworkSelectionV1Pckg* selectionPckg = (RMobilePhone::TMobilePhoneNetworkSelectionV1Pckg*)aSetting;
       
  3703 		RMobilePhone::TMobilePhoneNetworkSelectionV1& selection = (*selectionPckg)();
       
  3704 		
       
  3705 		selection.iMethod = DMMTSY_PHONE_NETWORK_SELECTION_METHOD1;
       
  3706 		selection.iBandClass = DMMTSY_PHONE_NETWORK_SELECTION_BAND1;
       
  3707 		selection.iOperationMode = DMMTSY_PHONE_NETWORK_SELECTION_OPERATION1;
       
  3708 		AddDelayedReq(aTsyReqHandle,this);
       
  3709 		}
       
  3710 	return KErrNone;
       
  3711 	}
       
  3712 
       
  3713 TInt CPhoneDMmTsy::NotifyNetworkSelectionSettingChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  3714 	{
       
  3715 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyNetworkSelectionSettingChangeCancel called"));
       
  3716 	RemoveDelayedReq(aTsyReqHandle);
       
  3717 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3718 	return KErrNone;
       
  3719 	}
       
  3720 
       
  3721 TInt CPhoneDMmTsy::SelectNetwork(const TTsyReqHandle aTsyReqHandle, 
       
  3722 								 TBool* aIsManual, 
       
  3723 								 RMobilePhone::TMobilePhoneNetworkManualSelection* aManualSelection)
       
  3724 	{
       
  3725 	LOGTEXT(_L8("CPhoneDMmTsy::SelectNetwork called"));
       
  3726 	
       
  3727 	if (*aIsManual==DMMTSY_PHONE_MANUAL_SELECTION)
       
  3728 		{
       
  3729 		if ((aManualSelection->iCountry != DMMTSY_PHONE_COUNTRY_ID) ||
       
  3730 		    (aManualSelection->iNetwork != DMMTSY_PHONE_NETWORK_ID))
       
  3731 
       
  3732 			ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  3733 		else
       
  3734 			AddDelayedReq(aTsyReqHandle,this);
       
  3735 		}
       
  3736 	else
       
  3737 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  3738 	
       
  3739 	return KErrNone;
       
  3740 	}
       
  3741 
       
  3742 TInt CPhoneDMmTsy::SelectNetworkCancel(const TTsyReqHandle aTsyReqHandle)
       
  3743 	{
       
  3744 	LOGTEXT(_L8("CPhoneDMmTsy::SelectNetworkCancel called"));
       
  3745 	RemoveDelayedReq(aTsyReqHandle);
       
  3746 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3747 	return KErrNone;
       
  3748 	}
       
  3749 
       
  3750 TInt CPhoneDMmTsy::GetNetworkTimeInfo(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneNITZ* aDateTime)
       
  3751 	{
       
  3752 	LOGTEXT(_L8("CPhoneDMmTsy::GetNetworkTimeInfo called"));
       
  3753 
       
  3754 	aDateTime->iNitzFieldsUsed = DMMTSY_PHONE_NWTINFO_NITZ_USED;
       
  3755 	aDateTime->Set(DMMTSY_PHONE_NWTINFO_YEAR,DMMTSY_PHONE_NWTINFO_MONTH,DMMTSY_PHONE_NWTINFO_DAY,
       
  3756 		DMMTSY_PHONE_NWTINFO_HOUR, DMMTSY_PHONE_NWTINFO_MINUTE, DMMTSY_PHONE_NWTINFO_SECOND,
       
  3757 		DMMTSY_PHONE_NWTINFO_MICRO);
       
  3758 	aDateTime->iTimeZone = DMMTSY_PHONE_NWTINFO_TIMEZONE;
       
  3759 	aDateTime->iLongNetworkId = DMMTSY_PHONE_NWTINFO_LONG_ID;
       
  3760 	aDateTime->iShortNetworkId = DMMTSY_PHONE_NWTINFO_SHORT_ID;
       
  3761 	aDateTime->iDST = DMMTSY_PHONE_NWTINFO_DST;
       
  3762 
       
  3763 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  3764 	return KErrNone;
       
  3765 	}
       
  3766 
       
  3767 TInt CPhoneDMmTsy::NotifyNetworkTimeInfoChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneNITZ* aDateTime)
       
  3768 	{
       
  3769 	if(!iNotifyNetworkTimeInfoChange++)
       
  3770 		{
       
  3771 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyNetworkTimeInfoChange called"));
       
  3772 
       
  3773 		aDateTime->iNitzFieldsUsed = DMMTSY_PHONE_NWTINFO_NITZ_USED;
       
  3774 		aDateTime->Set(DMMTSY_PHONE_NWTINFO_YEAR,DMMTSY_PHONE_NWTINFO_MONTH,DMMTSY_PHONE_NWTINFO_DAY,
       
  3775 			DMMTSY_PHONE_NWTINFO_HOUR, DMMTSY_PHONE_NWTINFO_MINUTE, DMMTSY_PHONE_NWTINFO_SECOND,
       
  3776 			DMMTSY_PHONE_NWTINFO_MICRO);
       
  3777 		aDateTime->iTimeZone = DMMTSY_PHONE_NWTINFO_TIMEZONE;
       
  3778 		aDateTime->iLongNetworkId = DMMTSY_PHONE_NWTINFO_LONG_ID;
       
  3779 		aDateTime->iShortNetworkId = DMMTSY_PHONE_NWTINFO_SHORT_ID;
       
  3780 		aDateTime->iDST = DMMTSY_PHONE_NWTINFO_DST;
       
  3781 
       
  3782 		AddDelayedReq(aTsyReqHandle,this);
       
  3783 		}
       
  3784 	return KErrNone;
       
  3785 	}
       
  3786 
       
  3787 TInt CPhoneDMmTsy::NotifyNetworkTimeInfoChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  3788 	{
       
  3789 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyNetworkTimeInfoChangeCancel called"));
       
  3790 	RemoveDelayedReq(aTsyReqHandle);
       
  3791 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3792 	return KErrNone;
       
  3793 	}
       
  3794 
       
  3795 
       
  3796 TInt CPhoneDMmTsy::GetServiceProviderName(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneServiceProviderNameV2* aName)
       
  3797 	{
       
  3798 	LOGTEXT(_L8("CPhoneDMmTsy::GetServiceProviderName called"));
       
  3799 
       
  3800 	aName->iDisplayReq = DMMTSY_PHONE_DISPREQ;
       
  3801 	aName->iSPName = DMMTSY_PHONE_SPN_NAME;
       
  3802 	aName->iPLMNField = DMMTSY_PHONE_PLMN_FIELD;
       
  3803 
       
  3804 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  3805 	return KErrNone;
       
  3806 	}
       
  3807 
       
  3808 TInt CPhoneDMmTsy::GetServiceProviderNameCancel(const TTsyReqHandle aTsyReqHandle)
       
  3809 	{
       
  3810 	LOGTEXT(_L8("CPhoneDMmTsy::GetServiceProviderNameCancel called"));
       
  3811 	RemoveDelayedReq(aTsyReqHandle);
       
  3812 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3813 	return KErrNone;
       
  3814 	}
       
  3815 
       
  3816 TInt CPhoneDMmTsy::GetDefaultPrivacy(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhonePrivacy* aSetting)
       
  3817 	{
       
  3818 	LOGTEXT(_L8("CPhoneDMmTsy::GetDefaultPrivacy called"));
       
  3819 
       
  3820 	*aSetting = DMMTSY_PHONE_PRIVACY_SETTING1;
       
  3821 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  3822 	return KErrNone;
       
  3823 	}
       
  3824 
       
  3825 TInt CPhoneDMmTsy::SetDefaultPrivacy(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhonePrivacy* aSetting)
       
  3826 	{
       
  3827 	LOGTEXT(_L8("CPhoneDMmTsy::SetDefaultPrivacy called"));
       
  3828 
       
  3829 	if (*aSetting != DMMTSY_PHONE_PRIVACY_SETTING1)
       
  3830 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  3831 	else
       
  3832 		AddDelayedReq(aTsyReqHandle,this);
       
  3833 	return KErrNone;
       
  3834 	}
       
  3835 
       
  3836 TInt CPhoneDMmTsy::SetDefaultPrivacyCancel(const TTsyReqHandle aTsyReqHandle)
       
  3837 	{
       
  3838 	LOGTEXT(_L8("CPhoneDMmTsy::SetDefaultPrivacyCancel called"));
       
  3839 	RemoveDelayedReq(aTsyReqHandle);
       
  3840 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3841 	return KErrNone;
       
  3842 	}
       
  3843 
       
  3844 TInt CPhoneDMmTsy::NotifyDefaultPrivacyChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhonePrivacy* aSetting)
       
  3845 	{
       
  3846 	if(!iNotifyDefaultPrivacyChange++)
       
  3847 		{
       
  3848 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyDefaultPrivacyChange called"));
       
  3849 
       
  3850 		*aSetting = DMMTSY_PHONE_PRIVACY_SETTING2;
       
  3851 		AddDelayedReq(aTsyReqHandle,this);
       
  3852 		}
       
  3853 	return KErrNone;
       
  3854 	}
       
  3855 
       
  3856 TInt CPhoneDMmTsy::NotifyDefaultPrivacyChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  3857 	{
       
  3858 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyDefaultPrivacyChangeCancel called"));
       
  3859 	RemoveDelayedReq(aTsyReqHandle);
       
  3860 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3861 	return KErrNone;
       
  3862 	}
       
  3863 
       
  3864 TInt CPhoneDMmTsy::GetCallServiceCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps)
       
  3865 	{
       
  3866 	LOGTEXT(_L8("CPhoneDMmTsy::GetCallServiceCaps called"));
       
  3867 	*aCaps=DMMTSY_PHONE_CALL_SERVICE_CAPS1;
       
  3868 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  3869 	return KErrNone;
       
  3870 	}
       
  3871 
       
  3872 TInt CPhoneDMmTsy::NotifyCallServiceCapsChange(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps)
       
  3873 	{
       
  3874 	if (!iNotifyCallServiceCaps++)
       
  3875 		{
       
  3876 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyCallServiceCapsChange called"));
       
  3877 		*aCaps=DMMTSY_PHONE_CALL_SERVICE_CAPS2;
       
  3878 		AddDelayedReq(aTsyReqHandle,this);
       
  3879 		}
       
  3880 	return KErrNone;
       
  3881 	}
       
  3882 
       
  3883 TInt CPhoneDMmTsy::NotifyCallServiceCapsChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  3884 	{
       
  3885 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyCallServiceCapsChangeCancel called"));
       
  3886 	RemoveDelayedReq(aTsyReqHandle);
       
  3887 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3888 	return KErrNone;
       
  3889 	}
       
  3890 
       
  3891 TInt CPhoneDMmTsy::ProgramFeatureCodeString(const TTsyReqHandle aTsyReqHandle, 
       
  3892 											TDesC* aFCString, RMobilePhone::TNetworkServiceAndAction *aFeatureCode)
       
  3893 	{
       
  3894 	LOGTEXT(_L8("CPhoneDMmTsy::ProgramFeatureCodeString called"));
       
  3895 	if ((aFCString->Compare(DMMTSY_PHONE_FEATURE_CODE) != 0) ||
       
  3896 	    (aFeatureCode->iService != DMMTSY_PHONE_NETWORK_SERVICE) || 
       
  3897 		(aFeatureCode->iAction != DMMTSY_PHONE_NETWORK_SERVICE_ACTION))
       
  3898 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  3899 	else
       
  3900 		AddDelayedReq(aTsyReqHandle,this);
       
  3901 
       
  3902 	return KErrNone;
       
  3903 	}
       
  3904 
       
  3905 TInt CPhoneDMmTsy::ProgramFeatureCodeStringCancel(const TTsyReqHandle aTsyReqHandle)
       
  3906 	{
       
  3907 	LOGTEXT(_L8("CPhoneDMmTsy::ProgramFeatureCodeStringCancel called"));
       
  3908 	RemoveDelayedReq(aTsyReqHandle);
       
  3909 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3910 	return KErrNone;
       
  3911 	}
       
  3912 
       
  3913 TInt CPhoneDMmTsy::GetFeatureCodeString(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TNetworkServiceAndAction *aFeatureCode, TDes *aFCString)
       
  3914 	{
       
  3915 	LOGTEXT(_L8("CPhoneDMmTsy::GetFeatureCodeString called"));
       
  3916 	if	(aFeatureCode->iService!=DMMTSY_PHONE_NETWORK_SERVICE2 || aFeatureCode->iAction!=DMMTSY_PHONE_NETWORK_SERVICE_ACTION2)
       
  3917 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  3918 	else
       
  3919 		{
       
  3920 		*aFCString=DMMTSY_PHONE_FEATURE_CODE2;
       
  3921 		AddDelayedReq(aTsyReqHandle,this);
       
  3922 		}
       
  3923 	return KErrNone;
       
  3924 	}
       
  3925 
       
  3926 TInt CPhoneDMmTsy::GetFeatureCodeStringCancel(const TTsyReqHandle aTsyReqHandle)
       
  3927 	{
       
  3928 	LOGTEXT(_L8("CPhoneDMmTsy::GetFeatureCodeStringCancel called"));
       
  3929 	RemoveDelayedReq(aTsyReqHandle);
       
  3930 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3931 	return KErrNone;
       
  3932 	}
       
  3933 
       
  3934 TInt CPhoneDMmTsy::SendNetworkServiceRequest(const TTsyReqHandle aTsyReqHandle, TDesC* aString)
       
  3935 	{
       
  3936 	LOGTEXT(_L8("CPhoneDMmTsy::SendNetworkServiceRequest called"));
       
  3937 	if (aString->Compare(DMMTSY_PHONE_NETWORK_SERVICE_REQUEST)!=0)
       
  3938 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  3939 	else
       
  3940 		AddDelayedReq(aTsyReqHandle,this);
       
  3941 	return KErrNone;
       
  3942 	}
       
  3943 
       
  3944 TInt CPhoneDMmTsy::SendNetworkServiceRequestCancel(const TTsyReqHandle aTsyReqHandle)
       
  3945 	{
       
  3946 	LOGTEXT(_L8("CPhoneDMmTsy::SendNetworkServiceRequestCancel called"));
       
  3947 	RemoveDelayedReq(aTsyReqHandle);
       
  3948 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  3949 	return KErrNone;
       
  3950 	}
       
  3951 
       
  3952 TInt CPhoneDMmTsy::GetCallForwardingStatusPhase1(const TTsyReqHandle aTsyReqHandle, 
       
  3953 												 CRetrieveMobilePhoneCFList::TGetCallForwardingRequest* aReqData, 
       
  3954 												 TInt* aBufSize)
       
  3955 	{
       
  3956 	LOGTEXT(_L8("CPhoneDMmTsy::GetCallForwardingStatusPhase1 called"));
       
  3957 	TInt ret=KErrNone;
       
  3958 
       
  3959 	if ( ( (aReqData->iCondition==DMMTSY_PHONE_CF_CONDITION_CFU) &&
       
  3960 		   (aReqData->iLocation==DMMTSY_PHONE_CF_LOCATION) &&
       
  3961 		   (aReqData->iServiceGroup==DMMTSY_PHONE_CF_SERVICE_GROUP_ALL) ) ||
       
  3962 		 ( (aReqData->iCondition==DMMTSY_PHONE_CF_CONDITION_CFU) &&
       
  3963 		   (aReqData->iServiceGroup==DMMTSY_PHONE_CF_SERVICE_GROUP_FAX) &&
       
  3964     	   (aReqData->iLocation==DMMTSY_PHONE_CF_CACHELOCATION) ) )		
       
  3965 		{
       
  3966 		TInt leaveCode=KErrNone;
       
  3967 		TRAP(leaveCode, ret=ProcessGetCallForwardingStatusPhase1L(aTsyReqHandle, aReqData, aBufSize););
       
  3968 		if (leaveCode != KErrNone)
       
  3969 			ReqCompleted(aTsyReqHandle,leaveCode);
       
  3970 		}
       
  3971 		else
       
  3972 			ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  3973 	return ret;
       
  3974 	}
       
  3975 
       
  3976 TInt CPhoneDMmTsy::ProcessGetCallForwardingStatusPhase1L(const TTsyReqHandle aTsyReqHandle, 
       
  3977 														 CRetrieveMobilePhoneCFList::TGetCallForwardingRequest* aReqData, 
       
  3978 														 TInt* aBufSize)
       
  3979 	{
       
  3980 	// retrieve call forwarding status of each line from phone, 
       
  3981 	// store each CF status response as a list entry,
       
  3982 	// stream the list and then return size of this buffer to client
       
  3983 
       
  3984 	CMobilePhoneCFList* list=CMobilePhoneCFList::NewL();
       
  3985 	CleanupStack::PushL(list);
       
  3986 
       
  3987 	RMobilePhone::TMobilePhoneCFInfoEntryV1 entry;
       
  3988 	RMobilePhone::TMobileService servicegroup = aReqData->iServiceGroup;
       
  3989 
       
  3990 	// fill up an example list
       
  3991 	for (TInt index=0; index < DMMTSY_CF_ENTRY_COUNT; index++)
       
  3992 		{
       
  3993 		switch (index)
       
  3994 			{
       
  3995 		case 0:
       
  3996 			entry.iCondition=DMMTSY_PHONE_CF_CONDITION_CFU;
       
  3997 			entry.iServiceGroup=DMMTSY_PHONE_CF_SERVICE_GROUP_VOICE;
       
  3998 			entry.iStatus=DMMTSY_PHONE_CF_NOT_ACTIVE;
       
  3999 			entry.iNumber.iTelNumber=DMMTSY_PHONE_TEL_NUMBER;
       
  4000 			entry.iTimeout=DMMTSY_PHONE_CF_TIMEOUT;
       
  4001 			break;
       
  4002 		case 1:
       
  4003 			entry.iCondition=DMMTSY_PHONE_CF_CONDITION_CFU;
       
  4004 			entry.iServiceGroup=DMMTSY_PHONE_CF_SERVICE_GROUP_DATA;
       
  4005 			entry.iStatus=DMMTSY_PHONE_CF_ACTIVE;
       
  4006 			entry.iNumber.iTelNumber=DMMTSY_PHONE_TEL_NUMBER;
       
  4007 			entry.iTimeout=DMMTSY_PHONE_CF_TIMEOUT;
       
  4008 			break;
       
  4009 		case 2:
       
  4010 			entry.iCondition=DMMTSY_PHONE_CF_CONDITION_CFU;
       
  4011 			entry.iServiceGroup=DMMTSY_PHONE_CF_SERVICE_GROUP_FAX;
       
  4012 			entry.iStatus=DMMTSY_PHONE_CF_ACTIVE;
       
  4013 			entry.iNumber.iTelNumber=DMMTSY_PHONE_TEL_NUMBER;
       
  4014 			entry.iTimeout=DMMTSY_PHONE_CF_TIMEOUT;
       
  4015 			break;
       
  4016 		case 3:
       
  4017 		default:
       
  4018 			entry.iCondition=DMMTSY_PHONE_CF_CONDITION_CFU;
       
  4019 			entry.iServiceGroup=DMMTSY_PHONE_CF_SERVICE_GROUP_AUXVOICE;
       
  4020 			entry.iStatus=DMMTSY_PHONE_CF_UNKNOWN;
       
  4021 			entry.iTimeout=-1;
       
  4022 			break;
       
  4023 			}
       
  4024 			// Add the entry into the list, at the next empty location
       
  4025 		if( (servicegroup == DMMTSY_PHONE_CF_SERVICE_GROUP_ALL) || (servicegroup == entry.iServiceGroup) )
       
  4026 		list->AddEntryL(entry);
       
  4027 		}
       
  4028 
       
  4029 	// Store the streamed list and the client ID
       
  4030 	CListReadAllAttempt* read=CListReadAllAttempt::NewL(&(aReqData->iClient),aTsyReqHandle);
       
  4031 	CleanupStack::PushL(read);
       
  4032 	
       
  4033 	read->iListBuf = list->StoreLC();
       
  4034 	CleanupStack::Pop(); // pop the CBufBase allocated by StoreLC
       
  4035 
       
  4036 	iGetCFStatus->AppendL(read);
       
  4037 	CleanupStack::Pop(); // pop the CListReadAllAttempt
       
  4038 	
       
  4039 	// return the CBufBase’s size to client
       
  4040 	*aBufSize=(read->iListBuf)->Size();
       
  4041 	
       
  4042 	// Complete first phase of list retrieval
       
  4043 	AddDelayedReq(aTsyReqHandle,this);
       
  4044 	CleanupStack::PopAndDestroy(); // pop&destroy list
       
  4045 	return KErrNone;
       
  4046 	}
       
  4047 
       
  4048 
       
  4049 TInt CPhoneDMmTsy::GetCallForwardingStatusPhase2(const TTsyReqHandle aTsyReqHandle, 
       
  4050 												 RMobilePhone::TClientId* aClient, TDes8* aBuf)
       
  4051 	{
       
  4052 	LOGTEXT(_L8("CPhoneDMmTsy::GetCallForwardingStatusPhase2 called"));
       
  4053 	CListReadAllAttempt* read=NULL;
       
  4054 	// Find the get detected network attempt from this client
       
  4055 	for (TInt i=0; i<iGetCFStatus->Count(); ++i)
       
  4056 		{
       
  4057 		read = iGetCFStatus->At(i);
       
  4058 		if ((read->iClient.iSessionHandle==aClient->iSessionHandle) &&
       
  4059 		    (read->iClient.iSubSessionHandle==aClient->iSubSessionHandle))
       
  4060 			{
       
  4061 			TPtr8 bufPtr((read->iListBuf)->Ptr(0));
       
  4062 			// Copy the streamed list to the client
       
  4063 			aBuf->Copy(bufPtr);
       
  4064 			delete read;
       
  4065 			iGetCFStatus->Delete(i);
       
  4066 			ReqCompleted(aTsyReqHandle,KErrNone);
       
  4067 			return KErrNone;
       
  4068 			}
       
  4069 		}
       
  4070 	// Should handle error case of not finding the matching client from read all phase 1
       
  4071 	return KErrNotFound;
       
  4072 	}
       
  4073 
       
  4074 TInt CPhoneDMmTsy::GetCallForwardingStatusCancel(const TTsyReqHandle aTsyReqHandle)
       
  4075 	{
       
  4076 	LOGTEXT(_L8("CPhoneDMmTsy::GetCallForwardingStatusCancel called"));
       
  4077 	RemoveDelayedReq(aTsyReqHandle);
       
  4078 	// Remove the read all attempt from iGetCFStatus
       
  4079 	CListReadAllAttempt* read=NULL;
       
  4080 	for (TInt i=0; i<iGetCFStatus->Count(); ++i)
       
  4081 		{
       
  4082 		read = iGetCFStatus->At(i);
       
  4083 		if (read->iReqHandle == aTsyReqHandle)
       
  4084 			{
       
  4085 			delete read;
       
  4086 			iGetCFStatus->Delete(i);
       
  4087 			break;
       
  4088 			}
       
  4089 		}
       
  4090 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4091 	return KErrNone;
       
  4092 	}
       
  4093 
       
  4094 TInt CPhoneDMmTsy::NotifyCallForwardingStatusChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneCFCondition* aCondition)
       
  4095 	{
       
  4096 	if(!iNotifyCallForwardingStatusChange++)
       
  4097 		{
       
  4098 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyCallForwardingStatusChange called"));
       
  4099 		*aCondition=DMMTSY_PHONE_CF_CONDITION_ALL;
       
  4100 		AddDelayedReq(aTsyReqHandle,this);
       
  4101 		}
       
  4102 	return KErrNone;
       
  4103 	}
       
  4104 
       
  4105 TInt CPhoneDMmTsy::NotifyCallForwardingStatusChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  4106 	{
       
  4107 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyCallForwardingStatusChangeCancel called"));
       
  4108 	RemoveDelayedReq(aTsyReqHandle);
       
  4109 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4110 	return KErrNone;
       
  4111 	}
       
  4112 
       
  4113 TInt CPhoneDMmTsy::SetCallForwardingStatus(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneCFCondition* aCondition, RMobilePhone::TMobilePhoneCFChangeV1* aInfo)
       
  4114 	{
       
  4115 	LOGTEXT(_L8("CPhoneDMmTsy::SetCallForwardingStatus called"));
       
  4116 	if ((*aCondition!=DMMTSY_PHONE_CF_CONDITION_CFNRy) ||
       
  4117 		(aInfo->iServiceGroup!=DMMTSY_PHONE_CF_SERVICE_GROUP_VOICE) ||
       
  4118 		(aInfo->iAction!=DMMTSY_PHONE_CF_SETTING) ||
       
  4119 		(aInfo->iNumber.iTelNumber!=DMMTSY_PHONE_TEL_NUMBER) ||
       
  4120 		(aInfo->iTimeout!=DMMTSY_PHONE_CF_TIMEOUT))
       
  4121 
       
  4122 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  4123 	else
       
  4124 		AddDelayedReq(aTsyReqHandle,this);
       
  4125 
       
  4126 	return KErrNone;
       
  4127 	}
       
  4128 
       
  4129 TInt CPhoneDMmTsy::SetCallForwardingStatusCancel(const TTsyReqHandle aTsyReqHandle)
       
  4130 	{
       
  4131 	LOGTEXT(_L8("CPhoneDMmTsy::SetCallForwardingStatusCancel called"));
       
  4132 	RemoveDelayedReq(aTsyReqHandle);
       
  4133 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4134 	return KErrNone;
       
  4135 	}
       
  4136 
       
  4137 TInt CPhoneDMmTsy::NotifyCallForwardingActive(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobileService* aServiceGroup, RMobilePhone::TMobilePhoneCFActive* aActive)
       
  4138 	{
       
  4139 	if(!iNotifyCallForwardingActive++)
       
  4140 		{
       
  4141 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyCallForwardingActive called"));
       
  4142 		*aActive=DMMTSY_PHONE_CF_ACTIVE_TYPE;
       
  4143 		*aServiceGroup=DMMTSY_PHONE_CF_SERVICE_GROUP_FAX;
       
  4144 		AddDelayedReq(aTsyReqHandle,this);
       
  4145 		}
       
  4146 	return KErrNone;
       
  4147 	}
       
  4148 
       
  4149 TInt CPhoneDMmTsy::NotifyCallForwardingActiveCancel(const TTsyReqHandle aTsyReqHandle)
       
  4150 	{
       
  4151 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyCallForwardingActiveCancel called"));
       
  4152 	RemoveDelayedReq(aTsyReqHandle);
       
  4153 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4154 	return KErrNone;
       
  4155 	}
       
  4156 
       
  4157 TInt CPhoneDMmTsy::GetIdentityServiceStatus(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TIdServiceAndLocation *aInfo,
       
  4158 											RMobilePhone::TMobilePhoneIdServiceStatus* aStatus)
       
  4159 	{
       
  4160 	LOGTEXT(_L8("CPhoneDMmTsy::GetIdentityServiceStatus called"));
       
  4161 	if (aInfo->iLocation != DMMTSY_PHONE_ID_LOCATION || aInfo->iService != DMMTSY_PHONE_ID_SERVICE)
       
  4162 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  4163 	else
       
  4164 		{
       
  4165 		*aStatus = DMMTSY_PHONE_ID_STATUS;
       
  4166 		AddDelayedReq(aTsyReqHandle,this);
       
  4167 		}
       
  4168 	return KErrNone;
       
  4169 	}
       
  4170 
       
  4171 TInt CPhoneDMmTsy::GetIdentityServiceStatusCancel(const TTsyReqHandle aTsyReqHandle)
       
  4172 	{
       
  4173 	LOGTEXT(_L8("CPhoneDMmTsy::GetIdentityServiceStatusCancel called"));
       
  4174 	RemoveDelayedReq(aTsyReqHandle);
       
  4175 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4176 	return KErrNone;
       
  4177 	}
       
  4178 
       
  4179 TInt CPhoneDMmTsy::GetCallBarringPhase1(const TTsyReqHandle aTsyReqHandle, 
       
  4180 												 CRetrieveMobilePhoneCBList::TGetCallBarringRequest* aReqData, 
       
  4181 												 TInt* aBufSize)
       
  4182 	{
       
  4183 	LOGTEXT(_L8("CPhoneDMmTsy::GetCallBarringPhase1 called"));
       
  4184 	TInt ret=KErrNone;
       
  4185 
       
  4186 	if ((aReqData->iCondition!=DMMTSY_PHONE_CB_CONDITION) ||
       
  4187 		(aReqData->iLocation!=DMMTSY_PHONE_CB_LOCATION))
       
  4188 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  4189 	else
       
  4190 		{
       
  4191 		TInt leaveCode=KErrNone;
       
  4192 		TRAP(leaveCode, ret=ProcessGetCallBarringPhase1L(aTsyReqHandle, aReqData, aBufSize));
       
  4193 		if (leaveCode != KErrNone)
       
  4194 			ReqCompleted(aTsyReqHandle,leaveCode);
       
  4195 		}
       
  4196 	return ret;
       
  4197 	}
       
  4198 
       
  4199 TInt CPhoneDMmTsy::ProcessGetCallBarringPhase1L(const TTsyReqHandle aTsyReqHandle, 
       
  4200 														 CRetrieveMobilePhoneCBList::TGetCallBarringRequest* aReqData,
       
  4201 														 TInt* aBufSize)
       
  4202 	{
       
  4203 	// retrieve call forwarding status of each line from phone, 
       
  4204 	// store each CB status response as a list entry,
       
  4205 	// stream the list and then return size of this buffer to client
       
  4206 
       
  4207 	CMobilePhoneCBList* list=CMobilePhoneCBList::NewL();
       
  4208 	CleanupStack::PushL(list);
       
  4209 
       
  4210 	RMobilePhone::TMobilePhoneCBInfoEntryV1 entry;
       
  4211 
       
  4212 	// fill up an example list
       
  4213 	for (TInt index=0; index < DMMTSY_CALL_BARRING_COUNT; index++)
       
  4214 		{
       
  4215 		switch (index)
       
  4216 			{
       
  4217 		case 0:
       
  4218 			entry.iCondition = DMMTSY_PHONE_CB_CONDITION0;
       
  4219 			entry.iServiceGroup = DMMTSY_PHONE_CB_SG0;
       
  4220 			entry.iStatus = DMMTSY_PHONE_CB_STATUS0;
       
  4221 			break;
       
  4222 		case 1:
       
  4223 			entry.iCondition = DMMTSY_PHONE_CB_CONDITION1;
       
  4224 			entry.iServiceGroup = DMMTSY_PHONE_CB_SG1;
       
  4225 			entry.iStatus = DMMTSY_PHONE_CB_STATUS1;
       
  4226 			break;
       
  4227 		case 2:
       
  4228 			entry.iCondition = DMMTSY_PHONE_CB_CONDITION2;
       
  4229 			entry.iServiceGroup = DMMTSY_PHONE_CB_SG2;
       
  4230 			entry.iStatus = DMMTSY_PHONE_CB_STATUS2;
       
  4231 			break;
       
  4232 		case 3:
       
  4233 		default:
       
  4234 			entry.iCondition = DMMTSY_PHONE_CB_CONDITION3;
       
  4235 			entry.iServiceGroup = DMMTSY_PHONE_CB_SG3;
       
  4236 			entry.iStatus = DMMTSY_PHONE_CB_STATUS3;
       
  4237 			break;
       
  4238 			}
       
  4239 			// Add the entry into the list, at the next empty location
       
  4240 			list->AddEntryL(entry);
       
  4241 		}
       
  4242 
       
  4243 	// Store the streamed list and the client ID
       
  4244 	CListReadAllAttempt* read=CListReadAllAttempt::NewL(&(aReqData->iClient),aTsyReqHandle);
       
  4245 	CleanupStack::PushL(read);
       
  4246 	
       
  4247 	read->iListBuf = list->StoreLC();
       
  4248 	CleanupStack::Pop(); // pop the CBufBase allocated by StoreLC
       
  4249 	
       
  4250 	iGetCB->AppendL(read);
       
  4251 	CleanupStack::Pop(); // pop the CListReadAllAttempt
       
  4252 	
       
  4253 	// return the CBufBase’s size to client
       
  4254 	*aBufSize=(read->iListBuf)->Size();
       
  4255 	
       
  4256 	// Complete first phase of list retrieval
       
  4257 	AddDelayedReq(aTsyReqHandle,this);
       
  4258 	CleanupStack::PopAndDestroy(); // pop&destroy list
       
  4259 	return KErrNone;
       
  4260 	}
       
  4261 
       
  4262 
       
  4263 TInt CPhoneDMmTsy::GetCallBarringPhase2(const TTsyReqHandle aTsyReqHandle, 
       
  4264 												 RMobilePhone::TClientId* aClient, TDes8* aBuf)
       
  4265 	{
       
  4266 	LOGTEXT(_L8("CPhoneDMmTsy::GetCallBarringPhase2 called"));
       
  4267 	CListReadAllAttempt* read=NULL;
       
  4268 	// Find the get call barring attempt from this client
       
  4269 	for (TInt i=0; i<iGetCB->Count(); ++i)
       
  4270 		{
       
  4271 		read = iGetCB->At(i);
       
  4272 		if ((read->iClient.iSessionHandle==aClient->iSessionHandle) &&
       
  4273 		    (read->iClient.iSubSessionHandle==aClient->iSubSessionHandle))
       
  4274 			{
       
  4275 			TPtr8 bufPtr((read->iListBuf)->Ptr(0));
       
  4276 			// Copy the streamed list to the client
       
  4277 			aBuf->Copy(bufPtr);
       
  4278 			delete read;
       
  4279 			iGetCB->Delete(i);
       
  4280 			ReqCompleted(aTsyReqHandle,KErrNone);
       
  4281 			return KErrNone;
       
  4282 			}
       
  4283 		}
       
  4284 	// Should handle error case of not finding the matching client from read all phase 1
       
  4285 	return KErrNotFound;
       
  4286 	}
       
  4287 	
       
  4288 TInt CPhoneDMmTsy::GetCallBarringCancel(const TTsyReqHandle aTsyReqHandle)
       
  4289 	{
       
  4290 	LOGTEXT(_L8("CPhoneDMmTsy::GetCallBarringCancel called"));
       
  4291 	RemoveDelayedReq(aTsyReqHandle);
       
  4292 	// Remove the read all attempt from iGetCB
       
  4293 	CListReadAllAttempt* read=NULL;
       
  4294 	for (TInt i=0; i<iGetCB->Count(); ++i)
       
  4295 		{
       
  4296 		read = iGetCB->At(i);
       
  4297 		if (read->iReqHandle == aTsyReqHandle)
       
  4298 			{
       
  4299 			delete read;
       
  4300 			iGetCB->Delete(i);
       
  4301 			break;
       
  4302 			}
       
  4303 		}
       
  4304 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4305 	return KErrNone;
       
  4306 	}
       
  4307 
       
  4308 TInt CPhoneDMmTsy::SetCallBarringStatus(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneCBCondition *aCondition, RMobilePhone::TMobilePhoneCBChangeV1* aInfo)
       
  4309 	{
       
  4310 	LOGTEXT(_L8("CPhoneDMmTsy::SetCallBarringStatus called"));
       
  4311 	if (*aCondition != DMMTSY_PHONE_CB_CONDITION ||  aInfo->iAction != DMMTSY_PHONE_CB_ACTION ||
       
  4312 		(aInfo->iPassword.Compare(DMMTSY_PHONE_CB_PASSWORD) != 0))
       
  4313 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  4314 	else
       
  4315 		AddDelayedReq(aTsyReqHandle,this);
       
  4316 	return KErrNone;
       
  4317 	}
       
  4318 
       
  4319 TInt CPhoneDMmTsy::SetCallBarringStatusCancel(const TTsyReqHandle aTsyReqHandle)
       
  4320 	{
       
  4321 	LOGTEXT(_L8("CPhoneDMmTsy::SetCallBarringStatusCancel called"));
       
  4322 	RemoveDelayedReq(aTsyReqHandle);
       
  4323 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4324 	return KErrNone;
       
  4325 	}
       
  4326 
       
  4327 TInt CPhoneDMmTsy::NotifyCallBarringStatusChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneCBCondition* aCondition)
       
  4328 	{
       
  4329 	if (!iNotifyCallBarringStatusChange++)
       
  4330 		{
       
  4331 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyCallBarringStatusChange called"));
       
  4332 		*aCondition = DMMTSY_PHONE_CB_CONDITION;
       
  4333 		AddDelayedReq(aTsyReqHandle,this);
       
  4334 		}
       
  4335 	return KErrNone;
       
  4336 	}
       
  4337 
       
  4338 TInt CPhoneDMmTsy::NotifyCallBarringStatusChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  4339 	{
       
  4340 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyCallBarringStatusChangeCancel called"));
       
  4341 	RemoveDelayedReq(aTsyReqHandle);
       
  4342 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4343 	return KErrNone;
       
  4344 	}
       
  4345 	
       
  4346 TInt CPhoneDMmTsy::SetCallBarringPassword(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhonePasswordChangeV1* aPassword)
       
  4347 	{
       
  4348 	LOGTEXT(_L8("CPhoneDMmTsy::SetCallBarringPassword called"));
       
  4349 	if ((aPassword->iOldPassword.Compare(DMMTSY_PHONE_CB_PASSWORD) != 0) ||
       
  4350 		(aPassword->iNewPassword.Compare(DMMTSY_PHONE_CB_NEW_PASSWORD) != 0))
       
  4351 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  4352 	else
       
  4353 		AddDelayedReq(aTsyReqHandle,this);
       
  4354 	return KErrNone;
       
  4355 	}
       
  4356 
       
  4357 TInt CPhoneDMmTsy::SetCallBarringPasswordCancel(const TTsyReqHandle aTsyReqHandle)
       
  4358 	{
       
  4359 	LOGTEXT(_L8("CPhoneDMmTsy::SetCallBarringPasswordCancel called"));
       
  4360 	RemoveDelayedReq(aTsyReqHandle);
       
  4361 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4362 	return KErrNone;
       
  4363 	}
       
  4364 
       
  4365 TInt CPhoneDMmTsy::SetSSPassword(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhonePasswordChangeV2* aPassword, TInt* aService)
       
  4366 	{
       
  4367 	LOGTEXT(_L8("CPhoneDMmTsy::SetSSPassword called"));
       
  4368 	if ((aPassword->iOldPassword.Compare(DMMTSY_PHONE_CB_PASSWORD) != 0) ||
       
  4369 		(aPassword->iNewPassword.Compare(DMMTSY_PHONE_CB_NEW_PASSWORD) != 0) ||
       
  4370 		(aPassword->iVerifiedPassword.Compare(DMMTSY_PHONE_CB_VERIFIED_PASSWORD) != 0) &&
       
  4371 		aService != DMMTSY_PHONE_CB_ALL_SERVICES )
       
  4372 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  4373 	else
       
  4374 		AddDelayedReq(aTsyReqHandle,this);
       
  4375 	return KErrNone;
       
  4376 	}
       
  4377 
       
  4378 TInt CPhoneDMmTsy::SetSSPasswordCancel(const TTsyReqHandle aTsyReqHandle)
       
  4379 	{
       
  4380 	LOGTEXT(_L8("CPhoneDMmTsy::SetSSPasswordCancel called"));
       
  4381 	RemoveDelayedReq(aTsyReqHandle);
       
  4382 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4383 	return KErrNone;
       
  4384 	}
       
  4385 
       
  4386 
       
  4387 
       
  4388 TInt CPhoneDMmTsy::GetCallWaitingPhase1(const TTsyReqHandle aTsyReqHandle, 
       
  4389 												 CRetrieveMobilePhoneCWList::TGetCallWaitingRequest* aReqData, 
       
  4390 												 TInt* aBufSize)
       
  4391 	{
       
  4392 	LOGTEXT(_L8("CPhoneDMmTsy::GetCallWaitingPhase1 called"));
       
  4393 	TInt ret=KErrNone;
       
  4394 
       
  4395 	if (aReqData->iLocation!=DMMTSY_PHONE_CW_LOCATION)
       
  4396 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  4397 	else
       
  4398 		{
       
  4399 		TInt leaveCode=KErrNone;
       
  4400 		TRAP(leaveCode, ret=ProcessGetCallWaitingPhase1L(aTsyReqHandle, aReqData, aBufSize));
       
  4401 		if (leaveCode != KErrNone)
       
  4402 			ReqCompleted(aTsyReqHandle,leaveCode);
       
  4403 		}
       
  4404 	return ret;
       
  4405 	}
       
  4406 
       
  4407 TInt CPhoneDMmTsy::ProcessGetCallWaitingPhase1L(const TTsyReqHandle aTsyReqHandle, 
       
  4408 														 CRetrieveMobilePhoneCWList::TGetCallWaitingRequest* aReqData, 
       
  4409 														 TInt* aBufSize)
       
  4410 	{
       
  4411 	// retrieve call forwarding status of each line from phone,
       
  4412 	// store each CW status response as a list entry,
       
  4413 	// stream the list and then return size of this buffer to client
       
  4414 
       
  4415 	CMobilePhoneCWList* list=CMobilePhoneCWList::NewL();
       
  4416 	CleanupStack::PushL(list);
       
  4417 
       
  4418 	RMobilePhone::TMobilePhoneCWInfoEntryV1 entry;
       
  4419 
       
  4420 	// fill up an example list
       
  4421 	for (TInt index=0; index < DMMTSY_CW_ENTRY_COUNT; index++)
       
  4422 		{
       
  4423 		switch (index)
       
  4424 			{
       
  4425 		case 0:
       
  4426 			entry.iServiceGroup = DMMTSY_PHONE_CW_SG0;
       
  4427 			entry.iStatus = DMMTSY_PHONE_CW_STATUS0;
       
  4428 			break;
       
  4429 		case 1:
       
  4430 			entry.iServiceGroup = DMMTSY_PHONE_CW_SG1;
       
  4431 			entry.iStatus = DMMTSY_PHONE_CW_STATUS1;
       
  4432 			break;
       
  4433 		case 2:
       
  4434 			entry.iServiceGroup = DMMTSY_PHONE_CW_SG2;
       
  4435 			entry.iStatus = DMMTSY_PHONE_CW_STATUS2;
       
  4436 			break;
       
  4437 		case 3:
       
  4438 		default:
       
  4439 			entry.iServiceGroup = DMMTSY_PHONE_CW_SG3;
       
  4440 			entry.iStatus = DMMTSY_PHONE_CW_STATUS3;
       
  4441 			break;
       
  4442 			}
       
  4443 			// Add the entry into the list, at the next empty location
       
  4444 			list->AddEntryL(entry);
       
  4445 		}
       
  4446 
       
  4447 	// Store the streamed list and the client ID
       
  4448 	CListReadAllAttempt* read=CListReadAllAttempt::NewL(&(aReqData->iClient),aTsyReqHandle);
       
  4449 	CleanupStack::PushL(read);
       
  4450 	
       
  4451 	read->iListBuf = list->StoreLC();
       
  4452 	CleanupStack::Pop(); // pop the CBufBase allocated by StoreLC
       
  4453 	
       
  4454 	iGetCWStatus->AppendL(read);
       
  4455 	CleanupStack::Pop(); // pop the CListReadAllAttempt
       
  4456 	
       
  4457 	// return the CBufBase’s size to client
       
  4458 	*aBufSize=(read->iListBuf)->Size();
       
  4459 	
       
  4460 	// Complete first phase of list retrieval
       
  4461 	AddDelayedReq(aTsyReqHandle,this);
       
  4462 	CleanupStack::PopAndDestroy(); // pop&destroy list
       
  4463 	return KErrNone;
       
  4464 	}
       
  4465 
       
  4466 
       
  4467 TInt CPhoneDMmTsy::GetCallWaitingPhase2(const TTsyReqHandle aTsyReqHandle, 
       
  4468 												 RMobilePhone::TClientId* aClient, TDes8* aBuf)
       
  4469 	{
       
  4470 	LOGTEXT(_L8("CPhoneDMmTsy::GetCallWaitingPhase2 called"));
       
  4471 	CListReadAllAttempt* read=NULL;
       
  4472 	// Find the get call waiting attempt from this client
       
  4473 	for (TInt i=0; i<iGetCWStatus->Count(); ++i)
       
  4474 		{
       
  4475 		read = iGetCWStatus->At(i);
       
  4476 		if ((read->iClient.iSessionHandle==aClient->iSessionHandle) &&
       
  4477 		    (read->iClient.iSubSessionHandle==aClient->iSubSessionHandle))
       
  4478 			{
       
  4479 			TPtr8 bufPtr((read->iListBuf)->Ptr(0));
       
  4480 			// Copy the streamed list to the client
       
  4481 			aBuf->Copy(bufPtr);
       
  4482 			delete read;
       
  4483 			iGetCWStatus->Delete(i);
       
  4484 			ReqCompleted(aTsyReqHandle,KErrNone);
       
  4485 			return KErrNone;
       
  4486 			}
       
  4487 		}
       
  4488 	// Should handle error case of not finding the matching client from read all phase 1
       
  4489 	return KErrNotFound;
       
  4490 	}
       
  4491 
       
  4492 TInt CPhoneDMmTsy::GetCallWaitingCancel(const TTsyReqHandle aTsyReqHandle)
       
  4493 	{
       
  4494 	LOGTEXT(_L8("CPhoneDMmTsy::GetCallWaitingCancel called"));
       
  4495 	RemoveDelayedReq(aTsyReqHandle);
       
  4496 	// Remove the read all attempt from iGetCWStatus
       
  4497 	CListReadAllAttempt* read=NULL;
       
  4498 	for (TInt i=0; i<iGetCWStatus->Count(); ++i)
       
  4499 		{
       
  4500 		read = iGetCWStatus->At(i);
       
  4501 		if (read->iReqHandle == aTsyReqHandle)
       
  4502 			{
       
  4503 			delete read;
       
  4504 			iGetCWStatus->Delete(i);
       
  4505 			break;
       
  4506 			}
       
  4507 		}
       
  4508 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4509 	return KErrNone;
       
  4510 	}
       
  4511 
       
  4512 
       
  4513 TInt CPhoneDMmTsy::SetCallWaitingStatus(const TTsyReqHandle aTsyReqHandle,
       
  4514 										RMobilePhone::TMobileService* aServiceGroup,
       
  4515 										RMobilePhone::TMobilePhoneServiceAction *aAction)
       
  4516 	{
       
  4517 	LOGTEXT(_L8("CPhoneDMmTsy::SetCallWaitingStatus called"));
       
  4518 	if ((*aAction != DMMTSY_PHONE_CW_SET_STATUS_ACTION) ||
       
  4519 		(*aServiceGroup != DMMTSY_PHONE_CW_SG0))
       
  4520 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  4521 	else
       
  4522 		AddDelayedReq(aTsyReqHandle,this);
       
  4523 	return KErrNone;
       
  4524 	}
       
  4525 
       
  4526 TInt CPhoneDMmTsy::SetCallWaitingStatusCancel(const TTsyReqHandle aTsyReqHandle)
       
  4527 	{
       
  4528 	LOGTEXT(_L8("CPhoneDMmTsy::SetCallWaitingStatusCancel called"));
       
  4529 	RemoveDelayedReq(aTsyReqHandle);
       
  4530 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4531 	return KErrNone;
       
  4532 	}
       
  4533 
       
  4534 TInt CPhoneDMmTsy::NotifyCallWaitingStatusChange(const TTsyReqHandle aTsyReqHandle, TDes8* aCWStatus)
       
  4535 	{
       
  4536 	if (!iNotifyCallWaitingStatusChange++)
       
  4537 		{
       
  4538 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyCallWaitingStatusChange called"));
       
  4539 		RMobilePhone::TMobilePhoneCWInfoEntryV1Pckg *cwInfoPckg = STATIC_CAST(RMobilePhone::TMobilePhoneCWInfoEntryV1Pckg*,aCWStatus);
       
  4540 		RMobilePhone::TMobilePhoneCWInfoEntryV1 &cwInfo = (*cwInfoPckg)();
       
  4541 		cwInfo.iServiceGroup = DMMTSY_PHONE_CW_SG0;
       
  4542 		cwInfo.iStatus = DMMTSY_PHONE_CW_STATUS0;
       
  4543 		AddDelayedReq(aTsyReqHandle,this);
       
  4544 		}
       
  4545 	return KErrNone;
       
  4546 	}
       
  4547 
       
  4548 TInt CPhoneDMmTsy::NotifyCallWaitingStatusChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  4549 	{
       
  4550 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyCallWaitingStatusChangeCancel called"));
       
  4551 	RemoveDelayedReq(aTsyReqHandle);
       
  4552 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4553 	return KErrNone;
       
  4554 	}
       
  4555 
       
  4556 TInt CPhoneDMmTsy::GetCCBSStatus(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneCCBSStatus* aCcbsStatus, RMobilePhone::TMobileInfoLocation* aLocation)
       
  4557 	{
       
  4558 	LOGTEXT(_L8("CPhoneDMmTsy::GetCCBSStatus called"));
       
  4559 	if (*aLocation != DMMTSY_PHONE_CCC_LOCATION)
       
  4560 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  4561 	else
       
  4562 		{
       
  4563 		*aCcbsStatus = DMMTSY_PHONE_CCC_STATUS;
       
  4564 		AddDelayedReq(aTsyReqHandle,this);
       
  4565 		}
       
  4566 	return KErrNone;
       
  4567 	}
       
  4568 
       
  4569 TInt CPhoneDMmTsy::GetCCBSStatusCancel(const TTsyReqHandle aTsyReqHandle)
       
  4570 	{
       
  4571 	LOGTEXT(_L8("CPhoneDMmTsy::GetCCBSStatusCancel called"));
       
  4572 	RemoveDelayedReq(aTsyReqHandle);
       
  4573 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4574 	return KErrNone;
       
  4575 	}
       
  4576 
       
  4577 TInt CPhoneDMmTsy::NotifyCCBSStatusChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneCCBSStatus* aCcbsStatus)
       
  4578 	{
       
  4579 	if (!iNotifyCCBSStatusChange++)
       
  4580 		{
       
  4581 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyCCBSStatusChange called"));
       
  4582 		*aCcbsStatus = DMMTSY_PHONE_CCC_STATUS;
       
  4583 		AddDelayedReq(aTsyReqHandle,this);
       
  4584 		}
       
  4585 	return KErrNone;
       
  4586 	}
       
  4587 
       
  4588 TInt CPhoneDMmTsy::NotifyCCBSStatusChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  4589 	{
       
  4590 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyCCBSStatusChangeCancel called"));
       
  4591 	RemoveDelayedReq(aTsyReqHandle);
       
  4592 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4593 	return KErrNone;
       
  4594 	}
       
  4595 
       
  4596 TInt CPhoneDMmTsy::NotifyCCBSRecall(const TTsyReqHandle aTsyReqHandle, TDes8* aCCBSEntry)
       
  4597 	{
       
  4598 //	_asm{int 3};
       
  4599 	if (!iNotifyCCBSRecall++)
       
  4600 		{
       
  4601 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyCCBSRecall called"));
       
  4602 		
       
  4603 		RMobilePhone::TMobilePhoneCCBSEntryV1Pckg* ccbsPckg = STATIC_CAST(RMobilePhone::TMobilePhoneCCBSEntryV1Pckg*,aCCBSEntry);
       
  4604 		RMobilePhone::TMobilePhoneCCBSEntryV1& ccbs = (*ccbsPckg)();
       
  4605 
       
  4606 		ccbs.iCcbsIndex=DMMTSY_PHONE_CCC_INDEX1;
       
  4607 		ccbs.iServiceGroup=DMMTSY_PHONE_CCC_SERVICE_GROUP0;
       
  4608 		ccbs.iDestination.iNumberPlan=DMMTSY_PHONE_CCC_DESTINATION_NP0;
       
  4609 		ccbs.iDestination.iTelNumber= DMMTSY_PHONE_CCC_DESTINATION_NUM0;
       
  4610 		ccbs.iDestination.iTypeOfNumber = DMMTSY_PHONE_CCC_DESTINATION_TON0;
       
  4611 		
       
  4612 		if(ccbs.ExtensionId()==KETelExtMultimodeV2)
       
  4613 			{
       
  4614 			RMobilePhone::TMobilePhoneCCBSEntryV2Pckg* ccbsPckgV2 = STATIC_CAST(RMobilePhone::TMobilePhoneCCBSEntryV2Pckg*,aCCBSEntry);
       
  4615 			RMobilePhone::TMobilePhoneCCBSEntryV2& ccbs2 = (*ccbsPckgV2)();
       
  4616 			
       
  4617 			// Set that the network has informed us that the CCBS request can proceed
       
  4618 			ccbs2.iEvent = DMMTSY_PHONE_CCC_DESTINATION_CCBS_RECEIVED;
       
  4619 			//reset for multiple complete V1
       
  4620 			iNotifyCCBSRecall = 0;
       
  4621 			}
       
  4622 
       
  4623 		AddDelayedReq(aTsyReqHandle,this);
       
  4624 		}
       
  4625 	else
       
  4626 		{
       
  4627 			// reset for the V2 test 
       
  4628 			iNotifyCCBSRecall=0;
       
  4629 		}
       
  4630 	return KErrNone;	
       
  4631 	}
       
  4632 
       
  4633 TInt CPhoneDMmTsy::NotifyCCBSRecallCancel(const TTsyReqHandle aTsyReqHandle)
       
  4634 	{
       
  4635 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyCCBSRecallCancel called"));
       
  4636 	RemoveDelayedReq(aTsyReqHandle);
       
  4637 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4638 	return KErrNone;
       
  4639 	}
       
  4640 
       
  4641 TInt CPhoneDMmTsy::AcceptCCBSRecall(const TTsyReqHandle aTsyReqHandle, TInt* aIndex, TDes* aCallName)
       
  4642 	{
       
  4643 	LOGTEXT(_L8("CPhoneDMmTsy::AcceptCCBSRecall called"));
       
  4644 	if(*aIndex!=DMMTSY_PHONE_CCC_INDEX1)
       
  4645 		return KErrCorrupt;
       
  4646 	*aCallName = DMMTSY_PHONE_CCC_CALLNAME0;
       
  4647 	AddDelayedReq(aTsyReqHandle,this);
       
  4648 	return KErrNone;
       
  4649 	}
       
  4650 
       
  4651 TInt CPhoneDMmTsy::AcceptCCBSRecallCancel(const TTsyReqHandle aTsyReqHandle)
       
  4652 	{
       
  4653 	LOGTEXT(_L8("CPhoneDMmTsy::AcceptCCBSRecallCancel called"));
       
  4654 	RemoveDelayedReq(aTsyReqHandle);
       
  4655 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4656 	return KErrNone;
       
  4657 	}
       
  4658 
       
  4659 TInt CPhoneDMmTsy::RefuseCCBSRecall(const TTsyReqHandle aTsyReqHandle, TInt* aIndex)
       
  4660 	{
       
  4661 	LOGTEXT(_L8("CPhoneDMmTsy::RefuseCCBSRecall called"));
       
  4662 	if(*aIndex!=DMMTSY_PHONE_CCC_INDEX1)
       
  4663 		return KErrCorrupt;
       
  4664 	AddDelayedReq(aTsyReqHandle,this);
       
  4665 	return KErrNone;
       
  4666 	}
       
  4667 
       
  4668 
       
  4669 TInt CPhoneDMmTsy::DeactivateCCBS(const TTsyReqHandle aTsyReqHandle, TInt* aIndex)
       
  4670 	{
       
  4671 	if (*aIndex== -1)		//-1 means deactivate all
       
  4672 		return KErrEtelCallNotActive;
       
  4673 	if(*aIndex!=DMMTSY_PHONE_CCC_INDEX1) 
       
  4674 		return KErrCorrupt;
       
  4675 		
       
  4676 	LOGTEXT(_L8("CPhoneDMmTsy::DeactivateAllCCBS called"));
       
  4677 	AddDelayedReq(aTsyReqHandle,this);
       
  4678 	return KErrNone;
       
  4679 	}
       
  4680 
       
  4681 TInt CPhoneDMmTsy::DeactivateCCBSCancel(const TTsyReqHandle aTsyReqHandle)
       
  4682 	{
       
  4683 	LOGTEXT(_L8("CPhoneDMmTsy::DeactivateAllCCBSCancel called"));
       
  4684 	RemoveDelayedReq(aTsyReqHandle);
       
  4685 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4686 	return KErrNone;
       
  4687 	}
       
  4688 
       
  4689 TInt CPhoneDMmTsy::GetCallCompletionPhase1(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aReqData, TInt* aBufSize)
       
  4690 	{
       
  4691 	LOGTEXT(_L8("CPhoneDMmTsy::GetCallCompletionPhase1 called"));
       
  4692 	TInt ret = KErrNone;
       
  4693 
       
  4694 	TRAPD(leaveCode, ret=ProcessGetCallCompletionPhase1L(aTsyReqHandle, aReqData, aBufSize));
       
  4695 	if (leaveCode != KErrNone)
       
  4696 		ReqCompleted(aTsyReqHandle,leaveCode);
       
  4697 	return ret;	
       
  4698 	}
       
  4699 
       
  4700 TInt CPhoneDMmTsy::ProcessGetCallCompletionPhase1L(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aClientId, TInt* aBufSize)
       
  4701 	{
       
  4702 	CMobilePhoneCcbsList* list=CMobilePhoneCcbsList::NewL();
       
  4703 	CleanupStack::PushL(list);
       
  4704 
       
  4705 	RMobilePhone::TMobilePhoneCCBSEntryV1 entry;
       
  4706 
       
  4707 	// fill up an example list
       
  4708 	for (TInt index=0; index < DMMTSY_PHONE_CCC_ENTRY_COUNT; index++)
       
  4709 		{
       
  4710 		switch (index)
       
  4711 			{
       
  4712 		case 0:
       
  4713 			entry.iServiceGroup = DMMTSY_PHONE_CCC_SERVICE_GROUP0;
       
  4714 			entry.iCcbsIndex = DMMTSY_PHONE_CCC_INDEX0;
       
  4715 			entry.iDestination.iTypeOfNumber = DMMTSY_PHONE_CCC_DESTINATION_TON0;
       
  4716 			entry.iDestination.iNumberPlan = DMMTSY_PHONE_CCC_DESTINATION_NP0;
       
  4717 			entry.iDestination.iTelNumber = DMMTSY_PHONE_CCC_DESTINATION_NUM0;
       
  4718 			break;
       
  4719 		case 1:
       
  4720 			entry.iServiceGroup = DMMTSY_PHONE_CCC_SERVICE_GROUP1;
       
  4721 			entry.iCcbsIndex = DMMTSY_PHONE_CCC_INDEX1;
       
  4722 			entry.iDestination.iTypeOfNumber = DMMTSY_PHONE_CCC_DESTINATION_TON1;
       
  4723 			entry.iDestination.iNumberPlan = DMMTSY_PHONE_CCC_DESTINATION_NP1;
       
  4724 			entry.iDestination.iTelNumber = DMMTSY_PHONE_CCC_DESTINATION_NUM1;
       
  4725 			break;
       
  4726 		case 2:
       
  4727 			entry.iServiceGroup = DMMTSY_PHONE_CCC_SERVICE_GROUP2;
       
  4728 			entry.iCcbsIndex = DMMTSY_PHONE_CCC_INDEX2;
       
  4729 			entry.iDestination.iTypeOfNumber = DMMTSY_PHONE_CCC_DESTINATION_TON2;
       
  4730 			entry.iDestination.iNumberPlan = DMMTSY_PHONE_CCC_DESTINATION_NP2;
       
  4731 			entry.iDestination.iTelNumber = DMMTSY_PHONE_CCC_DESTINATION_NUM2;
       
  4732 			break;
       
  4733 		case 3:
       
  4734 			entry.iServiceGroup = DMMTSY_PHONE_CCC_SERVICE_GROUP3;
       
  4735 			entry.iCcbsIndex = DMMTSY_PHONE_CCC_INDEX3;
       
  4736 			entry.iDestination.iTypeOfNumber = DMMTSY_PHONE_CCC_DESTINATION_TON3;
       
  4737 			entry.iDestination.iNumberPlan = DMMTSY_PHONE_CCC_DESTINATION_NP3;
       
  4738 			entry.iDestination.iTelNumber = DMMTSY_PHONE_CCC_DESTINATION_NUM3;
       
  4739 		default:
       
  4740 			break;
       
  4741 			}
       
  4742 			// Add the entry into the list, at the next empty location
       
  4743 			list->AddEntryL(entry);
       
  4744 		}
       
  4745 
       
  4746 	// Store the streamed list and the client ID
       
  4747 	CListReadAllAttempt* read=CListReadAllAttempt::NewL(aClientId,aTsyReqHandle);
       
  4748 	CleanupStack::PushL(read);
       
  4749 
       
  4750 	read->iListBuf = list->StoreLC();
       
  4751 	CleanupStack::Pop(); // pop the CBufBase allocated by StoreLC
       
  4752 	
       
  4753 	iGetCcbsRequests->AppendL(read);
       
  4754 	CleanupStack::Pop(); // pop the CListReadAllAttempt
       
  4755 	
       
  4756 	// return the CBufBase’s size to client
       
  4757 	*aBufSize=(read->iListBuf)->Size();
       
  4758 	
       
  4759 	// Complete first phase of list retrieval
       
  4760 	AddDelayedReq(aTsyReqHandle,this);
       
  4761 	CleanupStack::PopAndDestroy(); // pop&destroy list
       
  4762 	return KErrNone;
       
  4763 	}
       
  4764 
       
  4765 TInt CPhoneDMmTsy::GetCallCompletionPhase2(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aClient, TDes8* aBuf)
       
  4766 	{
       
  4767 	LOGTEXT(_L8("CPhoneDMmTsy::GetCallCompletionPhase2 called"));
       
  4768 	CListReadAllAttempt* read=NULL;
       
  4769 	
       
  4770 	for (TInt i=0; i<iGetCcbsRequests->Count(); ++i)
       
  4771 		{
       
  4772 		read = iGetCcbsRequests->At(i);
       
  4773 		if ((read->iClient.iSessionHandle==aClient->iSessionHandle) &&
       
  4774 		    (read->iClient.iSubSessionHandle==aClient->iSubSessionHandle))
       
  4775 			{
       
  4776 			TPtr8 bufPtr((read->iListBuf)->Ptr(0));
       
  4777 			// Copy the streamed list to the client
       
  4778 			aBuf->Copy(bufPtr);
       
  4779 			delete read;
       
  4780 			iGetCcbsRequests->Delete(i);
       
  4781 			ReqCompleted(aTsyReqHandle,KErrNone);
       
  4782 			return KErrNone;
       
  4783 			}
       
  4784 		}
       
  4785 	// Should handle error case of not finding the matching client from read all phase 1
       
  4786 	return KErrNotFound;
       
  4787 	}
       
  4788 
       
  4789 TInt CPhoneDMmTsy::GetCallCompletionCancel(const TTsyReqHandle aTsyReqHandle)
       
  4790 	{
       
  4791 	LOGTEXT(_L8("CPhoneDMmTsy::GetCallWaitingCancel called"));
       
  4792 	RemoveDelayedReq(aTsyReqHandle);
       
  4793 	// Remove the read all attempt from iGetCcbsRequests
       
  4794 	CListReadAllAttempt* read=NULL;
       
  4795 	for (TInt i=0; i<iGetCcbsRequests->Count(); ++i)
       
  4796 		{
       
  4797 		read = iGetCcbsRequests->At(i);
       
  4798 		if (read->iReqHandle == aTsyReqHandle)
       
  4799 			{
       
  4800 			delete read;
       
  4801 			iGetCcbsRequests->Delete(i);
       
  4802 			break;
       
  4803 			}
       
  4804 		}
       
  4805 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4806 	return KErrNone;
       
  4807 	}
       
  4808 
       
  4809 TInt CPhoneDMmTsy::GetAlternatingCallCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps)
       
  4810 	{
       
  4811 	LOGTEXT(_L8("CPhoneDMmTsy::GetAlternatingCallCaps called"));
       
  4812 
       
  4813 	*aCaps = DMMTSY_PHONE_ALTERNATING_CALL_CAPS;
       
  4814 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  4815 	return KErrNone;
       
  4816 	}
       
  4817 
       
  4818 TInt CPhoneDMmTsy::NotifyAlternatingCallCapsChange(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps)
       
  4819 	{
       
  4820 	if (!iNotifyAlternatingCallCapsChange++)
       
  4821 		{
       
  4822 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyAlternatingCallCapsChange called"));
       
  4823 		*aCaps = DMMTSY_PHONE_ALTERNATING_CALL_CAPS;
       
  4824 		AddDelayedReq(aTsyReqHandle,this);
       
  4825 		}
       
  4826 	return KErrNone;
       
  4827 	}
       
  4828 
       
  4829 TInt CPhoneDMmTsy::NotifyAlternatingCallCapsChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  4830 	{
       
  4831 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyAlternatingCallCapsChangeCancel called"));
       
  4832 	RemoveDelayedReq(aTsyReqHandle);
       
  4833 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4834 	return KErrNone;
       
  4835 	}
       
  4836 
       
  4837 TInt CPhoneDMmTsy::GetAlternatingCallMode(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneAlternatingCallMode* aMode, RMobilePhone::TMobileService* aFirstService)
       
  4838 	{
       
  4839 	LOGTEXT(_L8("CPhoneDMmTsy::GetAlternatingCallMode called"));
       
  4840 	*aMode = DMMTSY_PHONE_ALTERNATING_CALL_MODE;
       
  4841 	*aFirstService = DMMTSY_PHONE_ALTERNATING_CALL_SERVICE;
       
  4842 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  4843 	return KErrNone;
       
  4844 	}
       
  4845 
       
  4846 TInt CPhoneDMmTsy::SetAlternatingCallMode(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneAlternatingCallMode* aMode, RMobilePhone::TMobileService* aFirstService)
       
  4847 	{
       
  4848 	LOGTEXT(_L8("CPhoneDMmTsy::SetAlternatingCallMode called"));
       
  4849 	if (*aMode != DMMTSY_PHONE_ALTERNATING_CALL_MODE || *aFirstService != DMMTSY_PHONE_ALTERNATING_CALL_SERVICE)
       
  4850 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  4851 	else
       
  4852 		AddDelayedReq(aTsyReqHandle,this);
       
  4853 	return KErrNone;
       
  4854 	}
       
  4855 
       
  4856 TInt CPhoneDMmTsy::SetAlternatingCallModeCancel(const TTsyReqHandle aTsyReqHandle)
       
  4857 	{
       
  4858 	LOGTEXT(_L8("CPhoneDMmTsy::SetAlternatingCallModeCancel called"));
       
  4859 	RemoveDelayedReq(aTsyReqHandle);
       
  4860 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4861 	return KErrNone;
       
  4862 	}
       
  4863 
       
  4864 TInt CPhoneDMmTsy::NotifyAlternatingCallModeChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneAlternatingCallMode* aMode,RMobilePhone::TMobileService* aFirstService)
       
  4865 	{
       
  4866 	if (!iNotifyAlternatingCallModeChange++)
       
  4867 		{
       
  4868 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyAlternatingCallModeChange called"));
       
  4869 		*aMode = DMMTSY_PHONE_ALTERNATING_CALL_MODE;
       
  4870 		*aFirstService = DMMTSY_PHONE_ALTERNATING_CALL_SERVICE;
       
  4871 		AddDelayedReq(aTsyReqHandle,this);
       
  4872 		}
       
  4873 	return KErrNone;
       
  4874 	}
       
  4875 
       
  4876 TInt CPhoneDMmTsy::NotifyAlternatingCallModeChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  4877 	{
       
  4878 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyAlternatingCallModeChangeCancel called"));
       
  4879 	RemoveDelayedReq(aTsyReqHandle);
       
  4880 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4881 	return KErrNone;
       
  4882 	}
       
  4883 
       
  4884 TInt CPhoneDMmTsy::GetALSLine(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneALSLine* aALSLine)
       
  4885 	{
       
  4886 	LOGTEXT(_L8("CPhoneDMmTsy::GetALSLine called"));
       
  4887 	*aALSLine = DMMTSY_PHONE_ALS_LINE;
       
  4888 	AddDelayedReq(aTsyReqHandle,this);
       
  4889 	return KErrNone;
       
  4890 	}
       
  4891 
       
  4892 TInt CPhoneDMmTsy::SetALSLine(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneALSLine* aALSLine)
       
  4893 	{
       
  4894 	LOGTEXT(_L8("CPhoneDMmTsy::SetALSLine called"));
       
  4895 	if (*aALSLine != DMMTSY_PHONE_ALS_LINE)
       
  4896 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  4897 	else
       
  4898 		AddDelayedReq(aTsyReqHandle,this);
       
  4899 	return KErrNone;
       
  4900 	}
       
  4901 
       
  4902 TInt CPhoneDMmTsy::SetALSLineCancel(const TTsyReqHandle aTsyReqHandle)
       
  4903 	{
       
  4904 	LOGTEXT(_L8("CPhoneDMmTsy::SetALSLineCancel called"));
       
  4905 	RemoveDelayedReq(aTsyReqHandle);
       
  4906 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4907 	return KErrNone;
       
  4908 	}
       
  4909 
       
  4910 
       
  4911 TInt CPhoneDMmTsy::NotifyALSLineChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneALSLine* aALSLine)
       
  4912 	{
       
  4913 	if (!iNotifyALSLineChange++)
       
  4914 		{
       
  4915 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyALSLineChange called"));
       
  4916 		*aALSLine = DMMTSY_PHONE_ALS_LINE;
       
  4917 		AddDelayedReq(aTsyReqHandle,this);
       
  4918 		}
       
  4919 	return KErrNone;
       
  4920 	}
       
  4921 
       
  4922 TInt CPhoneDMmTsy::NotifyALSLineChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  4923 	{
       
  4924 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyALSLineChangeCancel called"));
       
  4925 	RemoveDelayedReq(aTsyReqHandle);
       
  4926 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4927 	return KErrNone;
       
  4928 	}
       
  4929 
       
  4930 TInt CPhoneDMmTsy::GetCostCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps)
       
  4931 	{
       
  4932 	LOGTEXT(_L8("CPhoneDMmTsy::GetCostCaps called"));
       
  4933 	*aCaps = DMMTSY_PHONE_COST_CAPS;	
       
  4934 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  4935 	return KErrNone;
       
  4936 	}
       
  4937 
       
  4938 TInt CPhoneDMmTsy::NotifyCostCapsChange(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps)
       
  4939 	{
       
  4940 	if (!iNotifyCostCapsChange++)
       
  4941 		{
       
  4942 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyCostCapsChange called"));
       
  4943 		*aCaps = DMMTSY_PHONE_COST_CAPS;
       
  4944 		AddDelayedReq(aTsyReqHandle,this);
       
  4945 		}
       
  4946 	return KErrNone;
       
  4947 	}
       
  4948 
       
  4949 TInt CPhoneDMmTsy::NotifyCostCapsChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  4950 	{
       
  4951 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyCostCapsChangeCancel called"));
       
  4952 	RemoveDelayedReq(aTsyReqHandle);
       
  4953 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4954 	return KErrNone;
       
  4955 	}
       
  4956 
       
  4957 TInt CPhoneDMmTsy::ClearCostMeter(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneCostMeters* aMeters)
       
  4958 	{
       
  4959 	LOGTEXT(_L8("CPhoneDMmTsy::ClearCostMeter called"));
       
  4960 	if (*aMeters != DMMTSY_PHONE_COST_METER)
       
  4961 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  4962 	else
       
  4963 		AddDelayedReq(aTsyReqHandle,this);
       
  4964 	return KErrNone;
       
  4965 	}
       
  4966 
       
  4967 TInt CPhoneDMmTsy::ClearCostMeterCancel(const TTsyReqHandle aTsyReqHandle)
       
  4968 	{
       
  4969 	LOGTEXT(_L8("CPhoneDMmTsy::ClearCostMeterCancel called"));
       
  4970 	RemoveDelayedReq(aTsyReqHandle);
       
  4971 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4972 	return KErrNone;
       
  4973 	}
       
  4974 
       
  4975 TInt CPhoneDMmTsy::SetMaxCostMeter(const TTsyReqHandle aTsyReqHandle, TUint *aUnits)
       
  4976 	{
       
  4977 	LOGTEXT(_L8("CPhoneDMmTsy::SetMaxCostMeter called"));
       
  4978 	if (*aUnits != DMMTSY_PHONE_COST_UNITS)
       
  4979 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  4980 	else
       
  4981 		AddDelayedReq(aTsyReqHandle,this);
       
  4982 	return KErrNone;
       
  4983 	}
       
  4984 
       
  4985 TInt CPhoneDMmTsy::SetMaxCostMeterCancel(const TTsyReqHandle aTsyReqHandle)
       
  4986 	{
       
  4987 	LOGTEXT(_L8("CPhoneDMmTsy::SetMaxCostMeterCancel called"));
       
  4988 	RemoveDelayedReq(aTsyReqHandle);
       
  4989 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  4990 	return KErrNone;
       
  4991 	}
       
  4992 
       
  4993 TInt CPhoneDMmTsy::SetPuct(const TTsyReqHandle aTsyReqHandle, TDes8* aPuct)
       
  4994 	{
       
  4995 	LOGTEXT(_L8("CPhoneDMmTsy::SetPuct called"));
       
  4996 	RMobilePhone::TMobilePhonePuctV1Pckg* puctPckg = STATIC_CAST(RMobilePhone::TMobilePhonePuctV1Pckg*,aPuct);
       
  4997 	RMobilePhone::TMobilePhonePuctV1& puct = (*puctPckg)();
       
  4998 	
       
  4999 	if ((puct.iCurrencyName.Compare(DMMTSY_PHONE_COST_PUCT_CNAME) != 0) || 
       
  5000 		(puct.iPricePerUnit != DMMTSY_PHONE_COST_PUCT_PPU))
       
  5001 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  5002 	else
       
  5003 		AddDelayedReq(aTsyReqHandle,this);
       
  5004 
       
  5005 	return KErrNone;
       
  5006 	}
       
  5007 
       
  5008 TInt CPhoneDMmTsy::SetPuctCancel(const TTsyReqHandle aTsyReqHandle)
       
  5009 	{
       
  5010 	LOGTEXT(_L8("CPhoneDMmTsy::SetPuctCancel called"));
       
  5011 	RemoveDelayedReq(aTsyReqHandle);
       
  5012 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5013 	return KErrNone;
       
  5014 	}
       
  5015 
       
  5016 TInt CPhoneDMmTsy::GetCostInfo(const TTsyReqHandle aTsyReqHandle, TDes8* aCostInfo)
       
  5017 	{
       
  5018 	LOGTEXT(_L8("CPhoneDMmTsy::GetCostInfo called"));
       
  5019 	RMobilePhone::TMobilePhoneCostInfoV1Pckg* ciPckg = STATIC_CAST(RMobilePhone::TMobilePhoneCostInfoV1Pckg*,aCostInfo);
       
  5020 	RMobilePhone::TMobilePhoneCostInfoV1& ci = (*ciPckg)();
       
  5021 
       
  5022 	ci.iService = DMMTSY_PHONE_COST_SERVICE;
       
  5023 	ci.iCCM = DMMTSY_PHONE_COST_CCM;
       
  5024 	ci.iACM = DMMTSY_PHONE_COST_ACM;
       
  5025 	ci.iACMmax = DMMTSY_PHONE_COST_ACMMAX;
       
  5026 	ci.iPuct.iCurrencyName = DMMTSY_PHONE_COST_PUCT_CNAME;
       
  5027 	ci.iPuct.iPricePerUnit = DMMTSY_PHONE_COST_PUCT_PPU;
       
  5028 
       
  5029 	AddDelayedReq(aTsyReqHandle,this);
       
  5030 	return KErrNone;	
       
  5031 	}
       
  5032 
       
  5033 TInt CPhoneDMmTsy::GetCostInfoCancel(const TTsyReqHandle aTsyReqHandle)
       
  5034 	{
       
  5035 	LOGTEXT(_L8("CPhoneDMmTsy::GetCostInfoCancel called"));
       
  5036 	RemoveDelayedReq(aTsyReqHandle);
       
  5037 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5038 	return KErrNone;	
       
  5039 	}
       
  5040 
       
  5041 TInt CPhoneDMmTsy::NotifyCostInfoChange(const TTsyReqHandle aTsyReqHandle, TDes8* aCostInfo)
       
  5042 	{
       
  5043 	if (!iNotifyCostInfoChange++)
       
  5044 		{
       
  5045 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyCostInfoChange called"));
       
  5046 		RMobilePhone::TMobilePhoneCostInfoV1Pckg* ciPckg = STATIC_CAST(RMobilePhone::TMobilePhoneCostInfoV1Pckg*,aCostInfo);
       
  5047 		RMobilePhone::TMobilePhoneCostInfoV1& ci = (*ciPckg)();
       
  5048 	
       
  5049 		ci.iService = DMMTSY_PHONE_COST_SERVICE;
       
  5050 		ci.iCCM = DMMTSY_PHONE_COST_CCM;
       
  5051 		ci.iACM = DMMTSY_PHONE_COST_ACM;
       
  5052 		ci.iACMmax = DMMTSY_PHONE_COST_ACMMAX;
       
  5053 		ci.iPuct.iCurrencyName = DMMTSY_PHONE_COST_PUCT_CNAME;
       
  5054 		ci.iPuct.iPricePerUnit = DMMTSY_PHONE_COST_PUCT_PPU;
       
  5055 
       
  5056 		AddDelayedReq(aTsyReqHandle,this);
       
  5057 		}
       
  5058 	return KErrNone;
       
  5059 	}
       
  5060 
       
  5061 TInt CPhoneDMmTsy::NotifyCostInfoChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5062 	{
       
  5063 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyCostInfoChangeCancel called"));
       
  5064 	RemoveDelayedReq(aTsyReqHandle);
       
  5065 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5066 	return KErrNone;	
       
  5067 	}
       
  5068 
       
  5069 TInt CPhoneDMmTsy::GetSecurityCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps)
       
  5070 	{
       
  5071 	LOGTEXT(_L8("CPhoneDMmTsy::GetSecurityCaps called"));
       
  5072 	*aCaps = DMMTSY_PHONE_SECURITY_CAPS;
       
  5073 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  5074 	return KErrNone;
       
  5075 	}
       
  5076 
       
  5077 TInt CPhoneDMmTsy::NotifySecurityCapsChange(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps)
       
  5078 	{
       
  5079 	if (!iNotifySecurityCapsChange++)
       
  5080 		{
       
  5081 		LOGTEXT(_L8("CPhoneDMmTsy::NotifySecurityCapsChange called"));
       
  5082 		*aCaps = DMMTSY_PHONE_SECURITY_CAPS;
       
  5083 		AddDelayedReq(aTsyReqHandle,this);
       
  5084 		}
       
  5085 	return KErrNone;
       
  5086 	}
       
  5087 
       
  5088 TInt CPhoneDMmTsy::NotifySecurityCapsChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5089 	{
       
  5090 	LOGTEXT(_L8("CPhoneDMmTsy::NotifySecurityCapsChangeCancel called"));
       
  5091 	RemoveDelayedReq(aTsyReqHandle);
       
  5092 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5093 	return KErrNone;	
       
  5094 	}
       
  5095 
       
  5096 TInt CPhoneDMmTsy::GetLockInfo(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneLock *aLock, TDes8* aLockInfo)
       
  5097 	{
       
  5098 	LOGTEXT(_L8("CPhoneDMmTsy::GetLockInfo called"));
       
  5099 	if (*aLock != DMMTSY_PHONE_SECURITY_LOCK)
       
  5100 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  5101 	else
       
  5102 		{
       
  5103 		RMobilePhone::TMobilePhoneLockInfoV1Pckg* liPckg = STATIC_CAST(RMobilePhone::TMobilePhoneLockInfoV1Pckg*,aLockInfo);
       
  5104 		RMobilePhone::TMobilePhoneLockInfoV1& li = (*liPckg)();
       
  5105 		li.iStatus = DMMTSY_PHONE_SECURITY_STATUS;
       
  5106 		li.iSetting = DMMTSY_PHONE_SECURITY_SETTING;
       
  5107 		AddDelayedReq(aTsyReqHandle,this);
       
  5108 		}
       
  5109 	return KErrNone;
       
  5110 	}
       
  5111 
       
  5112 TInt CPhoneDMmTsy::GetLockInfoCancel(const TTsyReqHandle aTsyReqHandle)
       
  5113 	{
       
  5114 	LOGTEXT(_L8("CPhoneDMmTsy::GetLockInfoCancel called"));
       
  5115 	RemoveDelayedReq(aTsyReqHandle);
       
  5116 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5117 	return KErrNone;	
       
  5118 	}
       
  5119 
       
  5120 TInt CPhoneDMmTsy::NotifyLockInfoChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneLock* aLock, TDes8* aLockInfo)
       
  5121 	{
       
  5122 	if (!iNotifyLockInfoChange++)
       
  5123 		{
       
  5124 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyLockInfoChange called"));
       
  5125 		RMobilePhone::TMobilePhoneLockInfoV1Pckg* liPckg = STATIC_CAST(RMobilePhone::TMobilePhoneLockInfoV1Pckg*,aLockInfo);
       
  5126 		RMobilePhone::TMobilePhoneLockInfoV1& li = (*liPckg)();
       
  5127 		li.iStatus = DMMTSY_PHONE_SECURITY_STATUS;
       
  5128 		li.iSetting = DMMTSY_PHONE_SECURITY_SETTING;
       
  5129 		*aLock = DMMTSY_PHONE_SECURITY_LOCK;
       
  5130 		AddDelayedReq(aTsyReqHandle,this);
       
  5131 		}
       
  5132 	return KErrNone;
       
  5133 	}
       
  5134 
       
  5135 TInt CPhoneDMmTsy::NotifyLockInfoChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5136 	{
       
  5137 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyLockInfoChangeCancel called"));
       
  5138 	RemoveDelayedReq(aTsyReqHandle);
       
  5139 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5140 	return KErrNone;	
       
  5141 	}
       
  5142 
       
  5143  
       
  5144 TInt CPhoneDMmTsy::SetLockSetting(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneLock *aLock, RMobilePhone::TMobilePhoneLockSetting *aLockSetting)
       
  5145 	{
       
  5146 	LOGTEXT(_L8("CPhoneDMmTsy::SetLockSetting called"));
       
  5147 	if (*aLock != DMMTSY_PHONE_SECURITY_SC_LOCK || 
       
  5148 		*aLockSetting != DMMTSY_PHONE_SECURITY_SC_SETTING)
       
  5149 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  5150 	else
       
  5151 		AddDelayedReq(aTsyReqHandle,this);
       
  5152 
       
  5153 	return KErrNone;
       
  5154 	}
       
  5155 
       
  5156 TInt CPhoneDMmTsy::SetLockSettingCancel(const TTsyReqHandle aTsyReqHandle)
       
  5157 	{
       
  5158 	LOGTEXT(_L8("CPhoneDMmTsy::SetLockSettingCancel called"));
       
  5159 	RemoveDelayedReq(aTsyReqHandle);
       
  5160 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5161 	return KErrNone;	
       
  5162 	}
       
  5163 
       
  5164 TInt CPhoneDMmTsy::ChangeSecurityCode(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneSecurityCode *aType, RMobilePhone::TMobilePhonePasswordChangeV1 *aChange)
       
  5165 	{
       
  5166 	LOGTEXT(_L8("CPhoneDMmTsy::ChangeSecurityCode called"));
       
  5167 	if ((*aType != DMMTSY_PHONE_SECURITY_CODE) || 
       
  5168 		(aChange->iOldPassword.Compare(DMMTSY_PHONE_SECURITY_OLD_PASS) != 0) ||
       
  5169 		(aChange->iNewPassword.Compare(DMMTSY_PHONE_SECURITY_NEW_PASS) != 0)) 
       
  5170 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  5171 	else
       
  5172 		AddDelayedReq(aTsyReqHandle,this);
       
  5173 		
       
  5174 	return KErrNone;
       
  5175 	}
       
  5176 
       
  5177 TInt CPhoneDMmTsy::ChangeSecurityCodeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5178 	{
       
  5179 	LOGTEXT(_L8("CPhoneDMmTsy::ChangeSecurityCodeCancel called"));
       
  5180 	RemoveDelayedReq(aTsyReqHandle);
       
  5181 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5182 	return KErrNone;	
       
  5183 	}
       
  5184 
       
  5185 TInt CPhoneDMmTsy::GetSecurityCodeInfo(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneSecurityCode *aSecurityCode, TDes8* aSecurityCodeInfo)
       
  5186 	{
       
  5187 	LOGTEXT(_L8("CPhoneDMmTsy::GetSecurityCodeInfo called"));
       
  5188 	if (*aSecurityCode != DMMTSY_PHONE_SECURITY_CODE)
       
  5189 		ReqCompleted(aTsyReqHandle,KErrNotFound);
       
  5190 	else
       
  5191 		{
       
  5192 		RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg* infoPckg = STATIC_CAST(RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg*,aSecurityCodeInfo);
       
  5193 		RMobilePhone::TMobilePhoneSecurityCodeInfoV5& info = (*infoPckg)();
       
  5194 		info.iRemainingEntryAttempts = DMMTSY_PHONE_SECURITY_REMAINING_ATTEMPTS;
       
  5195 		AddDelayedReq(aTsyReqHandle,this);
       
  5196 		}
       
  5197 	return KErrNone;
       
  5198 	}
       
  5199 
       
  5200 TInt CPhoneDMmTsy::GetSecurityCodeInfoCancel(const TTsyReqHandle aTsyReqHandle)
       
  5201 	{
       
  5202 	LOGTEXT(_L8("CPhoneDMmTsy::GetSecurityCodeInfoCancel called"));
       
  5203 	RemoveDelayedReq(aTsyReqHandle);
       
  5204 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5205 	return KErrNone;	
       
  5206 	}
       
  5207 
       
  5208 TInt CPhoneDMmTsy::NotifySecurityCodeInfoChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneSecurityCode* aSecurityCode,TDes8* aSecurityCodeInfo)
       
  5209 	{
       
  5210 	if (!iNotifySecurityCodeInfoChange++)
       
  5211 		{
       
  5212 		LOGTEXT(_L8("CPhoneDMmTsy::SecurityCodeInfoChange called"));
       
  5213 		RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg* infoPckg = STATIC_CAST(RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg*,aSecurityCodeInfo);
       
  5214 		RMobilePhone::TMobilePhoneSecurityCodeInfoV5& info = (*infoPckg)();
       
  5215 		info.iRemainingEntryAttempts = DMMTSY_PHONE_SECURITY_REMAINING_ATTEMPTS;
       
  5216 		*aSecurityCode = DMMTSY_PHONE_SECURITY_CODE;
       
  5217 		AddDelayedReq(aTsyReqHandle,this);
       
  5218 		}
       
  5219 	return KErrNone;
       
  5220 	}
       
  5221 
       
  5222 TInt CPhoneDMmTsy::NotifySecurityCodeInfoChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5223 	{
       
  5224 	LOGTEXT(_L8("CPhoneDMmTsy::NotifySecurityCodeInfoChangeCancel called"));
       
  5225 	RemoveDelayedReq(aTsyReqHandle);
       
  5226 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5227 	return KErrNone;	
       
  5228 	}
       
  5229 	
       
  5230 TInt CPhoneDMmTsy::NotifyOnSecurityEvent(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneSecurityEvent* aEvent)
       
  5231 	{
       
  5232 	if (!iNotifyOnSecurityEvent++)
       
  5233 		{
       
  5234 		LOGTEXT(_L8("CPhoneDMmTsy::Notify On Security Event called"));
       
  5235 		*aEvent = DMMTSY_PHONE_SECURITY_EVENT;
       
  5236 		AddDelayedReq(aTsyReqHandle,this);
       
  5237 		}
       
  5238 	return KErrNone;
       
  5239 	}
       
  5240 
       
  5241 TInt CPhoneDMmTsy::NotifyOnSecurityEventCancel(const TTsyReqHandle aTsyReqHandle)
       
  5242 	{
       
  5243 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyOnSecurityEventCancel called"));
       
  5244 	RemoveDelayedReq(aTsyReqHandle);
       
  5245 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5246 	return KErrNone;	
       
  5247 	}
       
  5248 
       
  5249 TInt CPhoneDMmTsy::VerifySecurityCode(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneSecurityCode *aType, RMobilePhone::TCodeAndUnblockCode* aData)
       
  5250 	{
       
  5251 	LOGTEXT(_L8("CPhoneDMmTsy::Verify Security Code called"));
       
  5252 
       
  5253 	if ((*aType != DMMTSY_PHONE_SECURITY_CODE) ||
       
  5254 		(aData->iCode.Compare(DMMTSY_PHONE_SECURITY_OLD_PASS) != 0) ||
       
  5255 		(aData->iUnblockCode.Compare(DMMTSY_PHONE_SECURITY_NEW_PASS) != 0))
       
  5256 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  5257 	else
       
  5258 		AddDelayedReq(aTsyReqHandle,this);
       
  5259 
       
  5260 	return KErrNone;
       
  5261 	}
       
  5262 
       
  5263 TInt CPhoneDMmTsy::VerifySecurityCodeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5264 	{
       
  5265 	LOGTEXT(_L8("CPhoneDMmTsy::VerifySecurityCodeCancel called"));
       
  5266 	RemoveDelayedReq(aTsyReqHandle);
       
  5267 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5268 	return KErrNone;	
       
  5269 	}
       
  5270 
       
  5271 TInt CPhoneDMmTsy::AbortSecurityCode(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneSecurityCode *aType)
       
  5272 	{
       
  5273 	LOGTEXT(_L8("CPhoneDMmTsy::AbortSecurityCode called"));
       
  5274 	if (*aType != DMMTSY_PHONE_SECURITY_CODE)
       
  5275 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  5276 	else
       
  5277 		ReqCompleted(aTsyReqHandle,KErrNone);
       
  5278 	return KErrNone;
       
  5279 	}
       
  5280 
       
  5281 
       
  5282 TInt CPhoneDMmTsy::NotifyMessageWaiting(const TTsyReqHandle aTsyReqHandle, TInt* aCount)
       
  5283 	{
       
  5284 	if (!iNotifyMessageWaiting++)
       
  5285 		{
       
  5286 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyMessageWaiting called"));
       
  5287 		*aCount = DMMTSY_PHONE_MW_COUNT;
       
  5288 		AddDelayedReq(aTsyReqHandle,this);
       
  5289 		}
       
  5290 	return KErrNone;
       
  5291 	}
       
  5292 
       
  5293 TInt CPhoneDMmTsy::NotifyMessageWaitingCancel(const TTsyReqHandle aTsyReqHandle)
       
  5294 	{
       
  5295 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyMessageWaitingCanel called"));
       
  5296 	RemoveDelayedReq(aTsyReqHandle);
       
  5297 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5298 	return KErrNone;	
       
  5299 	}
       
  5300 
       
  5301 TInt CPhoneDMmTsy::GetIccMessageWaitingIndicators(const TTsyReqHandle aTsyReqHandle, TDes8* aMsgIndicators)
       
  5302 	{
       
  5303 	LOGTEXT(_L8("CPhoneDMmTsy::GetIccMessageWaitingIndicators called"));
       
  5304 	RMobilePhone::TMobilePhoneMessageWaitingV1Pckg* indPckg = STATIC_CAST(RMobilePhone::TMobilePhoneMessageWaitingV1Pckg*,aMsgIndicators);
       
  5305 	RMobilePhone::TMobilePhoneMessageWaitingV1& indicators = (*indPckg)();
       
  5306 	indicators.iDisplayStatus=DMMTSY_PHONE_DISPLAYSTATUS; 
       
  5307 	indicators.iVoiceMsgs=DMMTSY_PHONE_VOICEMSGS;
       
  5308 	indicators.iAuxVoiceMsgs=DMMTSY_PHONE_AUXVOICEMSGS;
       
  5309 	indicators.iDataMsgs=DMMTSY_PHONE_DATAMSGS;
       
  5310 	indicators.iFaxMsgs=DMMTSY_PHONE_FAXMSGS;
       
  5311 	indicators.iEmailMsgs=DMMTSY_PHONE_EMAILMSGS;
       
  5312 	indicators.iOtherMsgs=DMMTSY_PHONE_OTHERMSGS;	
       
  5313 	
       
  5314 	if(indicators.ExtensionId() == KEtelExtMultimodeV8 )
       
  5315 		{
       
  5316 		RMobilePhone::TMobilePhoneMessageWaitingV8Pckg* indV8Pckg = STATIC_CAST(RMobilePhone::TMobilePhoneMessageWaitingV8Pckg*,aMsgIndicators);
       
  5317 		RMobilePhone::TMobilePhoneMessageWaitingV8& indicatorsV8 = (*indV8Pckg)();
       
  5318 		indicatorsV8.iVideoMsgs=DMMTSY_PHONE_VIDEOMSGS1;	
       
  5319 		}
       
  5320 	
       
  5321 	AddDelayedReq(aTsyReqHandle,this);
       
  5322 	return KErrNone;
       
  5323 	}
       
  5324 
       
  5325 TInt CPhoneDMmTsy::GetIccMessageWaitingIndicatorsCancel(const TTsyReqHandle aTsyReqHandle)
       
  5326 	{
       
  5327 	LOGTEXT(_L8("CPhoneDMmTsy::GetIccMessageWaitingIndicators called"));
       
  5328 	RemoveDelayedReq(aTsyReqHandle);
       
  5329 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5330 	return KErrNone;	
       
  5331 	}
       
  5332 
       
  5333 TInt CPhoneDMmTsy::SetIccMessageWaitingIndicators(const TTsyReqHandle aTsyReqHandle, TDes8* aMsgIndicators)
       
  5334 	{
       
  5335 	LOGTEXT(_L8("CPhoneDMmTsy::SetIccMessageWaitingIndicators called"));
       
  5336 	RMobilePhone::TMobilePhoneMessageWaitingV1Pckg* indPckg = STATIC_CAST(RMobilePhone::TMobilePhoneMessageWaitingV1Pckg*,aMsgIndicators);
       
  5337 	RMobilePhone::TMobilePhoneMessageWaitingV1& indicators = (*indPckg)();
       
  5338 	if ((indicators.iDisplayStatus!=DMMTSY_PHONE_DISPLAYSTATUS) || 
       
  5339 			(indicators.iVoiceMsgs != DMMTSY_PHONE_VOICEMSGS2) ||
       
  5340 			(indicators.iAuxVoiceMsgs != DMMTSY_PHONE_AUXVOICEMSGS2) ||
       
  5341 			(indicators.iDataMsgs != DMMTSY_PHONE_DATAMSGS2) ||
       
  5342 			(indicators.iFaxMsgs != DMMTSY_PHONE_FAXMSGS2) ||
       
  5343 			(indicators.iEmailMsgs != DMMTSY_PHONE_EMAILMSGS2) ||
       
  5344 			(indicators.iOtherMsgs != DMMTSY_PHONE_OTHERMSGS2))
       
  5345 		{
       
  5346 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  5347 		}
       
  5348 	
       
  5349 	if(indicators.ExtensionId() == KEtelExtMultimodeV8 ) 
       
  5350  		{
       
  5351  		RMobilePhone::TMobilePhoneMessageWaitingV8Pckg* indV8Pckg = STATIC_CAST(RMobilePhone::TMobilePhoneMessageWaitingV8Pckg*,aMsgIndicators);
       
  5352 		RMobilePhone::TMobilePhoneMessageWaitingV8& indicatorsV8 = (*indV8Pckg)();
       
  5353 		if (indicatorsV8.iVideoMsgs != DMMTSY_PHONE_VIDEOMSGS2)
       
  5354 			{
       
  5355 			ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  5356 			}
       
  5357 		}
       
  5358 
       
  5359 	AddDelayedReq(aTsyReqHandle,this);			
       
  5360 	return KErrNone;
       
  5361 	}
       
  5362 
       
  5363 TInt CPhoneDMmTsy::SetIccMessageWaitingIndicatorsCancel(const TTsyReqHandle aTsyReqHandle)
       
  5364 	{
       
  5365 	LOGTEXT(_L8("CPhoneDMmTsy::SetIccMessageWaitingIndicators called"));
       
  5366 	RemoveDelayedReq(aTsyReqHandle);
       
  5367 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5368 	return KErrNone;	
       
  5369 	}
       
  5370 
       
  5371 TInt CPhoneDMmTsy::NotifyIccMessageWaitingIndicatorsChange(const TTsyReqHandle aTsyReqHandle, TDes8* aMsgIndicators)
       
  5372 	{
       
  5373 	if (!iNotifyIccMessageWaitingChange++)
       
  5374 		{
       
  5375 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyIccMessageWaitingIndicatorsChange called"));
       
  5376 		RMobilePhone::TMobilePhoneMessageWaitingV1Pckg* indPckg = STATIC_CAST(RMobilePhone::TMobilePhoneMessageWaitingV1Pckg*,aMsgIndicators);
       
  5377 		RMobilePhone::TMobilePhoneMessageWaitingV1& indicators = (*indPckg)();
       
  5378 		
       
  5379 		indicators.iDisplayStatus=DMMTSY_PHONE_DISPLAYSTATUS; 
       
  5380 		indicators.iVoiceMsgs=DMMTSY_PHONE_VOICEMSGS2;
       
  5381 		indicators.iAuxVoiceMsgs=DMMTSY_PHONE_AUXVOICEMSGS2;
       
  5382 		indicators.iDataMsgs=DMMTSY_PHONE_DATAMSGS2;
       
  5383 		indicators.iFaxMsgs=DMMTSY_PHONE_FAXMSGS2;
       
  5384 		indicators.iEmailMsgs=DMMTSY_PHONE_EMAILMSGS2;
       
  5385 		indicators.iOtherMsgs=DMMTSY_PHONE_OTHERMSGS2;
       
  5386 		
       
  5387 		if(indicators.ExtensionId() == KEtelExtMultimodeV8)
       
  5388 			{
       
  5389 			RMobilePhone::TMobilePhoneMessageWaitingV8Pckg* indV8Pckg = STATIC_CAST(RMobilePhone::TMobilePhoneMessageWaitingV8Pckg*,aMsgIndicators);
       
  5390 			RMobilePhone::TMobilePhoneMessageWaitingV8& indicatorsV8 = (*indV8Pckg)();
       
  5391 			indicatorsV8.iVideoMsgs=DMMTSY_PHONE_VIDEOMSGS2;
       
  5392 			iNotifyIccMessageWaitingChange = 0;	
       
  5393 			} 
       
  5394 		AddDelayedReq(aTsyReqHandle,this);
       
  5395 		}
       
  5396 	else
       
  5397 		{
       
  5398 		//reset for multiple complete test
       
  5399 		iNotifyIccMessageWaitingChange = 0;		
       
  5400 		}	
       
  5401 	return KErrNone;
       
  5402 	}
       
  5403 
       
  5404 TInt CPhoneDMmTsy::NotifyIccMessageWaitingIndicatorsChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5405 	{
       
  5406 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyIccMessageWaitingIndicatorsChange called"));
       
  5407 	RemoveDelayedReq(aTsyReqHandle);
       
  5408 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5409 	return KErrNone;	
       
  5410 	}
       
  5411 
       
  5412 TInt CPhoneDMmTsy::GetFdnStatus(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneFdnStatus* aFdnStatus)
       
  5413 	{
       
  5414 	LOGTEXT(_L8("CPhoneDMmTsy::GetFdnStatus called"));
       
  5415 	*aFdnStatus = DMMTSY_PHONE_FDN_STATUS;
       
  5416 	AddDelayedReq(aTsyReqHandle,this);
       
  5417 	return KErrNone;
       
  5418 	}
       
  5419 
       
  5420 TInt CPhoneDMmTsy::GetFdnStatusCancel(const TTsyReqHandle aTsyReqHandle)
       
  5421 	{
       
  5422 	LOGTEXT(_L8("CPhoneDMmTsy::GetFdnStatusCancel called"));
       
  5423 	RemoveDelayedReq(aTsyReqHandle);
       
  5424 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5425 	return KErrNone;	
       
  5426 	}
       
  5427 
       
  5428 TInt CPhoneDMmTsy::SetFdnSetting(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneFdnSetting *aFdnSetting)
       
  5429 	{
       
  5430 	LOGTEXT(_L8("CPhoneDMmTsy::SetFdnSetting called"));
       
  5431 	if (*aFdnSetting != DMMTSY_PHONE_FDN_SETTING)
       
  5432 		ReqCompleted(aTsyReqHandle,KErrCorrupt);	
       
  5433 	else
       
  5434 		AddDelayedReq(aTsyReqHandle,this);
       
  5435 	return KErrNone;
       
  5436 	}
       
  5437 
       
  5438 TInt CPhoneDMmTsy::SetFdnSettingCancel(const TTsyReqHandle aTsyReqHandle)
       
  5439 	{
       
  5440 	LOGTEXT(_L8("CPhoneDMmTsy::SetFdnSettingCancel called"));
       
  5441 	RemoveDelayedReq(aTsyReqHandle);
       
  5442 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5443 	return KErrNone;	
       
  5444 	}
       
  5445 
       
  5446 TInt CPhoneDMmTsy::NotifyFdnStatusChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneFdnStatus* aFdnStatus)
       
  5447 	{
       
  5448 	if (!iNotifyFdnStatusChange++)
       
  5449 		{
       
  5450 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyFdnStatusChange called"));
       
  5451 		*aFdnStatus = DMMTSY_PHONE_FDN_STATUS;
       
  5452 		AddDelayedReq(aTsyReqHandle,this);
       
  5453 		}
       
  5454 	return KErrNone;
       
  5455 	}
       
  5456 
       
  5457 TInt CPhoneDMmTsy::NotifyFdnStatusChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5458 	{
       
  5459 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyFdnStatusChangeCancel called"));
       
  5460 	RemoveDelayedReq(aTsyReqHandle);
       
  5461 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5462 	return KErrNone;	
       
  5463 	}
       
  5464 
       
  5465 TInt CPhoneDMmTsy::GetMulticallParams(const TTsyReqHandle aTsyReqHandle, TDes8* aMulticallParams)
       
  5466 	{
       
  5467 	LOGTEXT(_L8("CPhoneDMmTsy::GetMulticallParams called"));
       
  5468 
       
  5469 	RMobilePhone::TMobilePhoneMulticallSettingsV1Pckg *multicallParamsPckg = REINTERPRET_CAST(RMobilePhone::TMobilePhoneMulticallSettingsV1Pckg *, aMulticallParams);
       
  5470 	RMobilePhone::TMobilePhoneMulticallSettingsV1     &multicallParams     = (*multicallParamsPckg)();
       
  5471 
       
  5472 	multicallParams.iUserMaxBearers              = DMMTSY_PHONE_USER_MAX_BEARERS1;
       
  5473 	multicallParams.iServiceProviderMaxBearers  = DMMTSY_PHONE_PROVIDER_MAX_BEARERS1;
       
  5474 	multicallParams.iNetworkSupportedMaxBearers = DMMTSY_PHONE_NETWORK_MAX_BEARERS1;
       
  5475 	multicallParams.iUESupportedMaxBearers      = DMMTSY_PHONE_UE_MAX_BEARERS1;
       
  5476 
       
  5477 	AddDelayedReq(aTsyReqHandle, this);
       
  5478 	return KErrNone;
       
  5479 	}
       
  5480 
       
  5481 TInt CPhoneDMmTsy::SetMulticallParams(const TTsyReqHandle aTsyReqHandle, TInt* aUserMaxBearers)
       
  5482 	{
       
  5483 	LOGTEXT(_L8("CPhoneDMmTsy::SetMulticallParams called"));
       
  5484 
       
  5485 	if (*aUserMaxBearers != DMMTSY_PHONE_USER_MAX_BEARERS1)
       
  5486 		ReqCompleted(aTsyReqHandle, KErrCorrupt);
       
  5487 	else
       
  5488 		AddDelayedReq(aTsyReqHandle,this);
       
  5489 	return KErrNone;
       
  5490 	}
       
  5491 
       
  5492 TInt CPhoneDMmTsy::GetMulticallParamsCancel(const TTsyReqHandle aTsyReqHandle)
       
  5493 	{
       
  5494 	LOGTEXT(_L8("CPhoneDMmTsy::GetMulticallParamsCancel called"));
       
  5495 
       
  5496 	RemoveDelayedReq(aTsyReqHandle);
       
  5497 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5498 	return KErrNone;
       
  5499 	}
       
  5500 
       
  5501 TInt CPhoneDMmTsy::SetMulticallParamsCancel(const TTsyReqHandle aTsyReqHandle)
       
  5502 	{
       
  5503 	LOGTEXT(_L8("CPhoneDMmTsy::SetMulticallParamsCancel called"));
       
  5504 
       
  5505 	RemoveDelayedReq(aTsyReqHandle);
       
  5506 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5507 	return KErrNone;
       
  5508 	}
       
  5509 	
       
  5510 TInt CPhoneDMmTsy::NotifyMulticallParamsChange(const TTsyReqHandle aTsyReqHandle, TDes8* aMulticallParams)
       
  5511 	{
       
  5512 	if (!iNotifyMulticallParamsChange++)
       
  5513 		{
       
  5514 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyMulticallParamsChange called"));
       
  5515 
       
  5516 		RMobilePhone::TMobilePhoneMulticallSettingsV1Pckg *multicallParamsPckg = REINTERPRET_CAST(RMobilePhone::TMobilePhoneMulticallSettingsV1Pckg *, aMulticallParams);
       
  5517 		RMobilePhone::TMobilePhoneMulticallSettingsV1     &multicallParams     = (*multicallParamsPckg)();
       
  5518 
       
  5519 		multicallParams.iUserMaxBearers              = DMMTSY_PHONE_USER_MAX_BEARERS2;
       
  5520 		multicallParams.iServiceProviderMaxBearers  = DMMTSY_PHONE_PROVIDER_MAX_BEARERS2;
       
  5521 		multicallParams.iNetworkSupportedMaxBearers = DMMTSY_PHONE_NETWORK_MAX_BEARERS2;
       
  5522 		multicallParams.iUESupportedMaxBearers      = DMMTSY_PHONE_UE_MAX_BEARERS2;		
       
  5523 
       
  5524 		AddDelayedReq(aTsyReqHandle,this);
       
  5525 		}
       
  5526 	return KErrNone;
       
  5527 	}
       
  5528 
       
  5529 TInt CPhoneDMmTsy::NotifyMulticallParamsChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5530 	{
       
  5531 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyMulticallParamsChangeCancel called"));
       
  5532 	
       
  5533 	RemoveDelayedReq(aTsyReqHandle);
       
  5534 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5535 	return KErrNone;
       
  5536 	}
       
  5537 
       
  5538 TInt CPhoneDMmTsy::GetIncomingCallType(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneIncomingCallType* aCallType, TDes8* aDataParams)
       
  5539 	{
       
  5540 	LOGTEXT(_L8("CPhoneDMmTsy::GetIncomingCallType called"));
       
  5541 
       
  5542 	RMobileCall::TMobileDataCallParamsV1Pckg *dataParamsPckgV1 = REINTERPRET_CAST(RMobileCall::TMobileDataCallParamsV1Pckg*, aDataParams);
       
  5543 	RMobileCall::TMobileDataCallParamsV1     &dataParamsV1     = (*dataParamsPckgV1)();
       
  5544 
       
  5545 	dataParamsV1.iService = DMMTSY_DATA_CALL_SERVICE;
       
  5546 	dataParamsV1.iSpeed = DMMTSY_DATA_CALL_SPEED;
       
  5547 	dataParamsV1.iProtocol = DMMTSY_DATA_CALL_PROTOCOL;
       
  5548 	dataParamsV1.iQoS = DMMTSY_DATA_CALL_QOS;
       
  5549 	dataParamsV1.iRLPVersion = DMMTSY_DATA_CALL_RLP;
       
  5550 	dataParamsV1.iV42bisReq = DMMTSY_DATA_CALL_V42BIS;
       
  5551  	dataParamsV1.iUseEdge = DMMTSY_DATA_CALL_EGPRS_REQUIRED;
       
  5552 
       
  5553 	*aCallType = DMMTSY_PHONE_INCOMING_CALL_TYPES;
       
  5554 
       
  5555 	AddDelayedReq(aTsyReqHandle, this);
       
  5556 	return KErrNone;
       
  5557 	}
       
  5558 
       
  5559 TInt CPhoneDMmTsy::GetIncomingCallTypeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5560 	{
       
  5561 	LOGTEXT(_L8("CPhoneDMmTsy::GetIncomingCallTypeCancel called"));
       
  5562 
       
  5563 	RemoveDelayedReq(aTsyReqHandle);
       
  5564 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5565 	return KErrNone;
       
  5566 
       
  5567 	}
       
  5568 
       
  5569 TInt CPhoneDMmTsy::SetIncomingCallType(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneIncomingCallType* aCallType, TDes8* aDataParams)
       
  5570 	{
       
  5571 	LOGTEXT(_L8("CPhoneDMmTsy::SetIncomingCallType called"));
       
  5572 
       
  5573 	RMobileCall::TMobileDataCallParamsV1Pckg *dataParamsPckgV1 = REINTERPRET_CAST(RMobileCall::TMobileDataCallParamsV1Pckg*, aDataParams);
       
  5574 	RMobileCall::TMobileDataCallParamsV1     &dataParamsV1     = (*dataParamsPckgV1)();
       
  5575 
       
  5576 	if ((*aCallType != DMMTSY_PHONE_INCOMING_CALL_TYPES) ||
       
  5577 		(dataParamsV1.iService != DMMTSY_DATA_CALL_SERVICE) ||
       
  5578 		(dataParamsV1.iSpeed != DMMTSY_DATA_CALL_SPEED) ||
       
  5579 		(dataParamsV1.iProtocol != DMMTSY_DATA_CALL_PROTOCOL) ||
       
  5580 		(dataParamsV1.iQoS != DMMTSY_DATA_CALL_QOS) || 
       
  5581 		(dataParamsV1.iRLPVersion != DMMTSY_DATA_CALL_RLP) ||
       
  5582 		(dataParamsV1.iV42bisReq != DMMTSY_DATA_CALL_V42BIS) ||
       
  5583  		(dataParamsV1.iUseEdge != DMMTSY_DATA_CALL_EGPRS_REQUIRED))
       
  5584 
       
  5585 		ReqCompleted(aTsyReqHandle, KErrCorrupt);
       
  5586 	else
       
  5587 		AddDelayedReq(aTsyReqHandle,this);
       
  5588 	return KErrNone;
       
  5589 	}
       
  5590 
       
  5591 TInt CPhoneDMmTsy::SetIncomingCallTypeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5592 	{
       
  5593 	LOGTEXT(_L8("CPhoneDMmTsy::SetIncomingCallTypeCancel called"));
       
  5594 
       
  5595 	RemoveDelayedReq(aTsyReqHandle);
       
  5596 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5597 	return KErrNone;
       
  5598 
       
  5599 	}
       
  5600 
       
  5601 TInt CPhoneDMmTsy::NotifyIncomingCallTypeChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneIncomingCallType* aCallType, TDes8* aDataParams)
       
  5602 	{
       
  5603 	if (!iNotifyIncomingCallTypeChange++)
       
  5604 		{
       
  5605 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyIncomingCallTypeChange called"));
       
  5606 
       
  5607 		RMobileCall::TMobileDataCallParamsV1Pckg *dataParamsPckg = REINTERPRET_CAST(RMobileCall::TMobileDataCallParamsV1Pckg*, aDataParams);
       
  5608 		RMobileCall::TMobileDataCallParamsV1     &dataParams     = (*dataParamsPckg)();
       
  5609 
       
  5610 		if(dataParams.ExtensionId() == RMobileCall::KETelMobileDataCallParamsV2)
       
  5611 			{
       
  5612 			RMobileCall::TMobileDataCallParamsV2Pckg *dataParamsPckgV2 = REINTERPRET_CAST(RMobileCall::TMobileDataCallParamsV2Pckg*, aDataParams);
       
  5613 			RMobileCall::TMobileDataCallParamsV2     &dataParamsV2     = (*dataParamsPckgV2)();
       
  5614 			dataParamsV2.iBearerMode = DMMTSY_PHONE_MULTICALLBEARERMODE_NOTSUPPORTED;
       
  5615 			//reset for V1
       
  5616 			iNotifyIncomingCallTypeChange = 0;
       
  5617 			}
       
  5618 		dataParams.iService = DMMTSY_DATA_CALL_SERVICE1;
       
  5619 		dataParams.iSpeed = DMMTSY_DATA_CALL_SPEED1;
       
  5620 		dataParams.iProtocol = DMMTSY_DATA_CALL_PROTOCOL1;
       
  5621 		dataParams.iQoS = DMMTSY_DATA_CALL_QOS1;
       
  5622 		dataParams.iRLPVersion = DMMTSY_DATA_CALL_RLP1;
       
  5623 		dataParams.iV42bisReq = DMMTSY_DATA_CALL_V42BIS1;
       
  5624  		dataParams.iUseEdge = DMMTSY_DATA_CALL_EGPRS_NOTREQUIRED;
       
  5625 
       
  5626 		*aCallType = DMMTSY_PHONE_INCOMING_CALL_TYPES1;
       
  5627 		
       
  5628 		AddDelayedReq(aTsyReqHandle,this);
       
  5629 		}
       
  5630 	else
       
  5631 		{
       
  5632 		//reset for multiple complete test
       
  5633 		iNotifyIncomingCallTypeChange = 0;
       
  5634 		}
       
  5635 	return KErrNone;
       
  5636 	}
       
  5637 
       
  5638 TInt CPhoneDMmTsy::NotifyIncomingCallTypeChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5639 	{
       
  5640 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyIncomingCallTypeChangeCancel called"));
       
  5641 	
       
  5642 	RemoveDelayedReq(aTsyReqHandle);
       
  5643 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5644 	return KErrNone;
       
  5645 	}
       
  5646 
       
  5647 TInt CPhoneDMmTsy::GetUUSSetting(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneUUSSetting* aSetting)
       
  5648 	{
       
  5649 	LOGTEXT(_L8("CPhoneDMmTsy::GetUUSSetting called"));
       
  5650 
       
  5651 	*aSetting = DMMTSY_PHONE_UUS_SETTING1;
       
  5652 
       
  5653 	AddDelayedReq(aTsyReqHandle, this);
       
  5654 	return KErrNone;
       
  5655 	}
       
  5656 
       
  5657 TInt CPhoneDMmTsy::GetUUSSettingCancel(const TTsyReqHandle aTsyReqHandle)
       
  5658 	{
       
  5659 	LOGTEXT(_L8("CPhoneDMmTsy::GetUUSSettingCancel called"));
       
  5660 
       
  5661 	RemoveDelayedReq(aTsyReqHandle);
       
  5662 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5663 	return KErrNone;
       
  5664 	}
       
  5665 
       
  5666 TInt CPhoneDMmTsy::SetUUSSetting(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneUUSSetting* aSetting)
       
  5667 	{
       
  5668 	LOGTEXT(_L8("CPhoneDMmTsy::SetUUSSetting called"));
       
  5669 
       
  5670 	if(*aSetting != DMMTSY_PHONE_UUS_SETTING2)
       
  5671 		ReqCompleted(aTsyReqHandle, KErrCorrupt);
       
  5672 	else
       
  5673 		AddDelayedReq(aTsyReqHandle,this);
       
  5674 	return KErrNone;
       
  5675 	}
       
  5676 
       
  5677 TInt CPhoneDMmTsy::SetUUSSettingCancel(const TTsyReqHandle aTsyReqHandle)
       
  5678 	{
       
  5679 	LOGTEXT(_L8("CPhoneDMmTsy::SetUUSSettingCancel called"));
       
  5680 
       
  5681 	RemoveDelayedReq(aTsyReqHandle);
       
  5682 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5683 	return KErrNone;
       
  5684 	}
       
  5685 
       
  5686 TInt CPhoneDMmTsy::NotifyUUSSettingChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneUUSSetting* aSetting)
       
  5687 	{
       
  5688 	if (!iNotifyUUSSettingChange++)
       
  5689 		{
       
  5690 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyUUSSettingChange called"));
       
  5691 
       
  5692 		*aSetting = DMMTSY_PHONE_UUS_SETTING2;
       
  5693 
       
  5694 		AddDelayedReq(aTsyReqHandle,this);
       
  5695 		}
       
  5696 	return KErrNone;
       
  5697 	}
       
  5698 
       
  5699 TInt CPhoneDMmTsy::NotifyUUSSettingChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5700 	{
       
  5701 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyUUSSettingChangeCancel called"));
       
  5702 
       
  5703 	RemoveDelayedReq(aTsyReqHandle);
       
  5704 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5705 	return KErrNone;
       
  5706 	}
       
  5707 
       
  5708 TInt CPhoneDMmTsy::GetMultimediaCallPreference(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneMultimediaSettings* aSetting)
       
  5709 	{
       
  5710 	LOGTEXT(_L8("CPhoneDMmTsy::GetMultimediaCallPreference called"));
       
  5711 
       
  5712 	*aSetting = DMMTSY_PHONE_MM_SETTING;
       
  5713 
       
  5714 	AddDelayedReq(aTsyReqHandle,this);
       
  5715 	return KErrNone;
       
  5716 	}
       
  5717 
       
  5718 TInt CPhoneDMmTsy::SetMultimediaCallPreference(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneMultimediaSettings* aSetting)
       
  5719 	{
       
  5720 	LOGTEXT(_L8("CPhoneDMmTsy::SetMultimediaCallPreference called"));
       
  5721 
       
  5722 	if(*aSetting != DMMTSY_PHONE_MM_SETTING)
       
  5723 		ReqCompleted(aTsyReqHandle, KErrCorrupt);
       
  5724 	else
       
  5725 		AddDelayedReq(aTsyReqHandle,this);
       
  5726 	return KErrNone;
       
  5727 	}
       
  5728 
       
  5729 TInt CPhoneDMmTsy::SetMultimediaCallPreferenceCancel(const TTsyReqHandle aTsyReqHandle)
       
  5730 	{
       
  5731 	LOGTEXT(_L8("CPhoneDMmTsy::SetMultimediaCallPreferenceCancel called"));
       
  5732 
       
  5733 	RemoveDelayedReq(aTsyReqHandle);
       
  5734 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5735 	return KErrNone;
       
  5736 	}
       
  5737 
       
  5738 TInt CPhoneDMmTsy::NotifyMultimediaCallPreferenceChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneMultimediaSettings* aSetting)
       
  5739 	{
       
  5740 	if (!iNotifyMmCallPrefChange++)
       
  5741 		{
       
  5742 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyMultimediaCallPreferenceChange called"));
       
  5743 
       
  5744 		*aSetting = DMMTSY_PHONE_MM_SETTING_2;
       
  5745 
       
  5746 		AddDelayedReq(aTsyReqHandle,this);
       
  5747 		}
       
  5748 	return KErrNone;
       
  5749 	}
       
  5750 
       
  5751 TInt CPhoneDMmTsy::NotifyMultimediaCallPreferenceChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5752 	{
       
  5753 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyMultimediaCallPreferenceChangeCancel called"));
       
  5754 
       
  5755 	RemoveDelayedReq(aTsyReqHandle);
       
  5756 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5757 	return KErrNone;
       
  5758 	}
       
  5759 
       
  5760 TInt CPhoneDMmTsy::GetNetworkSecurityLevel(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneNetworkSecurity* aSecurity)
       
  5761 	{
       
  5762 
       
  5763 	LOGTEXT(_L8("CPhoneDMmTsy::GetNetworkSecurityLevel called"));
       
  5764 
       
  5765 	*aSecurity = DMMTSY_PHONE_NET_SECURITY;
       
  5766 
       
  5767 	AddDelayedReq(aTsyReqHandle,this);
       
  5768 	return KErrNone;
       
  5769 	}
       
  5770 
       
  5771 TInt CPhoneDMmTsy::GetNetworkSecurityLevelCancel(const TTsyReqHandle aTsyReqHandle)
       
  5772 	{
       
  5773 	LOGTEXT(_L8("CPhoneDMmTsy::GetNetworkSecurityLevelCancel called"));
       
  5774 
       
  5775 	RemoveDelayedReq(aTsyReqHandle);
       
  5776 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5777 	return KErrNone;
       
  5778 	}
       
  5779 
       
  5780 TInt CPhoneDMmTsy::NotifyNetworkSecurityLevelChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneNetworkSecurity* aSecurity)
       
  5781 	{
       
  5782 
       
  5783 	if (!iNotifyNetworkSecurityChange++)
       
  5784 		{
       
  5785 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyNetworkSecurityLevelChange called"));
       
  5786 	
       
  5787 		*aSecurity = DMMTSY_PHONE_NET_SECURITY;
       
  5788 
       
  5789 		AddDelayedReq(aTsyReqHandle,this);
       
  5790 		}
       
  5791 	return KErrNone;
       
  5792 	}
       
  5793 
       
  5794 TInt CPhoneDMmTsy::NotifyNetworkSecurityLevelChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5795 	{
       
  5796 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyNetworkSecurityLevelChangeCancel called"));
       
  5797 
       
  5798 	RemoveDelayedReq(aTsyReqHandle);
       
  5799 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5800 	return KErrNone;
       
  5801 	}
       
  5802 
       
  5803 TInt CPhoneDMmTsy::EnumerateUSimApplications(const TTsyReqHandle aTsyReqHandle, TInt* aCount, RMobilePhone::TAID* aActiveAID)
       
  5804 	{
       
  5805 	LOGTEXT(_L8("CPhoneDMmTsy::EnumerateUSimApplications called"));
       
  5806 
       
  5807 	*aCount = DMMTSY_PHONE_USIM_COUNT;
       
  5808 	aActiveAID->Copy(DMMTSY_PHONE_USIM_AID);
       
  5809 	AddDelayedReq(aTsyReqHandle,this);
       
  5810 	return KErrNone;
       
  5811 	}
       
  5812 
       
  5813 TInt CPhoneDMmTsy::EnumerateUSimApplicationsCancel(const TTsyReqHandle aTsyReqHandle)
       
  5814 	{
       
  5815 	LOGTEXT(_L8("CPhoneDMmTsy::EnumerateUSimApplicationsCancel called"));
       
  5816 
       
  5817 	RemoveDelayedReq(aTsyReqHandle);
       
  5818 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5819 	return KErrNone;
       
  5820 	}
       
  5821 
       
  5822 TInt CPhoneDMmTsy::SetUSimApplicationStatus(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TAID* aAID, RMobilePhone::TUSimAppAction* aAction)
       
  5823 	{
       
  5824 	LOGTEXT(_L8("CPhoneDMmTsy::SetUSimApplicationStatus called"));
       
  5825 
       
  5826 	if ((*aAction != DMMTSY_PHONE_USIM_ACTIVATE) ||
       
  5827 		(aAID->Compare(DMMTSY_PHONE_USIM_AID) !=0 ))
       
  5828 		ReqCompleted(aTsyReqHandle, KErrCorrupt);
       
  5829 	else
       
  5830 		AddDelayedReq(aTsyReqHandle,this);
       
  5831 	return KErrNone;
       
  5832 	}
       
  5833 
       
  5834 TInt CPhoneDMmTsy::SetUSimApplicationStatusCancel(const TTsyReqHandle aTsyReqHandle)
       
  5835 	{
       
  5836 	LOGTEXT(_L8("CPhoneDMmTsy::SetUSimApplicationStatusCancel called"));
       
  5837 
       
  5838 	RemoveDelayedReq(aTsyReqHandle);
       
  5839 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5840 	return KErrNone;
       
  5841 	}
       
  5842 
       
  5843 
       
  5844 TInt CPhoneDMmTsy::GetUSimApplicationInfo(const TTsyReqHandle aTsyReqHandle, TInt* aIndex, RMobilePhone::TUSimApplicationInfoV2* aInfo)
       
  5845 	{
       
  5846 
       
  5847 	LOGTEXT(_L8("CPhoneDMmTsy::GetUSimApplicationInfo called"));
       
  5848 
       
  5849 	if(*aIndex != DMMTSY_PHONE_USIM_APPINDEX)
       
  5850 		ReqCompleted(aTsyReqHandle, KErrCorrupt);
       
  5851 	else
       
  5852 		{
       
  5853 		aInfo->iLabel.Copy(DMMTSY_PHONE_USIM_APPLABEL);
       
  5854 		aInfo->iAID.Copy(DMMTSY_PHONE_USIM_AID);
       
  5855 		AddDelayedReq(aTsyReqHandle,this);
       
  5856 		}
       
  5857 	return KErrNone;
       
  5858 	}
       
  5859 
       
  5860 TInt CPhoneDMmTsy::GetUSimApplicationInfoCancel(const TTsyReqHandle aTsyReqHandle)
       
  5861 	{
       
  5862 	LOGTEXT(_L8("CPhoneDMmTsy::GetUSimApplicationInfoCancel called"));
       
  5863 
       
  5864 	RemoveDelayedReq(aTsyReqHandle);
       
  5865 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5866 	return KErrNone;
       
  5867 	}
       
  5868 
       
  5869 TInt CPhoneDMmTsy::NotifyUSimApplicationsInfoChange(const TTsyReqHandle aTsyReqHandle, TInt* aCount, RMobilePhone::TAID* aActiveAID)
       
  5870 	{
       
  5871 	if (!iNotifyUSimApplicationsInfoChange++)
       
  5872 		{
       
  5873 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyUSimApplicationsInfoChange called"));
       
  5874 		
       
  5875 		aActiveAID->Copy(DMMTSY_PHONE_USIM_AID);
       
  5876 		*aCount = DMMTSY_PHONE_USIM_COUNT;
       
  5877 
       
  5878 		AddDelayedReq(aTsyReqHandle,this);
       
  5879 		}
       
  5880 	return KErrNone;
       
  5881 	}
       
  5882 
       
  5883 TInt CPhoneDMmTsy::NotifyUSimApplicationsInfoChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5884 	{
       
  5885 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyUSimApplicationsInfoChangeCancel called"));
       
  5886 
       
  5887 	RemoveDelayedReq(aTsyReqHandle);
       
  5888 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5889 	return KErrNone;
       
  5890 	}
       
  5891 
       
  5892 TInt CPhoneDMmTsy::GetUSimAppsSelectionMode(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TUSimSelectionMode* aMode)
       
  5893 	{
       
  5894 	LOGTEXT(_L8("CPhoneDMmTsy::GetUSimAppsSelectionMode called"));
       
  5895 
       
  5896 	*aMode = DMMTSY_PHONE_USIM_SELMODE;
       
  5897 
       
  5898 	AddDelayedReq(aTsyReqHandle,this);
       
  5899 	return KErrNone;
       
  5900 	}
       
  5901 
       
  5902 TInt CPhoneDMmTsy::SetUSimAppsSelectionMode(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TUSimSelectionMode* aMode)
       
  5903 	{
       
  5904 	LOGTEXT(_L8("CPhoneDMmTsy::SetUSimAppsSelectionMode called"));
       
  5905 
       
  5906 	if(*aMode != DMMTSY_PHONE_USIM_SELMODE)
       
  5907 		ReqCompleted(aTsyReqHandle, KErrCorrupt);
       
  5908 	else
       
  5909 		AddDelayedReq(aTsyReqHandle,this);
       
  5910 	return KErrNone;
       
  5911 	}
       
  5912 
       
  5913 TInt CPhoneDMmTsy::NotifyUSimAppsSelectionModeChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TUSimSelectionMode* aMode)
       
  5914 	{
       
  5915 	if (!iNotifyUSimAppsSelectionModeChange++)
       
  5916 		{
       
  5917 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyUSimAppsSelectionModeChange called"));
       
  5918 
       
  5919 		*aMode = DMMTSY_PHONE_USIM_SELMODE;
       
  5920 
       
  5921 		AddDelayedReq(aTsyReqHandle,this);
       
  5922 		}
       
  5923 	return KErrNone;
       
  5924 	}
       
  5925 
       
  5926 TInt CPhoneDMmTsy::NotifyUSimAppsSelectionModeChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5927 	{
       
  5928 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyUSimAppsSelectionModeChangeCancel called"));
       
  5929 
       
  5930 	RemoveDelayedReq(aTsyReqHandle);
       
  5931 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5932 	return KErrNone;
       
  5933 	}
       
  5934 	
       
  5935 TInt CPhoneDMmTsy::GetMailboxNumbers(const TTsyReqHandle aTsyReqHandle, TDes8 *aMailBox)
       
  5936 	{
       
  5937 	RMobilePhone::TMobilePhoneVoicemailIdsV3Pckg *mailboxPckg = REINTERPRET_CAST(RMobilePhone::TMobilePhoneVoicemailIdsV3Pckg*, aMailBox);
       
  5938 	RMobilePhone::TMobilePhoneVoicemailIdsV3 &mailbox     = (*mailboxPckg)();
       
  5939 		
       
  5940 	LOGTEXT(_L8("CPhoneDMmTsy::GetMailboxNumbers called"));
       
  5941 	mailbox.iVoice = DMMTSY_PHONE_MAILBOXNUMBER_VOICE;
       
  5942 	mailbox.iData = DMMTSY_PHONE_MAILBOXNUMBER_DATA;
       
  5943 	mailbox.iFax = DMMTSY_PHONE_MAILBOXNUMBER_FAX;
       
  5944 	mailbox.iOther = DMMTSY_PHONE_MAILBOXNUMBER_OTHER;
       
  5945 		
       
  5946 	if(mailbox.ExtensionId() == KEtelExtMultimodeV8 )
       
  5947 		{
       
  5948 		RMobilePhone::TMobilePhoneVoicemailIdsV8Pckg *mailboxV8Pckg = REINTERPRET_CAST(RMobilePhone::TMobilePhoneVoicemailIdsV8Pckg*, aMailBox);
       
  5949 		RMobilePhone::TMobilePhoneVoicemailIdsV8 &mailboxV8     = (*mailboxV8Pckg)();
       
  5950 		LOGTEXT(_L8("CPhoneDMmTsy::GetMailboxNumbers V8 class is called"));
       
  5951 		mailboxV8.iVideo = DMMTSY_PHONE_MAILBOXNUMBER_VIDEO;
       
  5952 		}
       
  5953 	AddDelayedReq(aTsyReqHandle,this);
       
  5954 	return KErrNone;	
       
  5955 	}
       
  5956 
       
  5957 	
       
  5958 TInt CPhoneDMmTsy::GetMailboxNumbersCancel(const TTsyReqHandle aTsyReqHandle)
       
  5959 	{
       
  5960 	LOGTEXT(_L8("CPhoneDMmTsy::GetMailboxNumbersCancel called"));
       
  5961 	RemoveDelayedReq(aTsyReqHandle);
       
  5962 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  5963 	return KErrNone;
       
  5964 	}
       
  5965 	
       
  5966 TInt CPhoneDMmTsy::NotifyMailboxNumbersChange(const TTsyReqHandle aTsyReqHandle, TDes8 *aMailBox)
       
  5967 	
       
  5968 	{
       
  5969 	RMobilePhone::TMobilePhoneVoicemailIdsV3Pckg *mailboxPckg = REINTERPRET_CAST(RMobilePhone::TMobilePhoneVoicemailIdsV3Pckg*, aMailBox);
       
  5970 	RMobilePhone::TMobilePhoneVoicemailIdsV3 &mailbox     = (*mailboxPckg)();
       
  5971 	
       
  5972 	if (!iNotifyMailBoxNumbersChange++)
       
  5973 		{
       
  5974 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyMailboxNumbersChange called"));
       
  5975 		mailbox.iVoice = DMMTSY_PHONE_MAILBOXNUMBER_VOICE;
       
  5976 		mailbox.iData = DMMTSY_PHONE_MAILBOXNUMBER_DATA;
       
  5977 		mailbox.iFax = DMMTSY_PHONE_MAILBOXNUMBER_FAX;
       
  5978 		mailbox.iOther = DMMTSY_PHONE_MAILBOXNUMBER_OTHER;
       
  5979 		
       
  5980 		if(mailbox.ExtensionId() == KEtelExtMultimodeV8)
       
  5981 			{
       
  5982 			RMobilePhone::TMobilePhoneVoicemailIdsV8Pckg *mailboxPckg = REINTERPRET_CAST(RMobilePhone::TMobilePhoneVoicemailIdsV8Pckg*, aMailBox);
       
  5983 			RMobilePhone::TMobilePhoneVoicemailIdsV8 &mailbox     = (*mailboxPckg)();
       
  5984 			mailbox.iVideo = DMMTSY_PHONE_MAILBOXNUMBER_VIDEO;
       
  5985 			iNotifyMailBoxNumbersChange=0;
       
  5986 			}
       
  5987 		AddDelayedReq(aTsyReqHandle,this);
       
  5988 		}
       
  5989 	else
       
  5990 		{
       
  5991 		iNotifyMailBoxNumbersChange=0;		
       
  5992 		}
       
  5993 
       
  5994 	return KErrNone;
       
  5995 	}
       
  5996 	
       
  5997 TInt CPhoneDMmTsy::NotifyMailboxNumbersChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  5998 	{
       
  5999 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyMailboxNumbersChangeCancel called"));
       
  6000 	RemoveDelayedReq(aTsyReqHandle);
       
  6001 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6002 	return KErrNone;
       
  6003 	}
       
  6004 
       
  6005 TInt CPhoneDMmTsy::NotifyMmsUpdate(const TTsyReqHandle aTsyReqHandle, TDes8 *aNotification)
       
  6006 	{
       
  6007 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyMmsUpdate called"));
       
  6008 
       
  6009 	RMobilePhone::TMmsNotificationV3Pckg *mmsPckg = REINTERPRET_CAST(RMobilePhone::TMmsNotificationV3Pckg *, aNotification);
       
  6010 	RMobilePhone::TMmsNotificationV3 &mms = (*mmsPckg)();
       
  6011 
       
  6012 	if (!iNotifyMmsUpdate++)
       
  6013 		{
       
  6014 		mms.iSpace = DMMTSY_PHONE_MMS_UPDATE_SPACE;
       
  6015 		mms.iNotification = DMMTSY_PHONE_MMS_UPDATE_NOTIFICATION;
       
  6016 		mms.iMmsStatus = DMMTSY_PHONE_MMS_UPDATE_STATUS;
       
  6017 		mms.iImplementation = DMMTSY_PHONE_MMS_UPDATE_IMPLEMENTATION;
       
  6018 		mms.iNotify = DMMTSY_PHONE_MMS_UPDATE_NOTIFY;
       
  6019 		AddDelayedReq(aTsyReqHandle,this);
       
  6020 		}
       
  6021 	return KErrNone;
       
  6022 	}
       
  6023 	
       
  6024 TInt CPhoneDMmTsy::GetAirTimeDuration(const TTsyReqHandle aTsyReqHandle, TTimeIntervalSeconds* aTime)
       
  6025 	{
       
  6026 	LOGTEXT(_L8("CPhoneDMmTsy::GetAirTimeDuration called"));
       
  6027 	*aTime=DMMTSY_AIR_TIME_DURATION1;
       
  6028 	ReqCompleted(aTsyReqHandle,KErrNone);
       
  6029 	return KErrNone;
       
  6030 	}
       
  6031 	
       
  6032 TInt CPhoneDMmTsy::NotifyAirTimeDurationChange(const TTsyReqHandle aTsyReqHandle, TTimeIntervalSeconds* aTime)
       
  6033 	{
       
  6034 	if (!iNotifyAirTimeChangeChange++)
       
  6035 		{
       
  6036 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyAirTimeDurationChange called"));
       
  6037 		*aTime=DMMTSY_AIR_TIME_DURATION2;
       
  6038 		AddDelayedReq(aTsyReqHandle,this);
       
  6039 		}
       
  6040 	return KErrNone;
       
  6041 	}
       
  6042 
       
  6043 TInt CPhoneDMmTsy::NotifyAirTimeDurationChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  6044 	{
       
  6045 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyAirTimeDurationChangeCancel called"));
       
  6046 	RemoveDelayedReq(aTsyReqHandle);
       
  6047 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6048 	return KErrNone;
       
  6049 	}
       
  6050 	
       
  6051 TInt CPhoneDMmTsy::TerminateAllCalls(const TTsyReqHandle aTsyReqHandle)
       
  6052 	{
       
  6053 	LOGTEXT(_L8("CPhoneDMmTsy::TerminateAllCalls called"));
       
  6054 	if (!iTerminateAllCalls++)
       
  6055 		{
       
  6056 		//Just return KErrNone
       
  6057 		ReqCompleted(aTsyReqHandle,KErrNone);
       
  6058 		}
       
  6059 	return KErrNone;
       
  6060 	}
       
  6061 	
       
  6062 TInt CPhoneDMmTsy::TerminateAllCallsCancel(const TTsyReqHandle aTsyReqHandle)
       
  6063 	{
       
  6064 	LOGTEXT(_L8("CPhoneDMmTsy::TerminateAllCallsCancel called"));
       
  6065 	RemoveDelayedReq(aTsyReqHandle);
       
  6066 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6067 	return KErrNone;
       
  6068 	}
       
  6069 
       
  6070  TInt CPhoneDMmTsy::NotifySendNetworkServiceRequest(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneNotifySendSSOperation* aOperation, TDes8* aRequestComplete)
       
  6071  	{
       
  6072  	LOGTEXT(_L8("CPhoneDMmTsy::NotifySendNetworkServiceRequest called"));
       
  6073 	if (!iNotifySendNetworkServiceRequest++)
       
  6074 		{
       
  6075 		RMobilePhone::TMobilePhoneSendSSRequestV3Pckg* ssRequestPckg = REINTERPRET_CAST(RMobilePhone::TMobilePhoneSendSSRequestV3Pckg*,aRequestComplete);
       
  6076 		RMobilePhone::TMobilePhoneSendSSRequestV3& ssRequest = (*ssRequestPckg)();
       
  6077 			
       
  6078 		if(*aOperation!=DMMTSY_PHONE_NOTIFY_SERVICEREQUEST || 
       
  6079 			ssRequest.ExtensionId()!=KETelExtMultimodeV3)
       
  6080 			ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  6081 		else
       
  6082 			{	
       
  6083 			ssRequest.iOpCode = DMMTSY_PHONE_NOTIFY_OPCODE;
       
  6084 			ssRequest.iAdditionalInfo = DMMTSY_PHONE_NOTIFY_ADDINFO;			
       
  6085 			ReqCompleted(aTsyReqHandle,KErrNone);
       
  6086 			}
       
  6087 		}	
       
  6088 	return KErrNone;
       
  6089  	}
       
  6090  
       
  6091  TInt CPhoneDMmTsy::NotifySendNetworkServiceRequestCancel(const TTsyReqHandle aTsyReqHandle)
       
  6092 	{
       
  6093 	LOGTEXT(_L8("CPhoneDMmTsy::NotifySendNetworkServiceRequestCancel called"));
       
  6094 	RemoveDelayedReq(aTsyReqHandle);
       
  6095 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6096 	return KErrNone;
       
  6097 	}
       
  6098 	
       
  6099  TInt CPhoneDMmTsy::NotifyAllSendNetworkServiceRequest(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneNotifySendSSOperation* aOperation, TDes8* aRequestComplete)
       
  6100  	{
       
  6101  	LOGTEXT(_L8("CPhoneDMmTsy::NotifyAllSendNetworkServiceRequest called"));
       
  6102 	
       
  6103 	RMobilePhone::TMobilePhoneSendSSRequestV3Pckg* ssRequestPckg = REINTERPRET_CAST(RMobilePhone::TMobilePhoneSendSSRequestV3Pckg*,aRequestComplete);
       
  6104 	RMobilePhone::TMobilePhoneSendSSRequestV3& ssRequest = (*ssRequestPckg)();
       
  6105 			
       
  6106 	if(ssRequest.ExtensionId()!=KETelExtMultimodeV3)
       
  6107 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  6108 	else
       
  6109 		{
       
  6110 		//Return the error for some Invoke operation, like received from network.
       
  6111 		*aOperation = DMMTSY_PHONE_NOTIFY_SERVICEREQUEST_ERROR;
       
  6112 		//Return result problem code (return Mistyped Parameter)
       
  6113 		ssRequest.iOpCode = DMMTSY_PHONE_NOTIFY_RETURN_ERROR_PROBLEM_CODE;
       
  6114 		ssRequest.iAdditionalInfo = DMMTSY_PHONE_NOTIFY_ADDINFO;
       
  6115 		AddDelayedReq(aTsyReqHandle, this);
       
  6116 		}				
       
  6117 	
       
  6118 	return KErrNone;
       
  6119  	}
       
  6120  	
       
  6121  TInt CPhoneDMmTsy::NotifyAllSendNetworkServiceRequestCancel(const TTsyReqHandle aTsyReqHandle)
       
  6122 	{
       
  6123 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyAllSendNetworkServiceRequestCancel called"));
       
  6124 	RemoveDelayedReq(aTsyReqHandle);
       
  6125 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6126 	return KErrNone;
       
  6127 	}
       
  6128 
       
  6129  TInt CPhoneDMmTsy::ClearBlacklist(const TTsyReqHandle aTsyReqHandle)
       
  6130  	{
       
  6131 	LOGTEXT(_L8("CPhoneDMmTsy::ClearBlacklist called"));
       
  6132 	if (!iClearBlacklist++)
       
  6133 		{
       
  6134 		//Just return KErrNone
       
  6135 		ReqCompleted(aTsyReqHandle,KErrNone);
       
  6136 		}
       
  6137 	return KErrNone; 	
       
  6138  	}
       
  6139  	
       
  6140 TInt CPhoneDMmTsy::ClearBlacklistCancel(const TTsyReqHandle aTsyReqHandle)
       
  6141 	{
       
  6142 	LOGTEXT(_L8("CPhoneDMmTsy::ClearBlacklistCancel called"));
       
  6143 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6144 	return KErrNone;
       
  6145 	}
       
  6146 	
       
  6147 TInt CPhoneDMmTsy::NotifyDTMFEvent(const TTsyReqHandle aTsyReqHandle,RMobilePhone::TMobilePhoneDTMFEvent* aEvent)
       
  6148 	{
       
  6149 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyDTMFEvent called"));
       
  6150 	if (!iNotifyDTMFEvent++)
       
  6151 		{
       
  6152 		*aEvent = DMMTSY_PHONE_NOTIFY_DTMFEVENT_ON;
       
  6153 		ReqCompleted(aTsyReqHandle,KErrNone);
       
  6154 		}
       
  6155 	return KErrNone; 	
       
  6156 	}
       
  6157 	
       
  6158 TInt CPhoneDMmTsy::NotifyDTMFEventCancel(const TTsyReqHandle aTsyReqHandle)
       
  6159 	{
       
  6160 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyDTMFEventCancel called"));
       
  6161 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6162 	return KErrNone;
       
  6163 	}
       
  6164 	
       
  6165 TInt CPhoneDMmTsy::GetPersonalisationCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCaps) 
       
  6166 	{
       
  6167 	LOGTEXT(_L8("CPhoneDMmTsy::GetPersonalisationCaps called"));
       
  6168 	*aCaps = (DMMTSY_PHONE_PERS_CAPS_SERV_PROV | DMMTSY_PHONE_PERS_CAPS_NETWORK);
       
  6169 	AddDelayedReq(aTsyReqHandle,this);
       
  6170 	return KErrNone;
       
  6171 	}
       
  6172 	
       
  6173 TInt CPhoneDMmTsy::GetPersonalisationCapsCancel(const TTsyReqHandle aTsyReqHandle)
       
  6174 	{
       
  6175 	LOGTEXT(_L8("CPhoneDMmTsy::GetPersonalisationCapsCancel called"));
       
  6176 	RemoveDelayedReq(aTsyReqHandle);
       
  6177 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6178 	return KErrNone;
       
  6179 	}
       
  6180 
       
  6181 TInt CPhoneDMmTsy::GetPersonalisationStatus(const TTsyReqHandle aTsyReqHandle, TUint32* aPersSchemes) 
       
  6182 	{
       
  6183 	LOGTEXT(_L8("CPhoneDMmTsy::GetPersonalisationStatus called"));
       
  6184 	*aPersSchemes = (DMMTSY_PHONE_PERS_GET_NETWORK_SUB | DMMTSY_PHONE_PERS_GET_CORPORATE);
       
  6185 	AddDelayedReq(aTsyReqHandle,this);
       
  6186 	return KErrNone;
       
  6187 	}
       
  6188 	
       
  6189 TInt CPhoneDMmTsy::GetPersonalisationStatusCancel(const TTsyReqHandle aTsyReqHandle)
       
  6190 	{
       
  6191 	LOGTEXT(_L8("CPhoneDMmTsy::GetPersonalisationStatusCancel called"));
       
  6192 	RemoveDelayedReq(aTsyReqHandle);
       
  6193 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6194 	return KErrNone;
       
  6195 	}
       
  6196 
       
  6197 TInt CPhoneDMmTsy::SetPersonalisationStatus(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhonePersonalisation* aPersSchemes, TDes* aPersCode) 
       
  6198 	{
       
  6199 	LOGTEXT(_L8("CPhoneDMmTsy::SetPersonalisationStatus called"));
       
  6200 	if((*aPersSchemes == DMMTSY_PHONE_PERS_SET_USIM) &&
       
  6201 	   (*aPersCode == DMMTSY_PHONE_PERS_SET_CODE))
       
  6202 		AddDelayedReq(aTsyReqHandle,this);
       
  6203 	else
       
  6204 		ReqCompleted(aTsyReqHandle,KErrCorrupt);			
       
  6205 	return KErrNone;
       
  6206 	}
       
  6207 	
       
  6208 TInt CPhoneDMmTsy::SetPersonalisationStatusCancel(const TTsyReqHandle aTsyReqHandle)
       
  6209 	{
       
  6210 	LOGTEXT(_L8("CPhoneDMmTsy::SetPersonalisationStatusCancel called"));
       
  6211 	RemoveDelayedReq(aTsyReqHandle);
       
  6212 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6213 	return KErrNone;
       
  6214 	}
       
  6215 
       
  6216 TInt CPhoneDMmTsy::GetCurrentNetworkName(const TTsyReqHandle aTsyReqHandle, TDes8* aNetworkName, TDes8* aLocInfo)	
       
  6217 	{
       
  6218 	LOGTEXT(_L8("CPhoneDMmTsy::GetCurrentNetworkName called"));
       
  6219 
       
  6220 	RMobilePhone::TMobilePhoneNetworkNameV3Pckg* networkNamePckg = REINTERPRET_CAST(RMobilePhone::TMobilePhoneNetworkNameV3Pckg*,aNetworkName);
       
  6221 	RMobilePhone::TMobilePhoneNetworkNameV3& networkName = (*networkNamePckg)();
       
  6222 	
       
  6223 	RMobilePhone::TMobilePhoneOPlmnV3Pckg* plmnPckg = REINTERPRET_CAST(RMobilePhone::TMobilePhoneOPlmnV3Pckg*,aLocInfo);
       
  6224 	RMobilePhone::TMobilePhoneOPlmnV3& plmn = (*plmnPckg)();
       
  6225 	
       
  6226 	if(networkName.ExtensionId() != KETelExtMultimodeV3 ||
       
  6227 	   plmn.ExtensionId() != KETelExtMultimodeV3)
       
  6228 	   		ReqCompleted(aTsyReqHandle,KErrCorrupt);	
       
  6229 	 else
       
  6230 	 	{
       
  6231 	 	//Fill TMobilePhoneNetworkNameV3
       
  6232 	 	networkName.iLongName = DMMTSY_PHONE_HOME_NETWORK_LONG_NAME;
       
  6233 		networkName.iShortName = DMMTSY_PHONE_HOME_NETWORK_SHORT_NAME;
       
  6234 		networkName.iOtherNames = DMMTSY_PHONE_HOME_NETWORK_OTHER_NAMES;
       
  6235 		//Fill TMobilePhoneOPlmnV3
       
  6236 		plmn.iCountryCode = DMMTSY_PHONE_COUNTRY_ID;
       
  6237 		plmn.iNetworkId = DMMTSY_PHONE_NETWORK_ID;
       
  6238 		plmn.iPNNid = DMMTSY_PHONE_HOME_NETWORK_NAME_LOC_ID;		
       
  6239 		plmn.iFirstLocationAreaCode = DMMTSY_PHONE_HOME_NETWORK_FIRST_ID;
       
  6240 		plmn.iLastLocationAreaCode = DMMTSY_PHONE_HOME_NETWORK_LAST_ID;
       
  6241 		AddDelayedReq(aTsyReqHandle,this);
       
  6242 	 	}
       
  6243 	return KErrNone;	
       
  6244 	}
       
  6245 	
       
  6246 TInt CPhoneDMmTsy::GetCurrentNetworkNameCancel(const TTsyReqHandle aTsyReqHandle)	
       
  6247 	{
       
  6248 	LOGTEXT(_L8("CPhoneDMmTsy::GetCurrentNetworkNameCancel called"));
       
  6249 	RemoveDelayedReq(aTsyReqHandle);
       
  6250 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6251 	return KErrNone;
       
  6252 	}
       
  6253 	
       
  6254 TInt CPhoneDMmTsy::GetPreferredNetworksPhase1(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aClient, TInt* aBufSize)
       
  6255 	{
       
  6256 	LOGTEXT(_L8("CPhoneDMmTsy::GetPreferredNetworksPhase1 called"));
       
  6257 	TInt ret=KErrNone;
       
  6258 	TInt leaveCode=KErrNone;
       
  6259 	TRAP(leaveCode, ret=ProcessGetPreferredNetworksPhase1L(aTsyReqHandle, aClient, aBufSize););
       
  6260 	if (leaveCode != KErrNone)
       
  6261 		ReqCompleted(aTsyReqHandle,leaveCode);
       
  6262 	return ret;
       
  6263 	}	
       
  6264 	
       
  6265 TInt CPhoneDMmTsy::ProcessGetPreferredNetworksPhase1L(const TTsyReqHandle aTsyReqHandle, 
       
  6266 													 RMobilePhone::TClientId* aClient, 
       
  6267 													 TInt* aBufSize)
       
  6268 	{
       
  6269 	// retrieve stored networks from USIM,
       
  6270 	// store each entry.
       
  6271 	// stream the list and then return size of this buffer to client
       
  6272 	CMobilePhoneStoredNetworkList* list=CMobilePhoneStoredNetworkList::NewL();
       
  6273 	CleanupStack::PushL(list);
       
  6274 
       
  6275 	RMobilePhone::TMobilePreferredNetworkEntryV3 entry;
       
  6276 
       
  6277 	// fill up an example list
       
  6278 	for (TInt index=0; index < DMMTSY_PHONE_NTWK_LIST_ENTRIES; index++)
       
  6279 		{
       
  6280 		switch (index)
       
  6281 			{
       
  6282 		case 0:
       
  6283 			entry.iAccess = DMMTSY_PHONE_NTWK_LIST_ACCESS_CAPS_GSM;
       
  6284 			entry.iUserDefined = DMMTSY_PHONE_NTWK_LIST_USER_DEFINED_FALSE;
       
  6285 			entry.iCountryCode = DMMTSY_PHONE_NTWK_LIST_COUNTRY_ID1;
       
  6286 			entry.iNetworkId = DMMTSY_PHONE_NTWK_LIST_NETWORK_ID1;
       
  6287 			break;
       
  6288 		case 1:
       
  6289 			entry.iAccess = DMMTSY_PHONE_NTWK_LIST_ACCESS_CAPS_GSMC;
       
  6290 			entry.iUserDefined = DMMTSY_PHONE_NTWK_LIST_USER_DEFINED_FALSE;
       
  6291 			entry.iCountryCode = DMMTSY_PHONE_NTWK_LIST_COUNTRY_ID2;
       
  6292 			entry.iNetworkId = DMMTSY_PHONE_NTWK_LIST_NETWORK_ID2;
       
  6293 			break;
       
  6294 		case 2:
       
  6295 		default:
       
  6296 			entry.iAccess = DMMTSY_PHONE_NTWK_LIST_ACCESS_CAPS_UTRAN;
       
  6297 			entry.iUserDefined = DMMTSY_PHONE_NTWK_LIST_USER_DEFINED_TRUE;
       
  6298 			entry.iCountryCode = DMMTSY_PHONE_NTWK_LIST_COUNTRY_ID2;
       
  6299 			entry.iNetworkId = DMMTSY_PHONE_NTWK_LIST_NETWORK_ID1;
       
  6300 			break;
       
  6301 		case 3:
       
  6302 			entry.iAccess = DMMTSY_PHONE_NTWK_LIST_ACCESS_CAPS_WLAN;
       
  6303 			entry.iUserDefined = DMMTSY_PHONE_NTWK_LIST_USER_DEFINED_TRUE;
       
  6304 			entry.iCountryCode = DMMTSY_PHONE_NTWK_LIST_COUNTRY_ID2;
       
  6305 			entry.iNetworkId = DMMTSY_PHONE_NTWK_LIST_NETWORK_ID1;
       
  6306 			break;
       
  6307 			
       
  6308 			}
       
  6309 		// Add the entry into the list, at the next empty location
       
  6310 		list->AddEntryL(entry);
       
  6311 		}
       
  6312 
       
  6313 	// Store the streamed list and the client ID
       
  6314 	CListReadAllAttempt* read=CListReadAllAttempt::NewL(aClient,aTsyReqHandle);
       
  6315 	CleanupStack::PushL(read);
       
  6316 	
       
  6317 	read->iListBuf = list->StoreLC();
       
  6318 	CleanupStack::Pop(); // pop the CBufBase allocated by StoreLC
       
  6319 	
       
  6320 	iGetPreferredNetworks->AppendL(read);
       
  6321 	CleanupStack::Pop(); // pop the CListReadAllAttempt
       
  6322 	
       
  6323 	// return the CBufBase’s size to client
       
  6324 	*aBufSize=(read->iListBuf)->Size();
       
  6325 	
       
  6326 	// Complete first phase of list retrieval
       
  6327 	AddDelayedReq(aTsyReqHandle,this);
       
  6328 	CleanupStack::PopAndDestroy(); // pop&destroy list
       
  6329 	return KErrNone;
       
  6330 	}
       
  6331 
       
  6332 
       
  6333 
       
  6334 TInt CPhoneDMmTsy::GetPreferredNetworksPhase2(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aClient, TDes8* aBuf)
       
  6335 	{
       
  6336 	LOGTEXT(_L8("CPhoneDMmTsy::GetPreferredNetworksPhase2 called"));
       
  6337 	CListReadAllAttempt* read=NULL;
       
  6338 	// Find the get detected network attempt from this client
       
  6339 	for (TInt i=0; i<iGetPreferredNetworks->Count(); ++i)
       
  6340 		{
       
  6341 		read = iGetPreferredNetworks->At(i);
       
  6342 		if ((read->iClient.iSessionHandle==aClient->iSessionHandle) &&
       
  6343 		    (read->iClient.iSubSessionHandle==aClient->iSubSessionHandle))
       
  6344 			{
       
  6345 			TPtr8 bufPtr((read->iListBuf)->Ptr(0));
       
  6346 			// Copy the streamed list to the client
       
  6347 			aBuf->Copy(bufPtr);
       
  6348 			delete read;
       
  6349 			iGetPreferredNetworks->Delete(i);
       
  6350 			ReqCompleted(aTsyReqHandle,KErrNone);
       
  6351 			return KErrNone;
       
  6352 			}
       
  6353 		}
       
  6354 	// Should handle error case of not finding the matching client from read all phase 1
       
  6355 	return KErrNotFound;
       
  6356 	}
       
  6357 	
       
  6358 TInt CPhoneDMmTsy::GetPreferredNetworksCancel(const TTsyReqHandle aTsyReqHandle)
       
  6359 	{
       
  6360 	LOGTEXT(_L8("CPhoneDMmTsy::GetPreferredNetworksPhaseCancel called"));
       
  6361 	RemoveDelayedReq(aTsyReqHandle);
       
  6362 	// Remove the read all attempt from iGetPreferredNetworks
       
  6363 	CListReadAllAttempt* read=NULL;
       
  6364 	for (TInt i=0; i<iGetPreferredNetworks->Count(); ++i)
       
  6365 		{
       
  6366 		read = iGetPreferredNetworks->At(i);
       
  6367 		if (read->iReqHandle == aTsyReqHandle)
       
  6368 			{
       
  6369 			delete read;
       
  6370 			iGetPreferredNetworks->Delete(i);
       
  6371 			break;
       
  6372 			}
       
  6373 		}
       
  6374 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6375 	return KErrNone;
       
  6376 	}
       
  6377 
       
  6378 TInt CPhoneDMmTsy::NotifyMmsUpdateCancel(const TTsyReqHandle aTsyReqHandle)
       
  6379 	{
       
  6380 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyMmsUpdateCancel called"));
       
  6381 	RemoveDelayedReq(aTsyReqHandle);
       
  6382 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6383 	return KErrNone;
       
  6384 	}
       
  6385 
       
  6386 TInt CPhoneDMmTsy::SetMmsUserConnParams(const TTsyReqHandle aTsyReqHandle, TDes8* aConnectivity)
       
  6387 	{
       
  6388 	LOGTEXT(_L8("CPhoneDMmTsy::SetMmsUserConnParams called"));
       
  6389 	if(aConnectivity->Compare(DMMTSY_PHONE_MMS_USER_CONN_PARAMS) == 0 )
       
  6390 		AddDelayedReq(aTsyReqHandle,this);		
       
  6391 	else
       
  6392 		ReqCompleted(aTsyReqHandle, KErrCorrupt);
       
  6393 	return KErrNone;
       
  6394 	} 
       
  6395 	
       
  6396 TInt CPhoneDMmTsy::SetMmsUserConnParamsCancel(const TTsyReqHandle aTsyReqHandle)
       
  6397 	{
       
  6398 	LOGTEXT(_L8("CPhoneDMmTsy::SetMmsUserConnParamsCancel called"));
       
  6399 	RemoveDelayedReq(aTsyReqHandle);
       
  6400 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6401 	return KErrNone;
       
  6402 	}
       
  6403 
       
  6404 TInt CPhoneDMmTsy::SetMmsUserPreferences(const TTsyReqHandle aTsyReqHandle, TDes8* aPreferences)
       
  6405 	{
       
  6406 	LOGTEXT(_L8("CPhoneDMmTsy::SetMmsUserPreferences called"));
       
  6407 	if(aPreferences->Compare(DMMTSY_PHONE_MMS_USER_PREF_PARAMS) == 0 )
       
  6408 		AddDelayedReq(aTsyReqHandle,this);		
       
  6409 	else
       
  6410 		ReqCompleted(aTsyReqHandle, KErrCorrupt);
       
  6411 	return KErrNone;
       
  6412 	}
       
  6413 
       
  6414 TInt CPhoneDMmTsy::SetMmsUserPreferencesCancel(const TTsyReqHandle aTsyReqHandle)
       
  6415 	{
       
  6416 	LOGTEXT(_L8("CPhoneDMmTsy::SetMmsUserPreferencesCancel called"));
       
  6417 	RemoveDelayedReq(aTsyReqHandle);
       
  6418 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6419 	return KErrNone;
       
  6420 	}
       
  6421 
       
  6422 TInt CPhoneDMmTsy::GetMmsConfig(const TTsyReqHandle aTsyReqHandle,  RMobilePhone::TMmsConnParams aType, TDes8* aConnectivity)
       
  6423 
       
  6424 	{
       
  6425 	LOGTEXT(_L8("CPhoneDMmTsy::GetMmsConfig called"));
       
  6426 	if (aType == DMMTSY_PHONE_MMS_USER_CONN_PARAMS_TYPE )
       
  6427 		{
       
  6428 		*aConnectivity = DMMTSY_PHONE_MMS_USER_CONN_PARAMS;
       
  6429 		AddDelayedReq(aTsyReqHandle,this);
       
  6430 		} 
       
  6431 	else
       
  6432 		ReqCompleted(aTsyReqHandle, KErrCorrupt);
       
  6433 	return KErrNone;
       
  6434 	}
       
  6435 
       
  6436 TInt CPhoneDMmTsy::GetMmsConfigCancel(const TTsyReqHandle aTsyReqHandle)
       
  6437 	{
       
  6438 	LOGTEXT(_L8("CPhoneDMmTsy::GetMmsConfigCancel called"));
       
  6439 	RemoveDelayedReq(aTsyReqHandle);
       
  6440 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6441 	return KErrNone;
       
  6442 	}	
       
  6443 	
       
  6444 TInt CPhoneDMmTsy::NotifyMmsConfig(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMmsConnParams aType, TDes8* aConnectivity)
       
  6445 	
       
  6446 	{
       
  6447 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyMmsConfig called"));
       
  6448 	if(!iNotifyMmsConfig++)
       
  6449 		{
       
  6450 		if (aType == DMMTSY_PHONE_MMS_USER_CONN_PARAMS_TYPE )
       
  6451 			{
       
  6452 			*aConnectivity = DMMTSY_PHONE_MMS_USER_CONN_PARAMS;
       
  6453 			AddDelayedReq(aTsyReqHandle,this);
       
  6454 			} 
       
  6455 		else
       
  6456 			ReqCompleted(aTsyReqHandle, KErrCorrupt);
       
  6457 		}
       
  6458 	return KErrNone;
       
  6459 	}
       
  6460 	
       
  6461 TInt CPhoneDMmTsy::NotifyMmsConfigCancel(const TTsyReqHandle aTsyReqHandle)
       
  6462 	{
       
  6463 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyMmsConfigCancel called"));
       
  6464 	RemoveDelayedReq(aTsyReqHandle);
       
  6465 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6466 	return KErrNone;
       
  6467 	}
       
  6468 	
       
  6469 TInt CPhoneDMmTsy::GetHomeNetworkSearchPeriod(const TTsyReqHandle aTsyReqHandle, TInt* aSearchIntv)
       
  6470 	{
       
  6471 	LOGTEXT(_L8("CPhoneDMmTsy::GetHomeNetworkSearchPeriod called"));
       
  6472 	*aSearchIntv = DMMTSY_PHONE_HOME_NETWORK_SEARCHINTV;
       
  6473 	AddDelayedReq(aTsyReqHandle,this);	
       
  6474 	return KErrNone;
       
  6475 	
       
  6476 	}
       
  6477 	
       
  6478 TInt CPhoneDMmTsy::GetHomeNetworkSearchPeriodCancel(const TTsyReqHandle aTsyReqHandle)
       
  6479 	{
       
  6480 	LOGTEXT(_L8("CPhoneDMmTsy::GetHomeNetworkSearchPeriodCancel called"));
       
  6481 	RemoveDelayedReq(aTsyReqHandle);
       
  6482 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6483 	return KErrNone;	
       
  6484 	}
       
  6485 
       
  6486 TInt CPhoneDMmTsy::GetLastUsedAccessTechnology(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneNetworkAccess* aAccessTech)
       
  6487 	{
       
  6488 	LOGTEXT(_L8("CPhoneDMmTsy::GetLastUsedAccessTechnology called"));
       
  6489 	*aAccessTech = DMMTSY_PHONE_LAST_USED_ACCESS_TECH;
       
  6490 	AddDelayedReq(aTsyReqHandle,this);	
       
  6491 	return KErrNone;
       
  6492 	}
       
  6493 
       
  6494 TInt CPhoneDMmTsy::GetLastUsedAccessTechnologyCancel(const TTsyReqHandle aTsyReqHandle)
       
  6495 	{
       
  6496 	LOGTEXT(_L8("CPhoneDMmTsy::GetLastUsedAccessTechnologyCancel called"));
       
  6497 	RemoveDelayedReq(aTsyReqHandle);
       
  6498 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6499 	return KErrNone;	
       
  6500 	}
       
  6501 
       
  6502 TInt CPhoneDMmTsy::GetNetworkInvScanSetting(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneInvestigationScan* aSetting)
       
  6503 	{
       
  6504 	LOGTEXT(_L8("CPhoneDMmTsy::GetNetworkInvScanSetting called"));
       
  6505 	*aSetting = DMMTSY_PHONE_NETWORK_INV_SCAN;
       
  6506 	AddDelayedReq(aTsyReqHandle,this);	
       
  6507 	return KErrNone;
       
  6508 	}
       
  6509 	
       
  6510 TInt CPhoneDMmTsy::NotifyNetworkInvScanChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneInvestigationScan* aSetting)
       
  6511 	{
       
  6512 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyNetworkInvScanChange called"));
       
  6513 	if(!iNotifyNetworkInvScanChange++)
       
  6514 		{
       
  6515 		*aSetting = DMMTSY_PHONE_NETWORK_INV_SCAN;
       
  6516 		AddDelayedReq(aTsyReqHandle,this);	
       
  6517 		}
       
  6518 	return KErrNone;
       
  6519 	}
       
  6520 	
       
  6521 TInt CPhoneDMmTsy::NotifyNetworkInvScanChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  6522 	{
       
  6523 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyNetworkInvScanChangeCancel called"));
       
  6524 	RemoveDelayedReq(aTsyReqHandle);
       
  6525 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6526 	return KErrNone;	
       
  6527 	}
       
  6528 	
       
  6529 TInt CPhoneDMmTsy::NotifyNetworkInvScanEvent(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneInvestigationScanEvent* aEvent)
       
  6530 	{
       
  6531 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyNetworkInvScanEvent called"));
       
  6532 	if(!iNotifyNetworkInvScanEvent++)
       
  6533 		{
       
  6534 		*aEvent = DMMTSY_PHONE_NETWORK_INV_SCAN_EVENT;
       
  6535 		AddDelayedReq(aTsyReqHandle,this);	
       
  6536 		}
       
  6537 	return KErrNone;
       
  6538 	}
       
  6539 	
       
  6540 TInt CPhoneDMmTsy::NotifyNetworkInvScanEventCancel(const TTsyReqHandle aTsyReqHandle)
       
  6541 	{
       
  6542 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyNetworkInvScanEventCancel called"));
       
  6543 	RemoveDelayedReq(aTsyReqHandle);
       
  6544 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6545 	return KErrNone;	
       
  6546 	}
       
  6547 	
       
  6548 TInt CPhoneDMmTsy::GetCallForwardingIndicator(const TTsyReqHandle aTsyReqHandle, TDes8* aIndicator)
       
  6549 	{
       
  6550 	LOGTEXT(_L8("CPhoneDMmTsy::GetCallForwardingIndicator called"));
       
  6551 	
       
  6552 	RMobilePhone::TMobilePhoneCFUIndicatorV3Pckg* indicatorPckg = REINTERPRET_CAST(RMobilePhone::TMobilePhoneCFUIndicatorV3Pckg*, aIndicator);
       
  6553 	RMobilePhone::TMobilePhoneCFUIndicatorV3& indicator = (*indicatorPckg)();
       
  6554 	if( indicator.ExtensionId() == KETelExtMultimodeV3 )
       
  6555 		{
       
  6556 		indicator.iIndicator = DMMTSY_PHONE_CFU_INDICATOR;
       
  6557 		}
       
  6558 	else if(indicator.ExtensionId() == KEtelExtMultimodeV6 )
       
  6559 		{
       
  6560 		RMobilePhone::TMobilePhoneCFUIndicatorV6Pckg* indicatorPckg = REINTERPRET_CAST(RMobilePhone::TMobilePhoneCFUIndicatorV6Pckg*, aIndicator);
       
  6561 		RMobilePhone::TMobilePhoneCFUIndicatorV6& indicator = (*indicatorPckg)();
       
  6562 		indicator.iIndicator = DMMTSY_PHONE_CFU_INDICATOR1;
       
  6563 		indicator.iCFNumber.iTypeOfNumber = DMMTSY_PHONE_CFU_TON;
       
  6564 		indicator.iCFNumber.iNumberPlan = DMMTSY_PHONE_CFU_NPI;
       
  6565 		indicator.iCFNumber.iTelNumber = DMMTSY_PHONE_CFU_TELNUMBER;
       
  6566 		indicator.iMultipleSubscriberProfileID = DMMTSY_PHONE_CFU_MSP;
       
  6567 		}
       
  6568 	AddDelayedReq(aTsyReqHandle,this);	
       
  6569 	return KErrNone;
       
  6570 	}
       
  6571 	
       
  6572 TInt CPhoneDMmTsy::GetCallForwardingIndicatorCancel(const TTsyReqHandle aTsyReqHandle)
       
  6573 	{
       
  6574 	LOGTEXT(_L8("CPhoneDMmTsy::GetCallForwardingIndicatorCancel called"));
       
  6575 	RemoveDelayedReq(aTsyReqHandle);
       
  6576 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6577 	return KErrNone;
       
  6578 	}
       
  6579 	
       
  6580 TInt CPhoneDMmTsy::GetCompMethodName(const TTsyReqHandle aTsyReqHandle, TUint aCmi, TDes* aAlphaTag)
       
  6581 	{
       
  6582 	LOGTEXT(_L8("CPhoneDMmTsy::GetCompMethodName called"));
       
  6583 	if(aCmi != DMMTSY_PHONE_CB_COMP_METHOD_ID)
       
  6584 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  6585 	else
       
  6586 		{
       
  6587 		*aAlphaTag = DMMTSY_PHONE_CB_ALPHA_TAG;
       
  6588 		AddDelayedReq(aTsyReqHandle,this);	
       
  6589 		}
       
  6590 	return KErrNone;
       
  6591 	}
       
  6592 TInt CPhoneDMmTsy::GetCompMethodNameCancel(const TTsyReqHandle aTsyReqHandle)
       
  6593 	{
       
  6594 	LOGTEXT(_L8("CPhoneDMmTsy::GetCompMethodNameCancel called"));
       
  6595 	RemoveDelayedReq(aTsyReqHandle);
       
  6596 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6597 	return KErrNone;
       
  6598 	}
       
  6599 	
       
  6600 TInt CPhoneDMmTsy::EnumerateAPNEntries(const TTsyReqHandle aTsyReqHandle, TUint32* aIndex)
       
  6601 	{
       
  6602 	LOGTEXT(_L8("CPhoneDMmTsy::EnumerateAPNEntries called"));
       
  6603 	*aIndex = DMMTSY_PHONE_APN_ENUMERATE;
       
  6604 	AddDelayedReq(aTsyReqHandle,this);	
       
  6605 	return KErrNone;
       
  6606 	}
       
  6607 
       
  6608 TInt CPhoneDMmTsy::EnumerateAPNEntriesCancel(const TTsyReqHandle aTsyReqHandle)
       
  6609 	{
       
  6610 	LOGTEXT(_L8("CPhoneDMmTsy::EnumerateAPNEntriesCancel called"));
       
  6611 	RemoveDelayedReq(aTsyReqHandle);
       
  6612 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6613 	return KErrNone;
       
  6614 	}
       
  6615 	
       
  6616 TInt CPhoneDMmTsy::GetAPNname(const TTsyReqHandle aTsyReqHandle, TUint32 aIndex, TDes8* aAPN)
       
  6617 	{
       
  6618 	LOGTEXT(_L8("CPhoneDMmTsy::GetAPNname called"));
       
  6619 	
       
  6620 	RMobilePhone::TAPNEntryV3Pckg* entryPckg = REINTERPRET_CAST(RMobilePhone::TAPNEntryV3Pckg*, aAPN);
       
  6621 	RMobilePhone::TAPNEntryV3& entry = (*entryPckg)();
       
  6622 	
       
  6623 	switch(aIndex)
       
  6624 		{
       
  6625 	case 0:
       
  6626 		{
       
  6627 		entry.iApn.Append(DMMTSY_PHONE_APN_ENTRY1);
       
  6628 		AddDelayedReq(aTsyReqHandle,this);
       
  6629 		}
       
  6630 		break;
       
  6631 	case 1:
       
  6632 		{
       
  6633 		entry.iApn.Append(DMMTSY_PHONE_APN_ENTRY2);
       
  6634 		AddDelayedReq(aTsyReqHandle,this);	
       
  6635 		}
       
  6636 		break;
       
  6637 	case 2:
       
  6638 		{
       
  6639 		entry.iApn.Append(DMMTSY_PHONE_APN_ENTRY3);
       
  6640 		AddDelayedReq(aTsyReqHandle,this);	
       
  6641 		}
       
  6642 		break;
       
  6643 	default:
       
  6644 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  6645 		break;
       
  6646 		}
       
  6647 	return KErrNone;
       
  6648 	}
       
  6649 
       
  6650 TInt CPhoneDMmTsy::GetAPNnameCancel(const TTsyReqHandle aTsyReqHandle)
       
  6651 	{
       
  6652 	LOGTEXT(_L8("CPhoneDMmTsy::GetAPNnameCancel called"));
       
  6653 	RemoveDelayedReq(aTsyReqHandle);
       
  6654 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6655 	return KErrNone;
       
  6656 	}
       
  6657 
       
  6658 TInt CPhoneDMmTsy::AppendAPNName(const TTsyReqHandle aTsyReqHandle, TDes8* aAPN)
       
  6659 	{
       
  6660 	LOGTEXT(_L8("CPhoneDMmTsy::AppendAPNName called"));
       
  6661 	
       
  6662 	RMobilePhone::TAPNEntryV3Pckg* entryPckg = REINTERPRET_CAST(RMobilePhone::TAPNEntryV3Pckg*, aAPN);
       
  6663 	RMobilePhone::TAPNEntryV3& entry = (*entryPckg)();
       
  6664 	
       
  6665 	if ((entry.iApn.Length() > RMobilePhone::KMaxApnName) ||
       
  6666 		(entry.iApn != DMMTSY_PHONE_APN_ENTRY_TO_APPEND))
       
  6667 		{
       
  6668 		// Checking that the entry passed in is equal to DMMTSY_PHONE_APN_ENTRY_TO_APPEND
       
  6669 		// confirms that the APN entry has made it from the client to the TSY properly,
       
  6670 		// i.e the packaging etc. works.
       
  6671 		ReqCompleted(aTsyReqHandle, KErrBadName);
       
  6672 		}
       
  6673 	else 
       
  6674 		{
       
  6675 		AddDelayedReq(aTsyReqHandle, this);
       
  6676 		}
       
  6677 	return KErrNone;
       
  6678 	}
       
  6679 	
       
  6680 TInt CPhoneDMmTsy::AppendAPNNameCancel(const TTsyReqHandle aTsyReqHandle)
       
  6681 	{
       
  6682 	LOGTEXT(_L8("CPhoneDMmTsy::AppendAPNNameCancel called"));
       
  6683 	RemoveDelayedReq(aTsyReqHandle);
       
  6684 	ReqCompleted(aTsyReqHandle, KErrCancel);
       
  6685 	return KErrNone;
       
  6686 	}
       
  6687 
       
  6688 TInt CPhoneDMmTsy::DeleteAPNName(const TTsyReqHandle aTsyReqHandle, TUint32 aIndex)
       
  6689 	{
       
  6690 	LOGTEXT(_L8("CPhoneDMmTsy::DeleteAPNName called"));
       
  6691 	if (aIndex > (DMMTSY_PHONE_APN_ENUMERATE-1))
       
  6692 		{
       
  6693 		ReqCompleted(aTsyReqHandle, KErrTooBig);
       
  6694 		}
       
  6695 	else
       
  6696 		{
       
  6697 		AddDelayedReq(aTsyReqHandle, this);
       
  6698 		}
       
  6699 	return KErrNone; 
       
  6700 	}
       
  6701 	
       
  6702 TInt CPhoneDMmTsy::DeleteAPNNameCancel(const TTsyReqHandle aTsyReqHandle)
       
  6703 	{
       
  6704 	LOGTEXT(_L8("CPhoneDMmTsy::DeleteAPNNameCancel called"));
       
  6705 	RemoveDelayedReq(aTsyReqHandle);
       
  6706 	ReqCompleted(aTsyReqHandle, KErrCancel);	
       
  6707 	return KErrNone;
       
  6708 	}
       
  6709 
       
  6710 TInt CPhoneDMmTsy::NotifyAPNListChanged(const TTsyReqHandle aTsyReqHandle)
       
  6711 	{
       
  6712 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyAPNListChanged called"));
       
  6713 	AddDelayedReq(aTsyReqHandle, this);
       
  6714 	return KErrNone;
       
  6715 	}
       
  6716 
       
  6717 TInt CPhoneDMmTsy::NotifyAPNListChangedCancel(const TTsyReqHandle aTsyReqHandle)
       
  6718 	{
       
  6719 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyAPNListChangedCancel called"));
       
  6720 	RemoveDelayedReq(aTsyReqHandle);
       
  6721 	ReqCompleted(aTsyReqHandle, KErrCancel);	
       
  6722 	return KErrNone;	
       
  6723 	}
       
  6724 
       
  6725 TInt CPhoneDMmTsy::SetAPNControlListServiceStatus(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TAPNControlListServiceStatus aAPNControlListServiceStatus)
       
  6726 	{
       
  6727 	if ((aAPNControlListServiceStatus != DMMTSY_PHONE_APN_CONTROL_LIST_SERVICE_ENABLED) &&
       
  6728 		(aAPNControlListServiceStatus != DMMTSY_PHONE_APN_CONTROL_LIST_SERVICE_DISABLED))
       
  6729 		{
       
  6730 		ReqCompleted(aTsyReqHandle, KErrArgument);
       
  6731 		}
       
  6732 	else
       
  6733 		{
       
  6734 		AddDelayedReq(aTsyReqHandle,this);
       
  6735 		}
       
  6736 	return KErrNone;
       
  6737 	}
       
  6738 	
       
  6739 TInt CPhoneDMmTsy::SetAPNControlListServiceStatusCancel(const TTsyReqHandle aTsyReqHandle)
       
  6740 	{
       
  6741 	LOGTEXT(_L8("CPhoneDMmTsy::SetAPNControlListServiceStatusCancel called"));
       
  6742 	RemoveDelayedReq(aTsyReqHandle);
       
  6743 	ReqCompleted(aTsyReqHandle, KErrCancel);	
       
  6744 	return KErrNone;
       
  6745 	}
       
  6746 	
       
  6747 TInt CPhoneDMmTsy::GetAPNControlListServiceStatus(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TAPNControlListServiceStatus* aAPNControlListServiceStatus)
       
  6748 	{
       
  6749 	LOGTEXT(_L8("CPhoneDMmTsy::GetAPNControlListServiceStatus called"));
       
  6750 	*aAPNControlListServiceStatus = DMMTSY_PHONE_APN_CONTROL_LIST_SERVICE_DISABLED;
       
  6751 	AddDelayedReq(aTsyReqHandle, this);
       
  6752 	return KErrNone;
       
  6753 	}
       
  6754 	
       
  6755 TInt CPhoneDMmTsy::GetAPNControlListServiceStatusCancel(const TTsyReqHandle aTsyReqHandle)
       
  6756 	{
       
  6757 	LOGTEXT(_L8("CPhoneDMmTsy::GetAPNControlListServiceStatusCancel called"));
       
  6758 	RemoveDelayedReq(aTsyReqHandle);
       
  6759 	ReqCompleted(aTsyReqHandle, KErrCancel);	
       
  6760 	return KErrNone;	
       
  6761 	}
       
  6762 
       
  6763 TInt CPhoneDMmTsy::NotifyAPNControlListServiceStatusChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TAPNControlListServiceStatus* aAPNControlListServiceStatus)
       
  6764 	{
       
  6765 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyAPNControlListServiceStatusChange called"));
       
  6766 	*aAPNControlListServiceStatus = DMMTSY_PHONE_APN_CONTROL_LIST_SERVICE_ENABLED;
       
  6767 	AddDelayedReq(aTsyReqHandle, this);
       
  6768 	return KErrNone;
       
  6769 	}
       
  6770 
       
  6771 TInt CPhoneDMmTsy::NotifyAPNControlListServiceStatusChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  6772 	{
       
  6773 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyAPNControlListServiceStatusChangeCancel called"));
       
  6774 	RemoveDelayedReq(aTsyReqHandle);
       
  6775 	ReqCompleted(aTsyReqHandle, KErrCancel);
       
  6776 	return KErrNone;
       
  6777 	}
       
  6778 	
       
  6779 TInt CPhoneDMmTsy::StorePreferredNetworksList(const TTsyReqHandle aTsyReqHandle, TDes8* aBuffer)
       
  6780 	{
       
  6781 	LOGTEXT(_L8("CSmsMessagingDMmTsy::StorePreferredNetworksList called"));
       
  6782 	TInt ret=KErrNone;
       
  6783 	TInt leaveCode=KErrNone;
       
  6784 	TRAP(leaveCode, ret=ProcessStorePreferredNetworksListL(aTsyReqHandle, aBuffer););
       
  6785 	if (leaveCode != KErrNone)
       
  6786 		ReqCompleted(aTsyReqHandle,leaveCode);
       
  6787 	return ret;
       
  6788 	};
       
  6789 
       
  6790 TInt CPhoneDMmTsy::ProcessStorePreferredNetworksListL(TTsyReqHandle aTsyReqHandle, TDes8* aBuffer)
       
  6791 	{
       
  6792 	CMobilePhoneStoredNetworkList* list=CMobilePhoneStoredNetworkList::NewL();
       
  6793 	CleanupStack::PushL(list);
       
  6794 	
       
  6795 	list->RestoreL(*aBuffer);
       
  6796 
       
  6797 	RMobilePhone::TMobilePreferredNetworkEntryV3 entry;
       
  6798 
       
  6799 	if (list->Enumerate() != DMMTSY_PHONE_NTWK_LIST_ENTRIES)
       
  6800 		{
       
  6801 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  6802 		CleanupStack::PopAndDestroy(); // list
       
  6803 		return KErrNone;
       
  6804 		}
       
  6805 
       
  6806 	TInt error=KErrNone;
       
  6807 	TInt ret;
       
  6808 	for (TInt i=0; i<DMMTSY_PHONE_NTWK_LIST_ENTRIES; ++i)
       
  6809 		{
       
  6810 		TRAP(ret,entry=list->GetEntryL(i));
       
  6811 		if (ret != KErrNone)
       
  6812 			break;
       
  6813 			switch(i)
       
  6814 			{
       
  6815 			case 0:
       
  6816 				{
       
  6817 				if(entry.iAccess != DMMTSY_PHONE_NTWK_LIST_ACCESS_CAPS_WLAN ||
       
  6818 				entry.iUserDefined != DMMTSY_PHONE_NTWK_LIST_USER_DEFINED_TRUE ||
       
  6819 				entry.iCountryCode != DMMTSY_PHONE_NTWK_LIST_COUNTRY_ID2 ||
       
  6820 				entry.iNetworkId != DMMTSY_PHONE_NTWK_LIST_NETWORK_ID1)
       
  6821 					error  = KErrCorrupt;
       
  6822 				}
       
  6823 				
       
  6824 				break;
       
  6825 			case 1:
       
  6826 				{
       
  6827 				if(entry.iAccess != DMMTSY_PHONE_NTWK_LIST_ACCESS_CAPS_UTRAN ||
       
  6828 				entry.iUserDefined != DMMTSY_PHONE_NTWK_LIST_USER_DEFINED_TRUE ||
       
  6829 				entry.iCountryCode != DMMTSY_PHONE_NTWK_LIST_COUNTRY_ID2 ||
       
  6830 				entry.iNetworkId != DMMTSY_PHONE_NTWK_LIST_NETWORK_ID1)
       
  6831 					error  = KErrCorrupt;
       
  6832 				}
       
  6833 				
       
  6834 				break;
       
  6835 			case 2:
       
  6836 				{
       
  6837 				if(entry.iAccess != DMMTSY_PHONE_NTWK_LIST_ACCESS_CAPS_GSMC ||
       
  6838 				entry.iUserDefined != DMMTSY_PHONE_NTWK_LIST_USER_DEFINED_FALSE ||
       
  6839 				entry.iCountryCode != DMMTSY_PHONE_NTWK_LIST_COUNTRY_ID2 ||
       
  6840 				entry.iNetworkId != DMMTSY_PHONE_NTWK_LIST_NETWORK_ID2)
       
  6841 					error  = KErrCorrupt;
       
  6842 				}
       
  6843 				break;
       
  6844 			case 3:
       
  6845 			default:
       
  6846 				{
       
  6847 				if(entry.iAccess != DMMTSY_PHONE_NTWK_LIST_ACCESS_CAPS_GSM ||
       
  6848 				entry.iUserDefined != DMMTSY_PHONE_NTWK_LIST_USER_DEFINED_FALSE ||
       
  6849 				entry.iCountryCode != DMMTSY_PHONE_NTWK_LIST_COUNTRY_ID1 ||
       
  6850 				entry.iNetworkId != DMMTSY_PHONE_NTWK_LIST_NETWORK_ID1)
       
  6851 					error  = KErrCorrupt;
       
  6852 				}
       
  6853 				break;
       
  6854 			}
       
  6855 		}
       
  6856 	if(error==KErrNone)	
       
  6857 		AddDelayedReq(aTsyReqHandle,this);
       
  6858 	else
       
  6859 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  6860 	CleanupStack::PopAndDestroy(); // list
       
  6861 	return KErrNone;
       
  6862 	}
       
  6863 
       
  6864 TInt CPhoneDMmTsy::StorePreferredNetworksListCancel(TTsyReqHandle aTsyReqHandle)
       
  6865 	{
       
  6866 	LOGTEXT(_L8("CSmspStoreDMmTsy::StorePreferredNetworksListCancel called"));
       
  6867 	RemoveDelayedReq(aTsyReqHandle);
       
  6868 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6869 	return KErrNone;
       
  6870 	}
       
  6871 	
       
  6872 TInt CPhoneDMmTsy::NotifyStorePreferredNetworksListChange(TTsyReqHandle aTsyReqHandle)
       
  6873 	{
       
  6874 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyStorePreferredNetworksListChange called"));
       
  6875 	AddDelayedReq(aTsyReqHandle,this);
       
  6876 	return KErrNone;
       
  6877 	}
       
  6878 	
       
  6879 TInt CPhoneDMmTsy::NotifyStorePreferredNetworksListChangeCancel(TTsyReqHandle aTsyReqHandle)
       
  6880 	{
       
  6881 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyStorePreferredNetworksListChangeCancel called"));
       
  6882 	RemoveDelayedReq(aTsyReqHandle);
       
  6883 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6884 	return KErrNone;
       
  6885 	}
       
  6886 	
       
  6887 TInt CPhoneDMmTsy::GetCipheringIndicatorStatus(TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobileCallCipheringIndicator& aIndicatorStatus)
       
  6888 	{
       
  6889 	LOGTEXT(_L8("CPhoneDMmTsy::GetCipheringIndicatorStatus called"));
       
  6890 	aIndicatorStatus = DMMTSY_PHONE_NET_CIPHER_IND;
       
  6891 	AddDelayedReq(aTsyReqHandle,this);
       
  6892 	return KErrNone;
       
  6893 	}
       
  6894 
       
  6895 TInt CPhoneDMmTsy::GetCipheringIndicatorStatusCancel(TTsyReqHandle aTsyReqHandle)
       
  6896 	{
       
  6897 	LOGTEXT(_L8("CPhoneDMmTsy::GetCipheringIndicatorStatusCancel called"));
       
  6898 	RemoveDelayedReq(aTsyReqHandle);
       
  6899 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6900 	return KErrNone;
       
  6901 	}
       
  6902 	
       
  6903 TInt CPhoneDMmTsy::NotifyCipheringIndicatorStatus(TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobileCallCipheringIndicator& aIndicatorStatus)
       
  6904 	{
       
  6905 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyCipheringIndicatorStatus called"));
       
  6906 	if (!iNotifyCipheringIndicatorStatus++)
       
  6907 		{
       
  6908 		aIndicatorStatus = DMMTSY_PHONE_NET_CIPHER_IND;
       
  6909 		AddDelayedReq(aTsyReqHandle,this);
       
  6910 		}
       
  6911 	return KErrNone;
       
  6912 	}
       
  6913 
       
  6914 TInt CPhoneDMmTsy::NotifyCipheringIndicatorStatusCancel(TTsyReqHandle aTsyReqHandle)
       
  6915 	{
       
  6916 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyCipheringIndicatorStatusCancel called"));
       
  6917 	RemoveDelayedReq(aTsyReqHandle);
       
  6918 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6919 	return KErrNone;
       
  6920 	}
       
  6921 
       
  6922 TInt CPhoneDMmTsy::SetIdentityServiceStatus(TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneIdService aService, RMobilePhone::TMobilePhoneIdServiceSetting aSetting)
       
  6923 	{
       
  6924 	LOGTEXT(_L8("CPhoneDMmTsy::SetIdentityServiceStatus called"));
       
  6925 	if(aService != DMMTSY_PHONE_ID_SERVICE || aSetting != DMMTSY_PHONE_ID_SETTING)
       
  6926 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  6927 	else
       
  6928 		AddDelayedReq(aTsyReqHandle,this);
       
  6929 
       
  6930 	return KErrNone;
       
  6931 	}
       
  6932 
       
  6933 TInt CPhoneDMmTsy::SetIdentityServiceStatusCancel(TTsyReqHandle aTsyReqHandle)
       
  6934 	{
       
  6935 	LOGTEXT(_L8("CPhoneDMmTsy::SetIdentityServiceStatusCancel called"));
       
  6936 	RemoveDelayedReq(aTsyReqHandle);
       
  6937 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6938 	return KErrNone;
       
  6939 	}
       
  6940 
       
  6941 TInt  CPhoneDMmTsy::NotifyIdentityServiceStatus(TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneIdService aService, RMobilePhone::TMobilePhoneIdServiceStatus* aStatus)
       
  6942 	{
       
  6943 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyIdentityServiceStatus called"));
       
  6944 	if (!iNotifyIdentityServiceStatus++)
       
  6945 		{
       
  6946 		if(aService!=DMMTSY_PHONE_ID_SERVICE)
       
  6947 			ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  6948 		else
       
  6949 			{
       
  6950 			*aStatus = DMMTSY_PHONE_ID_STATUS;
       
  6951 			AddDelayedReq(aTsyReqHandle,this);
       
  6952 			}
       
  6953 		}
       
  6954 	return KErrNone;
       
  6955 	}
       
  6956 TInt CPhoneDMmTsy::NotifyIdentityServiceStatusCancel(TTsyReqHandle aTsyReqHandle)
       
  6957 	{
       
  6958 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyIdentityServiceStatusCancel called"));
       
  6959 	RemoveDelayedReq(aTsyReqHandle);
       
  6960 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6961 	return KErrNone;
       
  6962 	}
       
  6963 
       
  6964 TInt  CPhoneDMmTsy::NotifyIdentitySuppressionRejected(TTsyReqHandle aTsyReqHandle)
       
  6965 	{
       
  6966 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyIdentitySuppressionRejected called"));
       
  6967 	if (!iNotifyIdentitySuppressionRejected++)
       
  6968 		{
       
  6969 		AddDelayedReq(aTsyReqHandle,this);
       
  6970 		}
       
  6971 	return KErrNone;
       
  6972 	}
       
  6973 TInt CPhoneDMmTsy::NotifyIdentitySuppressionRejectedCancel(TTsyReqHandle aTsyReqHandle)
       
  6974 	{
       
  6975 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyIdentitySuppressionRejectedCancel called"));
       
  6976 	RemoveDelayedReq(aTsyReqHandle);
       
  6977 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6978 	return KErrNone;
       
  6979 	}
       
  6980 
       
  6981 TInt CPhoneDMmTsy::NotifyMulticallIndicatorChange(TTsyReqHandle aTsyReqHandle, RMobilePhone::TMobilePhoneMulticallIndicator* aMulticallIndicator)
       
  6982 	{
       
  6983 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyMulticallIndicatorChange called"));
       
  6984 	if (!iNotifyMulticallIndicatorChange++)
       
  6985 		{
       
  6986 		*aMulticallIndicator = DMMTSY_PHONE_MULTICALL_IND;
       
  6987 		AddDelayedReq(aTsyReqHandle,this);
       
  6988 		}
       
  6989 	return KErrNone;
       
  6990 	}
       
  6991 
       
  6992 TInt CPhoneDMmTsy::NotifyMulticallIndicatorChangeCancel(TTsyReqHandle aTsyReqHandle)
       
  6993 	{
       
  6994 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyMulticallIndicatorChangeCancel called"));
       
  6995 	RemoveDelayedReq(aTsyReqHandle);
       
  6996 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  6997 	return KErrNone;
       
  6998 	}
       
  6999 	
       
  7000 TInt CPhoneDMmTsy::EnumerateSmartCardApplications(const TTsyReqHandle aTsyReqHandle,TUint* aCount)
       
  7001 	{
       
  7002 	LOGTEXT(_L8("CPhoneDMmTsy::EnumerateSmartCardApplications called"));
       
  7003 
       
  7004 	*aCount = DMMTSY_PHONE_SC_COUNT;
       
  7005 	AddDelayedReq(aTsyReqHandle,this);
       
  7006 	return KErrNone;
       
  7007 	}
       
  7008 
       
  7009 TInt CPhoneDMmTsy::EnumerateSmartCardApplicationsCancel(const TTsyReqHandle aTsyReqHandle)
       
  7010 	{
       
  7011 	LOGTEXT(_L8("CPhoneDMmTsy::EnumerateSmartCardApplicationsCancel called"));
       
  7012 
       
  7013 	RemoveDelayedReq(aTsyReqHandle);
       
  7014 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  7015 	return KErrNone;
       
  7016 	}
       
  7017 	
       
  7018 TInt CPhoneDMmTsy::GetSmartCardApplicationInfo(const TTsyReqHandle aTsyReqHandle,TUint* aAppIndex, TDes8* aInfoBuffer)
       
  7019 	{
       
  7020 	LOGTEXT(_L8("CPhoneDMmTsy::GetSmartCardApplicationInfo called"));
       
  7021 
       
  7022 	if(*aAppIndex == DMMTSY_PHONE_SC_APP_INDEX1)
       
  7023 		{
       
  7024 		RMobilePhone::TSmartCardApplicationInfoV5Pckg *ScAppInfoPckg = REINTERPRET_CAST(RMobilePhone::TSmartCardApplicationInfoV5Pckg *, aInfoBuffer);
       
  7025 		RMobilePhone::TSmartCardApplicationInfoV5 &ScAppInfo = (*ScAppInfoPckg)();
       
  7026 		
       
  7027 		if(ScAppInfo.ExtensionId() != KEtelExtMultimodeV5)
       
  7028 			{
       
  7029 			ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  7030 			}
       
  7031 		else
       
  7032 			{
       
  7033 			ScAppInfo.iAID = DMMTSY_PHONE_SC_AID;
       
  7034 			ScAppInfo.iLabel = DMMTSY_PHONE_SC_LABEL;
       
  7035 			}			
       
  7036 		}
       
  7037 	else
       
  7038 		{
       
  7039 		return DMMTSY_PHONE_SC_OUTOFRANGE;	
       
  7040 		}	
       
  7041 	AddDelayedReq(aTsyReqHandle,this);
       
  7042 	return KErrNone;		
       
  7043 	}
       
  7044 	
       
  7045 TInt CPhoneDMmTsy::GetSmartCardApplicationInfoCancel(const TTsyReqHandle aTsyReqHandle)
       
  7046 	{
       
  7047 	LOGTEXT(_L8("CPhoneDMmTsy::GetSmartCardApplicationInfoCancel called"));
       
  7048 
       
  7049 	RemoveDelayedReq(aTsyReqHandle);
       
  7050 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  7051 	return KErrNone;
       
  7052 	}
       
  7053 	
       
  7054 TInt CPhoneDMmTsy::NotifySmartCardApplicationInfoChange(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TSmartCardApplicationEvent* aEvent, RMobilePhone::TAID* aAID)
       
  7055 	{
       
  7056 	LOGTEXT(_L8("CPhoneDMmTsy::NotifySmartCardApplicationInfoChange called"));
       
  7057 	if(!iNotifySmartCardApplicationInfoChange++)
       
  7058 		{
       
  7059 		*aEvent = DMMTSY_PHONE_SC_EVENT_ACTIVATE;
       
  7060 		*aAID = DMMTSY_PHONE_SC_AID;
       
  7061 		AddDelayedReq(aTsyReqHandle,this);
       
  7062 		}
       
  7063 	return KErrNone;
       
  7064 	}
       
  7065 	
       
  7066 TInt CPhoneDMmTsy::NotifySmartCardApplicationInfoChangeCancel(const TTsyReqHandle aTsyReqHandle)
       
  7067 	{
       
  7068 	LOGTEXT(_L8("CPhoneDMmTsy::NotifySmartCardApplicationInfoChange called"));
       
  7069 
       
  7070 	RemoveDelayedReq(aTsyReqHandle);
       
  7071 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  7072 	return KErrNone;
       
  7073 	}
       
  7074 	
       
  7075 TInt CPhoneDMmTsy::SetSmartCardApplicationStatus(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TAID* aAID, RMobilePhone::TSmartCardApplicationAction aAction)
       
  7076 	{
       
  7077 	LOGTEXT(_L8("CPhoneDMmTsy::SetSmartCardApplicationStatus called"));
       
  7078 
       
  7079 	if(*aAID != DMMTSY_PHONE_SC_AID2 || aAction != DMMTSY_PHONE_SC_ACTION_TERMINATE)
       
  7080 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  7081 	else		
       
  7082 		AddDelayedReq(aTsyReqHandle,this);
       
  7083 	return KErrNone;		
       
  7084 	}
       
  7085 	
       
  7086 TInt CPhoneDMmTsy::SetSmartCardApplicationStatusCancel(const TTsyReqHandle aTsyReqHandle)
       
  7087 	{
       
  7088 	LOGTEXT(_L8("CPhoneDMmTsy::SetSmartCardApplicationStatusCancel called"));
       
  7089 
       
  7090 	RemoveDelayedReq(aTsyReqHandle);
       
  7091 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  7092 	return KErrNone;
       
  7093 	}
       
  7094 	
       
  7095 TInt CPhoneDMmTsy::GetScFileInfo(const TTsyReqHandle aTsyReqHandle, const RMobilePhone::TScFilePath& aFilePathId, TDes8* aInfo)
       
  7096 	{
       
  7097 	LOGTEXT(_L8("CPhoneDMmTsy::GetScFileInfo called"));
       
  7098 
       
  7099 	if(aFilePathId.iAID != DMMTSY_PHONE_SC_AID || aFilePathId.iPath != DMMTSY_PHONE_SC_PATH_REF)
       
  7100 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  7101 	else		
       
  7102 		{
       
  7103 		RMobilePhone::TScFileInfoV5Pckg *scFileInfoPckg = REINTERPRET_CAST(RMobilePhone::TScFileInfoV5Pckg*, aInfo);
       
  7104 		RMobilePhone::TScFileInfoV5 &scFileInfo = (*scFileInfoPckg)();
       
  7105 		
       
  7106 		if(scFileInfo.ExtensionId() != KEtelExtMultimodeV5)
       
  7107 			{
       
  7108 			ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  7109 			}
       
  7110 		else
       
  7111 			{
       
  7112 			scFileInfo.iFileID = DMMTSY_PHONE_SC_FILEID;
       
  7113 			scFileInfo.iNumberRecords = DMMTSY_PHONE_SC_NORECORDS;
       
  7114 			scFileInfo.iRecordLength = DMMTSY_PHONE_SC_RECORD_SIZE;
       
  7115 			scFileInfo.iType = DMMTSY_PHONE_SC_TYPE;
       
  7116 			scFileInfo.iTotalLength = DMMTSY_PHONE_SC_FILESIZE;
       
  7117 			}	
       
  7118 		AddDelayedReq(aTsyReqHandle,this);
       
  7119 		}		
       
  7120 	return KErrNone;		
       
  7121 	}
       
  7122 	
       
  7123 TInt CPhoneDMmTsy::GetScFileInfoCancel(const TTsyReqHandle aTsyReqHandle)
       
  7124 	{
       
  7125 	LOGTEXT(_L8("CPhoneDMmTsy::GetScFileInfoCancel called"));
       
  7126 
       
  7127 	RemoveDelayedReq(aTsyReqHandle);
       
  7128 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  7129 	return KErrNone;
       
  7130 	}
       
  7131 	
       
  7132 TInt CPhoneDMmTsy::ReadScFile(const TTsyReqHandle aTsyReqHandle, const RMobilePhone::TScFilePathWithAccessOffsets& aFilePathOffsets, TDes8* aReadBuffer)
       
  7133 	{
       
  7134 	LOGTEXT(_L8("CPhoneDMmTsy::ReadScFile called"));
       
  7135 	
       
  7136 	if(aFilePathOffsets.iAID != DMMTSY_PHONE_SC_AID || aFilePathOffsets.iPath != DMMTSY_PHONE_SC_PATH_REF || aFilePathOffsets.iType != DMMTSY_PHONE_SC_TYPE || aFilePathOffsets.iCount != DMMTSY_PHONE_SC_NORECORDS || aFilePathOffsets.iStartOffset != DMMTSY_PHONE_SC_START_OFFSET)
       
  7137 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  7138 	else		
       
  7139 		{
       
  7140 		aReadBuffer->Zero();
       
  7141 		aReadBuffer->Append(DMMTSY_PHONE_SC_RECORD0);
       
  7142 		aReadBuffer->Append(DMMTSY_PHONE_SC_RECORD1);
       
  7143 		aReadBuffer->Append(DMMTSY_PHONE_SC_RECORD2);
       
  7144 		
       
  7145 		AddDelayedReq(aTsyReqHandle,this);
       
  7146 		}
       
  7147 	return KErrNone;
       
  7148 	}
       
  7149 	
       
  7150 TInt CPhoneDMmTsy::ReadScFileCancel(const TTsyReqHandle aTsyReqHandle)
       
  7151 	{
       
  7152 	LOGTEXT(_L8("CPhoneDMmTsy::ReadScFileCancel called"));
       
  7153 
       
  7154 	RemoveDelayedReq(aTsyReqHandle);
       
  7155 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  7156 	return KErrNone;	
       
  7157 	}
       
  7158 	
       
  7159 TInt CPhoneDMmTsy::UpdateScFile(const TTsyReqHandle aTsyReqHandle, const RMobilePhone::TScFilePathWithAccessOffsets& aFilePathOffsets, TDes8* aWriteBuffer)
       
  7160 	{
       
  7161 	LOGTEXT(_L8("CPhoneDMmTsy::UpdateScFile called"));
       
  7162 	
       
  7163 	TInt startoffset = 0;
       
  7164 	TPtr8 record0(aWriteBuffer->MidTPtr(startoffset,DMMTSY_PHONE_SC_RECORD_SIZE));
       
  7165 	startoffset += DMMTSY_PHONE_SC_RECORD_SIZE;
       
  7166 	TPtr8 record1(aWriteBuffer->MidTPtr(startoffset,DMMTSY_PHONE_SC_RECORD_SIZE));
       
  7167 	startoffset += DMMTSY_PHONE_SC_RECORD_SIZE;
       
  7168 	TPtr8 record2(aWriteBuffer->MidTPtr(startoffset,DMMTSY_PHONE_SC_RECORD_SIZE));
       
  7169 		
       
  7170 	if(aFilePathOffsets.iAID != DMMTSY_PHONE_SC_AID || aFilePathOffsets.iPath != DMMTSY_PHONE_SC_PATH_REF || aFilePathOffsets.iType != DMMTSY_PHONE_SC_TYPE || aFilePathOffsets.iCount != DMMTSY_PHONE_SC_NORECORDS || aFilePathOffsets.iStartOffset != DMMTSY_PHONE_SC_START_OFFSET)
       
  7171 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  7172 	else if(record0 != DMMTSY_PHONE_SC_RECORD0 || record1 != DMMTSY_PHONE_SC_RECORD1 || record2 != DMMTSY_PHONE_SC_RECORD2)
       
  7173 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  7174 	else	
       
  7175 		AddDelayedReq(aTsyReqHandle,this);
       
  7176 		
       
  7177 	return KErrNone;
       
  7178 	}
       
  7179 	
       
  7180 TInt CPhoneDMmTsy::UpdateScFileCancel(const TTsyReqHandle aTsyReqHandle)
       
  7181 	{
       
  7182 	LOGTEXT(_L8("CPhoneDMmTsy::UpdateScFileCancel called"));
       
  7183 
       
  7184 	RemoveDelayedReq(aTsyReqHandle);
       
  7185 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  7186 	return KErrNone;	
       
  7187 	}
       
  7188 	
       
  7189 TInt CPhoneDMmTsy::GetCurrentActiveUSimApplication(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TAID* aAID)
       
  7190 	{
       
  7191 	LOGTEXT(_L8("CPhoneDMmTsy::GetCurrentActiveUSimApplication called"));
       
  7192 
       
  7193 	*aAID = DMMTSY_PHONE_SC_AID;
       
  7194 	AddDelayedReq(aTsyReqHandle,this);
       
  7195 	return KErrNone;		
       
  7196 	}
       
  7197 	
       
  7198 TInt CPhoneDMmTsy::GetCurrentActiveUSimApplicationCancel(const TTsyReqHandle aTsyReqHandle)
       
  7199 	{
       
  7200 	LOGTEXT(_L8("CPhoneDMmTsy::GetCurrentActiveUSimApplicationCancel called"));
       
  7201 
       
  7202 	RemoveDelayedReq(aTsyReqHandle);
       
  7203 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  7204 	return KErrNone;	
       
  7205 	}
       
  7206 	
       
  7207 CPhoneDMmTsy* CPhoneDMmTsy::This(TAny* aPtr)
       
  7208 	{
       
  7209 	return REINTERPRET_CAST(CPhoneDMmTsy*,aPtr);
       
  7210 	}
       
  7211 
       
  7212 TInt CPhoneDMmTsy::GetAuthorizationInfoPhase1(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aId, TInt* aBufSize)
       
  7213 	{
       
  7214 	LOGTEXT(_L8("CPhoneDMmTsy::GetAuthorizationInfoPhase1 called"));
       
  7215 	TInt ret(KErrNone);
       
  7216 	TInt leaveCode(KErrNone);
       
  7217 	TRAP(leaveCode, ret=ProcessGetAuthorizationInfoPhase1L(aTsyReqHandle, aId, aBufSize););
       
  7218 	if (leaveCode != KErrNone)
       
  7219 		ReqCompleted(aTsyReqHandle,leaveCode);
       
  7220 	return ret;
       
  7221 	};
       
  7222 
       
  7223 TInt CPhoneDMmTsy::ProcessGetAuthorizationInfoPhase1L(const TTsyReqHandle aTsyReqHandle,
       
  7224 											 RMobilePhone::TClientId* aClient,
       
  7225 											 TInt* aBufSize)
       
  7226 	{
       
  7227 	LOGTEXT(_L8("CPhoneDMmTsy::GetAuthorizationInfoPhase1 called"));	
       
  7228 
       
  7229 	// Store the streamed list and the client ID
       
  7230 	CListReadAllAttempt* read=CListReadAllAttempt::NewL(aClient,aTsyReqHandle);
       
  7231 	CleanupStack::PushL(read);
       
  7232 	
       
  7233 	HBufC8* iBuff=NULL;
       
  7234 	iAuthInfo->ExternalizeL(iBuff);	
       
  7235 	CleanupStack::PushL(iBuff);
       
  7236 		
       
  7237 	CBufFlat* buf=CBufFlat::NewL(iBuff->Length());
       
  7238 	CleanupStack::PushL(buf);
       
  7239 	buf->InsertL(0,*iBuff);	
       
  7240 	
       
  7241 	read->iListBuf = buf;
       
  7242 	CleanupStack::Pop(buf);	
       
  7243 	CleanupStack::PopAndDestroy(iBuff);
       
  7244 	
       
  7245 	iGetAuthorizationData->AppendL(read);
       
  7246 	CleanupStack::Pop(); // pop the CListReadAllAttempt
       
  7247 	
       
  7248 	// return the CBufBase’s size to client
       
  7249 	*aBufSize=(read->iListBuf)->Size();
       
  7250 	
       
  7251 	
       
  7252 	// Complete first phase of list retrieval
       
  7253 	AddDelayedReq(aTsyReqHandle,this);
       
  7254 	return KErrNone;
       
  7255 	}
       
  7256 TInt CPhoneDMmTsy::GetAuthorizationInfoPhase2(TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aClient, TDes8* aBuffer)
       
  7257 	{
       
  7258 	LOGTEXT(_L8("CPhoneDMmTsy::GetAuthorizationInfoPhase2 called"));	
       
  7259 	CListReadAllAttempt* read=NULL;
       
  7260 	// Find the get detected network attempt from this client
       
  7261 	for (TInt i=0; i<iGetAuthorizationData->Count(); ++i)
       
  7262 		{
       
  7263 		read = iGetAuthorizationData->At(i);
       
  7264 		if ((read->iClient.iSessionHandle==aClient->iSessionHandle) &&
       
  7265 		    (read->iClient.iSubSessionHandle==aClient->iSubSessionHandle))
       
  7266 			{
       
  7267 			TPtr8 bufPtr((read->iListBuf)->Ptr(0));
       
  7268 			// Copy the streamed list to the client
       
  7269 			aBuffer->Copy(bufPtr);
       
  7270 			delete read;
       
  7271 			iGetAuthorizationData->Delete(i);
       
  7272 			ReqCompleted(aTsyReqHandle,KErrNone);
       
  7273 			return KErrNone;
       
  7274 			}
       
  7275 		}
       
  7276 	ReqCompleted(aTsyReqHandle,KErrBadHandle);
       
  7277 	return KErrNone;
       
  7278 	}
       
  7279 
       
  7280 
       
  7281 TInt CPhoneDMmTsy::GetAuthorizationInfoCancel(const TTsyReqHandle aTsyReqHandle)
       
  7282 	{
       
  7283 	LOGTEXT(_L8("CPhoneDMmTsy::GetAuthorizationInfoCancel called"));
       
  7284 
       
  7285 	// Remove the read all attempt from iGetAuthorizationData
       
  7286 	CListReadAllAttempt* read=NULL;
       
  7287 	for (TInt i=0; i<iGetAuthorizationData->Count(); ++i)
       
  7288 		{
       
  7289 		read = iGetAuthorizationData->At(i);
       
  7290 		if (read->iReqHandle == aTsyReqHandle)
       
  7291 			{
       
  7292 			delete read;
       
  7293 			iGetAuthorizationData->Delete(i);
       
  7294 			break;
       
  7295 			}
       
  7296 		}
       
  7297 		
       
  7298 	RemoveDelayedReq(aTsyReqHandle);
       
  7299 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  7300 	return KErrNone;
       
  7301 	}
       
  7302 
       
  7303 TInt CPhoneDMmTsy::GetAuthenticationData(const TTsyReqHandle aTsyReqHandle,TDes8* aAuthenticationData)
       
  7304 	{
       
  7305 	LOGTEXT(_L8("CPhoneDMmTsy::AuthentificationData called"));
       
  7306 	TInt ret(KErrNone);
       
  7307 	User::After(300000); // wait to have KRequestPending
       
  7308 	RMobilePhone::TImsAuthenticateDataV5Pckg* authenticateDataPckgd=(RMobilePhone::TImsAuthenticateDataV5Pckg*)aAuthenticationData;
       
  7309 	RMobilePhone::TImsAuthenticateDataV5& authenticateData=(*authenticateDataPckgd)();
       
  7310 	if(authenticateData.iAUTN!=DMMTSY_PHONE_AUTN_IN || authenticateData.iRAND!=DMMTSY_PHONE_RAND_IN)
       
  7311 		{
       
  7312 		ret=KErrCorrupt;
       
  7313 		ReqCompleted(aTsyReqHandle,ret);
       
  7314 		}
       
  7315 	else
       
  7316 		{
       
  7317 		authenticateData.iAUTN=DMMTSY_PHONE_AUTN_OUT;
       
  7318 		authenticateData.iRAND=DMMTSY_PHONE_RAND_OUT;
       
  7319 		authenticateData.iRES=DMMTSY_PHONE_RES_OUT;
       
  7320 		authenticateData.iIK=DMMTSY_PHONE_IK_OUT;
       
  7321 		authenticateData.iCK=DMMTSY_PHONE_CK_OUT;
       
  7322 		authenticateData.iAUTS=DMMTSY_PHONE_AUTS_OUT;
       
  7323 		AddDelayedReq(aTsyReqHandle,this);
       
  7324 		}
       
  7325 	return KErrNone;
       
  7326 	}
       
  7327 
       
  7328 TInt CPhoneDMmTsy::GetAuthenticationDataCancel(const TTsyReqHandle aTsyReqHandle)
       
  7329 	{
       
  7330 	LOGTEXT(_L8("CPhoneDMmTsy::AuthentificationDataCancel called"));
       
  7331 	RemoveDelayedReq(aTsyReqHandle);
       
  7332 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  7333 	return KErrNone;
       
  7334 	}
       
  7335 	
       
  7336 TInt CPhoneDMmTsy::NotifyImsAuthorizationInfoChanged(const TTsyReqHandle aTsyReqHandle)
       
  7337 	{
       
  7338 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyImsAuthorizationInfoChanged called"));
       
  7339 	if (!iNotifyImsAuthorizationInfoChange++)
       
  7340 		{
       
  7341 		AddDelayedReq(aTsyReqHandle,this);
       
  7342 		}
       
  7343 	return KErrNone;
       
  7344 	
       
  7345 	}
       
  7346 TInt CPhoneDMmTsy::NotifyImsAuthorizationInfoChangedCancel(const TTsyReqHandle aTsyReqHandle)
       
  7347 	{
       
  7348 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyImsAuthorizationInfoChangedCancel called"));
       
  7349 	RemoveDelayedReq(aTsyReqHandle);
       
  7350 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  7351 	return KErrNone;	
       
  7352 	}
       
  7353 
       
  7354 TInt CPhoneDMmTsy::GetSmartCardAuthenticationData(const TTsyReqHandle aTsyReqHandle, TDes8* aSmartCardAuthData, RMobilePhone::TAID* aAID)
       
  7355 	{
       
  7356 	LOGTEXT(_L8("CPhoneDMmTsy::GetSmartCardAuthenticationData called"));
       
  7357 
       
  7358 	RMobilePhone::TSmartCardAuthenticateDataV6Pckg *smartCardAuthenticateDataPckg =
       
  7359 	  reinterpret_cast<RMobilePhone::TSmartCardAuthenticateDataV6Pckg*>(aSmartCardAuthData);
       
  7360 
       
  7361 	RMobilePhone::TSmartCardAuthenticateDataV6 &smartCardAuthenticateData =
       
  7362 	  (*smartCardAuthenticateDataPckg)();
       
  7363 
       
  7364 	if (aAID != NULL)
       
  7365 		{
       
  7366 		if (*aAID != DMMTSY_PHONE_GBA_AID() && 
       
  7367 			*aAID != DMMTSY_PHONE_EAPAPP_AID() &&
       
  7368 			*aAID != DMMTSY_PHONE_MBMS_AID())
       
  7369 			{
       
  7370 			ReqCompleted(aTsyReqHandle, KErrCorrupt);
       
  7371 			return KErrNone;
       
  7372 			}
       
  7373 		}
       
  7374 	// USIM authentication
       
  7375 	if(smartCardAuthenticateData.ExtensionId() == KEtelExtMultimodeV6)
       
  7376 		{
       
  7377 		if(smartCardAuthenticateData.iAUTN != DMMTSY_PHONE_SC_AUTN_IN ||
       
  7378 		  smartCardAuthenticateData.iRAND != DMMTSY_PHONE_SC_RAND_IN)
       
  7379 			{
       
  7380 			ReqCompleted(aTsyReqHandle, KErrCorrupt);
       
  7381 			}
       
  7382 		else
       
  7383 			{
       
  7384 			smartCardAuthenticateData.iAUTN=DMMTSY_PHONE_SC_AUTN_OUT;
       
  7385 			smartCardAuthenticateData.iRAND=DMMTSY_PHONE_SC_RAND_OUT;
       
  7386 			smartCardAuthenticateData.iRES=DMMTSY_PHONE_SC_RES_OUT;
       
  7387 			smartCardAuthenticateData.iIK=DMMTSY_PHONE_SC_IK_OUT;
       
  7388 			smartCardAuthenticateData.iCK=DMMTSY_PHONE_SC_CK_OUT;
       
  7389 			smartCardAuthenticateData.iAUTS=DMMTSY_PHONE_SC_AUTS_OUT;
       
  7390 			smartCardAuthenticateData.iKc=DMMTSY_PHONE_SC_KC_OUT;
       
  7391 			AddDelayedReq(aTsyReqHandle,this);
       
  7392 			}
       
  7393 		}
       
  7394 	else if(smartCardAuthenticateData.ExtensionId() == RMobilePhone::KETelMobileGbaBootstrapAuthDataV8)
       
  7395 		{
       
  7396 		RMobilePhone::TGbaBootstrapAuthDataV8Pckg *gbaBootstrapAuthenticateDataPckg =
       
  7397 		  STATIC_CAST(RMobilePhone::TGbaBootstrapAuthDataV8Pckg*,aSmartCardAuthData);
       
  7398 
       
  7399 		RMobilePhone::TGbaBootstrapAuthDataV8 &gbaBootstrapAuthData =
       
  7400 		  (*gbaBootstrapAuthenticateDataPckg)();
       
  7401 		
       
  7402 		 if(gbaBootstrapAuthData.iAUTN != DMMTSY_PHONE_GBA_AUTN_IN ||
       
  7403 				gbaBootstrapAuthData.iRAND != DMMTSY_PHONE_GBA_RAND_IN)
       
  7404 			{
       
  7405 			iGbaBootstrapAuthDataFail++;
       
  7406 			switch(iGbaBootstrapAuthDataFail)
       
  7407 				{
       
  7408 			case 1:
       
  7409 				gbaBootstrapAuthData.iRES=DMMTSY_PHONE_GBA_FAIL_RES_OUT;
       
  7410 				gbaBootstrapAuthData.iAUTS=DMMTSY_PHONE_GBA_FAIL_AUTS_OUT;
       
  7411 				ReqCompleted(aTsyReqHandle, KErrMMEtelAuthVerificationFailure);
       
  7412 				break;
       
  7413 			
       
  7414 			case 2:
       
  7415 				gbaBootstrapAuthData.iRES=DMMTSY_PHONE_GBA_FAIL_RES_OUT;
       
  7416 				gbaBootstrapAuthData.iAUTS=DMMTSY_PHONE_GBA_SUCC_AUTS_OUT;
       
  7417 				ReqCompleted(aTsyReqHandle, KErrMMEtelAuthMacInvalid);
       
  7418 				break;
       
  7419 				
       
  7420 			case 3:
       
  7421 			default:
       
  7422 				gbaBootstrapAuthData.iRES=DMMTSY_PHONE_GBA_FAIL_RES_OUT;
       
  7423 				gbaBootstrapAuthData.iAUTS=DMMTSY_PHONE_GBA_SUCC_AUTS_OUT;
       
  7424 				ReqCompleted(aTsyReqHandle, KErrInUse);
       
  7425 				iGbaBootstrapAuthDataFail=0;
       
  7426 				break;
       
  7427 				}
       
  7428 			}
       
  7429 		else
       
  7430 			{
       
  7431 			gbaBootstrapAuthData.iRES=DMMTSY_PHONE_GBA_SUCC_RES_OUT;
       
  7432 			gbaBootstrapAuthData.iAUTS=DMMTSY_PHONE_GBA_SUCC_AUTS_OUT;
       
  7433 			AddDelayedReq(aTsyReqHandle,this);
       
  7434 			}
       
  7435 		}
       
  7436 	else if(smartCardAuthenticateData.ExtensionId() == RMobilePhone::KETelMobileGbaNafAuthDataV8)
       
  7437 		{
       
  7438 		RMobilePhone::TGbaNafAuthDataV8Pckg *gbaNafAuthenticateDataPckg =
       
  7439 		  STATIC_CAST(RMobilePhone::TGbaNafAuthDataV8Pckg*,aSmartCardAuthData);
       
  7440 
       
  7441 		RMobilePhone::TGbaNafAuthDataV8 &gbaNafAuthData=
       
  7442 		  (*gbaNafAuthenticateDataPckg)();
       
  7443 		if(gbaNafAuthData.iNafId != DMMTSY_PHONE_GBA_VALID_NAFID ||
       
  7444 				gbaNafAuthData.iImpi != DMMTSY_PHONE_GBA_VALID_IMPI)
       
  7445 			{
       
  7446 			iGbaNafAuthDataFail++;
       
  7447 			switch(iGbaNafAuthDataFail)
       
  7448 				{	
       
  7449 			case 1:
       
  7450 				ReqCompleted(aTsyReqHandle, KErrMMEtelAuthKeyNotFound);
       
  7451 				break;
       
  7452 				
       
  7453 			case 2:
       
  7454 				ReqCompleted(aTsyReqHandle, KErrCorrupt);
       
  7455 				break;	
       
  7456 					
       
  7457 			case 3:
       
  7458 			default:
       
  7459 				ReqCompleted(aTsyReqHandle, KErrInUse);
       
  7460 				iGbaNafAuthDataFail=0;
       
  7461 				break;	
       
  7462 				}
       
  7463 			}
       
  7464 		else
       
  7465 			{
       
  7466 			gbaNafAuthData.iKsExtNaf=DMMTSY_PHONE_GBA_KS_EXTNAF;
       
  7467 			AddDelayedReq(aTsyReqHandle,this);
       
  7468 			}
       
  7469 		}
       
  7470 	else if(smartCardAuthenticateData.ExtensionId() == RMobilePhone::KETelMobileMbmsMskUpdateDataV8)
       
  7471 		{
       
  7472 		RMobilePhone::TMbmsMskUpdateDataV8Pckg *mbmsMskUpdateAuthenticateDataPckg =
       
  7473 		  STATIC_CAST(RMobilePhone::TMbmsMskUpdateDataV8Pckg*,aSmartCardAuthData);
       
  7474 
       
  7475 		RMobilePhone::TMbmsMskUpdateDataV8 &mbmsMskUpdateAuthData=
       
  7476 		  (*mbmsMskUpdateAuthenticateDataPckg)();
       
  7477 		 if(mbmsMskUpdateAuthData.iInputMikey == DMMTSY_PHONE_MBMS_INVALID_IMIKEY)
       
  7478 			{
       
  7479 			iMbmsMskUpdateAuthDataFail++;
       
  7480 			switch(iMbmsMskUpdateAuthDataFail)
       
  7481 				{
       
  7482 			case 1:
       
  7483 				ReqCompleted(aTsyReqHandle, KErrMMEtelAuthKeyNotFound);
       
  7484 				break;
       
  7485 					
       
  7486 			case 2:
       
  7487 				ReqCompleted(aTsyReqHandle, KErrMMEtelAuthKeyInvalid);
       
  7488 				break;
       
  7489 					
       
  7490 			case 3:
       
  7491 				ReqCompleted(aTsyReqHandle, KErrCorrupt);
       
  7492 				break;
       
  7493 					
       
  7494 			case 4:
       
  7495 			default:
       
  7496 				ReqCompleted(aTsyReqHandle, KErrInUse);
       
  7497 				iMbmsMskUpdateAuthDataFail=0;
       
  7498 				break;
       
  7499 				}
       
  7500 			} 
       
  7501 		else if(mbmsMskUpdateAuthData.iInputMikey == DMMTSY_PHONE_MBMS_VALID_IMIKEY_WO_VBIT)
       
  7502 			{
       
  7503 			AddDelayedReq(aTsyReqHandle,this);
       
  7504 			}
       
  7505 		else if (mbmsMskUpdateAuthData.iInputMikey == DMMTSY_PHONE_MBMS_VALID_IMIKEY_W_VBIT)
       
  7506 			{
       
  7507 			mbmsMskUpdateAuthData.iOutputMikey=DMMTSY_PHONE_MBMS_OMIKEY_FOR_W_VBIT;
       
  7508 			AddDelayedReq(aTsyReqHandle,this);
       
  7509 			}
       
  7510 		}
       
  7511 		
       
  7512 	else if(smartCardAuthenticateData.ExtensionId() == RMobilePhone::KETelMobileMbmsMtkGenerateDataV8)
       
  7513 		{
       
  7514 		RMobilePhone::TMbmsMtkGenerateDataV8Pckg *mbmsMtkGenerateAuthenticateDataPckg =
       
  7515 		  STATIC_CAST(RMobilePhone::TMbmsMtkGenerateDataV8Pckg*,aSmartCardAuthData);
       
  7516 
       
  7517 		RMobilePhone::TMbmsMtkGenerateDataV8 &mbmsMtkGenerateAuthData=
       
  7518 		  (*mbmsMtkGenerateAuthenticateDataPckg)();
       
  7519 		  
       
  7520 		if(mbmsMtkGenerateAuthData.iMikey!= DMMTSY_PHONE_MBMS_VALID_IMIKEY)
       
  7521 			{
       
  7522 			iMbmsMtkGenerateAuthDataFail++;
       
  7523 			switch(iMbmsMtkGenerateAuthDataFail)
       
  7524 				{
       
  7525 			case 1:
       
  7526 				ReqCompleted(aTsyReqHandle, KErrMMEtelAuthKeyNotFound);
       
  7527 				break;
       
  7528 						
       
  7529 			case 2:
       
  7530 				ReqCompleted(aTsyReqHandle, KErrMMEtelAuthKeyInvalid);
       
  7531 				break;
       
  7532 						
       
  7533 			case 3:
       
  7534 				ReqCompleted(aTsyReqHandle, KErrMMEtelAuthMacInvalid);
       
  7535 				break;
       
  7536 						
       
  7537 			case 4:
       
  7538 				ReqCompleted(aTsyReqHandle, KErrCorrupt);
       
  7539 				break;
       
  7540 						
       
  7541 			case 5:
       
  7542 			default:
       
  7543 				ReqCompleted(aTsyReqHandle, KErrInUse);
       
  7544 				iMbmsMtkGenerateAuthDataFail=0;
       
  7545 				break;
       
  7546 				}
       
  7547 			}
       
  7548 		else
       
  7549 			{
       
  7550 			mbmsMtkGenerateAuthData.iMtk = DMMTSY_PHONE_MBMS_VALID_MTK;
       
  7551 			mbmsMtkGenerateAuthData.iSaltKey = DMMTSY_PHONE_MBMS_VALID_SALTKEY;
       
  7552 			AddDelayedReq(aTsyReqHandle,this);
       
  7553 			}
       
  7554 		}
       
  7555 	else if(smartCardAuthenticateData.ExtensionId() == RMobilePhone::KETelMobileMbmsMskDeleteDataV8)
       
  7556 		{
       
  7557 		RMobilePhone::TMbmsMskDeleteDataV8Pckg *mbmsMskDeleteAuthenticateDataPckg =
       
  7558 		  STATIC_CAST(RMobilePhone::TMbmsMskDeleteDataV8Pckg*,aSmartCardAuthData);
       
  7559 
       
  7560 		RMobilePhone::TMbmsMskDeleteDataV8 &mbmsMskDeleteAuthData=
       
  7561 		  (*mbmsMskDeleteAuthenticateDataPckg)();
       
  7562 		  
       
  7563 		if((mbmsMskDeleteAuthData.iKeyDomainId!= DMMTSY_PHONE_MBMS_VALID_KEYDMN) ||
       
  7564 		   (mbmsMskDeleteAuthData.iMskIdKeyGroup != DMMTSY_PHONE_MBMS_VALID_MSKIDGRP))	
       
  7565 			{
       
  7566 			iMbmsMskDeleteAuthDataFail++;
       
  7567 			switch(iMbmsMskDeleteAuthDataFail)
       
  7568 				{
       
  7569 			case 1:
       
  7570 				ReqCompleted(aTsyReqHandle, KErrNotFound);
       
  7571 				break;
       
  7572 					
       
  7573 			case 2:
       
  7574 			default:
       
  7575 				ReqCompleted(aTsyReqHandle, KErrInUse);
       
  7576 				iMbmsMskDeleteAuthDataFail=0;
       
  7577 				break;
       
  7578 				}	
       
  7579 			}
       
  7580 		else
       
  7581 			{
       
  7582 			AddDelayedReq(aTsyReqHandle,this);	
       
  7583 			}
       
  7584 		}
       
  7585 	else if(smartCardAuthenticateData.ExtensionId() == RMobilePhone::KETelMobileMbmsMukDeleteDataV8)
       
  7586 		{
       
  7587 		RMobilePhone::TMbmsMukDeleteDataV8Pckg *mbmsMukDeleteAuthenticateDataPckg =
       
  7588 		  STATIC_CAST(RMobilePhone::TMbmsMukDeleteDataV8Pckg*,aSmartCardAuthData);
       
  7589 
       
  7590 		RMobilePhone::TMbmsMukDeleteDataV8 &mbmsMukDeleteAuthData=
       
  7591 		  (*mbmsMukDeleteAuthenticateDataPckg)();
       
  7592 		  
       
  7593 		if(mbmsMukDeleteAuthData.iMukIdTlv!= DMMTSY_PHONE_MBMS_VALID_MUKID) 
       
  7594 			{
       
  7595 			iMbmsMukDeleteAuthDataFail++;
       
  7596 			switch(iMbmsMukDeleteAuthDataFail)
       
  7597 				{
       
  7598 			case 1:
       
  7599 				ReqCompleted(aTsyReqHandle, KErrNotFound);
       
  7600 				break;
       
  7601 					
       
  7602 			case 2:
       
  7603 			default:
       
  7604 				ReqCompleted(aTsyReqHandle, KErrInUse);
       
  7605 				iMbmsMukDeleteAuthDataFail=0;
       
  7606 				break;
       
  7607 				}	
       
  7608 			}
       
  7609 		else
       
  7610 			{
       
  7611 			AddDelayedReq(aTsyReqHandle,this);	
       
  7612 			}
       
  7613 		}
       
  7614 	return KErrNone;
       
  7615 	}
       
  7616 
       
  7617 TInt CPhoneDMmTsy::GetSmartCardAuthenticationDataCancel(const TTsyReqHandle aTsyReqHandle)
       
  7618 	{
       
  7619 	LOGTEXT(_L8("CPhoneDMmTsy::GetSmartCardAuthenticationDataCancel called"));
       
  7620 	RemoveDelayedReq(aTsyReqHandle);
       
  7621 	ReqCompleted(aTsyReqHandle, KErrCancel);
       
  7622 	return KErrNone;
       
  7623 	}
       
  7624 	
       
  7625 TInt CPhoneDMmTsy::SetEmergencyClient(const TTsyReqHandle aTsyReqHandle, TUint32* aEmergencyRequest)
       
  7626 	{
       
  7627 	LOGTEXT(_L8("CPhoneDMmTsy::SetEmergencyClient called"));
       
  7628 	
       
  7629 	switch (*aEmergencyRequest)
       
  7630 		{
       
  7631 	case RPhone::EEmergencyLCSRequest:
       
  7632 	case RPhone::EEmergencyCSVoiceCallRequest:
       
  7633 	case RPhone::EEmergencyLCSRequest | RPhone::EEmergencyCSVoiceCallRequest:
       
  7634 		ReqCompleted(aTsyReqHandle, KErrNone);
       
  7635 		break;
       
  7636 	default:
       
  7637 		return KErrCorrupt;
       
  7638 		}
       
  7639 	
       
  7640 	return KErrNone;
       
  7641 	}
       
  7642 
       
  7643 //
       
  7644 // First Ordinal Functions
       
  7645 //
       
  7646 extern "C"
       
  7647 	{
       
  7648 	IMPORT_C CPhoneFactoryBase* LibEntry();	// Force "Proper Name" export
       
  7649 	}
       
  7650 
       
  7651 EXPORT_C CPhoneFactoryBase* LibEntry()
       
  7652 	{
       
  7653 	CPhoneFactoryDMmTsy* factory = NULL;
       
  7654 	TRAP_IGNORE(factory = CPhoneFactoryDMmTsy::NewL());
       
  7655 	return factory;
       
  7656 	}
       
  7657 
       
  7658 //
       
  7659 // DMmTsy Phone Factory Functions
       
  7660 //
       
  7661 
       
  7662 CPhoneFactoryDMmTsy* CPhoneFactoryDMmTsy::NewL()
       
  7663 	{
       
  7664 	CPhoneFactoryDMmTsy *This = new (ELeave) CPhoneFactoryDMmTsy;
       
  7665 	CleanupStack::PushL(This);
       
  7666 	This->ConstructL();
       
  7667 	CleanupStack::Pop();
       
  7668 	return This;
       
  7669 	}
       
  7670 
       
  7671 CPhoneFactoryDMmTsy::CPhoneFactoryDMmTsy()
       
  7672 	{
       
  7673 	iVersion=TVersion(	KTsyEtelMajorVersionNumber,
       
  7674 						KTsyEtelMinorVersionNumber,
       
  7675 						KTsyEtelBuildVersionNumber);
       
  7676 	}
       
  7677 
       
  7678 CPhoneFactoryDMmTsy::~CPhoneFactoryDMmTsy()
       
  7679 	{
       
  7680 	LOGDESTROY();
       
  7681 	}
       
  7682 
       
  7683 CPhoneBase * CPhoneFactoryDMmTsy::NewPhoneL(const TDesC& aName)
       
  7684 	{
       
  7685 	if (aName.Compare(DMMTSY_PHONE_NAME)==KErrNone)
       
  7686 		return CPhoneDMmTsy::NewL(this);
       
  7687 	else if (aName.Compare(DMMTSY_PHONE_NAMEAUTH1)==KErrNone)
       
  7688 		{
       
  7689 		CPhoneDMmTsy* phone=CPhoneDMmTsy::NewL(this);
       
  7690 		CleanupStack::PushL(phone);
       
  7691 		// it van be initialised in different ways by using name of the phone -
       
  7692 		// that's why different names of phones shall be used
       
  7693 		phone->iAuthInfo->iIMPI=DMMTSY_PHONE1_IMPI;
       
  7694 		phone->iAuthInfo->iIMPUArray.Append(DMMTSY_PHONE1_IMPU0);
       
  7695 		phone->iAuthInfo->iHomeNetworkDomainName=DMMTSY_PHONE1_HNDN;
       
  7696 		phone->iAuthInfo->iAuthenticationDataSource=DMMTSY_PHONE1_DATASOURCE;
       
  7697 		CleanupStack::Pop(phone);
       
  7698 		return phone;
       
  7699 		}
       
  7700 	else if (aName.Compare(DMMTSY_PHONE_NAMEAUTH2)==KErrNone)
       
  7701 		{
       
  7702 		CPhoneDMmTsy* phone=CPhoneDMmTsy::NewL(this);
       
  7703 		CleanupStack::PushL(phone);
       
  7704 		// it van be initialised in different ways by using name of the phone -
       
  7705 		// that's why different names of phones shall be used
       
  7706 		phone->iAuthInfo->iIMPI=DMMTSY_PHONE2_IMPI;
       
  7707 		phone->iAuthInfo->iIMPUArray.Append(DMMTSY_PHONE2_IMPU1);
       
  7708 		phone->iAuthInfo->iIMPUArray.Append(DMMTSY_PHONE2_IMPU2);
       
  7709 		phone->iAuthInfo->iIMPUArray.Append(DMMTSY_PHONE2_IMPU3);
       
  7710 		phone->iAuthInfo->iIMPUArray.Append(DMMTSY_PHONE2_IMPU4);
       
  7711 		phone->iAuthInfo->iHomeNetworkDomainName=DMMTSY_PHONE2_HNDN;
       
  7712 		phone->iAuthInfo->iAuthenticationDataSource=DMMTSY_PHONE2_DATASOURCE;
       
  7713 		CleanupStack::Pop(phone);
       
  7714 		return phone;
       
  7715 		}
       
  7716 	else if (aName.Compare(DMMTSY_PHONE_NAMEAUTH3)==KErrNone)
       
  7717 		{
       
  7718 		CPhoneDMmTsy* phone=CPhoneDMmTsy::NewL(this);
       
  7719 		CleanupStack::PushL(phone);
       
  7720 		// it van be initialised in different ways by using name of the phone -
       
  7721 		// that's why different names of phones shall be used
       
  7722 		phone->iAuthInfo->iIMPI=DMMTSY_PHONE3_IMPI;
       
  7723 		phone->iAuthInfo->iHomeNetworkDomainName=DMMTSY_PHONE3_HNDN;
       
  7724 		phone->iAuthInfo->iAuthenticationDataSource=DMMTSY_PHONE3_DATASOURCE;
       
  7725 		CleanupStack::Pop(phone);
       
  7726 		return phone;
       
  7727 		}
       
  7728 	return NULL;
       
  7729 	}
       
  7730 
       
  7731 TBool CPhoneFactoryDMmTsy::IsSupported(const TInt /*aMixin*/)
       
  7732 	{
       
  7733 	return EFalse;
       
  7734 	}
       
  7735 
       
  7736 //
       
  7737 // methods for CActiveListNode
       
  7738 //
       
  7739 
       
  7740 CPhoneDMmTsy::CActiveListNode::CActiveListNode(CActive *aActive, const TTsyReqHandle aTsyReqHandle) :
       
  7741 	iActive(aActive), iTsyReqHandle(aTsyReqHandle)
       
  7742 	{
       
  7743 
       
  7744 	}
       
  7745 
       
  7746 CPhoneDMmTsy::CActiveListNode::~CActiveListNode()
       
  7747 	{
       
  7748 	delete iActive;
       
  7749 	}
       
  7750 
       
  7751 //
       
  7752 // methods for the list of aos which corresspond to the outstanding delayed asyncrhonous reqs
       
  7753 //
       
  7754 
       
  7755 TInt CPhoneDMmTsy::FindDelayedReq(const TTsyReqHandle aTsyReqHandle, CActiveListNode *& aNode)
       
  7756 	{
       
  7757 	TInt err = KErrNotFound;
       
  7758 	TSglQueIter<CActiveListNode> iter(iActiveRequestObjects);
       
  7759 	iter.SetToFirst();
       
  7760 
       
  7761 	CActiveListNode *node = aNode = NULL;
       
  7762 	while ((node = iter++) != NULL)
       
  7763 		if (node->iTsyReqHandle == aTsyReqHandle)
       
  7764 			break;
       
  7765 
       
  7766 	if (node != NULL)
       
  7767 		{
       
  7768 		aNode = node;
       
  7769 		err = KErrNone;
       
  7770 		}
       
  7771 
       
  7772 	return err;
       
  7773 	}
       
  7774 
       
  7775 TInt CPhoneDMmTsy::RemoveDelayedReq(const TTsyReqHandle aTsyReqHandle)
       
  7776 	{
       
  7777 	CActiveListNode *aNode = NULL;
       
  7778 	TInt err = FindDelayedReq(aTsyReqHandle,aNode);
       
  7779 	if (err == KErrNone)
       
  7780 		{
       
  7781 		iActiveRequestObjects.Remove(*aNode);
       
  7782 		delete aNode;
       
  7783 		}
       
  7784 	return err;
       
  7785 	}
       
  7786 
       
  7787 void CPhoneDMmTsy::RegisterDelayedReqL(const TTsyReqHandle aTsyReqHandle, CTelObject *aTelObject)
       
  7788 	{
       
  7789 	CDelayedCompleter *delayed = CDelayedCompleter::NewL(aTsyReqHandle,this,aTelObject);
       
  7790 	CleanupStack::PushL(delayed);
       
  7791 	CActiveListNode *newNode = new (ELeave) CActiveListNode(delayed,aTsyReqHandle);
       
  7792 	iActiveRequestObjects.AddLast(*newNode);
       
  7793 	delayed->After(100000);
       
  7794 	CleanupStack::Pop(); // delayed
       
  7795 	}
       
  7796 void CPhoneDMmTsy::RegisterDelayedReqL(const TTsyReqHandle aTsyReqHandle, CTelObject *aTelObject,TInt aPriority)
       
  7797 	{
       
  7798 	CDelayedCompleter *delayed = CDelayedCompleter::NewL(aTsyReqHandle,this,aTelObject);
       
  7799 	CleanupStack::PushL(delayed);
       
  7800 	CActiveListNode *newNode = new (ELeave) CActiveListNode(delayed,aTsyReqHandle);
       
  7801 	iActiveRequestObjects.AddLast(*newNode);
       
  7802 	delayed->After(aPriority);
       
  7803 	CleanupStack::Pop(); // delayed
       
  7804 	}
       
  7805 void CPhoneDMmTsy::AddDelayedReq(const TTsyReqHandle aTsyReqHandle, CTelObject *aTelObject)
       
  7806 	{
       
  7807 	TRAPD(err, RegisterDelayedReqL(aTsyReqHandle, aTelObject));
       
  7808 
       
  7809 	if (err != KErrNone)
       
  7810 		{
       
  7811 		ReqCompleted(aTsyReqHandle, err);
       
  7812 		}
       
  7813 	}
       
  7814 void CPhoneDMmTsy::AddDelayedReq(const TTsyReqHandle aTsyReqHandle, CTelObject *aTelObject,TInt aPriority)
       
  7815 	{
       
  7816 	TRAPD(err, RegisterDelayedReqL(aTsyReqHandle, aTelObject, aPriority));
       
  7817 
       
  7818 
       
  7819 	if (err != KErrNone)
       
  7820 		{
       
  7821 		ReqCompleted(aTsyReqHandle, err);
       
  7822 		}
       
  7823 	}
       
  7824 
       
  7825 TInt CPhoneDMmTsy::NotifyAuthenticateDataChange(const TTsyReqHandle aTsyReqHandle,TDes8* aAuthInfo)
       
  7826 	{
       
  7827 	if(!iNotifyAuthenticationDataChange++)
       
  7828 		{
       
  7829 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyAuthenticationDataChange called"));
       
  7830 		RMobilePhone::TAuthInfoV8Pckg *authInfoV8Pckg = STATIC_CAST(RMobilePhone::TAuthInfoV8Pckg*,aAuthInfo);
       
  7831 		RMobilePhone::TAuthInfoV8 &authInfoV8 = (*authInfoV8Pckg)();
       
  7832 		authInfoV8.iAID = DMMTSY_PHONE_GBA_AID;
       
  7833 		authInfoV8.iData = DMMTSY_PHONE_AUTH_DATA_GBA_PARAMS;
       
  7834 		AddDelayedReq(aTsyReqHandle,this);
       
  7835 		}
       
  7836 	return KErrNone;
       
  7837 	}
       
  7838 
       
  7839 TInt CPhoneDMmTsy::NotifyAuthenticateDataChangeCancel(TTsyReqHandle aTsyReqHandle)
       
  7840 	{
       
  7841 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyAuthenticationDataChangeCancel called"));
       
  7842 	RemoveDelayedReq(aTsyReqHandle);
       
  7843 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  7844 	return KErrNone;
       
  7845 	}
       
  7846 
       
  7847 TInt CPhoneDMmTsy::SetGbaBootstrapParams(const TTsyReqHandle aTsyReqHandle,RMobilePhone::TAID* aAID,TDes8* aParams)
       
  7848 	{
       
  7849 	LOGTEXT(_L8("CPhoneDMmTsy::SetGbaBootstrapParams called"));
       
  7850 	RMobilePhone::TBsfDataV8Pckg *bsfDataV8Pckg = STATIC_CAST(RMobilePhone::TBsfDataV8Pckg*,aParams);
       
  7851 	RMobilePhone::TBsfDataV8 &bsfDataV8 = (*bsfDataV8Pckg)();
       
  7852 	if((bsfDataV8.iBtid != DMMTSY_PHONE_BSF_VALID_BTID) ||
       
  7853 		(bsfDataV8.iKeyLifetime != DMMTSY_PHONE_BSF_VALID_KEYLIFETIME) ||
       
  7854 		(*aAID != DMMTSY_PHONE_GBA_AID )) 
       
  7855 		{
       
  7856 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  7857 		}
       
  7858 	else
       
  7859 		{
       
  7860 		AddDelayedReq(aTsyReqHandle,this);
       
  7861 		}
       
  7862 	return KErrNone;	
       
  7863 	}
       
  7864 
       
  7865 TInt CPhoneDMmTsy::SetGbaBootstrapParamsCancel(TTsyReqHandle aTsyReqHandle)
       
  7866 	{
       
  7867 	LOGTEXT(_L8("CPhoneDMmTsy::SetGbaBootstrapParamsCancel called"));
       
  7868 	RemoveDelayedReq(aTsyReqHandle);
       
  7869 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  7870 	return KErrNone;
       
  7871 	}	
       
  7872 
       
  7873 TInt CPhoneDMmTsy::GetAuthenticationParams(const TTsyReqHandle aTsyReqHandle,TDes8* aAuthInfo,TDes8* aParams)
       
  7874 	{
       
  7875 	LOGTEXT(_L8("CPhoneDMmTsy::GetAuthenticationParams called"));
       
  7876 	RMobilePhone::TAuthInfoV8Pckg *authInfoV8Pckg = STATIC_CAST(RMobilePhone::TAuthInfoV8Pckg*,aAuthInfo);
       
  7877 	RMobilePhone::TAuthInfoV8 &authInfoV8 = (*authInfoV8Pckg)();
       
  7878 	if(authInfoV8.iData == DMMTSY_PHONE_AUTH_DATA_GBA_PARAMS && authInfoV8.iAID == DMMTSY_PHONE_GBA_AID)
       
  7879 		{
       
  7880 		RMobilePhone::TGbaBootstrapParamsV8Pckg *gbaBootstrapV8Pckg = STATIC_CAST(RMobilePhone::TGbaBootstrapParamsV8Pckg*,aParams);
       
  7881 		RMobilePhone::TGbaBootstrapParamsV8 &gbaBootstrapV8 = (*gbaBootstrapV8Pckg)();
       
  7882 		gbaBootstrapV8.iRand = DMMTSY_PHONE_GBA_RAND_IN;
       
  7883 		gbaBootstrapV8.iBtid = DMMTSY_PHONE_BSF_VALID_BTID;
       
  7884 		gbaBootstrapV8.iKeyLifetime = DMMTSY_PHONE_BSF_VALID_KEYLIFETIME;
       
  7885 		AddDelayedReq(aTsyReqHandle,this);
       
  7886 		}
       
  7887 	else if(authInfoV8.iData == DMMTSY_PHONE_AUTH_DATA_MBMS_MUK && authInfoV8.iAID == DMMTSY_PHONE_MBMS_AID)
       
  7888 		{
       
  7889 		RMobilePhone::TMbmsUserKeyV8Pckg *mbmsUserKeyV8Pckg = STATIC_CAST(RMobilePhone::TMbmsUserKeyV8Pckg*,aParams);
       
  7890 		RMobilePhone::TMbmsUserKeyV8 &mbmsUserKeyV8 = (*mbmsUserKeyV8Pckg)();
       
  7891 		mbmsUserKeyV8.iMukIdi = DMMTSY_PHONE_MBMS_VALID_MUK_IDI;
       
  7892 		mbmsUserKeyV8.iMukIdr = DMMTSY_PHONE_MBMS_VALID_MUK_IDR;
       
  7893 		mbmsUserKeyV8.iTimeStampCounter = DMMTSY_PHONE_MBMS_VALID_MUK_ITIMESTM;
       
  7894 		AddDelayedReq(aTsyReqHandle,this);
       
  7895 		}
       
  7896 	else
       
  7897 		{
       
  7898 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  7899 		}
       
  7900 	return KErrNone;	
       
  7901 	}
       
  7902 
       
  7903 TInt CPhoneDMmTsy::GetAuthenticationParamsCancel(TTsyReqHandle aTsyReqHandle)
       
  7904 	{
       
  7905 	LOGTEXT(_L8("CPhoneDMmTsy::GetAuthenticationParamsCancel called"));
       
  7906 	RemoveDelayedReq(aTsyReqHandle);
       
  7907 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  7908 	return KErrNone;
       
  7909 	}
       
  7910 
       
  7911 TInt CPhoneDMmTsy::GetAuthenticationListPhase1(const TTsyReqHandle aTsyReqHandle,CRetrieveMobilePhoneAuthenticationIds::TAuthRequestData* aRequest,TInt* aBufSize)
       
  7912 	{
       
  7913 	LOGTEXT(_L8("CPhoneDMmTsy::GetAuthenticationListPhase1 called"));
       
  7914 	TInt ret=KErrNone;
       
  7915 	TInt leaveCode=KErrNone;
       
  7916 	
       
  7917 	if (((aRequest->iAuthInfo.iData) == DMMTSY_PHONE_AUTH_DATA_NAF_LIST) ||
       
  7918 		((aRequest->iAuthInfo.iData) == DMMTSY_PHONE_AUTH_DATA_MBMS_MSK))
       
  7919 		{
       
  7920 		leaveCode = KErrNone;
       
  7921 		}
       
  7922 	else
       
  7923 	 	{
       
  7924 	 	leaveCode = KErrCorrupt;	
       
  7925 	 	}  
       
  7926 
       
  7927 	if (leaveCode == KErrNone)
       
  7928 		{
       
  7929 		if (aRequest->iAuthInfo.iData==DMMTSY_PHONE_AUTH_DATA_NAF_LIST)
       
  7930 			{
       
  7931 			TRAP(leaveCode, ret=ProcessGetGbaPhase1L(aTsyReqHandle, &aRequest->iClient,aBufSize););
       
  7932 			}
       
  7933 		else if(aRequest->iAuthInfo.iData==DMMTSY_PHONE_AUTH_DATA_MBMS_MSK)
       
  7934 			{
       
  7935 			TRAP(leaveCode, ret=ProcessGetMbmsPhase1L(aTsyReqHandle, &aRequest->iClient,aBufSize););
       
  7936 			}
       
  7937 		}
       
  7938 
       
  7939 	if (leaveCode != KErrNone)
       
  7940 		{
       
  7941 		ReqCompleted(aTsyReqHandle,leaveCode);
       
  7942 		}
       
  7943 	return ret;
       
  7944 	};
       
  7945 
       
  7946 TInt CPhoneDMmTsy::ProcessGetGbaPhase1L(const TTsyReqHandle aTsyReqHandle,
       
  7947 											   RMobilePhone::TClientId* aId,TInt* aBufSize)
       
  7948 	{
       
  7949 	// read the list, store its content and then return size of this buffer to client
       
  7950 	CMobilePhoneGbaNafIdList* list=CMobilePhoneGbaNafIdList::NewL();
       
  7951 	CleanupStack::PushL(list);
       
  7952 
       
  7953 	RMobilePhone::TGbaNafEntryV8 entry;
       
  7954 
       
  7955 	// fill up an example list
       
  7956 	for (TInt index=0; index < DMMTSY_PHONE_GBA_NAFLIST_COUNT; index++)
       
  7957 		{
       
  7958 		switch (index)
       
  7959 			{
       
  7960 		case 0:
       
  7961 			entry.iNafId = DMMTSY_PHONE_GBA_NAFLIST_NAFID_ONE;
       
  7962 			entry.iBtid = DMMTSY_PHONE_GBA_NAFLIST_BTID_ONE;
       
  7963 			break;
       
  7964 		case 1:
       
  7965 			entry.iNafId = DMMTSY_PHONE_GBA_NAFLIST_NAFID_TWO;
       
  7966 			entry.iBtid = DMMTSY_PHONE_GBA_NAFLIST_BTID_TWO;
       
  7967 			break;
       
  7968 		case 2:
       
  7969 			entry.iNafId = DMMTSY_PHONE_GBA_NAFLIST_NAFID_THREE;
       
  7970 			entry.iBtid = DMMTSY_PHONE_GBA_NAFLIST_BTID_THREE;
       
  7971 			break;
       
  7972 		case 3:
       
  7973 		default:
       
  7974 			break;
       
  7975 			}
       
  7976 			// Add the entry into the list, at the next empty location
       
  7977 			list->AddEntryL(entry);
       
  7978 		}
       
  7979 	// Store the streamed list and the client ID
       
  7980 	CListReadAllAttempt* read=CListReadAllAttempt::NewL(aId, aTsyReqHandle);
       
  7981 	CleanupStack::PushL(read);
       
  7982 
       
  7983 	read->iListBuf = list->StoreLC();
       
  7984 	CleanupStack::Pop(); // pop the CBufFlat allocated by StoreLC
       
  7985 
       
  7986 	iAuthReadAll->AppendL(read);
       
  7987 	CleanupStack::Pop(); // pop the CListReadAllAttempt
       
  7988 
       
  7989 	// return the CBufFlat’s size to client
       
  7990 	*aBufSize=(read->iListBuf)->Size();
       
  7991 
       
  7992 	// Complete first phase of list retrieval
       
  7993 	AddDelayedReq(aTsyReqHandle,this);
       
  7994 	CleanupStack::PopAndDestroy(); // pop&destroy list
       
  7995 	return KErrNone;
       
  7996 	}
       
  7997 
       
  7998 TInt CPhoneDMmTsy::ProcessGetMbmsPhase1L(const TTsyReqHandle aTsyReqHandle,
       
  7999 											   RMobilePhone::TClientId* aId,TInt* aBufSize)
       
  8000 	{
       
  8001 	// read the list, store its content and then return size of this buffer to client
       
  8002 	CMobilePhoneMbmsMskIdList* list=CMobilePhoneMbmsMskIdList::NewL();
       
  8003 	CleanupStack::PushL(list);
       
  8004 
       
  8005 	RMobilePhone::TMskEntryV8 entry;
       
  8006 
       
  8007 	// fill up an example list
       
  8008 	for (TInt index=0; index < DMMTSY_PHONE_MBMS_LIST_COUNT; index++)
       
  8009 		{
       
  8010 		switch (index)
       
  8011 			{
       
  8012 		case 0:
       
  8013 			entry.iKeyDomainId = DMMTSY_PHONE_MBMSLIST_KEYDMN_ONE;
       
  8014 			entry.iMskId = DMMTSY_PHONE_MBMSLIST_MSKID_ONE;
       
  8015 			entry.iTimeStampCounter = DMMTSY_PHONE_MBMSLIST_TIMESTM_ONE;
       
  8016 			break;
       
  8017 		case 1:
       
  8018 			entry.iKeyDomainId = DMMTSY_PHONE_MBMSLIST_KEYDMN_TWO;
       
  8019 			entry.iMskId = DMMTSY_PHONE_MBMSLIST_MSKID_TWO;
       
  8020 			entry.iTimeStampCounter = DMMTSY_PHONE_MBMSLIST_TIMESTM_TWO;
       
  8021 			break;
       
  8022 		case 2:
       
  8023 			entry.iKeyDomainId = DMMTSY_PHONE_MBMSLIST_KEYDMN_THREE;
       
  8024 			entry.iMskId = DMMTSY_PHONE_MBMSLIST_MSKID_THREE;
       
  8025 			entry.iTimeStampCounter = DMMTSY_PHONE_MBMSLIST_TIMESTM_THREE;
       
  8026 			break;
       
  8027 		case 3:
       
  8028 		default:
       
  8029 			break;
       
  8030 			}
       
  8031 			// Add the entry into the list, at the next empty location
       
  8032 			list->AddEntryL(entry);
       
  8033 		}
       
  8034 	// Store the streamed list and the client ID
       
  8035 	CListReadAllAttempt* read=CListReadAllAttempt::NewL(aId, aTsyReqHandle);
       
  8036 	CleanupStack::PushL(read);
       
  8037 
       
  8038 	read->iListBuf = list->StoreLC();
       
  8039 	CleanupStack::Pop(); // pop the CBufFlat allocated by StoreLC
       
  8040 
       
  8041 	iAuthReadAll->AppendL(read);
       
  8042 	CleanupStack::Pop(); // pop the CListReadAllAttempt
       
  8043 
       
  8044 	// return the CBufFlat’s size to client
       
  8045 	*aBufSize=(read->iListBuf)->Size();
       
  8046 
       
  8047 	// Complete first phase of list retrieval
       
  8048 	AddDelayedReq(aTsyReqHandle,this);
       
  8049 	CleanupStack::PopAndDestroy(); // pop&destroy list
       
  8050 	return KErrNone;
       
  8051 	}
       
  8052 
       
  8053 TInt CPhoneDMmTsy::GetAuthenticationListPhase2(TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aId, TDes8* aBuffer)
       
  8054 	{
       
  8055 	LOGTEXT(_L8("CPhoneDMmTsy::ReadAllPhase2 called"));
       
  8056 	CListReadAllAttempt* read=NULL;
       
  8057 	// Find the read attempt from this client
       
  8058 	for (TInt i=0; i<iAuthReadAll->Count(); ++i)
       
  8059 		{
       
  8060 		read = iAuthReadAll->At(i);
       
  8061 		if ((read->iClient.iSessionHandle==aId->iSessionHandle) &&
       
  8062 		    (read->iClient.iSubSessionHandle==aId->iSubSessionHandle))
       
  8063 			{
       
  8064 			TPtr8 bufPtr((read->iListBuf)->Ptr(0));
       
  8065 			// Copy the streamed list to the client
       
  8066 			aBuffer->Copy(bufPtr);
       
  8067 			delete read;
       
  8068 			iAuthReadAll->Delete(i);
       
  8069 			ReqCompleted(aTsyReqHandle,KErrNone);
       
  8070 			return KErrNone;
       
  8071 			}
       
  8072 		}
       
  8073 	// Should handle error case of not finding the matching client from read all phase 1
       
  8074 	return KErrNotFound;
       
  8075 	}
       
  8076 	
       
  8077 TInt CPhoneDMmTsy::GetAuthenticationListCancel(const TTsyReqHandle aTsyReqHandle)
       
  8078 	{
       
  8079 	LOGTEXT(_L8("CPhoneDMmTsy::ReadAllCancel called"));
       
  8080 	RemoveDelayedReq(aTsyReqHandle);
       
  8081 	// Remove the read all attempt from iAuthReadAll
       
  8082 	CListReadAllAttempt* read=NULL;
       
  8083 	for (TInt i=0; i<iAuthReadAll->Count(); ++i)
       
  8084 		{
       
  8085 		read = iAuthReadAll->At(i);
       
  8086 		if (read->iReqHandle == aTsyReqHandle)
       
  8087 			{
       
  8088 			delete read;
       
  8089 			iAuthReadAll->Delete(i);
       
  8090 			break;
       
  8091 			}
       
  8092 		}
       
  8093 
       
  8094 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  8095 	return KErrNone;
       
  8096 	}
       
  8097 
       
  8098 //
       
  8099 // Wlan
       
  8100 //
       
  8101 TInt CPhoneDMmTsy::NotifyWlanDataChange(const TTsyReqHandle aTsyReqHandle,TDes8* aData)
       
  8102 	{
       
  8103 	if(!iNotifyWlanDataChange++)
       
  8104 		{
       
  8105 		LOGTEXT(_L8("CPhoneDMmTsy::NotifyWlanDataChange called"));
       
  8106 		RMobilePhone::TUsimWlanDataV8Pckg *WlanDataV8Pckg = STATIC_CAST(RMobilePhone::TUsimWlanDataV8Pckg*,aData);
       
  8107 		RMobilePhone::TUsimWlanDataV8 &WlanDataV8 = (*WlanDataV8Pckg)();
       
  8108 		WlanDataV8.iFieldsUsed = DMMTSY_PHONE_WLAN_LIST_DATA_FLAGS;
       
  8109 		WlanDataV8.iPseudonym = DMMTSY_PHONE_WLAN_VALID_PSEUDONYM;
       
  8110 		WlanDataV8.iReauthenticationId = DMMTSY_PHONE_WLAN_VALID_REAUTHID;
       
  8111 		WlanDataV8.iMasterKey = DMMTSY_PHONE_WLAN_VALID_MASTERKEY;
       
  8112 		WlanDataV8.iCounter = DMMTSY_PHONE_WLAN_VALID_COUNTER;
       
  8113 		AddDelayedReq(aTsyReqHandle,this);
       
  8114 		}
       
  8115 	return KErrNone;
       
  8116 	}
       
  8117 
       
  8118 TInt CPhoneDMmTsy::NotifyWlanDataChangeCancel(TTsyReqHandle aTsyReqHandle)
       
  8119 	{
       
  8120 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyWlanDataChangeCancel called"));
       
  8121 	RemoveDelayedReq(aTsyReqHandle);
       
  8122 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  8123 	return KErrNone;
       
  8124 	}
       
  8125 
       
  8126 TInt CPhoneDMmTsy::SetWlanData(const TTsyReqHandle aTsyReqHandle,TDes8* aData)
       
  8127 	{
       
  8128 	LOGTEXT(_L8("CPhoneDMmTsy::SetWlanData called"));
       
  8129 	RMobilePhone::TUsimWlanDataV8Pckg *WlanDataV8Pckg = STATIC_CAST(RMobilePhone::TUsimWlanDataV8Pckg*,aData);
       
  8130 	RMobilePhone::TUsimWlanDataV8 &WlanDataV8 = (*WlanDataV8Pckg)();
       
  8131 	if((WlanDataV8.iFieldsUsed != DMMTSY_PHONE_WLAN_LIST_DATA_FLAGS) ||
       
  8132 	(WlanDataV8.iPseudonym != DMMTSY_PHONE_WLAN_VALID_PSEUDONYM) ||
       
  8133 	(WlanDataV8.iReauthenticationId != DMMTSY_PHONE_WLAN_VALID_REAUTHID) ||
       
  8134 	(WlanDataV8.iMasterKey != DMMTSY_PHONE_WLAN_VALID_MASTERKEY) ||
       
  8135 	(WlanDataV8.iCounter != DMMTSY_PHONE_WLAN_VALID_COUNTER))
       
  8136 		{
       
  8137 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  8138 		}
       
  8139 	else
       
  8140 		{
       
  8141 		AddDelayedReq(aTsyReqHandle,this);
       
  8142 		}
       
  8143 		
       
  8144 	return KErrNone;	
       
  8145 	}
       
  8146 
       
  8147 TInt CPhoneDMmTsy::SetWlanDataCancel(TTsyReqHandle aTsyReqHandle)
       
  8148 	{
       
  8149 	LOGTEXT(_L8("CPhoneDMmTsy::SetWlanDataCancel called"));
       
  8150 	RemoveDelayedReq(aTsyReqHandle);
       
  8151 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  8152 	return KErrNone;
       
  8153 	}	
       
  8154 
       
  8155 TInt CPhoneDMmTsy::GetWlanData(const TTsyReqHandle aTsyReqHandle,TDes8* aData)
       
  8156 	{
       
  8157 	LOGTEXT(_L8("CPhoneDMmTsy::GetWlanData called"));
       
  8158 	RMobilePhone::TUsimWlanDataV8Pckg *WlanDataV8Pckg = STATIC_CAST(RMobilePhone::TUsimWlanDataV8Pckg*,aData);
       
  8159 	RMobilePhone::TUsimWlanDataV8 &WlanDataV8 = (*WlanDataV8Pckg)();
       
  8160 	WlanDataV8.iFieldsUsed = DMMTSY_PHONE_WLAN_LIST_DATA_FLAGS;
       
  8161 	WlanDataV8.iPseudonym = DMMTSY_PHONE_WLAN_VALID_PSEUDONYM;
       
  8162 	WlanDataV8.iReauthenticationId = DMMTSY_PHONE_WLAN_VALID_REAUTHID;
       
  8163 	WlanDataV8.iMasterKey = DMMTSY_PHONE_WLAN_VALID_MASTERKEY;
       
  8164 	WlanDataV8.iCounter = DMMTSY_PHONE_WLAN_VALID_COUNTER;
       
  8165 	AddDelayedReq(aTsyReqHandle,this);
       
  8166 	return KErrNone;	
       
  8167 	}
       
  8168 
       
  8169 TInt CPhoneDMmTsy::GetWlanDataCancel(TTsyReqHandle aTsyReqHandle)
       
  8170 	{
       
  8171 	LOGTEXT(_L8("CPhoneDMmTsy::GetWlanDataCancel called"));
       
  8172 	RemoveDelayedReq(aTsyReqHandle);
       
  8173 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  8174 	return KErrNone;
       
  8175 	}
       
  8176 	
       
  8177 TInt CPhoneDMmTsy::StorePreferredWlanSIDList(const TTsyReqHandle aTsyReqHandle, TDes8* aBuffer)
       
  8178 	{
       
  8179 	LOGTEXT(_L8("CPhoneDMmTsy::StorePreferredWlanSIDList called"));
       
  8180 	TInt ret=KErrNone;
       
  8181 	TInt leaveCode=KErrNone;
       
  8182 	TRAP(leaveCode, ret=ProcessStorePreferredWlanSIDListL(aTsyReqHandle, aBuffer););
       
  8183 	if (leaveCode != KErrNone)
       
  8184 		{
       
  8185 		ReqCompleted(aTsyReqHandle,leaveCode);
       
  8186 		}
       
  8187 	return ret;
       
  8188 	};
       
  8189 
       
  8190 TInt CPhoneDMmTsy::ProcessStorePreferredWlanSIDListL(TTsyReqHandle aTsyReqHandle, TDes8* aBuffer)
       
  8191 	{
       
  8192 	CMobilePhoneStoredWlanSIDList* list=CMobilePhoneStoredWlanSIDList::NewL();
       
  8193 	CleanupStack::PushL(list);
       
  8194 	
       
  8195 	list->RestoreL(*aBuffer);
       
  8196 
       
  8197 	RMobilePhone::TWlanSIDV8 entry;
       
  8198 
       
  8199 	if (list->Enumerate() != DMMTSY_PHONE_WLAN_SIDLIST_COUNT)
       
  8200 		{
       
  8201 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  8202 		CleanupStack::PopAndDestroy(); // list
       
  8203 		return KErrNone;
       
  8204 		}
       
  8205 
       
  8206 	TInt error=KErrNone;
       
  8207 	TInt ret;
       
  8208 	for (TInt i=0; i<DMMTSY_PHONE_WLAN_SIDLIST_COUNT; ++i)
       
  8209 		{
       
  8210 		TRAP(ret,entry=list->GetEntryL(i));
       
  8211 		if (ret != KErrNone)
       
  8212 			break;
       
  8213 		switch(i)
       
  8214 			{
       
  8215 		case 0:
       
  8216 			{
       
  8217 			if(entry.iWSID != DMMTSY_PHONE_WLAN_WSID_ONE ||
       
  8218 			   entry.iUserDefined != DMMTSY_PHONE_WLAN_USERDEFD_ONE)
       
  8219 				{
       
  8220 				error  = KErrCorrupt;
       
  8221 				}
       
  8222 			}
       
  8223 			break;
       
  8224 		case 1:
       
  8225 			{
       
  8226 			if(entry.iWSID != DMMTSY_PHONE_WLAN_WSID_TWO ||
       
  8227 			   entry.iUserDefined != DMMTSY_PHONE_WLAN_USERDEFD_TWO)
       
  8228 				{
       
  8229 				error  = KErrCorrupt;
       
  8230 				}
       
  8231 			}
       
  8232 			break;
       
  8233 		case 2:
       
  8234 		default:
       
  8235 			{
       
  8236 			if(entry.iWSID != DMMTSY_PHONE_WLAN_WSID_THREE ||
       
  8237 			   entry.iUserDefined != DMMTSY_PHONE_WLAN_USERDEFD_THREE)
       
  8238 				{
       
  8239 				error  = KErrCorrupt;
       
  8240 				}
       
  8241 			}
       
  8242 			break;
       
  8243 			}
       
  8244 		}
       
  8245 	if(error==KErrNone)	
       
  8246 		{
       
  8247 		AddDelayedReq(aTsyReqHandle,this);	
       
  8248 		}
       
  8249 	else
       
  8250 		{
       
  8251 		ReqCompleted(aTsyReqHandle,KErrCorrupt);
       
  8252 		}
       
  8253 	CleanupStack::PopAndDestroy(); 
       
  8254 	return KErrNone;
       
  8255 	}
       
  8256 
       
  8257 TInt CPhoneDMmTsy::StorePreferredWlanSIDListCancel(TTsyReqHandle aTsyReqHandle)
       
  8258 	{
       
  8259 	LOGTEXT(_L8("CPhoneDMmTsy::StorePreferredWlanSIDListCancel called"));
       
  8260 	RemoveDelayedReq(aTsyReqHandle);
       
  8261 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  8262 	return KErrNone;
       
  8263 	}
       
  8264 	
       
  8265 TInt CPhoneDMmTsy::NotifyPreferredWlanSIDListChange(TTsyReqHandle aTsyReqHandle)
       
  8266 	{
       
  8267 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyPreferredWlanSIDListChange called"));
       
  8268 	AddDelayedReq(aTsyReqHandle,this);
       
  8269 	return KErrNone;
       
  8270 	}
       
  8271 	
       
  8272 TInt CPhoneDMmTsy::NotifyPreferredWlanSIDListChangeCancel(TTsyReqHandle aTsyReqHandle)
       
  8273 	{
       
  8274 	LOGTEXT(_L8("CPhoneDMmTsy::NotifyPreferredWlanSIDListChangeCancel called"));
       
  8275 	RemoveDelayedReq(aTsyReqHandle);
       
  8276 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  8277 	return KErrNone;
       
  8278 	}
       
  8279 
       
  8280 TInt CPhoneDMmTsy::GetPreferredWlanSIDsPhase1(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aClient, TInt* aBufSize)
       
  8281 	{
       
  8282 	LOGTEXT(_L8("CPhoneDMmTsy::GetPreferredWlanSIDsPhase1 called"));
       
  8283 	TInt ret=KErrNone;
       
  8284 	TInt leaveCode=KErrNone;
       
  8285 	TRAP(leaveCode, ret=ProcessGetPreferredWlanSIDsPhase1L(aTsyReqHandle, aClient, aBufSize););
       
  8286 	if (leaveCode != KErrNone)
       
  8287 		{
       
  8288 		ReqCompleted(aTsyReqHandle,leaveCode);
       
  8289 		}
       
  8290 	return ret;
       
  8291 	}	
       
  8292 	
       
  8293 TInt CPhoneDMmTsy::ProcessGetPreferredWlanSIDsPhase1L(const TTsyReqHandle aTsyReqHandle, 
       
  8294 													 RMobilePhone::TClientId* aClient, 
       
  8295 													 TInt* aBufSize)
       
  8296 	{
       
  8297 	// retrieve stored Wlan specific IDs from USIM,
       
  8298 	// store each entry.
       
  8299 	// stream the list and then return size of this buffer to client
       
  8300 	CMobilePhoneStoredWlanSIDList* list=CMobilePhoneStoredWlanSIDList::NewL();
       
  8301 	CleanupStack::PushL(list);
       
  8302 
       
  8303 	RMobilePhone::TWlanSIDV8 entry;
       
  8304 
       
  8305 	// fill up an example list
       
  8306 	for (TInt index=0; index < DMMTSY_PHONE_WLAN_SIDLIST_COUNT; index++)
       
  8307 		{
       
  8308 		switch (index)
       
  8309 			{
       
  8310 		case 0:
       
  8311 			entry.iWSID = DMMTSY_PHONE_WLAN_WSID_ONE;
       
  8312 		    entry.iUserDefined = DMMTSY_PHONE_WLAN_USERDEFD_ONE;
       
  8313 			break;
       
  8314 			
       
  8315 		case 1:
       
  8316 			entry.iWSID = DMMTSY_PHONE_WLAN_WSID_TWO;
       
  8317 		    entry.iUserDefined = DMMTSY_PHONE_WLAN_USERDEFD_TWO;
       
  8318 			break;
       
  8319 		
       
  8320 		case 2:
       
  8321 		default:
       
  8322 			entry.iWSID = DMMTSY_PHONE_WLAN_WSID_THREE;
       
  8323 		    entry.iUserDefined = DMMTSY_PHONE_WLAN_USERDEFD_THREE;
       
  8324 			break;
       
  8325 			}
       
  8326 		// Add the entry into the list, at the next empty location
       
  8327 		list->AddEntryL(entry);
       
  8328 		}
       
  8329 	// Store the streamed list and the client ID
       
  8330 	CListReadAllAttempt* read=CListReadAllAttempt::NewL(aClient,aTsyReqHandle);
       
  8331 	CleanupStack::PushL(read);
       
  8332 	
       
  8333 	read->iListBuf = list->StoreLC();
       
  8334 	CleanupStack::Pop(); // pop the CBufBase allocated by StoreLC
       
  8335 	
       
  8336 	iGetWlanSIDsData->AppendL(read);
       
  8337 	CleanupStack::Pop(); // pop the CListReadAllAttempt
       
  8338 	
       
  8339 	// return the CBufBase’s size to client
       
  8340 	*aBufSize=(read->iListBuf)->Size();
       
  8341 	
       
  8342 	// Complete first phase of list retrieval
       
  8343 	AddDelayedReq(aTsyReqHandle,this);
       
  8344 	CleanupStack::PopAndDestroy(); // pop&destroy list
       
  8345 	return KErrNone;
       
  8346 	}
       
  8347 
       
  8348 TInt CPhoneDMmTsy::GetPreferredWlanSIDsPhase2(const TTsyReqHandle aTsyReqHandle, RMobilePhone::TClientId* aClient, TDes8* aBuf)
       
  8349 	{
       
  8350 	LOGTEXT(_L8("CPhoneDMmTsy::GetPreferredNetworksPhase2 called"));
       
  8351 	CListReadAllAttempt* read=NULL;
       
  8352 	// Find the get preferred wlan SIDs from this client
       
  8353 	for (TInt i=0; i<iGetWlanSIDsData->Count(); ++i)
       
  8354 		{
       
  8355 		read = iGetWlanSIDsData->At(i);
       
  8356 		if ((read->iClient.iSessionHandle==aClient->iSessionHandle) &&
       
  8357 		    (read->iClient.iSubSessionHandle==aClient->iSubSessionHandle))
       
  8358 			{
       
  8359 			TPtr8 bufPtr((read->iListBuf)->Ptr(0));
       
  8360 			// Copy the streamed list to the client
       
  8361 			aBuf->Copy(bufPtr);
       
  8362 			delete read;
       
  8363 			iGetWlanSIDsData->Delete(i);
       
  8364 			ReqCompleted(aTsyReqHandle,KErrNone);
       
  8365 			return KErrNone;
       
  8366 			}
       
  8367 		}
       
  8368 	// Should handle error case of not finding the matching client from read all phase 1
       
  8369 	return KErrNotFound;
       
  8370 	}
       
  8371 	
       
  8372 TInt CPhoneDMmTsy::GetPreferredWlanSIDsCancel(const TTsyReqHandle aTsyReqHandle)
       
  8373 	{
       
  8374 	LOGTEXT(_L8("CPhoneDMmTsy::GetPreferredWlanSIDsCancel called"));
       
  8375 	RemoveDelayedReq(aTsyReqHandle);
       
  8376 	// Remove the read all attempt from iGetWlanSIDsData
       
  8377 	CListReadAllAttempt* read=NULL;
       
  8378 	for (TInt i=0; i<iGetWlanSIDsData->Count(); ++i)
       
  8379 		{
       
  8380 		read = iGetWlanSIDsData->At(i);
       
  8381 		if (read->iReqHandle == aTsyReqHandle)
       
  8382 			{
       
  8383 			delete read;
       
  8384 			iGetWlanSIDsData->Delete(i);
       
  8385 			break;
       
  8386 			}
       
  8387 		}
       
  8388 	ReqCompleted(aTsyReqHandle,KErrCancel);
       
  8389 	return KErrNone;
       
  8390 	}
       
  8391 
       
  8392 /*******************************************************************/
       
  8393 //
       
  8394 // CDelayedCompleter
       
  8395 //
       
  8396 /*******************************************************************/
       
  8397 
       
  8398 
       
  8399 
       
  8400 CDelayedCompleter::CDelayedCompleter(const TTsyReqHandle aTsyReqHandle, CPhoneDMmTsy *aPhoneObject,
       
  8401 									CTelObject *aTelObject) :
       
  8402 		CTimer(EPriorityStandard),iTsyReqHandle(aTsyReqHandle), iPhoneObject(aPhoneObject),
       
  8403 			iTelObject(aTelObject)
       
  8404 	{
       
  8405 
       
  8406 	}
       
  8407 
       
  8408 CDelayedCompleter* CDelayedCompleter::NewL(const TTsyReqHandle aTsyReqHandle, CPhoneDMmTsy *aPhoneObject,
       
  8409 									CTelObject *aTelObject)
       
  8410 	{
       
  8411 	CDelayedCompleter* This = new (ELeave) CDelayedCompleter(aTsyReqHandle,aPhoneObject,aTelObject);
       
  8412 	CleanupStack::PushL(This);
       
  8413 	This->ConstructL();
       
  8414 	CleanupStack::Pop();
       
  8415 	return This;
       
  8416 	}
       
  8417 
       
  8418 void CDelayedCompleter::ConstructL()
       
  8419 	{
       
  8420 	CTimer::ConstructL();
       
  8421 	CActiveScheduler::Add(this);
       
  8422 	}
       
  8423 
       
  8424 void CDelayedCompleter::RunL()
       
  8425 	{
       
  8426 	iTelObject->ReqCompleted(iTsyReqHandle,KErrNone);
       
  8427 	(void) iPhoneObject->RemoveDelayedReq(iTsyReqHandle); // we get deleted here
       
  8428 	}