telephonyserver/etelpacketdata/cetel/etelQoS.cpp
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
equal deleted inserted replaced
-1:000000000000 0:3553901f7fa8
       
     1 // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // ETel Multimode Quality of Service (QoS) Support
       
    15 // GPRS Rel97/98, CDMAOne, CDMA2000, GPRS/UMTS Rel99 and UMTS Rel4.
       
    16 // 
       
    17 //
       
    18 
       
    19 #include <et_clsvr.h>
       
    20 #include <etelext.h>
       
    21 
       
    22 // ETel Packet Data header files
       
    23 #include "etelQoS.h"
       
    24 #include "pcktptr.h"
       
    25 #include <pcktcs.h>
       
    26 
       
    27 // Used by ETel to instruct TSY to create a name for the newly opened object
       
    28 _LIT(KETelNewQoSName, "::");
       
    29 
       
    30 /***********************************************************************************/
       
    31 //
       
    32 // RPacketQoS
       
    33 //
       
    34 /***********************************************************************************/
       
    35 
       
    36 EXPORT_C RPacketQoS::RPacketQoS()
       
    37 	:iEtelPacketQoSPtrHolder(NULL)
       
    38 /** Standard constructor. */
       
    39 	{
       
    40 	}
       
    41 
       
    42 EXPORT_C void RPacketQoS::ConstructL()
       
    43 /**
       
    44  * This function creates an instance of CPacketQoSPtrHolder and assigns it to the 
       
    45  * iEtelPacketQoSPtrHolder pointer. 
       
    46  
       
    47 @capability None
       
    48 */
       
    49 	{
       
    50 	__ASSERT_ALWAYS(iEtelPacketQoSPtrHolder == NULL, PanicClient(EEtelPanicHandleNotClosed));
       
    51 	iEtelPacketQoSPtrHolder = CPacketQoSPtrHolder::NewL(CEtelPacketPtrHolder::EMaxNumPacketQoSPtrSlots, CEtelPacketPtrHolder::EMaxNumPacketQoSPtrCSlots);
       
    52 	}
       
    53 
       
    54 EXPORT_C void RPacketQoS::Destruct()
       
    55 /**
       
    56  * This function deletes and NULLs the iEtelPacketQoSPtrHolder pointer.
       
    57  
       
    58 @capability None
       
    59 */
       
    60 	{
       
    61 	delete iEtelPacketQoSPtrHolder;
       
    62 	iEtelPacketQoSPtrHolder = NULL;
       
    63 	}
       
    64 
       
    65 EXPORT_C TInt RPacketQoS::OpenNewQoS(RPacketContext& aPacketContext, TDes& aProfileName)
       
    66 //This function may be called by the client application.
       
    67 /** Creates a new QoS profile (i.e. RPacketQoS class instance). 
       
    68 
       
    69 An RPacketQoS may only be opened on an existing RPacketContext subsession. 
       
    70 
       
    71 When the new QoS profile is created, the TSY will assign it a unique name to it. The 
       
    72 client can use this name to uniquely identify the particular context.
       
    73 
       
    74 An opened RPacketContext must be closed explicitely by calling Close() to 
       
    75 prevent a resource (memory) leak.
       
    76 
       
    77 @param aPacketContext A reference to a previously instantiated RPacketContext, on 
       
    78 which to open the QoS profile.
       
    79 @param aProfileName On return, the unique QoS name.
       
    80 @return KErrNone if successful, a system-wide error code if not. 
       
    81 @capability None
       
    82 */
       
    83 	{
       
    84 	RSessionBase session = aPacketContext.SessionHandle();
       
    85 
       
    86 	TRAPD(ret,ConstructL());
       
    87 	if (ret)
       
    88 		{
       
    89 		return ret;
       
    90 		}
       
    91 	TInt subSessionHandle=aPacketContext.SubSessionHandle();
       
    92 	__ASSERT_ALWAYS(subSessionHandle!=0,PanicClient(EEtelPanicNullHandle)); // client has no existing sub-session!
       
    93 	TPtrC name(KETelNewQoSName);	// necessary so that server knows to ask TSY for new name
       
    94 
       
    95 	SetSessionHandle(session);
       
    96 	ret = CreateSubSession(session,EEtelOpenFromSubSession,TIpcArgs(&name,&aProfileName,subSessionHandle));
       
    97 	if (ret)
       
    98 		Destruct();
       
    99 	return ret;
       
   100 	}
       
   101 
       
   102 EXPORT_C TInt RPacketQoS::OpenExistingQoS(RPacketContext& aPacketContext, const TDesC& aProfileName)
       
   103 //This function may be called by the client application.
       
   104 /** Opens a handle on an existing RPacketQoS object identified by the profile name.
       
   105 
       
   106 An opened RPacketContext must be closed explicitely by calling Close() to
       
   107 prevent a resource (memory) leak.
       
   108 
       
   109 @param aPacketContext This identifies to which RPacketContext the QoS profile
       
   110 to be opened belongs.
       
   111 @param aProfileName This uniquely identifies to ETel/TSY which existing RPacketQoS
       
   112 object the client wants to open. This name was previously assigned by the
       
   113 TSY when the specified RPacketQoS was originally created using RPacketQoS::OpenNewQoS().
       
   114 @return KErrNone if successful, KErrNotFound if the object does not exist. 
       
   115 @capability None
       
   116 */
       
   117  	{
       
   118 	RSessionBase session = aPacketContext.SessionHandle();
       
   119 
       
   120 	TRAPD(ret,ConstructL());
       
   121 	if (ret)
       
   122 		{
       
   123 		Destruct();
       
   124 		return ret;
       
   125 		}
       
   126 	TInt subSessionHandle=aPacketContext.SubSessionHandle();
       
   127 	__ASSERT_ALWAYS(subSessionHandle != 0,PanicClient(EEtelPanicNullHandle));
       
   128 	__ASSERT_ALWAYS(aProfileName.Length() != 0,PanicClient(KErrBadName));
       
   129 
       
   130 	SetSessionHandle(session);
       
   131 	ret = CreateSubSession(session,EEtelOpenByNameFromSubSession,TIpcArgs(&aProfileName,TIpcArgs::ENothing,subSessionHandle));
       
   132 	if (ret)
       
   133 		Destruct();
       
   134 	return ret;
       
   135 	}
       
   136 
       
   137 EXPORT_C void RPacketQoS::Close()
       
   138 //This function may be called by the client application.
       
   139 /** Closes the client's current sub-session with ETel.
       
   140 
       
   141 Any outstanding requests the client may have with ETel (notifications, for 
       
   142 example) will be automatically destroyed by ETel.
       
   143 
       
   144 An opened RPacketContext must be closed explicitly by calling Close() to 
       
   145 prevent a resource (memory) leak. 
       
   146 @capability None
       
   147 */
       
   148 	{
       
   149 	CloseSubSession(EEtelClose);
       
   150 	Destruct();
       
   151 	}
       
   152 
       
   153 EXPORT_C void RPacketQoS::SetProfileParameters(TRequestStatus& aStatus, TDes8& aProfile) const
       
   154 //This asynchronous function may be called by the client application.
       
   155 /** Passes to the TSY all the parameters required to configure Quality of Service 
       
   156 for a particular context. 
       
   157 
       
   158 The parameters are passed via a TQoSGPRSRequested, TQoSCDMA2000Requested or 
       
   159 TQoSRequestedR99_R4 class, depending on the current network and packet-service.
       
   160 
       
   161 This is an asynchronous function call.
       
   162 
       
   163 The TQoSCapsxxxx classes inherit from TPacketDataConfigBase and therefore 
       
   164 contain an iExtensionId member data identifying whether they are a GPRS, 
       
   165 CDMA or R99_R4 configuration class.
       
   166 
       
   167 To determine how to correctly unpack the descriptor once it reaches the TSY, 
       
   168 the TSY must first cast the descriptor to a TPacketDataConfigBase pointer 
       
   169 and check the value of the iExtensionId parameter. Referring to this value 
       
   170 the TSY will then cast the descriptor to the correct TPacketDataConfigBase-
       
   171 derived class.
       
   172 
       
   173 Use RTelSubSessionBase::CancelAsyncRequest(EPacketQoSSetProfileParams) to 
       
   174 cancel a previously placed asynchronous SetProfileParameters() request.
       
   175 
       
   176 
       
   177 @param aStatus On completion, KErrNone if successful, a system-wide error 
       
   178 code if not.
       
   179 @param aProfile A TQoSGPRSRequested, TQoSCDMA2000Requested or TQoSR99_R4Requested 
       
   180 containing the configuration data, packaged inside a TPckg<> and passed as a 
       
   181 descriptor reference. 
       
   182 @capability WriteDeviceData
       
   183 @capability NetworkServices
       
   184 */
       
   185 	{
       
   186 	Set(EPacketQoSSetProfileParams, aStatus, aProfile);
       
   187 	}
       
   188 
       
   189 EXPORT_C void RPacketQoS::GetProfileParameters(TRequestStatus& aStatus, TDes8& aProfile) const
       
   190 //This asynchronous function may be called by the client application.
       
   191 /** Retrieves the TSY/phone values of all parameters associated with a negotiated 
       
   192 QoS profile.
       
   193 
       
   194 This is an asynchronous function.
       
   195 
       
   196 QoS profile parameters are contained as member data in either a TQoSGPRSNegotiated, 
       
   197 TQoSCDMA2000Negotiated, or TQoSR99_R4Negotiated class, depending on the current packet 
       
   198 service. These T-classes are packaged inside a TPckg<> template class, enabling them to 
       
   199 be passed as a descriptor to the TSY. 
       
   200 
       
   201 The Negotiated QoS profile class derives from TPacketDataConfigBase and therefore contains
       
   202 iExtensionId member data identifying whether it is a GPRS, CDMA or R99_4 configuration 
       
   203 class. To determine how to correctly unpack the descriptor once it reaches the TSY, the 
       
   204 TSY must first cast the descriptor to a TPacketDataConfigBase pointer and check whether 
       
   205 the value of the iExtensionId parameter. Depending on this value, the TSY will then cast 
       
   206 the descriptor to the correct TPacketDataConfigBase-derived class.
       
   207 
       
   208 Use RTelSubSessionBase::CancelAsyncRequest(EPacketQoSGetProfileParams) to 
       
   209 cancel a previously placed asynchronous GetProfileParameters() request.
       
   210 
       
   211 
       
   212 @param aStatus On return, KErrNone if successful.
       
   213 @param aProfile On completion, a TQoSGPRSNegotiated, TQoSCDMA2000Negotiated or 
       
   214 TQoSR99_R4Negotiated containing the profile data, packaged inside a TPckg<> and 
       
   215 returned as a descriptor reference.
       
   216 
       
   217 @capability ReadDeviceData
       
   218 */
       
   219 	{
       
   220 	Get(EPacketQoSGetProfileParams, aStatus, aProfile);
       
   221 	}
       
   222 
       
   223 EXPORT_C void RPacketQoS::GetProfileCapabilities(TRequestStatus& aStatus, TDes8& aProfileCaps) const
       
   224 //This asynchronous function may be called by the client application.
       
   225 /** Gets the Quality of Service capabilities for the current packet service. 
       
   226 
       
   227 Depending on the the packet service type, a TQoSCapsGPRS, TQoSCapsCDMA2000,  
       
   228 TQoSCapsR99_R4 or TQoSCapsR5 will be passed in. The TSY will assign a bitmask for each 
       
   229 parameter in the relevant TQoSCapsxxx class. This bitmask contains all values 
       
   230 which can be assigned to the particular parameter for the current packet 
       
   231 service and phone.
       
   232 
       
   233 This is an asynchronous function.
       
   234 
       
   235 The TQoSCapsxxxx classes inherit from TPacketDataConfigBase and therefore 
       
   236 contain iExtensionId member data identifying the configuration class 
       
   237 (GPRS Rel97/98, CDMA, Rel99 or Rel4).
       
   238 
       
   239 To determine how to correctly unpack the descriptor once it reaches the TSY, the 
       
   240 TSY must first cast the descriptor to a TPacketDataConfigBase pointer and check whether 
       
   241 the value of the iExtensionId parameter. Depending on this value, the TSY will then cast 
       
   242 the descriptor to the correct TPacketDataConfigBase-derived class.
       
   243 
       
   244 Use RTelSubSessionBase::CancelAsyncRequest(EPacketQoSGetProfileCaps) to cancel 
       
   245 a previously placed asynchronous GetProfileCapabilities() request.
       
   246 
       
   247 
       
   248 @param aStatus On completion, KErrNone if successful.
       
   249 @param aProfileCaps A reference to a TQoSCapsGPRS, TQosCapsCDMA2000,  
       
   250 TQoSCapsR99_R4 or TQoSCapsR5 packaged in a TPckg and returned as a descriptor. 
       
   251 
       
   252 @capability None
       
   253 */
       
   254 	{
       
   255 	Get(EPacketQoSGetProfileCaps, aStatus, aProfileCaps);
       
   256 	}
       
   257 
       
   258 EXPORT_C void RPacketQoS::NotifyProfileChanged(TRequestStatus& aStatus, TDes8& aProfile) const
       
   259 //may be called by the client application.
       
   260 /**
       
   261 Notifies a client of a change in the negotiated QoS profile is received 
       
   262 by the TSY from the phone. 
       
   263 
       
   264 This is a asynchronous function.
       
   265 
       
   266 The new QoS profile returned will be either TQoSGPRSNegotiated, 
       
   267 TQoSCDMA2000Negotiated or TQoSR99_R4Negotiated, depending on the 
       
   268 current packet service. The TQoSxxxNegotiated class will contain 
       
   269 updated values for each QoS parameter.
       
   270  
       
   271 If the client wishes to receive further notifications, NotifyProfileChanged() 
       
   272 must be called again. 
       
   273 
       
   274 Use RTelSubSessionBase::CancelAsyncRequest(EPacketQoSNotifyProfileChanged) 
       
   275 to cancel a previously placed asynchronous NotifyProfileChanged() request.
       
   276 
       
   277 
       
   278 @param aStatus On completion, KErrNone if successful.
       
   279 @param aProfile A descriptor reference to a TPckg<TQoSXXXNegotiated> object. 
       
   280 
       
   281 @capability ReadDeviceData
       
   282 */
       
   283  	{
       
   284 	Get(EPacketQoSNotifyProfileChanged, aStatus, aProfile);
       
   285 	}
       
   286 
       
   287 
       
   288 EXPORT_C RPacketQoS::TQoSCapsGPRS::TQoSCapsGPRS()
       
   289 :TPacketDataConfigBase(), iPrecedence(EUnspecifiedPrecedence), iDelay(EUnspecifiedDelayClass),
       
   290  iReliability(EUnspecifiedReliabilityClass), iPeak(EUnspecifiedPeakThroughput),
       
   291  iMean(EUnspecifiedMeanThroughput)
       
   292 /** Standard constructor. 
       
   293 
       
   294 @deprecated v9.3 Use RPacketQoS::TQoSCapsR99_R4::TQoSCapsR99_R4 or RPacketQoS::TQoSCapsR5::TQoSCapsR5 instead. 
       
   295 
       
   296 Initializes the GPRS QoS profile with default values. Sets iExtensionId to KConfigGPRS. 
       
   297 */
       
   298 	{
       
   299 	iExtensionId = KConfigGPRS;
       
   300 	}
       
   301 
       
   302 EXPORT_C RPacketQoS::TQoSGPRSRequested::TQoSGPRSRequested()
       
   303 :TPacketDataConfigBase(), iReqPrecedence(EUnspecifiedPrecedence), iMinPrecedence(EUnspecifiedPrecedence),
       
   304  iReqDelay(EUnspecifiedDelayClass), iMinDelay(EUnspecifiedDelayClass),
       
   305  iReqReliability(EUnspecifiedReliabilityClass), iMinReliability(EUnspecifiedReliabilityClass),
       
   306  iReqPeakThroughput(EUnspecifiedPeakThroughput), iMinPeakThroughput(EUnspecifiedPeakThroughput),
       
   307  iReqMeanThroughput(EUnspecifiedMeanThroughput), iMinMeanThroughput(EUnspecifiedMeanThroughput)
       
   308 /**
       
   309 Standard constructor. 
       
   310 
       
   311 @deprecated v9.3 Use RPacketQoS::TQoSR99_R4Requested::TQoSR99_R4Requested or RPacketQoS::TQoSR5Requested::TQoSR5Requested instead.
       
   312 
       
   313 Initializes the requested and minimum GPRS QoS values to the defaults. 
       
   314 Sets the iExtensionId to KConfigGPRS. 
       
   315 */
       
   316 	{
       
   317 	iExtensionId = KConfigGPRS;
       
   318 	}
       
   319 
       
   320 EXPORT_C RPacketQoS::TQoSGPRSNegotiated::TQoSGPRSNegotiated()
       
   321 :TPacketDataConfigBase(), iPrecedence(EUnspecifiedPrecedence), iDelay(EUnspecifiedDelayClass),
       
   322  iReliability(EUnspecifiedReliabilityClass), iPeakThroughput(EUnspecifiedPeakThroughput),
       
   323  iMeanThroughput(EUnspecifiedMeanThroughput)
       
   324 /** Standard constructor. 
       
   325 
       
   326 @deprecated v9.3 Use RPacketQoS::TQoSR99_R4Negotiated::TQoSR99_R4Negotiated or RPacketQoS::TQoSR5Negotiated::TQoSR5Negotiated instead.
       
   327 
       
   328 Initializes the negotiated GPRS QoS values to the defaults. 
       
   329 Sets iExtensionId to KConfigGPRS. */
       
   330 	{
       
   331 	iExtensionId = KConfigGPRS;
       
   332 	}
       
   333 
       
   334 EXPORT_C RPacketQoS::TQoSCapsCDMA2000::TQoSCapsCDMA2000()
       
   335 :TPacketDataConfigBase()
       
   336 /** Standard constructor. 
       
   337 
       
   338 Initializes the CDMA QoS profile with default values. Sets iExtensionId to KConfigGPRS. 
       
   339 */
       
   340 	{
       
   341 	iExtensionId = KConfigCDMA;
       
   342 	}
       
   343 
       
   344 EXPORT_C RPacketQoS::TQoSCDMA2000Requested::TQoSCDMA2000Requested()
       
   345 :TPacketDataConfigBase()
       
   346 /** Standard constructor. 
       
   347 
       
   348 Initializes the requested CDMA QoS values to the defaults. Sets iExtensionId to KConfigCDMA. 
       
   349 */
       
   350 	{
       
   351 	iExtensionId = KConfigCDMA;
       
   352 	}
       
   353 
       
   354 EXPORT_C RPacketQoS::TQoSCDMA2000Negotiated::TQoSCDMA2000Negotiated()
       
   355 :TPacketDataConfigBase()
       
   356 /** Standard constructor. Sets iExtentionId to KConfigCDMA. */
       
   357 	{
       
   358 	iExtensionId = KConfigCDMA;
       
   359 	}
       
   360 
       
   361 
       
   362 EXPORT_C RPacketQoS::TQoSCapsR99_R4::TQoSCapsR99_R4()
       
   363 : TPacketDataConfigBase(),
       
   364   iTrafficClass(ETrafficClassUnspecified),
       
   365   iDeliveryOrderReqd(EDeliveryOrderUnspecified),
       
   366   iDeliverErroneousSDU(EErroneousSDUDeliveryUnspecified),
       
   367   iBER(EBERUnspecified),
       
   368   iSDUErrorRatio(ESDUErrorRatioUnspecified),
       
   369   iTrafficHandlingPriority(ETrafficPriorityUnspecified)
       
   370 /**
       
   371  * Constructor - All values are initialized to unspecified.
       
   372  */
       
   373 	{
       
   374 	iExtensionId = KConfigRel99Rel4;	
       
   375 	}
       
   376 
       
   377 EXPORT_C RPacketQoS::TQoSCapsR5::TQoSCapsR5()
       
   378 : TQoSCapsR99_R4(),
       
   379   iSignallingIndication(EFalse),
       
   380   iSourceStatisticsDescriptor(ESourceStatisticsDescriptorUnknown)
       
   381 /**
       
   382  * Constructor - All values are initialized to unspecified.
       
   383  */
       
   384 	{
       
   385 	iExtensionId = KConfigRel5;	
       
   386 	}
       
   387 	
       
   388 EXPORT_C RPacketQoS::TQoSR99_R4Requested::TQoSR99_R4Requested()
       
   389 : TPacketDataConfigBase(),
       
   390   iReqTrafficClass(ETrafficClassUnspecified),
       
   391   iMinTrafficClass(ETrafficClassUnspecified),
       
   392   iReqDeliveryOrderReqd(EDeliveryOrderUnspecified),
       
   393   iMinDeliveryOrderReqd(EDeliveryOrderUnspecified),
       
   394   iReqDeliverErroneousSDU(EErroneousSDUDeliveryUnspecified),	
       
   395   iMinDeliverErroneousSDU(EErroneousSDUDeliveryUnspecified),
       
   396   iReqMaxSDUSize(0),						 
       
   397   iMinAcceptableMaxSDUSize(0),
       
   398   iReqBER(EBERUnspecified),
       
   399   iMaxBER(EBERUnspecified),					
       
   400   iReqSDUErrorRatio(ESDUErrorRatioUnspecified),
       
   401   iMaxSDUErrorRatio(ESDUErrorRatioUnspecified),			
       
   402   iReqTrafficHandlingPriority(ETrafficPriorityUnspecified),
       
   403   iMinTrafficHandlingPriority(ETrafficPriorityUnspecified),
       
   404   iReqTransferDelay(0),
       
   405   iMaxTransferDelay(0)
       
   406 /**
       
   407  * Constructor - All values are initialized to unspecified or zero.
       
   408  */
       
   409 	{
       
   410 	iExtensionId = KConfigRel99Rel4;		
       
   411 
       
   412 	
       
   413 	iReqMaxRate.iUplinkRate = 0;			//< Range: 1kbps to 8640kbps in varying increments	
       
   414 	iReqMaxRate.iDownlinkRate = 0;			//< Range: 1kbps to 8640kbps in varying increments					
       
   415 	iMinAcceptableMaxRate.iUplinkRate = 0;	//< Range: 1kbps to 8640kbps in varying increments		
       
   416 	iMinAcceptableMaxRate.iDownlinkRate = 0;//< Range: 1kbps to 8640kbps in varying increments			
       
   417 	
       
   418 	iReqGuaranteedRate.iUplinkRate = 0;		//< Range: 1kbps to 8640kbps in varying increments	
       
   419 	iReqGuaranteedRate.iDownlinkRate = 0;	//< Range: 1kbps to 8640kbps in varying increments	
       
   420 	iMinGuaranteedRate.iUplinkRate = 0;		//< Range: 1kbps to 8640kbps in varying increments	
       
   421 	iMinGuaranteedRate.iDownlinkRate = 0;	//< Range: 1kbps to 8640kbps in varying increments	
       
   422 	}
       
   423 
       
   424 EXPORT_C RPacketQoS::TQoSR5Requested::TQoSR5Requested()
       
   425 : TQoSR99_R4Requested(),
       
   426   iSignallingIndication(EFalse),
       
   427   iSourceStatisticsDescriptor(ESourceStatisticsDescriptorUnknown)
       
   428  /**
       
   429   * Constructor - The values are initialized to zero and unknown.
       
   430     Sets iExtentionId to KConfigRel5.
       
   431  */
       
   432 	{
       
   433 	iExtensionId = KConfigRel5;
       
   434 	}
       
   435 
       
   436 EXPORT_C RPacketQoS::TQoSR99_R4Negotiated::TQoSR99_R4Negotiated()
       
   437 : TPacketDataConfigBase(),
       
   438   iTrafficClass(ETrafficClassUnspecified),
       
   439   iDeliveryOrderReqd(EDeliveryOrderUnspecified),
       
   440   iDeliverErroneousSDU(EErroneousSDUDeliveryUnspecified),
       
   441   iMaxSDUSize(0),
       
   442   iBER(EBERUnspecified),
       
   443   iSDUErrorRatio(ESDUErrorRatioUnspecified),
       
   444   iTrafficHandlingPriority(ETrafficPriorityUnspecified),
       
   445   iTransferDelay(0)
       
   446 /**
       
   447  * Constructor - All values are initialized to unspecified or zero.
       
   448  */
       
   449 	{
       
   450 	iExtensionId = KConfigRel99Rel4;	
       
   451 	
       
   452 	iMaxRate.iUplinkRate = 0;				//< Range: 1kbps to 8640kbps in varying increments	
       
   453 	iMaxRate.iDownlinkRate = 0;				//< Range: 1kbps to 8640kbps in varying increments	
       
   454 				
       
   455 	iGuaranteedRate.iUplinkRate = 0;		//< Range: 1kbps to 8640kbps in varying increments	
       
   456 	iGuaranteedRate.iDownlinkRate = 0;		//< Range: 1kbps to 8640kbps in varying increments	
       
   457 	}
       
   458 	
       
   459 EXPORT_C RPacketQoS::TQoSR5Negotiated::TQoSR5Negotiated()
       
   460 : TQoSR99_R4Negotiated(),
       
   461   iSignallingIndication(EFalse),
       
   462   iSourceStatisticsDescriptor(ESourceStatisticsDescriptorUnknown)
       
   463  /**
       
   464   * Constructor - The values are initialized to zero and unknown.
       
   465     Sets iExtentionId to KConfigRel5.
       
   466  */
       
   467 	{
       
   468 	iExtensionId = KConfigRel5;
       
   469 	}