telephonyserverplugins/common_tsy/commontsy/src/mmpacket/cmmpacketqosgsmwcdmaext.cpp
branchopencode
changeset 24 6638e7f4bd8f
parent 0 3553901f7fa8
--- a/telephonyserverplugins/common_tsy/commontsy/src/mmpacket/cmmpacketqosgsmwcdmaext.cpp	Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserverplugins/common_tsy/commontsy/src/mmpacket/cmmpacketqosgsmwcdmaext.cpp	Thu May 06 15:10:38 2010 +0100
@@ -1,619 +1,619 @@
-// Copyright (c) 2006-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:
-//
-
-
-
-//  INCLUDE FILES
-#include "Cmmpacketservicetsy.h"
-#include "Cmmpacketcontexttsy.h"
-#include "cmmpacketqosgsmwcdmaext.h"
-#include "Cmmpacketqostsy.h"
-#include "Cmmpacketdef.h"
-#include "etelqos.h"
-#include "etelpckt.h"
-
-// ======== MEMBER FUNCTIONS ========
-
-CMmPacketQoSGsmWcdmaExt::CMmPacketQoSGsmWcdmaExt()
-    {
-    }
-
-CMmPacketQoSGsmWcdmaExt* CMmPacketQoSGsmWcdmaExt::NewL(
-        CMmPacketQoSTsy* aMmPacketQoSTsy,     
-        CMmPacketServiceTsy* aMmPacketService ) 
-    {
-    CMmPacketQoSGsmWcdmaExt* packetQoSGsmWcdmaExt =
-        new ( ELeave ) CMmPacketQoSGsmWcdmaExt();
-    
-    CleanupStack::PushL( packetQoSGsmWcdmaExt );
-    packetQoSGsmWcdmaExt->iMmPacketQoSTsy = aMmPacketQoSTsy;
-    packetQoSGsmWcdmaExt->iMmPacketService = aMmPacketService;
-    packetQoSGsmWcdmaExt->ConstructL();
-    CleanupStack::Pop( packetQoSGsmWcdmaExt );
-
-TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::NewL. ");
-    return packetQoSGsmWcdmaExt;
-    }
-
-void CMmPacketQoSGsmWcdmaExt::ConstructL()
-    {
-	iQoSGPRSNotifyPckg = NULL;
-    iQosAsked = EFalse;
-    }
-    
-CMmPacketQoSGsmWcdmaExt::~CMmPacketQoSGsmWcdmaExt()
-    {
-TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::~CMmPacketQoSGsmWcdmaExt." );
-    }
-
-
-
-//----------------------------------------------------------------------------
-// CMmPacketQoSGsmWcdmaExt::GetProfileCapabilities
-// Gets profile capabilities 
-//----------------------------------------------------------------------------
-
-TInt CMmPacketQoSGsmWcdmaExt::GetProfileCapabilities(
-        TDes8* aProfileCaps )
-    {
-TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::GetProfileCapabilities." );
-
-    // Unpack the packet
-    TPckg<TPacketDataConfigBase>* profileCapsPckg = 
-        ( TPckg<TPacketDataConfigBase>* ) aProfileCaps;
-    TPacketDataConfigBase& profileCaps = ( *profileCapsPckg )();
-
-    // If extension is KConfigGPRS
-    if ( TPacketDataConfigBase::KConfigGPRS == profileCaps.ExtensionId() )
-        {
-        TPckg<RPacketQoS::TQoSCapsGPRS>* gprsProfileCapsPckg = 
-            ( TPckg<RPacketQoS::TQoSCapsGPRS>* ) aProfileCaps;
-        RPacketQoS::TQoSCapsGPRS& gprsProfileCaps = ( *gprsProfileCapsPckg )();
-
-        gprsProfileCaps.iPrecedence = KMmPrecedence;
-        gprsProfileCaps.iDelay = KMmDelay;
-        gprsProfileCaps.iReliability = KMmReliability;
-        gprsProfileCaps.iPeak = KMmPeak;
-        gprsProfileCaps.iMean = KMmMean;
-        }
-
-    // Else if extension is KConfigRel99Rel4 or KConfigRel5
-    else if ( TPacketDataConfigBase::KConfigRel99Rel4 == 
-        profileCaps.ExtensionId() ||
-        TPacketDataConfigBase::KConfigRel5 == profileCaps.ExtensionId() )
-        {
-        TPckg<RPacketQoS::TQoSCapsR99_R4>* gprs99ProfileCapsPckg = 
-            ( TPckg<RPacketQoS::TQoSCapsR99_R4>* ) aProfileCaps;
-        RPacketQoS::TQoSCapsR99_R4& gprsProfileCaps = 
-            ( *gprs99ProfileCapsPckg )();
-
-        gprsProfileCaps.iTrafficClass = KMmTrafficClass;
-        gprsProfileCaps.iDeliveryOrderReqd = KMmDeliveryOrderReqd;
-        gprsProfileCaps.iDeliverErroneousSDU = KMmErroneousSDUDelivery;
-        gprsProfileCaps.iBER = KMmBitErrorRatio;
-        gprsProfileCaps.iSDUErrorRatio = KMmSDUErrorRatio;
-        gprsProfileCaps.iTrafficHandlingPriority = KMmTrafficHandlingPriority;
-        }
-
-    else
-        {
-        return KErrNotSupported;
-        }
-
-    return KErrNone;
-    }
-
-
-//----------------------------------------------------------------------------
-// CMmPacketQoSGsmWcdmaExt::GetProfileParameters
-// Gets negotiated Qos parameters 
-//----------------------------------------------------------------------------
-
-TInt CMmPacketQoSGsmWcdmaExt::GetProfileParameters(
-        TDes8* aProfile ) 
-    {
-
-    // Unpack the packet
-    TPckg<TPacketDataConfigBase>* profilePckg = 
-        ( TPckg<TPacketDataConfigBase>* ) aProfile;
-    TPacketDataConfigBase& profile = ( *profilePckg )();
-TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::GetProfileParameters.");
-
-// If extension is KConfigGPRS
-    if ( TPacketDataConfigBase::KConfigGPRS == profile.ExtensionId() )
-        {
-        TPckg<RPacketQoS::TQoSGPRSNegotiated >* gprsProfilePckg = 
-                ( TPckg<RPacketQoS::TQoSGPRSNegotiated >* ) aProfile;
-        RPacketQoS::TQoSGPRSNegotiated& gprsProfile = ( *gprsProfilePckg )();
-
-        gprsProfile.iPrecedence = iQoSGPRSNegotiated.iPrecedence;
-        gprsProfile.iDelay = iQoSGPRSNegotiated.iDelay;
-        gprsProfile.iReliability = iQoSGPRSNegotiated.iReliability;
-        gprsProfile.iPeakThroughput = iQoSGPRSNegotiated.iPeakThroughput;
-        gprsProfile.iMeanThroughput = iQoSGPRSNegotiated.iMeanThroughput;
-        }
-// If extension is KConfigRel99Rel4
-    else if ( TPacketDataConfigBase::KConfigRel99Rel4 == profile.ExtensionId() )
-        {
-        TPckg<RPacketQoS::TQoSR99_R4Negotiated >* gprsProfilePckg = 
-                ( TPckg<RPacketQoS::TQoSR99_R4Negotiated >* ) aProfile;
-        RPacketQoS::TQoSR99_R4Negotiated& gprsProfile = ( *gprsProfilePckg )();
-
-        gprsProfile.iTrafficClass = iQoSR99_R4Negotiated.iTrafficClass;
-        gprsProfile.iDeliveryOrderReqd =
-            iQoSR99_R4Negotiated.iDeliveryOrderReqd;
-        gprsProfile.iDeliverErroneousSDU =
-            iQoSR99_R4Negotiated.iDeliverErroneousSDU;
-        gprsProfile.iMaxSDUSize = iQoSR99_R4Negotiated.iMaxSDUSize;
-        gprsProfile.iMaxRate = iQoSR99_R4Negotiated.iMaxRate;
-        gprsProfile.iBER = iQoSR99_R4Negotiated.iBER;
-        gprsProfile.iSDUErrorRatio = iQoSR99_R4Negotiated.iSDUErrorRatio;
-        gprsProfile.iTrafficHandlingPriority 
-            = iQoSR99_R4Negotiated.iTrafficHandlingPriority;
-        gprsProfile.iTransferDelay = iQoSR99_R4Negotiated.iTransferDelay;
-        gprsProfile.iGuaranteedRate = iQoSR99_R4Negotiated.iGuaranteedRate;
-        }
-   // If extension is KConfigRel5
-   else if ( TPacketDataConfigBase::KConfigRel5 == profile.ExtensionId() )
-        { 
-        
-TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::GetProfileParameters. Rel 5");            
-        TPckg<RPacketQoS::TQoSR5Negotiated >* gprsProfilePckg = 
-                ( TPckg<RPacketQoS::TQoSR5Negotiated >* ) aProfile;
-        RPacketQoS::TQoSR5Negotiated& gprsProfile = ( *gprsProfilePckg )();
-
-        gprsProfile.iTrafficClass = iQoSR5Negotiated.iTrafficClass;
-        gprsProfile.iDeliveryOrderReqd =
-            iQoSR5Negotiated.iDeliveryOrderReqd;
-        gprsProfile.iDeliverErroneousSDU =
-            iQoSR5Negotiated.iDeliverErroneousSDU;
-        gprsProfile.iMaxSDUSize = iQoSR5Negotiated.iMaxSDUSize;
-        gprsProfile.iMaxRate = iQoSR5Negotiated.iMaxRate;
-        gprsProfile.iBER = iQoSR5Negotiated.iBER;
-        gprsProfile.iSDUErrorRatio = iQoSR5Negotiated.iSDUErrorRatio;
-        gprsProfile.iTrafficHandlingPriority =
-            iQoSR5Negotiated.iTrafficHandlingPriority;
-        gprsProfile.iTransferDelay = iQoSR5Negotiated.iTransferDelay;
-        gprsProfile.iGuaranteedRate = iQoSR5Negotiated.iGuaranteedRate;	   
-	    gprsProfile.iSignallingIndication = 
-            iQoSR5Negotiated.iSignallingIndication;	
-	    gprsProfile.iSourceStatisticsDescriptor =
-            iQoSR5Negotiated.iSourceStatisticsDescriptor;	
-        }        
-        
-    else 
-        {
-        return KErrNotSupported;
-        }
-
-    return KErrNone;
-    }
-
-//----------------------------------------------------------------------------
-// CMmPacketQoSGsmWcdmaExt::NotifyProfileChanged
-// Saves new profile internally
-//----------------------------------------------------------------------------
-
-TInt CMmPacketQoSGsmWcdmaExt::NotifyProfileChanged(
-        TDes8* aProfile )    
-	{
-
-  	TPckg<TPacketDataConfigBase>* profilePckg = 
-            ( TPckg<TPacketDataConfigBase>* ) aProfile;
-        TPacketDataConfigBase& profile = ( *profilePckg )();
-
-    if ( TPacketDataConfigBase::KConfigGPRS == profile.ExtensionId() ||
-        TPacketDataConfigBase::KConfigRel99Rel4 == profile.ExtensionId()||
-        TPacketDataConfigBase::KConfigRel5 == profile.ExtensionId() )
-        {
-        iQoSGPRSNotifyPckg = aProfile; 
-        return KErrNone;
-        }
-
-	return KErrNotSupported;
-
-    }
-
-//----------------------------------------------------------------------------
-// CMmPacketQoSGsmWcdmaExt::NotifyProfileChangedCancel
-// Clears internally saved profile
-//----------------------------------------------------------------------------
-
-void CMmPacketQoSGsmWcdmaExt::NotifyProfileChangedCancel()
-    {
-TFLOGSTRING( "TSY: CMmPacketQoSGsmWcdmaExt::NotifyProfileChangedCancel." );
-
-	iQoSGPRSNotifyPckg = NULL;
-
-    }
-
-//----------------------------------------------------------------------------
-// CMmPacketQoSGsmWcdmaExt::SetProfileParametersL
-// Sends request for profile parameters to network
-//----------------------------------------------------------------------------
-
-TInt CMmPacketQoSGsmWcdmaExt::SetProfileParametersL(
-        TDes8* aProfile ) 
-    {
-TFLOGSTRING2("TSY: CMmPacketQoSGsmWcdmaExt::SetProfileParametersL. \t aProfile:%d", aProfile );
-
-	//Datapackage
-	CMmDataPackage data;
-
-    // Initialize parameters 
-    TInfoName contextName;
-    RPacketContext::TProtocolType pdpType;
-    TBool contextType( EFalse );
-    TInfoName primaryContextName;
-
-    //Get context configuration information 
-    TInt ret = iMmPacketQoSTsy->PacketContextTsy()->
-        PacketContextGsmWcdmaExt()->GetConfigurationData(
-        contextName, pdpType, contextType, primaryContextName );
-
-	 //Get context status
-    RPacketContext::TContextStatus contextStatus =
-        iMmPacketQoSTsy->PacketContextTsy()->ContextStatus();
-
-	//initialize contextParams struct  
-	TContextParams	contextParams; 
-
-	contextParams.iContextName = contextName;
-	contextParams.iContextType = contextType;
-	contextParams.iPdpType = pdpType;
-	contextParams.iPrimaryContextName = primaryContextName;
-	contextParams.iContextStatus = contextStatus;
-	
-	TPckg<TPacketDataConfigBase>* profilePckg = 
-						( TPckg<TPacketDataConfigBase>* ) aProfile;
-    TPacketDataConfigBase& profile = ( *profilePckg )();
-
-	//Save what client has requested
-	if ( TPacketDataConfigBase::KConfigGPRS == profile.ExtensionId() )
-		{
-        TPckg<RPacketQoS::TQoSGPRSRequested >* gprsProfilePckg = 
-            ( TPckg<RPacketQoS::TQoSGPRSRequested >* ) aProfile;
-        RPacketQoS::TQoSGPRSRequested& gprsProfile =( *gprsProfilePckg )();
-        iRequested = gprsProfile;
-        iConfigurationType = TPacketDataConfigBase::KConfigGPRS;        
-
-        iQoSGPRSRequested = ETrue;
-        }
-    else if ( TPacketDataConfigBase::KConfigRel99Rel4 == profile.ExtensionId() )
-        {
-        TPckg<RPacketQoS::TQoSR99_R4Requested >* gprsProfilePckg = 
-             ( TPckg<RPacketQoS::TQoSR99_R4Requested >* ) aProfile;
-        RPacketQoS::TQoSR99_R4Requested& gprsProfile = ( *gprsProfilePckg )();
-        iRequested99 = gprsProfile;
-        iConfigurationType = TPacketDataConfigBase::KConfigRel99Rel4;
-
-        iQoSR99_R4Requested = ETrue;
-        }
-    else if ( TPacketDataConfigBase::KConfigRel5 == profile.ExtensionId() )
-        {
-TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::SetProfileParameters. Rel 5");   
-        TPckg<RPacketQoS::TQoSR5Requested >* gprsProfilePckg = 
-             ( TPckg<RPacketQoS::TQoSR5Requested >* ) aProfile;
-        RPacketQoS::TQoSR5Requested& gprsProfile = ( *gprsProfilePckg )();
-        iRequestedR5 = gprsProfile;
-        iConfigurationType = TPacketDataConfigBase::KConfigRel5;
-
-        iQoSR5Requested = ETrue;
-        }
-    else
-        {
-        ret = KErrNotSupported;		
-        }
-
-
-    if ( KErrNone == ret )
-        {
-      
-        data.PackData( &contextParams, &aProfile );
-        TInt err = iMmPacketService->MessageManager()->HandleRequestL( 
-            EPacketQoSSetProfileParams, &data ); 
-
-		if ( KErrNone != err )
-			{
-			ret = KErrNotSupported;
-			}
-			
-        iQosAsked = ETrue;
-        }
-
-    else
-        {
-        ret = KErrNotSupported;
-        }
-
-    return ret;
-    }
-
-//----------------------------------------------------------------------------
-// CMmPacketQoSGsmWcdmaExt::CompleteSetProfileParameters
-// Completes SetProfileParameters request to client
-//----------------------------------------------------------------------------
-
-void CMmPacketQoSGsmWcdmaExt::CompleteSetProfileParameters(
-		const TInt aErrorValue )
-    {
-TFLOGSTRING2("TSY: CMmPacketQoSGsmWcdmaExt::CompleteSetProfileParameters.  \t aErrorValue:%d", aErrorValue );
-
-    // Call CompleteSetProfileParameters from QoS Tsy
-    iMmPacketQoSTsy->CompleteSetProfileParameters( aErrorValue );
-
-    }
-
-//----------------------------------------------------------------------------
-// CMmPacketQoSGsmWcdmaExt::CompleteSetProfileParameters
-// Completes the notification to client.
-// save negotiated  qos values (values returned by network) 
-//----------------------------------------------------------------------------
-
-void CMmPacketQoSGsmWcdmaExt::CompleteNotifyProfileChanged(
-        CMmDataPackage* aDataPackage )
-    {
-
-	TInfoName mmPacketContextName;
-    
-    const CMmPacketDataPackage* data = 
-        reinterpret_cast<const CMmPacketDataPackage*>(aDataPackage);
-    //Get Qos parameters
-    data->GetProfileChanged( iQoSGPRSNegotiated, iQoSR99_R4Negotiated, 
-        iQoSR5Negotiated );
-    //Unpack data from datapackage
-    data->UnPackData( mmPacketContextName );
-
-
-
-   
-TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::CompleteNotifyProfileChanged . COPY new R99/R4 default values");
-		//Copy negotiated values to minimun values
-		iRequested99.iMinTrafficClass = iQoSR99_R4Negotiated.iTrafficClass;
-	    iRequested99.iMinDeliveryOrderReqd = 
-
-
-									iQoSR99_R4Negotiated.iDeliveryOrderReqd;
-	    iRequested99.iMinDeliverErroneousSDU = 
-
-
-									iQoSR99_R4Negotiated.iDeliverErroneousSDU;
-	    iRequested99.iMinAcceptableMaxSDUSize = 
-
-
-									iQoSR99_R4Negotiated.iMaxSDUSize;
-	    iRequested99.iMinAcceptableMaxRate = iQoSR99_R4Negotiated.iMaxRate;
-	    iRequested99.iMaxBER = iQoSR99_R4Negotiated.iBER;
-	    iRequested99.iMaxSDUErrorRatio = iQoSR99_R4Negotiated.iSDUErrorRatio;
-	    iRequested99.iMinTrafficHandlingPriority = 
-
-
-						iQoSR99_R4Negotiated.iTrafficHandlingPriority;
-	    iRequested99.iMaxTransferDelay = iQoSR99_R4Negotiated.iTransferDelay;
-		iRequested99.iMinGuaranteedRate = 
-
-
-										iQoSR99_R4Negotiated.iGuaranteedRate;
-
-		//Copy negotiated values to requested values for default usage of 2nd 
-        //context TFT modify
-	    iRequested99.iReqTrafficClass = iQoSR99_R4Negotiated.iTrafficClass;
-	    iRequested99.iReqDeliveryOrderReqd = 
-
-
-	                                iQoSR99_R4Negotiated.iDeliveryOrderReqd;
-        iRequested99.iReqDeliverErroneousSDU = 
-
-
-                                    iQoSR99_R4Negotiated.iDeliverErroneousSDU;
-        iRequested99.iReqMaxSDUSize = iQoSR99_R4Negotiated.iMaxSDUSize;
-        iRequested99.iReqMaxRate = iQoSR99_R4Negotiated.iMaxRate;
-        iRequested99.iReqBER = iQoSR99_R4Negotiated.iBER;
-        iRequested99.iReqSDUErrorRatio = iQoSR99_R4Negotiated.iSDUErrorRatio;
-        iRequested99.iReqTrafficHandlingPriority = 
-
-
-                                iQoSR99_R4Negotiated.iTrafficHandlingPriority;
-        iRequested99.iReqTransferDelay = iQoSR99_R4Negotiated.iTransferDelay;
-        iRequested99.iReqGuaranteedRate = iQoSR99_R4Negotiated.iGuaranteedRate;
-
-
-TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::CompleteNotifyProfileChanged . COPY new R97 default values");
-        iRequested.iReqPrecedence = iQoSGPRSNegotiated.iPrecedence;
-        iRequested.iMinPrecedence = iQoSGPRSNegotiated.iPrecedence;
-
-        iRequested.iReqDelay = iQoSGPRSNegotiated.iDelay;
-        iRequested.iMinDelay = iQoSGPRSNegotiated.iDelay;
-
-        iRequested.iReqReliability = iQoSGPRSNegotiated.iReliability;
-        iRequested.iMinReliability = iQoSGPRSNegotiated.iReliability;
-
-        iRequested.iReqPeakThroughput = iQoSGPRSNegotiated.iPeakThroughput;
-        iRequested.iMinPeakThroughput = iQoSGPRSNegotiated.iPeakThroughput;
-
-        iRequested.iReqMeanThroughput = iQoSGPRSNegotiated.iMeanThroughput;
-        iRequested.iMinMeanThroughput = iQoSGPRSNegotiated.iMeanThroughput;
-        
-
-
-TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::CompleteNotifyProfileChanged . COPY new R5 default values");
-
-        //Copy negotiated values to minimun values
-        iRequestedR5.iMinTrafficClass = iQoSR5Negotiated.iTrafficClass;
-        iRequestedR5.iMinDeliveryOrderReqd = 
-            iQoSR5Negotiated.iDeliveryOrderReqd;
-        iRequestedR5.iMinDeliverErroneousSDU = 
-            iQoSR5Negotiated.iDeliverErroneousSDU;
-        iRequestedR5.iMinAcceptableMaxSDUSize = 
-            iQoSR5Negotiated.iMaxSDUSize;
-        iRequestedR5.iMinAcceptableMaxRate = iQoSR5Negotiated.iMaxRate;
-        iRequestedR5.iMaxBER = iQoSR5Negotiated.iBER;
-        iRequestedR5.iMaxSDUErrorRatio = iQoSR5Negotiated.iSDUErrorRatio;
-        iRequestedR5.iMinTrafficHandlingPriority = 
-            iQoSR5Negotiated.iTrafficHandlingPriority;
-        iRequestedR5.iMaxTransferDelay = iQoSR5Negotiated.iTransferDelay;
-        iRequestedR5.iMinGuaranteedRate = iQoSR5Negotiated.iGuaranteedRate;
-
-        //Copy negotiated values to requested values for default usage of 2nd 
-        //context TFT modify
-        iRequestedR5.iReqTrafficClass = iQoSR5Negotiated.iTrafficClass;
-        iRequestedR5.iReqDeliveryOrderReqd = 
-            iQoSR5Negotiated.iDeliveryOrderReqd;
-        iRequestedR5.iReqDeliverErroneousSDU =
-            iQoSR5Negotiated.iDeliverErroneousSDU;
-        iRequestedR5.iReqMaxSDUSize = iQoSR5Negotiated.iMaxSDUSize;
-        iRequestedR5.iReqMaxRate = iQoSR5Negotiated.iMaxRate;
-        iRequestedR5.iReqBER = iQoSR5Negotiated.iBER;
-        iRequestedR5.iReqSDUErrorRatio = iQoSR5Negotiated.iSDUErrorRatio;
-        iRequestedR5.iReqTrafficHandlingPriority = 
-            iQoSR5Negotiated.iTrafficHandlingPriority;
-        iRequestedR5.iReqTransferDelay = iQoSR5Negotiated.iTransferDelay;
-        iRequestedR5.iReqGuaranteedRate = iQoSR5Negotiated.iGuaranteedRate;
-        iRequestedR5.iSignallingIndication = 
-            iQoSR5Negotiated.iSignallingIndication;
-
-
-        iRequestedR5.iSourceStatisticsDescriptor = 
-            iQoSR5Negotiated.iSourceStatisticsDescriptor;
-        
-    // If pointer iQoSGPRSNotifyPckg exist
-    if ( NULL != iQoSGPRSNotifyPckg )
-        {
-        TBool completeToClient( EFalse );
-
-        TPckg<TPacketDataConfigBase>* profilePckg = 
-                ( TPckg<TPacketDataConfigBase>* ) iQoSGPRSNotifyPckg;
-        TPacketDataConfigBase& profile = ( *profilePckg )();
-
-        // if client uses R97 QoS parameters and aQoSNegotiated 
-        // have been set
-        if ( TPacketDataConfigBase::KConfigGPRS == profile.ExtensionId() &&
-            iQoSGPRSRequested )
-            {
-            completeToClient = ETrue;
-
-            TPckg<RPacketQoS::TQoSGPRSNegotiated >* gprsProfilePckg = 
-                ( TPckg<RPacketQoS::TQoSGPRSNegotiated >* ) iQoSGPRSNotifyPckg;
-            RPacketQoS::TQoSGPRSNegotiated& gprsProfile = 
-                ( *gprsProfilePckg )();
-
-            // Update the client side data through pointers
-            gprsProfile = iQoSGPRSNegotiated;
-
-TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::CompleteNotifyProfileChanged.  R97/98 QoS Parameters in use");
-            }
-
-        // if client uses R99 QoS parameters and aQoS99Negotiated 
-        // have been set
-        else if ( TPacketDataConfigBase::KConfigRel99Rel4 ==
-                 profile.ExtensionId() && iQoSR99_R4Requested )
-            {
-            completeToClient = ETrue;
-                        
-                TPckg<RPacketQoS::TQoSR99_R4Negotiated >* gprsProfilePckg = 
-                    ( TPckg<RPacketQoS::TQoSR99_R4Negotiated >* ) iQoSGPRSNotifyPckg;
-                RPacketQoS::TQoSR99_R4Negotiated& gprsProfile = 
-                    ( *gprsProfilePckg )();
-                                       
-                // Update the client side data through pointers
-                gprsProfile = iQoSR99_R4Negotiated;
-TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::CompleteNotifyProfileChanged.  R99/R4 QoS Parameters in use");
-            
-            }
-
-        else if ( TPacketDataConfigBase::KConfigRel5 ==
-                profile.ExtensionId() && iQoSR5Requested )
-            {
-            completeToClient = ETrue;
-
-            TPckg<RPacketQoS::TQoSR5Negotiated >* gprsProfilePckg = 
-                ( TPckg<RPacketQoS::TQoSR5Negotiated >* ) iQoSGPRSNotifyPckg;
-            RPacketQoS::TQoSR5Negotiated& gprsProfile = 
-                ( *gprsProfilePckg )();
-
-            // Update the client side data through pointers
-            gprsProfile = iQoSR5Negotiated;
-TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::CompleteNotifyProfileChanged.  R5 QoS Parameters in use");
-            }            
-
-        if ( completeToClient )
-            {
-
-            // Null pointers as notification is completed
-            iQoSGPRSNotifyPckg = NULL;
-
-            // Call CompleteNotifyProfileChanged from TSY
-            iMmPacketQoSTsy->CompleteNotifyProfileChanged();
-                                
-            }
-        }
-    }
-
-//----------------------------------------------------------------------------
-// CMmPacketQoSGsmWcdmaExt::ProfileAsked
-// Return value iQosAsked is true if client has request 
-// certain Qos values
-//----------------------------------------------------------------------------
-
-TBool CMmPacketQoSGsmWcdmaExt::ProfileAsked()
-    {    
-    return iQosAsked;    
-    }
-
-
-//----------------------------------------------------------------------------
-// CMmPacketQoSGsmWcdmaExt::RequestedR5
-// Returns Rel5 Qos values reguested by client
-//----------------------------------------------------------------------------
-RPacketQoS::TQoSR5Requested* CMmPacketQoSGsmWcdmaExt::RequestedR5()
-
-    {
-    return &iRequestedR5;
-    }
-
-//----------------------------------------------------------------------------
-// CMmPacketQoSGsmWcdmaExt::Requested99
-// Returns 99 Qos values reguested by client
-//----------------------------------------------------------------------------
-
-RPacketQoS::TQoSR99_R4Requested* CMmPacketQoSGsmWcdmaExt::Requested99()
-
-    {
-    return &iRequested99;
-    }
-
-
-//----------------------------------------------------------------------------
-// CMmPacketQoSGsmWcdmaExt::Requested97
-// Returns 97/98 Qos values reguested by client
-//----------------------------------------------------------------------------
-
-RPacketQoS::TQoSGPRSRequested* CMmPacketQoSGsmWcdmaExt::Requested97()
-    {
-    return &iRequested;
-    }
-
-//----------------------------------------------------------------------------
-// CMmPacketQoSGsmWcdmaExt::ConfigurationType
-// Returns return configuration type
-//----------------------------------------------------------------------------
-
-TInt CMmPacketQoSGsmWcdmaExt::ConfigurationType() const
-    {
-    return iConfigurationType;
-    }
-
-
-//  End of File
+// Copyright (c) 2006-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:
+//
+
+
+
+//  INCLUDE FILES
+#include "Cmmpacketservicetsy.h"
+#include "Cmmpacketcontexttsy.h"
+#include "cmmpacketqosgsmwcdmaext.h"
+#include "Cmmpacketqostsy.h"
+#include "Cmmpacketdef.h"
+#include "etelqos.h"
+#include "etelpckt.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+CMmPacketQoSGsmWcdmaExt::CMmPacketQoSGsmWcdmaExt()
+    {
+    }
+
+CMmPacketQoSGsmWcdmaExt* CMmPacketQoSGsmWcdmaExt::NewL(
+        CMmPacketQoSTsy* aMmPacketQoSTsy,     
+        CMmPacketServiceTsy* aMmPacketService ) 
+    {
+    CMmPacketQoSGsmWcdmaExt* packetQoSGsmWcdmaExt =
+        new ( ELeave ) CMmPacketQoSGsmWcdmaExt();
+    
+    CleanupStack::PushL( packetQoSGsmWcdmaExt );
+    packetQoSGsmWcdmaExt->iMmPacketQoSTsy = aMmPacketQoSTsy;
+    packetQoSGsmWcdmaExt->iMmPacketService = aMmPacketService;
+    packetQoSGsmWcdmaExt->ConstructL();
+    CleanupStack::Pop( packetQoSGsmWcdmaExt );
+
+TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::NewL. ");
+    return packetQoSGsmWcdmaExt;
+    }
+
+void CMmPacketQoSGsmWcdmaExt::ConstructL()
+    {
+	iQoSGPRSNotifyPckg = NULL;
+    iQosAsked = EFalse;
+    }
+    
+CMmPacketQoSGsmWcdmaExt::~CMmPacketQoSGsmWcdmaExt()
+    {
+TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::~CMmPacketQoSGsmWcdmaExt." );
+    }
+
+
+
+//----------------------------------------------------------------------------
+// CMmPacketQoSGsmWcdmaExt::GetProfileCapabilities
+// Gets profile capabilities 
+//----------------------------------------------------------------------------
+
+TInt CMmPacketQoSGsmWcdmaExt::GetProfileCapabilities(
+        TDes8* aProfileCaps )
+    {
+TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::GetProfileCapabilities." );
+
+    // Unpack the packet
+    TPckg<TPacketDataConfigBase>* profileCapsPckg = 
+        ( TPckg<TPacketDataConfigBase>* ) aProfileCaps;
+    TPacketDataConfigBase& profileCaps = ( *profileCapsPckg )();
+
+    // If extension is KConfigGPRS
+    if ( TPacketDataConfigBase::KConfigGPRS == profileCaps.ExtensionId() )
+        {
+        TPckg<RPacketQoS::TQoSCapsGPRS>* gprsProfileCapsPckg = 
+            ( TPckg<RPacketQoS::TQoSCapsGPRS>* ) aProfileCaps;
+        RPacketQoS::TQoSCapsGPRS& gprsProfileCaps = ( *gprsProfileCapsPckg )();
+
+        gprsProfileCaps.iPrecedence = KMmPrecedence;
+        gprsProfileCaps.iDelay = KMmDelay;
+        gprsProfileCaps.iReliability = KMmReliability;
+        gprsProfileCaps.iPeak = KMmPeak;
+        gprsProfileCaps.iMean = KMmMean;
+        }
+
+    // Else if extension is KConfigRel99Rel4 or KConfigRel5
+    else if ( TPacketDataConfigBase::KConfigRel99Rel4 == 
+        profileCaps.ExtensionId() ||
+        TPacketDataConfigBase::KConfigRel5 == profileCaps.ExtensionId() )
+        {
+        TPckg<RPacketQoS::TQoSCapsR99_R4>* gprs99ProfileCapsPckg = 
+            ( TPckg<RPacketQoS::TQoSCapsR99_R4>* ) aProfileCaps;
+        RPacketQoS::TQoSCapsR99_R4& gprsProfileCaps = 
+            ( *gprs99ProfileCapsPckg )();
+
+        gprsProfileCaps.iTrafficClass = KMmTrafficClass;
+        gprsProfileCaps.iDeliveryOrderReqd = KMmDeliveryOrderReqd;
+        gprsProfileCaps.iDeliverErroneousSDU = KMmErroneousSDUDelivery;
+        gprsProfileCaps.iBER = KMmBitErrorRatio;
+        gprsProfileCaps.iSDUErrorRatio = KMmSDUErrorRatio;
+        gprsProfileCaps.iTrafficHandlingPriority = KMmTrafficHandlingPriority;
+        }
+
+    else
+        {
+        return KErrNotSupported;
+        }
+
+    return KErrNone;
+    }
+
+
+//----------------------------------------------------------------------------
+// CMmPacketQoSGsmWcdmaExt::GetProfileParameters
+// Gets negotiated Qos parameters 
+//----------------------------------------------------------------------------
+
+TInt CMmPacketQoSGsmWcdmaExt::GetProfileParameters(
+        TDes8* aProfile ) 
+    {
+
+    // Unpack the packet
+    TPckg<TPacketDataConfigBase>* profilePckg = 
+        ( TPckg<TPacketDataConfigBase>* ) aProfile;
+    TPacketDataConfigBase& profile = ( *profilePckg )();
+TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::GetProfileParameters.");
+
+// If extension is KConfigGPRS
+    if ( TPacketDataConfigBase::KConfigGPRS == profile.ExtensionId() )
+        {
+        TPckg<RPacketQoS::TQoSGPRSNegotiated >* gprsProfilePckg = 
+                ( TPckg<RPacketQoS::TQoSGPRSNegotiated >* ) aProfile;
+        RPacketQoS::TQoSGPRSNegotiated& gprsProfile = ( *gprsProfilePckg )();
+
+        gprsProfile.iPrecedence = iQoSGPRSNegotiated.iPrecedence;
+        gprsProfile.iDelay = iQoSGPRSNegotiated.iDelay;
+        gprsProfile.iReliability = iQoSGPRSNegotiated.iReliability;
+        gprsProfile.iPeakThroughput = iQoSGPRSNegotiated.iPeakThroughput;
+        gprsProfile.iMeanThroughput = iQoSGPRSNegotiated.iMeanThroughput;
+        }
+// If extension is KConfigRel99Rel4
+    else if ( TPacketDataConfigBase::KConfigRel99Rel4 == profile.ExtensionId() )
+        {
+        TPckg<RPacketQoS::TQoSR99_R4Negotiated >* gprsProfilePckg = 
+                ( TPckg<RPacketQoS::TQoSR99_R4Negotiated >* ) aProfile;
+        RPacketQoS::TQoSR99_R4Negotiated& gprsProfile = ( *gprsProfilePckg )();
+
+        gprsProfile.iTrafficClass = iQoSR99_R4Negotiated.iTrafficClass;
+        gprsProfile.iDeliveryOrderReqd =
+            iQoSR99_R4Negotiated.iDeliveryOrderReqd;
+        gprsProfile.iDeliverErroneousSDU =
+            iQoSR99_R4Negotiated.iDeliverErroneousSDU;
+        gprsProfile.iMaxSDUSize = iQoSR99_R4Negotiated.iMaxSDUSize;
+        gprsProfile.iMaxRate = iQoSR99_R4Negotiated.iMaxRate;
+        gprsProfile.iBER = iQoSR99_R4Negotiated.iBER;
+        gprsProfile.iSDUErrorRatio = iQoSR99_R4Negotiated.iSDUErrorRatio;
+        gprsProfile.iTrafficHandlingPriority 
+            = iQoSR99_R4Negotiated.iTrafficHandlingPriority;
+        gprsProfile.iTransferDelay = iQoSR99_R4Negotiated.iTransferDelay;
+        gprsProfile.iGuaranteedRate = iQoSR99_R4Negotiated.iGuaranteedRate;
+        }
+   // If extension is KConfigRel5
+   else if ( TPacketDataConfigBase::KConfigRel5 == profile.ExtensionId() )
+        { 
+        
+TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::GetProfileParameters. Rel 5");            
+        TPckg<RPacketQoS::TQoSR5Negotiated >* gprsProfilePckg = 
+                ( TPckg<RPacketQoS::TQoSR5Negotiated >* ) aProfile;
+        RPacketQoS::TQoSR5Negotiated& gprsProfile = ( *gprsProfilePckg )();
+
+        gprsProfile.iTrafficClass = iQoSR5Negotiated.iTrafficClass;
+        gprsProfile.iDeliveryOrderReqd =
+            iQoSR5Negotiated.iDeliveryOrderReqd;
+        gprsProfile.iDeliverErroneousSDU =
+            iQoSR5Negotiated.iDeliverErroneousSDU;
+        gprsProfile.iMaxSDUSize = iQoSR5Negotiated.iMaxSDUSize;
+        gprsProfile.iMaxRate = iQoSR5Negotiated.iMaxRate;
+        gprsProfile.iBER = iQoSR5Negotiated.iBER;
+        gprsProfile.iSDUErrorRatio = iQoSR5Negotiated.iSDUErrorRatio;
+        gprsProfile.iTrafficHandlingPriority =
+            iQoSR5Negotiated.iTrafficHandlingPriority;
+        gprsProfile.iTransferDelay = iQoSR5Negotiated.iTransferDelay;
+        gprsProfile.iGuaranteedRate = iQoSR5Negotiated.iGuaranteedRate;	   
+	    gprsProfile.iSignallingIndication = 
+            iQoSR5Negotiated.iSignallingIndication;	
+	    gprsProfile.iSourceStatisticsDescriptor =
+            iQoSR5Negotiated.iSourceStatisticsDescriptor;	
+        }        
+        
+    else 
+        {
+        return KErrNotSupported;
+        }
+
+    return KErrNone;
+    }
+
+//----------------------------------------------------------------------------
+// CMmPacketQoSGsmWcdmaExt::NotifyProfileChanged
+// Saves new profile internally
+//----------------------------------------------------------------------------
+
+TInt CMmPacketQoSGsmWcdmaExt::NotifyProfileChanged(
+        TDes8* aProfile )    
+	{
+
+  	TPckg<TPacketDataConfigBase>* profilePckg = 
+            ( TPckg<TPacketDataConfigBase>* ) aProfile;
+        TPacketDataConfigBase& profile = ( *profilePckg )();
+
+    if ( TPacketDataConfigBase::KConfigGPRS == profile.ExtensionId() ||
+        TPacketDataConfigBase::KConfigRel99Rel4 == profile.ExtensionId()||
+        TPacketDataConfigBase::KConfigRel5 == profile.ExtensionId() )
+        {
+        iQoSGPRSNotifyPckg = aProfile; 
+        return KErrNone;
+        }
+
+	return KErrNotSupported;
+
+    }
+
+//----------------------------------------------------------------------------
+// CMmPacketQoSGsmWcdmaExt::NotifyProfileChangedCancel
+// Clears internally saved profile
+//----------------------------------------------------------------------------
+
+void CMmPacketQoSGsmWcdmaExt::NotifyProfileChangedCancel()
+    {
+TFLOGSTRING( "TSY: CMmPacketQoSGsmWcdmaExt::NotifyProfileChangedCancel." );
+
+	iQoSGPRSNotifyPckg = NULL;
+
+    }
+
+//----------------------------------------------------------------------------
+// CMmPacketQoSGsmWcdmaExt::SetProfileParametersL
+// Sends request for profile parameters to network
+//----------------------------------------------------------------------------
+
+TInt CMmPacketQoSGsmWcdmaExt::SetProfileParametersL(
+        TDes8* aProfile ) 
+    {
+TFLOGSTRING2("TSY: CMmPacketQoSGsmWcdmaExt::SetProfileParametersL. \t aProfile:%d", aProfile );
+
+	//Datapackage
+	CMmDataPackage data;
+
+    // Initialize parameters 
+    TInfoName contextName;
+    RPacketContext::TProtocolType pdpType;
+    TBool contextType( EFalse );
+    TInfoName primaryContextName;
+
+    //Get context configuration information 
+    TInt ret = iMmPacketQoSTsy->PacketContextTsy()->
+        PacketContextGsmWcdmaExt()->GetConfigurationData(
+        contextName, pdpType, contextType, primaryContextName );
+
+	 //Get context status
+    RPacketContext::TContextStatus contextStatus =
+        iMmPacketQoSTsy->PacketContextTsy()->ContextStatus();
+
+	//initialize contextParams struct  
+	TContextParams	contextParams; 
+
+	contextParams.iContextName = contextName;
+	contextParams.iContextType = contextType;
+	contextParams.iPdpType = pdpType;
+	contextParams.iPrimaryContextName = primaryContextName;
+	contextParams.iContextStatus = contextStatus;
+	
+	TPckg<TPacketDataConfigBase>* profilePckg = 
+						( TPckg<TPacketDataConfigBase>* ) aProfile;
+    TPacketDataConfigBase& profile = ( *profilePckg )();
+
+	//Save what client has requested
+	if ( TPacketDataConfigBase::KConfigGPRS == profile.ExtensionId() )
+		{
+        TPckg<RPacketQoS::TQoSGPRSRequested >* gprsProfilePckg = 
+            ( TPckg<RPacketQoS::TQoSGPRSRequested >* ) aProfile;
+        RPacketQoS::TQoSGPRSRequested& gprsProfile =( *gprsProfilePckg )();
+        iRequested = gprsProfile;
+        iConfigurationType = TPacketDataConfigBase::KConfigGPRS;        
+
+        iQoSGPRSRequested = ETrue;
+        }
+    else if ( TPacketDataConfigBase::KConfigRel99Rel4 == profile.ExtensionId() )
+        {
+        TPckg<RPacketQoS::TQoSR99_R4Requested >* gprsProfilePckg = 
+             ( TPckg<RPacketQoS::TQoSR99_R4Requested >* ) aProfile;
+        RPacketQoS::TQoSR99_R4Requested& gprsProfile = ( *gprsProfilePckg )();
+        iRequested99 = gprsProfile;
+        iConfigurationType = TPacketDataConfigBase::KConfigRel99Rel4;
+
+        iQoSR99_R4Requested = ETrue;
+        }
+    else if ( TPacketDataConfigBase::KConfigRel5 == profile.ExtensionId() )
+        {
+TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::SetProfileParameters. Rel 5");   
+        TPckg<RPacketQoS::TQoSR5Requested >* gprsProfilePckg = 
+             ( TPckg<RPacketQoS::TQoSR5Requested >* ) aProfile;
+        RPacketQoS::TQoSR5Requested& gprsProfile = ( *gprsProfilePckg )();
+        iRequestedR5 = gprsProfile;
+        iConfigurationType = TPacketDataConfigBase::KConfigRel5;
+
+        iQoSR5Requested = ETrue;
+        }
+    else
+        {
+        ret = KErrNotSupported;		
+        }
+
+
+    if ( KErrNone == ret )
+        {
+      
+        data.PackData( &contextParams, &aProfile );
+        TInt err = iMmPacketService->MessageManager()->HandleRequestL( 
+            EPacketQoSSetProfileParams, &data ); 
+
+		if ( KErrNone != err )
+			{
+			ret = KErrNotSupported;
+			}
+			
+        iQosAsked = ETrue;
+        }
+
+    else
+        {
+        ret = KErrNotSupported;
+        }
+
+    return ret;
+    }
+
+//----------------------------------------------------------------------------
+// CMmPacketQoSGsmWcdmaExt::CompleteSetProfileParameters
+// Completes SetProfileParameters request to client
+//----------------------------------------------------------------------------
+
+void CMmPacketQoSGsmWcdmaExt::CompleteSetProfileParameters(
+		const TInt aErrorValue )
+    {
+TFLOGSTRING2("TSY: CMmPacketQoSGsmWcdmaExt::CompleteSetProfileParameters.  \t aErrorValue:%d", aErrorValue );
+
+    // Call CompleteSetProfileParameters from QoS Tsy
+    iMmPacketQoSTsy->CompleteSetProfileParameters( aErrorValue );
+
+    }
+
+//----------------------------------------------------------------------------
+// CMmPacketQoSGsmWcdmaExt::CompleteSetProfileParameters
+// Completes the notification to client.
+// save negotiated  qos values (values returned by network) 
+//----------------------------------------------------------------------------
+
+void CMmPacketQoSGsmWcdmaExt::CompleteNotifyProfileChanged(
+        CMmDataPackage* aDataPackage )
+    {
+
+	TInfoName mmPacketContextName;
+    
+    const CMmPacketDataPackage* data = 
+        reinterpret_cast<const CMmPacketDataPackage*>(aDataPackage);
+    //Get Qos parameters
+    data->GetProfileChanged( iQoSGPRSNegotiated, iQoSR99_R4Negotiated, 
+        iQoSR5Negotiated );
+    //Unpack data from datapackage
+    data->UnPackData( mmPacketContextName );
+
+
+
+   
+TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::CompleteNotifyProfileChanged . COPY new R99/R4 default values");
+		//Copy negotiated values to minimun values
+		iRequested99.iMinTrafficClass = iQoSR99_R4Negotiated.iTrafficClass;
+	    iRequested99.iMinDeliveryOrderReqd = 
+
+
+									iQoSR99_R4Negotiated.iDeliveryOrderReqd;
+	    iRequested99.iMinDeliverErroneousSDU = 
+
+
+									iQoSR99_R4Negotiated.iDeliverErroneousSDU;
+	    iRequested99.iMinAcceptableMaxSDUSize = 
+
+
+									iQoSR99_R4Negotiated.iMaxSDUSize;
+	    iRequested99.iMinAcceptableMaxRate = iQoSR99_R4Negotiated.iMaxRate;
+	    iRequested99.iMaxBER = iQoSR99_R4Negotiated.iBER;
+	    iRequested99.iMaxSDUErrorRatio = iQoSR99_R4Negotiated.iSDUErrorRatio;
+	    iRequested99.iMinTrafficHandlingPriority = 
+
+
+						iQoSR99_R4Negotiated.iTrafficHandlingPriority;
+	    iRequested99.iMaxTransferDelay = iQoSR99_R4Negotiated.iTransferDelay;
+		iRequested99.iMinGuaranteedRate = 
+
+
+										iQoSR99_R4Negotiated.iGuaranteedRate;
+
+		//Copy negotiated values to requested values for default usage of 2nd 
+        //context TFT modify
+	    iRequested99.iReqTrafficClass = iQoSR99_R4Negotiated.iTrafficClass;
+	    iRequested99.iReqDeliveryOrderReqd = 
+
+
+	                                iQoSR99_R4Negotiated.iDeliveryOrderReqd;
+        iRequested99.iReqDeliverErroneousSDU = 
+
+
+                                    iQoSR99_R4Negotiated.iDeliverErroneousSDU;
+        iRequested99.iReqMaxSDUSize = iQoSR99_R4Negotiated.iMaxSDUSize;
+        iRequested99.iReqMaxRate = iQoSR99_R4Negotiated.iMaxRate;
+        iRequested99.iReqBER = iQoSR99_R4Negotiated.iBER;
+        iRequested99.iReqSDUErrorRatio = iQoSR99_R4Negotiated.iSDUErrorRatio;
+        iRequested99.iReqTrafficHandlingPriority = 
+
+
+                                iQoSR99_R4Negotiated.iTrafficHandlingPriority;
+        iRequested99.iReqTransferDelay = iQoSR99_R4Negotiated.iTransferDelay;
+        iRequested99.iReqGuaranteedRate = iQoSR99_R4Negotiated.iGuaranteedRate;
+
+
+TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::CompleteNotifyProfileChanged . COPY new R97 default values");
+        iRequested.iReqPrecedence = iQoSGPRSNegotiated.iPrecedence;
+        iRequested.iMinPrecedence = iQoSGPRSNegotiated.iPrecedence;
+
+        iRequested.iReqDelay = iQoSGPRSNegotiated.iDelay;
+        iRequested.iMinDelay = iQoSGPRSNegotiated.iDelay;
+
+        iRequested.iReqReliability = iQoSGPRSNegotiated.iReliability;
+        iRequested.iMinReliability = iQoSGPRSNegotiated.iReliability;
+
+        iRequested.iReqPeakThroughput = iQoSGPRSNegotiated.iPeakThroughput;
+        iRequested.iMinPeakThroughput = iQoSGPRSNegotiated.iPeakThroughput;
+
+        iRequested.iReqMeanThroughput = iQoSGPRSNegotiated.iMeanThroughput;
+        iRequested.iMinMeanThroughput = iQoSGPRSNegotiated.iMeanThroughput;
+        
+
+
+TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::CompleteNotifyProfileChanged . COPY new R5 default values");
+
+        //Copy negotiated values to minimun values
+        iRequestedR5.iMinTrafficClass = iQoSR5Negotiated.iTrafficClass;
+        iRequestedR5.iMinDeliveryOrderReqd = 
+            iQoSR5Negotiated.iDeliveryOrderReqd;
+        iRequestedR5.iMinDeliverErroneousSDU = 
+            iQoSR5Negotiated.iDeliverErroneousSDU;
+        iRequestedR5.iMinAcceptableMaxSDUSize = 
+            iQoSR5Negotiated.iMaxSDUSize;
+        iRequestedR5.iMinAcceptableMaxRate = iQoSR5Negotiated.iMaxRate;
+        iRequestedR5.iMaxBER = iQoSR5Negotiated.iBER;
+        iRequestedR5.iMaxSDUErrorRatio = iQoSR5Negotiated.iSDUErrorRatio;
+        iRequestedR5.iMinTrafficHandlingPriority = 
+            iQoSR5Negotiated.iTrafficHandlingPriority;
+        iRequestedR5.iMaxTransferDelay = iQoSR5Negotiated.iTransferDelay;
+        iRequestedR5.iMinGuaranteedRate = iQoSR5Negotiated.iGuaranteedRate;
+
+        //Copy negotiated values to requested values for default usage of 2nd 
+        //context TFT modify
+        iRequestedR5.iReqTrafficClass = iQoSR5Negotiated.iTrafficClass;
+        iRequestedR5.iReqDeliveryOrderReqd = 
+            iQoSR5Negotiated.iDeliveryOrderReqd;
+        iRequestedR5.iReqDeliverErroneousSDU =
+            iQoSR5Negotiated.iDeliverErroneousSDU;
+        iRequestedR5.iReqMaxSDUSize = iQoSR5Negotiated.iMaxSDUSize;
+        iRequestedR5.iReqMaxRate = iQoSR5Negotiated.iMaxRate;
+        iRequestedR5.iReqBER = iQoSR5Negotiated.iBER;
+        iRequestedR5.iReqSDUErrorRatio = iQoSR5Negotiated.iSDUErrorRatio;
+        iRequestedR5.iReqTrafficHandlingPriority = 
+            iQoSR5Negotiated.iTrafficHandlingPriority;
+        iRequestedR5.iReqTransferDelay = iQoSR5Negotiated.iTransferDelay;
+        iRequestedR5.iReqGuaranteedRate = iQoSR5Negotiated.iGuaranteedRate;
+        iRequestedR5.iSignallingIndication = 
+            iQoSR5Negotiated.iSignallingIndication;
+
+
+        iRequestedR5.iSourceStatisticsDescriptor = 
+            iQoSR5Negotiated.iSourceStatisticsDescriptor;
+        
+    // If pointer iQoSGPRSNotifyPckg exist
+    if ( NULL != iQoSGPRSNotifyPckg )
+        {
+        TBool completeToClient( EFalse );
+
+        TPckg<TPacketDataConfigBase>* profilePckg = 
+                ( TPckg<TPacketDataConfigBase>* ) iQoSGPRSNotifyPckg;
+        TPacketDataConfigBase& profile = ( *profilePckg )();
+
+        // if client uses R97 QoS parameters and aQoSNegotiated 
+        // have been set
+        if ( TPacketDataConfigBase::KConfigGPRS == profile.ExtensionId() &&
+            iQoSGPRSRequested )
+            {
+            completeToClient = ETrue;
+
+            TPckg<RPacketQoS::TQoSGPRSNegotiated >* gprsProfilePckg = 
+                ( TPckg<RPacketQoS::TQoSGPRSNegotiated >* ) iQoSGPRSNotifyPckg;
+            RPacketQoS::TQoSGPRSNegotiated& gprsProfile = 
+                ( *gprsProfilePckg )();
+
+            // Update the client side data through pointers
+            gprsProfile = iQoSGPRSNegotiated;
+
+TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::CompleteNotifyProfileChanged.  R97/98 QoS Parameters in use");
+            }
+
+        // if client uses R99 QoS parameters and aQoS99Negotiated 
+        // have been set
+        else if ( TPacketDataConfigBase::KConfigRel99Rel4 ==
+                 profile.ExtensionId() && iQoSR99_R4Requested )
+            {
+            completeToClient = ETrue;
+                        
+                TPckg<RPacketQoS::TQoSR99_R4Negotiated >* gprsProfilePckg = 
+                    ( TPckg<RPacketQoS::TQoSR99_R4Negotiated >* ) iQoSGPRSNotifyPckg;
+                RPacketQoS::TQoSR99_R4Negotiated& gprsProfile = 
+                    ( *gprsProfilePckg )();
+                                       
+                // Update the client side data through pointers
+                gprsProfile = iQoSR99_R4Negotiated;
+TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::CompleteNotifyProfileChanged.  R99/R4 QoS Parameters in use");
+            
+            }
+
+        else if ( TPacketDataConfigBase::KConfigRel5 ==
+                profile.ExtensionId() && iQoSR5Requested )
+            {
+            completeToClient = ETrue;
+
+            TPckg<RPacketQoS::TQoSR5Negotiated >* gprsProfilePckg = 
+                ( TPckg<RPacketQoS::TQoSR5Negotiated >* ) iQoSGPRSNotifyPckg;
+            RPacketQoS::TQoSR5Negotiated& gprsProfile = 
+                ( *gprsProfilePckg )();
+
+            // Update the client side data through pointers
+            gprsProfile = iQoSR5Negotiated;
+TFLOGSTRING("TSY: CMmPacketQoSGsmWcdmaExt::CompleteNotifyProfileChanged.  R5 QoS Parameters in use");
+            }            
+
+        if ( completeToClient )
+            {
+
+            // Null pointers as notification is completed
+            iQoSGPRSNotifyPckg = NULL;
+
+            // Call CompleteNotifyProfileChanged from TSY
+            iMmPacketQoSTsy->CompleteNotifyProfileChanged();
+                                
+            }
+        }
+    }
+
+//----------------------------------------------------------------------------
+// CMmPacketQoSGsmWcdmaExt::ProfileAsked
+// Return value iQosAsked is true if client has request 
+// certain Qos values
+//----------------------------------------------------------------------------
+
+TBool CMmPacketQoSGsmWcdmaExt::ProfileAsked()
+    {    
+    return iQosAsked;    
+    }
+
+
+//----------------------------------------------------------------------------
+// CMmPacketQoSGsmWcdmaExt::RequestedR5
+// Returns Rel5 Qos values reguested by client
+//----------------------------------------------------------------------------
+RPacketQoS::TQoSR5Requested* CMmPacketQoSGsmWcdmaExt::RequestedR5()
+
+    {
+    return &iRequestedR5;
+    }
+
+//----------------------------------------------------------------------------
+// CMmPacketQoSGsmWcdmaExt::Requested99
+// Returns 99 Qos values reguested by client
+//----------------------------------------------------------------------------
+
+RPacketQoS::TQoSR99_R4Requested* CMmPacketQoSGsmWcdmaExt::Requested99()
+
+    {
+    return &iRequested99;
+    }
+
+
+//----------------------------------------------------------------------------
+// CMmPacketQoSGsmWcdmaExt::Requested97
+// Returns 97/98 Qos values reguested by client
+//----------------------------------------------------------------------------
+
+RPacketQoS::TQoSGPRSRequested* CMmPacketQoSGsmWcdmaExt::Requested97()
+    {
+    return &iRequested;
+    }
+
+//----------------------------------------------------------------------------
+// CMmPacketQoSGsmWcdmaExt::ConfigurationType
+// Returns return configuration type
+//----------------------------------------------------------------------------
+
+TInt CMmPacketQoSGsmWcdmaExt::ConfigurationType() const
+    {
+    return iConfigurationType;
+    }
+
+
+//  End of File