williamr@2: // Copyright (c) 2005-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: // Header file for the 3GPP SubConnection Extension Parameters williamr@2: // williamr@2: // williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: @file williamr@2: @publishedAll williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef QOS3GPP_SUBCONPARAMS_H williamr@2: #define QOS3GPP_SUBCONPARAMS_H williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: const TInt KSubCon3GPPExtParamsFactoryUid = 0x1020D460; williamr@2: const TInt KSubConQosR99ParamsType = 1; williamr@2: const TInt KSubConnSBLPR5ExtensionParamsType = 2; williamr@2: williamr@2: williamr@2: #ifdef SYMBIAN_NETWORKING_UMTSR5 williamr@2: const TInt KSubConQosR5ParamsType =3; williamr@2: const TInt KSubConImsExtParamsType = 4; williamr@2: #endif williamr@2: // SYMBIAN_NETWORKING_UMTSR5 williamr@2: williamr@2: /** Constant definitions particular to the Generic Parameters. */ williamr@2: const TInt KMAuthTokenLength = 255; williamr@2: /** Typedef for the AuthToken Holder. */ williamr@2: typedef TBuf8 TAuthToken; williamr@2: williamr@2: /** Provides Implementation of IP QoS Parameters williamr@2: williamr@2: @publishedAll williamr@2: @released Since 9.3 williamr@2: */ williamr@2: //SMetaDataECom must be the first in the superclasses' list williamr@2: class CSubConQosR99ParamSet : public CSubConExtensionParameterSet williamr@2: { williamr@2: public: williamr@2: enum williamr@2: { williamr@2: EUid = KSubCon3GPPExtParamsFactoryUid, williamr@2: EId = KSubConQosR99ParamsType, williamr@2: }; williamr@2: public: williamr@2: inline static CSubConQosR99ParamSet* NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType); williamr@2: inline static CSubConQosR99ParamSet* NewL(); williamr@2: williamr@2: inline CSubConQosR99ParamSet(); williamr@2: williamr@2: inline RPacketQoS::TTrafficClass GetTrafficClass() const; williamr@2: inline RPacketQoS::TDeliveryOrder GetDeliveryOrder() const; williamr@2: inline RPacketQoS::TErroneousSDUDelivery GetErroneousSDUDelivery() const; williamr@2: inline RPacketQoS::TBitErrorRatio GetResidualBitErrorRatio() const; williamr@2: inline RPacketQoS::TSDUErrorRatio GetSDUErrorRatio() const; williamr@2: inline RPacketQoS::TTrafficHandlingPriority GetTrafficHandlingPriority() const; williamr@2: inline TInt GetTransferDelay() const; williamr@2: inline TInt GetMaxSduSize() const; williamr@2: inline TInt GetMaxBitrateUplink() const; williamr@2: inline TInt GetMaxBitrateDownlink() const; williamr@2: inline TInt GetGuaBitrateUplink() const; williamr@2: inline TInt GetGuaBitrateDownlink() const; williamr@2: inline void SetTrafficClass(RPacketQoS::TTrafficClass aTrafficClass); williamr@2: inline void SetDeliveryOrder(RPacketQoS::TDeliveryOrder aDeliveryOrder); williamr@2: inline void SetErroneousSDUDelivery(RPacketQoS::TErroneousSDUDelivery aDeliveryOfErroneusSdu); williamr@2: inline void SetResidualBitErrorRatio(RPacketQoS::TBitErrorRatio aResidualBer); williamr@2: inline void SetSDUErrorRatio(RPacketQoS::TSDUErrorRatio aErrorRatio); williamr@2: inline void SetTrafficHandlingPriority(RPacketQoS::TTrafficHandlingPriority aPriority); williamr@2: inline void SetTransferDelay(TInt aTransferDelay); williamr@2: inline void SetMaxSduSize(TInt aMaxSduSize); williamr@2: inline void SetMaxBitrateUplink(TInt aMaxBitrateUplink); williamr@2: inline void SetMaxBitrateDownlink(TInt aMaxBitrateDownlink); williamr@2: inline void SetGuaBitrateUplink(TInt aGuaBitrateUplink); williamr@2: inline void SetGuaBitrateDownlink(TInt aGuaBitrateDownlink); williamr@2: williamr@2: protected: williamr@2: williamr@2: DATA_VTABLE williamr@2: williamr@2: protected: williamr@2: RPacketQoS::TTrafficClass iTrafficClass; // Traffic class williamr@2: RPacketQoS::TDeliveryOrder iDeliveryOrder; // Delivery order williamr@2: RPacketQoS::TErroneousSDUDelivery iDeliveryOfErroneusSdu; // Delivery of erroneous SDUs williamr@2: RPacketQoS::TBitErrorRatio iResidualBer; // Residual BER williamr@2: RPacketQoS::TSDUErrorRatio iErrorRatio; // SDU error ratio williamr@2: RPacketQoS::TTrafficHandlingPriority iPriority; // Traffic handling priority williamr@2: TInt iTransferDelay; // Transfer delay williamr@2: TInt iMaxSduSize; // Maximum SDU size williamr@2: TInt iMaxBitrateUplink; // Maximum bit rate for uplink williamr@2: TInt iMaxBitrateDownlink; // Maximum bit rate for downlink williamr@2: TInt iGuaBitrateUplink; // Guaranteed bit rate for uplink williamr@2: TInt iGuaBitrateDownlink; // Guaranteed bit rate for downlink williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: #ifdef SYMBIAN_NETWORKING_UMTSR5 williamr@2: williamr@2: /** Extension QoS Parameter Set for UMTS Release 5 */ williamr@2: class CSubConImsExtParamSet : public CSubConExtensionParameterSet williamr@2: { williamr@2: public: williamr@2: enum williamr@2: { williamr@2: EUid = KSubCon3GPPExtParamsFactoryUid, williamr@2: EId = KSubConImsExtParamsType, williamr@2: }; williamr@2: public: williamr@2: inline static CSubConImsExtParamSet* NewL(CSubConParameterFamily& aFamily,CSubConParameterFamily::TParameterSetType aType); williamr@2: inline static CSubConImsExtParamSet* NewL(); williamr@2: inline CSubConImsExtParamSet(); williamr@2: williamr@2: // New IM CN Signalling Indicator williamr@2: inline TBool GetImsSignallingIndicator() const; williamr@2: inline void SetImsSignallingIndicator(TBool aIMSSignallingIndicator); williamr@2: protected: williamr@2: DATA_VTABLE williamr@2: williamr@2: private: williamr@2: // IMSSignallingIndicator for raised priority of traffic williamr@2: TBool iImsSignallingIndicator; williamr@2: }; williamr@2: williamr@2: class CSubConQosR5ParamSet : public CSubConQosR99ParamSet williamr@2: { williamr@2: public: williamr@2: enum williamr@2: { williamr@2: EUid = KSubCon3GPPExtParamsFactoryUid, williamr@2: EId = KSubConQosR5ParamsType, williamr@2: }; williamr@2: williamr@2: public: williamr@2: inline static CSubConQosR5ParamSet* NewL(CSubConParameterFamily& aFamily,CSubConParameterFamily::TParameterSetType aType); williamr@2: inline static CSubConQosR5ParamSet* NewL(); williamr@2: inline CSubConQosR5ParamSet(); williamr@2: williamr@2: inline TBool GetSignallingIndicator() const; williamr@2: inline void SetSignallingIndicator(TBool aSignallingIndicator); williamr@2: inline RPacketQoS::TSourceStatisticsDescriptor GetSourceStatisticsDescriptor() const; williamr@2: inline void SetSourceStatisticsDescriptor(RPacketQoS::TSourceStatisticsDescriptor aSrcStatsDescType); williamr@2: williamr@2: protected: williamr@2: DATA_VTABLE williamr@2: williamr@2: private: williamr@2: // Source Statistics Descriptor williamr@2: RPacketQoS::TSourceStatisticsDescriptor iSrcStatsDesc; williamr@2: TBool iSignallingIndicator; williamr@2: williamr@2: }; williamr@2: williamr@2: #endif williamr@2: // SYMBIAN_NETWORKING_UMTSR5 williamr@2: williamr@2: williamr@2: williamr@2: /** Flow Identifires williamr@2: ECOM Implementation Id for SBLP Extension parameters. williamr@2: williamr@2: @publishedAll williamr@2: @released Since 9.3 williamr@2: */ williamr@2: struct TFlowId williamr@2: { williamr@2: /** Getter Function for the Components of Flow ids. */ williamr@2: inline TUint16 GetMediaComponentNumber() const; williamr@2: inline TUint16 GetIPFlowNumber() const; williamr@2: /** Setter Function For Flow Id Components. */ williamr@2: inline void SetMediaComponentNumber(TUint16 aMediaComponentNumber); williamr@2: inline void SetIPFlowNumber(TUint16 aIPFlowNumber); williamr@2: williamr@2: private: williamr@2: TUint16 iMediaComponentNumber; williamr@2: TUint16 iIPFlowNumber; williamr@2: }; williamr@2: williamr@2: typedef RArray RFlowIdentifiers; williamr@2: williamr@2: /** Extension Parameter Sets, Consise of MAT and FI(s). williamr@2: Provides Implementation of Extension parameters of the SBLP Family. williamr@2: williamr@2: @publishedAll williamr@2: @released Since 9.3 williamr@2: */ williamr@2: class CSubConSBLPR5ExtensionParamSet : public CSubConExtensionParameterSet williamr@2: { williamr@2: public: williamr@2: enum williamr@2: { williamr@2: EUid = KSubCon3GPPExtParamsFactoryUid, williamr@2: EId = KSubConnSBLPR5ExtensionParamsType, williamr@2: }; williamr@2: williamr@2: williamr@2: public: williamr@2: inline static CSubConSBLPR5ExtensionParamSet* NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType); williamr@2: inline static CSubConSBLPR5ExtensionParamSet* NewL(); williamr@2: williamr@2: /** Media Authorization Token setter and getter functions. */ williamr@2: inline const TAuthToken& GetMAT() const; williamr@2: inline void SetMAT(const TAuthToken& aAuthToken); williamr@2: williamr@2: /** Flow identifires setter and getter functions. */ williamr@2: inline TInt GetNumberOfFlowIds() const; williamr@2: inline const TFlowId& GetFlowIdAt(TInt aIndex) const; williamr@2: williamr@2: /** Adding of Flow Identifires into an array. */ williamr@2: inline void AddFlowIdL(const TFlowId& aFlowId); williamr@2: williamr@2: /** public constructors so that it can be accessed by factory. */ williamr@2: inline CSubConSBLPR5ExtensionParamSet(); williamr@2: inline ~CSubConSBLPR5ExtensionParamSet(); williamr@2: williamr@2: protected: williamr@2: DATA_VTABLE williamr@2: williamr@2: /** Single Media Authorization Token (MAT). */ williamr@2: TAuthToken iAuthToken; williamr@2: williamr@2: /** Multiple Flow Identifiers. */ williamr@2: RFlowIdentifiers iFlowIds; williamr@2: }; williamr@2: williamr@2: /** Factory used to create instances of IP SubConnection Parameters. williamr@2: williamr@2: @internalComponent williamr@2: @released Since 9.3 williamr@2: */ williamr@2: class CSubCon3GPPExtParamsFactory : public CBase williamr@2: { williamr@2: public: williamr@2: static CSubConExtensionParameterSet* NewL(TAny* aConstructionParameters); williamr@2: }; williamr@2: williamr@2: #include williamr@2: williamr@2: #endif williamr@2: // QOS3GPP_SUBCONPARAMS_H