diff -r 8ef833fbf5aa -r d0d9cc530d21 telephonyprotocols/umtsgprsscpr/src/UmtsGprs_defaultSubconnProv.cpp --- a/telephonyprotocols/umtsgprsscpr/src/UmtsGprs_defaultSubconnProv.cpp Wed Aug 18 10:57:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,299 +0,0 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// Implementation file for the Default Umts/Gprs SubConnection Provider -// -// - -/** - @file - @internalComponent -*/ - - -#include "UmtsGprs_defaultSubconnProv.h" -#include "UmtsGprs_subconnProvFactory.h" -#include "PdpFsmRequest.h" - -#include -#include - -#ifdef SYMBIAN_NETWORKING_UMTSR5 -#include -#endif - -CUmtsGprsDefaultSubConnProvd* CUmtsGprsDefaultSubConnProvd::NewL(CSubConnectionProviderFactoryBase& aFactory, - CConnectionProviderBase& aConnProvider) - { - CUmtsGprsDefaultSubConnProvd* provider = new(ELeave)CUmtsGprsDefaultSubConnProvd(aFactory, aConnProvider); - CleanupStack::PushL(provider); - provider->ConstructL(); - CleanupStack::Pop(provider); - return provider; - } - - - -CUmtsGprsDefaultSubConnProvd::CUmtsGprsDefaultSubConnProvd( - CSubConnectionProviderFactoryBase& aFactory, - CConnectionProviderBase& aConnProvider) -:CUmtsGprsSubConnProvd(aFactory, aConnProvider), - iPdpFsm(NULL) -/** -Constructs a default UMTS SubConnection Provider - -@param aFactory CSubConnectionProviderFactoryBase that should own the reference to 'this' -@param aConnProvider a connection that 'this' subconnection belongs to -*/ - { - iContextId = KPrimaryContextId; - } - - -void CUmtsGprsDefaultSubConnProvd::ConstructL() - { - iPdpFsm = new(ELeave) CPdpFsmInterface(*this); - } - - -CUmtsGprsDefaultSubConnProvd::~CUmtsGprsDefaultSubConnProvd() - { - delete iPdpFsm; - } - - -CUmtsGprsSubConnProvd& CUmtsGprsDefaultSubConnProvd::GetDefaultSubConnection() - { - return *this; - } - -TBool CUmtsGprsDefaultSubConnProvd::ShouldIDeleteNow() - { - // Never allow client leaving events to destroy this default scpr - // The CPr will call ConnectionGoingDown when it is deleted - // and then we will delete this. - return EFalse; - } - - -#ifdef SYMBIAN_NETWORKING_UMTSR5 - -TInt CUmtsGprsDefaultSubConnProvd::AddIMCNInformationToParameterBundleL(TBool aImCnInfo) - -/** -Will add the information related to the IMCN Signalling Flag into the SubCon Parameter Bundle -so that it can be accessible by the IPSCPR while restricting the sockets - -@param aImCnInfo Grant status of the IMCN signalling flag -*/ - - { - // Check and create the parameter bundle if NULL - if (iParameterBundle == NULL) - { - iParameterBundle = CSubConParameterBundle::NewL(); - } - - // Add information Regarding the grant status to the parameter bundle with family - CSubConParameterFamily * imcnFamily = CSubConParameterFamily::NewL(*iParameterBundle,KSubConnContextDescrParamsFamily); - CleanupStack::PushL(imcnFamily); - CSubConImsExtParamSet *imcnFlag = CSubConImsExtParamSet::NewL(*imcnFamily,CSubConParameterFamily::EGranted); - CleanupStack::Pop(imcnFamily); - // Set the Signalling Indication - imcnFlag->SetImsSignallingIndicator(aImCnInfo); - - return KErrNone; - } - -#endif //SYMBIAN_NETWORKING_UMTSR5 - - -void CUmtsGprsDefaultSubConnProvd::DoParametersAboutToBeSetL(CSubConParameterBundle& aParameterBundle) -/** Should set parameters on the primary/default PDP context represented by 'this' - -@param -*/ -{ - __FLOG_1(_L("CUmtsGprsDefaultSubConnProvd [this=%08x]:\tDoParametersAboutToBeSetL()"), this); - - if (iCurrentPdpFsmReq) - { - User::Leave(KErrInUse); - } - -#ifdef SYMBIAN_NETWORKING_UMTSR5 - // For PREQ 635, The information regarding the dedicated signalling indication is used to be stored in the - // iParameterBundle of the Base class. Since after this call and lower layer calls (if any) is completed then - // iParameterBundle will be replaced by aParameterBundle coming as formal function parameters. - - // To be able to save the information if somebody calls RSubConnection::SetParameters(...), which is there in - // existing Parameter Bundle we need to copy the information about IMCN Signalling flag which is already there - // iParameterBundle into aParameterBundle. - - // The catch here is that The layer above this must call the SetParameters() to get the parameter values, because - // This particular call adds the granted status - - // Check for the existance of the appropriate family - CSubConParameterFamily * imCnFamily = iParameterBundle != NULL ? iParameterBundle->FindFamily(KSubConnContextDescrParamsFamily): NULL; - if (imCnFamily) - { - // we have the Family, get the status of IMCN signalling Flag - CSubConImsExtParamSet *imCnSig = static_cast - (imCnFamily->FindExtensionSet(STypeId::CreateSTypeId(KSubConIPParamsUid,KSubConImsExtParamsType), - CSubConParameterFamily::EGranted)); - - // We have the variable, copy the contents - if(imCnSig) - { - CSubConParameterFamily * contextFamily = CSubConParameterFamily::NewL(aParameterBundle,KSubConnContextDescrParamsFamily); - CleanupStack::PushL(contextFamily); - CSubConImsExtParamSet *imCnFlag = CSubConImsExtParamSet::NewL(*contextFamily,CSubConParameterFamily::EGranted); - CleanupStack::Pop(contextFamily); - imCnFlag->SetImsSignallingIndicator(imCnSig->GetImsSignallingIndicator()); - } - } - -#endif // SYMBIAN_NETWORKING_UMTSR5 - - ResetQosRelease(); - -#ifdef SYMBIAN_NETWORKING_UMTSR5 - - RPacketQoS::TQoSR5Requested requestedParams; - MapQosParamBundleToEtelL(aParameterBundle, &requestedParams); - CModifyR5QoS* modifyR5QoS = CModifyR5QoS::NewL(*this, *this, requestedParams); - iCurrentPdpFsmReq = modifyR5QoS; - modifyR5QoS->Start(); - -#else - RPacketQoS::TQoSR99_R4Requested requestedParams; - MapQosParamBundleToEtelL(aParameterBundle, &requestedParams); - CModifyR4QoS* modifyR4QoS = CModifyR4QoS::NewL(*this, *this, requestedParams); - iCurrentPdpFsmReq = modifyR4QoS; - modifyR4QoS->Start(); - -#endif // SYMBIAN_NETWORKING_UMTSR5 - -} - - -void CUmtsGprsDefaultSubConnProvd::GetQoSDefaultsL(RPacketQoS::TQoSR99_R4Requested* aParams) -{ - CConnectionSettings& settingAccess = iConnectionProvider->SettingsAccessL(); - TUint32 data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSReqTrafficClass),data, NULL); - aParams->iReqTrafficClass = (RPacketQoS::TTrafficClass)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSMinTrafficClass),data, NULL); - aParams->iMinTrafficClass = (RPacketQoS::TTrafficClass)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSReqDeliveryOrder),data, NULL); - aParams->iReqDeliveryOrderReqd = (RPacketQoS::TDeliveryOrder)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSMinDeliveryOrder),data, NULL); - aParams->iMinDeliveryOrderReqd = (RPacketQoS::TDeliveryOrder)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSReqDeliverErroneousSDU),data, NULL); - aParams->iReqDeliverErroneousSDU = (RPacketQoS::TErroneousSDUDelivery)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSMinDeliverErroneousSDU),data, NULL); - aParams->iMinDeliverErroneousSDU = (RPacketQoS::TErroneousSDUDelivery)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSReqMaxSDUSize),data, NULL); - aParams->iReqMaxSDUSize = (TInt)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSMinAcceptableMaxSDUSize),data, NULL); - aParams->iMinAcceptableMaxSDUSize = (TInt)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSReqMaxUplinkRate),data, NULL); - aParams->iReqMaxRate.iUplinkRate = (TInt)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSReqMinUplinkRate),data, NULL); - aParams->iMinAcceptableMaxRate.iUplinkRate = (TInt)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSReqMaxDownlinkRate),data, NULL); - aParams->iReqMaxRate.iDownlinkRate = (TInt)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSReqMinDownlinkRate),data, NULL); - aParams->iMinAcceptableMaxRate.iDownlinkRate = (TInt)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSReqBER),data, NULL); - aParams->iReqBER = (RPacketQoS::TBitErrorRatio)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSMaxBER),data, NULL); - aParams->iMaxBER = (RPacketQoS::TBitErrorRatio)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSReqSDUErrorRatio),data, NULL); - aParams->iReqSDUErrorRatio = (RPacketQoS::TSDUErrorRatio)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSMaxSDUErrorRatio),data, NULL); - aParams->iMaxSDUErrorRatio = (RPacketQoS::TSDUErrorRatio)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSReqTrafficHandlingPriority),data, NULL); - aParams->iReqTrafficHandlingPriority = (RPacketQoS::TTrafficHandlingPriority)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSMinTrafficHandlingPriority),data, NULL); - aParams->iMinTrafficHandlingPriority = (RPacketQoS::TTrafficHandlingPriority)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSReqTransferDelay),data, NULL); - aParams->iReqTransferDelay = (TInt)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSMaxTransferDelay),data, NULL); - aParams->iMaxTransferDelay = (TInt)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSReqGuaranteedUplinkRate),data, NULL); - aParams->iReqGuaranteedRate.iUplinkRate = (TInt)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSMinGuaranteedUplinkRate),data, NULL); - aParams->iMinGuaranteedRate.iUplinkRate = (TInt)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSReqGuaranteedDownlinkRate),data, NULL); - aParams->iMinGuaranteedRate.iDownlinkRate = (TInt)data; - - settingAccess.GetIntSettingL(TPtrC(KCDTypeNameGPRSMinGuaranteedDownlinkRate),data, NULL); - aParams->iMinGuaranteedRate.iDownlinkRate = (TInt)data; -} - - - - -/** -This override of the DoControl() method is used to initialise the RPdpFsmInterface object -in the SpudMan with a pointer to the real CPdpFsmInterface object owned by the -subconnection provider. - -@param aOptionLevel -@param aOptionName -@param aOption -*/ -TInt CUmtsGprsDefaultSubConnProvd::DoControl(TUint aOptionLevel, TUint aOptionName, TDes8& aOption) - { - __FLOG_1(_L("CUmtsGprsDefaultSubConnProvd::DoControl [%08x]"), this); - if (aOptionLevel == KSOLInterface && aOptionName == KInitialisePdpFsm) - { - CNifIfBase* nif = *reinterpret_cast(const_cast(aOption.Ptr())); - ASSERT(nif != NULL); - TPckg pdpfsm(iPdpFsm); - return nif->Control(KSOLInterface, KInitialisePdpFsm, pdpfsm); - } - - return CUmtsGprsSubConnProvd::Control(aOptionLevel, aOptionName, aOption); - } - - -CPdpFsmInterface& CUmtsGprsDefaultSubConnProvd::GetPdpFsmInterface() - { - return *iPdpFsm; - } -