epoc32/include/etelqos.h
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
equal deleted inserted replaced
3:e1b950c65cb4 4:837f303aceeb
     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