Revision: 201025 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 21 Jun 2010 16:59:31 +0300
branchRCL_3
changeset 47 8b9e023e329f
parent 41 b836c4d4fce7
child 50 2ac16fe2d995
child 60 1ac40e087278
Revision: 201025 Kit: 2010125
telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_SpudNetworkSide.xml
telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_pdplayer_ip6.cfg
telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_pdplayer_ip6_pdpcpr.cfg
telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_spudNetworkSide_r4_and_r5.xml
telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/src/te_spudNetworkSideSteps.cpp
telephonyserverplugins/common_tsy/commontsy/exportinc/serviceapi/MmTsy_IPCdefs.h
telephonyserverplugins/common_tsy/commontsy/inc/mmtsy/cmmnettsy.h
telephonyserverplugins/common_tsy/commontsy/inc/mmtsy/cmmphonetsy.h
telephonyserverplugins/common_tsy/commontsy/inc/mmutility/MmTsy_numberOfSlots.h
telephonyserverplugins/common_tsy/commontsy/src/mmtsy/CMmMessageRouterProxy.cpp
telephonyserverplugins/common_tsy/commontsy/src/mmtsy/cmmnettsy.cpp
telephonyserverplugins/common_tsy/commontsy/src/mmtsy/cmmphonetsy.cpp
telephonyserverplugins/common_tsy/test/component/inc/cctsynetworkcontrolfu.h
telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/eabi/licenseetsyu.def
telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/cmmmessagerouter.cpp
telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/cmockphonemesshandler.cpp
telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsydll/bwins/mockltsydllu.def
telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsydll/eabi/mockltsydllu.def
telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsydll/inc/tmockltsydata.h
telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsydll/src/tmockltsydata.cpp
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_networkcontrol_individual.script
telephonyserverplugins/common_tsy/test/component/src/cctsynetworkcontrolfu.cpp
--- a/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_SpudNetworkSide.xml	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_SpudNetworkSide.xml	Mon Jun 21 16:59:31 2010 +0300
@@ -205,7 +205,7 @@
         <MessageValidityPeriod>0</MessageValidityPeriod>
         <MessageDeliveryReport>FALSE</MessageDeliveryReport>
         <LastSessionClosedTimeout>4</LastSessionClosedTimeout>
-        <LastSocketClosedTimeout>6</LastSocketClosedTimeout>
+        <LastSocketClosedTimeout>30</LastSocketClosedTimeout>
         <LastSocketActivityTimeout>180</LastSocketActivityTimeout>
         <CommRole>0</CommRole>
     </ModemBearer>
--- a/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_pdplayer_ip6.cfg	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_pdplayer_ip6.cfg	Mon Jun 21 16:59:31 2010 +0300
@@ -55,7 +55,7 @@
 	CSYName=PKTLOOPBACK
 	LastSocketActivityTimeout=180
 	LastSessionClosedTimeout=4
-	LastSocketClosedTimeout=6
+	LastSocketClosedTimeout=30
 	DataBits=8
 	StopBits=1
 	Parity=NONE
--- a/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_pdplayer_ip6_pdpcpr.cfg	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_pdplayer_ip6_pdpcpr.cfg	Mon Jun 21 16:59:31 2010 +0300
@@ -55,7 +55,7 @@
 	CSYName=PKTLOOPBACK
 	LastSocketActivityTimeout=180
 	LastSessionClosedTimeout=4
-	LastSocketClosedTimeout=6
+	LastSocketClosedTimeout=30
 	DataBits=8
 	StopBits=1
 	Parity=NONE
--- a/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_spudNetworkSide_r4_and_r5.xml	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_spudNetworkSide_r4_and_r5.xml	Mon Jun 21 16:59:31 2010 +0300
@@ -271,7 +271,7 @@
         <MessageValidityPeriod>0</MessageValidityPeriod>
         <MessageDeliveryReport>FALSE</MessageDeliveryReport>
         <LastSessionClosedTimeout>4</LastSessionClosedTimeout>
-        <LastSocketClosedTimeout>6</LastSocketClosedTimeout>
+        <LastSocketClosedTimeout>30</LastSocketClosedTimeout>
         <LastSocketActivityTimeout>180</LastSocketActivityTimeout>
         <CommRole>0</CommRole>
     </ModemBearer>
--- a/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/src/te_spudNetworkSideSteps.cpp	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/src/te_spudNetworkSideSteps.cpp	Mon Jun 21 16:59:31 2010 +0300
@@ -1981,6 +1981,12 @@
 
 	// start rawipnif instance opposite the SPUD's secondary context, and open a socket on it
 	CConnectionStart *secondaryIfStart = CConnectionStart::NewLC(iEsock, *this, oppositeSecondaryIapId);
+
+    TRequestStatus progressReqSt;   
+    
+	secondaryIfStart->iInterface.ProgressNotification(iProgressBuf, progressReqSt, 7000);
+	WaitForProgressNotificationL(progressReqSt, 7000, 0); // We can wait here forever. Set timeout on test step.
+
 #ifndef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
 	WaitForQoSEventL(_L("SecondaryActivationEvent2"), _L("SecondaryActivationEvent2Reason"));
 #else
@@ -2238,6 +2244,20 @@
     	TestL(p->Start(iap1prefs),primaryCreationErr, _L("RConnection::Start the interface"));
 	    }
 
+	//check if all contexts are still there
+	for (TInt i = 0; i < maximumConnections; i++)
+	    {
+        TBuf<32> primaryIap;
+        primaryIap.Format(KPrimaryIapFormatLit, i + 1);
+    	if (!GetIntFromConfig(ConfigSection(), primaryIap, primaryIapId))
+    		{
+    		User::Leave(KErrNotFound);
+    		}
+		INFO_PRINTF2(_L("Verify context #%d is still there"), i);
+		VerifySubconnectionCountL(2, primaryIapId);
+		INFO_PRINTF2(_L("Context #%d is still there"), i);
+	    }
+
 	
 	for (TInt i = (interfaces.Count() - 1); i >= 0; i--)
 	    {
--- a/telephonyserverplugins/common_tsy/commontsy/exportinc/serviceapi/MmTsy_IPCdefs.h	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyserverplugins/common_tsy/commontsy/exportinc/serviceapi/MmTsy_IPCdefs.h	Mon Jun 21 16:59:31 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -156,18 +156,22 @@
 	ECtsyPhoneCellInfoComp,
 	ECtsyPhoneCellInfoIndReq,
 	ECtsyPhoneCellInfoIndComp,
-	ECtsyPhoneCellInfoInd,
+	ECtsyPhoneCellInfoInd,	// 5
 	ECtsyUpdateLifeTimeReq,
 	ECtsyUpdateLifeTimeComp,
 	ECtsyPacketMbmsInitialiseContextReq,
 	ECtsyPacketMbmsInitialiseContextComp,
-	ECtsyPacketMbmsContextNotifyConfigChanged,
+	ECtsyPacketMbmsContextNotifyConfigChanged, // 10
 	ECtsyPhoneTerminateAllCallsReq,
 	ECtsyPhoneTerminateAllCallsComp,
 	// RMobilePhone::NotifySendNetworkServiceRequest
 	ECtsyPhoneSendNetworkServiceRequestReq,
 	ECtsyPhoneSendNetworkServiceRequestIndReq,
-	ECtsyPhoneSendNetworkServiceRequestInd
+	ECtsyPhoneSendNetworkServiceRequestInd,	//15
+	ECtsyPhoneGetPreferredNetworksReq,
+	ECtsyPhoneGetPreferredNetworksComp,
+	ECtsyPhoneStorePreferredNetworksListReq,
+	ECtsyPhoneStorePreferredNetworksListComp
 	};
 #else
 enum TCtsyIpc
@@ -177,14 +181,18 @@
 	ECtsyPhoneCellInfoIndReq,
 	ECtsyPhoneCellInfoIndComp,
 	ECtsyUpdateLifeTimeReq,
-	ECtsyUpdateLifeTimeComp,
+	ECtsyUpdateLifeTimeComp,	// 5
 	ECtsyPacketMbmsInitialiseContextReq,
 	ECtsyPacketMbmsInitialiseContextComp,
 	ECtsyPacketMbmsContextNotifyConfigChanged,
 	ECtsyPhoneTerminateAllCallsReq,
-	ECtsyPhoneTerminateAllCallsComp,
+	ECtsyPhoneTerminateAllCallsComp,	//10
 	ECtsyPhoneSendNetworkServiceRequestInd,
-	ECtsyGetPhoneIdV2Comp
+	ECtsyGetPhoneIdV2Comp,
+	ECtsyPhoneGetPreferredNetworksReq,
+	ECtsyPhoneGetPreferredNetworksComp,
+	ECtsyPhoneStorePreferredNetworksListReq,	 //15
+	ECtsyPhoneStorePreferredNetworksListComp
 	};
 #endif //USING_CTSY_DISPATCHER
 
--- a/telephonyserverplugins/common_tsy/commontsy/inc/mmtsy/cmmnettsy.h	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyserverplugins/common_tsy/commontsy/inc/mmtsy/cmmnettsy.h	Mon Jun 21 16:59:31 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -329,6 +329,23 @@
         	CMmDataPackage* aDataPackage,
         	TInt aErrorValue );                        
 
+        /**
+         * Completes an outstanding GetPreferredNetworksListPhase1L,
+         * which retrieves Preferred Networks List from LTSY Layer
+         *          
+         * @param aError: Error value
+         * @param aDataPackage: contains Preferred Networks List from LTSY layer
+         */
+        void CompleteGetPreferredNetworksListPhase1(TInt aError, CMmDataPackage* aDataPackage);
+
+        /**
+         * Completes an outstanding StorePreferredNetworksListL,
+         * which stores Preferred Networks List to LTSY layer
+         *          
+         * @param aError: Error value
+         */
+        void CompleteStorePreferredNetworksList(TInt aError);
+        
     private:
     
         /**
@@ -922,8 +939,68 @@
          *         
          * @return KErrNone
          */
-        TInt GetCurrentActiveUSimApplicationCancel();        
+        TInt GetCurrentActiveUSimApplicationCancel();   
+        
+        /**
+         * Returns minimum size of a buffer to retreive the current Preferred Networks List from SIM
+         * 
+         * @param aTsyReqHandle: Request handle
+         * @param aId: pointer to the client id
+         * @param aBufSize: pointer to the size of buffer
+         * @return : Error value.
+         */
+        TInt GetPreferredNetworksListPhase1L(const TTsyReqHandle aTsyReqHandle, 
+            											 RMobilePhone::TClientId const* aId, TInt* aBufSize);
+        
+        /**
+         * Copies the current Preferred Networks List into the given buffer
+         * 
+         * @param aTsyReqHandle: Request handle
+         * @param aId: pointer to the client id
+         * @param aBuffer: pointer to the buffer for retrieving the Preferred Networks List
+         * @return TInt: Error value.
+         */
+        TInt GetPreferredNetworksListPhase2(const TTsyReqHandle aTsyReqHandle, 
+            											 RMobilePhone::TClientId const* aId, TDes8* aBuffer);
+        
+        /**
+         * Stores the Preferred Networks List into the SIM
+         * 
+         * @param aTsyReqHandle: Request handle
+         * @param aBuffer: pointer to the buffer for the Preferred Networks List to be stored
+         * @return TInt: Error value.
+         */
+        TInt StorePreferredNetworksListL(const TTsyReqHandle aTsyReqHandle, TDes8* aBuffer);
+        
+        /**
+         * Cancels the request for Getting Preferred Networks List
+         * 
+         * @param aTsyReqHandle: Request handle
+         * @return : Error value.
+         */
+        TInt GetPreferredNetworksListCancel(const TTsyReqHandle aTsyReqHandle);
 
+        /**
+         * Subscribes the notification for storing Preferred networks List
+         * 
+         * @return TInt: Error value.
+         */
+        TInt NotifyStorePreferredNetworksListChange();
+        
+        /**
+         * Cancels the notification request for storing Preferred Networks List
+         * 
+         * @param aTsyReqHandle: Request handle
+         * @return: Error value.
+         */
+        TInt NotifyStorePreferredNetworksListChangeCancel(const TTsyReqHandle aTsyReqHandle);
+
+        /**
+         * Completes the notification request for storing Preferred Networks List
+         * 
+         */
+        void CompleteNotifyStorePreferredNetworksListChange();
+        
     protected:  // Data
         //None
 
@@ -1081,7 +1158,27 @@
         /**
          * Pointer to the current active usim application.       
          */         
-        RMobilePhone::TAID* iRetCurrentActiveUSimApplication;            
+        RMobilePhone::TAID* iRetCurrentActiveUSimApplication;
+      
+		/*
+		*  Not owned, buffer size for reading preferred networks list
+		*/
+		TInt* iBufSizeGetPrefPLMN;
+
+		/*
+		* Copy of client ID for reading preferred networks list
+		*/
+		RMobilePhone::TClientId* iClientIdGetPrefPLMN; 
+
+		/*
+		* Streamed contents of the retrieved preferred networks list
+		*/
+		CBufBase* iGetPrefPLMNList;
+
+		/*
+		* Client supplied preferred networks list for storing to the SIM
+		*/
+		CMobilePhoneStoredNetworkList* iStorePrefPLMNList;
     };
 
 #endif // CMMNETSY_H
--- a/telephonyserverplugins/common_tsy/commontsy/inc/mmtsy/cmmphonetsy.h	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyserverplugins/common_tsy/commontsy/inc/mmtsy/cmmphonetsy.h	Mon Jun 21 16:59:31 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -124,10 +124,13 @@
             EMultimodePhoneNotifyNWSelectionSettingChange, 
             EMultimodePhoneNotifyNWTimeInfoChange, //15
             EMultimodePhoneSelectNetwork, 
-            EMultimodePhoneSetNWSelectionSetting, 
+            EMultimodePhoneSetNWSelectionSetting,
+            EMultimodePhoneGetPreferredNetworksPhase1,
+            EMultimodePhoneStorePreferredNetworksList,
+            EMultimodePhoneNotifyStorePreferredNetworksListChange, // 20
             EMultimodePhoneSetCallForwardingStatus, 
             EMultimodePhoneGetIdentityServiceStatus,
-            EMultimodePhoneSetCallBarringStatus, //20
+            EMultimodePhoneSetCallBarringStatus,
             EMultimodePhoneSetSSPassword,
             EMultimodePhoneSetCallWaitingStatus,
             EMultimodePhoneSetFdnSetting,
--- a/telephonyserverplugins/common_tsy/commontsy/inc/mmutility/MmTsy_numberOfSlots.h	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyserverplugins/common_tsy/commontsy/inc/mmutility/MmTsy_numberOfSlots.h	Mon Jun 21 16:59:31 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -63,6 +63,7 @@
 const TUint8 KMmPhoneNotifySendNetworkServiceRequestSlots = 2;
 const TUint8 KMmPhoneNotifyAllSendNetworkServiceRequestSlots = 2;
 const TUint8 KMmPhoneCellInfoChangeSlots = 2;
+const TUint8 KMmPhoneStorePreferredNetworksListChangeSlots = 2;
 
 //CMmLineTsy
 const TUint8 KMmLineStatusChangeSlots = 2;
--- a/telephonyserverplugins/common_tsy/commontsy/src/mmtsy/CMmMessageRouterProxy.cpp	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyserverplugins/common_tsy/commontsy/src/mmtsy/CMmMessageRouterProxy.cpp	Mon Jun 21 16:59:31 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -2602,10 +2602,18 @@
                     aDataPackage, aResult );
                 break;
             case EMmTsyPhoneBookStoreFdnInfoIPC:
-TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: route to phonetsy EMmTsyPhoneBookStoreFdnInfoIPC");               
+				TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: route to phonetsy EMmTsyPhoneBookStoreFdnInfoIPC");               
                 static_cast<CMmPhoneTsy*>( mmObject )->
                     SaveFdnInfoDetails( aResult, aDataPackage );
                 break;
+			case ECtsyPhoneGetPreferredNetworksComp:
+				TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: route to MmNetTsy ECtsyPhoneGetPreferredNetworksComp"); 				
+				static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->CompleteGetPreferredNetworksListPhase1(aResult, aDataPackage);
+				break;
+			case ECtsyPhoneStorePreferredNetworksListComp:
+				TFLOGSTRING("TSY: CMmMessageRouterProxy::RouteCompletion: route to MmNetTsy ECtsyPhoneStorePreferredNetworksListComp"); 				
+				static_cast<CMmPhoneTsy*>( mmObject )->GetNetTsy()->CompleteStorePreferredNetworksList(aResult);
+				break;
             default:
                 break;
             }
--- a/telephonyserverplugins/common_tsy/commontsy/src/mmtsy/cmmnettsy.cpp	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyserverplugins/common_tsy/commontsy/src/mmtsy/cmmnettsy.cpp	Mon Jun 21 16:59:31 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -25,6 +25,7 @@
 #include "cmmcalllist.h"
 #include "cmmcalltsy.h"
 #include "CMmCommonStaticUtility.h"
+#include "mmtsy_ipcdefs.h"
 #include <ctsy/serviceapi/gsmerror.h>
 
 // ======== MEMBER FUNCTIONS ========
@@ -106,6 +107,12 @@
     
     // Destroy array        			
     iRegisterationStatusRequests.ResetAndDestroy();
+    
+    // delete buffers for PLMN List 
+	delete iClientIdGetPrefPLMN;
+	delete iGetPrefPLMNList;
+	delete iStorePrefPLMNList;
+	
     }
     
     
@@ -283,7 +290,23 @@
         case EMobilePhoneGetCurrentActiveUSimApplication:
             ret = GetCurrentActiveUSimApplicationL( aTsyReqHandle,
                 reinterpret_cast<RMobilePhone::TAID*>( dataPtr ) );
-            break;                        
+            break;
+		case EMobilePhoneGetPreferredNetworksPhase1:
+			ret = GetPreferredNetworksListPhase1L(aTsyReqHandle, 
+				                                  reinterpret_cast< RMobilePhone::TClientId*>( dataPtr ),
+                                                  reinterpret_cast< TInt* >( dataPtr2 ) );
+			break;
+        case EMobilePhoneGetPreferredNetworksPhase2:
+			ret = GetPreferredNetworksListPhase2
+				    (aTsyReqHandle, reinterpret_cast<RMobilePhone::TClientId*>(aPackage.Ptr1()),
+				     aPackage.Des2n());
+        	break;
+		case EMobilePhoneStorePreferredNetworksList:
+			ret = StorePreferredNetworksListL(aTsyReqHandle, aPackage.Des1n());
+			break;
+		case EMobilePhoneNotifyStorePreferredNetworksListChange:
+			ret = NotifyStorePreferredNetworksListChange();
+			break;
         default:
             ret = KErrNotSupported;
             break;
@@ -429,7 +452,18 @@
                 }
             break;
             }    
-        //Default case
+		case EMobilePhoneGetPreferredNetworksPhase1:
+			ret = GetPreferredNetworksListCancel(aTsyReqHandle);
+			break;
+		case EMobilePhoneStorePreferredNetworksList:
+			// LTSY doesn't have transcation mechanism so that storing request cannot be cancelled.
+			// So this cancellation request is ignored. 
+            ret = KErrNone; 
+			break;
+		case EMobilePhoneNotifyStorePreferredNetworksListChange:
+			ret = NotifyStorePreferredNetworksListChangeCancel(aTsyReqHandle);
+			break;
+	        //Default case
         default:
             ret = KErrNone; 
             break;
@@ -3179,7 +3213,364 @@
         iMmPhoneTsy->ReqCompleted( reqHandle, aErrorValue );	        				                          
         }    	        
     }
-    
+
+// ---------------------------------------------------------------------------
+// CMmNetTsy::GetPreferredNetworksListPhase1L
+// Returns minimum size of a buffer to retreive the current Preferred Networks List from SIM
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmNetTsy::GetPreferredNetworksListPhase1L(const TTsyReqHandle /*aTsyReqHandle*/, 
+    											 RMobilePhone::TClientId const* aId, TInt* aBufSize)
+	{
+	TFLOGSTRING("TSY: CMmNetTsy::GetPreferredNetworksListPhase1");	
+	TTsyReqHandle getPrefPLMNHandle = iMmPhoneTsy->iTsyReqHandleStore->GetTsyReqHandle
+		                              (CMmPhoneTsy::EMultimodePhoneGetPreferredNetworksPhase1);
+	
+	if(CMmPhoneTsy::EMultimodePhoneReqHandleUnknown != getPrefPLMNHandle)
+		{
+        // The request is already processing because of previous request
+        // Complete request with status value informing the client about 
+        // the situation.
+		TFLOGSTRING("TSY GetPreferredNetworksListPhase1: the request is already processing because previous request.");
+		return KErrServerBusy;
+        }
+	else
+		{
+		TInt ret = iMmPhoneTsy->iMessageManager->HandleRequestL(ECtsyPhoneGetPreferredNetworksReq);
+
+		if(KErrNone == ret)
+			{
+			TFLOGSTRING("TSY: Successfully send IPC EMobilePhoneGetPreferredNetworksPhase1 to LTSY");
+			
+			iMmPhoneTsy->iReqHandleType = CMmPhoneTsy::EMultimodePhoneGetPreferredNetworksPhase1;
+			
+			// if iGetPrefPLMNList, iClientIdGetPrefPLMN, and/or iBufSizeGetPrefPLMN are not NULL, phase 1 is called twice without calling phase 2.
+			// In this case, we should ignore the previous phase 1 and delete buffers.
+			if(iGetPrefPLMNList != NULL)
+				{
+				delete iGetPrefPLMNList;
+				iGetPrefPLMNList = NULL;
+				}
+			iBufSizeGetPrefPLMN = aBufSize;
+			if(iClientIdGetPrefPLMN != NULL)
+				{
+				delete iClientIdGetPrefPLMN;
+				iClientIdGetPrefPLMN = NULL;
+				}
+			// Copy client id (session and subsession handle). it's used for
+            // matching phase 1 and 2 of a request
+			iClientIdGetPrefPLMN = new ( ELeave ) RMobilePhone::TClientId( *aId ); 
+			
+			}
+		else
+			{
+			TFLOGSTRING2("TSY: GetPreferredNetworksListPhase1L LTSY returns error=%d", ret);			
+			return ret;
+			}
+		}
+	return KErrNone;
+	
+	}
+
+// ---------------------------------------------------------------------------
+// CMmNetTsy::GetPreferredNetworksListPhase2
+// Copies the current Preferred Networks List in the given buffer
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmNetTsy::GetPreferredNetworksListPhase2(const TTsyReqHandle aTsyReqHandle, 
+    											 RMobilePhone::TClientId const* aId, TDes8* aBuffer)
+	{
+	TFLOGSTRING2("TSY: CMmNetTsy::GetPreferredNetworksListPhase2: aTsyReqHandle=%d", aTsyReqHandle);	
+	TInt ret = KErrNone;
+	
+	if( ( iClientIdGetPrefPLMN->iSessionHandle == aId->iSessionHandle ) &&
+        ( iClientIdGetPrefPLMN->iSubSessionHandle == aId->iSubSessionHandle ) )
+		{
+		TFLOGSTRING3("TSY GetPreferredNetworksListPhase2: Phase 1 and Phase 2 client ID matched, Copy the streamed list to client buffer. session %d, subsession %d.",
+				iClientIdGetPrefPLMN->iSessionHandle, iClientIdGetPrefPLMN->iSubSessionHandle);		
+		if(iGetPrefPLMNList != NULL)
+			{
+			aBuffer->Copy( iGetPrefPLMNList->Ptr( 0 ) );
+			// MmPhoneTsy completes the request only if return an error
+			// so the request without error code has to complete here
+			iMmPhoneTsy->ReqCompleted(aTsyReqHandle, KErrNone);
+			}
+		else
+			{
+			ret = KErrNotReady;
+			}
+		}
+	else
+		{
+		TFLOGSTRING("TSY GetPreferredNetworksListPhase2: Phase 1 and Phase 2 client ID not matched, complete request with KErrCorrupt");			
+		ret = KErrCorrupt;
+		}
+
+	delete iClientIdGetPrefPLMN;
+	iClientIdGetPrefPLMN = NULL;
+
+	delete iGetPrefPLMNList;
+	iGetPrefPLMNList = NULL;
+	
+	iBufSizeGetPrefPLMN = NULL;
+	
+	return ret;
+	}
+
+// ---------------------------------------------------------------------------
+// CMmNetTsy::StorePreferredNetworksListL
+// Stores the Preferred Networks List into the SIM
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmNetTsy::StorePreferredNetworksListL(const TTsyReqHandle /*aTsyReqHandle*/, TDes8* aBuffer)
+	{
+	TFLOGSTRING("TSY: CMmNetTsy::StorePreferredNetworksList");	
+
+	TTsyReqHandle storePrefPLMNHandle = 
+			iMmPhoneTsy->iTsyReqHandleStore->GetTsyReqHandle( CMmPhoneTsy::EMultimodePhoneStorePreferredNetworksList );
+
+	if(CMmPhoneTsy::EMultimodePhoneReqHandleUnknown != storePrefPLMNHandle)
+        {
+        // The request is already processing because of previous request.
+        // Complete request with status value informing the client about 
+        // the situation.
+		TFLOGSTRING("TSY StorePreferredNetworksListL: the request is already processing because previous request.");
+		return KErrServerBusy;
+        }
+    else
+        {
+    	iMmPhoneTsy->iReqHandleType = CMmPhoneTsy::EMultimodePhoneStorePreferredNetworksList;
+		delete iStorePrefPLMNList;
+		iStorePrefPLMNList = NULL;
+		iStorePrefPLMNList = CMobilePhoneStoredNetworkList::NewL();
+		iStorePrefPLMNList->RestoreL(*aBuffer);
+
+		CMmDataPackage package;
+		package.PackData(iStorePrefPLMNList);
+		TInt ret = iMmPhoneTsy->iMessageManager->HandleRequestL(ECtsyPhoneStorePreferredNetworksListReq, &package);
+		if(KErrNone == ret)
+			{
+			TFLOGSTRING("TSY StorePreferredNetworksListL: Successfully send IPC EMobilePhoneStorePreferredNetworksList to LTSY");
+
+			}
+		else
+			{
+			TFLOGSTRING2("TSY StorePreferredNetworksListL: LTSY returns error=%d", ret);		
+			delete iStorePrefPLMNList;
+			iStorePrefPLMNList = NULL;
+			return ret;
+			}
+    	}
+
+	return KErrNone;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CMmNetTsy::GetPreferredNetworksListCancel
+// Cancels the request for Getting Preferred Networks List
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmNetTsy::GetPreferredNetworksListCancel(const TTsyReqHandle /*aTsyReqHandle*/)
+	{
+	TFLOGSTRING("TSY: CMmPhoneTsy::GetPreferredNetworksListCancel");
+
+	TTsyReqHandle reqHandle = iMmPhoneTsy->iTsyReqHandleStore->ResetTsyReqHandle(CMmPhoneTsy::EMultimodePhoneGetPreferredNetworksPhase1); 
+
+	if(CMmPhoneTsy::EMultimodePhoneReqHandleUnknown != reqHandle)
+		{
+		iBufSizeGetPrefPLMN = NULL;
+		if(iClientIdGetPrefPLMN)
+			{
+			delete iClientIdGetPrefPLMN;
+			iClientIdGetPrefPLMN = NULL;
+			}
+		if(iGetPrefPLMNList)
+			{
+			delete iGetPrefPLMNList;
+			iGetPrefPLMNList = NULL;
+			}
+        iMmPhoneTsy->ReqCompleted( reqHandle, KErrCancel );        
+		}
+	//if reqHandle is 0, it means  phase 1 has completed and the list retrieval cannot be cancelled
+	return KErrNone;
+	}
+
+// ---------------------------------------------------------------------------
+// CMmNetTsy::NotifyStorePreferredNetworksListChange
+// Subscribes the notification for storing Preferred networks List
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmNetTsy::NotifyStorePreferredNetworksListChange()
+	{
+	TFLOGSTRING("TSY: CMmPhoneTsy::NotifyStorePreferredNetworksListChange");	
+	iMmPhoneTsy->iReqHandleType = CMmPhoneTsy::EMultimodePhoneNotifyStorePreferredNetworksListChange;
+
+	return KErrNone;
+	}
+
+// ---------------------------------------------------------------------------
+// CMmNetTsy::NotifyStorePreferredNetworksListChangeCancel
+// Cancels the notification request for storing Preferred Networks List
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMmNetTsy::NotifyStorePreferredNetworksListChangeCancel(const TTsyReqHandle aTsyReqHandle)
+	{
+	TFLOGSTRING2("TSY: CMmNetTsy::NotifyStorePreferredNetworksListChangeCancel: aTsyReqHandle=%d", aTsyReqHandle);
+	TTsyReqHandle reqHandle = iMmPhoneTsy->iTsyReqHandleStore->ResetTsyReqHandle
+		                       (CMmPhoneTsy::EMultimodePhoneNotifyStorePreferredNetworksListChange);	
+
+	if(CMmPhoneTsy::EMultimodePhoneReqHandleUnknown != reqHandle)
+		{
+		iMmPhoneTsy->ReqCompleted( aTsyReqHandle, KErrCancel );
+		}
+	return KErrNone;
+	}
+
+// ---------------------------------------------------------------------------
+// CMmNetTsy::CompleteGetPreferredNetworksListPhase1
+// Completes the notification request for storing Preferred Networks List
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CMmNetTsy::CompleteGetPreferredNetworksListPhase1(TInt aError, CMmDataPackage* aDataPackage)
+	{
+	TFLOGSTRING2("TSY: CMmNetTsy::CompleteGetPreferredNetworksListPhase1: aError=%d", aError);
+
+	TTsyReqHandle reqHandle = iMmPhoneTsy->iTsyReqHandleStore->ResetTsyReqHandle( CMmPhoneTsy::EMultimodePhoneGetPreferredNetworksPhase1 );
+
+	TFLOGSTRING2("TSY CompleteGetPreferredNetworksListPhase1: EMobilePhoneGetPreferredNetworksPhase1 reqHandle=%d", reqHandle);
+
+	TInt completeError = KErrNone;
+	
+	if(CMmPhoneTsy::EMultimodePhoneReqHandleUnknown == reqHandle)
+		{
+		TFLOGSTRING("TSY CompleteGetPreferredNetworksListPhase1: reqHandle is 0, cannot complete Phase1 list retrieval request!!");
+		if(iClientIdGetPrefPLMN)
+			{
+			delete iClientIdGetPrefPLMN;
+			iClientIdGetPrefPLMN = NULL;
+			}
+		}
+	else if(KErrNone == aError)
+		{
+		if(iGetPrefPLMNList == NULL)
+			{
+			TFLOGSTRING("TSY CompleteGetPreferredNetworksListPhase1: LTSY successfully retrieved the preferred networks list, unpack it");		
+			CMobilePhoneStoredNetworkList* list;
+			aDataPackage->UnPackData(&list);
+	
+			TRAPD(trapError, iGetPrefPLMNList = list->StoreLC(); CleanupStack::Pop();); // pop the CBufBase * allocated by StoreLC
+			if(KErrNone == trapError)
+				{
+				*iBufSizeGetPrefPLMN = iGetPrefPLMNList->Size();
+				TFLOGSTRING2("TSY CompleteGetPreferredNetworksListPhase1: first phase list retrieval is OK!!, client buffer = %d", *iBufSizeGetPrefPLMN);					
+				iMmPhoneTsy->ReqCompleted( reqHandle, KErrNone );
+			
+				}
+			else
+				{
+				TFLOGSTRING2("TSY CompleteGetPreferredNetworksListPhase1: failed to stream the list into the buffer, error = %d!!", trapError);
+				completeError = trapError;
+				}
+			delete list;
+			}
+		else
+			{
+			TFLOGSTRING("TSY CompleteGetPreferredNetworksListPhase1: iGetPrefPLMNList is not null");
+			completeError = KErrServerBusy;
+			}
+		}
+	else
+		{
+		TFLOGSTRING2("TSY CompleteGetPreferredNetworksListPhase1: LTSY failed to retrieve preferred network list!! error = %d", aError);
+		completeError = aError;
+		}
+	
+	if(completeError != KErrNone)
+		{
+		iMmPhoneTsy->ReqCompleted( reqHandle, aError );
+		if(iClientIdGetPrefPLMN)
+			{
+			delete iClientIdGetPrefPLMN;
+			iClientIdGetPrefPLMN = NULL;
+			}
+		}
+	
+	iBufSizeGetPrefPLMN = NULL;
+	}
+
+// ---------------------------------------------------------------------------
+// CMmNetTsy::CompleteStorePreferredNetworksList
+// Completes an outstanding StorePreferredNetworksListL, which stores Preferred Networks List to LTSY layer
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CMmNetTsy::CompleteStorePreferredNetworksList(TInt aError)
+	{
+	TFLOGSTRING2("TSY: CMmPhoneTsy::CompleteStorePreferredNetworksList: aError=%d", aError);	
+
+	TTsyReqHandle reqHandle = iMmPhoneTsy->iTsyReqHandleStore->ResetTsyReqHandle( CMmPhoneTsy::EMultimodePhoneStorePreferredNetworksList );
+
+	TFLOGSTRING2("TSY CompleteStorePreferredNetworksList: EMobilePhoneStorePreferredNetworksList reqHandle=%d", reqHandle);
+
+	if(iStorePrefPLMNList != NULL)
+		{
+		delete iStorePrefPLMNList;
+		iStorePrefPLMNList = NULL;
+
+		}
+
+	if(KErrNone == aError)
+		{
+		if(CMmPhoneTsy::EMultimodePhoneReqHandleUnknown == reqHandle)
+			{
+			// we cannot complete the store request but complete the notifier.
+			TFLOGSTRING("TSY CompleteStorePreferredNetworksList: reqHandle is 0, cannot complete store list request!!");
+			}
+		else
+			{
+			TFLOGSTRING("TSY CompleteStorePreferredNetworksList: LTSY successfully stored the preferred networks list");
+			iMmPhoneTsy->ReqCompleted( reqHandle, KErrNone );
+			}
+		CompleteNotifyStorePreferredNetworksListChange();
+		}
+	else
+		{
+		TFLOGSTRING("TSY CompleteStorePreferredNetworksList: LTSY failed to store the preferred networks list");
+		iMmPhoneTsy->ReqCompleted( reqHandle, aError );
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CMmNetTsy::CompleteNotifyStorePreferredNetworksListChange
+// Completes the notification request for storing Preferred Networks List
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CMmNetTsy::CompleteNotifyStorePreferredNetworksListChange()
+	{
+TFLOGSTRING("TSY: CMmPhoneTsy::CompleteNotifyStorePreferredNetworksListChange");	
+
+	TTsyReqHandle reqHandle = iMmPhoneTsy->iTsyReqHandleStore->ResetTsyReqHandle
+		                      ( CMmPhoneTsy::EMultimodePhoneNotifyStorePreferredNetworksListChange );
+    if (CMmPhoneTsy::EMultimodePhoneReqHandleUnknown != reqHandle )
+        {
+    	iMmPhoneTsy->ReqCompleted( reqHandle, KErrNone);
+        }
+	else
+		{
+		TFLOGSTRING("TSY CompleteNotifyStorePreferredNetworksListChange: reqHandle is 0, cannot complete request for IPC EMobilePhoneNotifyStorePreferredNetworksListChange!!");
+
+		}
+	}
+
 //  End of File 
 
 
--- a/telephonyserverplugins/common_tsy/commontsy/src/mmtsy/cmmphonetsy.cpp	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyserverplugins/common_tsy/commontsy/src/mmtsy/cmmphonetsy.cpp	Mon Jun 21 16:59:31 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -1231,7 +1231,11 @@
         case EMobilePhoneAuthorizationInfoPhase2:
         case EMobilePhoneGetCellInfo:
         case EMobilePhoneNotifyCellInfoChange:
-        case EMobilePhoneGetCurrentActiveUSimApplication:                
+        case EMobilePhoneGetCurrentActiveUSimApplication:
+        case EMobilePhoneGetPreferredNetworksPhase1:
+        case EMobilePhoneGetPreferredNetworksPhase2:
+        case EMobilePhoneStorePreferredNetworksList:
+        case EMobilePhoneNotifyStorePreferredNetworksListChange:
             //direct this request to the net specific DoExtFuncL
             ret = iMmNetTsy->DoExtFuncL ( aTsyReqHandle, aIpc, aPackage );
             break;
@@ -1632,6 +1636,9 @@
         case EMobilePhoneDeleteAPNName:
         case EMobilePhoneAppendAPNName:
         case EMobilePhoneGetSecurityCodeInfo:
+		case EMobilePhoneGetPreferredNetworksPhase1:
+		case EMobilePhoneGetPreferredNetworksPhase2:		
+		case EMobilePhoneStorePreferredNetworksList:
 
         //SS related methods.
         case EMobilePhoneGetCallForwardingStatusPhase1:
@@ -1755,6 +1762,7 @@
         case EMobilePhoneNotifySendNetworkServiceRequest:
         case EMobilePhoneNotifyAllSendNetworkServiceRequest: 
         case EMobilePhoneNotifyCellInfoChange:
+		case EMobilePhoneNotifyStorePreferredNetworksListChange:
             ret=KReqModeMultipleCompletionEnabled | KReqModeRePostImmediately;
             break;
         // Cancel Requests
@@ -1905,6 +1913,9 @@
         case EMobilePhoneNotifyCellInfoChange:
         	numberOfSlots = KMmPhoneCellInfoChangeSlots;
         	break;
+		case EMobilePhoneNotifyStorePreferredNetworksListChange:
+			numberOfSlots = KMmPhoneStorePreferredNetworksListChangeSlots;
+            break;
         default:
             // Unknown or invalid Phone IPC
             User::Leave( KErrNotSupported );
@@ -1963,6 +1974,9 @@
         case EMobilePhoneGetCellInfo:
         case EMobilePhoneNotifyCellInfoChange:
         case EMobilePhoneGetCurrentActiveUSimApplication:        
+        case EMobilePhoneGetPreferredNetworksPhase1:
+        case EMobilePhoneStorePreferredNetworksList:
+        case EMobilePhoneNotifyStorePreferredNetworksListChange:
         	ret = iMmNetTsy->CancelService( aIpc, aTsyReqHandle );
             break;
 		// forward SS cancellations
@@ -2558,6 +2572,7 @@
         case EMobilePhoneNotifySendNetworkServiceRequest:
         case EMobilePhoneNotifyAllSendNetworkServiceRequest:
         case EMobilePhoneNotifyCellInfoChange:
+        case EMobilePhoneNotifyStorePreferredNetworksListChange:
             ret = KErrNone;
             break;
         default:
@@ -2623,6 +2638,7 @@
         case EMobilePhoneNotifySendNetworkServiceRequest:
         case EMobilePhoneNotifyAllSendNetworkServiceRequest:
         case EMobilePhoneNotifyCellInfoChange:
+		case EMobilePhoneNotifyStorePreferredNetworksListChange:
             ret = KErrNone;
             break;
         default:
--- a/telephonyserverplugins/common_tsy/test/component/inc/cctsynetworkcontrolfu.h	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/inc/cctsynetworkcontrolfu.h	Mon Jun 21 16:59:31 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -105,11 +105,20 @@
 	void TestSetNetworkSelectionSetting0005L();
 	void TestGetLastUsedAccessTechnology0001L();
 	void TestStorePreferredNetworksListL0001L();
+    void TestStorePreferredNetworksListL0001aL();
+    void TestStorePreferredNetworksListL0001bL();
+    void TestStorePreferredNetworksListL0002L();
+	void TestRetrieveMobilePhonePreferredNetworks0001L();
+	void TestRetrieveMobilePhonePreferredNetworks0001aL();
+	void TestRetrieveMobilePhonePreferredNetworks0001bL();
+	void TestRetrieveMobilePhonePreferredNetworks0001cL();
+	void TestRetrieveMobilePhonePreferredNetworks0002L();			
 	void TestGetNetworkRegistrationStatus0001L();
 	void TestGetNetworkRegistrationStatus0002L();
 	void TestGetNetworkRegistrationStatus0004L();
 	void TestGetNetworkRegistrationStatus0005L();
 	void TestNotifyPreferredNetworksListChange0001L();
+    void TestNotifyPreferredNetworksListChange0002L();  
 	void TestNotifyNetworkSelectionSettingChange0001L();
 	void TestNotifyNetworkSelectionSettingChange0002L();
 	void TestNotifyNetworkSelectionSettingChange0004L();
--- a/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/eabi/licenseetsyu.def	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/eabi/licenseetsyu.def	Mon Jun 21 16:59:31 2010 +0300
@@ -940,4 +940,8 @@
 	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI15TApduParametersEE @ 939 NONAME
 	_ZTV14TMockLtsyData1IN12RMmCustomAPI15TApduParametersEE @ 940 NONAME
 	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI15TApduParametersEE @ 941 NONAME
+	_ZTI14TMockLtsyData1IP29CMobilePhoneStoredNetworkListE @ 942 NONAME
+	_ZTI17TMockLtsyData1BufIP29CMobilePhoneStoredNetworkListE @ 943 NONAME
+	_ZTV14TMockLtsyData1IP29CMobilePhoneStoredNetworkListE @ 944 NONAME
+	_ZTV17TMockLtsyData1BufIP29CMobilePhoneStoredNetworkListE @ 945 NONAME
 
--- a/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/cmmmessagerouter.cpp	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/cmmmessagerouter.cpp	Mon Jun 21 16:59:31 2010 +0300
@@ -451,6 +451,10 @@
         case EMobilePhoneGetCipheringIndicatorStatus:
         case EMobilePhoneNotifySecurityCapsChange:
         case EMmTsySimRefreshRegisterIPC:
+        case ECtsyPhoneGetPreferredNetworksReq:
+        case ECtsyPhoneGetPreferredNetworksComp:
+        case ECtsyPhoneStorePreferredNetworksListReq:
+        case ECtsyPhoneStorePreferredNetworksListComp:
         
         // APNControl
         case EMobilePhoneGetAPNname: 
--- a/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/cmockphonemesshandler.cpp	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/cmockphonemesshandler.cpp	Mon Jun 21 16:59:31 2010 +0300
@@ -363,6 +363,14 @@
 			TMockLtsyData1< TInt > data(callId);
 			return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc, data);
 			}
+        case ECtsyPhoneStorePreferredNetworksListReq:
+            {
+            CMobilePhoneStoredNetworkList* list = NULL;
+            aMmDataPackage->UnPackData(&list);
+            TMockLtsyData1<CMobilePhoneStoredNetworkList*> data(list);
+            return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
+            }
+        case ECtsyPhoneGetPreferredNetworksReq:
     	case ECtsyPhoneCellInfoReq:
     	case ECtsyPhoneCellInfoIndReq:			
     	case EMobilePhoneSelectNetworkCancel:
@@ -934,10 +942,18 @@
 			}
 			break;
 		case ECtsyPhoneTerminateAllCallsComp:
+        case ECtsyPhoneStorePreferredNetworksListComp:
 			{
 			// no parameter is required
-			}
-			break;
+			}		
+            break;
+        case ECtsyPhoneGetPreferredNetworksComp:
+            {
+            CMobilePhoneStoredNetworkList* list = CMobilePhoneStoredNetworkList::NewL();
+            TSerializer<CMobilePhoneStoredNetworkList>::DeserialiseL(aData, *list);
+            dataPackage.PackData(list);
+            }
+            break;
 		default:
 			{
 			// shouldnt get here. will panic MessageManager()->Complete if allowed to continue
--- a/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsydll/bwins/mockltsydllu.def	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsydll/bwins/mockltsydllu.def	Mon Jun 21 16:59:31 2010 +0300
@@ -183,4 +183,9 @@
 	?IsEqual@?$TComparator@VTApduParameters@RMmCustomAPI@@@@SAHABVTApduParameters@RMmCustomAPI@@0@Z @ 182 NONAME ; int TComparator<class RMmCustomAPI::TApduParameters>::IsEqual(class RMmCustomAPI::TApduParameters const &, class RMmCustomAPI::TApduParameters const &)
 	?IsEqual@?$TComparator@VTSimFileInfo@RMmCustomAPI@@@@SAHABVTSimFileInfo@RMmCustomAPI@@0@Z @ 183 NONAME ; int TComparator<class RMmCustomAPI::TSimFileInfo>::IsEqual(class RMmCustomAPI::TSimFileInfo const &, class RMmCustomAPI::TSimFileInfo const &)
 	?IsEqual@?$TComparator@VTMobileDataCallParamsV8@RMobileCall@@@@SAHABVTMobileDataCallParamsV8@RMobileCall@@0@Z @ 184 NONAME ; int TComparator<class RMobileCall::TMobileDataCallParamsV8>::IsEqual(class RMobileCall::TMobileDataCallParamsV8 const &, class RMobileCall::TMobileDataCallParamsV8 const &)
+	?DeserialiseL@?$TSerializer@VCMobilePhoneStoredNetworkList@@@@SAXABVTDesC8@@AAVCMobilePhoneStoredNetworkList@@@Z @ 185 NONAME ; void TSerializer<class CMobilePhoneStoredNetworkList>::DeserialiseL(class TDesC8 const &, class CMobilePhoneStoredNetworkList &)
+	?ConstructL@?$TConstructor@VCMobilePhoneStoredNetworkList@@@@SAXAAPAVCMobilePhoneStoredNetworkList@@@Z @ 186 NONAME ; void TConstructor<class CMobilePhoneStoredNetworkList>::ConstructL(class CMobilePhoneStoredNetworkList * &)
+	?SerialiseL@?$TSerializer@VCMobilePhoneStoredNetworkList@@@@SAXABVCMobilePhoneStoredNetworkList@@AAVRBuf8@@@Z @ 187 NONAME ; void TSerializer<class CMobilePhoneStoredNetworkList>::SerialiseL(class CMobilePhoneStoredNetworkList const &, class RBuf8 &)
+	?IsEqual@?$TComparator@VCMobilePhoneStoredNetworkList@@@@SAHABVCMobilePhoneStoredNetworkList@@0@Z @ 188 NONAME ; int TComparator<class CMobilePhoneStoredNetworkList>::IsEqual(class CMobilePhoneStoredNetworkList const &, class CMobilePhoneStoredNetworkList const &)
+	?IsEqual@?$TComparator@VTMobilePreferredNetworkEntryV3@RMobilePhone@@@@SAHABVTMobilePreferredNetworkEntryV3@RMobilePhone@@0@Z @ 189 NONAME ; int TComparator<class RMobilePhone::TMobilePreferredNetworkEntryV3>::IsEqual(class RMobilePhone::TMobilePreferredNetworkEntryV3 const &, class RMobilePhone::TMobilePreferredNetworkEntryV3 const &)
 
--- a/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsydll/eabi/mockltsydllu.def	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsydll/eabi/mockltsydllu.def	Mon Jun 21 16:59:31 2010 +0300
@@ -1,208 +1,213 @@
 EXPORTS
 	_ZN10TDestroyerI21TContextConfigurationE7DestroyERS0_ @ 1 NONAME
-	_ZN10TDestroyerIP12CArrayPtrSegI20CPhoneBookStoreEntryEE7DestroyERS3_ @ 2 NONAME
-	_ZN10TDestroyerIP20CPhoneBookStoreEntryE7DestroyERS1_ @ 3 NONAME
-	_ZN10TDestroyerIP6TDesC8E7DestroyES1_ @ 4 NONAME
-	_ZN11TComparatorI14TContextParamsE7IsEqualERKS0_S3_ @ 5 NONAME
-	_ZN11TComparatorI16TENStoreResponseE7IsEqualERKS0_S3_ @ 6 NONAME
-	_ZN11TComparatorI20TLockSettingPasswordE7IsEqualERKS0_S3_ @ 7 NONAME
-	_ZN11TComparatorI21TContextConfigurationE7IsEqualERKS0_S3_ @ 8 NONAME
-	_ZN11TComparatorI24TCbsCbmiAndLangAndFilterE7IsEqualERKS0_S3_ @ 9 NONAME
-	_ZN11TComparatorI27CMobilePhoneBroadcastIdListE7IsEqualERKS0_S3_ @ 10 NONAME
-	_ZN11TComparatorI4TBufILi16EEE7IsEqualERKS1_S4_ @ 11 NONAME
-	_ZN11TComparatorI4TBufILi32EEE7IsEqualERKS1_S4_ @ 12 NONAME
-	_ZN11TComparatorI4TBufILi6EEE7IsEqualERKS1_S4_ @ 13 NONAME
-	_ZN11TComparatorIN11RMobileCall17TMobileCallInfoV1EE7IsEqualERKS1_S4_ @ 14 NONAME
-	_ZN11TComparatorIN11RMobileCall19TMobileCallParamsV1EE7IsEqualERKS1_S4_ @ 15 NONAME
-	_ZN11TComparatorIN12RMobilePhone11TAPNEntryV3EE7IsEqualERKS1_S4_ @ 16 NONAME
-	_ZN11TComparatorIN12RMobilePhone19TCodeAndUnblockCodeEE7IsEqualERKS1_S4_ @ 17 NONAME
-	_ZN11TComparatorIN12RMobilePhone22TImsAuthenticateDataV5EE7IsEqualERKS1_S4_ @ 18 NONAME
-	_ZN11TComparatorIN12RMobilePhone22TMobilePhoneCFChangeV1EE7IsEqualERKS1_S4_ @ 19 NONAME
-	_ZN11TComparatorIN12RMobilePhone24TMobilePhoneSecurityCodeEE7IsEqualERKS1_S4_ @ 20 NONAME
-	_ZN11TComparatorIN12RMobilePhone28TMobilePhonePasswordChangeV2EE7IsEqualES1_S1_ @ 21 NONAME
-	_ZN11TComparatorIN12RMobilePhone34TMobilePhoneNetworkManualSelectionEE7IsEqualERKS1_S4_ @ 22 NONAME
-	_ZN11TComparatorIN14RMobileONStore16TMobileONEntryV1EE7IsEqualES1_S1_ @ 23 NONAME
-	_ZN11TComparatorIN14RPacketContext17TContextConfig_R5EE7IsEqualERKS1_S4_ @ 24 NONAME
-	_ZN11TComparatorIN14RPacketContext18TContextConfigGPRSEE7IsEqualERKS1_S4_ @ 25 NONAME
-	_ZN11TComparatorIN14RPacketContext20TContextConfigR99_R4EE7IsEqualERKS1_S4_ @ 26 NONAME
-	_ZN11TComparatorIN14RPacketContext24CTFTMediaAuthorizationV3EE7IsEqualERKS1_S4_ @ 27 NONAME
-	_ZN11TComparatorIN25RMobileBroadcastMessaging25TMobileBroadcastIdEntryV1EE7IsEqualERKS1_S4_ @ 28 NONAME
-	_ZN11TComparatorIN5RCall9TCommPortEE7IsEqualES1_S1_ @ 29 NONAME
-	_ZN11TComparatorIP12CArrayPtrSegI20CPhoneBookStoreEntryEE7IsEqualERKS3_S6_ @ 30 NONAME
-	_ZN11TComparatorIP13CArrayFixFlatIN14RPacketContext15TPacketFilterV2EEE7IsEqualEPKS3_S7_ @ 31 NONAME
-	_ZN11TComparatorIP20CPhoneBookStoreEntryE7IsEqualERKS1_S4_ @ 32 NONAME
-	_ZN11TComparatorIP25CMobilePhoneNetworkListV2E7IsEqualEPKS0_S4_ @ 33 NONAME
-	_ZN11TComparatorIP5TPckgIN14RMobileONStore16TMobileONEntryV1EEE7IsEqualEPKS3_S4_ @ 34 NONAME
-	_ZN11TComparatorIP6TDesC8E7IsEqualEPKS0_S4_ @ 35 NONAME
-	_ZN11TComparatorIPN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEE7IsEqualERKS2_S5_ @ 36 NONAME
-	_ZN11TSerializerI21TContextConfigurationE10SerialiseLERKS0_R5RBuf8 @ 37 NONAME
-	_ZN11TSerializerI21TContextConfigurationE12DeserialiseLERK6TDesC8RS0_ @ 38 NONAME
-	_ZN11TSerializerI27CMobilePhoneBroadcastIdListE10SerialiseLERKS0_R5RBuf8 @ 39 NONAME
-	_ZN11TSerializerI27CMobilePhoneBroadcastIdListE12DeserialiseLERK6TDesC8RS0_ @ 40 NONAME
-	_ZN11TSerializerIN14RPacketContext24CTFTMediaAuthorizationV3EE10SerialiseLERKS1_R5RBuf8 @ 41 NONAME
-	_ZN11TSerializerIN14RPacketContext24CTFTMediaAuthorizationV3EE12DeserialiseLERK6TDesC8RS1_ @ 42 NONAME
-	_ZN11TSerializerIP12CArrayPtrSegI20CPhoneBookStoreEntryEE10SerialiseLEPKS2_R5RBuf8 @ 43 NONAME
-	_ZN11TSerializerIP12CArrayPtrSegI20CPhoneBookStoreEntryEE12DeserialiseLERK6TDesC8RS3_ @ 44 NONAME
-	_ZN11TSerializerIP20CPhoneBookStoreEntryE10SerialiseLEPKS0_R5RBuf8 @ 45 NONAME
-	_ZN11TSerializerIP20CPhoneBookStoreEntryE12DeserialiseLERK6TDesC8RS1_ @ 46 NONAME
-	_ZN11TSerializerIP25CMobilePhoneNetworkListV2E10SerialiseLEPKS0_R5RBuf8 @ 47 NONAME
-	_ZN11TSerializerIP25CMobilePhoneNetworkListV2E12DeserialiseLERK6TDesC8RS1_ @ 48 NONAME
-	_ZN11TSerializerIP6TDesC8E10SerialiseLEPKS0_R5RBuf8 @ 49 NONAME
-	_ZN11TSerializerIP6TDesC8E12DeserialiseLERKS0_RS1_ @ 50 NONAME
-	_ZN11TSerializerIPN14RPacketContext24CTFTMediaAuthorizationV3EE10SerialiseLEPKS1_R5RBuf8 @ 51 NONAME
-	_ZN11TSerializerIPN14RPacketContext24CTFTMediaAuthorizationV3EE12DeserialiseLERK6TDesC8RS2_ @ 52 NONAME
-	_ZN12TConstructorI27CMobilePhoneBroadcastIdListE10ConstructLERPS0_ @ 53 NONAME
-	_ZN12TConstructorIN14RPacketContext24CTFTMediaAuthorizationV3EE10ConstructLERPS1_ @ 54 NONAME
-	_ZN18TMockLtsyCallData012DeserialiseLERK6TDesC8 @ 55 NONAME
-	_ZN18TMockLtsyCallData0C1EiN12RMobilePhone14TMobileServiceE @ 56 NONAME
-	_ZN18TMockLtsyCallData0C1Ev @ 57 NONAME
-	_ZN18TMockLtsyCallData0C2EiN12RMobilePhone14TMobileServiceE @ 58 NONAME
-	_ZN18TMockLtsyCallData0C2Ev @ 59 NONAME
-	_ZN21TMockLtsyContextData012DeserialiseLERK6TDesC8 @ 60 NONAME
-	_ZN21TMockLtsyContextData024ContextConfigurationTypeEv @ 61 NONAME
-	_ZN21TMockLtsyContextData06ConfigEv @ 62 NONAME
-	_ZN21TMockLtsyContextData0C1ERN14RPacketContext18TContextConfigGPRSEi @ 63 NONAME
-	_ZN21TMockLtsyContextData0C1Ev @ 64 NONAME
-	_ZN21TMockLtsyContextData0C2ERN14RPacketContext18TContextConfigGPRSEi @ 65 NONAME
-	_ZN21TMockLtsyContextData0C2Ev @ 66 NONAME
-	_ZN22TPacketQoSR5Negotiated12InternalizeLER11RReadStream @ 67 NONAME
-	_ZN22TPacketQoSR5NegotiatedC1Ev @ 68 NONAME
-	_ZN22TPacketQoSR5NegotiatedC2Ev @ 69 NONAME
-	_ZN23TMockLtsyPacketQoSData012DeserialiseLERK6TDesC8 @ 70 NONAME
-	_ZN23TMockLtsyPacketQoSData015QoSR5NegotiatedEv @ 71 NONAME
-	_ZN23TMockLtsyPacketQoSData017QoSGPRSNegotiatedEv @ 72 NONAME
-	_ZN23TMockLtsyPacketQoSData019QoSR99_R4NegotiatedEv @ 73 NONAME
-	_ZN23TMockLtsyPacketQoSData0C1ER24TPacketQoSGPRSNegotiatedR26TPacketQoSR99_R4NegotiatedR22TPacketQoSR5Negotiated @ 74 NONAME
-	_ZN23TMockLtsyPacketQoSData0C1Ev @ 75 NONAME
-	_ZN23TMockLtsyPacketQoSData0C2ER24TPacketQoSGPRSNegotiatedR26TPacketQoSR99_R4NegotiatedR22TPacketQoSR5Negotiated @ 76 NONAME
-	_ZN23TMockLtsyPacketQoSData0C2Ev @ 77 NONAME
-	_ZN23TMockLtsyPhoneBookData012DeserialiseLERK6TDesC8 @ 78 NONAME
-	_ZN23TMockLtsyPhoneBookData013PhoneBookNameEv @ 79 NONAME
-	_ZN23TMockLtsyPhoneBookData0C1ER4TBufILi128EE @ 80 NONAME
-	_ZN23TMockLtsyPhoneBookData0C1Ev @ 81 NONAME
-	_ZN23TMockLtsyPhoneBookData0C2ER4TBufILi128EE @ 82 NONAME
-	_ZN23TMockLtsyPhoneBookData0C2Ev @ 83 NONAME
-	_ZN24TPacketQoSGPRSNegotiated12InternalizeLER11RReadStream @ 84 NONAME
-	_ZN24TPacketQoSGPRSNegotiatedC1Ev @ 85 NONAME
-	_ZN24TPacketQoSGPRSNegotiatedC2Ev @ 86 NONAME
-	_ZN26TPacketQoSR99_R4Negotiated12InternalizeLER11RReadStream @ 87 NONAME
-	_ZN26TPacketQoSR99_R4NegotiatedC1Ev @ 88 NONAME
-	_ZN26TPacketQoSR99_R4NegotiatedC2Ev @ 89 NONAME
-	_ZN9RMockLtsy10ServerNameEv @ 90 NONAME
-	_ZN9RMockLtsy7ExpectLEiRK6TDesC8ii @ 91 NONAME
-	_ZN9RMockLtsy7ExpectLEiii @ 92 NONAME
-	_ZN9RMockLtsy9CompleteLEiiRK6TDesC8i @ 93 NONAME
-	_ZN9RMockLtsy9CompleteLEiii @ 94 NONAME
-	_ZNK14TMockLtsyData0eqERK6TDesC8 @ 95 NONAME
-	_ZNK18TMockLtsyCallData010SerialiseLER5RBuf8 @ 96 NONAME
-	_ZNK18TMockLtsyCallData06CallIdEv @ 97 NONAME
-	_ZNK18TMockLtsyCallData08CallModeEv @ 98 NONAME
-	_ZNK18TMockLtsyCallData0eqERK6TDesC8 @ 99 NONAME
-	_ZNK21TMockLtsyContextData010SerialiseLER5RBuf8 @ 100 NONAME
-	_ZNK21TMockLtsyContextData0eqERK6TDesC8 @ 101 NONAME
-	_ZNK22TPacketQoSR5Negotiated12ExternalizeLER12RWriteStream @ 102 NONAME
-	_ZNK22TPacketQoSR5NegotiatedeqERKS_ @ 103 NONAME
-	_ZNK23TMockLtsyPacketQoSData010SerialiseLER5RBuf8 @ 104 NONAME
-	_ZNK23TMockLtsyPacketQoSData0eqERK6TDesC8 @ 105 NONAME
-	_ZNK23TMockLtsyPhoneBookData010SerialiseLER5RBuf8 @ 106 NONAME
-	_ZNK23TMockLtsyPhoneBookData0eqERK6TDesC8 @ 107 NONAME
-	_ZNK24TPacketQoSGPRSNegotiated12ExternalizeLER12RWriteStream @ 108 NONAME
-	_ZNK24TPacketQoSGPRSNegotiatedeqERKS_ @ 109 NONAME
-	_ZNK26TPacketQoSR99_R4Negotiated12ExternalizeLER12RWriteStream @ 110 NONAME
-	_ZNK26TPacketQoSR99_R4NegotiatedeqERKS_ @ 111 NONAME
-	_ZTI14TMockLtsyData0 @ 112 NONAME
-	_ZTI18TMockLtsyCallData0 @ 113 NONAME
-	_ZTI21TMockLtsyContextData0 @ 114 NONAME
-	_ZTI23TMockLtsyPacketQoSData0 @ 115 NONAME
-	_ZTI23TMockLtsyPhoneBookData0 @ 116 NONAME
-	_ZTI9RMockLtsy @ 117 NONAME
-	_ZTV14TMockLtsyData0 @ 118 NONAME
-	_ZTV18TMockLtsyCallData0 @ 119 NONAME
-	_ZTV21TMockLtsyContextData0 @ 120 NONAME
-	_ZTV23TMockLtsyPacketQoSData0 @ 121 NONAME
-	_ZTV23TMockLtsyPhoneBookData0 @ 122 NONAME
-	_ZTV9RMockLtsy @ 123 NONAME
-	_ZN10TDestroyerI25TSendSmsDataAndAttributesE7DestroyERS0_ @ 124 NONAME
-	_ZN10TDestroyerIPN12RMobilePhone14TMultimodeTypeEE7DestroyES2_ @ 125 NONAME
-	_ZN11TComparatorI18CMobilePhoneCFListE7IsEqualERKS0_S3_ @ 126 NONAME
-	_ZN11TComparatorI18CMobilePhoneCWListE7IsEqualERKS0_S3_ @ 127 NONAME
-	_ZN11TComparatorI20CMobilePhoneListBaseE7IsEqualERKS0_S3_ @ 128 NONAME
-	_ZN11TComparatorI25TSendSmsDataAndAttributesE7IsEqualERKS0_S3_ @ 129 NONAME
-	_ZN11TSerializerI18CMobilePhoneCFListE10SerialiseLERKS0_R5RBuf8 @ 130 NONAME
-	_ZN11TSerializerI18CMobilePhoneCFListE12DeserialiseLERK6TDesC8RS0_ @ 131 NONAME
-	_ZN11TSerializerI18CMobilePhoneCWListE10SerialiseLERKS0_R5RBuf8 @ 132 NONAME
-	_ZN11TSerializerI18CMobilePhoneCWListE12DeserialiseLERK6TDesC8RS0_ @ 133 NONAME
-	_ZN11TSerializerI20CMobilePhoneListBaseE10SerialiseLERKS0_R5RBuf8 @ 134 NONAME
-	_ZN11TSerializerI20CMobilePhoneListBaseE12DeserialiseLERK6TDesC8RS0_ @ 135 NONAME
-	_ZN11TSerializerI25TSendSmsDataAndAttributesE10SerialiseLES0_R5RBuf8 @ 136 NONAME
-	_ZN11TSerializerI25TSendSmsDataAndAttributesE12DeserialiseLERK6TDesC8RS0_ @ 137 NONAME
-	_ZN12TConstructorI18CMobilePhoneCFListE10ConstructLERPS0_ @ 138 NONAME
-	_ZN12TConstructorI18CMobilePhoneCWListE10ConstructLERPS0_ @ 139 NONAME
-	_ZN12TConstructorI20CMobilePhoneSmspListE10ConstructLERPS0_ @ 140 NONAME
-	_ZN12TConstructorIN12RMobilePhone14TMultimodeTypeEE10ConstructLERPS1_ @ 141 NONAME
-	_ZN11TComparatorI4TBufILi10EEE7IsEqualERKS1_S4_ @ 142 NONAME
-	_ZN11TComparatorI4TBufILi15EEE7IsEqualERKS1_S4_ @ 143 NONAME
-	_ZN11TComparatorIN12RMmCustomAPI11TMmCellInfoEE7IsEqualERKS1_S4_ @ 144 NONAME
-	_ZN11TComparatorIN12RMmCustomAPI18TViagCacheRecordIdEE7IsEqualERKS1_S4_ @ 145 NONAME
-	_ZN11TComparatorIN12RMmCustomAPI20TEmerNumberCheckModeEE7IsEqualERKS1_S4_ @ 146 NONAME
-	_ZN11TComparatorIN12RMmCustomAPI23TViagCacheRecordContentEE7IsEqualERKS1_S4_ @ 147 NONAME
-	_ZN11TComparatorIN12RMmCustomAPI24TSimAuthenticationEapAkaEE7IsEqualERKS1_S4_ @ 148 NONAME
-	_ZN11TComparatorIN12RMmCustomAPI24TSimAuthenticationEapSimEE7IsEqualERKS1_S4_ @ 149 NONAME
-	_ZN11TComparatorIN12RMmCustomAPI5TApduEE7IsEqualERKS1_S4_ @ 150 NONAME
-	_ZN11TComparatorIN12RMobilePhone21TMobilePhoneCspFileV1EE7IsEqualERKS1_S4_ @ 151 NONAME
-	_ZN11TComparatorIN12RMobilePhone26TMobilePhoneServiceTableV1EE7IsEqualERKS1_S4_ @ 152 NONAME
-	_ZN11TComparatorI5TBuf8ILi16EEE7IsEqualERKS1_S4_ @ 153 NONAME
-	_ZN11TComparatorIN12RMobilePhone11TAuthInfoV8EE7IsEqualERKS1_S4_ @ 154 NONAME
-	_ZN11TComparatorIN12RMmCustomAPI30TSimAuthenticationGbaBootstrapEE7IsEqualERKS1_S4_ @ 155 NONAME
-	_ZN11TComparatorIN12RMmCustomAPI30TSimAuthenticationMgvMskUpdateEE7IsEqualERKS1_S4_ @ 156 NONAME
-	_ZN11TComparatorIN12RMmCustomAPI32TSimAuthenticationMgvMskDeletionEE7IsEqualERKS1_S4_ @ 157 NONAME
-	_ZN11TComparatorIN12RMmCustomAPI34TSimAuthenticationGbaNafDerivationEE7IsEqualERKS1_S4_ @ 158 NONAME
-	_ZN11TComparatorIN12RMmCustomAPI34TSimAuthenticationMgvMtkGenerationEE7IsEqualERKS1_S4_ @ 159 NONAME
-	_ZN11TComparatorIN12RMmCustomAPI36TSimAuthenticationGbaBootstrapUpdateEE7IsEqualERKS1_S4_ @ 160 NONAME
-	_ZN11TComparatorIN11RMobileCall17TMobileCallInfoV8EE7IsEqualERKS1_S4_ @ 161 NONAME
-	_ZN11TComparatorIN11RMobileCall19TMobileCallParamsV7EE7IsEqualERKS1_S4_ @ 162 NONAME
-	_ZN10TDestroyerI31TMmMbmsMonitorServiceListParamsE7DestroyERS0_ @ 163 NONAME
-	_ZN11TComparatorI11TMbmsActionE7IsEqualERKS0_S3_ @ 164 NONAME
-	_ZN11TComparatorI25TMbmsNetworkServiceStatusE7IsEqualERKS0_S3_ @ 165 NONAME
-	_ZN11TComparatorI29CPcktMbmsMonitoredServiceListE7IsEqualERKS0_S3_ @ 166 NONAME
-	_ZN11TComparatorI30TMmMbmsActiveServiceListParamsE7IsEqualERKS0_S3_ @ 167 NONAME
-	_ZN11TComparatorI31TMmMbmsMonitorServiceListParamsE7IsEqualERKS0_S3_ @ 168 NONAME
-	_ZN11TSerializerI29CPcktMbmsMonitoredServiceListE10SerialiseLERKS0_R5RBuf8 @ 169 NONAME
-	_ZN11TSerializerI29CPcktMbmsMonitoredServiceListE12DeserialiseLERK6TDesC8RS0_ @ 170 NONAME
-	_ZN11TSerializerI31TMmMbmsMonitorServiceListParamsE10SerialiseLERKS0_R5RBuf8 @ 171 NONAME
-	_ZN11TSerializerI31TMmMbmsMonitorServiceListParamsE12DeserialiseLERK6TDesC8RS0_ @ 172 NONAME
-	_ZN11TSerializerIN18RPacketMbmsContext12CMbmsSessionEE10SerialiseLERKS1_R5RBuf8 @ 173 NONAME
-	_ZN11TSerializerIN18RPacketMbmsContext12CMbmsSessionEE12DeserialiseLERK6TDesC8RS1_ @ 174 NONAME
-	_ZN12TConstructorI29CPcktMbmsMonitoredServiceListE10ConstructLERPS0_ @ 175 NONAME
-	_ZN12TConstructorIN18RPacketMbmsContext12CMbmsSessionEE10ConstructLERPS1_ @ 176 NONAME
-	_ZN11TSerializerI30TMmMbmsActiveServiceListParamsE10SerialiseLERKS0_R5RBuf8 @ 177 NONAME
-	_ZN11TSerializerI30TMmMbmsActiveServiceListParamsE12DeserialiseLERK6TDesC8RS0_ @ 178 NONAME
-	_ZN10TDestroyerIN12RMmCustomAPI13TOperatorLogoEE7DestroyERS1_ @ 179 NONAME
-	_ZN11TSerializerIN12RMmCustomAPI13TOperatorLogoEE10SerialiseLERKS1_R5RBuf8 @ 180 NONAME
-	_ZN11TSerializerIN12RMmCustomAPI13TOperatorLogoEE12DeserialiseLERK6TDesC8RS1_ @ 181 NONAME
-	_ZN11TComparatorI20CMobilePhoneSmspListE7IsEqualERKS0_S3_ @ 182 NONAME
-	_ZN11TComparatorI5TBuf8ILi165EEE7IsEqualERKS1_S4_ @ 183 NONAME
-	_ZN11TComparatorI5TBuf8ILi252EEE7IsEqualERKS1_S4_ @ 184 NONAME
-	_ZN11TComparatorI5TBuf8ILi253EEE7IsEqualERKS1_S4_ @ 185 NONAME
-	_ZN11TComparatorI5TBuf8ILi50EEE7IsEqualERKS1_S4_ @ 186 NONAME
-	_ZN11TComparatorIN11RMobileCall22TMobileCallHscsdInfoV8EE7IsEqualERKS1_S4_ @ 187 NONAME
-	_ZN11TComparatorIN11RMobileCall24TMobileHscsdCallParamsV8EE7IsEqualERKS1_S4_ @ 188 NONAME
-	_ZN11TComparatorIN11RMobileCall7TIconIdEE7IsEqualERKS1_S4_ @ 189 NONAME
-	_ZN11TComparatorIN12RMobilePhone14TMobileAddressEE7IsEqualERKS1_S4_ @ 190 NONAME
-	_ZN11TComparatorIN12RMobilePhone22TMobilePhoneCBChangeV1EE7IsEqualERKS1_S4_ @ 191 NONAME
-	_ZN11TComparatorIN12RMobilePhone28TMobilePhonePasswordChangeV1EE7IsEqualES1_S1_ @ 192 NONAME
-	_ZN11TComparatorIN15RMobileSmsStore17TMobileSmsEntryV1EE7IsEqualERKS1_S4_ @ 193 NONAME
-	_ZN11TComparatorIN15RMobileSmsStore20TMobileGsmSmsEntryV1EE7IsEqualERKS1_S4_ @ 194 NONAME
-	_ZN11TComparatorIN17RMobilePhoneStore24TMobilePhoneStoreEntryV1EE7IsEqualERKS1_S4_ @ 195 NONAME
-	_ZN11TComparatorIN19RMobileSmsMessaging18TMobileSmspEntryV1EE7IsEqualERKS1_S4_ @ 196 NONAME
-	_ZN11TComparatorIN19RMobileSmsMessaging22TMobileSmsAttributesV1EE7IsEqualERKS1_S4_ @ 197 NONAME
-	_ZN11TComparatorIN19RMobileSmsMessaging26TMobileSmsSendAttributesV1EE7IsEqualERKS1_S4_ @ 198 NONAME
-	_ZN11TComparatorIN20RMobileUssdMessaging23TMobileUssdAttributesV1EE7IsEqualERKS1_S4_ @ 199 NONAME
-	_ZN11TSerializerI20CMobilePhoneSmspListE10SerialiseLERKS0_R5RBuf8 @ 200 NONAME
-	_ZN11TSerializerI20CMobilePhoneSmspListE12DeserialiseLERK6TDesC8RS0_ @ 201 NONAME
-	_ZN11TSerializerIP7TDesC16E10SerialiseLEPKS0_R5RBuf8 @ 202 NONAME
-	_ZN11TSerializerIP7TDesC16E12DeserialiseLERK6TDesC8RS1_ @ 203 NONAME
-	_ZN11TComparatorIN12RMmCustomAPI15TApduParametersEE7IsEqualERKS1_S4_ @ 204 NONAME
-	_ZN11TComparatorIN12RMmCustomAPI12TSimFileInfoEE7IsEqualERKS1_S4_ @ 205 NONAME
-	_ZN11TComparatorIN11RMobileCall23TMobileDataCallParamsV8EE7IsEqualERKS1_S4_ @ 206 NONAME
+	_ZN10TDestroyerI25TSendSmsDataAndAttributesE7DestroyERS0_ @ 2 NONAME
+	_ZN10TDestroyerI31TMmMbmsMonitorServiceListParamsE7DestroyERS0_ @ 3 NONAME
+	_ZN10TDestroyerIN12RMmCustomAPI13TOperatorLogoEE7DestroyERS1_ @ 4 NONAME
+	_ZN10TDestroyerIP12CArrayPtrSegI20CPhoneBookStoreEntryEE7DestroyERS3_ @ 5 NONAME
+	_ZN10TDestroyerIP20CPhoneBookStoreEntryE7DestroyERS1_ @ 6 NONAME
+	_ZN10TDestroyerIP6TDesC8E7DestroyES1_ @ 7 NONAME
+	_ZN10TDestroyerIPN12RMobilePhone14TMultimodeTypeEE7DestroyES2_ @ 8 NONAME
+	_ZN11TComparatorI11TMbmsActionE7IsEqualERKS0_S3_ @ 9 NONAME
+	_ZN11TComparatorI14TContextParamsE7IsEqualERKS0_S3_ @ 10 NONAME
+	_ZN11TComparatorI16TENStoreResponseE7IsEqualERKS0_S3_ @ 11 NONAME
+	_ZN11TComparatorI18CMobilePhoneCFListE7IsEqualERKS0_S3_ @ 12 NONAME
+	_ZN11TComparatorI18CMobilePhoneCWListE7IsEqualERKS0_S3_ @ 13 NONAME
+	_ZN11TComparatorI20CMobilePhoneListBaseE7IsEqualERKS0_S3_ @ 14 NONAME
+	_ZN11TComparatorI20CMobilePhoneSmspListE7IsEqualERKS0_S3_ @ 15 NONAME
+	_ZN11TComparatorI20TLockSettingPasswordE7IsEqualERKS0_S3_ @ 16 NONAME
+	_ZN11TComparatorI21TContextConfigurationE7IsEqualERKS0_S3_ @ 17 NONAME
+	_ZN11TComparatorI24TCbsCbmiAndLangAndFilterE7IsEqualERKS0_S3_ @ 18 NONAME
+	_ZN11TComparatorI25TMbmsNetworkServiceStatusE7IsEqualERKS0_S3_ @ 19 NONAME
+	_ZN11TComparatorI25TSendSmsDataAndAttributesE7IsEqualERKS0_S3_ @ 20 NONAME
+	_ZN11TComparatorI27CMobilePhoneBroadcastIdListE7IsEqualERKS0_S3_ @ 21 NONAME
+	_ZN11TComparatorI29CMobilePhoneStoredNetworkListE7IsEqualERKS0_S3_ @ 22 NONAME
+	_ZN11TComparatorI29CPcktMbmsMonitoredServiceListE7IsEqualERKS0_S3_ @ 23 NONAME
+	_ZN11TComparatorI30TMmMbmsActiveServiceListParamsE7IsEqualERKS0_S3_ @ 24 NONAME
+	_ZN11TComparatorI31TMmMbmsMonitorServiceListParamsE7IsEqualERKS0_S3_ @ 25 NONAME
+	_ZN11TComparatorI4TBufILi10EEE7IsEqualERKS1_S4_ @ 26 NONAME
+	_ZN11TComparatorI4TBufILi15EEE7IsEqualERKS1_S4_ @ 27 NONAME
+	_ZN11TComparatorI4TBufILi16EEE7IsEqualERKS1_S4_ @ 28 NONAME
+	_ZN11TComparatorI4TBufILi32EEE7IsEqualERKS1_S4_ @ 29 NONAME
+	_ZN11TComparatorI4TBufILi6EEE7IsEqualERKS1_S4_ @ 30 NONAME
+	_ZN11TComparatorI5TBuf8ILi165EEE7IsEqualERKS1_S4_ @ 31 NONAME
+	_ZN11TComparatorI5TBuf8ILi16EEE7IsEqualERKS1_S4_ @ 32 NONAME
+	_ZN11TComparatorI5TBuf8ILi252EEE7IsEqualERKS1_S4_ @ 33 NONAME
+	_ZN11TComparatorI5TBuf8ILi253EEE7IsEqualERKS1_S4_ @ 34 NONAME
+	_ZN11TComparatorI5TBuf8ILi50EEE7IsEqualERKS1_S4_ @ 35 NONAME
+	_ZN11TComparatorIN11RMobileCall17TMobileCallInfoV1EE7IsEqualERKS1_S4_ @ 36 NONAME
+	_ZN11TComparatorIN11RMobileCall17TMobileCallInfoV8EE7IsEqualERKS1_S4_ @ 37 NONAME
+	_ZN11TComparatorIN11RMobileCall19TMobileCallParamsV1EE7IsEqualERKS1_S4_ @ 38 NONAME
+	_ZN11TComparatorIN11RMobileCall19TMobileCallParamsV7EE7IsEqualERKS1_S4_ @ 39 NONAME
+	_ZN11TComparatorIN11RMobileCall22TMobileCallHscsdInfoV8EE7IsEqualERKS1_S4_ @ 40 NONAME
+	_ZN11TComparatorIN11RMobileCall23TMobileDataCallParamsV8EE7IsEqualERKS1_S4_ @ 41 NONAME
+	_ZN11TComparatorIN11RMobileCall24TMobileHscsdCallParamsV8EE7IsEqualERKS1_S4_ @ 42 NONAME
+	_ZN11TComparatorIN11RMobileCall7TIconIdEE7IsEqualERKS1_S4_ @ 43 NONAME
+	_ZN11TComparatorIN12RMmCustomAPI11TMmCellInfoEE7IsEqualERKS1_S4_ @ 44 NONAME
+	_ZN11TComparatorIN12RMmCustomAPI12TSimFileInfoEE7IsEqualERKS1_S4_ @ 45 NONAME
+	_ZN11TComparatorIN12RMmCustomAPI15TApduParametersEE7IsEqualERKS1_S4_ @ 46 NONAME
+	_ZN11TComparatorIN12RMmCustomAPI18TViagCacheRecordIdEE7IsEqualERKS1_S4_ @ 47 NONAME
+	_ZN11TComparatorIN12RMmCustomAPI20TEmerNumberCheckModeEE7IsEqualERKS1_S4_ @ 48 NONAME
+	_ZN11TComparatorIN12RMmCustomAPI23TViagCacheRecordContentEE7IsEqualERKS1_S4_ @ 49 NONAME
+	_ZN11TComparatorIN12RMmCustomAPI24TSimAuthenticationEapAkaEE7IsEqualERKS1_S4_ @ 50 NONAME
+	_ZN11TComparatorIN12RMmCustomAPI24TSimAuthenticationEapSimEE7IsEqualERKS1_S4_ @ 51 NONAME
+	_ZN11TComparatorIN12RMmCustomAPI30TSimAuthenticationGbaBootstrapEE7IsEqualERKS1_S4_ @ 52 NONAME
+	_ZN11TComparatorIN12RMmCustomAPI30TSimAuthenticationMgvMskUpdateEE7IsEqualERKS1_S4_ @ 53 NONAME
+	_ZN11TComparatorIN12RMmCustomAPI32TSimAuthenticationMgvMskDeletionEE7IsEqualERKS1_S4_ @ 54 NONAME
+	_ZN11TComparatorIN12RMmCustomAPI34TSimAuthenticationGbaNafDerivationEE7IsEqualERKS1_S4_ @ 55 NONAME
+	_ZN11TComparatorIN12RMmCustomAPI34TSimAuthenticationMgvMtkGenerationEE7IsEqualERKS1_S4_ @ 56 NONAME
+	_ZN11TComparatorIN12RMmCustomAPI36TSimAuthenticationGbaBootstrapUpdateEE7IsEqualERKS1_S4_ @ 57 NONAME
+	_ZN11TComparatorIN12RMmCustomAPI5TApduEE7IsEqualERKS1_S4_ @ 58 NONAME
+	_ZN11TComparatorIN12RMobilePhone11TAPNEntryV3EE7IsEqualERKS1_S4_ @ 59 NONAME
+	_ZN11TComparatorIN12RMobilePhone11TAuthInfoV8EE7IsEqualERKS1_S4_ @ 60 NONAME
+	_ZN11TComparatorIN12RMobilePhone14TMobileAddressEE7IsEqualERKS1_S4_ @ 61 NONAME
+	_ZN11TComparatorIN12RMobilePhone19TCodeAndUnblockCodeEE7IsEqualERKS1_S4_ @ 62 NONAME
+	_ZN11TComparatorIN12RMobilePhone21TMobilePhoneCspFileV1EE7IsEqualERKS1_S4_ @ 63 NONAME
+	_ZN11TComparatorIN12RMobilePhone22TImsAuthenticateDataV5EE7IsEqualERKS1_S4_ @ 64 NONAME
+	_ZN11TComparatorIN12RMobilePhone22TMobilePhoneCBChangeV1EE7IsEqualERKS1_S4_ @ 65 NONAME
+	_ZN11TComparatorIN12RMobilePhone22TMobilePhoneCFChangeV1EE7IsEqualERKS1_S4_ @ 66 NONAME
+	_ZN11TComparatorIN12RMobilePhone24TMobilePhoneSecurityCodeEE7IsEqualERKS1_S4_ @ 67 NONAME
+	_ZN11TComparatorIN12RMobilePhone26TMobilePhoneServiceTableV1EE7IsEqualERKS1_S4_ @ 68 NONAME
+	_ZN11TComparatorIN12RMobilePhone28TMobilePhonePasswordChangeV1EE7IsEqualES1_S1_ @ 69 NONAME
+	_ZN11TComparatorIN12RMobilePhone28TMobilePhonePasswordChangeV2EE7IsEqualES1_S1_ @ 70 NONAME
+	_ZN11TComparatorIN12RMobilePhone34TMobilePhoneNetworkManualSelectionEE7IsEqualERKS1_S4_ @ 71 NONAME
+	_ZN11TComparatorIN14RMobileONStore16TMobileONEntryV1EE7IsEqualES1_S1_ @ 72 NONAME
+	_ZN11TComparatorIN14RPacketContext17TContextConfig_R5EE7IsEqualERKS1_S4_ @ 73 NONAME
+	_ZN11TComparatorIN14RPacketContext18TContextConfigGPRSEE7IsEqualERKS1_S4_ @ 74 NONAME
+	_ZN11TComparatorIN14RPacketContext20TContextConfigR99_R4EE7IsEqualERKS1_S4_ @ 75 NONAME
+	_ZN11TComparatorIN14RPacketContext24CTFTMediaAuthorizationV3EE7IsEqualERKS1_S4_ @ 76 NONAME
+	_ZN11TComparatorIN15RMobileSmsStore17TMobileSmsEntryV1EE7IsEqualERKS1_S4_ @ 77 NONAME
+	_ZN11TComparatorIN15RMobileSmsStore20TMobileGsmSmsEntryV1EE7IsEqualERKS1_S4_ @ 78 NONAME
+	_ZN11TComparatorIN17RMobilePhoneStore24TMobilePhoneStoreEntryV1EE7IsEqualERKS1_S4_ @ 79 NONAME
+	_ZN11TComparatorIN19RMobileSmsMessaging18TMobileSmspEntryV1EE7IsEqualERKS1_S4_ @ 80 NONAME
+	_ZN11TComparatorIN19RMobileSmsMessaging22TMobileSmsAttributesV1EE7IsEqualERKS1_S4_ @ 81 NONAME
+	_ZN11TComparatorIN19RMobileSmsMessaging26TMobileSmsSendAttributesV1EE7IsEqualERKS1_S4_ @ 82 NONAME
+	_ZN11TComparatorIN20RMobileUssdMessaging23TMobileUssdAttributesV1EE7IsEqualERKS1_S4_ @ 83 NONAME
+	_ZN11TComparatorIN25RMobileBroadcastMessaging25TMobileBroadcastIdEntryV1EE7IsEqualERKS1_S4_ @ 84 NONAME
+	_ZN11TComparatorIN5RCall9TCommPortEE7IsEqualES1_S1_ @ 85 NONAME
+	_ZN11TComparatorIP12CArrayPtrSegI20CPhoneBookStoreEntryEE7IsEqualERKS3_S6_ @ 86 NONAME
+	_ZN11TComparatorIP13CArrayFixFlatIN14RPacketContext15TPacketFilterV2EEE7IsEqualEPKS3_S7_ @ 87 NONAME
+	_ZN11TComparatorIP20CPhoneBookStoreEntryE7IsEqualERKS1_S4_ @ 88 NONAME
+	_ZN11TComparatorIP25CMobilePhoneNetworkListV2E7IsEqualEPKS0_S4_ @ 89 NONAME
+	_ZN11TComparatorIP5TPckgIN14RMobileONStore16TMobileONEntryV1EEE7IsEqualEPKS3_S4_ @ 90 NONAME
+	_ZN11TComparatorIP6TDesC8E7IsEqualEPKS0_S4_ @ 91 NONAME
+	_ZN11TComparatorIPN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEE7IsEqualERKS2_S5_ @ 92 NONAME
+	_ZN11TSerializerI18CMobilePhoneCFListE10SerialiseLERKS0_R5RBuf8 @ 93 NONAME
+	_ZN11TSerializerI18CMobilePhoneCFListE12DeserialiseLERK6TDesC8RS0_ @ 94 NONAME
+	_ZN11TSerializerI18CMobilePhoneCWListE10SerialiseLERKS0_R5RBuf8 @ 95 NONAME
+	_ZN11TSerializerI18CMobilePhoneCWListE12DeserialiseLERK6TDesC8RS0_ @ 96 NONAME
+	_ZN11TSerializerI20CMobilePhoneListBaseE10SerialiseLERKS0_R5RBuf8 @ 97 NONAME
+	_ZN11TSerializerI20CMobilePhoneListBaseE12DeserialiseLERK6TDesC8RS0_ @ 98 NONAME
+	_ZN11TSerializerI20CMobilePhoneSmspListE10SerialiseLERKS0_R5RBuf8 @ 99 NONAME
+	_ZN11TSerializerI20CMobilePhoneSmspListE12DeserialiseLERK6TDesC8RS0_ @ 100 NONAME
+	_ZN11TSerializerI21TContextConfigurationE10SerialiseLERKS0_R5RBuf8 @ 101 NONAME
+	_ZN11TSerializerI21TContextConfigurationE12DeserialiseLERK6TDesC8RS0_ @ 102 NONAME
+	_ZN11TSerializerI25TSendSmsDataAndAttributesE10SerialiseLES0_R5RBuf8 @ 103 NONAME
+	_ZN11TSerializerI25TSendSmsDataAndAttributesE12DeserialiseLERK6TDesC8RS0_ @ 104 NONAME
+	_ZN11TSerializerI27CMobilePhoneBroadcastIdListE10SerialiseLERKS0_R5RBuf8 @ 105 NONAME
+	_ZN11TSerializerI27CMobilePhoneBroadcastIdListE12DeserialiseLERK6TDesC8RS0_ @ 106 NONAME
+	_ZN11TSerializerI29CMobilePhoneStoredNetworkListE10SerialiseLERKS0_R5RBuf8 @ 107 NONAME
+	_ZN11TSerializerI29CMobilePhoneStoredNetworkListE12DeserialiseLERK6TDesC8RS0_ @ 108 NONAME
+	_ZN11TSerializerI29CPcktMbmsMonitoredServiceListE10SerialiseLERKS0_R5RBuf8 @ 109 NONAME
+	_ZN11TSerializerI29CPcktMbmsMonitoredServiceListE12DeserialiseLERK6TDesC8RS0_ @ 110 NONAME
+	_ZN11TSerializerI30TMmMbmsActiveServiceListParamsE10SerialiseLERKS0_R5RBuf8 @ 111 NONAME
+	_ZN11TSerializerI30TMmMbmsActiveServiceListParamsE12DeserialiseLERK6TDesC8RS0_ @ 112 NONAME
+	_ZN11TSerializerI31TMmMbmsMonitorServiceListParamsE10SerialiseLERKS0_R5RBuf8 @ 113 NONAME
+	_ZN11TSerializerI31TMmMbmsMonitorServiceListParamsE12DeserialiseLERK6TDesC8RS0_ @ 114 NONAME
+	_ZN11TSerializerIN12RMmCustomAPI13TOperatorLogoEE10SerialiseLERKS1_R5RBuf8 @ 115 NONAME
+	_ZN11TSerializerIN12RMmCustomAPI13TOperatorLogoEE12DeserialiseLERK6TDesC8RS1_ @ 116 NONAME
+	_ZN11TSerializerIN14RPacketContext24CTFTMediaAuthorizationV3EE10SerialiseLERKS1_R5RBuf8 @ 117 NONAME
+	_ZN11TSerializerIN14RPacketContext24CTFTMediaAuthorizationV3EE12DeserialiseLERK6TDesC8RS1_ @ 118 NONAME
+	_ZN11TSerializerIN18RPacketMbmsContext12CMbmsSessionEE10SerialiseLERKS1_R5RBuf8 @ 119 NONAME
+	_ZN11TSerializerIN18RPacketMbmsContext12CMbmsSessionEE12DeserialiseLERK6TDesC8RS1_ @ 120 NONAME
+	_ZN11TSerializerIP12CArrayPtrSegI20CPhoneBookStoreEntryEE10SerialiseLEPKS2_R5RBuf8 @ 121 NONAME
+	_ZN11TSerializerIP12CArrayPtrSegI20CPhoneBookStoreEntryEE12DeserialiseLERK6TDesC8RS3_ @ 122 NONAME
+	_ZN11TSerializerIP20CPhoneBookStoreEntryE10SerialiseLEPKS0_R5RBuf8 @ 123 NONAME
+	_ZN11TSerializerIP20CPhoneBookStoreEntryE12DeserialiseLERK6TDesC8RS1_ @ 124 NONAME
+	_ZN11TSerializerIP25CMobilePhoneNetworkListV2E10SerialiseLEPKS0_R5RBuf8 @ 125 NONAME
+	_ZN11TSerializerIP25CMobilePhoneNetworkListV2E12DeserialiseLERK6TDesC8RS1_ @ 126 NONAME
+	_ZN11TSerializerIP6TDesC8E10SerialiseLEPKS0_R5RBuf8 @ 127 NONAME
+	_ZN11TSerializerIP6TDesC8E12DeserialiseLERKS0_RS1_ @ 128 NONAME
+	_ZN11TSerializerIP7TDesC16E10SerialiseLEPKS0_R5RBuf8 @ 129 NONAME
+	_ZN11TSerializerIP7TDesC16E12DeserialiseLERK6TDesC8RS1_ @ 130 NONAME
+	_ZN11TSerializerIPN14RPacketContext24CTFTMediaAuthorizationV3EE10SerialiseLEPKS1_R5RBuf8 @ 131 NONAME
+	_ZN11TSerializerIPN14RPacketContext24CTFTMediaAuthorizationV3EE12DeserialiseLERK6TDesC8RS2_ @ 132 NONAME
+	_ZN12TConstructorI18CMobilePhoneCFListE10ConstructLERPS0_ @ 133 NONAME
+	_ZN12TConstructorI18CMobilePhoneCWListE10ConstructLERPS0_ @ 134 NONAME
+	_ZN12TConstructorI20CMobilePhoneSmspListE10ConstructLERPS0_ @ 135 NONAME
+	_ZN12TConstructorI27CMobilePhoneBroadcastIdListE10ConstructLERPS0_ @ 136 NONAME
+	_ZN12TConstructorI29CMobilePhoneStoredNetworkListE10ConstructLERPS0_ @ 137 NONAME
+	_ZN12TConstructorI29CPcktMbmsMonitoredServiceListE10ConstructLERPS0_ @ 138 NONAME
+	_ZN12TConstructorIN12RMobilePhone14TMultimodeTypeEE10ConstructLERPS1_ @ 139 NONAME
+	_ZN12TConstructorIN14RPacketContext24CTFTMediaAuthorizationV3EE10ConstructLERPS1_ @ 140 NONAME
+	_ZN12TConstructorIN18RPacketMbmsContext12CMbmsSessionEE10ConstructLERPS1_ @ 141 NONAME
+	_ZN18TMockLtsyCallData012DeserialiseLERK6TDesC8 @ 142 NONAME
+	_ZN18TMockLtsyCallData0C1EiN12RMobilePhone14TMobileServiceE @ 143 NONAME
+	_ZN18TMockLtsyCallData0C1Ev @ 144 NONAME
+	_ZN18TMockLtsyCallData0C2EiN12RMobilePhone14TMobileServiceE @ 145 NONAME
+	_ZN18TMockLtsyCallData0C2Ev @ 146 NONAME
+	_ZN21TMockLtsyContextData012DeserialiseLERK6TDesC8 @ 147 NONAME
+	_ZN21TMockLtsyContextData024ContextConfigurationTypeEv @ 148 NONAME
+	_ZN21TMockLtsyContextData06ConfigEv @ 149 NONAME
+	_ZN21TMockLtsyContextData0C1ERN14RPacketContext18TContextConfigGPRSEi @ 150 NONAME
+	_ZN21TMockLtsyContextData0C1Ev @ 151 NONAME
+	_ZN21TMockLtsyContextData0C2ERN14RPacketContext18TContextConfigGPRSEi @ 152 NONAME
+	_ZN21TMockLtsyContextData0C2Ev @ 153 NONAME
+	_ZN22TPacketQoSR5Negotiated12InternalizeLER11RReadStream @ 154 NONAME
+	_ZN22TPacketQoSR5NegotiatedC1Ev @ 155 NONAME
+	_ZN22TPacketQoSR5NegotiatedC2Ev @ 156 NONAME
+	_ZN23TMockLtsyPacketQoSData012DeserialiseLERK6TDesC8 @ 157 NONAME
+	_ZN23TMockLtsyPacketQoSData015QoSR5NegotiatedEv @ 158 NONAME
+	_ZN23TMockLtsyPacketQoSData017QoSGPRSNegotiatedEv @ 159 NONAME
+	_ZN23TMockLtsyPacketQoSData019QoSR99_R4NegotiatedEv @ 160 NONAME
+	_ZN23TMockLtsyPacketQoSData0C1ER24TPacketQoSGPRSNegotiatedR26TPacketQoSR99_R4NegotiatedR22TPacketQoSR5Negotiated @ 161 NONAME
+	_ZN23TMockLtsyPacketQoSData0C1Ev @ 162 NONAME
+	_ZN23TMockLtsyPacketQoSData0C2ER24TPacketQoSGPRSNegotiatedR26TPacketQoSR99_R4NegotiatedR22TPacketQoSR5Negotiated @ 163 NONAME
+	_ZN23TMockLtsyPacketQoSData0C2Ev @ 164 NONAME
+	_ZN23TMockLtsyPhoneBookData012DeserialiseLERK6TDesC8 @ 165 NONAME
+	_ZN23TMockLtsyPhoneBookData013PhoneBookNameEv @ 166 NONAME
+	_ZN23TMockLtsyPhoneBookData0C1ER4TBufILi128EE @ 167 NONAME
+	_ZN23TMockLtsyPhoneBookData0C1Ev @ 168 NONAME
+	_ZN23TMockLtsyPhoneBookData0C2ER4TBufILi128EE @ 169 NONAME
+	_ZN23TMockLtsyPhoneBookData0C2Ev @ 170 NONAME
+	_ZN24TPacketQoSGPRSNegotiated12InternalizeLER11RReadStream @ 171 NONAME
+	_ZN24TPacketQoSGPRSNegotiatedC1Ev @ 172 NONAME
+	_ZN24TPacketQoSGPRSNegotiatedC2Ev @ 173 NONAME
+	_ZN26TPacketQoSR99_R4Negotiated12InternalizeLER11RReadStream @ 174 NONAME
+	_ZN26TPacketQoSR99_R4NegotiatedC1Ev @ 175 NONAME
+	_ZN26TPacketQoSR99_R4NegotiatedC2Ev @ 176 NONAME
+	_ZN9RMockLtsy10ServerNameEv @ 177 NONAME
+	_ZN9RMockLtsy7ExpectLEiRK6TDesC8ii @ 178 NONAME
+	_ZN9RMockLtsy7ExpectLEiii @ 179 NONAME
+	_ZN9RMockLtsy9CompleteLEiiRK6TDesC8i @ 180 NONAME
+	_ZN9RMockLtsy9CompleteLEiii @ 181 NONAME
+	_ZNK14TMockLtsyData0eqERK6TDesC8 @ 182 NONAME
+	_ZNK18TMockLtsyCallData010SerialiseLER5RBuf8 @ 183 NONAME
+	_ZNK18TMockLtsyCallData06CallIdEv @ 184 NONAME
+	_ZNK18TMockLtsyCallData08CallModeEv @ 185 NONAME
+	_ZNK18TMockLtsyCallData0eqERK6TDesC8 @ 186 NONAME
+	_ZNK21TMockLtsyContextData010SerialiseLER5RBuf8 @ 187 NONAME
+	_ZNK21TMockLtsyContextData0eqERK6TDesC8 @ 188 NONAME
+	_ZNK22TPacketQoSR5Negotiated12ExternalizeLER12RWriteStream @ 189 NONAME
+	_ZNK22TPacketQoSR5NegotiatedeqERKS_ @ 190 NONAME
+	_ZNK23TMockLtsyPacketQoSData010SerialiseLER5RBuf8 @ 191 NONAME
+	_ZNK23TMockLtsyPacketQoSData0eqERK6TDesC8 @ 192 NONAME
+	_ZNK23TMockLtsyPhoneBookData010SerialiseLER5RBuf8 @ 193 NONAME
+	_ZNK23TMockLtsyPhoneBookData0eqERK6TDesC8 @ 194 NONAME
+	_ZNK24TPacketQoSGPRSNegotiated12ExternalizeLER12RWriteStream @ 195 NONAME
+	_ZNK24TPacketQoSGPRSNegotiatedeqERKS_ @ 196 NONAME
+	_ZNK26TPacketQoSR99_R4Negotiated12ExternalizeLER12RWriteStream @ 197 NONAME
+	_ZNK26TPacketQoSR99_R4NegotiatedeqERKS_ @ 198 NONAME
+	_ZTI14TMockLtsyData0 @ 199 NONAME
+	_ZTI18TMockLtsyCallData0 @ 200 NONAME
+	_ZTI21TMockLtsyContextData0 @ 201 NONAME
+	_ZTI23TMockLtsyPacketQoSData0 @ 202 NONAME
+	_ZTI23TMockLtsyPhoneBookData0 @ 203 NONAME
+	_ZTI9RMockLtsy @ 204 NONAME
+	_ZTV14TMockLtsyData0 @ 205 NONAME
+	_ZTV18TMockLtsyCallData0 @ 206 NONAME
+	_ZTV21TMockLtsyContextData0 @ 207 NONAME
+	_ZTV23TMockLtsyPacketQoSData0 @ 208 NONAME
+	_ZTV23TMockLtsyPhoneBookData0 @ 209 NONAME
+	_ZTV9RMockLtsy @ 210 NONAME
+	_ZN11TComparatorIN12RMobilePhone30TMobilePreferredNetworkEntryV3EE7IsEqualERKS1_S4_ @ 211 NONAME
 
--- a/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsydll/inc/tmockltsydata.h	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsydll/inc/tmockltsydata.h	Mon Jun 21 16:59:31 2010 +0300
@@ -3799,6 +3799,50 @@
     IMPORT_C static void ConstructL(CMobilePhoneSmspList*& aData);    
 	};
 
+/**
+TConstructor specialisation for CMobilePhoneStoredNetworkList
+*/
+template <>
+class TConstructor<CMobilePhoneStoredNetworkList>
+    {
+public:
+    IMPORT_C static void ConstructL(CMobilePhoneStoredNetworkList*& aData);    
+	};
+
+/**
+TSerializer specialisation for CMobilePhoneStoredNetworkList
+*/
+template <>
+class TSerializer<CMobilePhoneStoredNetworkList>
+    {
+public:
+    IMPORT_C static void SerialiseL(const CMobilePhoneStoredNetworkList& aData, RBuf8& aBuffer);
+    IMPORT_C static void DeserialiseL(const TDesC8& aPackedData, CMobilePhoneStoredNetworkList& aData);
+    };
+
+/**
+TComparator Specialisation for CMobilePhoneStoredNetworkList
+*/
+template<>
+class TComparator<CMobilePhoneStoredNetworkList>
+    {
+public: 
+    IMPORT_C static TBool TComparator<CMobilePhoneStoredNetworkList>::
+        IsEqual(const CMobilePhoneStoredNetworkList& aData1,
+                const CMobilePhoneStoredNetworkList& aData2);
+    };
+
+/**
+TComparator Specialisation for RMobilePhone::TMobilePreferredNetworkEntryV3
+*/
+template<>
+class TComparator<RMobilePhone::TMobilePreferredNetworkEntryV3>
+    {
+public: 
+    IMPORT_C static TBool TComparator<RMobilePhone::TMobilePreferredNetworkEntryV3>::
+        IsEqual(const RMobilePhone::TMobilePreferredNetworkEntryV3& aData1,
+                const RMobilePhone::TMobilePreferredNetworkEntryV3& aData2);
+    };
 
 /**
 TComparator Specialisation for RMobilePhone::TAID
--- a/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsydll/src/tmockltsydata.cpp	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsydll/src/tmockltsydata.cpp	Mon Jun 21 16:59:31 2010 +0300
@@ -2381,6 +2381,44 @@
    	aData = CMobilePhoneSmspList::NewL();
 	}
 
+EXPORT_C void TConstructor<CMobilePhoneStoredNetworkList>::
+		ConstructL(CMobilePhoneStoredNetworkList*& aData)
+	{
+   	aData = CMobilePhoneStoredNetworkList::NewL();
+	}
+
+EXPORT_C void TSerializer<CMobilePhoneStoredNetworkList>::
+		SerialiseL(const CMobilePhoneStoredNetworkList& aData, RBuf8& aBuffer)
+	{
+        return TSerializer<CMobilePhoneListBase>::SerialiseL(aData, aBuffer);      	
+	}
+
+EXPORT_C void TSerializer<CMobilePhoneStoredNetworkList>::
+		DeserialiseL(const TDesC8& aPackedData, CMobilePhoneStoredNetworkList& aData)
+	{
+    TSerializer<CMobilePhoneListBase>::DeserialiseL(aPackedData, aData);    
+	}
+
+EXPORT_C TBool TComparator<CMobilePhoneStoredNetworkList>::
+    IsEqual(const CMobilePhoneStoredNetworkList& aData1, 
+            const CMobilePhoneStoredNetworkList& aData2)
+    {
+    return TComparator< CMobilePhoneEditableList
+            <RMobilePhone::TMobilePreferredNetworkEntryV3>* >::
+            IsEqual(&aData1, &aData2);
+    }
+
+EXPORT_C TBool TComparator<RMobilePhone::TMobilePreferredNetworkEntryV3>::
+    IsEqual(const RMobilePhone::TMobilePreferredNetworkEntryV3& aData1, 
+            const RMobilePhone::TMobilePreferredNetworkEntryV3& aData2)
+    {
+
+    return  (aData1.iAccess == aData2.iAccess) &&
+            (aData1.iUserDefined == aData2.iUserDefined) &&
+            (aData1.iCountryCode.Compare(aData2.iCountryCode) == 0) &&
+            (aData1.iNetworkId.Compare(aData2.iNetworkId) == 0) &&
+            (TComparator<RMobilePhone::TMultimodeType>::IsEqual(aData1, aData2));
+    }
 //***************************************************
 
 EXPORT_C TBool TComparator<CMobilePhoneListBase>::
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_networkcontrol_individual.script	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_networkcontrol_individual.script	Mon Jun 21 16:59:31 2010 +0300
@@ -712,17 +712,119 @@
 END_TESTCASE BA-CTSY-NTWC-MGLUAT-0001
 
 START_TESTCASE BA-CTSY-NTWC-MSPNL-0001
-//!@SYMTestCaseID BA-CTSY-NTWC-MSPNL-0001
-//!@SYMPREQ 1551
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for RMobilePhone::StorePreferredNetworksListL
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes RMobilePhone::StorePreferredNetworksListL
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
+//!@SYMTestCaseID          BA-CTSY-NTWC-MSPNL-0001
+//!@SYMPREQ                417-71654
+//!@SYMComponent           telephony_ctsy
+//!@SYMTestCaseDesc        Test support in CTSY for RMobilePhone::StorePreferredNetworksListL
+//!@SYMTestPriority        High
+//!@SYMTestActions         1. Invoke RMobilePhone::StorePreferredNetworksListL with a list of Preferred Networks.
+//!@SYMTestExpectedResults LTSY receives the same list of Preferred Networks. 
+//!@SYMTestType            CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyNetworkControlFU.TestStorePreferredNetworksListL0001L
 END_TESTCASE BA-CTSY-NTWC-MSPNL-0001
 
+START_TESTCASE BA-CTSY-NTWC-MSPNL-0001a
+//!@SYMTestCaseID          BA-CTSY-NTWC-MSPNL-0001a
+//!@SYMPREQ                417-71654
+//!@SYMComponent           telephony_ctsy
+//!@SYMTestCaseDesc        Test support in CTSY for RMobilePhone::StorePreferredNetworksListL with empty list
+//!@SYMTestPriority        High
+//!@SYMTestActions         1. Invoke RMobilePhone::StorePreferredNetworksListL with an empty list of Preferred Networks.
+//!@SYMTestExpectedResults LTSY receives an empty list of Preferred Networks.
+//!@SYMTestType            CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyNetworkControlFU.TestStorePreferredNetworksListL0001aL
+END_TESTCASE BA-CTSY-NTWC-MSPNL-0001a
+
+START_TESTCASE BA-CTSY-NTWC-MSPNL-0001b
+//!@SYMTestCaseID          BA-CTSY-NTWC-MSPNL-0001b
+//!@SYMPREQ                417-71654
+//!@SYMComponent           telephony_ctsy
+//!@SYMTestCaseDesc        Test support in CTSY for RMobilePhone::StorePreferredNetworksListL with error
+//!@SYMTestPriority        High
+//!@SYMTestActions         1. Invoke RMobilePhone::StorePreferredNetworksListL.
+//!                        2. LTSY returns error.  
+//!@SYMTestExpectedResults Test code receives error. 
+//!@SYMTestType            CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyNetworkControlFU.TestStorePreferredNetworksListL0001bL
+END_TESTCASE BA-CTSY-NTWC-MSPNL-0001b
+
+START_TESTCASE BA-CTSY-NTWC-MSPNL-0002
+//!@SYMTestCaseID          BA-CTSY-NTWC-MSPNL-0002
+//!@SYMPREQ                417-71654
+//!@SYMComponent           telephony_ctsy
+//!@SYMTestCaseDesc        Test support in CTSY for Cancelling RMobilePhone::StorePreferredNetworksListL
+//!@SYMTestPriority        High
+//!@SYMTestActions         1. Invoke RMobilePhone::StorePreferredNetworksListL.
+//!                        2. Cancel the outstanding request.
+//!                        3. LTSY ignores cancelling the request and stores the preferred networks list.
+//!@SYMTestExpectedResults Request status of the operation is KErrNone. 
+//!@SYMTestType            CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyNetworkControlFU.TestStorePreferredNetworksListL0002L
+END_TESTCASE BA-CTSY-NTWC-MSPNL-0002
+
+START_TESTCASE BA-CTSY-NTWC-CRMPPN-0001
+//!@SYMTestCaseID          BA-CTSY-NTWC-CRMPPN-0001
+//!@SYMPREQ                417-71654
+//!@SYMComponent           telephony_ctsy
+//!@SYMTestCaseDesc        Test support in CTSY for CRetrieveMobilePhonePreferredNetworks::Start
+//!@SYMTestPriority        High
+//!@SYMTestActions         1. Invoke CRetrieveMobilePhonePreferredNetworks::Start.
+//!@SYMTestExpectedResults Test code receives the preferred network list. 
+//!@SYMTestType            CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyNetworkControlFU.TestRetrieveMobilePhonePreferredNetworks0001L
+END_TESTCASE BA-CTSY-NTWC-CRMPPN-0001
+
+START_TESTCASE BA-CTSY-NTWC-CRMPPN-0001a
+//!@SYMTestCaseID          BA-CTSY-NTWC-CRMPPN-0001a
+//!@SYMPREQ                417-71654
+//!@SYMComponent           telephony_ctsy
+//!@SYMTestCaseDesc        Test support in CTSY for CRetrieveMobilePhonePreferredNetworks::Start
+//!@SYMTestPriority        High
+//!@SYMTestActions         1. Invoke CRetrieveMobilePhonePreferredNetworks::Start.
+//!@SYMTestExpectedResults Test code receives the preferred network list. 
+//!@SYMTestType            CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyNetworkControlFU.TestRetrieveMobilePhonePreferredNetworks0001aL
+END_TESTCASE BA-CTSY-NTWC-CRMPPN-0001a
+
+START_TESTCASE BA-CTSY-NTWC-CRMPPN-0001b
+//!@SYMTestCaseID          BA-CTSY-NTWC-CRMPPN-0001b
+//!@SYMPREQ                417-71654
+//!@SYMComponent           telephony_ctsy
+//!@SYMTestCaseDesc        Test support in CTSY for CRetrieveMobilePhonePreferredNetworks::Start with empty list
+//!@SYMTestPriority        High
+//!@SYMTestActions         1. Invoke CRetrieveMobilePhonePreferredNetworks::Start.
+//!                        2. LTSY returns an empty list of preferred networks.
+//!@SYMTestExpectedResults Test code receives an empty list of preferred networks. 
+//!@SYMTestType            CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyNetworkControlFU.TestRetrieveMobilePhonePreferredNetworks0001bL
+END_TESTCASE BA-CTSY-NTWC-CRMPPN-0001b
+
+START_TESTCASE BA-CTSY-NTWC-CRMPPN-0001c
+//!@SYMTestCaseID          BA-CTSY-NTWC-CRMPPN-0001c
+//!@SYMPREQ                417-71654
+//!@SYMComponent           telephony_ctsy
+//!@SYMTestCaseDesc        Test support in CTSY for CRetrieveMobilePhonePreferredNetworks::Start with error
+//!@SYMTestPriority        High
+//!@SYMTestActions         1. Invoke CRetrieveMobilePhonePreferredNetworks::Start.
+//!                        2. LTSY returns error.
+//!@SYMTestExpectedResults Test code receives error. 
+//!@SYMTestType            CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyNetworkControlFU.TestRetrieveMobilePhonePreferredNetworks0001cL
+END_TESTCASE BA-CTSY-NTWC-CRMPPN-0001c
+
+START_TESTCASE BA-CTSY-NTWC-CRMPPN-0002
+//!@SYMTestCaseID          BA-CTSY-NTWC-CRMPPN-0002
+//!@SYMPREQ                417-71654
+//!@SYMComponent           telephony_ctsy
+//!@SYMTestCaseDesc        Test support in CTSY for Cancelling CRetrieveMobilePhonePreferredNetworks::Start
+//!@SYMTestPriority        High
+//!@SYMTestActions         1. Invoke CRetrieveMobilePhonePreferredNetworks::Start.
+//!                        2. Cancel outstanding request.
+//!@SYMTestExpectedResults Request status of the operation is KErrCancel
+//!@SYMTestType            CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyNetworkControlFU.TestRetrieveMobilePhonePreferredNetworks0002L
+END_TESTCASE BA-CTSY-NTWC-CRMPPN-0002
+
 START_TESTCASE BA-CTSY-NTWC-MGNRS-0001
 //!@SYMTestCaseID BA-CTSY-NTWC-MGNRS-0001
 //!@SYMPREQ 1551
@@ -761,17 +863,31 @@
 END_TESTCASE BA-CTSY-NTWC-MGNRS-0004
 
 START_TESTCASE BA-CTSY-NTWC-MNPNLC-0001
-//!@SYMTestCaseID BA-CTSY-NTWC-MNPNLC-0001
-//!@SYMPREQ 1551
-//!@SYMComponent telephony_ctsy
-//!@SYMTestCaseDesc Test support in CTSY for RMobilePhone::NotifyPreferredNetworksListChange
-//!@SYMTestPriority High
-//!@SYMTestActions Invokes RMobilePhone::NotifyPreferredNetworksListChange
-//!@SYMTestExpectedResults Pass
-//!@SYMTestType CT
+//!@SYMPREQ                417-71654
+//!@SYMComponent           telephony_ctsy
+//!@SYMTestCaseDesc        Test support in CTSY for RMobilePhone::NotifyPreferredNetworksListChange
+//!@SYMTestPriority        High
+//!@SYMTestActions         1. Invoke RMobilePhone::NotifyPreferredNetworksListChange.
+//!                        2. Invoke RMobilePhone::StorePreferredNetworksListL.
+//!@SYMTestExpectedResults Test code receives preferred network list notification
+//!@SYMTestType            CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyNetworkControlFU.TestNotifyPreferredNetworksListChange0001L
 END_TESTCASE BA-CTSY-NTWC-MNPNLC-0001
 
+START_TESTCASE BA-CTSY-NTWC-MNPNLC-0002
+//!@SYMTestCaseID          BA-CTSY-NTWC-MNPNLC-0002
+//!@SYMPREQ                417-71654
+//!@SYMComponent           telephony_ctsy
+//!@SYMTestCaseDesc        Test support in CTSY for Cancelling RMobilePhone::NotifyPreferredNetworksListChange
+//!@SYMTestPriority        High
+//!@SYMTestActions         1. Invoke RMobilePhone::NotifyPreferredNetworksListChange.
+//!                        2. Cancel subscription to preferred network list change.
+//!                        3. Invoke RMobilePhone::StorePreferredNetworksListL.
+//!@SYMTestExpectedResults Test code does not receive preferred network list notification
+//!@SYMTestType            CT
+RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyNetworkControlFU.TestNotifyPreferredNetworksListChange0002L
+END_TESTCASE BA-CTSY-NTWC-MNPNLC-0002
+
 START_TESTCASE BA-CTSY-NTWC-MNNSSC-0001
 //!@SYMTestCaseID BA-CTSY-NTWC-MNNSSC-0001
 //!@SYMPREQ 1551
--- a/telephonyserverplugins/common_tsy/test/component/src/cctsynetworkcontrolfu.cpp	Wed Jun 09 10:58:06 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/src/cctsynetworkcontrolfu.cpp	Mon Jun 21 16:59:31 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -99,11 +99,20 @@
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestSetNetworkSelectionSetting0005L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestGetLastUsedAccessTechnology0001L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestStorePreferredNetworksListL0001L);
+    ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestStorePreferredNetworksListL0001aL);
+    ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestStorePreferredNetworksListL0001bL);
+    ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestStorePreferredNetworksListL0002L);
+    ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestRetrieveMobilePhonePreferredNetworks0001L);
+    ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestRetrieveMobilePhonePreferredNetworks0001aL);
+    ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestRetrieveMobilePhonePreferredNetworks0001bL);
+    ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestRetrieveMobilePhonePreferredNetworks0001cL);
+    ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestRetrieveMobilePhonePreferredNetworks0002L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestGetNetworkRegistrationStatus0001L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestGetNetworkRegistrationStatus0002L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestGetNetworkRegistrationStatus0004L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestGetNetworkRegistrationStatus0005L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestNotifyPreferredNetworksListChange0001L);
+    ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestNotifyPreferredNetworksListChange0002L);           
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestNotifyNetworkSelectionSettingChange0001L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestNotifyNetworkSelectionSettingChange0002L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestNotifyNetworkSelectionSettingChange0004L);
@@ -5221,14 +5230,14 @@
 
 
 /**
-@SYMTestCaseID BA-CTSY-NTWC-MSPNL-0001
-@SYMPREQ 1551
-@SYMComponent  telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobilePhone::StorePreferredNetworksListL
-@SYMTestPriority High
-@SYMTestActions Invokes RMobilePhone::StorePreferredNetworksListL
-@SYMTestExpectedResults Pass
-@SYMTestType CT
+@SYMTestCaseID          BA-CTSY-NTWC-MSPNL-0001
+@SYMPREQ                417-71654
+@SYMComponent           telephony_ctsy
+@SYMTestCaseDesc        Test support in CTSY for RMobilePhone::StorePreferredNetworksListL
+@SYMTestPriority        High
+@SYMTestActions         1. Invoke RMobilePhone::StorePreferredNetworksListL with a list of Preferred Networks.
+@SYMTestExpectedResults LTSY receives the same list of Preferred Networks. 
+@SYMTestType            CT
 */
 void CCTsyNetworkControlFU::TestStorePreferredNetworksListL0001L()
 	{
@@ -5240,21 +5249,666 @@
 	RBuf8 data;
 	CleanupClosePushL(data);
 
-	TRequestStatus requestStatus;
-	CMobilePhoneStoredNetworkList* list = CMobilePhoneStoredNetworkList::NewL();
-	CleanupStack::PushL(list);
-	
+    TRequestStatus requestStatus;
+	
+	// --- prepare data ---
+
+    CMobilePhoneStoredNetworkList* list = CMobilePhoneStoredNetworkList::NewL();
+    CleanupStack::PushL(list);
+	
+    RMobilePhone::TMobilePreferredNetworkEntryV3 prefNetworks[3];
+    
+    prefNetworks[0].iAccess = RMobilePhone::KNetworkAccessGsm;
+    prefNetworks[0].iCountryCode = _L("262");
+    prefNetworks[0].iNetworkId = _L("01");
+    
+    prefNetworks[1].iAccess = RMobilePhone::KNetworkAccessGsm;
+    prefNetworks[1].iCountryCode = _L("262");
+    prefNetworks[1].iNetworkId = _L("02");
+
+    prefNetworks[2].iAccess = RMobilePhone::KNetworkAccessGsm;
+    prefNetworks[2].iCountryCode = _L("262");
+    prefNetworks[2].iNetworkId = _L("03");
+        
+    for( TInt i=0; i < 3; i++ )
+        {
+        list->AddEntryL(prefNetworks[i]);
+        }
+    
+    TMockLtsyData1<CMobilePhoneStoredNetworkList*> listData(list);    
+    listData.SerialiseL(data);
+    
+    // Invoke Store request
+    
+    iMockLTSY.ExpectL(ECtsyPhoneStorePreferredNetworksListReq, data);
+    iMockLTSY.CompleteL(ECtsyPhoneStorePreferredNetworksListComp, KErrNone);
+    
 	iPhone.StorePreferredNetworksListL(requestStatus, list);
 
 	User::WaitForRequest(requestStatus);
 	AssertMockLtsyStatusL();
-	ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
-	AssertMockLtsyStatusL();
-	CleanupStack::PopAndDestroy(3, this); // data, this, list
-	
+	ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+	CleanupStack::PopAndDestroy(3, this); // list, data, this
 	}
 
+/**
+@SYMTestCaseID          BA-CTSY-NTWC-MSPNL-0001a
+@SYMPREQ                417-71654
+@SYMComponent           telephony_ctsy
+@SYMTestCaseDesc        Test support in CTSY for RMobilePhone::StorePreferredNetworksListL with empty list
+@SYMTestPriority        High
+@SYMTestActions         1. Invoke RMobilePhone::StorePreferredNetworksListL with an empty list of Preferred Networks.
+@SYMTestExpectedResults LTSY receives an empty list of Preferred Networks.
+@SYMTestType            CT
+*/
+void CCTsyNetworkControlFU::TestStorePreferredNetworksListL0001aL()
+    {
+
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    TRequestStatus requestStatus;
+    
+    // --- prepare data ---
+    
+    CMobilePhoneStoredNetworkList* list = CMobilePhoneStoredNetworkList::NewL();
+    CleanupStack::PushL(list);
+
+    TMockLtsyData1<CMobilePhoneStoredNetworkList*> listData(list);    
+    listData.SerialiseL(data);
+    
+    // Invoke Store request
+    
+    iMockLTSY.ExpectL(ECtsyPhoneStorePreferredNetworksListReq, data);
+    iMockLTSY.CompleteL(ECtsyPhoneStorePreferredNetworksListComp, KErrNone);
+
+    iPhone.StorePreferredNetworksListL(requestStatus, list);
+
+    User::WaitForRequest(requestStatus);
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+    CleanupStack::PopAndDestroy(3, this); // list, data, this
+    }
+
+/**
+@SYMTestCaseID          BA-CTSY-NTWC-MSPNL-0001b
+@SYMPREQ                417-71654
+@SYMComponent           telephony_ctsy
+@SYMTestCaseDesc        Test support in CTSY for RMobilePhone::StorePreferredNetworksListL with error
+@SYMTestPriority        High
+@SYMTestActions         1. Invoke RMobilePhone::StorePreferredNetworksListL.
+                        2. LTSY returns error.  
+@SYMTestExpectedResults Test code receives error. 
+@SYMTestType            CT
+*/
+void CCTsyNetworkControlFU::TestStorePreferredNetworksListL0001bL()
+    {
+
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    TRequestStatus requestStatus;
+
+    // --- prepare data ---
+    
+    CMobilePhoneStoredNetworkList* list = CMobilePhoneStoredNetworkList::NewL();
+    CleanupStack::PushL(list);
+
+    RMobilePhone::TMobilePreferredNetworkEntryV3 prefNetwork;
+    
+    prefNetwork.iAccess = RMobilePhone::KNetworkAccessGsm;
+    prefNetwork.iCountryCode = _L("262");
+    prefNetwork.iNetworkId = _L("01");
+    
+    list->AddEntryL(prefNetwork);
+    
+    TMockLtsyData1<CMobilePhoneStoredNetworkList*> listData(list);    
+    listData.SerialiseL(data);
+    
+    // Invoke Store request - LTSY returns KErrUnknown
+    
+    iMockLTSY.ExpectL(ECtsyPhoneStorePreferredNetworksListReq, data);
+    iMockLTSY.CompleteL(ECtsyPhoneStorePreferredNetworksListComp, KErrUnknown);
+    
+    iPhone.StorePreferredNetworksListL(requestStatus, list);
+
+    User::WaitForRequest(requestStatus);
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrUnknown, requestStatus.Int());
+
+    // Invoke Store request - LTSY returns KErrNotSupported
+    
+    iMockLTSY.ExpectL(ECtsyPhoneStorePreferredNetworksListReq, data);
+    iMockLTSY.CompleteL(ECtsyPhoneStorePreferredNetworksListComp, KErrNotSupported);
+    
+    iPhone.StorePreferredNetworksListL(requestStatus, list);
+
+    User::WaitForRequest(requestStatus);
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+    
+    CleanupStack::PopAndDestroy(3, this); // list, data, this
+    }
+
+/**
+@SYMTestCaseID          BA-CTSY-NTWC-MSPNL-0002
+@SYMPREQ                417-71654
+@SYMComponent           telephony_ctsy
+@SYMTestCaseDesc        Test support in CTSY for Cancelling RMobilePhone::StorePreferredNetworksListL
+@SYMTestPriority        High
+@SYMTestActions         1. Invoke RMobilePhone::StorePreferredNetworksListL.
+                        2. Cancel the outstanding request.
+                        3. LTSY ignores cancelling the request and stores the preferred networks list.
+@SYMTestExpectedResults Request status of the operation is KErrNone. 
+@SYMTestType            CT
+*/
+void CCTsyNetworkControlFU::TestStorePreferredNetworksListL0002L()
+    {
+
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    TRequestStatus requestStatus;
+
+    // --- prepare data ---
+    
+    CMobilePhoneStoredNetworkList* list = CMobilePhoneStoredNetworkList::NewL();
+    CleanupStack::PushL(list);
+
+    RMobilePhone::TMobilePreferredNetworkEntryV3 prefNetwork;
+    
+    prefNetwork.iAccess = RMobilePhone::KNetworkAccessGsm;
+    prefNetwork.iCountryCode = _L("262");
+    prefNetwork.iNetworkId = _L("01");
+    
+    list->AddEntryL(prefNetwork);
+    
+    TMockLtsyData1<CMobilePhoneStoredNetworkList*> listData(list);    
+    listData.SerialiseL(data);
+    
+    // Invoke Store request
+    
+    iMockLTSY.ExpectL(ECtsyPhoneStorePreferredNetworksListReq, data);
+    iMockLTSY.CompleteL(ECtsyPhoneStorePreferredNetworksListComp, KErrNone);
+        
+    iPhone.StorePreferredNetworksListL(requestStatus, list);
+
+    // Cancel outstanding request
+    iPhone.CancelAsyncRequest(EMobilePhoneStorePreferredNetworksList);    
+    
+    User::WaitForRequest(requestStatus);
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+    CleanupStack::PopAndDestroy(3, this); // list, data, this
+    
+    }
+
+/**
+@SYMTestCaseID          BA-CTSY-NTWC-CRMPPN-0001
+@SYMPREQ                417-71654
+@SYMComponent           telephony_ctsy
+@SYMTestCaseDesc        Test support in CTSY for CRetrieveMobilePhonePreferredNetworks::Start
+@SYMTestPriority        High
+@SYMTestActions         1. Invoke CRetrieveMobilePhonePreferredNetworks::Start.
+                        2. Add a new entry to the list.
+                        3. Invoke RMobilePhone::StorePreferredNetworksListL. 
+@SYMTestExpectedResults LTSY receives the modified list and test code receives KErrNone. 
+@SYMTestType            CT
+*/
+void CCTsyNetworkControlFU::TestRetrieveMobilePhonePreferredNetworks0001L()
+    {
+
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    // --- prepare data ---
+    
+    CMobilePhoneStoredNetworkList* list = CMobilePhoneStoredNetworkList::NewL();
+    CleanupStack::PushL(list);
+            
+    RMobilePhone::TMobilePreferredNetworkEntryV3 prefNetwork;
+    
+    prefNetwork.iAccess = RMobilePhone::KNetworkAccessGsm;
+    prefNetwork.iCountryCode = _L("262");
+    prefNetwork.iNetworkId = _L("01");
+    
+    list->AddEntryL(prefNetwork);
+    
+    TMockLtsyData1<CMobilePhoneStoredNetworkList*> completeLtsyData(list);    
+    completeLtsyData.SerialiseL(data);    
+    
+    CFilteringActiveScheduler scheduler;
+    CActiveScheduler::Install(&scheduler);
+
+    CRetrieveMobilePhonePreferredNetworks* retrieveMobilePhonePreferredNetworks = 
+                        CRetrieveMobilePhonePreferredNetworks::NewL(iPhone);
+    CleanupStack::PushL(retrieveMobilePhonePreferredNetworks);
+    
+    CActiveRetriever::ResetRequestsNumber();
+    CActiveRetriever* activeRetriever = 
+                        CActiveRetriever::NewL(*retrieveMobilePhonePreferredNetworks);
+    CleanupStack::PushL(activeRetriever);
+    scheduler.AddRetrieverL(*activeRetriever);
+    
+    // Invoke retrieve request
+    
+    iMockLTSY.ExpectL(ECtsyPhoneGetPreferredNetworksReq);
+    iMockLTSY.CompleteL(ECtsyPhoneGetPreferredNetworksComp, KErrNone, data);    
+    
+    retrieveMobilePhonePreferredNetworks->Start(activeRetriever->Status());
+    
+    activeRetriever->Activate();
+    scheduler.StartScheduler();
+
+    AssertMockLtsyStatusL();    
+    ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+    ASSERT_EQUALS(KErrNone, activeRetriever->iStatus.Int());
+    
+    CMobilePhoneStoredNetworkList*  retrievedList = 
+            retrieveMobilePhonePreferredNetworks->RetrieveListL();
+    CleanupStack::PushL( retrievedList );
+    
+    // Check Retrieved list
+    
+    ASSERT_EQUALS(list->Enumerate(), retrievedList->Enumerate());
+    ASSERT_EQUALS(list->GetEntryL(0).iAccess, retrievedList->GetEntryL(0).iAccess);
+    ASSERT_EQUALS(list->GetEntryL(0).iCountryCode, retrievedList->GetEntryL(0).iCountryCode);
+    ASSERT_EQUALS(list->GetEntryL(0).iNetworkId, retrievedList->GetEntryL(0).iNetworkId);    
+    
+    CleanupStack::PopAndDestroy(3, 
+            retrieveMobilePhonePreferredNetworks); // retrievedList
+                                                   // activeRetriever
+                                                   // retrieveMobilePhonePreferredNetworks
+
+    CActiveScheduler::Install(NULL);
+/*    
+    // Add new entry to the list
+    
+    RMobilePhone::TMobilePreferredNetworkEntryV3 prefNetwork2;
+    prefNetwork2.iAccess = RMobilePhone::KNetworkAccessGsm;
+    prefNetwork2.iCountryCode = _L("262");
+    prefNetwork2.iNetworkId = _L("02");
+      
+    list->AddEntryL(prefNetwork2);
+     
+    TMockLtsyData1<CMobilePhoneStoredNetworkList*> completeLtsyData2(list);
+    completeLtsyData2.SerialiseL(data);
+
+    // Invoke Store request
+    
+    iMockLTSY.ExpectL(ECtsyPhoneStorePreferredNetworksListReq, data);
+    iMockLTSY.CompleteL(ECtsyPhoneStorePreferredNetworksListComp, KErrNone);      
+  
+    TRequestStatus requestStatus;
+    iPhone.StorePreferredNetworksListL(requestStatus, list);
+
+    User::WaitForRequest(requestStatus);
+   
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+*/    
+    CleanupStack::PopAndDestroy(3, this); // list, data, this
+
+    }
+
+/**
+@SYMTestCaseID          BA-CTSY-NTWC-CRMPPN-0001a
+@SYMPREQ                417-71654
+@SYMComponent           telephony_ctsy
+@SYMTestCaseDesc        Test support in CTSY for CRetrieveMobilePhonePreferredNetworks::Start
+@SYMTestPriority        High
+@SYMTestActions         1. Invoke CRetrieveMobilePhonePreferredNetworks::Start.
+                        2. Remove an entry from the list.
+                        3. Invoke RMobilePhone::StorePreferredNetworksListL. 
+@SYMTestExpectedResults LTSY receives the modified list and test code receives KErrNone. 
+@SYMTestType            CT
+*/
+void CCTsyNetworkControlFU::TestRetrieveMobilePhonePreferredNetworks0001aL()
+    {
+
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    // --- prepare data ---
+    
+    CMobilePhoneStoredNetworkList* list = CMobilePhoneStoredNetworkList::NewL();
+    CleanupStack::PushL(list);
+            
+    RMobilePhone::TMobilePreferredNetworkEntryV3 prefNetworks[2];
+    
+    prefNetworks[0].iAccess = RMobilePhone::KNetworkAccessGsm;
+    prefNetworks[0].iCountryCode = _L("262");
+    prefNetworks[0].iNetworkId = _L("01");
+
+    prefNetworks[1].iAccess = RMobilePhone::KNetworkAccessGsm;
+    prefNetworks[1].iCountryCode = _L("262");
+    prefNetworks[1].iNetworkId = _L("02");
+    
+    for (int i = 0; i < 2; ++i)
+        {
+        list->AddEntryL(prefNetworks[i]);
+        }
+    
+    CFilteringActiveScheduler scheduler;
+    CActiveScheduler::Install(&scheduler);
+
+    CRetrieveMobilePhonePreferredNetworks* retrieveMobilePhonePreferredNetworks = 
+                        CRetrieveMobilePhonePreferredNetworks::NewL(iPhone);
+    CleanupStack::PushL(retrieveMobilePhonePreferredNetworks);
+    
+    CActiveRetriever::ResetRequestsNumber();
+    CActiveRetriever* activeRetriever = 
+                        CActiveRetriever::NewL(*retrieveMobilePhonePreferredNetworks);
+    CleanupStack::PushL(activeRetriever);
+    scheduler.AddRetrieverL(*activeRetriever);
+        
+    TMockLtsyData1<CMobilePhoneStoredNetworkList*> completeLtsyData(list);    
+    completeLtsyData.SerialiseL(data);
+    
+    // Invoke Retrieve request
+    
+    iMockLTSY.ExpectL(ECtsyPhoneGetPreferredNetworksReq);
+    iMockLTSY.CompleteL(ECtsyPhoneGetPreferredNetworksComp, KErrNone, data);    
+    
+    retrieveMobilePhonePreferredNetworks->Start(activeRetriever->Status());
+    activeRetriever->Activate();
+    scheduler.StartScheduler();
+
+    ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+    ASSERT_EQUALS(KErrNone, activeRetriever->iStatus.Int());
+    AssertMockLtsyStatusL();    
+    
+    CMobilePhoneStoredNetworkList*  retrievedList = 
+            retrieveMobilePhonePreferredNetworks->RetrieveListL();
+    CleanupStack::PushL( retrievedList );
+    
+    // Check retrieved list
+    
+    ASSERT_EQUALS(list->Enumerate(), retrievedList->Enumerate());
+    ASSERT_EQUALS(list->GetEntryL(0).iAccess, retrievedList->GetEntryL(0).iAccess);
+    ASSERT_EQUALS(list->GetEntryL(0).iCountryCode, retrievedList->GetEntryL(0).iCountryCode);
+    ASSERT_EQUALS(list->GetEntryL(0).iNetworkId, retrievedList->GetEntryL(0).iNetworkId);    
+    ASSERT_EQUALS(list->GetEntryL(1).iAccess, retrievedList->GetEntryL(1).iAccess);
+    ASSERT_EQUALS(list->GetEntryL(1).iCountryCode, retrievedList->GetEntryL(1).iCountryCode);
+    ASSERT_EQUALS(list->GetEntryL(1).iNetworkId, retrievedList->GetEntryL(1).iNetworkId);    
+    
+    CleanupStack::PopAndDestroy(3, 
+            retrieveMobilePhonePreferredNetworks); // retrievedList
+                                                   // activeRetriever
+                                                   // retrieveMobilePhonePreferredNetworks
+
+    CActiveScheduler::Install(NULL);
+/*    
+    // Remove the last entry from the list
+    
+    list->DeleteEntryL(1);
+    
+    TMockLtsyData1<CMobilePhoneStoredNetworkList*> completeLtsyData2(list);
+    completeLtsyData2.SerialiseL(data);
+
+    // Invoke Store request
+    
+    iMockLTSY.ExpectL(ECtsyPhoneStorePreferredNetworksListReq, data);
+    iMockLTSY.CompleteL(ECtsyPhoneStorePreferredNetworksListComp, KErrNone);      
+  
+    TRequestStatus requestStatus;
+    iPhone.StorePreferredNetworksListL(requestStatus, list);
+
+    User::WaitForRequest(requestStatus);
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ */   
+    CleanupStack::PopAndDestroy(3, this); // list, data, this
+
+    }
+
+/**
+@SYMTestCaseID          BA-CTSY-NTWC-CRMPPN-0001b
+@SYMPREQ                417-71654
+@SYMComponent           telephony_ctsy
+@SYMTestCaseDesc        Test support in CTSY for CRetrieveMobilePhonePreferredNetworks::Start with empty list
+@SYMTestPriority        High
+@SYMTestActions         1. Invoke CRetrieveMobilePhonePreferredNetworks::Start.
+                        2. LTSY returns an empty list of preferred networks.
+@SYMTestExpectedResults Test code receives an empty list of preferred networks. 
+@SYMTestType            CT
+*/
+void CCTsyNetworkControlFU::TestRetrieveMobilePhonePreferredNetworks0001bL()
+    {
+
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    // --- prepare data ---
+    
+    CMobilePhoneStoredNetworkList* list = CMobilePhoneStoredNetworkList::NewL();
+    CleanupStack::PushL(list);
+                
+    CFilteringActiveScheduler scheduler;
+    CActiveScheduler::Install(&scheduler);
+
+    CRetrieveMobilePhonePreferredNetworks* retrieveMobilePhonePreferredNetworks = 
+                        CRetrieveMobilePhonePreferredNetworks::NewL(iPhone);
+    CleanupStack::PushL(retrieveMobilePhonePreferredNetworks);
+    
+    CActiveRetriever::ResetRequestsNumber();
+    CActiveRetriever* activeRetriever = 
+                        CActiveRetriever::NewL(*retrieveMobilePhonePreferredNetworks);
+    CleanupStack::PushL(activeRetriever);
+    scheduler.AddRetrieverL(*activeRetriever);
+        
+    TMockLtsyData1<CMobilePhoneStoredNetworkList*> completeLtsyData(list);    
+    completeLtsyData.SerialiseL(data);
+
+    // Invoke Retrieve request
+    
+    iMockLTSY.ExpectL(ECtsyPhoneGetPreferredNetworksReq);
+    iMockLTSY.CompleteL(ECtsyPhoneGetPreferredNetworksComp, KErrNone, data);    
+    
+    retrieveMobilePhonePreferredNetworks->Start(activeRetriever->Status());
+    activeRetriever->Activate();
+    scheduler.StartScheduler();
+
+    ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+    ASSERT_EQUALS(KErrNone, activeRetriever->iStatus.Int());
+    AssertMockLtsyStatusL();    
+    
+    CMobilePhoneStoredNetworkList*  retrievedList = 
+            retrieveMobilePhonePreferredNetworks->RetrieveListL();
+    CleanupStack::PushL( retrievedList );
+    
+    // Check retrieved list is empty
+    
+    ASSERT_EQUALS(list->Enumerate(), retrievedList->Enumerate());
+    
+    CleanupStack::PopAndDestroy(3, 
+            retrieveMobilePhonePreferredNetworks); // retrievedList
+                                                   // activeRetriever
+                                                   // retrieveMobilePhonePreferredNetworks
+
+    CActiveScheduler::Install(NULL);
+        
+    CleanupStack::PopAndDestroy(3, this); // list, data, this
+
+    }
+
+/**
+@SYMTestCaseID          BA-CTSY-NTWC-CRMPPN-0001c
+@SYMPREQ                417-71654
+@SYMComponent           telephony_ctsy
+@SYMTestCaseDesc        Test support in CTSY for CRetrieveMobilePhonePreferredNetworks::Start with error
+@SYMTestPriority        High
+@SYMTestActions         1. Invoke CRetrieveMobilePhonePreferredNetworks::Start.
+                        2. LTSY returns error.
+@SYMTestExpectedResults Test code receives error. 
+@SYMTestType            CT
+*/
+void CCTsyNetworkControlFU::TestRetrieveMobilePhonePreferredNetworks0001cL()
+    {
+
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    // --- prepare data ---
+    
+    CMobilePhoneStoredNetworkList* list = CMobilePhoneStoredNetworkList::NewL();
+    CleanupStack::PushL(list);
+  
+    CFilteringActiveScheduler scheduler;
+    CActiveScheduler::Install(&scheduler);
+
+    CRetrieveMobilePhonePreferredNetworks* retrieveMobilePhonePreferredNetworks = 
+                        CRetrieveMobilePhonePreferredNetworks::NewL(iPhone);
+    CleanupStack::PushL(retrieveMobilePhonePreferredNetworks);
+    
+    CActiveRetriever::ResetRequestsNumber();
+    CActiveRetriever* activeRetriever = 
+                        CActiveRetriever::NewL(*retrieveMobilePhonePreferredNetworks);
+    CleanupStack::PushL(activeRetriever);
+    scheduler.AddRetrieverL(*activeRetriever);
+        
+    TMockLtsyData1<CMobilePhoneStoredNetworkList*> completeLtsyData(list);    
+    completeLtsyData.SerialiseL(data);
+    
+    // Invoke Retrieve request - LTSY returns KErrUnknown
+    
+    iMockLTSY.ExpectL(ECtsyPhoneGetPreferredNetworksReq);
+    iMockLTSY.CompleteL(ECtsyPhoneGetPreferredNetworksComp, KErrUnknown, data);    
+    
+    retrieveMobilePhonePreferredNetworks->Start(activeRetriever->Status());
+    activeRetriever->Activate();
+    scheduler.StartScheduler();
+
+    ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+    ASSERT_EQUALS(KErrUnknown, activeRetriever->iStatus.Int());
+    AssertMockLtsyStatusL();    
+
+    // Invoke Retrieve request - LTSY returns KErrNotSupported
+    
+    iMockLTSY.ExpectL(ECtsyPhoneGetPreferredNetworksReq);
+    iMockLTSY.CompleteL(ECtsyPhoneGetPreferredNetworksComp, KErrNotSupported, data);    
+    
+    retrieveMobilePhonePreferredNetworks->Start(activeRetriever->Status());
+    activeRetriever->Activate();
+    scheduler.StartScheduler();
+
+    ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+    ASSERT_EQUALS(KErrNotSupported, activeRetriever->iStatus.Int());
+    AssertMockLtsyStatusL();    
+    
+    CleanupStack::PopAndDestroy(2, 
+            retrieveMobilePhonePreferredNetworks); // activeRetriever
+                                                   // retrieveMobilePhonePreferredNetworks
+
+    CActiveScheduler::Install(NULL);
+        
+    CleanupStack::PopAndDestroy(3, this); // list, data, this
+
+    }
+
+/**
+@SYMTestCaseID          BA-CTSY-NTWC-CRMPPN-0002
+@SYMPREQ                417-71654
+@SYMComponent           telephony_ctsy
+@SYMTestCaseDesc        Test support in CTSY for Cancelling CRetrieveMobilePhonePreferredNetworks::Start
+@SYMTestPriority        High
+@SYMTestActions         1. Invoke CRetrieveMobilePhonePreferredNetworks::Start.
+                        2. Cancel outstanding request.
+@SYMTestExpectedResults Request status of the operation is KErrCancel
+@SYMTestType            CT
+*/
+void CCTsyNetworkControlFU::TestRetrieveMobilePhonePreferredNetworks0002L()
+    {
+     OpenEtelServerL(EUseExtendedError);
+     CleanupStack::PushL(TCleanupItem(Cleanup,this));
+     OpenPhoneL();
+
+     RBuf8 data;
+     CleanupClosePushL(data);
+
+     // --- prepare data ---
+     
+     CMobilePhoneStoredNetworkList* list = CMobilePhoneStoredNetworkList::NewL();
+     CleanupStack::PushL(list);
+        
+     CFilteringActiveScheduler scheduler;
+     CActiveScheduler::Install(&scheduler);
+
+     CRetrieveMobilePhonePreferredNetworks* retrieveMobilePhonePreferredNetworks = 
+                         CRetrieveMobilePhonePreferredNetworks::NewL(iPhone);
+     CleanupStack::PushL(retrieveMobilePhonePreferredNetworks);
+     
+     CActiveRetriever::ResetRequestsNumber();
+     CActiveRetriever* activeRetriever = 
+                         CActiveRetriever::NewL(*retrieveMobilePhonePreferredNetworks);
+     CleanupStack::PushL(activeRetriever);
+     scheduler.AddRetrieverL(*activeRetriever);
+         
+     TMockLtsyData1<CMobilePhoneStoredNetworkList*> completeLtsyData(list);    
+     completeLtsyData.SerialiseL(data);
+     
+     // Invoke Retrieve request
+     
+     TRequestStatus mockLtsyStatus;
+     iMockLTSY.NotifyTerminated(mockLtsyStatus);     
+     iMockLTSY.ExpectL(ECtsyPhoneGetPreferredNetworksReq);
+     iMockLTSY.CompleteL(ECtsyPhoneGetPreferredNetworksComp, KErrNone, data);    
+     
+     retrieveMobilePhonePreferredNetworks->Start(activeRetriever->Status());
+     activeRetriever->Activate();
+     
+     // Cancel Retrieve request
+
+     iPhone.CancelAsyncRequest(EMobilePhoneGetPreferredNetworksPhase1);    
+     scheduler.StartScheduler();
+
+     User::WaitForRequest(mockLtsyStatus);
+     
+     ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+     ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());     
+     ASSERT_EQUALS(KErrCancel, activeRetriever->iStatus.Int());
+     AssertMockLtsyStatusL();    
+        
+     CleanupStack::PopAndDestroy(2, 
+             retrieveMobilePhonePreferredNetworks); // activeRetriever
+                                                    // retrieveMobilePhonePreferredNetworks
+
+     CActiveScheduler::Install(NULL);
+         
+     CleanupStack::PopAndDestroy(3, this); // list, data, this
+    
+    }
 
 /**
 @SYMTestCaseID BA-CTSY-NTWC-MGNRS-0001
@@ -5573,15 +6227,17 @@
 	CleanupStack::PopAndDestroy(2, this); // data, this
 
 	}
+
 /**
-@SYMTestCaseID BA-CTSY-NTWC-MNPNLC-0001
-@SYMPREQ 1551
-@SYMComponent  telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobilePhone::NotifyPreferredNetworksListChange
-@SYMTestPriority High
-@SYMTestActions Invokes RMobilePhone::NotifyPreferredNetworksListChange
-@SYMTestExpectedResults Pass
-@SYMTestType CT
+@SYMTestCaseID          BA-CTSY-NTWC-MNPNLC-0001
+@SYMPREQ                417-71654
+@SYMComponent           telephony_ctsy
+@SYMTestCaseDesc        Test support in CTSY for RMobilePhone::NotifyPreferredNetworksListChange
+@SYMTestPriority        High
+@SYMTestActions         1. Invoke RMobilePhone::NotifyPreferredNetworksListChange.
+                        2. Invoke RMobilePhone::StorePreferredNetworksListL.
+@SYMTestExpectedResults Test code receives preferred network list notification
+@SYMTestType            CT
 */
 void CCTsyNetworkControlFU::TestNotifyPreferredNetworksListChange0001L()
 	{
@@ -5592,19 +6248,123 @@
 
 	RBuf8 data;
 	CleanupClosePushL(data);
-
-	TRequestStatus requestStatus;
+    
+    TRequestStatus requestStatus;   
+
+    // --- prepare data ---
+
+    CMobilePhoneStoredNetworkList* list = CMobilePhoneStoredNetworkList::NewL();
+    CleanupStack::PushL(list);
+
+    RMobilePhone::TMobilePreferredNetworkEntryV3 prefNetwork;
+    
+    prefNetwork.iAccess = RMobilePhone::KNetworkAccessGsm;
+    prefNetwork.iCountryCode = _L("262");
+    prefNetwork.iNetworkId = _L("01");
+    
+    list->AddEntryL(prefNetwork);
+    
+    TMockLtsyData1<CMobilePhoneStoredNetworkList*> listData(list);    
+    listData.SerialiseL(data);
+    
+	// Invoke Notify request
 	
 	iPhone.NotifyPreferredNetworksListChange(requestStatus);
 
+	// Invoke Store request
+	    
+    iMockLTSY.ExpectL(ECtsyPhoneStorePreferredNetworksListReq, data);
+    iMockLTSY.CompleteL(ECtsyPhoneStorePreferredNetworksListComp, KErrNone);
+    
+    TRequestStatus storeRequestStatus;
+    iPhone.StorePreferredNetworksListL(storeRequestStatus, list);
+
+    User::WaitForRequest(storeRequestStatus);
+    ASSERT_EQUALS(KErrNone, storeRequestStatus.Int());    
+    AssertMockLtsyStatusL();
+	
 	User::WaitForRequest(requestStatus);
-	AssertMockLtsyStatusL();
-	ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
-	CleanupStack::PopAndDestroy(2, this); // data, this
+	
+	ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+	CleanupStack::PopAndDestroy(3, this); // list, data, this
 	
 	}
 
+/**
+@SYMTestCaseID          BA-CTSY-NTWC-MNPNLC-0002
+@SYMPREQ                417-71654
+@SYMComponent           telephony_ctsy
+@SYMTestCaseDesc        Test support in CTSY for Cancelling RMobilePhone::NotifyPreferredNetworksListChange
+@SYMTestPriority        High
+@SYMTestActions         1. Invoke RMobilePhone::NotifyPreferredNetworksListChange.
+                        2. Cancel subscription to preferred network list change.
+                        3. Invoke RMobilePhone::StorePreferredNetworksListL.
+@SYMTestExpectedResults Test code does not receive preferred network list notification
+@SYMTestType            CT
+*/
+void CCTsyNetworkControlFU::TestNotifyPreferredNetworksListChange0002L()
+    {
+    
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+    
+    TRequestStatus requestStatus;
+
+    // --- prepare data ---
+
+    CMobilePhoneStoredNetworkList* list = CMobilePhoneStoredNetworkList::NewL();
+    CleanupStack::PushL(list);
+
+    RMobilePhone::TMobilePreferredNetworkEntryV3 prefNetwork;
+     
+    prefNetwork.iAccess = RMobilePhone::KNetworkAccessGsm;
+    prefNetwork.iCountryCode = _L("262");
+    prefNetwork.iNetworkId = _L("01");
+     
+    list->AddEntryL(prefNetwork);
+     
+    TMockLtsyData1<CMobilePhoneStoredNetworkList*> listData(list);    
+    listData.SerialiseL(data);
+    
+    // Invoke Notify request
+    
+    iPhone.NotifyPreferredNetworksListChange(requestStatus);
+
+    // Cancel Notify request
+    
+    iPhone.CancelAsyncRequest(EMobilePhoneNotifyStorePreferredNetworksListChange);
+
+    TRequestStatus mockLtsyStatus;    
+    iMockLTSY.NotifyTerminated(mockLtsyStatus);
+    
+    // Invoke Store request
+    
+    iMockLTSY.ExpectL(ECtsyPhoneStorePreferredNetworksListReq, data);
+    iMockLTSY.CompleteL(ECtsyPhoneStorePreferredNetworksListComp, KErrNone);    
+    
+    TRequestStatus storeRequestStatus;
+    iPhone.StorePreferredNetworksListL(storeRequestStatus, list);
+
+    User::WaitForRequest(mockLtsyStatus);
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+    
+    User::WaitForRequest(storeRequestStatus);
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, storeRequestStatus.Int());    
+    
+    User::WaitForRequest(requestStatus);
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrCancel, requestStatus.Int());
+
+    CleanupStack::PopAndDestroy(3, this); // list, data, this
+      
+    }
 
 /**
 @SYMTestCaseID BA-CTSY-NTWC-MNNSSC-0001