williamr@2: // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // 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 williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // ETel Multimode Packet Data API - Quality of Service (QoS) support williamr@2: // GPRS Rel97/98, CDMAOne, CDMA2000, Release 99 and Release 4. williamr@2: // williamr@2: // williamr@2: williamr@2: williamr@2: #if!defined(__ETELQOS_H__) williamr@2: #define __ETELQOS_H__ williamr@2: williamr@2: #include "etelpckt.h" williamr@2: williamr@2: class RPacketContext; williamr@2: class CPacketQoSPtrHolder; williamr@2: williamr@2: williamr@2: class RPacketQoS : public RTelSubSessionBase williamr@2: /** williamr@2: Encapsulates functionality to set the Requested and Minimum Quality of Service williamr@2: options for a particular context (or "service configuration" in CDMA parlance), williamr@2: as represented by the RPacketContext class. williamr@2: williamr@2: Methods are available to set and get the QoS options, query the QoS capabilities williamr@2: of the network service and notify the client if a change in the negotiated QoS williamr@2: options occurs. williamr@2: williamr@2: A client must first create an instance of RPacketContext before opening a new williamr@2: RPacketQoS, since when creating a new RPacketQoS, the client must call the williamr@2: RPacketQoS::OpenNewQoS() function and pass in a reference to an RPacketContext williamr@2: instance. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: // williamr@2: // Nested enums and classes williamr@2: // williamr@2: /** Defines the QoS reliability settings for GRPS networks. */ williamr@2: enum TQoSReliability // GPRS Release 97/98 williamr@2: { williamr@2: /** Best effort or subscribed value. */ williamr@2: EUnspecifiedReliabilityClass = 0x01, williamr@2: /** Reliability Class 1. */ williamr@2: EReliabilityClass1 = 0x02, williamr@2: /** Reliability Class 2. */ williamr@2: EReliabilityClass2 = 0x04, williamr@2: /** Reliability Class 3. */ williamr@2: EReliabilityClass3 = 0x08, williamr@2: /** Reliability Class 4. */ williamr@2: EReliabilityClass4 = 0x10, williamr@2: /** Reliability Class 5. */ williamr@2: EReliabilityClass5 = 0x20 williamr@2: }; williamr@2: williamr@2: /** Defines the QoS precedence for GRPS networks. */ williamr@2: enum TQoSPrecedence // GPRS Release 97/98 williamr@2: { williamr@2: /** Best effort or subscribed value */ williamr@2: EUnspecifiedPrecedence = 0x01, williamr@2: /** High priority precedence. */ williamr@2: EPriorityHighPrecedence = 0x02, williamr@2: /** Medium priority precedence. */ williamr@2: EPriorityMediumPrecedence = 0x04, williamr@2: /** Low priority precedence. */ williamr@2: EPriorityLowPrecedence = 0x08 williamr@2: }; williamr@2: williamr@2: /** Defines the QoS delay for GPRS and CDMA200 networks. williamr@2: */ williamr@2: enum TQoSDelay // GPRS Release 97/98, CDMA2000 williamr@2: { williamr@2: /** Best effort or subscribed value. */ williamr@2: EUnspecifiedDelayClass = 0x01, williamr@2: /** Delay class 1. */ williamr@2: EDelayClass1 = 0x02, williamr@2: /** Delay class 2. */ williamr@2: EDelayClass2 = 0x04, williamr@2: /** Delay class 3. */ williamr@2: EDelayClass3 = 0x08, williamr@2: /** Delay class 4. */ williamr@2: EDelayClass4 = 0x10, williamr@2: /** Delay 40 milli seconds. williamr@2: williamr@2: CDMA2000 specific */ williamr@2: EDelay40ms = 0x20, williamr@2: /** Delay 120 milli seconds. williamr@2: williamr@2: CDMA2000 specific */ williamr@2: EDelay120ms = 0x40, williamr@2: /** Delay 360 milli seconds. williamr@2: williamr@2: CDMA2000 specific */ williamr@2: EDelay360ms = 0x80 williamr@2: }; williamr@2: williamr@2: /** Defines the QoS peak throughput rates for GRPS networks. */ williamr@2: enum TQoSPeakThroughput // GPRS Release 97/98 williamr@2: { williamr@2: /** Best effort or subscribed value. */ williamr@2: EUnspecifiedPeakThroughput = 0x001, williamr@2: /** Peak throughput of 1,000. */ williamr@2: EPeakThroughput1000 = 0x002, williamr@2: /** Peak throughput of 2,000. */ williamr@2: EPeakThroughput2000 = 0x004, williamr@2: /** Peak throughput of 4,000. */ williamr@2: EPeakThroughput4000 = 0x008, williamr@2: /** Peak throughput of 8,000. */ williamr@2: EPeakThroughput8000 = 0x010, williamr@2: /** Peak throughput of 16,000. */ williamr@2: EPeakThroughput16000 = 0x020, williamr@2: /** Peak throughput of 32,000. */ williamr@2: EPeakThroughput32000 = 0x040, williamr@2: /** Peak throughput of 64,000. */ williamr@2: EPeakThroughput64000 = 0x080, williamr@2: /** Peak throughput of 128,000. */ williamr@2: EPeakThroughput128000 = 0x100, williamr@2: /** Peak throughput of 256,000. */ williamr@2: EPeakThroughput256000 = 0x200 williamr@2: }; williamr@2: williamr@2: /** Defines the mean throughput for GRPS networks. */ williamr@2: enum TQoSMeanThroughput // GPRS Release 97/98 williamr@2: { williamr@2: /** Unsubscribed value. */ williamr@2: EUnspecifiedMeanThroughput = 0x00001, williamr@2: /** Mean throughput of 100. */ williamr@2: EMeanThroughput100 = 0x00002, williamr@2: /** Mean throughput of 200. */ williamr@2: EMeanThroughput200 = 0x00004, williamr@2: /** Mean throughput of 500. */ williamr@2: EMeanThroughput500 = 0x00008, williamr@2: /** Mean throughput of 1,000. */ williamr@2: EMeanThroughput1000 = 0x00010, williamr@2: /** Mean throughput of 2,000. */ williamr@2: EMeanThroughput2000 = 0x00020, williamr@2: /** Mean throughput of 5,000. */ williamr@2: EMeanThroughput5000 = 0x00040, williamr@2: /** Mean throughput of 10,000. */ williamr@2: EMeanThroughput10000 = 0x00080, williamr@2: /** Mean throughput of 20,000. */ williamr@2: EMeanThroughput20000 = 0x00100, williamr@2: /** Mean throughput of 50,000. */ williamr@2: EMeanThroughput50000 = 0x00200, williamr@2: /** Mean throughput of 100,000. */ williamr@2: EMeanThroughput100000 = 0x00400, williamr@2: /** Mean throughput of 200,000. */ williamr@2: EMeanThroughput200000 = 0x00800, williamr@2: /** Mean throughput of 500,000. */ williamr@2: EMeanThroughput500000 = 0x01000, williamr@2: /** Mean throughput of 1,000,000. */ williamr@2: EMeanThroughput1000000 = 0x02000, williamr@2: /** Mean throughput of 2,000,000. */ williamr@2: EMeanThroughput2000000 = 0x04000, williamr@2: /** Mean throughput of 5,000,000. */ williamr@2: EMeanThroughput5000000 = 0x08000, williamr@2: /** Mean throughput of 10,000,000. */ williamr@2: EMeanThroughput10000000 = 0x10000, williamr@2: /** Mean throughput of 20,000,000. */ williamr@2: EMeanThroughput20000000 = 0x20000, williamr@2: /** Mean throughput of 50,000,000. */ williamr@2: EMeanThroughput50000000 = 0x40000, williamr@2: /** Best effort. */ williamr@2: EMeanThroughputBestEffort = 0x80000 williamr@2: }; williamr@2: williamr@2: /** Defines the QoS link priority for CMDA2000 networks. */ williamr@2: enum TQoSLinkPriority williamr@2: { williamr@2: /** No link priority. */ williamr@2: ELinkPriority00 = 0x0001, williamr@2: /** 1/13th's of user's subscription priority. */ williamr@2: ELinkPriority01 = 0x0002, williamr@2: /** 2/13th's of user's subscription priority. */ williamr@2: ELinkPriority02 = 0x0004, williamr@2: /** 3/13th's of user's subscription priority. */ williamr@2: ELinkPriority03 = 0x0008, williamr@2: /** 4/13th's of user's subscription priority. */ williamr@2: ELinkPriority04 = 0x0010, williamr@2: /** 5/13th's of user's subscription priority. */ williamr@2: ELinkPriority05 = 0x0020, williamr@2: /** 6/13th's of user's subscription priority. */ williamr@2: ELinkPriority06 = 0x0040, williamr@2: /** 7/13th's of user's subscription priority. */ williamr@2: ELinkPriority07 = 0x0080, williamr@2: /** 8/13th's of user's subscription priority. */ williamr@2: ELinkPriority08 = 0x0100, williamr@2: /** 9/13th's of user's subscription priority. */ williamr@2: ELinkPriority09 = 0x0200, williamr@2: /** 10/13th's of user's subscription priority. */ williamr@2: ELinkPriority10 = 0x0400, williamr@2: /** 11/13th's of user's subscription priority. */ williamr@2: ELinkPriority11 = 0x0800, williamr@2: /** 12/13th's of user's subscription priority. */ williamr@2: ELinkPriority12 = 0x1000, williamr@2: /** Subscription priority (13/13th's). */ williamr@2: ELinkPriority13 = 0x2000 williamr@2: }; williamr@2: williamr@2: /** Defines the QoS data loss rate. */ williamr@2: enum TQoSDataLoss williamr@2: { williamr@2: /** 1% data loss rate. */ williamr@2: EDataLoss1 = 0x01, williamr@2: /** 2% data loss rate. */ williamr@2: EDataLoss2 = 0x02, williamr@2: /** 5% data loss rate. */ williamr@2: EDataLoss5 = 0x04, williamr@2: /** 10% data loss rate. */ williamr@2: EDataLoss10 = 0x08 williamr@2: }; williamr@2: williamr@2: /** Defines the QoS data rate. */ williamr@2: enum TQoSDataRate williamr@2: { williamr@2: /** A data rate of 8 kb/s. */ williamr@2: EDataRate8kbps = 0x01, williamr@2: /** A data rate of 32 kb/s. */ williamr@2: EDataRate32kbps = 0x02, williamr@2: /** A data rate of 64 kb/s. */ williamr@2: EDataRate64kbps = 0x04, williamr@2: /** A data rate of 144 kb/s. */ williamr@2: EDataRate144kbps = 0x08, williamr@2: /** A data rate of 384 kb/s */ williamr@2: EDataRate384kbps = 0x10 williamr@2: }; williamr@2: williamr@2: // williamr@2: // TRLPMode - allows the client to specify (if desired) one of the following: williamr@2: // transparent only, tranparent preferred, non-transparent only or non-transparent williamr@2: // preferred Radio Link Protocol Mode williamr@2: // williamr@2: /** Defines the Radio Link Protocol (RPL) mode. */ williamr@2: enum TRLPMode williamr@2: { williamr@2: /** RPL mode unknown. */ williamr@2: KRLPUnknown = 0x01, williamr@2: /** Transparent mode only. */ williamr@2: KRLPTransparent = 0x02, williamr@2: /** Non-transparent mode only. */ williamr@2: KRLPNonTransparent = 0x04, williamr@2: /** Transparent mode preferred. */ williamr@2: KRLPTransparentPref = 0x08, williamr@2: /** Non-transparent mode preferred. */ williamr@2: KRLPNonTransparentPref = 0x10 williamr@2: }; williamr@2: williamr@2: // The enums TTrafficClass, TDeliveryOrder,TErroneousSDUDelivery, TBitErrorRatio, williamr@2: // TSDUErrorRatio, TTrafficHandlingPriority have been assigned values because williamr@2: // the same enums are used both in the TQoSR99_R4Requested / Negotiated classes and williamr@2: // in the TQoSCapsR99_R4 class. The Caps class has to indicate which, for instance, williamr@2: // traffic classes are supported in a bitfield, so the enums have been defined as williamr@2: // different bits in a bit field. williamr@2: enum TTrafficClass williamr@2: { williamr@2: ETrafficClassUnspecified = 0x01, ///< Traffic class - Unspecified williamr@2: ETrafficClassConversational = 0x02, ///< Traffic class - Conversational williamr@2: ETrafficClassStreaming = 0x04, ///< Traffic class - Streaming williamr@2: ETrafficClassInteractive = 0x08, ///< Traffic class - Interactive williamr@2: ETrafficClassBackground = 0x10 ///< Traffic class - Background williamr@2: }; williamr@2: williamr@2: enum TDeliveryOrder williamr@2: { williamr@2: EDeliveryOrderUnspecified = 0x01, ///< SDU Delivery order - Unspecified williamr@2: EDeliveryOrderRequired = 0x02, ///< SDU Delivery order - Required to be in sequence williamr@2: EDeliveryOrderNotRequired = 0x04 ///< SDU Delivery order - Not Required to be in sequence williamr@2: }; williamr@2: williamr@2: enum TErroneousSDUDelivery // Erroneous SDU Delivery williamr@2: { williamr@2: EErroneousSDUDeliveryUnspecified = 0x01, ///< Unspecified williamr@2: EErroneousSDUNoDetection = 0x02, ///< Erroneous SDUs delivered - Error detection not considered. williamr@2: EErroneousSDUDeliveryRequired = 0x04, ///< Erroneous SDUs delivered + error indication - Error detection employed. williamr@2: EErroneousSDUDeliveryNotRequired = 0x08 ///< Erroneous SDUs discarded - Error detection is employed. williamr@2: }; williamr@2: williamr@2: enum TBitErrorRatio // Residual Bit Error Rate williamr@2: { williamr@2: EBERUnspecified = 0x01, ///< Target residual undetected BER - Unspecified williamr@2: EBERFivePerHundred = 0x02, ///< Target residual BER - 0.05 williamr@2: EBEROnePerHundred = 0x04, ///< Target residual BER - 0.01 williamr@2: EBERFivePerThousand = 0x08, ///< Target residual BER - 0.005 williamr@2: EBERFourPerThousand = 0x10, ///< Target residual BER - 0.004 williamr@2: EBEROnePerThousand = 0x20, ///< Target residual BER - 0.001 williamr@2: EBEROnePerTenThousand = 0x40, ///< Target residual BER - 0.0001 williamr@2: EBEROnePerHundredThousand = 0x80, ///< Target residual BER - 0.00001 williamr@2: EBEROnePerMillion = 0x100, ///< Target residual BER - 0.000001 williamr@2: EBERSixPerHundredMillion = 0x200 ///< Target residual BER - 0.00000006 williamr@2: }; williamr@2: williamr@2: enum TSDUErrorRatio // SDU Error Ratio williamr@2: { williamr@2: ESDUErrorRatioUnspecified = 0x01, ///< Target value of Erroneous SDUs - Unspecified williamr@2: ESDUErrorRatioOnePerTen = 0x02, ///< Target SDU error ratio - 0.1 williamr@2: ESDUErrorRatioOnePerHundred = 0x04, ///< Target SDU error ratio - 0.01 williamr@2: ESDUErrorRatioSevenPerThousand = 0x08, ///< Target SDU error ratio - 0.007 williamr@2: ESDUErrorRatioOnePerThousand = 0x10, ///< Target SDU error ratio - 0.001 williamr@2: ESDUErrorRatioOnePerTenThousand = 0x20, ///< Target SDU error ratio - 0.0001 williamr@2: ESDUErrorRatioOnePerHundredThousand = 0x40, ///< Target SDU error ratio - 0.00001 williamr@2: ESDUErrorRatioOnePerMillion = 0x80 ///< Target SDU error ratio - 0.000001 williamr@2: }; williamr@2: williamr@2: enum TTrafficHandlingPriority // Traffic handling priority williamr@2: { williamr@2: ETrafficPriorityUnspecified = 0x01, ///< Unspecified Priority level williamr@2: ETrafficPriority1 = 0x02, ///< Priority level 1 williamr@2: ETrafficPriority2 = 0x04, ///< Priority level 2 williamr@2: ETrafficPriority3 = 0x08 ///< Priority level 3 williamr@2: }; williamr@2: williamr@2: struct TBitRate // Bit rates for uplink and downlink williamr@2: { williamr@2: TInt iUplinkRate; ///< Uplink bitrate in kbps. Range 0 - 16000 williamr@2: TInt iDownlinkRate; ///< Downlink bitrate in kbps. Range 0 - 16000 williamr@2: }; williamr@2: williamr@2: /** williamr@2: Source statistics descriptor - as defined in 3GPP TS 23.107 and TS 24.008. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: enum TSourceStatisticsDescriptor williamr@2: { williamr@2: /** Unknown source statistics descriptor. */ williamr@2: ESourceStatisticsDescriptorUnknown = 0x0, williamr@2: /** Speech source statistics descriptor. */ williamr@2: ESourceStatisticsDescriptorSpeech = 0x01, williamr@2: }; williamr@2: williamr@2: // williamr@2: // QoS capabilities classes williamr@2: // williamr@2: class TQoSCapsGPRS : public TPacketDataConfigBase williamr@2: /** williamr@2: Supported GPRS QoS capabilities. williamr@2: williamr@2: @deprecated v9.3 Use TQoSCapsR99_R4 or TQoSCapsR5 instead. williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TQoSCapsGPRS(); // iExtensionId = KConfigGPRS williamr@2: public: williamr@2: /** Bit-wise sum of the TQoSPrecedence attributes. williamr@2: williamr@2: The default value is EUnspecifiedPrecedence. */ williamr@2: TUint iPrecedence; williamr@2: /** Bit-wise sum of the TQoSDelay attributes. williamr@2: williamr@2: The default value is EUnspecifiedDelay. */ williamr@2: TUint iDelay; williamr@2: /** Bit-wise sum of the TQoSReliability attributes. williamr@2: williamr@2: The default value is EUnspecifiedReliability. */ williamr@2: TUint iReliability; williamr@2: /** Bit-wise sum of the TQoSPeakThroughput attributes. williamr@2: williamr@2: The default value is EUnspecifiedPeakThroughput. */ williamr@2: TUint iPeak; williamr@2: /** Bit-wise sum of the TQoSMeanThroughput attributes. williamr@2: williamr@2: The default value is EUnspecifiedMeanThroughput. */ williamr@2: TUint iMean; williamr@2: }; williamr@2: williamr@2: class TQoSCapsCDMA2000 : public TPacketDataConfigBase williamr@2: /** williamr@2: Supported CDMA2000 QoS capabilities. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TQoSCapsCDMA2000(); // iExtensionId = KConfigCDMA williamr@2: public: williamr@2: /** Bit-wise sum of the TQoSLinkPriority attributes. */ williamr@2: TUint iPriority; williamr@2: /** Bit-wise sum of the TQoSDataRate attributes for the uplink. */ williamr@2: TUint iUplinkRate; williamr@2: /** Bit-wise sum of the TQoSDataRate attributes for the downlink. */ williamr@2: TUint iDownlinkRate; williamr@2: /** Bit-wise sum of the TQoSDataLoss attributes. */ williamr@2: TUint iFwdLossRate; williamr@2: /** Bit-wise sum of the TQoSDataLoss attributes. */ williamr@2: TUint iRevLossRate; williamr@2: /** Bit-wise sum of the TQoSDelay attributes. */ williamr@2: TUint iFwdMaxDelay; williamr@2: /** Bit-wise sum of the TQoSDelay attributes. */ williamr@2: TUint iRevMaxDelay; williamr@2: }; williamr@2: williamr@2: williamr@2: class TQoSCapsR99_R4 : public TPacketDataConfigBase williamr@2: /** williamr@2: GPRS/UMTS Rel99 and UMTS Rel4 QoS capabilities class. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TQoSCapsR99_R4(); williamr@2: public: williamr@2: TUint iTrafficClass; ///< Supported traffic class of the MT williamr@2: TUint iDeliveryOrderReqd; ///< SDU sequential delivery williamr@2: TUint iDeliverErroneousSDU; ///< Delivery of erroneous SDUs williamr@2: TUint iBER; ///< Target Bit Error Ratio (BER) williamr@2: TUint iSDUErrorRatio; ///< Target SDU Error Ratio williamr@2: TUint iTrafficHandlingPriority; ///< Traffic handling priority williamr@2: }; williamr@2: williamr@2: class TQoSCapsR5 : public TQoSCapsR99_R4 williamr@2: /** williamr@2: UMTS Rel5 QoS capabilities class. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TQoSCapsR5(); williamr@2: public: williamr@2: TUint iSignallingIndication; ///< Requested signalling indication williamr@2: TUint iSourceStatisticsDescriptor; ///< Requested source statistics descriptor williamr@2: }; williamr@2: williamr@2: // williamr@2: // QoS configuration classes williamr@2: // williamr@2: class TQoSGPRSRequested : public TPacketDataConfigBase // GPRS Rel97/98 williamr@2: /** williamr@2: The GPRS QoS that is requested. williamr@2: williamr@2: @deprecated v9.3 Use TQoSR99_R4Requested or TQoSR5Requested instead. williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TQoSGPRSRequested(); williamr@2: public: williamr@2: /** Precedence requested. The default is EUnspecifiedPrecedence. williamr@2: williamr@2: @see TQoSPrecedence */ williamr@2: TQoSPrecedence iReqPrecedence; williamr@2: /** Minimum precedence. The default is EUnspecifiedPrecedence. williamr@2: williamr@2: @see TQoSPrecedence */ williamr@2: TQoSPrecedence iMinPrecedence; williamr@2: /** Requested QoS Delay. The default is EUnspecifiedDelayClass. williamr@2: williamr@2: @see TQoSDelay */ williamr@2: TQoSDelay iReqDelay; williamr@2: /** Minimum delay requested. The default is EUnspecifiedDelayClass. williamr@2: williamr@2: @see TQoSDelay */ williamr@2: TQoSDelay iMinDelay; williamr@2: /** Requested reliability. The default is EUnspecifiedReliabilityClass. williamr@2: williamr@2: @see TQoSReliability */ williamr@2: TQoSReliability iReqReliability; williamr@2: /** Requested minimum reliability . The default is EUnspecifiedReliabilityClass. williamr@2: williamr@2: @see TQoSReliability */ williamr@2: TQoSReliability iMinReliability; williamr@2: /** Requested peak throughput . The default is EUnspecifiedPeakThroughput. williamr@2: williamr@2: @see TQoSPeakThroughput */ williamr@2: TQoSPeakThroughput iReqPeakThroughput; williamr@2: /** Requested minimum peak throughput. The default is EUnspecifiedPeakThroughput. williamr@2: williamr@2: @see TQoSPeakThroughput */ williamr@2: TQoSPeakThroughput iMinPeakThroughput; williamr@2: /** Requested QoS mean throughput. The default is EUnspecifiedMeanThroughput. williamr@2: williamr@2: @see TQoSMeanThroughput */ williamr@2: TQoSMeanThroughput iReqMeanThroughput; williamr@2: /** Requested minimum QoS mean throughput. The default is EUnspecifiedMeanThroughput. williamr@2: williamr@2: @see TQoSMeanThroughput */ williamr@2: TQoSMeanThroughput iMinMeanThroughput; williamr@2: }; williamr@2: williamr@2: class TQoSGPRSNegotiated : public TPacketDataConfigBase // GPRS Rel97/98 williamr@2: /** Contains the negotiated QoS values - returned by the GPRS network williamr@2: after activating a connection and determining the QoS profile. williamr@2: williamr@2: @deprecated v9.3 Use TQoSR99_R4Negotiated or TQoSR5Negotiated instead. williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TQoSGPRSNegotiated(); williamr@2: public: williamr@2: /** Negotiated QoS precedence. The default is EUnspecifiedPrecedence. williamr@2: williamr@2: @see TQoSPrecedence */ williamr@2: TQoSPrecedence iPrecedence; williamr@2: /** Negotiated QoS delay. The default is EUnspecifiedPeakThroughput. williamr@2: williamr@2: @see TQoSDelay */ williamr@2: TQoSDelay iDelay; williamr@2: /** Negotiated QoS reliability. The default is EUnspecifiedReliabilityClass. williamr@2: williamr@2: @see TQoSReliability */ williamr@2: TQoSReliability iReliability; williamr@2: /** Negotiated QoS peak throughput. The default is EUnspecifiedPeakThroughput. williamr@2: williamr@2: @see TQoSPeakThroughput */ williamr@2: TQoSPeakThroughput iPeakThroughput; williamr@2: /** Negotiated QoS mean throughput. The default is EUnspecifiedMeanThroughput. williamr@2: williamr@2: @see TQoSMeanThroughput */ williamr@2: TQoSMeanThroughput iMeanThroughput; williamr@2: }; williamr@2: williamr@2: class TQoSCDMA2000Requested : public TPacketDataConfigBase // CDMA2000 williamr@2: /** williamr@2: The CDMA2000 QoS requested from the network. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TQoSCDMA2000Requested(); williamr@2: public: williamr@2: /** The request assured mode. */ williamr@2: TBool iAssuredMode; // assured vs. non-assured mode williamr@2: /** The RPL mode requested. williamr@2: williamr@2: @see TRLPMode */ williamr@2: TRLPMode iRLPMode; williamr@2: /** The link priority requested. williamr@2: williamr@2: @see TQoSLinkPriority */ williamr@2: TQoSLinkPriority iPriority; williamr@2: /** The uplink rate requested. williamr@2: williamr@2: @see TQoSDataRate */ williamr@2: TQoSDataRate iReqUplinkRate; williamr@2: /** The minimum uplink rate requested. williamr@2: williamr@2: @see TQoSDataRate */ williamr@2: TQoSDataRate iMinUplinkRate; williamr@2: /** The downlink rate requested williamr@2: williamr@2: @see TQoSDataRate */ williamr@2: TQoSDataRate iReqDownlinkRate; williamr@2: /** The minimum downlink rate requested. williamr@2: williamr@2: @see TQoSDataRate */ williamr@2: TQoSDataRate iMinDownlinkRate; williamr@2: /** The forward loss rate requested. */ williamr@2: TQoSDataLoss iFwdRequestedLossRate; williamr@2: TQoSDataLoss iRevRequestedLossRate; williamr@2: /** The forward accepted loss rate. */ williamr@2: TQoSDataLoss iFwdAcceptedLossRate; williamr@2: /** The reverse accepted loss rate. */ williamr@2: TQoSDataLoss iRevAcceptedLossRate; williamr@2: /** The forward maximum requested delay. */ williamr@2: TQoSDelay iFwdMaxRequestedDelay; williamr@2: /** The reverse maximum requested delay. */ williamr@2: TQoSDelay iRevMaxRequestedDelay; williamr@2: /** The forward maximum accepted delay. */ williamr@2: TQoSDelay iFwdMaxAcceptedDelay; williamr@2: /** The reverse maximum accepted delay. */ williamr@2: TQoSDelay iRevMaxAcceptedDelay; williamr@2: }; williamr@2: williamr@2: class TQoSCDMA2000Negotiated : public TPacketDataConfigBase // CDMA2000 williamr@2: /** williamr@2: The negotiated CDMA200 QoS parameters. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TQoSCDMA2000Negotiated(); williamr@2: public: williamr@2: /** Negotiated assured mode. */ williamr@2: TBool iAssuredMode; // assured vs. non-assured mode. williamr@2: /** Negotiated Radio Link Protocol mode. williamr@2: williamr@2: @see TRLPMode */ williamr@2: TRLPMode iRLPMode; williamr@2: /** Negotiated QoS link priority. williamr@2: williamr@2: @see TQoSLinkPriority */ williamr@2: TQoSLinkPriority iPriority; williamr@2: /** Negotiated uplink rate. williamr@2: williamr@2: @see TQoSDataRate */ williamr@2: TQoSDataRate iUplinkRate; williamr@2: /** Negotiated downlink rate. williamr@2: williamr@2: @see TQoSDataRate */ williamr@2: TQoSDataRate iDownlinkRate; williamr@2: /** Negotiated forward data loss rate. williamr@2: williamr@2: @see TQoSDataLoss */ williamr@2: TQoSDataLoss iFwdDataLossRate; williamr@2: /** Negotiated reverse data loss rate. williamr@2: williamr@2: @see TQoSDataLoss */ williamr@2: TQoSDataLoss iRevDataLossRate; williamr@2: /** Negotiated forward maximum delay. williamr@2: williamr@2: @see TQoSDelay */ williamr@2: TQoSDelay iFwdMaxDelay; williamr@2: /** Negotiated reverse maximum delay. williamr@2: williamr@2: @see TQoSDelay */ williamr@2: TQoSDelay iRevMaxDelay; williamr@2: }; williamr@2: williamr@2: williamr@2: class TQoSR99_R4Requested : public TPacketDataConfigBase williamr@2: /** williamr@2: Contains the requested and minimum values for the williamr@2: GPRS/UMTS Rel99 and UMTS Rel4 QoS profile attributes. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TQoSR99_R4Requested(); williamr@2: public: williamr@2: TTrafficClass iReqTrafficClass; ///< Requested traffic class williamr@2: TTrafficClass iMinTrafficClass; ///< Minimum acceptable traffic class williamr@2: TDeliveryOrder iReqDeliveryOrderReqd; ///< Requested value for sequential SDU delivery williamr@2: TDeliveryOrder iMinDeliveryOrderReqd; ///< Minimum acceptable value for sequential SDU delivery williamr@2: TErroneousSDUDelivery iReqDeliverErroneousSDU; ///< Requested value for erroneous SDU delivery williamr@2: TErroneousSDUDelivery iMinDeliverErroneousSDU; ///< Minimum acceptable value for erroneous SDU delivery williamr@2: TInt iReqMaxSDUSize; ///< Request maximum SDU size williamr@2: TInt iMinAcceptableMaxSDUSize; ///< Minimum acceptable SDU size williamr@2: TBitRate iReqMaxRate; ///< Requested maximum bit rates on uplink and downlink williamr@2: TBitRate iMinAcceptableMaxRate; ///< Minimum acceptable bit rates on uplink and downlink williamr@2: TBitErrorRatio iReqBER; ///< Requested target BER williamr@2: TBitErrorRatio iMaxBER; ///< Maximum acceptable target BER williamr@2: TSDUErrorRatio iReqSDUErrorRatio; ///< Requested target SDU error ratio williamr@2: TSDUErrorRatio iMaxSDUErrorRatio; ///< Maximum acceptable target SDU error ratio williamr@2: TTrafficHandlingPriority iReqTrafficHandlingPriority;///< Requested traffic handling priority williamr@2: TTrafficHandlingPriority iMinTrafficHandlingPriority;///< Minimum acceptable traffic handling priority williamr@2: TInt iReqTransferDelay; ///< Requested transfer delay (in milliseconds) williamr@2: TInt iMaxTransferDelay; ///< Maximum acceptable transfer delay (in milliseconds) williamr@2: TBitRate iReqGuaranteedRate; ///< Requested guaranteed bit rates on uplink and downlink williamr@2: TBitRate iMinGuaranteedRate; ///< Minimum acceptable guaranteed bit rates on uplink and downlink williamr@2: }; williamr@2: williamr@2: class TQoSR99_R4Negotiated : public TPacketDataConfigBase williamr@2: /** williamr@2: Contains the negotiated values for the GPRS/UMTS Rel99 williamr@2: and UMTS Rel4 QoS profile. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TQoSR99_R4Negotiated(); williamr@2: public: williamr@2: TTrafficClass iTrafficClass; ///< Negotiated traffic class williamr@2: TDeliveryOrder iDeliveryOrderReqd; ///< Negotiated value for sequential SDU delivery williamr@2: TErroneousSDUDelivery iDeliverErroneousSDU; ///< Negotiated value for erroneous SDU delivery williamr@2: TInt iMaxSDUSize; ///< Negotiated maximum SDU size (in octets) williamr@2: TBitRate iMaxRate; ///< Negotiated maximum bit rates on the uplink and downlink williamr@2: TBitErrorRatio iBER; ///< Negotiated target BER williamr@2: TSDUErrorRatio iSDUErrorRatio; ///< Negotiated target SDU error ratio williamr@2: TTrafficHandlingPriority iTrafficHandlingPriority; ///< Negotiated traffic handling priority williamr@2: TInt iTransferDelay; ///< Negotiated transfer delay (in milliseconds) williamr@2: TBitRate iGuaranteedRate; ///< Negotiated guaranteed bit rates on the uplink and downlink williamr@2: }; williamr@2: williamr@2: williamr@2: class TQoSR5Requested : public TQoSR99_R4Requested williamr@2: /** williamr@2: Contains the requested and minimum values for the williamr@2: UMTS/IMS 3GPP Rel5 QoS profile attributes. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TQoSR5Requested(); williamr@2: public: williamr@2: /** Requested signalling indication. */ williamr@2: TBool iSignallingIndication; williamr@2: /** Requested source statistics descriptor. */ williamr@2: TSourceStatisticsDescriptor iSourceStatisticsDescriptor; williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: class TQoSR5Negotiated : public TQoSR99_R4Negotiated williamr@2: /** williamr@2: Contains the negotiated values for the UMTS/IMS 3GPP Rel5 QoS profile. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TQoSR5Negotiated(); williamr@2: public: williamr@2: /** Negotiated signalling indication. */ williamr@2: TBool iSignallingIndication; williamr@2: /** Negotiated source statistics descriptor. */ williamr@2: TSourceStatisticsDescriptor iSourceStatisticsDescriptor; williamr@2: }; williamr@2: williamr@2: IMPORT_C RPacketQoS(); williamr@2: IMPORT_C TInt OpenNewQoS(RPacketContext& aPacketContext, TDes& aProfileName); williamr@2: IMPORT_C TInt OpenExistingQoS(RPacketContext& aPacketContext, const TDesC& aProfileName); williamr@2: IMPORT_C void Close(); williamr@2: williamr@2: IMPORT_C void SetProfileParameters(TRequestStatus& aStatus, TDes8& aProfile) const; williamr@2: IMPORT_C void GetProfileParameters(TRequestStatus& aStatus, TDes8& aProfile) const; williamr@2: IMPORT_C void GetProfileCapabilities(TRequestStatus& aStatus, TDes8& aProfileCaps) const; williamr@2: IMPORT_C void NotifyProfileChanged(TRequestStatus& aStatus, TDes8& aProfile) const; williamr@2: protected: williamr@2: IMPORT_C virtual void ConstructL(); williamr@2: IMPORT_C virtual void Destruct(); williamr@2: private: williamr@2: CPacketQoSPtrHolder* iEtelPacketQoSPtrHolder; williamr@2: }; williamr@2: williamr@2: #endif williamr@2: