epoc32/include/etelqos.h
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
permissions -rw-r--r--
Final list of Symbian^2 public API header files
     1 // Copyright (c) 2002-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 the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 // ETel Multimode Packet Data API - Quality of Service (QoS) support
    15 // GPRS Rel97/98, CDMAOne, CDMA2000, Release 99 and Release 4.
    16 // 
    17 //
    18 
    19 
    20 #if!defined(__ETELQOS_H__)
    21 #define __ETELQOS_H__
    22 
    23 #include "etelpckt.h"
    24 
    25 class RPacketContext;
    26 class CPacketQoSPtrHolder;
    27 
    28 
    29 class RPacketQoS : public RTelSubSessionBase
    30 /**
    31 Encapsulates functionality to set the Requested and Minimum Quality of Service 
    32 options for a particular context (or "service configuration" in CDMA parlance), 
    33 as represented by the RPacketContext class.
    34  
    35 Methods are available to set and get the QoS options, query the QoS capabilities 
    36 of the network service and notify the client if a change in the negotiated QoS 
    37 options occurs.
    38 
    39 A client must first create an instance of RPacketContext before opening a new 
    40 RPacketQoS, since when creating a new RPacketQoS, the client must call the 
    41 RPacketQoS::OpenNewQoS() function and pass in a reference to an RPacketContext 
    42 instance. 
    43 
    44 @publishedPartner
    45 @released
    46 */
    47 	{
    48 public:
    49 	//
    50 	// Nested enums and classes
    51 	//
    52 	/** Defines the QoS reliability settings for GRPS networks. */
    53 	enum TQoSReliability	// GPRS Release 97/98
    54 		{
    55 		/** Best effort or subscribed value. */
    56 		EUnspecifiedReliabilityClass = 0x01,
    57 		/** Reliability Class 1. */
    58 		EReliabilityClass1			 = 0x02,
    59 		/** Reliability Class 2. */
    60 		EReliabilityClass2			 = 0x04,
    61 		/** Reliability Class 3. */
    62 		EReliabilityClass3			 = 0x08,
    63 		/** Reliability Class 4. */
    64 		EReliabilityClass4			 = 0x10,
    65 		/** Reliability Class 5. */
    66 		EReliabilityClass5			 = 0x20
    67 		};
    68 
    69 	/** Defines the QoS precedence for GRPS networks. */
    70 	enum TQoSPrecedence		// GPRS Release 97/98
    71 		{
    72 		/** Best effort or subscribed value */
    73 		EUnspecifiedPrecedence		= 0x01, 
    74 		/** High priority precedence. */
    75 		EPriorityHighPrecedence     = 0x02,
    76 		/** Medium priority precedence. */
    77 		EPriorityMediumPrecedence  = 0x04,
    78 		/** Low priority precedence. */
    79 		EPriorityLowPrecedence		= 0x08
    80 		};
    81 
    82 	/** Defines the QoS delay for GPRS and CDMA200 networks.
    83 	 */
    84 	enum TQoSDelay			// GPRS Release 97/98, CDMA2000
    85 		{
    86 		/** Best effort or subscribed value. */
    87 		EUnspecifiedDelayClass	= 0x01, 
    88 		/** Delay class 1. */
    89 		EDelayClass1			= 0x02,
    90 		/** Delay class 2. */
    91 		EDelayClass2			= 0x04,
    92 		/** Delay class 3. */
    93 		EDelayClass3			= 0x08,
    94 		/** Delay class 4. */
    95 		EDelayClass4			= 0x10,
    96 		/** Delay 40 milli seconds.
    97 	
    98 		CDMA2000 specific */
    99 		EDelay40ms				= 0x20,	
   100 		/** Delay 120 milli seconds.
   101 	
   102 		CDMA2000 specific */
   103 		EDelay120ms				= 0x40,	
   104 		/** Delay 360 milli seconds.
   105 	
   106 		CDMA2000 specific */
   107 		EDelay360ms				= 0x80	
   108 		};
   109 
   110 	/** Defines the QoS peak throughput rates for GRPS networks. */
   111 	enum TQoSPeakThroughput // GPRS Release 97/98
   112 		{
   113 		/** Best effort or subscribed value. */
   114 		EUnspecifiedPeakThroughput  = 0x001, 
   115 		/** Peak throughput of 1,000. */
   116 		EPeakThroughput1000			= 0x002,
   117 		/** Peak throughput of 2,000. */
   118 		EPeakThroughput2000			= 0x004,
   119 		/** Peak throughput of 4,000. */
   120 		EPeakThroughput4000			= 0x008,
   121 		/** Peak throughput of 8,000. */
   122 		EPeakThroughput8000			= 0x010,
   123 		/** Peak throughput of 16,000. */
   124 		EPeakThroughput16000		= 0x020,
   125 		/** Peak throughput of 32,000. */
   126 		EPeakThroughput32000		= 0x040,
   127 		/** Peak throughput of 64,000. */
   128 		EPeakThroughput64000		= 0x080,
   129 		/** Peak throughput of 128,000. */
   130 		EPeakThroughput128000		= 0x100,
   131 		/** Peak throughput of 256,000. */
   132 		EPeakThroughput256000		= 0x200
   133 		};
   134 
   135 	/** Defines the mean throughput for GRPS networks. */
   136 	enum TQoSMeanThroughput	// GPRS Release 97/98 
   137 		{
   138 		/** Unsubscribed value. */
   139 		EUnspecifiedMeanThroughput	= 0x00001,
   140 		/** Mean throughput of 100. */
   141 		EMeanThroughput100			= 0x00002,
   142 		/** Mean throughput of 200. */
   143 		EMeanThroughput200			= 0x00004,
   144 		/** Mean throughput of 500. */
   145 		EMeanThroughput500			= 0x00008,
   146 		/** Mean throughput of 1,000. */
   147 		EMeanThroughput1000			= 0x00010,
   148 		/** Mean throughput of 2,000. */
   149 		EMeanThroughput2000			= 0x00020,
   150 		/** Mean throughput of 5,000. */
   151 		EMeanThroughput5000			= 0x00040,
   152 		/** Mean throughput of 10,000. */
   153 		EMeanThroughput10000		= 0x00080,
   154 		/** Mean throughput of 20,000. */
   155 		EMeanThroughput20000		= 0x00100,
   156 		/** Mean throughput of 50,000. */
   157 		EMeanThroughput50000		= 0x00200,
   158 		/** Mean throughput of 100,000. */
   159 		EMeanThroughput100000		= 0x00400,
   160 		/** Mean throughput of 200,000. */
   161 		EMeanThroughput200000		= 0x00800,
   162 		/** Mean throughput of 500,000. */
   163 		EMeanThroughput500000		= 0x01000,
   164 		/** Mean throughput of 1,000,000. */
   165 		EMeanThroughput1000000		= 0x02000,
   166 		/** Mean throughput of 2,000,000. */
   167 		EMeanThroughput2000000		= 0x04000,
   168 		/** Mean throughput of 5,000,000. */
   169 		EMeanThroughput5000000		= 0x08000,
   170 		/** Mean throughput of 10,000,000. */
   171 		EMeanThroughput10000000		= 0x10000,
   172 		/** Mean throughput of 20,000,000. */
   173 		EMeanThroughput20000000		= 0x20000,
   174 		/** Mean throughput of 50,000,000. */
   175 		EMeanThroughput50000000		= 0x40000,
   176 		/** Best effort. */
   177 		EMeanThroughputBestEffort	= 0x80000
   178 		};
   179 
   180 	/** Defines the QoS link priority for CMDA2000 networks. */
   181 	enum TQoSLinkPriority	
   182 		{
   183 		/** No link priority. */
   184 		ELinkPriority00 = 0x0001, 
   185 		/** 1/13th's of user's subscription priority. */
   186 		ELinkPriority01 = 0x0002,
   187 		/** 2/13th's of user's subscription priority. */
   188 		ELinkPriority02 = 0x0004,
   189 		/** 3/13th's of user's subscription priority. */
   190 		ELinkPriority03	= 0x0008,
   191 		/** 4/13th's of user's subscription priority. */
   192 		ELinkPriority04	= 0x0010,
   193 		/** 5/13th's of user's subscription priority. */
   194 		ELinkPriority05	= 0x0020,
   195 		/** 6/13th's of user's subscription priority. */
   196 		ELinkPriority06	= 0x0040,	
   197 		/** 7/13th's of user's subscription priority. */
   198 		ELinkPriority07	= 0x0080,
   199 		/** 8/13th's of user's subscription priority. */
   200 		ELinkPriority08	= 0x0100,
   201 		/** 9/13th's of user's subscription priority. */
   202 		ELinkPriority09	= 0x0200,
   203 		/** 10/13th's of user's subscription priority. */
   204 		ELinkPriority10	= 0x0400,
   205 		/** 11/13th's of user's subscription priority. */
   206 		ELinkPriority11	= 0x0800,
   207 		/** 12/13th's of user's subscription priority. */
   208 		ELinkPriority12	= 0x1000,
   209 		/** Subscription priority (13/13th's). */
   210 		ELinkPriority13	= 0x2000	
   211 		};
   212 
   213 	/** Defines the QoS data loss rate. */
   214 	enum TQoSDataLoss
   215 		{
   216 		/** 1% data loss rate. */
   217 		EDataLoss1	 =	0x01,	
   218 		/** 2% data loss rate. */
   219 		EDataLoss2	 =	0x02,	
   220 		/** 5% data loss rate. */
   221 		EDataLoss5	 =	0x04,	
   222 		/** 10% data loss rate. */
   223 		EDataLoss10	 =	0x08	
   224 		};
   225 
   226 	/** Defines the QoS data rate. */
   227 	enum TQoSDataRate
   228 		{
   229 		/** A data rate of 8 kb/s. */
   230 		EDataRate8kbps	  =	0x01,
   231 		/** A data rate of 32 kb/s. */
   232 		EDataRate32kbps	  =	0x02,
   233 		/** A data rate of 64 kb/s. */
   234 		EDataRate64kbps	  =	0x04,
   235 		/** A data rate of 144 kb/s. */
   236 		EDataRate144kbps  =	0x08,
   237 		/** A data rate of 384 kb/s */
   238 		EDataRate384kbps  =	0x10
   239 		};
   240 
   241 	//
   242 	// TRLPMode - allows the client to specify (if desired) one of the following:
   243 	// transparent only, tranparent preferred, non-transparent only or non-transparent 
   244 	// preferred Radio Link Protocol Mode
   245 	//
   246 	/** Defines the Radio Link Protocol (RPL) mode. */
   247 	enum TRLPMode
   248 		{
   249 		/** RPL mode unknown. */
   250 		KRLPUnknown				= 0x01,		
   251 		/** Transparent mode only. */
   252 		KRLPTransparent			= 0x02,
   253 		/** Non-transparent mode only. */
   254 		KRLPNonTransparent		= 0x04,
   255 		/** Transparent mode preferred. */
   256 		KRLPTransparentPref		= 0x08,
   257 		/** Non-transparent mode preferred. */
   258 		KRLPNonTransparentPref	= 0x10
   259 		};
   260 
   261 	// The enums TTrafficClass, TDeliveryOrder,TErroneousSDUDelivery, TBitErrorRatio,
   262 	// TSDUErrorRatio, TTrafficHandlingPriority have been assigned values because
   263 	// the same enums are used both in the TQoSR99_R4Requested / Negotiated classes and 
   264 	// in the TQoSCapsR99_R4 class. The Caps class has to indicate which, for instance, 
   265 	// traffic classes are supported in a bitfield, so the enums have been defined as 
   266 	// different bits in a bit field.
   267 	enum TTrafficClass			
   268 		{
   269 		ETrafficClassUnspecified	= 0x01,		///< Traffic class - Unspecified
   270 		ETrafficClassConversational	= 0x02,		///< Traffic class - Conversational
   271 		ETrafficClassStreaming		= 0x04,		///< Traffic class - Streaming
   272 		ETrafficClassInteractive	= 0x08,		///< Traffic class - Interactive
   273 		ETrafficClassBackground		= 0x10		///< Traffic class - Background
   274 		};
   275 
   276 	enum TDeliveryOrder		
   277 		{
   278 		EDeliveryOrderUnspecified	= 0x01,		///< SDU Delivery order - Unspecified
   279 		EDeliveryOrderRequired		= 0x02,		///< SDU Delivery order - Required to be in sequence
   280 		EDeliveryOrderNotRequired	= 0x04		///< SDU Delivery order - Not Required to be in sequence
   281 		};
   282 
   283 	enum TErroneousSDUDelivery		// Erroneous SDU Delivery
   284 		{
   285 		EErroneousSDUDeliveryUnspecified	= 0x01,	///< Unspecified
   286 		EErroneousSDUNoDetection			= 0x02,	///< Erroneous SDUs delivered - Error detection not considered.
   287 		EErroneousSDUDeliveryRequired		= 0x04,	///< Erroneous SDUs delivered + error indication - Error detection employed.
   288 		EErroneousSDUDeliveryNotRequired	= 0x08	///< Erroneous SDUs discarded - Error detection is employed.
   289 		};
   290 
   291 	enum TBitErrorRatio				// Residual Bit Error Rate
   292 		{
   293 		EBERUnspecified				= 0x01,		///< Target residual undetected BER - Unspecified
   294 		EBERFivePerHundred			= 0x02,		///< Target residual BER - 0.05
   295 		EBEROnePerHundred			= 0x04,		///< Target residual BER - 0.01
   296 		EBERFivePerThousand			= 0x08,		///< Target residual BER - 0.005
   297 		EBERFourPerThousand			= 0x10,		///< Target residual BER - 0.004
   298 		EBEROnePerThousand			= 0x20,		///< Target residual BER - 0.001
   299 		EBEROnePerTenThousand		= 0x40,		///< Target residual BER - 0.0001
   300 		EBEROnePerHundredThousand	= 0x80,		///< Target residual BER - 0.00001
   301 		EBEROnePerMillion			= 0x100,	///< Target residual BER - 0.000001
   302 		EBERSixPerHundredMillion	= 0x200		///< Target residual BER - 0.00000006
   303 		};
   304 
   305 	enum TSDUErrorRatio				// SDU Error Ratio
   306 		{
   307 		ESDUErrorRatioUnspecified			= 0x01,	///< Target value of Erroneous SDUs - Unspecified
   308 		ESDUErrorRatioOnePerTen				= 0x02,	///< Target SDU error ratio - 0.1
   309 		ESDUErrorRatioOnePerHundred			= 0x04,	///< Target SDU error ratio - 0.01
   310 		ESDUErrorRatioSevenPerThousand		= 0x08,	///< Target SDU error ratio - 0.007
   311 		ESDUErrorRatioOnePerThousand		= 0x10,	///< Target SDU error ratio - 0.001
   312 		ESDUErrorRatioOnePerTenThousand		= 0x20,	///< Target SDU error ratio - 0.0001
   313 		ESDUErrorRatioOnePerHundredThousand	= 0x40,	///< Target SDU error ratio - 0.00001
   314 		ESDUErrorRatioOnePerMillion			= 0x80	///< Target SDU error ratio - 0.000001
   315 		};
   316 
   317 	enum TTrafficHandlingPriority	// Traffic handling priority
   318 		{
   319 		ETrafficPriorityUnspecified	= 0x01,		///< Unspecified Priority level
   320 		ETrafficPriority1			= 0x02,		///< Priority level 1
   321 		ETrafficPriority2			= 0x04,		///< Priority level 2
   322 		ETrafficPriority3			= 0x08		///< Priority level 3
   323 		};
   324 
   325 	struct TBitRate					// Bit rates for uplink and downlink
   326 		{
   327 		TInt iUplinkRate;			///< Uplink bitrate in kbps. Range 0 - 16000
   328 		TInt iDownlinkRate;			///< Downlink bitrate in kbps. Range 0 - 16000
   329 		};
   330 			
   331 	/**
   332 	Source statistics descriptor - as defined in 3GPP TS 23.107 and TS 24.008.
   333 	
   334 	@publishedPartner
   335 	@released
   336 	*/
   337 	enum TSourceStatisticsDescriptor	
   338 		{
   339 		/** Unknown source statistics descriptor. */
   340 		ESourceStatisticsDescriptorUnknown	= 0x0,		
   341 		/** Speech source statistics descriptor. */
   342 		ESourceStatisticsDescriptorSpeech	= 0x01,		 
   343 		};
   344 		
   345 	//
   346 	// QoS capabilities classes
   347 	//
   348 	class TQoSCapsGPRS : public TPacketDataConfigBase
   349 	/**
   350 	Supported GPRS QoS capabilities.
   351 	
   352 	@deprecated v9.3 Use TQoSCapsR99_R4 or TQoSCapsR5 instead. 
   353 	*/
   354 		{
   355 	public:
   356 		IMPORT_C TQoSCapsGPRS(); // iExtensionId = KConfigGPRS
   357 	public:
   358 		/** Bit-wise sum of the TQoSPrecedence attributes. 
   359 		
   360 		The default value is EUnspecifiedPrecedence. */
   361 		TUint iPrecedence;
   362 		/** Bit-wise sum of the TQoSDelay attributes. 
   363 		
   364 		The default value is EUnspecifiedDelay. */
   365 		TUint iDelay;
   366 		/** Bit-wise sum of the TQoSReliability attributes. 
   367 		
   368 		The default value is EUnspecifiedReliability. */
   369 		TUint iReliability;
   370 		/** Bit-wise sum of the TQoSPeakThroughput attributes. 
   371 		
   372 		The default value is EUnspecifiedPeakThroughput. */
   373 		TUint iPeak;
   374 		/** Bit-wise sum of the TQoSMeanThroughput attributes. 
   375 		
   376 		The default value is EUnspecifiedMeanThroughput. */
   377 		TUint iMean;
   378 		};
   379 
   380 	class TQoSCapsCDMA2000 : public TPacketDataConfigBase
   381 	/**
   382 	Supported CDMA2000 QoS capabilities.
   383 
   384 	@publishedPartner
   385 	@released
   386 	*/
   387 		{
   388 	public:
   389 		IMPORT_C TQoSCapsCDMA2000(); // iExtensionId = KConfigCDMA
   390 	public:
   391 		/** Bit-wise sum of the TQoSLinkPriority attributes. */
   392 		TUint	iPriority;
   393 		/** Bit-wise sum of the TQoSDataRate attributes for the uplink. */
   394 		TUint	iUplinkRate;
   395 		/** Bit-wise sum of the TQoSDataRate attributes for the downlink. */
   396 		TUint	iDownlinkRate;
   397 		/** Bit-wise sum of the TQoSDataLoss attributes. */
   398 		TUint	iFwdLossRate;
   399 		/** Bit-wise sum of the TQoSDataLoss attributes. */
   400 		TUint	iRevLossRate;
   401 		/** Bit-wise sum of the TQoSDelay attributes. */
   402 		TUint	iFwdMaxDelay;
   403 		/** Bit-wise sum of the TQoSDelay attributes. */
   404 		TUint	iRevMaxDelay;
   405 		};
   406 
   407 	
   408 	class TQoSCapsR99_R4 : public TPacketDataConfigBase
   409 	/**
   410 	GPRS/UMTS Rel99 and UMTS Rel4 QoS capabilities class.
   411 	
   412 	@publishedPartner
   413 	@released
   414 	*/
   415 		{
   416 	public:
   417 		IMPORT_C TQoSCapsR99_R4(); 
   418 	public:
   419 		TUint iTrafficClass;			///< Supported traffic class of the MT
   420 		TUint iDeliveryOrderReqd;		///< SDU sequential delivery
   421 		TUint iDeliverErroneousSDU;		///< Delivery of erroneous SDUs
   422 		TUint iBER;						///< Target Bit Error Ratio (BER)
   423 		TUint iSDUErrorRatio;			///< Target SDU Error Ratio
   424 		TUint iTrafficHandlingPriority; ///< Traffic handling priority
   425 		};
   426 		
   427 	class TQoSCapsR5 : public TQoSCapsR99_R4
   428 	/**
   429 	UMTS Rel5 QoS capabilities class.
   430 	
   431 	@publishedPartner
   432 	@released
   433 	*/
   434 		{
   435 	public:
   436 		IMPORT_C TQoSCapsR5(); 
   437 	public:
   438 		TUint iSignallingIndication;		///< Requested signalling indication 
   439 		TUint iSourceStatisticsDescriptor;	///< Requested source statistics descriptor
   440 		};
   441 
   442 	//
   443 	// QoS configuration classes
   444 	//
   445 	class TQoSGPRSRequested : public TPacketDataConfigBase	// GPRS Rel97/98
   446 	/**
   447 	The GPRS QoS that is requested.
   448 	
   449 	@deprecated v9.3 Use TQoSR99_R4Requested or TQoSR5Requested instead.
   450 	*/
   451 		{
   452 	public:
   453 		IMPORT_C TQoSGPRSRequested();
   454 	public:
   455 		/** Precedence requested. The default is EUnspecifiedPrecedence.
   456 	
   457 		@see TQoSPrecedence */
   458 		TQoSPrecedence		iReqPrecedence;
   459 		/** Minimum precedence. The default is EUnspecifiedPrecedence.
   460 	
   461 		@see TQoSPrecedence */
   462 		TQoSPrecedence		iMinPrecedence;
   463 		/** Requested QoS Delay. The default is EUnspecifiedDelayClass.
   464 	
   465 		@see TQoSDelay */
   466 		TQoSDelay			iReqDelay;
   467 		/** Minimum delay requested. The default is EUnspecifiedDelayClass.
   468 	
   469 		@see TQoSDelay */
   470 		TQoSDelay			iMinDelay;
   471 		/** Requested reliability. The default is EUnspecifiedReliabilityClass.
   472 	
   473 		@see TQoSReliability */
   474 		TQoSReliability		iReqReliability;
   475 		/** Requested minimum reliability . The default is EUnspecifiedReliabilityClass.
   476 	
   477 		@see TQoSReliability */
   478 		TQoSReliability		iMinReliability;
   479 		/** Requested peak throughput . The default is EUnspecifiedPeakThroughput.
   480 	
   481 		@see TQoSPeakThroughput */
   482 		TQoSPeakThroughput	iReqPeakThroughput;
   483 		/** Requested minimum peak throughput. The default is EUnspecifiedPeakThroughput.
   484 	
   485 		@see TQoSPeakThroughput */
   486 		TQoSPeakThroughput	iMinPeakThroughput;
   487 		/** Requested QoS mean throughput. The default is EUnspecifiedMeanThroughput.
   488 	
   489 		@see TQoSMeanThroughput */
   490 		TQoSMeanThroughput	iReqMeanThroughput;
   491 		/** Requested minimum QoS mean throughput. The default is EUnspecifiedMeanThroughput.
   492 	
   493 		@see TQoSMeanThroughput */
   494 		TQoSMeanThroughput	iMinMeanThroughput;
   495 		};
   496 		
   497 	class TQoSGPRSNegotiated : public TPacketDataConfigBase	// GPRS Rel97/98
   498 	/** Contains the negotiated QoS values - returned by the GPRS network 
   499 	after activating a connection and determining the QoS profile. 
   500 
   501 	@deprecated v9.3 Use TQoSR99_R4Negotiated or TQoSR5Negotiated instead.
   502 	*/
   503 		{
   504 	public:
   505 		IMPORT_C TQoSGPRSNegotiated();
   506 	public:
   507 		/** Negotiated QoS precedence. The default is EUnspecifiedPrecedence.
   508 	
   509 		@see TQoSPrecedence */
   510 		TQoSPrecedence		iPrecedence;
   511 		/** Negotiated QoS delay. The default is EUnspecifiedPeakThroughput.
   512 	
   513 		@see TQoSDelay */
   514 		TQoSDelay			iDelay;
   515 		/** Negotiated QoS reliability. The default is EUnspecifiedReliabilityClass.
   516 	
   517 		@see TQoSReliability */
   518 		TQoSReliability		iReliability;
   519 		/** Negotiated QoS peak throughput. The default is EUnspecifiedPeakThroughput.
   520 	
   521 		@see TQoSPeakThroughput */
   522 		TQoSPeakThroughput	iPeakThroughput;
   523 		/** Negotiated QoS mean throughput. The default is EUnspecifiedMeanThroughput.
   524 	
   525 		@see TQoSMeanThroughput */
   526 		TQoSMeanThroughput	iMeanThroughput;
   527 		};
   528 
   529 	class TQoSCDMA2000Requested : public TPacketDataConfigBase	// CDMA2000
   530 	/**
   531 	The CDMA2000 QoS requested from the network.
   532 
   533 	@publishedPartner
   534 	@released
   535 	*/
   536 		{
   537 	public:
   538 		IMPORT_C TQoSCDMA2000Requested();
   539 	public:
   540 		/** The request assured mode. */
   541 		TBool				iAssuredMode; // assured vs. non-assured mode
   542 		/** The RPL mode requested.
   543 	
   544 		@see TRLPMode */
   545 		TRLPMode			iRLPMode;
   546 		/** The link priority requested.
   547 	
   548 		@see TQoSLinkPriority */
   549 		TQoSLinkPriority	iPriority;
   550 		/** The uplink rate requested.
   551 	
   552 		@see TQoSDataRate */
   553 		TQoSDataRate		iReqUplinkRate;
   554 		/** The minimum uplink rate requested.
   555 	
   556 		@see TQoSDataRate */
   557 		TQoSDataRate		iMinUplinkRate;
   558 		/** The downlink rate requested
   559 	
   560 		@see TQoSDataRate */
   561 		TQoSDataRate		iReqDownlinkRate;
   562 		/** The minimum downlink rate requested.
   563 	
   564 		@see TQoSDataRate */
   565 		TQoSDataRate		iMinDownlinkRate;
   566 		/** The forward loss rate requested. */
   567 		TQoSDataLoss		iFwdRequestedLossRate;
   568 		TQoSDataLoss		iRevRequestedLossRate;
   569 		/** The forward accepted loss rate. */
   570 		TQoSDataLoss		iFwdAcceptedLossRate;
   571 		/** The reverse accepted loss rate. */
   572 		TQoSDataLoss		iRevAcceptedLossRate;
   573 		/** The forward maximum requested delay. */
   574 		TQoSDelay			iFwdMaxRequestedDelay;
   575 		/** The reverse maximum requested delay. */
   576 		TQoSDelay			iRevMaxRequestedDelay;
   577 		/** The forward maximum accepted delay. */
   578 		TQoSDelay			iFwdMaxAcceptedDelay;
   579 		/** The reverse maximum accepted delay. */
   580 		TQoSDelay			iRevMaxAcceptedDelay;
   581 		};
   582 
   583 	class TQoSCDMA2000Negotiated : public TPacketDataConfigBase	// CDMA2000
   584 	/**
   585 	The negotiated CDMA200 QoS parameters.
   586 
   587 	@publishedPartner
   588 	@released
   589 	*/
   590 		{
   591 	public:
   592 		IMPORT_C TQoSCDMA2000Negotiated();
   593 	public:
   594 		/** Negotiated assured mode. */
   595 		TBool				iAssuredMode; // assured vs. non-assured mode. 
   596 		/** Negotiated Radio Link Protocol mode.
   597 	
   598 		@see TRLPMode */
   599 		TRLPMode			iRLPMode;
   600 		/** Negotiated QoS link priority.
   601 	
   602 		@see TQoSLinkPriority */
   603 		TQoSLinkPriority	iPriority;
   604 		/** Negotiated uplink rate.
   605 	
   606 		@see TQoSDataRate */
   607 		TQoSDataRate		iUplinkRate;
   608 		/** Negotiated downlink rate.
   609 	
   610 		@see TQoSDataRate */
   611 		TQoSDataRate		iDownlinkRate;
   612 		/** Negotiated forward data loss rate.
   613 	
   614 		@see TQoSDataLoss */
   615 		TQoSDataLoss		iFwdDataLossRate;
   616 		/** Negotiated reverse data loss rate.
   617 	
   618 		@see TQoSDataLoss */
   619 		TQoSDataLoss		iRevDataLossRate;
   620 		/** Negotiated forward maximum delay.
   621 	
   622 		@see TQoSDelay */
   623 		TQoSDelay			iFwdMaxDelay;
   624 		/** Negotiated reverse maximum delay.
   625 	
   626 		@see TQoSDelay */
   627 		TQoSDelay			iRevMaxDelay;
   628 		};
   629 
   630 	
   631 	class TQoSR99_R4Requested : public TPacketDataConfigBase	
   632 	/**
   633 	Contains the requested and minimum values for the 
   634 	GPRS/UMTS Rel99 and UMTS Rel4 QoS profile attributes.
   635 	
   636 	@publishedPartner
   637 	@released
   638 	*/
   639 		{
   640 	public:
   641 		IMPORT_C TQoSR99_R4Requested();
   642 	public:
   643 		TTrafficClass				iReqTrafficClass;			///< Requested traffic class	
   644 		TTrafficClass				iMinTrafficClass;			///< Minimum acceptable traffic class
   645 		TDeliveryOrder				iReqDeliveryOrderReqd;		///< Requested value for sequential SDU delivery
   646 		TDeliveryOrder				iMinDeliveryOrderReqd;		///< Minimum acceptable value for sequential SDU delivery
   647 		TErroneousSDUDelivery		iReqDeliverErroneousSDU;	///< Requested value for erroneous SDU delivery
   648 		TErroneousSDUDelivery		iMinDeliverErroneousSDU;	///< Minimum acceptable value for erroneous SDU delivery
   649 		TInt						iReqMaxSDUSize;				///< Request maximum SDU size
   650 		TInt						iMinAcceptableMaxSDUSize;	///< Minimum acceptable SDU size
   651 		TBitRate					iReqMaxRate;				///< Requested maximum bit rates on uplink and downlink
   652 		TBitRate					iMinAcceptableMaxRate;		///< Minimum acceptable bit rates on uplink and downlink
   653 		TBitErrorRatio				iReqBER;					///< Requested target BER
   654 		TBitErrorRatio				iMaxBER;					///< Maximum acceptable target BER
   655 		TSDUErrorRatio				iReqSDUErrorRatio;			///< Requested target SDU error ratio
   656 		TSDUErrorRatio				iMaxSDUErrorRatio;			///< Maximum acceptable target SDU error ratio
   657 		TTrafficHandlingPriority	iReqTrafficHandlingPriority;///< Requested traffic handling priority
   658 		TTrafficHandlingPriority	iMinTrafficHandlingPriority;///< Minimum acceptable traffic handling priority
   659 		TInt						iReqTransferDelay;			///< Requested transfer delay (in milliseconds)
   660 		TInt						iMaxTransferDelay;			///< Maximum acceptable  transfer delay (in milliseconds)
   661 		TBitRate					iReqGuaranteedRate;			///< Requested guaranteed bit rates on uplink and downlink
   662 		TBitRate					iMinGuaranteedRate;			///< Minimum acceptable guaranteed bit rates on uplink and downlink
   663 		};
   664 
   665 	class TQoSR99_R4Negotiated : public TPacketDataConfigBase		
   666 	/**
   667 	Contains the negotiated values for the GPRS/UMTS Rel99
   668 	and UMTS Rel4 QoS profile.
   669 
   670 	@publishedPartner
   671 	@released
   672 	*/
   673 		{
   674 	public:
   675 		IMPORT_C TQoSR99_R4Negotiated();
   676 	public:
   677 		TTrafficClass				iTrafficClass;				///< Negotiated traffic class
   678 		TDeliveryOrder				iDeliveryOrderReqd;			///< Negotiated value for sequential SDU delivery
   679 		TErroneousSDUDelivery		iDeliverErroneousSDU;		///< Negotiated value for erroneous SDU delivery
   680 		TInt						iMaxSDUSize;				///< Negotiated maximum SDU size (in octets)
   681 		TBitRate					iMaxRate;					///< Negotiated maximum bit rates on the uplink and downlink
   682 		TBitErrorRatio				iBER;						///< Negotiated target BER
   683 		TSDUErrorRatio				iSDUErrorRatio;				///< Negotiated target SDU error ratio
   684 		TTrafficHandlingPriority	iTrafficHandlingPriority;	///< Negotiated traffic handling priority
   685 		TInt						iTransferDelay;				///< Negotiated transfer delay (in milliseconds)
   686 		TBitRate					iGuaranteedRate;			///< Negotiated guaranteed bit rates on the uplink and downlink
   687 		};
   688 
   689 
   690 	class TQoSR5Requested : public TQoSR99_R4Requested	
   691 	/**
   692 	Contains the requested and minimum values for the 
   693 	UMTS/IMS 3GPP Rel5 QoS profile attributes.
   694 	
   695 	@publishedPartner
   696 	@released
   697 	*/
   698 		{
   699 	public:
   700 		IMPORT_C TQoSR5Requested();
   701 	public:	
   702 		/** Requested signalling indication. */
   703 		TBool						iSignallingIndication;			 
   704 		/** Requested source statistics descriptor. */
   705 		TSourceStatisticsDescriptor	iSourceStatisticsDescriptor;			
   706 		};
   707 
   708 
   709 	
   710 	class TQoSR5Negotiated : public TQoSR99_R4Negotiated	
   711 	/**
   712 	Contains the negotiated values for the UMTS/IMS 3GPP Rel5 QoS profile.
   713 
   714 	@publishedPartner
   715 	@released
   716 	*/
   717 		{
   718 	public:
   719 		IMPORT_C TQoSR5Negotiated();
   720 	public:	
   721 		/** Negotiated signalling indication. */	
   722 		TBool						iSignallingIndication;			
   723 		/** Negotiated source statistics descriptor. */
   724 		TSourceStatisticsDescriptor	iSourceStatisticsDescriptor;	 		
   725 		};
   726 		
   727 	IMPORT_C		RPacketQoS();
   728 	IMPORT_C TInt	OpenNewQoS(RPacketContext& aPacketContext, TDes& aProfileName);
   729 	IMPORT_C TInt	OpenExistingQoS(RPacketContext& aPacketContext, const TDesC& aProfileName); 
   730 	IMPORT_C void	Close();
   731 
   732 	IMPORT_C void	SetProfileParameters(TRequestStatus& aStatus, TDes8& aProfile) const;
   733 	IMPORT_C void	GetProfileParameters(TRequestStatus& aStatus, TDes8& aProfile) const;
   734 	IMPORT_C void	GetProfileCapabilities(TRequestStatus& aStatus, TDes8& aProfileCaps) const;
   735 	IMPORT_C void	NotifyProfileChanged(TRequestStatus& aStatus, TDes8& aProfile) const;
   736 protected:
   737 	IMPORT_C virtual void ConstructL();
   738 	IMPORT_C virtual void Destruct();
   739 private:
   740 	CPacketQoSPtrHolder* iEtelPacketQoSPtrHolder;
   741 	};
   742 
   743 #endif
   744