telephonyserverplugins/ctsydispatchlayer/test/dispatchertests/dispatchsrc/cctsypacketservicesfunegative.cpp
changeset 0 3553901f7fa8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/ctsydispatchlayer/test/dispatchertests/dispatchsrc/cctsypacketservicesfunegative.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,2444 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+
+
+/**
+ @file The TEFUnit test suite for CallControl in the Common TSY.
+*/
+
+#include <etel.h>
+#include <etelmm.h>
+#include <et_clsvr.h>
+#include <ctsy/mmtsy_names.h>
+#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
+#include <test/tmockltsydata.h>
+#include <ctsy/serviceapi/gsmerror.h>
+
+#include <ctsy/ltsy/mltsydispatchpacketservicesinterface.h>
+#include "config.h"
+#include "mockltsyindicatorids.h"
+#include <in_sock.h>
+
+#include "cctsypacketservicesfunegative.h"
+
+void CCTsyPacketServicesFUNegative::ConvertDNSToPCOBuffer
+	(const TDes8& aPrimaryDNS, const TDes8& aSecondaryDNS, const TUint8 aRequestID, TDes8&  aFormatPcoBufferAddr)
+	{
+	// Handle Primary DNS address
+	TInetAddr netPrimaryDNS;
+	TBuf<KDnsLength> netPrimaryDNSConv;
+	netPrimaryDNSConv.Copy(aPrimaryDNS);
+	netPrimaryDNS.Input(netPrimaryDNSConv);
+	TUint32 primDNSaddr =  netPrimaryDNS.Address();
+
+	// Handle Secondary DNS address
+	TInetAddr netSecondaryDNS;
+	TBuf<KDnsLength> netSecondaryDNSConv;
+	netSecondaryDNSConv.Copy(aSecondaryDNS);
+	netSecondaryDNS.Input(netSecondaryDNSConv);
+	TUint32 secondaryDNSaddr =  netSecondaryDNS.Address();
+
+	aFormatPcoBufferAddr[0] = KPrimaryAndSecondaryDNSLength;	// Length
+	aFormatPcoBufferAddr[1] = KIPCRequestCode; 					// IPC PRequest Code
+	aFormatPcoBufferAddr[2] = aRequestID; 						// Request ID (CHAP challenge)
+	aFormatPcoBufferAddr[3] = KPacketLengthMSB;					// Packet length MSB (always zero)
+	aFormatPcoBufferAddr[4] = KPrimaryAndSecondaryDNSLength;	// Packet length LSB
+	aFormatPcoBufferAddr[5] = KIndicatePrimaryAddress; 			// Indicate Primary address
+	aFormatPcoBufferAddr[6]	= KDnsAddressLength;				// Length of address (inc header)
+	aFormatPcoBufferAddr[7] = (primDNSaddr >> 24) & 0xff; 		// Primary DNS
+	aFormatPcoBufferAddr[8] = (primDNSaddr >> 16) & 0xff; 		// Primary DNS
+	aFormatPcoBufferAddr[9] = (primDNSaddr >> 8) & 0xff; 		// Primary DNS
+	aFormatPcoBufferAddr[10] =  primDNSaddr & 0xff; 			// Primary DNS
+	aFormatPcoBufferAddr[11] = KIndicateSecondaryAddress;		// Indicate Secondary address
+	aFormatPcoBufferAddr[12] = KDnsAddressLength;				// Length of address (inc header)
+	aFormatPcoBufferAddr[13] = (secondaryDNSaddr >> 24) & 0xff; // Secondary DNS
+	aFormatPcoBufferAddr[14] = (secondaryDNSaddr >> 16) & 0xff; // Secondary DNS
+	aFormatPcoBufferAddr[15] = (secondaryDNSaddr >> 8) & 0xff; 	// Secondary DNS
+	aFormatPcoBufferAddr[16] =  secondaryDNSaddr & 0xff; 		// Secondary DNS
+	aFormatPcoBufferAddr.SetLength(KPrimaryAndSecondaryDNSLength + 1);
+	}
+
+// Generates the username, password and requestID buffer as described in 3GPP specification 3G TS 24.008
+void CCTsyPacketServicesFUNegative::ConvertUsernameAndPasswordToPCOBuffer(const TDes8& aUsername, 
+		const TDes8& aPassword, const TUint8 aRequestID, TDes8& aFormatedBuffer)
+	{
+	TInt usernameLen = aUsername.Length();
+	TInt passwordLen = aPassword.Length();
+	TInt dataLen = usernameLen + passwordLen + KPasswordUsernameHeaderLength;
+	TInt i = 0;
+
+	aFormatedBuffer[i++] = dataLen; 				// Length
+	aFormatedBuffer[i++] = KIPCRequestCode; 		// IPC PRequest Codeio
+	aFormatedBuffer[i++] = aRequestID; 				// Request ID (CHAP challenge)
+	aFormatedBuffer[i++] = KPacketLengthMSB; 		// Packet length MSB (always zero)
+	aFormatedBuffer[i++] = dataLen; 				// Packet length LSB
+	aFormatedBuffer[i++] = usernameLen; 			// Length of username
+	aFormatedBuffer.SetLength(i);
+	aFormatedBuffer.Append(aUsername); 				// Username
+	aFormatedBuffer.SetLength(i + usernameLen + 1);
+	aFormatedBuffer[i + usernameLen] = passwordLen; // Length of password
+	aFormatedBuffer.Append(aPassword);				// Password
+	}
+
+/***
+* 											PCO - Description
+*
+* The purpose of the protocol configuration options (PCO) is to transfer external network protocol options 
+* associated with a PDP context activation, and transfer additional (protocol) data 
+* (e.g. configuration parameters, error codes or messages/events) associated with an external protocol 
+* or an application.
+* The protocol configuration options (PCO) is a type 4 information element with a minimum length of 3 
+* octets and a maximum length of 253 octets
+* In order to generate the PCO buffer a TTlvStruct object is being used. The TTlvStruct wraps the buffers  
+* inserted to the PCO and identifies the buffers with given IDs.
+*  
+* In the following test the PCO buffer is initiated with the username, password, requestID, 
+* primary DNS and secondary DNS. In addition the PCO contains a Misc Buffer which has the 
+* same structure and the same characteristics as the PCO buffer and can contain 
+* Miscellaneous protocol information. The main risk with the Misc Buffer is an overflow 
+* (The dispatcher handles the overflow scenario). 
+*
+* Following is an example of a PCO buffer outline:
+*	
+*	PcoBuffer[0] == 0x80);  // Config options ext bit
+*	PcoBuffer[1] == 0xC0);  // Header 1
+*	PcoBuffer[2] == 0x23);  // Header 2
+*	PcoBuffer[3] == 0xC);   // Length
+*	PcoBuffer[4] == 0x1);   // IPC PRequest Code
+*	PcoBuffer[5] == 0x0);   // Request ID (CHAP challenge)
+*	PcoBuffer[6] == 0x0);   // Packet length MSB (always zero)
+*	PcoBuffer[7] == 0xC);   // Packet length LSB
+*	PcoBuffer[8] == 0x3);   // Length of username
+*	PcoBuffer[9] == 119);   // Username
+*	PcoBuffer[10] == 101);  // Username
+*	PcoBuffer[11] == 98);   // Username
+*	PcoBuffer[12] == 0x3);  // Length of password
+*	PcoBuffer[13] == 119);  // Password
+*	PcoBuffer[14] == 101);  // Password
+*	PcoBuffer[15] == 98);   // Password
+*	PcoBuffer[16] == 0x80); // DNS HeaderId 1
+*	PcoBuffer[17] == 0x21); // DNS HeaderId 2
+*	PcoBuffer[18] == 0x10); // Length
+*	PcoBuffer[19] == 0x1);  // IPC PRequest Code
+*	PcoBuffer[20] == 0x1);  // Request ID (CHAP challenge)
+*	PcoBuffer[21] == 0x0);  // Packet length MSB (always zero)  
+*	PcoBuffer[22] == 0x10); // Packet length LSB
+*	PcoBuffer[23] == 0x81); // Indicate Primary address 
+*	PcoBuffer[24] == 0x6);  // Length of address (inc header)        
+*	PcoBuffer[25] == 0xBE); // Primary DNS
+*	PcoBuffer[26] == 0x0);  // Primary DNS
+*	PcoBuffer[27] == 0x65); // Primary DNS
+*	PcoBuffer[28] == 0xBD); // Primary DNS               
+*	PcoBuffer[29] == 0x83); // Indicate Secondary address 
+*	PcoBuffer[30] == 0x6);  // Length of address (inc header)     
+*	PcoBuffer[31] == 0x19); // Secondary DNS
+*	PcoBuffer[32] == 0x5);  // Secondary DNS
+*	PcoBuffer[33] == 0x28); // Secondary DNS
+*	PcoBuffer[34] == 0xBF); // Secondary DNS
+*   
+*   The Misc buffer should be added after the secondary DNS value (i.e. location 35 in the
+*   example above).      
+*/
+ 
+// 
+//
+//
+// Generates a PCO buffer out of a PCO object.
+void CCTsyPacketServicesFUNegative::PCOGeneratorL(RPacketContext::TProtocolConfigOptionV2& aPco, RPacketContext::TMiscProtocolBuffer& aPcoBuffer)
+	{
+
+	TBuf8<KMaxUserAndPassLength> userAndPasswordBuffer(KMaxUserAndPassLength);
+
+	// Generates the username, password and requestID buffer as described in 3GPP specification 3G TS 24.008
+	ConvertUsernameAndPasswordToPCOBuffer(aPco.iAuthInfo.iUsername, aPco.iAuthInfo.iPassword, aPco.iId++, userAndPasswordBuffer);
+
+	TPtr8 userAndPasswordParamDataPtr(const_cast<TUint8*>(userAndPasswordBuffer.Ptr()),
+			userAndPasswordBuffer.Length(), userAndPasswordBuffer.Length());
+
+	TBuf8<KMaxPdpAddressLength> primaryAndSecondaryDNSBuffer(KPrimaryAndSecondaryDNSLength + 1);
+
+	// Generates the primary and secondary DNS buffer as described in 3GPP specification 3G TS 24.008
+	ConvertDNSToPCOBuffer(aPco.iDnsAddresses.iPrimaryDns, aPco.iDnsAddresses.iSecondaryDns, aPco.iId++, primaryAndSecondaryDNSBuffer);
+
+	// Setting the configurations buffers
+	TPtr8 primaryAndSecondaryDNSParamDataPtr(const_cast<TUint8*>(primaryAndSecondaryDNSBuffer.Ptr()),
+				primaryAndSecondaryDNSBuffer.Length(), primaryAndSecondaryDNSBuffer.Length());
+
+	TPtr8 pcoPtr (const_cast<TUint8*> (aPcoBuffer.Ptr()), RPacketContext::KMiscProtocolBufferLength);
+	TTlvStruct<RPacketContext::TPcoId, RPacketContext::TPcoItemDataLength> pcoTlv(pcoPtr,0);
+
+	RPacketContext::TPcoId usenameAndPasswordID(KUsenamePasswordDNSID);
+	RPacketContext::TPcoId primaryAndSecondaryDNSID(KPrimaryAndSecondaryDNSID);
+
+	pcoTlv.AppendItemL(usenameAndPasswordID, userAndPasswordParamDataPtr);
+	pcoTlv.AppendItemL(primaryAndSecondaryDNSID, primaryAndSecondaryDNSParamDataPtr);
+
+	aPcoBuffer.SetLength(primaryAndSecondaryDNSParamDataPtr.Length() + userAndPasswordParamDataPtr.Length() + 2 * KIDLength);
+
+	// Append the misc buffer which is alread in TLV structure
+	aPcoBuffer.Append(aPco.iMiscBuffer);
+	}
+
+void CCTsyPacketServicesFUNegative::DriverDeleteContextL(TInfoName aContextName)
+	{
+	RBuf8 data;
+	CleanupClosePushL(data);
+	TMockLtsyData1<TInfoName> contextNameData(aContextName);
+	data.Close();
+	contextNameData.SerialiseL(data);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, data, KErrNone);
+	CleanupStack::PopAndDestroy(1, &data); // data
+	}
+
+void CCTsyPacketServicesFUNegative::DriverAttachPacketServiceL()
+	{
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesPacketAttach::KLtsyDispatchPacketServicesPacketAttachApiId);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesPacketAttach::KLtsyDispatchPacketServicesPacketAttachApiId, KErrNone);
+	}
+
+void CCTsyPacketServicesFUNegative::DriverDetachPacketServiceL()
+	{
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesPacketDetach::KLtsyDispatchPacketServicesPacketDetachApiId);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesPacketDetach::KLtsyDispatchPacketServicesPacketDetachApiId, KErrNone);
+
+	// SetAttachModeL being called as part of the detach completion process
+	RBuf8 dataExpect;
+    CleanupClosePushL(dataExpect);
+    RPacketService::TAttachMode attachMode = RPacketService::EAttachWhenPossible;
+    TMockLtsyData1<RPacketService::TAttachMode> ltsyData(attachMode);
+    dataExpect.Close();
+    ltsyData.SerialiseL(dataExpect);
+
+    iMockLTSY.ExpectL(MLtsyDispatchPacketServicesSetPacketAttachMode::KLtsyDispatchPacketServicesSetPacketAttachModeApiId, dataExpect, KErrNone);
+    iMockLTSY.CompleteL(MLtsyDispatchPacketServicesSetPacketAttachMode::KLtsyDispatchPacketServicesSetPacketAttachModeApiId, KErrNone);
+
+	CleanupStack::PopAndDestroy(1, &dataExpect); // dataExpect
+	}
+
+void CCTsyPacketServicesFUNegative::DriverInitialiseContextL()
+	{
+	RBuf8 data;
+	CleanupClosePushL(data);
+
+	TInfoName primaryContext;
+	TInfoName secondaryContext;
+	primaryContext.Copy(KFirstAllocatedContextName);
+	secondaryContext.Copy(KDefaultContextName);
+
+	//-------------------------------------------------------------------------
+	// Successful completion request of
+	// RPacketContext::InitialiseContext
+ 	//-------------------------------------------------------------------------
+
+	TMockLtsyData2<TInfoName, TInfoName> expLtsyContextNamesData3(primaryContext, secondaryContext);
+	data.Close();
+	expLtsyContextNamesData3.SerialiseL(data);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesInitialisePdpContext::KLtsyDispatchPacketServicesInitialisePdpContextApiId, data);
+
+	TDesC* contextNamePtr = &primaryContext;
+	TDesC* channelIdPtr = const_cast<TDesC*>(&KDefaultChannelId);
+	TMockLtsyData2<TDesC*, TDesC*> expLtsyContextNameAndChannelIdData(contextNamePtr, channelIdPtr);
+	data.Close();
+	expLtsyContextNameAndChannelIdData.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesInitialisePdpContext::KLtsyDispatchPacketServicesInitialisePdpContextApiId, KErrNone, data);
+
+	CleanupStack::PopAndDestroy(1, &data); // data
+	}
+
+void CCTsyPacketServicesFUNegative::DriverInitialiseContextL(const TInfoName& aPrimaryContextId, const TInfoName& aSecondaryContextId)
+	{
+	RBuf8 data;
+	CleanupClosePushL(data);
+
+	TInfoName& primaryContext = const_cast<TInfoName&>(aPrimaryContextId);
+	TInfoName& secondaryContext = const_cast<TInfoName&>(aSecondaryContextId);
+
+	//-------------------------------------------------------------------------
+	// Successful completion request of
+	// RPacketContext::InitialiseContext
+ 	//-------------------------------------------------------------------------
+
+	TMockLtsyData2<TInfoName, TInfoName> expLtsyContextNamesData(primaryContext, secondaryContext);
+	data.Close();
+	expLtsyContextNamesData.SerialiseL(data);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesInitialisePdpContext::KLtsyDispatchPacketServicesInitialisePdpContextApiId, data);
+
+
+	// Check if a secondary context is being initialise and if it is then compelte initialisation for secondary context.
+	TDesC* contextNamePtr = (aSecondaryContextId == KDefaultContextName) ? &primaryContext : &secondaryContext;
+	
+	TDesC* channelIdPtr = const_cast<TDesC*>(&KSecondaryContextChannelId);
+	TMockLtsyData2<TDesC*, TDesC*> expLtsyContextNameAndPortData2(contextNamePtr, channelIdPtr);
+	data.Close();
+	expLtsyContextNameAndPortData2.SerialiseL(data);	
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesInitialisePdpContext::KLtsyDispatchPacketServicesInitialisePdpContextApiId, KErrNone, data);
+
+	CleanupStack::PopAndDestroy(&data); // data
+	}
+
+void CCTsyPacketServicesFUNegative::DriverSetConfigContextL(TInfoName aContextId,
+		RPacketContext::TGSNAddress aAccessPoint, RPacketContext::TProtocolType aPdpType, 
+		RPacketContext::TProtocolAddress aPdpAddress,
+		RPacketContext::TMiscProtocolBuffer aPcoBuffer)
+	{
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+
+	TMockLtsyData5<TInfoName, RPacketContext::TGSNAddress, RPacketContext::TProtocolType, RPacketContext::TProtocolAddress, RPacketContext::TMiscProtocolBuffer>
+					packetSetConfigData(aContextId, aAccessPoint, aPdpType, aPdpAddress, aPcoBuffer);
+	data.Close();
+	packetSetConfigData.SerialiseL(data);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesSetPdpContextConfig::KLtsyDispatchPacketServicesSetPdpContextConfigApiId, data, KErrNone);
+
+	// Indicate that the context name is due to comeback from the SetConfig callback
+	TInfoName callbackContextId = aContextId;
+	TMockLtsyData1<TInfoName> callbackContextIdData(callbackContextId);
+	data.Close();
+	callbackContextIdData.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesSetPdpContextConfig::KLtsyDispatchPacketServicesSetPdpContextConfigApiId, KErrNone, data);
+
+	CleanupStack::PopAndDestroy(1, &data); // data
+	}
+
+void CCTsyPacketServicesFUNegative::DriverModifyActiveContextL(TInt8 aRejectionCode, TInt aError)
+	{
+	RBuf8 data;
+	CleanupClosePushL(data);
+
+	TInfoName modifyActiveContextName;
+	modifyActiveContextName.Copy(KFirstAllocatedContextName);
+	TMockLtsyData1<TInfoName>
+		modifyActiveContextNameData(modifyActiveContextName);
+	data.Close();
+	modifyActiveContextNameData.SerialiseL(data);
+
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesModifyActivePdpContext::KLtsyDispatchPacketServicesModifyActivePdpContextApiId, data, KErrNone);
+
+	TMockLtsyData2<TInfoName, TInt8 >
+		completeModifyActiveContextData(modifyActiveContextName, aRejectionCode); // Context name and rejection code
+	data.Close();
+	completeModifyActiveContextData.SerialiseL(data);
+
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesModifyActivePdpContext::KLtsyDispatchPacketServicesModifyActivePdpContextApiId, aError, data);
+
+	CleanupStack::PopAndDestroy(1, &data); // data
+	}
+
+void CCTsyPacketServicesFUNegative::OpenInitialiseMbmsContextLC(RPacketService& aPacketService, RPacketMbmsContext& aPacketContext, TDes& aContextName, const TDesC& aChannelId, TInt aCompError)
+	{
+	aPacketContext.OpenNewContext(aPacketService, aContextName);
+	CleanupClosePushL(aPacketContext);
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+	
+	TDesC* contextNamePtr = &aContextName;
+	TMockLtsyData1<TDesC*> initMbmdContextExpData(contextNamePtr);
+	initMbmdContextExpData.SerialiseL(data);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesInitialiseMbmsContext::KLtsyDispatchPacketServicesInitialiseMbmsContextApiId, data);
+	data.Close();
+	
+	
+	TDesC* channelPtr = const_cast<TDesC*>(&aChannelId);
+	TMockLtsyData2<TDesC*,TDesC*> initMbmdContextCompData(contextNamePtr, channelPtr);
+	initMbmdContextCompData.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesInitialiseMbmsContext::KLtsyDispatchPacketServicesInitialiseMbmsContextApiId, aCompError, data);
+	data.Close();
+	
+	//initialisation of the context
+	RPacketContext::TDataChannelV2 dataChannel;
+	RPacketContext::TDataChannelV2Pckg dataChannelPckg(dataChannel);
+
+	TRequestStatus requestStatus;
+    aPacketContext.InitialiseContext(requestStatus, dataChannelPckg);
+	User::WaitForRequest(requestStatus);
+	ASSERT_EQUALS(requestStatus.Int(), aCompError);
+	ASSERT_TRUE((aCompError != KErrNone) || (dataChannel.iChannelId == aChannelId));
+	
+	AssertMockLtsyStatusL();
+	
+	CleanupStack::PopAndDestroy(&data);
+	}
+
+CTestSuite* CCTsyPacketServicesFUNegative::CreateSuiteL(const TDesC& aName)
+	{
+	SUB_SUITE;
+  	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0001L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0002L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0003L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0004L);	
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0005L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0006L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0007L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0008L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0009L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0010L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0011L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0012L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0013L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0014L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0015L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0016L);
+
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0018L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0019L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0020L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0021L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0022L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0023L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0024L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyPacketServicesFUNegative, TestUnit0025L);
+	END_SUITE;
+	}
+
+//
+// 'Negative' unit tests
+//
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketAttach is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketService::Attach()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0001L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesPacketAttach::KLtsyDispatchPacketServicesPacketAttachApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+	
+	TRequestStatus requestStatus;
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService, RPacketService::EStatusUnattached);
+
+    packetService.Attach(requestStatus);
+	User::WaitForRequest(requestStatus);
+
+	ASSERT_EQUALS(KErrGsmMMNetworkFailure, requestStatus.Int());
+	
+	packetService.Close();
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(2, this); // packetService, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketGetAttachMode is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketService::GetAttachMode()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0002L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesGetPacketAttachMode::KLtsyDispatchPacketServicesGetPacketAttachModeApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+	
+	TRequestStatus requestStatus;
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService, RPacketService::EStatusUnattached);
+	
+	RPacketService::TAttachMode completedAttachMode;
+	
+	packetService.GetAttachMode(requestStatus, completedAttachMode);
+	User::WaitForRequest(requestStatus);
+	ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+	packetService.Close();
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(2, this); // packetService, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0003
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketGetNtwkRegStatus is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketService::GetNtwkRegStatus()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0003L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesGetPacketNetworkRegistrationStatus::KLtsyDispatchPacketServicesGetPacketNetworkRegistrationStatusApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+	
+	TRequestStatus requestStatus;
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService, RPacketService::EStatusUnattached);
+	
+	RPacketService::TRegistrationStatus registrationStatus;
+
+	packetService.GetNtwkRegStatus(requestStatus, registrationStatus);
+	User::WaitForRequest(requestStatus);
+	ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+	packetService.Close();
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(2, this); // packetService, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0004
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketDetach is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketService::Detach()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0004L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesPacketDetach::KLtsyDispatchPacketServicesPacketDetachApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService, RPacketService::EStatusUnattached);
+	
+    TRequestStatus mockLtsyStatus;
+    iMockLTSY.NotifyTerminated(mockLtsyStatus);
+    iMockLTSY.CompleteL(MLtsyDispatchPacketServicesPacketAttach::KLtsyDispatchPacketServicesPacketAttachApiId, KErrNone);
+    User::WaitForRequest(mockLtsyStatus);
+    AssertMockLtsyStatusL();
+    
+    TRequestStatus requestStatus;
+    packetService.Detach(requestStatus);
+    User::WaitForRequest(requestStatus);
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrGsmMMNetworkFailure, requestStatus.Int());
+
+	packetService.Close();
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(2, this); // packetService, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0005
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketContextSetConfig is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketContext::SetConfig()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0005L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesSetPdpContextConfig::KLtsyDispatchPacketServicesSetPdpContextConfigApiId, EFalse);
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService,RPacketService::EStatusUnattached);
+
+	// Prepare context configuration fo GPRS
+	RPacketContext::TContextConfigGPRS setConfigGPRS;
+	setConfigGPRS.iAccessPointName.Copy(KPointNameGPRS);
+	setConfigGPRS.iPdpType = RPacketContext::EPdpTypeIPv4;
+	setConfigGPRS.iPdpAddress.Copy(KPdpAddGPRS);
+	setConfigGPRS.iProtocolConfigOption.iDnsAddresses.iPrimaryDns.Copy(KPrimaryDns);
+	setConfigGPRS.iProtocolConfigOption.iDnsAddresses.iSecondaryDns.Copy(KSecondaryDns);
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iProtocol = RPacketContext::EProtocolCHAP;
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iUsername.Copy(KUsername);
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iPassword.Copy(KPassword);
+	setConfigGPRS.iProtocolConfigOption.iId = KRequestID;
+	TPckg<RPacketContext::TContextConfigGPRS> pckgConfigGPRS(setConfigGPRS);
+
+	// Create the PCO buffer
+	RPacketContext::TMiscProtocolBuffer gprsMiscBuffer;
+	gprsMiscBuffer.Zero();
+
+	// Generate a PCO buffer
+	PCOGeneratorL(setConfigGPRS.iProtocolConfigOption, gprsMiscBuffer);
+	setConfigGPRS.iProtocolConfigOption.iId = KRequestID;
+
+	//
+
+	DriverInitialiseContextL();
+
+	// GPRS Configuration
+	TInfoName contextName;
+	contextName.Copy(KFirstAllocatedContextName);
+
+	DriverDeleteContextL(contextName);
+
+	//
+
+	// client side test
+	RPacketContext packetContext;
+
+	// Open a new context
+	TInt err = packetContext.OpenNewContext(packetService, contextName);
+	CleanupClosePushL(packetContext);
+	ASSERT_EQUALS(KErrNone, err);
+
+	RPacketContext::TDataChannelV2 dataChannel;
+	RPacketContext::TDataChannelV2Pckg dataChannelPk(dataChannel);
+	TRequestStatus initialiseContextStatus;
+
+	packetContext.InitialiseContext(initialiseContextStatus,dataChannelPk);
+	User::WaitForRequest(initialiseContextStatus);
+
+	ASSERT_EQUALS(KErrNone, initialiseContextStatus.Int());
+	ASSERT_TRUE(dataChannel.iChannelId == KDefaultChannelId);
+
+	TRequestStatus setConfigStatus;
+
+	packetContext.SetConfig(setConfigStatus, pckgConfigGPRS);
+	User::WaitForRequest(setConfigStatus);
+	ASSERT_EQUALS(KErrNotSupported, setConfigStatus.Int());
+
+	packetContext.Close();
+	packetService.Close();
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(3, this); // packetContext, packetService, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0006
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketContextModifyActiveContext is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketContext::ModifyActiveContext()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0006L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesModifyActivePdpContext::KLtsyDispatchPacketServicesModifyActivePdpContextApiId, EFalse);
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+	
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService,RPacketService::EStatusUnattached);
+
+	// Prepare context configuration fo GPRS
+	RPacketContext::TContextConfigGPRS setConfigGPRS;
+	setConfigGPRS.iAccessPointName.Copy(KPointNameGPRS);
+	setConfigGPRS.iPdpType = RPacketContext::EPdpTypeIPv4;
+	setConfigGPRS.iPdpAddress.Copy(KPdpAddGPRS);
+	setConfigGPRS.iProtocolConfigOption.iDnsAddresses.iPrimaryDns.Copy(KPrimaryDns);
+	setConfigGPRS.iProtocolConfigOption.iDnsAddresses.iSecondaryDns.Copy(KSecondaryDns);
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iProtocol = RPacketContext::EProtocolCHAP;
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iUsername.Copy(KUsername);
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iPassword.Copy(KPassword);
+	setConfigGPRS.iProtocolConfigOption.iId = KRequestID;
+	TPckg<RPacketContext::TContextConfigGPRS> pckgConfigGPRS(setConfigGPRS);
+
+	// Create the PCO buffer
+	RPacketContext::TMiscProtocolBuffer gprsMiscBuffer;
+	gprsMiscBuffer.Zero();
+
+	// Generate a PCO buffer
+	PCOGeneratorL(setConfigGPRS.iProtocolConfigOption, gprsMiscBuffer);
+	setConfigGPRS.iProtocolConfigOption.iId = KRequestID;
+
+	//
+
+	DriverInitialiseContextL();
+
+	// GPRS Configuration
+	TInfoName contextName;
+	contextName.Copy(KFirstAllocatedContextName);
+
+	DriverSetConfigContextL(contextName, setConfigGPRS.iAccessPointName, setConfigGPRS.iPdpType,
+			setConfigGPRS.iPdpAddress, gprsMiscBuffer);
+
+	RPacketQoS::TQoSGPRSRequested qosExpectedRequestedGPRSProfile;
+
+	qosExpectedRequestedGPRSProfile.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosExpectedRequestedGPRSProfile.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosExpectedRequestedGPRSProfile.iReqDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosExpectedRequestedGPRSProfile.iMinDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosExpectedRequestedGPRSProfile.iReqReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+	qosExpectedRequestedGPRSProfile.iMinReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+	qosExpectedRequestedGPRSProfile.iReqPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosExpectedRequestedGPRSProfile.iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosExpectedRequestedGPRSProfile.iReqMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+	qosExpectedRequestedGPRSProfile.iMinMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+	TMockLtsyData2<TInfoName, RPacketQoS::TQoSGPRSRequested> packetSetConfigGPRSData(contextName,
+			qosExpectedRequestedGPRSProfile);
+	data.Close();
+	packetSetConfigGPRSData.SerialiseL(data);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesSetPdpContextQosGprs::KLtsyDispatchPacketServicesSetPdpContextQosGprsApiId, data, KErrNone);
+
+	TMockLtsyData1<TInfoName> callbackSetPdpGPRSContextNameData(contextName);
+	data.Close();
+	callbackSetPdpGPRSContextNameData.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesSetPdpContextQosGprs::KLtsyDispatchPacketServicesSetPdpContextQosGprsApiId, KErrNone, data);
+
+	//Activate
+	TMockLtsyData1<TInfoName> expectedActivateContextNameData(contextName);
+	data.Close();
+	expectedActivateContextNameData.SerialiseL(data);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesActivatePdpContext::KLtsyDispatchPacketServicesActivatePdpContextApiId, data, KErrNone);
+
+	TMockLtsyData3<TInfoName, RPacketContext::TGSNAddress, RPacketContext::TProtocolType>
+	completedActivateContextNameData(contextName, setConfigGPRS.iAccessPointName, setConfigGPRS.iPdpType);
+	data.Close();
+	completedActivateContextNameData.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesActivatePdpContext::KLtsyDispatchPacketServicesActivatePdpContextApiId, KErrNone, data);
+
+	RPacketQoS::TQoSGPRSNegotiated completedProfile;
+	TMockLtsyData2<TInfoName, RPacketQoS::TQoSGPRSNegotiated>
+				expLtsyQosProfileChangedInd(contextName, completedProfile);
+	data.Close();
+	expLtsyQosProfileChangedInd.SerialiseL(data);
+	iMockLTSY.CompleteL(KMockLtsyDispatchPacketServicesNotifyQosProfileChangedIndId, KErrNone, data);
+
+	// Prepare context configuration for GPRS
+	RPacketContext::TContextConfigGPRS setConfigGPRSActive;
+	setConfigGPRSActive.iAccessPointName.Copy(KPointNameGPRS);
+	setConfigGPRSActive.iPdpType = RPacketContext::EPdpTypeIPv6;
+	setConfigGPRSActive.iPdpAddress.Copy(KPdpAddGPRS);
+	setConfigGPRSActive.iProtocolConfigOption.iDnsAddresses.iPrimaryDns.Copy(KPrimaryDns);
+	setConfigGPRSActive.iProtocolConfigOption.iDnsAddresses.iSecondaryDns.Copy(KSecondaryDns);
+	setConfigGPRSActive.iProtocolConfigOption.iAuthInfo.iProtocol = RPacketContext::EProtocolCHAP;
+	setConfigGPRSActive.iProtocolConfigOption.iAuthInfo.iUsername.Copy(KUsername);
+	setConfigGPRSActive.iProtocolConfigOption.iAuthInfo.iPassword.Copy(KPassword);
+
+	TMockLtsyData5<TInfoName, RPacketContext::TGSNAddress, RPacketContext::TProtocolAddress, TUint, RPacketContext::TMiscProtocolBuffer>
+					expLtsyProfileChangedInd(contextName, setConfigGPRS.iAccessPointName,
+							setConfigGPRS.iPdpAddress, setConfigGPRS.iPdpCompression, gprsMiscBuffer);
+	data.Close();
+	expLtsyProfileChangedInd.SerialiseL(data);
+
+	iMockLTSY.CompleteL(KMockLtsyDispatchPacketServicesNotifyPdpContextConfigChangedIndId, KErrNone, data);
+
+	DriverSetConfigContextL(contextName, setConfigGPRSActive.iAccessPointName, setConfigGPRSActive.iPdpType,
+			setConfigGPRSActive.iPdpAddress, gprsMiscBuffer);
+
+	TMockLtsyData1<TInfoName> deactivateContextNameData(contextName);
+	data.Close();
+	deactivateContextNameData.SerialiseL(data);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesDeactivatePdpContext::KLtsyDispatchPacketServicesDeactivatePdpContextApiId, data, KErrNone);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesDeactivatePdpContext::KLtsyDispatchPacketServicesDeactivatePdpContextApiId, KErrNone, data);
+
+	DriverDeleteContextL(contextName);
+
+	//
+
+	// client side test
+	RPacketContext packetContext;
+
+	// Open a new context
+	TInt err = packetContext.OpenNewContext(packetService, contextName);
+	CleanupClosePushL(packetContext);
+	ASSERT_EQUALS(KErrNone, err);
+
+	RPacketContext::TDataChannelV2 dataChannel;
+	RPacketContext::TDataChannelV2Pckg dataChannelPk(dataChannel);
+	TRequestStatus initialiseContextStatus;
+
+	packetContext.InitialiseContext(initialiseContextStatus,dataChannelPk);
+	User::WaitForRequest(initialiseContextStatus);
+
+	ASSERT_EQUALS(KErrNone, initialiseContextStatus.Int());
+	ASSERT_TRUE(dataChannel.iChannelId == KDefaultChannelId);
+
+	TRequestStatus setConfigStatus;
+	packetContext.SetConfig(setConfigStatus, pckgConfigGPRS);
+
+	User::WaitForRequest(setConfigStatus);
+	ASSERT_EQUALS(KErrNone, setConfigStatus.Int());
+
+	TName qosName;
+	RPacketQoS packetQoS;
+	packetQoS.OpenNewQoS(packetContext, qosName);
+	CleanupClosePushL(packetQoS);
+
+	//
+    // SetProfileParameters for GPRS Configurations
+    //
+
+	RPacketQoS::TQoSGPRSRequested qosGPRSRequestedProfile;
+	qosGPRSRequestedProfile.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosGPRSRequestedProfile.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosGPRSRequestedProfile.iReqDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosGPRSRequestedProfile.iMinDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosGPRSRequestedProfile.iReqReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+	qosGPRSRequestedProfile.iMinReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+	qosGPRSRequestedProfile.iReqPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosGPRSRequestedProfile.iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosGPRSRequestedProfile.iReqMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+	qosGPRSRequestedProfile.iMinMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+	TPckg< RPacketQoS::TQoSGPRSRequested > profilePckgGPRS(qosGPRSRequestedProfile);
+
+	TRequestStatus notifyProfileChangeStatus;
+	RPacketQoS::TQoSGPRSNegotiated profile;
+	TPckg<RPacketQoS::TQoSGPRSNegotiated> qosGPRSNegotiatedProfilePk(profile);
+	packetQoS.NotifyProfileChanged(notifyProfileChangeStatus, qosGPRSNegotiatedProfilePk);
+
+	TRequestStatus requestStatusGPRS;
+	packetQoS.SetProfileParameters(requestStatusGPRS, profilePckgGPRS);
+	User::WaitForRequest(requestStatusGPRS);
+	ASSERT_EQUALS(KErrNone, requestStatusGPRS.Int());
+
+	//
+
+	RPacketContext::TContextConfigGPRS setConfigGPRSActiveNotifyConfigChanged;
+	TPckg<RPacketContext::TContextConfigGPRS> pckgConfigGPRSNotifyConfigChanged(setConfigGPRSActiveNotifyConfigChanged);
+
+	TRequestStatus contextConfigStatus;
+	packetContext.NotifyConfigChanged(contextConfigStatus, pckgConfigGPRSNotifyConfigChanged);
+
+	TRequestStatus contextActivatingRequestStatus;
+	RPacketContext::TContextStatus contextStatus;
+	packetContext.NotifyStatusChange(contextActivatingRequestStatus, contextStatus);
+
+	TRequestStatus activateStatus;
+	packetContext.Activate(activateStatus);
+	User::WaitForRequest(activateStatus);
+	User::WaitForRequest(contextActivatingRequestStatus);
+	ASSERT_EQUALS(KErrNone, activateStatus.Int());
+	ASSERT_EQUALS(RPacketContext::EStatusActivating, contextStatus);
+
+	// Complete NotifyProfileChanged
+	User::WaitForRequest(notifyProfileChangeStatus);
+	ASSERT_EQUALS(KErrNone, notifyProfileChangeStatus.Int());
+
+	// Status change from RPacketContext::EStatusActivating to RPacketContext::EStatusActive
+	TRequestStatus contextActivateRequestStatus;
+	RPacketContext::TContextStatus contextActiveStatus;
+	packetContext.NotifyStatusChange(contextActivateRequestStatus, contextActiveStatus);
+
+	User::WaitForRequest(contextActivateRequestStatus);
+	ASSERT_EQUALS(KErrNone, contextActivateRequestStatus.Int());
+	ASSERT_EQUALS(RPacketContext::EStatusActive, contextActiveStatus);
+
+	// Prepare context configuration for GPRS
+	setConfigGPRS.iAccessPointName.Copy(KPointNameGPRS);
+	setConfigGPRS.iPdpType = RPacketContext::EPdpTypeIPv6;
+	setConfigGPRS.iPdpAddress.Copy(KPdpAddGPRS);
+	TPckg<RPacketContext::TContextConfigGPRS> pckgConfigGPRS2(setConfigGPRS);
+
+	packetContext.SetConfig(setConfigStatus, pckgConfigGPRS2);
+	User::WaitForRequest(setConfigStatus);
+	ASSERT_EQUALS(KErrNone, setConfigStatus.Int());
+
+	/* Request modification, modification should be successful */
+	TRequestStatus modifyActiveContextStatus;
+	packetContext.ModifyActiveContext(modifyActiveContextStatus);
+	User::WaitForRequest(modifyActiveContextStatus);
+	ASSERT_EQUALS(KErrNotSupported, modifyActiveContextStatus.Int());
+
+	TRequestStatus deactivateContextStatus;
+	packetContext.Deactivate(deactivateContextStatus);
+	User::WaitForRequest(deactivateContextStatus);
+	ASSERT_EQUALS(KErrNone, deactivateContextStatus.Int())
+
+	packetQoS.Close();
+	packetContext.Close();
+	packetService.Close();
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(5, this); // data, packetQoS, packetService, packetContext, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0007
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketContextInitialiseContext is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketContext::InitialiseContext()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0007L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesInitialisePdpContext::KLtsyDispatchPacketServicesInitialisePdpContextApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+	
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService, RPacketService::EStatusUnattached);
+
+	TInfoName contextName;
+	contextName.Copy(KFirstAllocatedContextName);
+	
+	DriverDeleteContextL(contextName);
+	
+	//Open a New Packet Context
+	RPacketContext packetContext;
+	CleanupClosePushL(packetContext);
+
+	TInt err = packetContext.OpenNewContext(packetService,contextName);
+	ASSERT_EQUALS(KErrNone, err);
+
+	TRequestStatus requestStatus;
+	RPacketContext::TDataChannelV2 dataChannel;
+	RPacketContext::TDataChannelV2Pckg dataChannelPk(dataChannel);
+
+	packetContext.InitialiseContext(requestStatus,dataChannelPk);
+	User::WaitForRequest(requestStatus);
+    ASSERT_EQUALS(requestStatus.Int(), KErrNotSupported);
+
+	packetContext.Close();
+	AssertMockLtsyStatusL();
+	config.Reset();	
+	CleanupStack::PopAndDestroy(3, this); // packetService, packetContext, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0008
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketContextDelete is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketContext::Delete()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0008L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+		
+
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService,RPacketService::EStatusUnattached);
+
+	// Prepare context configuration fo GPRS
+	RPacketContext::TContextConfigGPRS setConfigGPRS;
+	setConfigGPRS.iAccessPointName.Copy(KPointNameGPRS);
+	setConfigGPRS.iPdpType = RPacketContext::EPdpTypeIPv4;
+	setConfigGPRS.iPdpAddress.Copy(KPdpAddGPRS);
+	setConfigGPRS.iProtocolConfigOption.iDnsAddresses.iPrimaryDns.Copy(KPrimaryDns);
+	setConfigGPRS.iProtocolConfigOption.iDnsAddresses.iSecondaryDns.Copy(KSecondaryDns);
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iProtocol = RPacketContext::EProtocolCHAP;
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iUsername.Copy(KUsername);
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iPassword.Copy(KPassword);
+	setConfigGPRS.iProtocolConfigOption.iId = KRequestID;
+	TPckg<RPacketContext::TContextConfigGPRS> pckgConfigGPRS(setConfigGPRS);
+
+	// Create the PCO buffer
+	RPacketContext::TMiscProtocolBuffer gprsMiscBuffer;
+	gprsMiscBuffer.Zero();
+
+	// Generate a PCO buffer
+	PCOGeneratorL(setConfigGPRS.iProtocolConfigOption, gprsMiscBuffer);
+	setConfigGPRS.iProtocolConfigOption.iId = KRequestID;
+
+	//
+
+	DriverInitialiseContextL();
+
+	// GPRS Configuration
+	TInfoName contextName;
+	contextName.Copy(KFirstAllocatedContextName);
+
+	//
+
+	// client side test
+	RPacketContext packetContext;
+
+	// Open a new context
+	TInt err = packetContext.OpenNewContext(packetService, contextName);
+	CleanupClosePushL(packetContext);
+	ASSERT_EQUALS(KErrNone, err);
+
+	RPacketContext::TDataChannelV2 dataChannel;
+	RPacketContext::TDataChannelV2Pckg dataChannelPk(dataChannel);
+	TRequestStatus initialiseContextStatus;
+
+	packetContext.InitialiseContext(initialiseContextStatus,dataChannelPk);
+	User::WaitForRequest(initialiseContextStatus);
+
+	ASSERT_EQUALS(KErrNone, initialiseContextStatus.Int());
+	ASSERT_TRUE(dataChannel.iChannelId == KDefaultChannelId);
+
+	TRequestStatus setConfigStatus;
+
+	packetContext.Delete(setConfigStatus);
+	User::WaitForRequest(setConfigStatus);
+	ASSERT_EQUALS(KErrNotSupported, setConfigStatus.Int());
+
+	// Close is not called since it invokes EPacketContextDelete
+	//	packetContext.Close();
+	//	packetService.Close();
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(3, this); // packetService, packetContext, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0009
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketSetAttachMode is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketService::SetAttachMode()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0009L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesSetPacketAttachMode::KLtsyDispatchPacketServicesSetPacketAttachModeApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+	
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService, RPacketService::EStatusUnattached);
+	
+	TRequestStatus requestStatus;
+	RPacketService::TAttachMode attachMode = RPacketService::EAttachWhenPossible;
+    
+	packetService.SetAttachMode(requestStatus, attachMode);	
+	User::WaitForRequest(requestStatus);
+	ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+    AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(2, this); // packetService, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0010
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketNotifyStatusChange - *Notify* NOT NEEDED
+@SYMTestPriority High
+@SYMTestActions Invokes 
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0010L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesNotifyPacketStatusChange::KLtsyDispatchPacketServicesNotifyPacketStatusChangeApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(this); // , this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0011
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketSetDefaultContextParams is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketService::SetDefaultContextParams()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0011L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesSetDefaultPdpContextGprsParams::KLtsyDispatchPacketServicesSetDefaultPdpContextGprsParamsApiId, EFalse);
+	// or MLtsyDispatchPacketServicesSetDefaultPdpContextR99R4Params::KLtsyDispatchPacketServicesSetDefaultPdpContextR99R4ParamsApiId
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService,RPacketService::EStatusUnattached);
+
+	RPacketContext::TContextConfigGPRS defaultGprsContextConfig;
+	defaultGprsContextConfig.iAccessPointName = KDefaultAccessPoint;
+	defaultGprsContextConfig.iPdpType = KDefaultPdpType;
+	TPckg<RPacketContext::TContextConfigGPRS> defaultContextGprsConfigPckg(defaultGprsContextConfig);
+	
+	TRequestStatus requestStatus;
+	packetService.SetDefaultContextParams(requestStatus, defaultContextGprsConfigPckg);
+	User::WaitForRequest(requestStatus);
+    ASSERT_EQUALS(requestStatus.Int(), KErrNotSupported);
+
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(2, this); // packetService, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0012
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketContextActivate is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketContext::Activate()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0012L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesActivatePdpContext::KLtsyDispatchPacketServicesActivatePdpContextApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+	
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService,RPacketService::EStatusUnattached);
+
+	// Prepare context configuration fo GPRS
+	RPacketContext::TContextConfigGPRS setConfigGPRS;
+	setConfigGPRS.iAccessPointName.Copy(KPointNameGPRS);
+	setConfigGPRS.iPdpType = RPacketContext::EPdpTypeIPv4;
+	setConfigGPRS.iPdpAddress.Copy(KPdpAddGPRS);
+	setConfigGPRS.iProtocolConfigOption.iDnsAddresses.iPrimaryDns.Copy(KPrimaryDns);
+	setConfigGPRS.iProtocolConfigOption.iDnsAddresses.iSecondaryDns.Copy(KSecondaryDns);
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iProtocol = RPacketContext::EProtocolCHAP;
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iUsername.Copy(KUsername);
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iPassword.Copy(KPassword);
+	setConfigGPRS.iProtocolConfigOption.iId = KRequestID;
+	TPckg<RPacketContext::TContextConfigGPRS> pckgConfigGPRS(setConfigGPRS);
+
+	// Create the PCO buffer
+	RPacketContext::TMiscProtocolBuffer gprsMiscBuffer;
+	gprsMiscBuffer.Zero();
+
+	// Generate a PCO buffer
+	PCOGeneratorL(setConfigGPRS.iProtocolConfigOption, gprsMiscBuffer);
+	setConfigGPRS.iProtocolConfigOption.iId = KRequestID;
+
+	//
+
+	DriverInitialiseContextL();
+
+	// GPRS Configuration
+	TInfoName contextName;
+	contextName.Copy(KFirstAllocatedContextName);
+
+	DriverSetConfigContextL(contextName, setConfigGPRS.iAccessPointName, setConfigGPRS.iPdpType,
+			setConfigGPRS.iPdpAddress, gprsMiscBuffer);
+
+	RPacketQoS::TQoSGPRSRequested qosExpectedRequestedGPRSProfile;
+
+	qosExpectedRequestedGPRSProfile.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosExpectedRequestedGPRSProfile.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosExpectedRequestedGPRSProfile.iReqDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosExpectedRequestedGPRSProfile.iMinDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosExpectedRequestedGPRSProfile.iReqReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+	qosExpectedRequestedGPRSProfile.iMinReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+	qosExpectedRequestedGPRSProfile.iReqPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosExpectedRequestedGPRSProfile.iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosExpectedRequestedGPRSProfile.iReqMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+	qosExpectedRequestedGPRSProfile.iMinMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+	TMockLtsyData2<TInfoName, RPacketQoS::TQoSGPRSRequested> packetSetConfigGPRSData(contextName,
+			qosExpectedRequestedGPRSProfile);
+	data.Close();
+	packetSetConfigGPRSData.SerialiseL(data);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesSetPdpContextQosGprs::KLtsyDispatchPacketServicesSetPdpContextQosGprsApiId, data, KErrNone);
+
+	TMockLtsyData1<TInfoName> callbackSetPdpGPRSContextNameData(contextName);
+	data.Close();
+	callbackSetPdpGPRSContextNameData.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesSetPdpContextQosGprs::KLtsyDispatchPacketServicesSetPdpContextQosGprsApiId, KErrNone, data);
+
+	DriverDeleteContextL(contextName);
+
+	//
+
+	// client side test
+	RPacketContext packetContext;
+
+	// Open a new context
+	TInt err = packetContext.OpenNewContext(packetService, contextName);
+	CleanupClosePushL(packetContext);
+	ASSERT_EQUALS(KErrNone, err);
+
+	RPacketContext::TDataChannelV2 dataChannel;
+	RPacketContext::TDataChannelV2Pckg dataChannelPk(dataChannel);
+	TRequestStatus initialiseContextStatus;
+
+	packetContext.InitialiseContext(initialiseContextStatus,dataChannelPk);
+	User::WaitForRequest(initialiseContextStatus);
+
+	ASSERT_EQUALS(KErrNone, initialiseContextStatus.Int());
+	ASSERT_TRUE(dataChannel.iChannelId == KDefaultChannelId);
+
+	TRequestStatus setConfigStatus;
+	packetContext.SetConfig(setConfigStatus, pckgConfigGPRS);
+
+	User::WaitForRequest(setConfigStatus);
+	ASSERT_EQUALS(KErrNone, setConfigStatus.Int());
+
+	TName qosName;
+	RPacketQoS packetQoS;
+	packetQoS.OpenNewQoS(packetContext, qosName);
+	CleanupClosePushL(packetQoS);
+
+	//
+    // SetProfileParameters for GPRS Configurations
+    //
+
+	RPacketQoS::TQoSGPRSRequested qosGPRSRequestedProfile;
+	qosGPRSRequestedProfile.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosGPRSRequestedProfile.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosGPRSRequestedProfile.iReqDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosGPRSRequestedProfile.iMinDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosGPRSRequestedProfile.iReqReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+	qosGPRSRequestedProfile.iMinReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+	qosGPRSRequestedProfile.iReqPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosGPRSRequestedProfile.iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosGPRSRequestedProfile.iReqMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+	qosGPRSRequestedProfile.iMinMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+	TPckg< RPacketQoS::TQoSGPRSRequested > profilePckgGPRS(qosGPRSRequestedProfile);
+
+	TRequestStatus requestStatusGPRS;
+	packetQoS.SetProfileParameters(requestStatusGPRS, profilePckgGPRS);
+	User::WaitForRequest(requestStatusGPRS);
+	ASSERT_EQUALS(KErrNone, requestStatusGPRS.Int());
+
+	TRequestStatus requestStatus;
+	packetContext.Activate(requestStatus);
+	User::WaitForRequest(requestStatus);
+	ASSERT_EQUALS(requestStatus.Int(), KErrNotSupported);
+
+	packetQoS.Close();
+	packetContext.Close();
+	packetService.Close();
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(5, this); // data, packetQoS, packetService, packetContext, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0013
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketQoSSetProfileParams is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketQoS::SetProfileParameters()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0013L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesSetPdpContextQosGprs::KLtsyDispatchPacketServicesSetPdpContextQosGprsApiId, EFalse);
+//	or	MLtsyDispatchPacketServicesSetPdpContextQosR99R4::KLtsyDispatchPacketServicesSetPdpContextQosR99R4ApiId
+//	or	MLtsyDispatchPacketServicesSetPdpContextQosR5::KLtsyDispatchPacketServicesSetPdpContextQosR5ApiId
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService,RPacketService::EStatusUnattached);
+
+	// Prepare context configuration fo GPRS
+	RPacketContext::TContextConfigGPRS setConfigGPRS;
+	setConfigGPRS.iAccessPointName.Copy(KPointNameGPRS);
+	setConfigGPRS.iPdpType = RPacketContext::EPdpTypeIPv4;
+	setConfigGPRS.iPdpAddress.Copy(KPdpAddGPRS);
+	setConfigGPRS.iProtocolConfigOption.iDnsAddresses.iPrimaryDns.Copy(KPrimaryDns);
+	setConfigGPRS.iProtocolConfigOption.iDnsAddresses.iSecondaryDns.Copy(KSecondaryDns);
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iProtocol = RPacketContext::EProtocolCHAP;
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iUsername.Copy(KUsername);
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iPassword.Copy(KPassword);
+	setConfigGPRS.iProtocolConfigOption.iId = KRequestID;
+	TPckg<RPacketContext::TContextConfigGPRS> pckgConfigGPRS(setConfigGPRS);
+
+	// Create the PCO buffer
+	RPacketContext::TMiscProtocolBuffer gprsMiscBuffer;
+	gprsMiscBuffer.Zero();
+
+	// Generate a PCO buffer
+	PCOGeneratorL(setConfigGPRS.iProtocolConfigOption, gprsMiscBuffer);
+	setConfigGPRS.iProtocolConfigOption.iId = KRequestID;
+
+	//
+
+	DriverInitialiseContextL();
+
+	// GPRS Configuration
+	TInfoName contextName;
+	contextName.Copy(KFirstAllocatedContextName);
+
+	DriverSetConfigContextL(contextName, setConfigGPRS.iAccessPointName, setConfigGPRS.iPdpType,
+			setConfigGPRS.iPdpAddress, gprsMiscBuffer);
+
+	RPacketQoS::TQoSGPRSRequested qosExpectedRequestedGPRSProfile;
+
+	qosExpectedRequestedGPRSProfile.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosExpectedRequestedGPRSProfile.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosExpectedRequestedGPRSProfile.iReqDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosExpectedRequestedGPRSProfile.iMinDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosExpectedRequestedGPRSProfile.iReqReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+	qosExpectedRequestedGPRSProfile.iMinReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+	qosExpectedRequestedGPRSProfile.iReqPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosExpectedRequestedGPRSProfile.iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosExpectedRequestedGPRSProfile.iReqMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+	qosExpectedRequestedGPRSProfile.iMinMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+	TMockLtsyData2<TInfoName, RPacketQoS::TQoSGPRSRequested> packetSetConfigGPRSData(contextName,
+			qosExpectedRequestedGPRSProfile);
+	data.Close();
+	packetSetConfigGPRSData.SerialiseL(data);
+//	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesSetPdpContextQosGprs::KLtsyDispatchPacketServicesSetPdpContextQosGprsApiId, data, KErrNone);
+
+	TMockLtsyData1<TInfoName> callbackSetPdpGPRSContextNameData(contextName);
+	data.Close();
+	callbackSetPdpGPRSContextNameData.SerialiseL(data);
+//	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesSetPdpContextQosGprs::KLtsyDispatchPacketServicesSetPdpContextQosGprsApiId, KErrNone, data);
+
+	DriverDeleteContextL(contextName);
+
+	//
+
+	// client side test
+	RPacketContext packetContext;
+
+	// Open a new context
+	TInt err = packetContext.OpenNewContext(packetService, contextName);
+	CleanupClosePushL(packetContext);
+	ASSERT_EQUALS(KErrNone, err);
+
+	RPacketContext::TDataChannelV2 dataChannel;
+	RPacketContext::TDataChannelV2Pckg dataChannelPk(dataChannel);
+	TRequestStatus initialiseContextStatus;
+
+	packetContext.InitialiseContext(initialiseContextStatus,dataChannelPk);
+	User::WaitForRequest(initialiseContextStatus);
+
+	ASSERT_EQUALS(KErrNone, initialiseContextStatus.Int());
+	ASSERT_TRUE(dataChannel.iChannelId == KDefaultChannelId);
+
+	TRequestStatus setConfigStatus;
+	packetContext.SetConfig(setConfigStatus, pckgConfigGPRS);
+
+	User::WaitForRequest(setConfigStatus);
+	ASSERT_EQUALS(KErrNone, setConfigStatus.Int());
+
+	TName qosName;
+	RPacketQoS packetQoS;
+	packetQoS.OpenNewQoS(packetContext, qosName);
+	CleanupClosePushL(packetQoS);
+
+	//
+    // SetProfileParameters for GPRS Configurations
+    //
+
+	RPacketQoS::TQoSGPRSRequested qosGPRSRequestedProfile;
+	qosGPRSRequestedProfile.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosGPRSRequestedProfile.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosGPRSRequestedProfile.iReqDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosGPRSRequestedProfile.iMinDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosGPRSRequestedProfile.iReqReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+	qosGPRSRequestedProfile.iMinReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+	qosGPRSRequestedProfile.iReqPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosGPRSRequestedProfile.iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosGPRSRequestedProfile.iReqMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+	qosGPRSRequestedProfile.iMinMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+	TPckg< RPacketQoS::TQoSGPRSRequested > profilePckgGPRS(qosGPRSRequestedProfile);
+
+	// in CMmPacketQoSGsmWcdmaExt::SetProfileParametersL()
+	// resullt of iMmPacketService->MessageManager()->HandleRequestL()
+	// is never checked
+	TRequestStatus requestStatusGPRS;
+	packetQoS.SetProfileParameters(requestStatusGPRS, profilePckgGPRS);
+	User::WaitForRequest(requestStatusGPRS);
+	ASSERT_EQUALS(KErrNotSupported, requestStatusGPRS.Int());
+
+	packetQoS.Close();
+	packetContext.Close();
+	packetService.Close();
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(5, this); // data, packetQoS, packetService, packetContext, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0014
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketRejectActivationRequest is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketService::RejectActivationRequest()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0014L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesRejectNetworkInitiatedContextActivationRequest::KLtsyDispatchPacketServicesRejectNetworkInitiatedContextActivationRequestApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+	
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService, RPacketService::EStatusUnattached);
+
+	TRequestStatus requestStatus;
+	
+	packetService.RejectActivationRequest(requestStatus);
+	User::WaitForRequest(requestStatus);
+	ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+	packetService.Close();
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(2, this); // packetService, data
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0015
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketContextDeactivate is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketContext::Deactivate()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0015L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesDeactivatePdpContext::KLtsyDispatchPacketServicesDeactivatePdpContextApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService,RPacketService::EStatusUnattached);
+
+	// Prepare context configuration fo GPRS
+	RPacketContext::TContextConfigGPRS setConfigGPRS;
+	setConfigGPRS.iAccessPointName.Copy(KPointNameGPRS);
+	setConfigGPRS.iPdpType = RPacketContext::EPdpTypeIPv4;
+	setConfigGPRS.iPdpAddress.Copy(KPdpAddGPRS);
+	setConfigGPRS.iProtocolConfigOption.iDnsAddresses.iPrimaryDns.Copy(KPrimaryDns);
+	setConfigGPRS.iProtocolConfigOption.iDnsAddresses.iSecondaryDns.Copy(KSecondaryDns);
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iProtocol = RPacketContext::EProtocolCHAP;
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iUsername.Copy(KUsername);
+	setConfigGPRS.iProtocolConfigOption.iAuthInfo.iPassword.Copy(KPassword);
+	setConfigGPRS.iProtocolConfigOption.iId = KRequestID;
+	TPckg<RPacketContext::TContextConfigGPRS> pckgConfigGPRS(setConfigGPRS);
+
+	// Create the PCO buffer
+	RPacketContext::TMiscProtocolBuffer gprsMiscBuffer;
+	gprsMiscBuffer.Zero();
+
+	// Generate a PCO buffer
+	PCOGeneratorL(setConfigGPRS.iProtocolConfigOption, gprsMiscBuffer);
+	setConfigGPRS.iProtocolConfigOption.iId = KRequestID;
+
+	//
+
+	DriverInitialiseContextL();
+
+	// GPRS Configuration
+	TInfoName contextName;
+	contextName.Copy(KFirstAllocatedContextName);
+
+	DriverSetConfigContextL(contextName, setConfigGPRS.iAccessPointName, setConfigGPRS.iPdpType,
+			setConfigGPRS.iPdpAddress, gprsMiscBuffer);
+
+	RPacketQoS::TQoSGPRSRequested qosExpectedRequestedGPRSProfile;
+
+	qosExpectedRequestedGPRSProfile.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosExpectedRequestedGPRSProfile.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosExpectedRequestedGPRSProfile.iReqDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosExpectedRequestedGPRSProfile.iMinDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosExpectedRequestedGPRSProfile.iReqReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+	qosExpectedRequestedGPRSProfile.iMinReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+	qosExpectedRequestedGPRSProfile.iReqPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosExpectedRequestedGPRSProfile.iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosExpectedRequestedGPRSProfile.iReqMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+	qosExpectedRequestedGPRSProfile.iMinMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+	TMockLtsyData2<TInfoName, RPacketQoS::TQoSGPRSRequested> packetSetConfigGPRSData(contextName,
+			qosExpectedRequestedGPRSProfile);
+	data.Close();
+	packetSetConfigGPRSData.SerialiseL(data);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesSetPdpContextQosGprs::KLtsyDispatchPacketServicesSetPdpContextQosGprsApiId, data, KErrNone);
+
+	TMockLtsyData1<TInfoName> callbackSetPdpGPRSContextNameData(contextName);
+	data.Close();
+	callbackSetPdpGPRSContextNameData.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesSetPdpContextQosGprs::KLtsyDispatchPacketServicesSetPdpContextQosGprsApiId, KErrNone, data);
+
+	//Activate
+	TMockLtsyData1<TInfoName> expectedActivateContextNameData(contextName);
+	data.Close();
+	expectedActivateContextNameData.SerialiseL(data);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesActivatePdpContext::KLtsyDispatchPacketServicesActivatePdpContextApiId, data, KErrNone);
+
+	TMockLtsyData3<TInfoName, RPacketContext::TGSNAddress, RPacketContext::TProtocolType>
+	completedActivateContextNameData(contextName, setConfigGPRS.iAccessPointName, setConfigGPRS.iPdpType);
+	data.Close();
+	completedActivateContextNameData.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesActivatePdpContext::KLtsyDispatchPacketServicesActivatePdpContextApiId, KErrNone, data);
+
+	RPacketQoS::TQoSGPRSNegotiated completedProfile;
+	TMockLtsyData2<TInfoName, RPacketQoS::TQoSGPRSNegotiated>
+				expLtsyQosProfileChangedInd(contextName, completedProfile);
+	data.Close();
+	expLtsyQosProfileChangedInd.SerialiseL(data);
+	iMockLTSY.CompleteL(KMockLtsyDispatchPacketServicesNotifyQosProfileChangedIndId, KErrNone, data);
+
+	// Prepare context configuration for GPRS
+	RPacketContext::TContextConfigGPRS setConfigGPRSActive;
+	setConfigGPRSActive.iAccessPointName.Copy(KPointNameGPRS);
+	setConfigGPRSActive.iPdpType = RPacketContext::EPdpTypeIPv6;
+	setConfigGPRSActive.iPdpAddress.Copy(KPdpAddGPRS);
+	setConfigGPRSActive.iProtocolConfigOption.iDnsAddresses.iPrimaryDns.Copy(KPrimaryDns);
+	setConfigGPRSActive.iProtocolConfigOption.iDnsAddresses.iSecondaryDns.Copy(KSecondaryDns);
+	setConfigGPRSActive.iProtocolConfigOption.iAuthInfo.iProtocol = RPacketContext::EProtocolCHAP;
+	setConfigGPRSActive.iProtocolConfigOption.iAuthInfo.iUsername.Copy(KUsername);
+	setConfigGPRSActive.iProtocolConfigOption.iAuthInfo.iPassword.Copy(KPassword);
+
+	TMockLtsyData5<TInfoName, RPacketContext::TGSNAddress, RPacketContext::TProtocolAddress, TUint, RPacketContext::TMiscProtocolBuffer>
+					expLtsyProfileChangedInd(contextName, setConfigGPRS.iAccessPointName,
+							setConfigGPRS.iPdpAddress, setConfigGPRS.iPdpCompression, gprsMiscBuffer);
+	data.Close();
+	expLtsyProfileChangedInd.SerialiseL(data);
+
+	iMockLTSY.CompleteL(KMockLtsyDispatchPacketServicesNotifyPdpContextConfigChangedIndId, KErrNone, data);
+
+
+	DriverSetConfigContextL(contextName, setConfigGPRSActive.iAccessPointName, setConfigGPRSActive.iPdpType,
+			setConfigGPRSActive.iPdpAddress, gprsMiscBuffer);
+
+	DriverDeleteContextL(contextName);
+
+	//
+
+	// client side test
+	RPacketContext packetContext;
+
+	// Open a new context
+	TInt err = packetContext.OpenNewContext(packetService, contextName);
+	CleanupClosePushL(packetContext);
+	ASSERT_EQUALS(KErrNone, err);
+
+	RPacketContext::TDataChannelV2 dataChannel;
+	RPacketContext::TDataChannelV2Pckg dataChannelPk(dataChannel);
+	TRequestStatus initialiseContextStatus;
+
+	packetContext.InitialiseContext(initialiseContextStatus,dataChannelPk);
+	User::WaitForRequest(initialiseContextStatus);
+
+	ASSERT_EQUALS(KErrNone, initialiseContextStatus.Int());
+	ASSERT_TRUE(dataChannel.iChannelId == KDefaultChannelId);
+
+	TRequestStatus setConfigStatus;
+	packetContext.SetConfig(setConfigStatus, pckgConfigGPRS);
+
+	User::WaitForRequest(setConfigStatus);
+	ASSERT_EQUALS(KErrNone, setConfigStatus.Int());
+
+	TName qosName;
+	RPacketQoS packetQoS;
+	packetQoS.OpenNewQoS(packetContext, qosName);
+	CleanupClosePushL(packetQoS);
+
+	//
+    // SetProfileParameters for GPRS Configurations
+    //
+
+	RPacketQoS::TQoSGPRSRequested qosGPRSRequestedProfile;
+	qosGPRSRequestedProfile.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosGPRSRequestedProfile.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosGPRSRequestedProfile.iReqDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosGPRSRequestedProfile.iMinDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosGPRSRequestedProfile.iReqReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+	qosGPRSRequestedProfile.iMinReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+	qosGPRSRequestedProfile.iReqPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosGPRSRequestedProfile.iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosGPRSRequestedProfile.iReqMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+	qosGPRSRequestedProfile.iMinMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+	TPckg< RPacketQoS::TQoSGPRSRequested > profilePckgGPRS(qosGPRSRequestedProfile);
+
+	TRequestStatus notifyProfileChangeStatus;
+	RPacketQoS::TQoSGPRSNegotiated profile;
+	TPckg<RPacketQoS::TQoSGPRSNegotiated> qosGPRSNegotiatedProfilePk(profile);
+	packetQoS.NotifyProfileChanged(notifyProfileChangeStatus, qosGPRSNegotiatedProfilePk);
+
+	TRequestStatus requestStatusGPRS;
+	packetQoS.SetProfileParameters(requestStatusGPRS, profilePckgGPRS);
+	User::WaitForRequest(requestStatusGPRS);
+	ASSERT_EQUALS(KErrNone, requestStatusGPRS.Int());
+
+	//
+
+	RPacketContext::TContextConfigGPRS setConfigGPRSActiveNotifyConfigChanged;
+	TPckg<RPacketContext::TContextConfigGPRS> pckgConfigGPRSNotifyConfigChanged(setConfigGPRSActiveNotifyConfigChanged);
+
+	TRequestStatus contextConfigStatus;
+	packetContext.NotifyConfigChanged(contextConfigStatus, pckgConfigGPRSNotifyConfigChanged);
+
+	TRequestStatus contextActivatingRequestStatus;
+	RPacketContext::TContextStatus contextStatus;
+	packetContext.NotifyStatusChange(contextActivatingRequestStatus, contextStatus);
+
+	TRequestStatus activateStatus;
+	packetContext.Activate(activateStatus);
+	User::WaitForRequest(activateStatus);
+	User::WaitForRequest(contextActivatingRequestStatus);
+	ASSERT_EQUALS(KErrNone, activateStatus.Int());
+	ASSERT_EQUALS(RPacketContext::EStatusActivating, contextStatus);
+
+	// Complete NotifyProfileChanged
+	User::WaitForRequest(notifyProfileChangeStatus);
+	ASSERT_EQUALS(KErrNone, notifyProfileChangeStatus.Int());
+
+	// Status change from RPacketContext::EStatusActivating to RPacketContext::EStatusActive
+	TRequestStatus contextActivateRequestStatus;
+	RPacketContext::TContextStatus contextActiveStatus;
+	packetContext.NotifyStatusChange(contextActivateRequestStatus, contextActiveStatus);
+
+	User::WaitForRequest(contextActivateRequestStatus);
+	ASSERT_EQUALS(KErrNone, contextActivateRequestStatus.Int());
+	ASSERT_EQUALS(RPacketContext::EStatusActive, contextActiveStatus);
+
+	// Prepare context configuration for GPRS
+	setConfigGPRS.iAccessPointName.Copy(KPointNameGPRS);
+	setConfigGPRS.iPdpType = RPacketContext::EPdpTypeIPv6;
+	setConfigGPRS.iPdpAddress.Copy(KPdpAddGPRS);
+	TPckg<RPacketContext::TContextConfigGPRS> pckgConfigGPRS2(setConfigGPRS);
+
+	packetContext.SetConfig(setConfigStatus, pckgConfigGPRS2);
+	User::WaitForRequest(setConfigStatus);
+	ASSERT_EQUALS(KErrNone, setConfigStatus.Int());
+
+	TRequestStatus requestStatus;
+	packetContext.Deactivate(requestStatus);
+	User::WaitForRequest(requestStatus);
+	ASSERT_EQUALS(requestStatus.Int(), KErrNotSupported);
+
+	packetQoS.Close();
+	packetContext.Close();
+	packetService.Close();
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(5, this); // data, packetQoS, packetService, packetContext, this
+	}
+	
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0016
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketContextAddPacketFilter is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketContext::AddPacketFilter()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0016L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesAddPacketFilter::KLtsyDispatchPacketServicesAddPacketFilterApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+	
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService,RPacketService::EStatusUnattached);
+		
+	RPacketContext packetContext;
+
+	// Open the primary context
+	TInfoName contextId;
+	TInt err = packetContext.OpenNewContext(packetService, contextId);
+	CleanupClosePushL(packetContext);
+	ASSERT_EQUALS(KErrNone, err);
+	
+	TName qosName;
+	RPacketQoS packetQoS;
+	packetQoS.OpenNewQoS(packetContext, qosName);
+	CleanupClosePushL(packetQoS);
+
+	AssertMockLtsyStatusL();
+	
+	// Prepare context configuration for GPRS
+	RPacketContext::TContextConfigGPRS* setConfigGPRS = new (ELeave) RPacketContext::TContextConfigGPRS();
+	CleanupStack::PushL(setConfigGPRS);
+	setConfigGPRS->iAccessPointName.Copy(KPointNameGPRS);
+	setConfigGPRS->iPdpType = RPacketContext::EPdpTypeIPv4;
+	setConfigGPRS->iPdpAddress.Copy(KPdpAddGPRS);
+	setConfigGPRS->iProtocolConfigOption.iDnsAddresses.iPrimaryDns.Copy(KPrimaryDns);
+	setConfigGPRS->iProtocolConfigOption.iDnsAddresses.iSecondaryDns.Copy(KSecondaryDns);
+	setConfigGPRS->iProtocolConfigOption.iAuthInfo.iProtocol = RPacketContext::EProtocolCHAP;
+	setConfigGPRS->iProtocolConfigOption.iAuthInfo.iUsername.Copy(KUsername);
+	setConfigGPRS->iProtocolConfigOption.iAuthInfo.iPassword.Copy(KPassword);
+	setConfigGPRS->iProtocolConfigOption.iId = KRequestID;
+	setConfigGPRS->iProtocolConfigOption.iMiscBuffer.Copy(KDummyMiscBuffer);
+	TPckg<RPacketContext::TContextConfigGPRS> pckgConfigGPRS(*setConfigGPRS);
+
+	// Create the PCO buffer
+	RPacketContext::TMiscProtocolBuffer pcoBuffer;
+	pcoBuffer.Zero();
+
+	// Generate a PCO buffer
+	PCOGeneratorL(setConfigGPRS->iProtocolConfigOption, pcoBuffer);
+	setConfigGPRS->iProtocolConfigOption.iId = KRequestID;
+
+	DriverInitialiseContextL();
+	
+	RPacketContext::TDataChannelV2 dataChannel;
+	RPacketContext::TDataChannelV2Pckg dataChannelPk(dataChannel);
+	TRequestStatus initialiseContextStatus;
+
+	// Initialise primary context
+	packetContext.InitialiseContext(initialiseContextStatus,dataChannelPk);
+	User::WaitForRequest(initialiseContextStatus);
+	
+	ASSERT_EQUALS(KErrNone, initialiseContextStatus.Int());
+	ASSERT_TRUE(dataChannel.iPort == KFirstAllocatedContextName);	
+	ASSERT_TRUE(dataChannel.iChannelId == KDefaultChannelId); // Now deprecated
+	
+	AssertMockLtsyStatusL();
+		
+	// Setting default GPRS context parameters. 
+	RPacketContext::TContextConfigGPRS expContextConfigGprs;
+	expContextConfigGprs.iAccessPointName = KDefaultAccessPoint;
+	expContextConfigGprs.iPdpType = KDefaultPdpType;
+
+	TMockLtsyData1<RPacketContext::TContextConfigGPRS> expLtsyGprsData(expContextConfigGprs);
+	RBuf8 data;
+	CleanupClosePushL(data);
+	
+	expLtsyGprsData.SerialiseL(data);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesSetDefaultPdpContextGprsParams::KLtsyDispatchPacketServicesSetDefaultPdpContextGprsParamsApiId, data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesSetDefaultPdpContextGprsParams::KLtsyDispatchPacketServicesSetDefaultPdpContextGprsParamsApiId, KErrNone);
+	
+	RPacketContext::TContextConfigGPRS defaultGprsContextConfig;
+	defaultGprsContextConfig.iAccessPointName = KDefaultAccessPoint;
+	defaultGprsContextConfig.iPdpType = KDefaultPdpType;
+	TPckg<RPacketContext::TContextConfigGPRS> defaultContextGprsConfigPckg(defaultGprsContextConfig);
+	TRequestStatus setDefaultContextParamsStatus;
+	packetService.SetDefaultContextParams(setDefaultContextParamsStatus, defaultContextGprsConfigPckg);
+	User::WaitForRequest(setDefaultContextParamsStatus);
+
+    ASSERT_EQUALS(KErrNone, setDefaultContextParamsStatus.Int());
+    
+	AssertMockLtsyStatusL();
+	
+	DriverSetConfigContextL(contextId, setConfigGPRS->iAccessPointName, setConfigGPRS->iPdpType, setConfigGPRS->iPdpAddress, pcoBuffer);
+	
+	TRequestStatus setConfigStatus;
+	packetContext.SetConfig(setConfigStatus, pckgConfigGPRS);
+	User::WaitForRequest(setConfigStatus);
+	ASSERT_EQUALS(KErrNone, setConfigStatus.Int());
+		
+	
+	//
+	// SetProfileParameters for GPRS Configurations
+	//
+	
+	RPacketQoS::TQoSGPRSRequested* qosExpectedRequestedGPRSProfile = new (ELeave) RPacketQoS::TQoSGPRSRequested();
+    qosExpectedRequestedGPRSProfile->iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosExpectedRequestedGPRSProfile->iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosExpectedRequestedGPRSProfile->iReqDelay = RPacketQoS::EDelayClass1;
+	qosExpectedRequestedGPRSProfile->iMinDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosExpectedRequestedGPRSProfile->iReqReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+	qosExpectedRequestedGPRSProfile->iMinReliability = RPacketQoS::EReliabilityClass1;
+	qosExpectedRequestedGPRSProfile->iReqPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosExpectedRequestedGPRSProfile->iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosExpectedRequestedGPRSProfile->iReqMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+	qosExpectedRequestedGPRSProfile->iMinMeanThroughput = RPacketQoS::EMeanThroughput500;
+
+	TMockLtsyData2<TInfoName, RPacketQoS::TQoSGPRSRequested> packetSetConfigGPRSData(contextId, *qosExpectedRequestedGPRSProfile);
+	data.Close();
+	packetSetConfigGPRSData.SerialiseL(data);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesSetPdpContextQosGprs::KLtsyDispatchPacketServicesSetPdpContextQosGprsApiId, data, KErrNone);
+
+	TMockLtsyData1<TInfoName> callbackSetPdpGPRSContextNameData(contextId);
+	callbackSetPdpGPRSContextNameData.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesSetPdpContextQosGprs::KLtsyDispatchPacketServicesSetPdpContextQosGprsApiId, KErrNone, data);
+
+	RPacketQoS::TQoSGPRSRequested*  qosGPRSRequestedProfile = new (ELeave) RPacketQoS::TQoSGPRSRequested();
+	qosGPRSRequestedProfile->iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosGPRSRequestedProfile->iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	qosGPRSRequestedProfile->iReqDelay = RPacketQoS::EDelayClass1;
+	qosGPRSRequestedProfile->iMinDelay = RPacketQoS::EUnspecifiedDelayClass;
+	qosGPRSRequestedProfile->iReqReliability =  RPacketQoS::EUnspecifiedReliabilityClass;
+	qosGPRSRequestedProfile->iMinReliability = RPacketQoS::EReliabilityClass1;
+	qosGPRSRequestedProfile->iReqPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+	qosGPRSRequestedProfile->iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput; 
+	qosGPRSRequestedProfile->iReqMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput;
+	qosGPRSRequestedProfile->iMinMeanThroughput = RPacketQoS::EMeanThroughput500;
+	TPckg< RPacketQoS::TQoSGPRSRequested > profilePckgGPRS(*qosGPRSRequestedProfile);
+	
+	TRequestStatus notifyProfileChangeStatus;
+	RPacketQoS::TQoSGPRSNegotiated profile;
+	TPckg<RPacketQoS::TQoSGPRSNegotiated> qosGPRSNegotiatedProfilePk(profile);
+	packetQoS.NotifyProfileChanged(notifyProfileChangeStatus, qosGPRSNegotiatedProfilePk);
+
+	TRequestStatus requestStatusGPRS;
+	packetQoS.SetProfileParameters(requestStatusGPRS, profilePckgGPRS);
+	User::WaitForRequest(requestStatusGPRS);
+	ASSERT_EQUALS(KErrNone, requestStatusGPRS.Int());
+		
+	AssertMockLtsyStatusL();
+	
+	TRequestStatus contextConfigStatus;
+	RPacketContext::TContextConfigGPRS* setConfigGPRSActiveNotifyConfigChanged = new (ELeave) RPacketContext::TContextConfigGPRS();
+	CleanupStack::PushL(setConfigGPRSActiveNotifyConfigChanged);
+	TPckg<RPacketContext::TContextConfigGPRS> pckgConfigGPRSNotifyConfigChanged(*setConfigGPRSActiveNotifyConfigChanged);
+	packetContext.NotifyConfigChanged(contextConfigStatus, pckgConfigGPRSNotifyConfigChanged);
+	
+	TRequestStatus contextActivatingRequestStatus;
+	RPacketContext::TContextStatus contextStatus;
+	packetContext.NotifyStatusChange(contextActivatingRequestStatus, contextStatus);
+			
+	TMockLtsyData1<TInfoName> expectedActivateContextNameData(contextId);
+	data.Close();
+	expectedActivateContextNameData.SerialiseL(data);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesActivatePdpContext::KLtsyDispatchPacketServicesActivatePdpContextApiId, data, KErrNone);
+				
+	TMockLtsyData3<TInfoName, RPacketContext::TGSNAddress, RPacketContext::TProtocolType>
+		completedActivateContextNameData(contextId, setConfigGPRS->iAccessPointName, setConfigGPRS->iPdpType);
+	data.Close();
+	completedActivateContextNameData.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesActivatePdpContext::KLtsyDispatchPacketServicesActivatePdpContextApiId, KErrNone, data);
+	
+	RPacketQoS::TQoSGPRSNegotiated completedProfile;
+	TMockLtsyData2<TInfoName, RPacketQoS::TQoSGPRSNegotiated>
+					expLtsyQosProfileChangedInd(contextId, completedProfile);
+	data.Close();
+	expLtsyQosProfileChangedInd.SerialiseL(data);
+	iMockLTSY.CompleteL(KMockLtsyDispatchPacketServicesNotifyQosProfileChangedIndId, KErrNone, data);
+	
+	// Prepare context configuration for GPRS
+	RPacketContext::TContextConfigGPRS* setConfigGPRSActive  = new (ELeave) RPacketContext::TContextConfigGPRS();
+	setConfigGPRSActive->iAccessPointName.Copy(KPointNameGPRS);
+	setConfigGPRSActive->iPdpType = RPacketContext::EPdpTypeIPv4;
+	setConfigGPRSActive->iPdpCompression = 0;
+	setConfigGPRSActive->iPdpAddress.Copy(KPdpAddGPRSActive);	
+	setConfigGPRSActive->iProtocolConfigOption.iDnsAddresses.iSecondaryDns.Copy(KSecondaryDns);
+	setConfigGPRSActive->iProtocolConfigOption.iAuthInfo.iProtocol = RPacketContext::EProtocolCHAP;
+	setConfigGPRSActive->iProtocolConfigOption.iAuthInfo.iUsername.Copy(KUsername);
+	setConfigGPRSActive->iProtocolConfigOption.iAuthInfo.iPassword.Copy(KPassword);
+	setConfigGPRSActive->iProtocolConfigOption.iId = KRequestID;
+
+	TMockLtsyData5<TInfoName, RPacketContext::TGSNAddress, RPacketContext::TProtocolAddress, TUint, RPacketContext::TMiscProtocolBuffer>
+					expLtsyProfileChangedInd(contextId, setConfigGPRSActive->iAccessPointName,
+					setConfigGPRSActive->iPdpAddress, setConfigGPRSActive->iPdpCompression, pcoBuffer);
+	data.Close();
+	expLtsyProfileChangedInd.SerialiseL(data);
+	iMockLTSY.CompleteL(KMockLtsyDispatchPacketServicesNotifyPdpContextConfigChangedIndId, KErrNone, data);
+	
+	// Activate primary context
+	TRequestStatus activateStatus;
+	packetContext.Activate(activateStatus);
+	User::WaitForRequest(activateStatus);
+	
+	// Complete NotifyProfileChanged
+	User::WaitForRequest(notifyProfileChangeStatus);
+	ASSERT_EQUALS(KErrNone, notifyProfileChangeStatus.Int());
+	
+	User::WaitForRequest(contextActivatingRequestStatus);
+	ASSERT_EQUALS(KErrNone, activateStatus.Int());
+	ASSERT_EQUALS(RPacketContext::EStatusActivating, contextStatus);
+	
+	packetContext.NotifyStatusChange(contextActivatingRequestStatus, contextStatus);
+	
+	User::WaitForRequest(contextActivatingRequestStatus);
+	ASSERT_EQUALS(RPacketContext::EStatusActive, contextStatus);
+
+	AssertMockLtsyStatusL();
+	
+	//Open Secondary Packet Context
+	TInfoName secondaryContextId;
+	RPacketContext secondaryContext;	
+	err = secondaryContext.OpenNewSecondaryContext(packetService, contextId, secondaryContextId);
+	CleanupClosePushL(secondaryContext);
+	ASSERT_EQUALS(KErrNone, err);
+	
+	AssertMockLtsyStatusL();
+				
+	DriverInitialiseContextL(contextId, secondaryContextId);
+
+	RPacketContext::TDataChannelV2* secondDataChannel = new (ELeave) RPacketContext::TDataChannelV2();
+	RPacketContext::TDataChannelV2Pckg secondDataChannelPk(*secondDataChannel);
+	TRequestStatus secondInitialiseContextStatus;
+	
+	// Initialise secondary context
+	secondaryContext.InitialiseContext(secondInitialiseContextStatus, secondDataChannelPk);
+	User::WaitForRequest(secondInitialiseContextStatus);	
+	ASSERT_EQUALS(KErrNone, secondInitialiseContextStatus.Int());
+	ASSERT_TRUE(dataChannel.iPort == KFirstAllocatedContextName); 	
+	ASSERT_TRUE(secondDataChannel->iChannelId == KSecondaryContextChannelId); // Now deprecated
+				
+	AssertMockLtsyStatusL();
+	
+	// Open QoS for secondaty context
+	RPacketQoS secondaryPacketQoS;
+	secondaryPacketQoS.OpenNewQoS(secondaryContext, secondaryContextId);
+	CleanupClosePushL(secondaryPacketQoS);
+	
+	RPacketQoS::TQoSGPRSRequested* qosExpectedRequestedGPRSProfileSecondaryContext = new (ELeave) RPacketQoS::TQoSGPRSRequested();	
+	qosExpectedRequestedGPRSProfileSecondaryContext->iMinMeanThroughput = RPacketQoS::EMeanThroughput500;
+	
+	TMockLtsyData2<TInfoName, RPacketQoS::TQoSGPRSRequested> packetSetConfigGPRSDataSecondaryContext(secondaryContextId, *qosExpectedRequestedGPRSProfileSecondaryContext);
+	data.Close();
+	packetSetConfigGPRSDataSecondaryContext.SerialiseL(data);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesSetPdpContextQosGprs::KLtsyDispatchPacketServicesSetPdpContextQosGprsApiId, data, KErrNone);
+
+	TMockLtsyData1<TInfoName> callbackSetPdpGPRSContextNameDataSecondaryContext(secondaryContextId);
+	callbackSetPdpGPRSContextNameDataSecondaryContext.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesSetPdpContextQosGprs::KLtsyDispatchPacketServicesSetPdpContextQosGprsApiId, KErrNone, data);
+	
+	//Define qos params for secondaty context   
+	RPacketQoS::TQoSGPRSRequested* qosGPRSRequestedProfilesecondaryPacket = new (ELeave) RPacketQoS::TQoSGPRSRequested();
+	qosGPRSRequestedProfilesecondaryPacket->iMinMeanThroughput = RPacketQoS::EMeanThroughput500;
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosGPRSRequestedProfilePk(*qosGPRSRequestedProfilesecondaryPacket);    
+	
+	//Set QoS Params GPRS for secondaty context
+	TRequestStatus setProfileParametersSt;
+	secondaryPacketQoS.SetProfileParameters(setProfileParametersSt, qosGPRSRequestedProfilePk);
+	User::WaitForRequest(setProfileParametersSt);
+	ASSERT_EQUALS(KErrNone, setProfileParametersSt.Int());
+	
+	AssertMockLtsyStatusL();
+		
+	// Configure packet filter  secondary context	    	    
+    RPacketContext::TPacketFilterV2* packetFilterV2 = new (ELeave) RPacketContext::TPacketFilterV2();
+    packetFilterV2->iId = 1;
+    packetFilterV2->iEvaluationPrecedenceIndex = 100;
+    packetFilterV2->iDestPortMax = 4001;
+    packetFilterV2->iDestPortMin = 4000;        
+    packetFilterV2->iIPSecSPI = 1;    
+    packetFilterV2->iProtocolNumberOrNextHeader = 0;
+    packetFilterV2->iSrcAddr[12] = 0;
+    memcpy(&(packetFilterV2->iSrcAddr[0]), "200.12.13.19", 12);
+    packetFilterV2->iSrcAddrSubnetMask[13] = 0;
+    memcpy(&(packetFilterV2->iSrcAddrSubnetMask[0]), "255.255.255.0", 13);    
+    packetFilterV2->iSrcPortMin = 5000;
+    packetFilterV2->iSrcPortMax = 5001;
+    packetFilterV2->iTOSorTrafficClass = 0;    
+    RPacketContext::TPacketFilterV2Pckg packetFilterV2Pckg(*packetFilterV2);
+    CArrayFixFlat<RPacketContext::TPacketFilterV2>* filterTemporaryArray = new ( ELeave ) CArrayFixFlat<RPacketContext::TPacketFilterV2>( 1 );
+    CleanupStack::PushL(filterTemporaryArray);
+    filterTemporaryArray->AppendL( *packetFilterV2 );
+	
+	TRequestStatus addPacketFilterStatus;
+
+	// Add filter to secondary context.
+    secondaryContext.AddPacketFilter(addPacketFilterStatus, packetFilterV2Pckg);	    	    
+	User::WaitForRequest(addPacketFilterStatus);
+	ASSERT_EQUALS(KErrNotSupported, addPacketFilterStatus.Int());
+
+	TRequestStatus requestStatus;	
+	iMockLTSY.NotifyTerminated(requestStatus);
+	
+	DriverDeleteContextL(secondaryContextId);
+	DriverDeleteContextL(contextId);
+
+	secondaryPacketQoS.Close();
+	packetQoS.Close();
+				
+	secondaryContext.Close();
+	packetContext.Close();
+	packetService.Close();
+
+	User::WaitForRequest(requestStatus);
+	ASSERT_EQUALS(requestStatus.Int(), KErrNone);
+	
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(10, this);   // setSecondaryConfigGPRSActiveNotifyConfigChanged, secondarySetConfigGPRSActive, secondarysetConfigGPRSActiveNotifyConfigChanged, 
+											//filterTemporaryArray, secondPacketContext, setConfigGPRSActiveNotifyConfigChanged, data, setConfigGPRS, packetQoS, packetService, packetContext, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0018
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketInitProxiesIPC is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketService::Open() 
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0018L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesGetStatus::KLtsyDispatchPacketServicesGetStatusApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+	
+    RPacketService packetService;  
+	TRequestStatus requestStatus;
+	iMockLTSY.NotifyTerminated(requestStatus);
+	
+	RBuf8 data;
+	CleanupClosePushL(data);
+	
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesGetStaticCapabilities::KLtsyDispatchPacketServicesGetStaticCapabilitiesApiId);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists::KLtsyDispatchPacketServicesGetMaxNoMonitoredServiceListsApiId);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesGetMaxNoActiveServices::KLtsyDispatchPacketServicesGetMaxNoActiveServicesApiId);	
+
+	TUint staticCapabilities        
+		= RPacketService::KCapsSuspendSupported
+		| RPacketService::KCapsNetworkAvailabilitySupported
+		| RPacketService::KCapsSetDefaultContextSupported
+		| RPacketService::KCapsChangeAttachModeSupported
+		| RPacketService::KCapsGetDataTransferredSupported
+		| RPacketService::KCapsPreferredBearerSupported
+		| RPacketService::KCapsPdpDataCompSupported
+		| RPacketService::KCapsPdpHeaderCompSupported
+		| RPacketService::KCapsMSClassSupported
+		| RPacketService::KCapsNotifyMSClassSupported;
+	
+	TMockLtsyData1<TUint> packetServiceStaticCapabilities(staticCapabilities);
+	packetServiceStaticCapabilities.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesGetStaticCapabilities::KLtsyDispatchPacketServicesGetStaticCapabilitiesApiId, KErrNone, data);
+	data.Close();
+	
+  	TInt maxNoMonitoredServiceLists = 32;
+	TMockLtsyData1<TInt> maxNoMonitoredServiceListsData(maxNoMonitoredServiceLists);
+	maxNoMonitoredServiceListsData.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists::KLtsyDispatchPacketServicesGetMaxNoMonitoredServiceListsApiId, KErrNone, data);
+	data.Close();
+	
+	TInt maxNoActiveServices = 64;
+	TMockLtsyData1<TInt> maxNoActiveServicesData(maxNoActiveServices);
+	maxNoActiveServicesData.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesGetMaxNoActiveServices::KLtsyDispatchPacketServicesGetMaxNoActiveServicesApiId, KErrNone, data);
+
+	CleanupClosePushL(packetService);
+
+	ASSERT_EQUALS(packetService.Open(iPhone), KErrNone);
+	User::WaitForRequest(requestStatus);
+	ASSERT_EQUALS(requestStatus.Int(), KErrNone);
+
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(3, this); // packetService, data, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0019
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketGetStaticCaps is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketService::GetStaticCaps()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0019L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesGetStaticCapabilities::KLtsyDispatchPacketServicesGetStaticCapabilitiesApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+
+    RPacketService packetService;       
+	TRequestStatus requestStatus;
+	iMockLTSY.NotifyTerminated(requestStatus);
+	
+	RBuf8 data;
+	CleanupClosePushL(data);
+	
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesGetStatus::KLtsyDispatchPacketServicesGetStatusApiId);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists::KLtsyDispatchPacketServicesGetMaxNoMonitoredServiceListsApiId);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesGetMaxNoActiveServices::KLtsyDispatchPacketServicesGetMaxNoActiveServicesApiId);	
+
+	TBool resumed = EFalse; // Flag indicating whether packet service has been resumed from suspended state.
+	RPacketService::TStatus packetServiceStatus = RPacketService::EStatusUnattached;
+	TMockLtsyData2<RPacketService::TStatus, TBool> packetServiceStatusData(packetServiceStatus, resumed);
+	packetServiceStatusData.SerialiseL(data);
+  	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesGetStatus::KLtsyDispatchPacketServicesGetStatusApiId, KErrNone, data);
+  	data.Close();
+  	
+  	TInt maxNoMonitoredServiceLists = 32;
+	TMockLtsyData1<TInt> maxNoMonitoredServiceListsData(maxNoMonitoredServiceLists);
+	maxNoMonitoredServiceListsData.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists::KLtsyDispatchPacketServicesGetMaxNoMonitoredServiceListsApiId, KErrNone, data);
+	data.Close();
+	
+	TInt maxNoActiveServices = 64;
+	TMockLtsyData1<TInt> maxNoActiveServicesData(maxNoActiveServices);
+	maxNoActiveServicesData.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesGetMaxNoActiveServices::KLtsyDispatchPacketServicesGetMaxNoActiveServicesApiId, KErrNone, data);
+
+	CleanupClosePushL(packetService);
+	ASSERT_EQUALS(packetService.Open(iPhone),KErrNone);
+	
+	User::WaitForRequest(requestStatus);
+	ASSERT_EQUALS(requestStatus.Int(),KErrNone);
+	AssertMockLtsyStatusL();
+	
+	//check the capabilities
+	TUint caps = 0;
+	TInt ret = packetService.GetStaticCaps(caps,RPacketContext::EPdpTypeIPv4); // still returns KErrNone 
+	ASSERT_EQUALS(ret, KErrNone); 
+	
+	AssertMockLtsyStatusL();	
+	config.Reset();
+	CleanupStack::PopAndDestroy(3, this); // packetService, data, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0020
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketEnumerateMbmsMonitorServiceList is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketService::EnumerateMbmsMonitorServiceList()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0020L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists::KLtsyDispatchPacketServicesGetMaxNoMonitoredServiceListsApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+
+    RPacketService packetService;       
+	TRequestStatus requestStatus;
+	iMockLTSY.NotifyTerminated(requestStatus);
+	
+	RBuf8 data;
+	CleanupClosePushL(data);
+	
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesGetStaticCapabilities::KLtsyDispatchPacketServicesGetStaticCapabilitiesApiId);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesGetStatus::KLtsyDispatchPacketServicesGetStatusApiId);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesGetMaxNoActiveServices::KLtsyDispatchPacketServicesGetMaxNoActiveServicesApiId);	
+
+	TUint staticCapabilities        
+		= RPacketService::KCapsSuspendSupported
+		| RPacketService::KCapsNetworkAvailabilitySupported
+		| RPacketService::KCapsSetDefaultContextSupported
+		| RPacketService::KCapsChangeAttachModeSupported
+		| RPacketService::KCapsGetDataTransferredSupported
+		| RPacketService::KCapsPreferredBearerSupported
+		| RPacketService::KCapsPdpDataCompSupported
+		| RPacketService::KCapsPdpHeaderCompSupported
+		| RPacketService::KCapsMSClassSupported
+		| RPacketService::KCapsNotifyMSClassSupported;
+	
+	TMockLtsyData1<TUint> packetServiceStaticCapabilities(staticCapabilities);
+	packetServiceStaticCapabilities.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesGetStaticCapabilities::KLtsyDispatchPacketServicesGetStaticCapabilitiesApiId, KErrNone, data);
+	data.Close();
+	
+	TBool resumed = EFalse; // Flag indicating whether packet service has been resumed from suspended state.
+	RPacketService::TStatus packetServiceStatus = RPacketService::EStatusUnattached;
+	TMockLtsyData2<RPacketService::TStatus, TBool> packetServiceStatusData(packetServiceStatus, resumed);
+	packetServiceStatusData.SerialiseL(data);
+  	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesGetStatus::KLtsyDispatchPacketServicesGetStatusApiId, KErrNone, data);
+  	data.Close();
+	
+	TInt maxNoActiveServices = 64;
+	TMockLtsyData1<TInt> maxNoActiveServicesData(maxNoActiveServices);
+	maxNoActiveServicesData.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesGetMaxNoActiveServices::KLtsyDispatchPacketServicesGetMaxNoActiveServicesApiId, KErrNone, data);
+
+	CleanupClosePushL(packetService);
+	ASSERT_EQUALS(packetService.Open(iPhone),KErrNone);
+	
+	User::WaitForRequest(requestStatus);
+	ASSERT_EQUALS(requestStatus.Int(),KErrNone);
+	AssertMockLtsyStatusL();
+	
+	//check the max no monitored service lists
+	TInt count = 0;
+	TInt maxAllowed = 0;
+	packetService.EnumerateMbmsMonitorServiceList(requestStatus,count,maxAllowed);
+	User::WaitForRequest(requestStatus); // still KErrNone
+	ASSERT_EQUALS(requestStatus.Int(), KErrNone);
+	
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(3, this); // packetService, data, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0021
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketEnumerateMbmsActiveServiceList is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketService::EnumerateMbmsActiveServiceList()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0021L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesGetMaxNoActiveServices::KLtsyDispatchPacketServicesGetMaxNoActiveServicesApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+
+    RPacketService packetService;      
+	TRequestStatus requestStatus;
+	iMockLTSY.NotifyTerminated(requestStatus);
+	
+	RBuf8 data;
+	CleanupClosePushL(data);
+	
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesGetStaticCapabilities::KLtsyDispatchPacketServicesGetStaticCapabilitiesApiId);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesGetStatus::KLtsyDispatchPacketServicesGetStatusApiId);
+	iMockLTSY.ExpectL(MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists::KLtsyDispatchPacketServicesGetMaxNoMonitoredServiceListsApiId);
+
+	TUint staticCapabilities        
+		= RPacketService::KCapsSuspendSupported
+		| RPacketService::KCapsNetworkAvailabilitySupported
+		| RPacketService::KCapsSetDefaultContextSupported
+		| RPacketService::KCapsChangeAttachModeSupported
+		| RPacketService::KCapsGetDataTransferredSupported
+		| RPacketService::KCapsPreferredBearerSupported
+		| RPacketService::KCapsPdpDataCompSupported
+		| RPacketService::KCapsPdpHeaderCompSupported
+		| RPacketService::KCapsMSClassSupported
+		| RPacketService::KCapsNotifyMSClassSupported;
+	
+	TMockLtsyData1<TUint> packetServiceStaticCapabilities(staticCapabilities);
+	packetServiceStaticCapabilities.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesGetStaticCapabilities::KLtsyDispatchPacketServicesGetStaticCapabilitiesApiId, KErrNone, data);
+	data.Close();
+	
+	TBool resumed = EFalse; // Flag indicating whether packet service has been resumed from suspended state.
+	RPacketService::TStatus packetServiceStatus = RPacketService::EStatusUnattached;
+	TMockLtsyData2<RPacketService::TStatus, TBool> packetServiceStatusData(packetServiceStatus, resumed);
+	packetServiceStatusData.SerialiseL(data);
+  	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesGetStatus::KLtsyDispatchPacketServicesGetStatusApiId, KErrNone, data);
+  	data.Close();
+  	
+  	TInt maxNoMonitoredServiceLists = 32;
+	TMockLtsyData1<TInt> maxNoMonitoredServiceListsData(maxNoMonitoredServiceLists);
+	maxNoMonitoredServiceListsData.SerialiseL(data);
+	iMockLTSY.CompleteL(MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists::KLtsyDispatchPacketServicesGetMaxNoMonitoredServiceListsApiId, KErrNone, data);
+	data.Close();
+
+	CleanupClosePushL(packetService);
+	ASSERT_EQUALS(packetService.Open(iPhone),KErrNone);
+	
+	User::WaitForRequest(requestStatus);
+	ASSERT_EQUALS(requestStatus.Int(),KErrNone);
+	AssertMockLtsyStatusL();
+
+	//check the max no monitored service lists
+	TInt count = 0;
+	TInt maxAllowed = 0;
+
+	packetService.EnumerateMbmsActiveServiceList(requestStatus, count, maxAllowed); 
+	User::WaitForRequest(requestStatus); // still KErrNone
+	ASSERT_EQUALS(requestStatus.Int(),KErrNone);
+	
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(3, this); // packetService, data, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0022
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if ECtsyPacketMbmsInitialiseContextReq is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketContext::InitialiseContext()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0022L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesInitialiseMbmsContext::KLtsyDispatchPacketServicesInitialiseMbmsContextApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+	
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService, RPacketService::EStatusUnattached);
+	
+	TInfoName contextName;
+	RPacketMbmsContext packetContext;
+	
+	packetContext.OpenNewContext(packetService, contextName);
+	CleanupClosePushL(packetContext);
+	
+	TRequestStatus requestStatus;
+	RPacketContext::TDataChannelV2 dataChannel1;
+	RPacketContext::TDataChannelV2Pckg dataChannelPckg1(dataChannel1);
+
+	packetContext.InitialiseContext(requestStatus, dataChannelPckg1);
+	User::WaitForRequest(requestStatus);
+	ASSERT_EQUALS(requestStatus.Int(), KErrNotSupported);
+
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(3, this); // packetContext, packetService, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0023
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketGetMbmsNetworkServiceStatus is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketService::GetMbmsNetworkServiceStatus()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0023L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesGetMbmsNetworkServiceStatus::KLtsyDispatchPacketServicesGetMbmsNetworkServiceStatusApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+	
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService, RPacketService::EStatusUnattached);
+    
+	TRequestStatus requestStatus;
+    TMbmsNetworkServiceStatus mbmsNetworkServiceStatus;
+    
+	packetService.GetMbmsNetworkServiceStatus(requestStatus, ETrue, mbmsNetworkServiceStatus);
+	User::WaitForRequest(requestStatus);
+	ASSERT_EQUALS(requestStatus.Int(), KErrNotSupported);
+	
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(2, this); // packetService, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0024
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketUpdateMbmsMonitorServiceList is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketService::UpdateMbmsMonitorServiceListL()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0024L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesUpdateMbmsMonitorServiceList::KLtsyDispatchPacketServicesUpdateMbmsMonitorServiceListApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+	
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService, RPacketService::EStatusUnattached);
+    
+	TRequestStatus requestStatus;
+    CPcktMbmsMonitoredServiceList* multipleEntries = CPcktMbmsMonitoredServiceList ::NewL();
+	CleanupStack::PushL(multipleEntries);
+	RPacketService::TMbmsServiceAvailabilityV1 entry1, entry2;
+	TInt MBMS_MONITORSERVICECOUNTMULTIPLE = 3;
+	
+	for(TInt i=0;i < MBMS_MONITORSERVICECOUNTMULTIPLE ;i++)
+		{
+		entry1.iTmgi.SetServiceId(i); 
+		entry1.iTmgi.SetMCC(i);
+		entry1.iTmgi.SetMNC(i);
+		entry1.iMbmsServiceMode = KBroadcast;
+		entry1.iMbmsAccessBearer = E2GBearer;
+		entry1.iMbmsAvailabilityStatus = EMbmsUnavailable;
+		multipleEntries->AddEntryL( entry1 );
+		}
+	
+	packetService.UpdateMbmsMonitorServiceListL(requestStatus, EAddEntries, multipleEntries);	
+	User::WaitForRequest(requestStatus);
+	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+	
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(3, this); // multipleEntries, packetService, this
+	}
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-NEGATIVE-UN0025
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test returned value if EPacketContextUpdateMbmsSessionList is not supported by LTSY
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::UpdateMbmsSessionList()
+@SYMTestExpectedResults Pass
+@SYMTestType UT
+*/
+void CCTsyPacketServicesFUNegative::TestUnit0025L()
+	{
+	TConfig config;
+	config.SetSupportedValue(MLtsyDispatchPacketServicesUpdateMbmsSessionList::KLtsyDispatchPacketServicesUpdateMbmsSessionListApiId, EFalse);
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+	
+	RPacketService packetService;
+	OpenPacketServiceLC(packetService, RPacketService::EStatusUnattached);
+	
+	TInfoName contextId;	
+	RPacketMbmsContext mbmsContext;	
+	mbmsContext.OpenNewContext(packetService, contextId);	 
+	CleanupClosePushL( mbmsContext );	
+    
+	TRequestStatus requestStatus;
+    TMbmsSessionId session = 0;  
+    
+    mbmsContext.UpdateMbmsSessionList(requestStatus, EAddEntries, session);    
+	User::WaitForRequest(requestStatus);
+	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(requestStatus.Int(), KErrNotSupported);
+	
+	AssertMockLtsyStatusL();
+	config.Reset();
+	CleanupStack::PopAndDestroy(3, this); // mbmsContext, packetService, this	
+	}