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