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: // Inline Functions 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: williamr@2: #ifndef QOS3GPP_SUBCONPARAMS_INL williamr@2: #define QOS3GPP_SUBCONPARAMS_INL williamr@2: williamr@2: /** williamr@2: @param aFamily the sub-connection parameter to which the newly created object is to be added williamr@2: @param aType The type of the set from TParameterSetType (ERequested, EAcceptable or EGranted) williamr@2: @return pointer to the created object williamr@2: */ williamr@2: CSubConQosR99ParamSet* CSubConQosR99ParamSet::NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType) williamr@2: { williamr@2: CSubConQosR99ParamSet* obj = NewL(); williamr@2: CleanupStack::PushL(obj); williamr@2: aFamily.AddExtensionSetL(*obj, aType); williamr@2: CleanupStack::Pop(obj); williamr@2: return obj; williamr@2: } williamr@2: williamr@2: /** williamr@2: @return pointer to the created object williamr@2: */ williamr@2: CSubConQosR99ParamSet* CSubConQosR99ParamSet::NewL() williamr@2: { williamr@2: STypeId typeId(KSubCon3GPPExtParamsFactoryUid, KSubConQosR99ParamsType); williamr@2: return static_cast(CSubConParameterSet::NewL(typeId)); williamr@2: } williamr@2: williamr@2: /** williamr@2: */ williamr@2: CSubConQosR99ParamSet::CSubConQosR99ParamSet() williamr@2: : CSubConExtensionParameterSet(), williamr@2: iTrafficClass(RPacketQoS::ETrafficClassUnspecified), williamr@2: iDeliveryOrder(RPacketQoS::EDeliveryOrderUnspecified), williamr@2: iDeliveryOfErroneusSdu(RPacketQoS::EErroneousSDUDeliveryUnspecified), williamr@2: iResidualBer(RPacketQoS::EBERUnspecified), williamr@2: iErrorRatio(RPacketQoS::ESDUErrorRatioUnspecified), williamr@2: iPriority(RPacketQoS::ETrafficPriorityUnspecified), williamr@2: iTransferDelay(0), williamr@2: iMaxSduSize(0), williamr@2: iMaxBitrateUplink(0), williamr@2: iMaxBitrateDownlink(0), williamr@2: iGuaBitrateUplink(0), williamr@2: iGuaBitrateDownlink(0) williamr@2: { williamr@2: } williamr@2: williamr@2: /** Identifies the current traffic class. Traffic class is; Converstional, Streaming, Interactive or Background. williamr@2: See 3GPP TS 23.107. williamr@2: @return the traffic class */ williamr@2: RPacketQoS::TTrafficClass CSubConQosR99ParamSet::GetTrafficClass() const williamr@2: { williamr@2: return iTrafficClass; williamr@2: } williamr@2: williamr@2: /** Current delivery order. Indicates whether the bearer shall provide in-sequence SDU delivery or not. williamr@2: @return Current delivery order. */ williamr@2: RPacketQoS::TDeliveryOrder CSubConQosR99ParamSet::GetDeliveryOrder() const williamr@2: { williamr@2: return iDeliveryOrder; williamr@2: } williamr@2: williamr@2: /** Current delivery of erroneous SDUs. Indicates whether SDUs detected as erroneous shall be delivered or discarded. williamr@2: @return Current delivery of erroneous SDUs. */ williamr@2: RPacketQoS::TErroneousSDUDelivery CSubConQosR99ParamSet::GetErroneousSDUDelivery() const williamr@2: { williamr@2: return iDeliveryOfErroneusSdu; williamr@2: } williamr@2: williamr@2: /** Indicates the undetected bit error ratio in the delivered SDUs. If no error detection is williamr@2: requested, Residual bit error ratio indicates the bit error ratio in williamr@2: the delivered SDUs. williamr@2: @return the residual bit error ratio. */ williamr@2: RPacketQoS::TBitErrorRatio CSubConQosR99ParamSet::GetResidualBitErrorRatio() const williamr@2: { williamr@2: return iResidualBer; williamr@2: } williamr@2: williamr@2: /** Indicates the fraction of SDUs lost or detected as erroneous. williamr@2: @return the SDU error ratio. */ williamr@2: RPacketQoS::TSDUErrorRatio CSubConQosR99ParamSet::GetSDUErrorRatio() const williamr@2: { williamr@2: return iErrorRatio; williamr@2: } williamr@2: williamr@2: /** Current traffic handling priority. Specifies the relative importance for handling of all SDUs williamr@2: belonging to the UMTS bearer compared to the SDUs of other bearers. This is defined only for williamr@2: Interactive traffic class. See 3GPP TS 23.107 williamr@2: @return the traffic handling priority. */ williamr@2: RPacketQoS::TTrafficHandlingPriority CSubConQosR99ParamSet::GetTrafficHandlingPriority() const williamr@2: { williamr@2: return iPriority; williamr@2: } williamr@2: williamr@2: /** @return the transfer delay. Indicates maximum delay for 95th percentile of the distribution williamr@2: of delay for all delivered SDUs during the lifetime of a bearer service, where delay for an SDU williamr@2: is defined as the time from a request to transfer an SDU at one SAP to its delivery at the other williamr@2: SAP. */ williamr@2: TInt CSubConQosR99ParamSet::GetTransferDelay() const williamr@2: { williamr@2: return iTransferDelay; williamr@2: } williamr@2: williamr@2: /** @return the maximum SDU size. */ williamr@2: TInt CSubConQosR99ParamSet::GetMaxSduSize() const williamr@2: { williamr@2: return iMaxSduSize; williamr@2: } williamr@2: williamr@2: /** @return Current maximum bitrate for uplink direction. The traffic is conformant with Maximum williamr@2: bitrate as long as it follows a token bucket algorithm where token rate equals Maximum bitrate williamr@2: and bucket size equals Maximum SDU size. williamr@2: */ williamr@2: TInt CSubConQosR99ParamSet::GetMaxBitrateUplink() const williamr@2: { williamr@2: return iMaxBitrateUplink; williamr@2: } williamr@2: williamr@2: /** Getter function for the maximum downlink bit rate. williamr@2: @return the maximum downlink bit rate. */ williamr@2: TInt CSubConQosR99ParamSet::GetMaxBitrateDownlink() const williamr@2: { williamr@2: return iMaxBitrateDownlink; williamr@2: } williamr@2: williamr@2: /** Getter function for the guaranteed uplink bit rate. williamr@2: @return the guaranteed uplink bit rate. */ williamr@2: TInt CSubConQosR99ParamSet::GetGuaBitrateUplink() const williamr@2: { williamr@2: return iGuaBitrateUplink; williamr@2: } williamr@2: williamr@2: /** Getter function for the guaranteed downlink bit rate. williamr@2: @return the guaranteed downlink bit rate. */ williamr@2: TInt CSubConQosR99ParamSet::GetGuaBitrateDownlink() const williamr@2: { williamr@2: return iGuaBitrateDownlink; williamr@2: } williamr@2: williamr@2: /** Sets the traffic class. williamr@2: @param aTrafficClass Value to which to set the traffic class. */ williamr@2: void CSubConQosR99ParamSet::SetTrafficClass(RPacketQoS::TTrafficClass aTrafficClass) williamr@2: { williamr@2: iTrafficClass = aTrafficClass; williamr@2: } williamr@2: williamr@2: /** Sets the delivery order. Indicates whether in-sequence SDU delivery shall be provided or not. williamr@2: @param aDeliveryOrder Value to which to set the delivery order. */ williamr@2: void CSubConQosR99ParamSet::SetDeliveryOrder(RPacketQoS::TDeliveryOrder aDeliveryOrder) williamr@2: { williamr@2: iDeliveryOrder = aDeliveryOrder; williamr@2: } williamr@2: williamr@2: /** Sets the handling of the delivery of erroneous SDUs williamr@2: @param aDeliveryOfErroneusSdu Value to which to set the dilvery of erroneous SDUs. williamr@2: Indicates whether SUDs detected as erroneous shall be delivered or discarded. */ williamr@2: void CSubConQosR99ParamSet::SetErroneousSDUDelivery(RPacketQoS::TErroneousSDUDelivery aDeliveryOfErroneusSdu) williamr@2: { williamr@2: iDeliveryOfErroneusSdu = aDeliveryOfErroneusSdu; williamr@2: } williamr@2: williamr@2: /** Sets the residual bit error ratio. Indicates the undetected bit error ratio in the delivered SDUs. williamr@2: If no error detection is requested, Residual bit error ratio indicates the bit error ratio in the delivered SDUs. williamr@2: @param aResidualBer Value to which to set the residual bit error ratio. */ williamr@2: void CSubConQosR99ParamSet::SetResidualBitErrorRatio(RPacketQoS::TBitErrorRatio aResidualBer) williamr@2: { williamr@2: iResidualBer = aResidualBer; williamr@2: } williamr@2: williamr@2: /** Sets the error ratio. Indicates the fraction of SDUs lost or detected as erroneous. williamr@2: SDU error ratio is defined only for conforming traffic. williamr@2: @param aErrorRatio Sets the error ratio. Indicates the fraction of SDUs lost or detected as erroneous. williamr@2: SDU error ratio is defined only for conforming traffic. */ williamr@2: void CSubConQosR99ParamSet::SetSDUErrorRatio(RPacketQoS::TSDUErrorRatio aErrorRatio) williamr@2: { williamr@2: iErrorRatio = aErrorRatio; williamr@2: } williamr@2: williamr@2: /** Sets the traffic handling priority. williamr@2: @param aPriority Value to which to set the traffic handling priority. */ williamr@2: void CSubConQosR99ParamSet::SetTrafficHandlingPriority(RPacketQoS::TTrafficHandlingPriority aPriority) williamr@2: { williamr@2: iPriority = aPriority; williamr@2: } williamr@2: williamr@2: /** Sets the transfer delay. Indicates maximum delay for 95th percentile of the distribution of delay for williamr@2: all delivered SDUs during the lifetime of a bearer service, where delay for an SDU is defined as the time williamr@2: from a request to transfer an SDU at one SAP to its delivery at the other SAP. williamr@2: @param aTransferDelay Value to which to set the transfer delay. */ williamr@2: void CSubConQosR99ParamSet::SetTransferDelay(TInt aTransferDelay) williamr@2: { williamr@2: iTransferDelay = aTransferDelay; williamr@2: } williamr@2: williamr@2: /** Sets the maximum SDU size. Defines the maximum allowed SDU size. williamr@2: @param aMaxSduSize Value to which to set the maximum SDU size. */ williamr@2: void CSubConQosR99ParamSet::SetMaxSduSize(TInt aMaxSduSize) williamr@2: { williamr@2: iMaxSduSize = aMaxSduSize; williamr@2: } williamr@2: williamr@2: /** Sets the maximum bitrate for uplink direction. The traffic is conformant with Maximum bitrate as williamr@2: long as it follows a token bucket algorithm where token rate equals Maximum bitrate and bucket size williamr@2: equals Maximum SDU size. williamr@2: @param aMaxBitrate Value to which to set the maximum bitrate for uplink direction. williamr@2: */ williamr@2: void CSubConQosR99ParamSet::SetMaxBitrateUplink(TInt aMaxBitrateUplink) williamr@2: { williamr@2: iMaxBitrateUplink = aMaxBitrateUplink; williamr@2: } williamr@2: williamr@2: /** Sets the maximum bitrate for downlink direction. The traffic is conformant with Maximum bitrate as williamr@2: long as it follows a token bucket algorithm where token rate equals Maximum bitrate and bucket size williamr@2: equals Maximum SDU size. williamr@2: @param aMaxBitrate Value to which to set the maximum bitrate for downlink direction. williamr@2: */ williamr@2: void CSubConQosR99ParamSet::SetMaxBitrateDownlink(TInt aMaxBitrateDownlink) williamr@2: { williamr@2: iMaxBitrateDownlink = aMaxBitrateDownlink; williamr@2: } williamr@2: williamr@2: /** Sets the guaranteed bitrate for uplink direction. williamr@2: @param aGuaBitrateUplink Value to which to set the guaranteed SDU size. williamr@2: */ williamr@2: void CSubConQosR99ParamSet::SetGuaBitrateUplink(TInt aGuaBitrateUplink) williamr@2: { williamr@2: iGuaBitrateUplink = aGuaBitrateUplink; williamr@2: } williamr@2: williamr@2: /** Sets the guaranteed bitrate for downlink direction. williamr@2: @param aGuaBitrateDownlink Value to which to set the guaranteed SDU size. williamr@2: */ williamr@2: void CSubConQosR99ParamSet::SetGuaBitrateDownlink(TInt aGuaBitrateDownlink) williamr@2: { williamr@2: iGuaBitrateDownlink = aGuaBitrateDownlink; williamr@2: } williamr@2: williamr@2: williamr@2: #ifdef SYMBIAN_NETWORKING_UMTSR5 williamr@2: /** williamr@2: @param aFamily the sub-connection parameter set family to which the newly created object it to be added. williamr@2: @param aType The type of the set from TParameterSetType (ERequested, EAcceptable or EGranted) williamr@2: @return pointer to the created object williamr@2: */ williamr@2: CSubConImsExtParamSet* CSubConImsExtParamSet::NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType) williamr@2: { williamr@2: CSubConImsExtParamSet* obj = NewL(); williamr@2: CleanupStack::PushL(obj); williamr@2: aFamily.AddExtensionSetL(*obj, aType); williamr@2: CleanupStack::Pop(obj); williamr@2: return obj; williamr@2: } williamr@2: williamr@2: /** williamr@2: @return pointer to the created object williamr@2: */ williamr@2: CSubConImsExtParamSet* CSubConImsExtParamSet::NewL() williamr@2: { williamr@2: STypeId typeId(KSubCon3GPPExtParamsFactoryUid, KSubConImsExtParamsType); williamr@2: return static_cast(CSubConParameterSet::NewL(typeId)); williamr@2: } williamr@2: williamr@2: CSubConImsExtParamSet::CSubConImsExtParamSet() williamr@2: : iImsSignallingIndicator(EFalse) williamr@2: { williamr@2: } williamr@2: williamr@2: /** @return the IMS Signalling Indicator flag for 3GPP R5 dedicated signalling PDP contexts. williamr@2: */ williamr@2: TBool CSubConImsExtParamSet::GetImsSignallingIndicator() const williamr@2: { williamr@2: return iImsSignallingIndicator; williamr@2: } williamr@2: williamr@2: /** Sets the IMS Signalling Indicator flag for 3GPP R5 dedicated signalling PDP contexts. williamr@2: @param aImsSignallingIndicator Value to which to set the IMS signalling indicator. */ williamr@2: void CSubConImsExtParamSet::SetImsSignallingIndicator(TBool aImsSignallingIndicator) williamr@2: { williamr@2: iImsSignallingIndicator = aImsSignallingIndicator; williamr@2: } williamr@2: williamr@2: /** williamr@2: @param aFamily the sub-connection parameter to which the newly created object is to be added williamr@2: @param aType The type of the set from TParameterSetType (ERequested, EAcceptable or EGranted) williamr@2: @return pointer to the created object williamr@2: */ williamr@2: CSubConQosR5ParamSet* CSubConQosR5ParamSet::NewL(CSubConParameterFamily& aFamily,CSubConParameterFamily::TParameterSetType aType) williamr@2: { williamr@2: CSubConQosR5ParamSet* obj = NewL(); williamr@2: CleanupStack::PushL(obj); williamr@2: aFamily.AddExtensionSetL(*obj, aType); williamr@2: CleanupStack::Pop(obj); williamr@2: return obj; williamr@2: } williamr@2: williamr@2: /** williamr@2: @return pointer to the created object williamr@2: */ williamr@2: CSubConQosR5ParamSet* CSubConQosR5ParamSet::NewL() williamr@2: { williamr@2: STypeId typeId(KSubCon3GPPExtParamsFactoryUid, KSubConQosR5ParamsType); williamr@2: return static_cast(CSubConParameterSet::NewL(typeId)); williamr@2: } williamr@2: williamr@2: /** williamr@2: */ williamr@2: CSubConQosR5ParamSet::CSubConQosR5ParamSet() williamr@2: : iSrcStatsDesc(RPacketQoS::ESourceStatisticsDescriptorUnknown), iSignallingIndicator(EFalse) williamr@2: { williamr@2: } williamr@2: williamr@2: /** Gets the signalling nature of the SDU's. Signalling traffic can have different characteristics williamr@2: to other interactive traffic, eg higher priority, lower delay and increased peakiness. This attribute williamr@2: permits enhancing the Radio Access Network (RAN) operation accordingly. See 3GPP TS 23.107 williamr@2: @return the signalling nature of the SDU's. williamr@2: */ williamr@2: TBool CSubConQosR5ParamSet::GetSignallingIndicator() const williamr@2: { williamr@2: return iSignallingIndicator; williamr@2: } williamr@2: williamr@2: /** Sets signalling nature of the SDU's. This attribute is additional to the other QoS williamr@2: attributes and does not over-ride them. Signalling traffic can have different characteristics williamr@2: to other interactive traffic, eg higher priority, lower delay and increased peakiness. This williamr@2: attribute permits enhancing the Radio Access Network (RAN) operation accordingly. An example use of williamr@2: the Signalling Indication is for IMS signalling traffic. See 3GPP TS 23.107 williamr@2: @param aSignallingIndicator Value to which to set the signalling indicator. */ williamr@2: void CSubConQosR5ParamSet::SetSignallingIndicator(TBool aSignallingIndicator) williamr@2: { williamr@2: iSignallingIndicator = aSignallingIndicator; williamr@2: } williamr@2: williamr@2: /** @return the source of the SDU's. */ williamr@2: RPacketQoS::TSourceStatisticsDescriptor CSubConQosR5ParamSet::GetSourceStatisticsDescriptor() const williamr@2: { williamr@2: return iSrcStatsDesc; williamr@2: } williamr@2: williamr@2: /** Sets the source characteristic of the SDU's. Conversational speech has a well-known statistical williamr@2: behaviour (or the discontinuous transmission (DTX) factor). By being informed that the SDUs for a Radio williamr@2: Access Bearer (RAB) are generated by a speech source, Radio Access Network (RAN) may, based on experience, williamr@2: calculate a statistical multiplex gain for use in admission control on the radio and RAN Access interfaces. williamr@2: @param aSrcStatsDescType Value to which to set the source statistics indicator. */ williamr@2: void CSubConQosR5ParamSet::SetSourceStatisticsDescriptor(RPacketQoS::TSourceStatisticsDescriptor aSrcStatsDescType) williamr@2: { williamr@2: iSrcStatsDesc = aSrcStatsDescType; williamr@2: } williamr@2: williamr@2: #endif williamr@2: // SYMBIAN_NETWORKING_UMTSR5 williamr@2: williamr@2: /** the Media Component number as specified in 3GPP TS 29.207 williamr@2: @return the media component number portion of the flow identifier williamr@2: */ williamr@2: TUint16 TFlowId::GetMediaComponentNumber() const williamr@2: { williamr@2: return iMediaComponentNumber; williamr@2: } williamr@2: williamr@2: /** the IP flow number as specified in 3GPP TS 29.207 williamr@2: @return the IP flow portion of the flow identifier williamr@2: */ williamr@2: TUint16 TFlowId::GetIPFlowNumber() const williamr@2: { williamr@2: return iIPFlowNumber; williamr@2: } williamr@2: williamr@2: /** Sets the media component number portion of the flow identifier. The Media Component number is specified in 3GPP TS 29.207 williamr@2: @param aMediaComponentNumber the media component portion of the flow identifier williamr@2: */ williamr@2: void TFlowId::SetMediaComponentNumber(TUint16 aMediaComponentNumber) williamr@2: { williamr@2: iMediaComponentNumber = aMediaComponentNumber; williamr@2: } williamr@2: williamr@2: /** williamr@2: @param the IP flow portion of the flow identifier. williamr@2: */ williamr@2: void TFlowId::SetIPFlowNumber(TUint16 aIPFlowNumber) williamr@2: { williamr@2: iIPFlowNumber = aIPFlowNumber; williamr@2: } williamr@2: williamr@2: williamr@2: //=========================== williamr@2: // Implementation Extension class williamr@2: CSubConSBLPR5ExtensionParamSet::CSubConSBLPR5ExtensionParamSet() williamr@2: : CSubConExtensionParameterSet() williamr@2: { williamr@2: } williamr@2: williamr@2: CSubConSBLPR5ExtensionParamSet::~CSubConSBLPR5ExtensionParamSet() williamr@2: { williamr@2: iFlowIds.Close(); williamr@2: } williamr@2: williamr@2: /** williamr@2: @param aFamily the sub-connection parameter set family that this extension parameter set will be added to. williamr@2: @param aType The type of the set from TParameterSetType (ERequested, EAcceptable or EGranted) williamr@2: @return pointer to the created object williamr@2: */ williamr@2: CSubConSBLPR5ExtensionParamSet* CSubConSBLPR5ExtensionParamSet::NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType) williamr@2: { williamr@2: CSubConSBLPR5ExtensionParamSet* sblpExtn = NewL(); williamr@2: CleanupStack::PushL(sblpExtn); williamr@2: aFamily.AddExtensionSetL(*sblpExtn, aType); williamr@2: CleanupStack::Pop(sblpExtn); williamr@2: return sblpExtn; williamr@2: } williamr@2: williamr@2: /** williamr@2: @return pointer to the created object williamr@2: */ williamr@2: CSubConSBLPR5ExtensionParamSet* CSubConSBLPR5ExtensionParamSet::NewL() williamr@2: { williamr@2: STypeId typeId (KSubCon3GPPExtParamsFactoryUid, KSubConnSBLPR5ExtensionParamsType); williamr@2: return static_cast(CSubConParameterSet::NewL(typeId)); williamr@2: } williamr@2: williamr@2: /** williamr@2: @return the media authorisation token williamr@2: */ williamr@2: const TAuthToken& CSubConSBLPR5ExtensionParamSet::GetMAT() const williamr@2: { williamr@2: return iAuthToken; williamr@2: } williamr@2: williamr@2: /** williamr@2: @param aAuthToken sets the media authorisation token williamr@2: */ williamr@2: void CSubConSBLPR5ExtensionParamSet::SetMAT(const TAuthToken& aAuthToken) williamr@2: { williamr@2: iAuthToken = aAuthToken; williamr@2: } williamr@2: williamr@2: /** williamr@2: @return the number of flow indexes in this session williamr@2: */ williamr@2: TInt CSubConSBLPR5ExtensionParamSet::GetNumberOfFlowIds() const williamr@2: { williamr@2: return iFlowIds.Count(); williamr@2: } williamr@2: williamr@2: /** williamr@2: @param aIndex the index of the flow identifier that will be returned. williamr@2: @return the flow identifier at the index given by aIndex. williamr@2: */ williamr@2: const TFlowId& CSubConSBLPR5ExtensionParamSet::GetFlowIdAt(TInt aIndex) const williamr@2: { williamr@2: return iFlowIds[aIndex]; williamr@2: } williamr@2: williamr@2: /** adds a flow identifier to this session. williamr@2: @param aFlowId the flow indentifier to be added. williamr@2: */ williamr@2: void CSubConSBLPR5ExtensionParamSet::AddFlowIdL(const TFlowId & aFlowId) williamr@2: { williamr@2: iFlowIds.AppendL(aFlowId); williamr@2: } williamr@2: williamr@2: #endif williamr@2: // QOS3GPP_SUBCONPARAMS_INL