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