telephonyserverplugins/simtsy/src/CSimCallForwarding.cpp
branchRCL_3
changeset 19 630d2f34d719
parent 6 fc69e1e37771
child 20 07a122eea281
equal deleted inserted replaced
18:17af172ffa5f 19:630d2f34d719
     1 // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2001-2010 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
    18 
    18 
    19 /**
    19 /**
    20  @file
    20  @file
    21 */
    21 */
    22 
    22 
       
    23 
       
    24 
       
    25 #include "OstTraceDefinitions.h"
       
    26 #ifdef OST_TRACE_COMPILER_IN_USE
       
    27 #include "CSimCallForwardingTraces.h"
       
    28 #endif
       
    29 
    23 #include <testconfigfileparser.h>
    30 #include <testconfigfileparser.h>
    24 #include "CSimCallForwarding.h"
    31 #include "CSimCallForwarding.h"
    25 #include "CSimPhone.h"
    32 #include "CSimPhone.h"
    26 #include "Simlog.h"
       
    27 
    33 
    28 const TInt KSettingListGranularity=5;	// < The granularity used for parameter list arrays.
    34 const TInt KSettingListGranularity=5;	// < The granularity used for parameter list arrays.
    29 const TInt KInvalidTimeout = -1;        // Value used when timeout period does not matter
    35 const TInt KInvalidTimeout = -1;        // Value used when timeout period does not matter
    30 const TInt KMobServiceIndxStart = 1;
    36 const TInt KMobServiceIndxStart = 1;
    31 const TInt KMobServiceIndxEnd   = 6;
    37 const TInt KMobServiceIndxEnd   = 6;
    57 	/** 
    63 	/** 
    58 	Second phase of 2-Phase Constructor
    64 	Second phase of 2-Phase Constructor
    59  	Retrieves all the Call forwarding and Identity services tags from the config file
    65  	Retrieves all the Call forwarding and Identity services tags from the config file
    60 	*/
    66 	*/
    61 	{
    67 	{
    62 	LOGCALL1("Starting to parse Call Forwarding config parameters...");
    68 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_CONSTRUCTL_1, "Starting to parse Call Forwarding config parameters...");
    63 
    69 
    64 	iIdentityServiceStatus=new(ELeave) CArrayFixFlat<TIdentityServiceStatus>(KSettingListGranularity);
    70 	iIdentityServiceStatus=new(ELeave) CArrayFixFlat<TIdentityServiceStatus>(KSettingListGranularity);
    65 	
    71 	
    66 	iGetCFStatus = new(ELeave) CArrayPtrFlat<CListReadAllAttempt>(1);
    72 	iGetCFStatus = new(ELeave) CArrayPtrFlat<CListReadAllAttempt>(1);
    67 	FindAndCreateCFListL();
    73 	FindAndCreateCFListL();
    78 
    84 
    79 		TInt status, service;
    85 		TInt status, service;
    80 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,service);
    86 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,service);
    81 		if(ret!=KErrNone)
    87 		if(ret!=KErrNone)
    82 			{
    88 			{
    83 			LOGPARSERR("service",ret,0,&KIdentityServiceStatus);
    89 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_CONSTRUCTL_2, "WARNING - CONFIGURATION FILE PARSING - Reading element SERVICE returned %d (element no. %d) from tag %s.",ret,0,KIdentityServiceStatus);
    84 			continue;
    90 			continue;
    85 			}
    91 			}
    86 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,status);
    92 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,status);
    87 		if(ret!=KErrNone)
    93 		if(ret!=KErrNone)
    88 			{
    94 			{
    89 			LOGPARSERR("status",ret,1,&KIdentityServiceStatus);
    95 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_CONSTRUCTL_3, "WARNING - CONFIGURATION FILE PARSING - Reading element STATUS returned %d (element no. %d) from tag %s.",ret,1,KIdentityServiceStatus);
    90 			continue;
    96 			continue;
    91 			}
    97 			}
    92 			
    98 			
    93 		TIdentityServiceStatus identityServiceStatus;
    99 		TIdentityServiceStatus identityServiceStatus;
    94 		identityServiceStatus.iService = static_cast<RMobilePhone::TMobilePhoneIdService>(service);
   100 		identityServiceStatus.iService = static_cast<RMobilePhone::TMobilePhoneIdService>(service);
    95 		identityServiceStatus.iStatus = static_cast<RMobilePhone::TMobilePhoneIdServiceStatus>(status);
   101 		identityServiceStatus.iStatus = static_cast<RMobilePhone::TMobilePhoneIdServiceStatus>(status);
    96 		iIdentityServiceStatus->AppendL(identityServiceStatus);
   102 		iIdentityServiceStatus->AppendL(identityServiceStatus);
    97 		}
   103 		}
    98 		
   104 		
    99 	LOGCALL1("...Finished parsing Call Forwarding config parameters...");
   105 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_CONSTRUCTL_4, "...Finished parsing Call Forwarding config parameters...");
   100 	}
   106 	}
   101 
   107 
   102 CSimCallForwarding::~CSimCallForwarding()
   108 CSimCallForwarding::~CSimCallForwarding()
   103 	/** 
   109 	/** 
   104 	Destroy all the objects constructed.
   110 	Destroy all the objects constructed.
   177 void CSimCallForwarding::FindAndCreateCFListL()
   183 void CSimCallForwarding::FindAndCreateCFListL()
   178 	{
   184 	{
   179 	/**
   185 	/**
   180 	Creates the Call forwarding list from the config file
   186 	Creates the Call forwarding list from the config file
   181 	*/
   187 	*/
   182 	LOGCALL1("CSimPhone::FindAndCreateCFListL");
   188 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_FINDANDCREATECFLISTL_1, "CSimPhone::FindAndCreateCFListL");
   183 	RMobilePhone::TMobilePhoneCFInfoEntryV1 entry;
   189 	RMobilePhone::TMobilePhoneCFInfoEntryV1 entry;
   184 
   190 
   185 	if(iCFList)
   191 	if(iCFList)
   186 		delete iCFList;
   192 		delete iCFList;
   187 	iCFList=NULL;
   193 	iCFList=NULL;
   189 	iCFList = CMobilePhoneCFList::NewL();
   195 	iCFList = CMobilePhoneCFList::NewL();
   190 	TInt count=CfgFile()->ItemCount(KCFList);
   196 	TInt count=CfgFile()->ItemCount(KCFList);
   191 	const CTestConfigItem* item=NULL;
   197 	const CTestConfigItem* item=NULL;
   192 	TInt ret=KErrNone;
   198 	TInt ret=KErrNone;
   193 
   199 
   194 	LOGCALL1("Starting to Load and Parse CFList Config parameters");
   200 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_FINDANDCREATECFLISTL_2, "Starting to Load and Parse CFList Config parameters");
   195 	
   201 	
   196 	TInt i;
   202 	TInt i;
   197 	for(i=0;i<count;i++)
   203 	for(i=0;i<count;i++)
   198 		{
   204 		{
   199 		item=CfgFile()->Item(KCFList,i);
   205 		item=CfgFile()->Item(KCFList,i);
   203 		TPtrC8 number;
   209 		TPtrC8 number;
   204 		TInt condition, serviceGroup, status, timeout; // valid for CFRNy only
   210 		TInt condition, serviceGroup, status, timeout; // valid for CFRNy only
   205 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,condition);
   211 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,0,condition);
   206 		if(ret!=KErrNone)
   212 		if(ret!=KErrNone)
   207 			{
   213 			{
   208 			LOGPARSERR("condition",ret,0,&KCFList);
   214 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_FINDANDCREATECFLISTL_3, "WARNING - CONFIGURATION FILE PARSING - Reading element CONDITION returned %d (element no. %d) from tag %s.",ret,0,KCFList);
   209 			continue;
   215 			continue;
   210 			}
   216 			}
   211 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,serviceGroup);
   217 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,1,serviceGroup);
   212 		if(ret!=KErrNone)
   218 		if(ret!=KErrNone)
   213 			{
   219 			{
   214 			LOGPARSERR("serviceGroup",ret,1,&KCFList);
   220 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_FINDANDCREATECFLISTL_4, "WARNING - CONFIGURATION FILE PARSING - Reading element SERVICEGROUP returned %d (element no. %d) from tag %s.",ret,1,KCFList);
   215 			continue;
   221 			continue;
   216 			}
   222 			}
   217 
   223 
   218 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,status);
   224 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,2,status);
   219 		if(ret!=KErrNone)
   225 		if(ret!=KErrNone)
   220 			{
   226 			{
   221 			LOGPARSERR("status",ret,2,&KCFList);
   227 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_FINDANDCREATECFLISTL_5, "WARNING - CONFIGURATION FILE PARSING - Reading element STATUS returned %d (element no. %d) from tag %s.",ret,2,KCFList);
   222 			continue;
   228 			continue;
   223 			}
   229 			}
   224 
   230 
   225 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,timeout);
   231 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,3,timeout);
   226 		if(ret!=KErrNone)
   232 		if(ret!=KErrNone)
   227 			{
   233 			{
   228 			LOGPARSERR("timeout",ret,3,&KCFList);
   234 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_FINDANDCREATECFLISTL_6, "WARNING - CONFIGURATION FILE PARSING - Reading element TIMEOUT returned %d (element no. %d) from tag %s.",ret,3,KCFList);
   229 			continue;
   235 			continue;
   230 			}
   236 			}
   231 		
   237 		
   232 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,4,number);
   238 		ret=CTestConfig::GetElement(item->Value(),KStdDelimiter,4,number);
   233 		if(ret!=KErrNone)
   239 		if(ret!=KErrNone)
   234 			{
   240 			{
   235 			LOGPARSERR("number",ret,4,&KCFList);
   241 			OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_FINDANDCREATECFLISTL_7, "WARNING - CONFIGURATION FILE PARSING - Reading element NUMBER returned %d (element no. %d) from tag %s.",ret,4,KCFList);
   236 			continue;
   242 			continue;
   237 			}
   243 			}
   238 		
   244 		
   239 		entry.iServiceGroup=(RMobilePhone::TMobileService)serviceGroup;
   245 		entry.iServiceGroup=(RMobilePhone::TMobileService)serviceGroup;
   240 		entry.iNumber.iTelNumber.Copy(number);
   246 		entry.iNumber.iTelNumber.Copy(number);
   352 	__ASSERT_ALWAYS(!iCFNotification.iCFChangeInfoNotificationPending,SimPanic(ENotificationReqAlreadyOutstanding));
   358 	__ASSERT_ALWAYS(!iCFNotification.iCFChangeInfoNotificationPending,SimPanic(ENotificationReqAlreadyOutstanding));
   353 
   359 
   354 	iCFNotification.iCFChangeInfoNotificationPending=ETrue;
   360 	iCFNotification.iCFChangeInfoNotificationPending=ETrue;
   355 	iCFNotification.iCFChangeInfoReqHandle=aReqHandle;
   361 	iCFNotification.iCFChangeInfoReqHandle=aReqHandle;
   356 	iCFNotification.iCurrentCFCondition=aCF;
   362 	iCFNotification.iCurrentCFCondition=aCF;
   357 	LOGCALL1("Finished CSimCallForwarding::NotifyCallForwardingStatusChange");
   363 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_NOTIFYCALLFORWARDINGSTATUSCHANGE_1, "Finished CSimCallForwarding::NotifyCallForwardingStatusChange");
   358 	return KErrNone;
   364 	return KErrNone;
   359 	}
   365 	}
   360 	
   366 	
   361 TInt CSimCallForwarding::NotifyCallForwardingStatusChangeCancel(const TTsyReqHandle aReqHandle)
   367 TInt CSimCallForwarding::NotifyCallForwardingStatusChangeCancel(const TTsyReqHandle aReqHandle)
   362 	/**
   368 	/**
   393 		iCFNotification.iCFChangeInfoNotificationPending=EFalse;
   399 		iCFNotification.iCFChangeInfoNotificationPending=EFalse;
   394 		iPhone->ReqCompleted(iCFNotification.iCFChangeInfoReqHandle,KErrNone);
   400 		iPhone->ReqCompleted(iCFNotification.iCFChangeInfoReqHandle,KErrNone);
   395 		}
   401 		}
   396 	
   402 	
   397 	iPhone->ReqCompleted(aReqHandle,err);
   403 	iPhone->ReqCompleted(aReqHandle,err);
   398 	LOGCALL1("Finished CSimCallForwarding::SetCallForwardingStatus");
   404 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_SETCALLFORWARDINGSTATUS_1, "Finished CSimCallForwarding::SetCallForwardingStatus");
   399 	return KErrNone;
   405 	return KErrNone;
   400 	}
   406 	}
   401 	
   407 	
   402 TInt CSimCallForwarding::SetCallForwardingStatusCancel(const TTsyReqHandle aReqHandle)
   408 TInt CSimCallForwarding::SetCallForwardingStatusCancel(const TTsyReqHandle aReqHandle)
   403 	/**
   409 	/**
   418 	1st phase retrieval of the status of call forwarding
   424 	1st phase retrieval of the status of call forwarding
   419 	@param aTsyReqHandle handle to the request
   425 	@param aTsyReqHandle handle to the request
   420 	@param aReqData contains details of the request
   426 	@param aReqData contains details of the request
   421 	@param aBufSize size of the buffer the client needs to allocate for phase 2
   427 	@param aBufSize size of the buffer the client needs to allocate for phase 2
   422 	*/
   428 	*/
   423 	LOGCALL1("CSimPhone::GetCallForwardingStatusPhase1");
   429 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_GETCALLFORWARDINGSTATUSPHASE1_1, "CSimPhone::GetCallForwardingStatusPhase1");
   424 	TInt ret=KErrNone;
   430 	TInt ret=KErrNone;
   425 
   431 
   426     // for forwarding we cannot querry for all conditions;
   432     // for forwarding we cannot querry for all conditions;
   427     // conditions - specific
   433     // conditions - specific
   428     // services  - individual and all
   434     // services  - individual and all
   437 		TInt leaveCode=KErrNone;
   443 		TInt leaveCode=KErrNone;
   438 		TRAP(leaveCode, ret=ProcessGetCallForwardingStatusPhase1L(aTsyReqHandle, aReqData, aBufSize););
   444 		TRAP(leaveCode, ret=ProcessGetCallForwardingStatusPhase1L(aTsyReqHandle, aReqData, aBufSize););
   439 		if (leaveCode != KErrNone)
   445 		if (leaveCode != KErrNone)
   440 			iPhone->ReqCompleted(aTsyReqHandle,leaveCode);
   446 			iPhone->ReqCompleted(aTsyReqHandle,leaveCode);
   441 		}
   447 		}
   442 	LOGCALL1("CSimPhone::GetCallForwardingStatusPhase1");
   448 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_GETCALLFORWARDINGSTATUSPHASE1_2, "CSimPhone::GetCallForwardingStatusPhase1");
   443 	return ret;
   449 	return ret;
   444 	}
   450 	}
   445 	
   451 	
   446 TInt CSimCallForwarding::ProcessGetCallForwardingStatusPhase1L(const TTsyReqHandle aTsyReqHandle, 
   452 TInt CSimCallForwarding::ProcessGetCallForwardingStatusPhase1L(const TTsyReqHandle aTsyReqHandle, 
   447 														 CRetrieveMobilePhoneCFList::TGetCallForwardingRequest* aReqData, 
   453 														 CRetrieveMobilePhoneCFList::TGetCallForwardingRequest* aReqData, 
   453 	@param aReqHandle Handle to the request
   459 	@param aReqHandle Handle to the request
   454 	@param aReqData information about the request
   460 	@param aReqData information about the request
   455 	@param aBufSize Size of the buffer the client has to allocate for the 2nd pahase
   461 	@param aBufSize Size of the buffer the client has to allocate for the 2nd pahase
   456 	*/
   462 	*/
   457 
   463 
   458 	LOGCALL1("CSimPhone::ProcessGetCallForwardingStatusPhase1L");
   464 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_PROCESSGETCALLFORWARDINGSTATUSPHASE1L_1, "CSimPhone::ProcessGetCallForwardingStatusPhase1L");
   459 
   465 
   460 	CMobilePhoneCFList* list=CMobilePhoneCFList::NewL();
   466 	CMobilePhoneCFList* list=CMobilePhoneCFList::NewL();
   461 	CleanupStack::PushL(list);
   467 	CleanupStack::PushL(list);
   462 	
   468 	
   463 	TInt cnt=0;//Only interested by entries with a particular condition
   469 	TInt cnt=0;//Only interested by entries with a particular condition
   501 	
   507 	
   502 	CleanupStack::PopAndDestroy(list); // pop&destroy list
   508 	CleanupStack::PopAndDestroy(list); // pop&destroy list
   503 	
   509 	
   504 	// Complete first phase of list retrieval
   510 	// Complete first phase of list retrieval
   505 	iPhone->ReqCompleted(aTsyReqHandle,KErrNone);
   511 	iPhone->ReqCompleted(aTsyReqHandle,KErrNone);
   506 	LOGCALL1("CSimPhone::ProcessGetCallForwardingStatusPhase1L");
   512 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_PROCESSGETCALLFORWARDINGSTATUSPHASE1L_2, "CSimPhone::ProcessGetCallForwardingStatusPhase1L");
   507 	return KErrNone;	
   513 	return KErrNone;	
   508 	}
   514 	}
   509 
   515 
   510 TInt CSimCallForwarding::GetCallForwardingStatusPhase2(const TTsyReqHandle aTsyReqHandle, 
   516 TInt CSimCallForwarding::GetCallForwardingStatusPhase2(const TTsyReqHandle aTsyReqHandle, 
   511 												 RMobilePhone::TClientId* aClient, TDes8* aBuf)
   517 												 RMobilePhone::TClientId* aClient, TDes8* aBuf)
   514 	@param aTsyRqHandle handle to the request
   520 	@param aTsyRqHandle handle to the request
   515 	@param aClient pointer to the client
   521 	@param aClient pointer to the client
   516 	@param aBuf buffer that contains the call forwarding list
   522 	@param aBuf buffer that contains the call forwarding list
   517 	*/
   523 	*/
   518 	{
   524 	{
   519 	LOGCALL1("CSimPhone::GetCallForwardingStatusPhase2");
   525 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_GETCALLFORWARDINGSTATUSPHASE2_1, "CSimPhone::GetCallForwardingStatusPhase2");
   520 	CListReadAllAttempt* read=NULL;
   526 	CListReadAllAttempt* read=NULL;
   521 	// Find the get detected network attempt from this client
   527 	// Find the get detected network attempt from this client
   522 	for (TInt i=0; i<iGetCFStatus->Count(); ++i)
   528 	for (TInt i=0; i<iGetCFStatus->Count(); ++i)
   523 		{
   529 		{
   524 		read = iGetCFStatus->At(i);
   530 		read = iGetCFStatus->At(i);
   533 			iPhone->ReqCompleted(aTsyReqHandle,KErrNone);
   539 			iPhone->ReqCompleted(aTsyReqHandle,KErrNone);
   534 			return KErrNone;
   540 			return KErrNone;
   535 			}
   541 			}
   536 		}
   542 		}
   537 	// Should handle error case of not finding the matching client from read all phase 1
   543 	// Should handle error case of not finding the matching client from read all phase 1
   538 	LOGCALL1("CSimPhone::GetCallForwardingStatusPhase2");
   544 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_GETCALLFORWARDINGSTATUSPHASE2_2, "CSimPhone::GetCallForwardingStatusPhase2");
   539 	return KErrNotFound;
   545 	return KErrNotFound;
   540 	}
   546 	}
   541 
   547 
   542 
   548 
   543 TInt CSimCallForwarding::GetCallForwardingStatusCancel(const TTsyReqHandle aTsyReqHandle)
   549 TInt CSimCallForwarding::GetCallForwardingStatusCancel(const TTsyReqHandle aTsyReqHandle)
   544 	{
   550 	{
   545 	/**
   551 	/**
   546 	Cancel the request to retrieve the status of call forwarding
   552 	Cancel the request to retrieve the status of call forwarding
   547 	@param aTsyReqHandle handle to the request
   553 	@param aTsyReqHandle handle to the request
   548 	*/
   554 	*/
   549 	LOGCALL1("CSimPhone::GetCallForwardingStatusCancel");
   555 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_GETCALLFORWARDINGSTATUSCANCEL_1, "CSimPhone::GetCallForwardingStatusCancel");
   550 	iPhone->ReqCompleted(aTsyReqHandle,KErrNone);
   556 	iPhone->ReqCompleted(aTsyReqHandle,KErrNone);
   551 	// Remove the read all attempt from iGetCFStatus
   557 	// Remove the read all attempt from iGetCFStatus
   552 	CListReadAllAttempt* read=NULL;
   558 	CListReadAllAttempt* read=NULL;
   553 	for (TInt i=0; i<iGetCFStatus->Count(); ++i)
   559 	for (TInt i=0; i<iGetCFStatus->Count(); ++i)
   554 		{
   560 		{
   559 			iGetCFStatus->Delete(i);
   565 			iGetCFStatus->Delete(i);
   560 			break;
   566 			break;
   561 			}
   567 			}
   562 		}
   568 		}
   563 	iPhone->ReqCompleted(aTsyReqHandle,KErrCancel);
   569 	iPhone->ReqCompleted(aTsyReqHandle,KErrCancel);
   564 	LOGCALL1("CSimPhone::GetCallForwardingStatusCancel");
   570 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSIMCALLFORWARDING_GETCALLFORWARDINGSTATUSCANCEL_2, "CSimPhone::GetCallForwardingStatusCancel");
   565 	return KErrNone;
   571 	return KErrNone;
   566 	}
   572 	}
   567 
   573 
   568 void CSimCallForwarding::UpdateCFListL(RMobilePhone::TMobilePhoneCFCondition* aCF, 
   574 void CSimCallForwarding::UpdateCFListL(RMobilePhone::TMobilePhoneCFCondition* aCF, 
   569 									   RMobilePhone::TMobilePhoneCFChangeV1* aCFInfo )
   575 									   RMobilePhone::TMobilePhoneCFChangeV1* aCFInfo )