diff -r fc7b30ed2058 -r 05bc53fe583b cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/src/cmpluginpacketdata.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/src/cmpluginpacketdata.cpp Tue Aug 31 15:35:44 2010 +0300 @@ -0,0 +1,2894 @@ +/* +* Copyright (c) 2009-2010 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 of packetdata Plugin interface. +* +*/ + + +#include +#include +#include +#include + +#include "datamobilitycommsdattypes.h" +#include "cmpluginpacketdata.h" + +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "cmpluginpacketdataTraces.h" +#endif + +using namespace CMManager; +using namespace CommsDat; + +// ================= CONSTANTS ======================= + +/// Modem bearer names for GPRS/WCDMA access points. +_LIT( KModemBearerPacketData, "GPRS Modem" ); +_LIT( KDefaultQosDataRecordName, "PRIMARY1" ); +_LIT( KDefaultQosDataRecordNamewithSpace, "PRIMARY1 " ); + +const TInt KQosRecordIndex = 0; + +// ======== MEMBER FUNCTIONS ======== +/** +* CCmPDCoverageCheck defines the functionality for packetdata service +* coverage checking. +*/ +class CCmPDCoverageCheck : public CActive + { + public: + /** + * Constructor. + */ + CCmPDCoverageCheck(); + + /** + * Destructor. + */ + ~CCmPDCoverageCheck(); + + /** + * Checks if the packet service is available(status is + * ERegisteredOnHomeNetwork or ERegisteredRoaming or + * ENotRegisteredButAvailable) + * @return Return ETrue if the status is one mentioned above. + * Otherwise returns EFalse. + */ + TBool IsThereCoverageL(); + + protected: // from CActive + virtual void DoCancel(); + virtual void RunL(); + + private: + /** + * Ckecks if the phode mode is offline. + * @return Returns ETrue if the phone is in offline mode. + * Otherwise returns EFalse. + */ + TBool IsPhoneOfflineL() const; + + private: + /** Boolean which has the latest coverage information */ + TBool iCoverage; + + /** Controller for single scheduling loop */ + CActiveSchedulerWait iWait; + + /** Handle to telephony server */ + RTelServer iServer; + + /** Handle to phone(needed for packet service) */ + RPhone iPhone; + + /** Handle to packet service */ + RPacketService iService; + + /** Network registration status information */ + RPacketService::TRegistrationStatus iNwRegStatus; + }; + +// ---------------------------------------------------------------------------- +// CCmPDCoverageCheck::CCmPDCoverageCheck() +// ---------------------------------------------------------------------------- +// +CCmPDCoverageCheck::CCmPDCoverageCheck() : CActive( EPriorityStandard ) + { + OstTraceFunctionEntry0( CCMPDCOVERAGECHECK_CCMPDCOVERAGECHECK_ENTRY ); + + CActiveScheduler::Add( this ); + + OstTraceFunctionExit0( CCMPDCOVERAGECHECK_CCMPDCOVERAGECHECK_EXIT ); + } + +// ---------------------------------------------------------------------------- +// CCmPDCoverageCheck::~CCmPDCoverageCheck() +// ---------------------------------------------------------------------------- +// +CCmPDCoverageCheck::~CCmPDCoverageCheck() + { + OstTraceFunctionEntry0( DUP1_CCMPDCOVERAGECHECK_CCMPDCOVERAGECHECK_ENTRY ); + + Cancel(); + + iService.Close(); + iPhone.Close(); + iServer.Close(); + + OstTraceFunctionExit0( DUP1_CCMPDCOVERAGECHECK_CCMPDCOVERAGECHECK_EXIT ); + } + +// ---------------------------------------------------------------------------- +// CCmPDCoverageCheck::DoCancel +// ---------------------------------------------------------------------------- +// +void CCmPDCoverageCheck::DoCancel() + { + OstTraceFunctionEntry0( CCMPDCOVERAGECHECK_DOCANCEL_ENTRY ); + + iWait.AsyncStop(); + + OstTraceFunctionExit0( CCMPDCOVERAGECHECK_DOCANCEL_EXIT ); + } + +// ---------------------------------------------------------------------------- +// CCmPDCoverageCheck::RunL +// ---------------------------------------------------------------------------- +// +void CCmPDCoverageCheck::RunL() + { + OstTraceFunctionEntry0( CCMPDCOVERAGECHECK_RUNL_ENTRY ); + + if ( iStatus.Int() == KErrNone ) + { + if ( iNwRegStatus == RPacketService::ERegisteredOnHomeNetwork || + iNwRegStatus == RPacketService::ERegisteredRoaming || + iNwRegStatus == RPacketService::ENotRegisteredButAvailable ) + { + iCoverage = ETrue; + } + iWait.AsyncStop(); + } + else + // something went wrong -> no coverage. + { + iWait.AsyncStop(); + } + + OstTraceFunctionExit0( CCMPDCOVERAGECHECK_RUNL_EXIT ); + } + +// ---------------------------------------------------------------------------- +// CCmPDCoverageCheck::IsThereCoverageL +// ---------------------------------------------------------------------------- +// +TBool CCmPDCoverageCheck::IsThereCoverageL() + { + OstTraceFunctionEntry0( CCMPDCOVERAGECHECK_ISTHERECOVERAGEL_ENTRY ); + + iCoverage = EFalse; + + if ( !IsPhoneOfflineL() ) + { + User::LeaveIfError( iServer.Connect() ); + + RTelServer::TPhoneInfo info; + User::LeaveIfError( iServer.GetPhoneInfo( 0, info ) ); + + User::LeaveIfError( iPhone.Open(iServer, info.iName ) ); + + User::LeaveIfError( iService.Open( iPhone ) ); + + iService.GetNtwkRegStatus( iStatus, iNwRegStatus ); + SetActive(); + iWait.Start(); + + User::LeaveIfError( iStatus.Int() ); + } + + OstTraceFunctionExit0( CCMPDCOVERAGECHECK_ISTHERECOVERAGEL_EXIT ); + return iCoverage; + } + +// ---------------------------------------------------------------------------- +// CCmPDCoverageCheck::IsPhoneOfflineL +// ---------------------------------------------------------------------------- +// +TBool CCmPDCoverageCheck::IsPhoneOfflineL() const + { + OstTraceFunctionEntry0( CCMPDCOVERAGECHECK_ISPHONEOFFLINEL_ENTRY ); + + if ( FeatureManager::FeatureSupported( KFeatureIdOfflineMode ) ) + { + CRepository* repository = CRepository::NewLC( KCRUidCoreApplicationUIs ); + TInt connAllowed( ECoreAppUIsNetworkConnectionAllowed ); + + repository->Get( KCoreAppUIsNetworkConnectionAllowed, connAllowed ); + CleanupStack::PopAndDestroy( repository ); + + if ( !connAllowed ) + { + OstTraceFunctionExit0( CCMPDCOVERAGECHECK_ISPHONEOFFLINEL_EXIT ); + return ETrue; + } + } + + OstTraceFunctionExit0( DUP1_CCMPDCOVERAGECHECK_ISPHONEOFFLINEL_EXIT ); + return EFalse; + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::NewL +// ---------------------------------------------------------------------------- +// +CCmPluginPacketData* CCmPluginPacketData::NewL( + TCmPluginInitParam* aInitParam ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_NEWL_ENTRY ); + + CCmPluginPacketData* self = new( ELeave ) CCmPluginPacketData( aInitParam, ETrue ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_NEWL_EXIT ); + return self; + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::~CCmPluginPacketData +// ---------------------------------------------------------------------------- +// +CCmPluginPacketData::~CCmPluginPacketData() + { + OstTraceFunctionEntry1( CCMPLUGINPACKETDATA_CCMPLUGINPACKETDATA_ENTRY, this ); + + ResetBearerRecords(); + + OstTraceFunctionExit1( CCMPLUGINPACKETDATA_CCMPLUGINPACKETDATA_EXIT, this ); + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::CreateInstanceL +// ---------------------------------------------------------------------------- +// +CCmPluginBaseEng* CCmPluginPacketData::CreateInstanceL( TCmPluginInitParam& aInitParam ) const + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_CREATEINSTANCEL_ENTRY ); + + CCmPluginPacketData* self = new( ELeave ) CCmPluginPacketData( &aInitParam, ETrue ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_CREATEINSTANCEL_EXIT ); + return self; + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::CCmPluginPacketData +// ---------------------------------------------------------------------------- +// +CCmPluginPacketData::CCmPluginPacketData( + TCmPluginInitParam* aInitParam, + TBool aOutgoing ) + : + CCmPluginBaseEng( aInitParam ), + iOutgoing( aOutgoing ) + { + OstTraceFunctionEntry0( DUP1_CCMPLUGINPACKETDATA_CCMPLUGINPACKETDATA_ENTRY ); + + iBearerType = KUidPacketDataBearerType; + iBearerRecordId = 0; + iBearerRecordName = NULL; + iPacketDataQoSRecord = NULL; + iBearerPriorityTableId = 0; + + OstTraceFunctionExit0( DUP1_CCMPLUGINPACKETDATA_CCMPLUGINPACKETDATA_EXIT ); + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::ConstructL +// ---------------------------------------------------------------------------- +// +void CCmPluginPacketData::ConstructL() + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_CONSTRUCTL_ENTRY ); + + // Feature Manager is initialized by the CmmServer, so no need to do it here. + + CCmPluginBaseEng::ConstructL(); + + // Get bearer priority table ID. + TRAP_IGNORE( iBearerPriorityTableId = + CCDGlobalBearerTypePriorizationRecord::TableIdL( iSession ) ); + + if ( !iBearerPriorityTableId ) + { + iBearerPriorityTableId = + CCDGlobalBearerTypePriorizationRecord::CreateTableL( iSession ); + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_CONSTRUCTL_EXIT ); + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::CanHandleIapIdL() +// ---------------------------------------------------------------------------- +// +TBool CCmPluginPacketData::CanHandleIapIdL( TUint32 aIapId ) const + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_CANHANDLEIAPIDL_ENTRY ); + + TBool retVal( EFalse ); + + CCDIAPRecord *iapRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) ); + + CleanupStack::PushL( iapRecord ); + iapRecord->SetRecordId( aIapId ); + + TRAPD( err, iapRecord->LoadL( iSession )); + + if ( !err ) + { + retVal = CanHandleIapIdL( iapRecord ); + } + + CleanupStack::PopAndDestroy( iapRecord ); + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_CANHANDLEIAPIDL_EXIT ); + return retVal; + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::CanHandleIapIdL() +// ---------------------------------------------------------------------------- +// +TBool CCmPluginPacketData::CanHandleIapIdL( CCDIAPRecord *aIapRecord ) const + { + OstTraceFunctionEntry0( DUP1_CCMPLUGINPACKETDATA_CANHANDLEIAPIDL_ENTRY ); + + TBool retVal( EFalse ); + + if ( ( TPtrC( aIapRecord->iServiceType ) == TPtrC( KCDTypeNameOutgoingWCDMA ) || + TPtrC( aIapRecord->iServiceType ) == TPtrC( KCDTypeNameIncomingWCDMA )) && + TPtrC( aIapRecord->iBearerType ) == TPtrC( KCDTypeNameModemBearer ) ) + { + retVal = ETrue; + } + + + OstTraceFunctionExit0( DUP1_CCMPLUGINPACKETDATA_CANHANDLEIAPIDL_EXIT ); + return retVal; + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::PreparePluginToLoadRecordsL() +// ---------------------------------------------------------------------------- +// +void CCmPluginPacketData::PreparePluginToLoadRecordsL() + { + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::PreparePluginToUpdateRecordsL +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::PreparePluginToUpdateRecordsL( + RPointerArray& aGenRecordArray, + RPointerArray& aBearerSpecRecordArray ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_PREPAREPLUGINTOUPDATERECORDSL_ENTRY ); + + //TODO, Add null checks for mandatory specific record pointers. + + CCDIAPRecord* iapRecord = static_cast( + aGenRecordArray[KIapRecordIndex] ); + + CCDWCDMAPacketServiceRecord* serviceRecord = static_cast( + aGenRecordArray[KServiceRecordIndex] ); + + CheckIfNameModifiedL( iapRecord, serviceRecord ); + + CheckDNSServerAddressL( ETrue, + serviceRecord->iGPRSIP6NameServer1, + serviceRecord->iGPRSIP6NameServer2, + serviceRecord->iGPRSIP6DNSAddrFromServer ); + + CheckDNSServerAddressL( EFalse, + serviceRecord->iGPRSIPNameServer1, + serviceRecord->iGPRSIPNameServer2, + serviceRecord->iGPRSIPDNSAddrFromServer ); + + SetDaemonNameL( aGenRecordArray, aBearerSpecRecordArray ); + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_PREPAREPLUGINTOUPDATERECORDSL_EXIT ); + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::SetDaemonNameL +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::SetDaemonNameL( + RPointerArray& aGenRecordArray, + RPointerArray& aBearerSpecRecordArray ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETDAEMONNAMEL_ENTRY ); + + // Use DHCP if we can. + TBool ipfromSrv = GetBearerBoolAttributeL( EPacketDataIPAddrFromServer, + aGenRecordArray, + aBearerSpecRecordArray ); + if ( ipfromSrv ) + { + SetBearerStringAttributeL( ECmConfigDaemonManagerName, + KDaemonManagerName, + aGenRecordArray, + aBearerSpecRecordArray ); + SetBearerStringAttributeL( ECmConfigDaemonName, + KConfigDaemonName, + aGenRecordArray, + aBearerSpecRecordArray ); + } + else + { + if ( FeatureManager::FeatureSupported( KFeatureIdIPv6 ) ) + { + SetBearerStringAttributeL( ECmConfigDaemonManagerName, + KDaemonManagerName, + aGenRecordArray, + aBearerSpecRecordArray ); + SetBearerStringAttributeL( ECmConfigDaemonName, + KConfigDaemonName, + aGenRecordArray, + aBearerSpecRecordArray ); + } + else + { + SetBearerStringAttributeL( ECmConfigDaemonManagerName, + KNullDesC(), + aGenRecordArray, + aBearerSpecRecordArray ); + SetBearerStringAttributeL( ECmConfigDaemonName, + KNullDesC(), + aGenRecordArray, + aBearerSpecRecordArray ); + } + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SETDAEMONNAMEL_EXIT ); + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::LoadBearerRecordsL() +// ---------------------------------------------------------------------------- +// +void CCmPluginPacketData::LoadBearerRecordsL() + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_LOADBEARERRECORDSL_ENTRY ); + + if ( ServiceRecord().iUmtsR99QoSAndOnTable ) + { + iPacketDataQoSRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdUmtsR99QoSAndOnTableRecord ) ); + + iPacketDataQoSRecord->SetRecordId( ServiceRecord().iUmtsR99QoSAndOnTable ); + iPacketDataQoSRecord->LoadL( iSession ); + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_LOADBEARERRECORDSL_EXIT ); + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::LoadServiceRecordL() +// ---------------------------------------------------------------------------- +// +void CCmPluginPacketData::LoadServiceRecordL() + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_LOADSERVICERECORDL_ENTRY ); + + if ( TPtrC( KCDTypeNameOutgoingWCDMA ) == iIapRecord->iServiceType ) + { + iServiceRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdOutgoingGprsRecord ) ); + iOutgoing = ETrue; + } + else if ( TPtrC( KCDTypeNameIncomingWCDMA ) == iIapRecord->iServiceType ) + { + iServiceRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdIncomingGprsRecord ) ); + iOutgoing = EFalse; + } + else + // this IAP service is not supported by this plugin. + { + User::Leave( KErrNotSupported ); + } + + iServiceRecord->SetRecordId( iIapRecord->iService ); + TRAPD( err, iServiceRecord->LoadL( iSession ) ); + if ( err == KErrNotFound ) + // record not found -> create a default one + { + CreateServiceRecordL(); + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_LOADSERVICERECORDL_EXIT ); + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::ServiceRecord() +// ---------------------------------------------------------------------------- +// +CCDWCDMAPacketServiceRecord& CCmPluginPacketData::ServiceRecord() const + { + return *static_cast( iServiceRecord ); + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::CreateServiceRecordL() +// ---------------------------------------------------------------------------- +// +void CCmPluginPacketData::CreateServiceRecordL() + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_CREATESERVICERECORDL_ENTRY ); + + delete iServiceRecord; + iServiceRecord = NULL; + + if ( iOutgoing ) + { + iServiceRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdOutgoingGprsRecord ) ); + } + else + { + iServiceRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdIncomingGprsRecord ) ); + } + + ServiceRecord().iGPRSAPN.SetL( KNullDesC ); + ServiceRecord().iGPRSPDPType.SetL( RPacketContext::EPdpTypeIPv4 ); + ServiceRecord().iGPRSReqPrecedence = 0; + ServiceRecord().iGPRSReqDelay = 0; + ServiceRecord().iGPRSReqReliability = 0; + ServiceRecord().iGPRSReqPeakThroughput = 0; + ServiceRecord().iGPRSReqMeanThroughput = 0; + ServiceRecord().iGPRSMinPrecedence = 0; + ServiceRecord().iGPRSMinDelay = 0; + ServiceRecord().iGPRSMinReliability = 0; + ServiceRecord().iGPRSMinPeakThroughput = 0; + ServiceRecord().iGPRSMinMeanThroughput = 0; + ServiceRecord().iGPRSDataCompression = 0; + ServiceRecord().iGPRSHeaderCompression = 0; + ServiceRecord().iGPRSAnonymousAccess = 0; + ServiceRecord().iGPRSIfNetworks.SetL( KDefIspIfNetworksIPv4 ); + ServiceRecord().iGPRSIfPromptForAuth = EFalse; + ServiceRecord().iGPRSIfAuthRetries = 0; + ServiceRecord().iGPRSIPGateway.SetL( KUnspecifiedIPv4 ); + ServiceRecord().iGPRSIPAddrFromServer = ETrue; + ServiceRecord().iGPRSIPAddr.SetL( KUnspecifiedIPv4 ); + ServiceRecord().iGPRSIPDNSAddrFromServer = ETrue; + ServiceRecord().iGPRSIPNameServer1.SetL( KUnspecifiedIPv4 ); + ServiceRecord().iGPRSIPNameServer2.SetL( KUnspecifiedIPv4 ); + ServiceRecord().iGPRSIP6DNSAddrFromServer = ETrue; + ServiceRecord().iGPRSIP6NameServer1.SetL( KDynamicIpv6Address ); + ServiceRecord().iGPRSIP6NameServer2.SetL( KDynamicIpv6Address ); + ServiceRecord().iGPRSEnableLCPExtension = EFalse; + ServiceRecord().iGPRSDisablePlainTextAuth = ETrue; + ServiceRecord().iGPRSAPType = EPacketDataBoth; + ServiceRecord().iGPRSQOSWarningTimeOut = TUint32(-1); + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_CREATESERVICERECORDL_EXIT ); + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::ServiceRecordId +// ---------------------------------------------------------------------------- +// +TUint32 CCmPluginPacketData::ServiceRecordId() const + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SERVICERECORDID_ENTRY ); + + return ServiceRecord().RecordId(); + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::ServiceRecordIdLC +// ---------------------------------------------------------------------------- +// +void CCmPluginPacketData::ServiceRecordNameLC( HBufC* &aName ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SERVICERECORDNAMELC_ENTRY ); + + if ( iOutgoing ) + { + aName = TPtrC( KCDTypeNameOutgoingWCDMA ).AllocLC(); + } + else + { + aName = TPtrC( KCDTypeNameIncomingWCDMA ).AllocLC(); + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SERVICERECORDNAMELC_EXIT ); + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::BearerRecordIdL() +// ---------------------------------------------------------------------------- +// +void CCmPluginPacketData::BearerRecordIdL( TUint32& aRecordId ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_BEARERRECORDIDL_ENTRY ); + + CMDBRecordSet* bearerRS = + new( ELeave ) CMDBRecordSet( KCDTIdModemBearerRecord ); + CleanupStack::PushL( bearerRS ); + + CCDModemBearerRecord* bearerRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdModemBearerRecord ) ); + + CleanupStack::PushL( bearerRecord ); + + bearerRecord->iRecordName.SetL( KModemBearerPacketData ); + bearerRS->iRecords.AppendL( bearerRecord ); + CleanupStack::Pop( bearerRecord ); + + if ( bearerRS->FindL( iSession ) ) + { + bearerRecord = static_cast( bearerRS->iRecords[0] ); + aRecordId = bearerRecord->RecordId(); + } + else + // bearer not found -> create dummy values + { + bearerRecord->SetRecordId( KCDNewRecordRequest ); + bearerRecord->StoreL( iSession ); + + aRecordId = bearerRecord->RecordId(); + } + + CleanupStack::PopAndDestroy( bearerRS ); + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_BEARERRECORDIDL_EXIT ); + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::BearerRecordNameLC() +// ---------------------------------------------------------------------------- +// +void CCmPluginPacketData::BearerRecordNameLC( HBufC*& aBearerName ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_BEARERRECORDNAMELC_ENTRY ); + + aBearerName = TPtrC( KCDTypeNameModemBearer ).AllocLC(); + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_BEARERRECORDNAMELC_EXIT ); + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::CheckNetworkCoverageL() +// ---------------------------------------------------------------------------- +// +TBool CCmPluginPacketData::CheckNetworkCoverageL() const + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_CHECKNETWORKCOVERAGEL_ENTRY ); + + TBool retVal( EFalse ); + +#ifdef __WINS__ + retVal = ETrue; +#else + CCmPDCoverageCheck* coverage = new( ELeave ) CCmPDCoverageCheck; + CleanupStack::PushL( coverage ); + + retVal = coverage->IsThereCoverageL(); + + CleanupStack::PopAndDestroy( coverage ); + +#endif // __WINS + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_CHECKNETWORKCOVERAGEL_EXIT ); + return retVal; + } + +// ---------------------------------------------------------------------------- +// CCmPluginPacketData::SetPDPTypeL() +// ---------------------------------------------------------------------------- +// +void CCmPluginPacketData::SetPDPTypeL( + RPacketContext::TProtocolType aPdpType, + CCDWCDMAPacketServiceRecord* aServiceRecord ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETPDPTYPEL_ENTRY ); + + if ( aPdpType == RPacketContext::EPdpTypeIPv6 ) + { + aServiceRecord->iGPRSPDPType = RPacketContext::EPdpTypeIPv6; + aServiceRecord->iGPRSIfNetworks.SetL( KDefIspIfNetworksIPv6 ); + } + else if ( aPdpType == RPacketContext::EPdpTypeIPv4 ) + { + aServiceRecord->iGPRSIfNetworks.SetL( KDefIspIfNetworksIPv4 ); + aServiceRecord->iGPRSPDPType = RPacketContext::EPdpTypeIPv4; + } + else + { + User::Leave( KErrArgument ); + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SETPDPTYPEL_EXIT ); + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::CreateBearerRecordsL +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::CreateBearerRecordsL() + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_CREATEBEARERRECORDSL_ENTRY ); + + delete iPacketDataQoSRecord; + iPacketDataQoSRecord = NULL; + + iPacketDataQoSRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdUmtsR99QoSAndOnTableRecord ) ); + + iPacketDataQoSRecord->iGPRSReqTrafficClass = RPacketQoS::ETrafficClassUnspecified; + iPacketDataQoSRecord->iGPRSMinTrafficClass = RPacketQoS::ETrafficClassUnspecified; + iPacketDataQoSRecord->iGPRSReqDeliveryOrder = RPacketQoS::EDeliveryOrderUnspecified; + iPacketDataQoSRecord->iGPRSMinDeliveryOrder = RPacketQoS::EDeliveryOrderUnspecified; + iPacketDataQoSRecord->iGPRSReqDeliverErroneousSDU = + RPacketQoS::EErroneousSDUDeliveryUnspecified; + iPacketDataQoSRecord->iGPRSMinDeliverErroneousSDU = + RPacketQoS::EErroneousSDUDeliveryUnspecified; + iPacketDataQoSRecord->iGPRSReqMaxSDUSize = 0; + iPacketDataQoSRecord->iGPRSMinAcceptableMaxSDUSize = 0; + iPacketDataQoSRecord->iGPRSReqMaxUplinkRate = 0; + iPacketDataQoSRecord->iGPRSReqMinUplinkRate = 0; + iPacketDataQoSRecord->iGPRSReqMaxDownlinkRate = 0; + iPacketDataQoSRecord->iGPRSReqMinDownlinkRate = 0; + iPacketDataQoSRecord->iGPRSReqBER = RPacketQoS::EBERUnspecified; + iPacketDataQoSRecord->iGPRSMaxBER = RPacketQoS::EBERUnspecified; + iPacketDataQoSRecord->iGPRSReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified; + iPacketDataQoSRecord->iGPRSMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified; + iPacketDataQoSRecord->iGPRSReqTrafficHandlingPriority = + RPacketQoS::ETrafficPriorityUnspecified; + iPacketDataQoSRecord->iGPRSMinTrafficHandlingPriority = + RPacketQoS::ETrafficPriorityUnspecified; + iPacketDataQoSRecord->iGPRSReqTransferDelay = 0; + iPacketDataQoSRecord->iGPRSMaxTransferDelay = 0; + iPacketDataQoSRecord->iGPRSReqGuaranteedUplinkRate = 0; + iPacketDataQoSRecord->iGPRSMinGuaranteedUplinkRate = 0; + iPacketDataQoSRecord->iGPRSReqGuaranteedDownlinkRate = 0; + iPacketDataQoSRecord->iGPRSMinGuaranteedDownlinkRate = 0; + iPacketDataQoSRecord->iGPRSSignallingIndication = EFalse; + iPacketDataQoSRecord->iGPRS_ImCnSignallingIndication = EFalse; + iPacketDataQoSRecord->iGPRSSourceStatisticsDescriptor = + RPacketQoS::ESourceStatisticsDescriptorUnknown; + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_CREATEBEARERRECORDSL_EXIT ); + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::UpdateServiceRecordL +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::UpdateServiceRecordL( + RPointerArray& aGenRecordArray, + RPointerArray& /*aBearerSpecRecordArray*/ ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_UPDATESERVICERECORDL_ENTRY ); + + // Delete the original record and create a copy from the parameter. + delete iServiceRecord; + iServiceRecord = NULL; + + if ( iOutgoing ) + { + iServiceRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdOutgoingGprsRecord ) ); + } + else + { + iServiceRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdIncomingGprsRecord ) ); + } + + CCDWCDMAPacketServiceRecord* origServiceRecord = + static_cast( iServiceRecord ); + + // Client's copy of packet service record. + CCDWCDMAPacketServiceRecord* clientServiceRecordCopy = + static_cast( + aGenRecordArray[KServiceRecordIndex] ); + + CopyRecordFieldsL( *clientServiceRecordCopy, *origServiceRecord ); + + if ( iPacketDataQoSRecord ) + { + origServiceRecord->iUmtsR99QoSAndOnTable = iPacketDataQoSRecord->RecordId(); + } + + origServiceRecord->SetElementId( clientServiceRecordCopy->ElementId() ); + + if ( !origServiceRecord->RecordId() ) + { + origServiceRecord->SetRecordId( KCDNewRecordRequest ); + origServiceRecord->StoreL( iSession ); + // Have to be "reloaded" to get possible default values from template records. + origServiceRecord->LoadL( iSession ); + + // Update received element ID to client's copy too. + clientServiceRecordCopy->SetElementId( origServiceRecord->ElementId() ); + } + else + { + origServiceRecord->ModifyL( iSession ); + } + + CopyRecordFieldsL( *origServiceRecord, *clientServiceRecordCopy ); + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_UPDATESERVICERECORDL_EXIT ); + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::UpdateBearerRecordsL +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::UpdateBearerRecordsL( + RPointerArray& aGenRecordArray, + RPointerArray& aBearerSpecRecordArray ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_UPDATEBEARERRECORDSL_ENTRY ); + + CCDUmtsR99QoSAndOnTableRecord* packetDataQoSRecord = + static_cast( aBearerSpecRecordArray[KQosRecordIndex] ); + + delete iPacketDataQoSRecord; + iPacketDataQoSRecord = NULL; + iPacketDataQoSRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdUmtsR99QoSAndOnTableRecord ) ); + CopyRecordFieldsL( *packetDataQoSRecord, *iPacketDataQoSRecord ); + iPacketDataQoSRecord->SetElementId( aBearerSpecRecordArray[KQosRecordIndex]->ElementId() ); + + if ( !iPacketDataQoSRecord->RecordId() ) + { + iPacketDataQoSRecord->SetRecordId( KCDNewRecordRequest ); + iPacketDataQoSRecord->StoreL( iSession ); + iPacketDataQoSRecord->LoadL( iSession ); + packetDataQoSRecord->SetElementId( iPacketDataQoSRecord->ElementId() ); + + // Set service record to point to QoS record. + ServiceRecord().iUmtsR99QoSAndOnTable = iPacketDataQoSRecord->RecordId(); + ServiceRecord().ModifyL( iSession ); + + CCDWCDMAPacketServiceRecord* serviceRecord = + static_cast( aGenRecordArray[KServiceRecordIndex] ); + serviceRecord->iUmtsR99QoSAndOnTable = iPacketDataQoSRecord->RecordId(); + } + else + { + iPacketDataQoSRecord->ModifyL( iSession ); + } + + CopyRecordFieldsL( *iPacketDataQoSRecord, *packetDataQoSRecord ); + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_UPDATEBEARERRECORDSL_EXIT ); + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::GetBearerSpecificRecordsL +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::GetBearerSpecificRecordsL( + RPointerArray& aRecordArray ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERSPECIFICRECORDSL_ENTRY ); + + if ( !iPacketDataQoSRecord ) + { + // IAP not yet in CommDat. + GetDefaultQosRecordL( aRecordArray ); + } + else + { + CCDUmtsR99QoSAndOnTableRecord* qosRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdUmtsR99QoSAndOnTableRecord ) ); + CleanupStack::PushL( qosRecord ); + CopyRecordFieldsL( *iPacketDataQoSRecord, *qosRecord ); + qosRecord->SetElementId( iPacketDataQoSRecord->ElementId() ); + aRecordArray.AppendL( static_cast( qosRecord ) ); + CleanupStack::Pop( qosRecord ); + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERSPECIFICRECORDSL_EXIT ); + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::GetDefaultServiceRecordL +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::GetDefaultServiceRecordL( + RPointerArray& aRecordArray ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETDEFAULTSERVICERECORDL_ENTRY ); + + CCDWCDMAPacketServiceRecord* serviceRecord( NULL ); + if ( iOutgoing ) + { + serviceRecord = + static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdOutgoingGprsRecord ) ); + } + else + { + serviceRecord = + static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdOutgoingGprsRecord ) ); + } + + CleanupStack::PushL( serviceRecord ); + serviceRecord->iGPRSAPN.SetL( KNullDesC ); + serviceRecord->iGPRSPDPType.SetL( RPacketContext::EPdpTypeIPv4 ); + serviceRecord->iGPRSReqPrecedence = 0; + serviceRecord->iGPRSReqDelay = 0; + serviceRecord->iGPRSReqReliability = 0; + serviceRecord->iGPRSReqPeakThroughput = 0; + serviceRecord->iGPRSReqMeanThroughput = 0; + serviceRecord->iGPRSMinPrecedence = 0; + serviceRecord->iGPRSMinDelay = 0; + serviceRecord->iGPRSMinReliability = 0; + serviceRecord->iGPRSMinPeakThroughput = 0; + serviceRecord->iGPRSMinMeanThroughput = 0; + serviceRecord->iGPRSDataCompression = EFalse; + serviceRecord->iGPRSHeaderCompression = EFalse; + serviceRecord->iGPRSAnonymousAccess = EFalse; + serviceRecord->iGPRSIfNetworks.SetL( KDefIspIfNetworksIPv4 ); + serviceRecord->iGPRSIfPromptForAuth = EFalse; + serviceRecord->iGPRSIfAuthRetries = 0; + serviceRecord->iGPRSIPGateway.SetL( KUnspecifiedIPv4 ); + serviceRecord->iGPRSIPAddrFromServer = ETrue; + serviceRecord->iGPRSIPAddr.SetL( KUnspecifiedIPv4 ); + serviceRecord->iGPRSIPDNSAddrFromServer = ETrue; + serviceRecord->iGPRSIPNameServer1.SetL( KUnspecifiedIPv4 ); + serviceRecord->iGPRSIPNameServer2.SetL( KUnspecifiedIPv4 ); + serviceRecord->iGPRSIP6DNSAddrFromServer = ETrue; + serviceRecord->iGPRSIP6NameServer1.SetL( KDynamicIpv6Address ); + serviceRecord->iGPRSIP6NameServer2.SetL( KDynamicIpv6Address ); + serviceRecord->iGPRSEnableLCPExtension = EFalse; + serviceRecord->iGPRSDisablePlainTextAuth = ETrue; + serviceRecord->iGPRSAPType = EPacketDataBoth; + serviceRecord->iGPRSQOSWarningTimeOut = TUint32(-1); + + aRecordArray.AppendL( static_cast( serviceRecord ) ); + CleanupStack::Pop( serviceRecord ); + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETDEFAULTSERVICERECORDL_EXIT ); + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::GetDefaultQosRecordL +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::GetDefaultQosRecordL( + RPointerArray& aRecordArray ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETDEFAULTQOSRECORDL_ENTRY ); + + CCDUmtsR99QoSAndOnTableRecord* packetDataQoSRecord = + static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdUmtsR99QoSAndOnTableRecord ) ); + CleanupStack::PushL( packetDataQoSRecord ); + + packetDataQoSRecord->iGPRSReqTrafficClass = RPacketQoS::ETrafficClassUnspecified; + packetDataQoSRecord->iGPRSMinTrafficClass = RPacketQoS::ETrafficClassUnspecified; + packetDataQoSRecord->iGPRSReqDeliveryOrder = RPacketQoS::EDeliveryOrderUnspecified; + packetDataQoSRecord->iGPRSMinDeliveryOrder = RPacketQoS::EDeliveryOrderUnspecified; + packetDataQoSRecord->iGPRSReqDeliverErroneousSDU = + RPacketQoS::EErroneousSDUDeliveryUnspecified; + packetDataQoSRecord->iGPRSMinDeliverErroneousSDU = + RPacketQoS::EErroneousSDUDeliveryUnspecified; + packetDataQoSRecord->iGPRSReqMaxSDUSize = 0; + packetDataQoSRecord->iGPRSMinAcceptableMaxSDUSize = 0; + packetDataQoSRecord->iGPRSReqMaxUplinkRate = 0; + packetDataQoSRecord->iGPRSReqMinUplinkRate = 0; + packetDataQoSRecord->iGPRSReqMaxDownlinkRate = 0; + packetDataQoSRecord->iGPRSReqMinDownlinkRate = 0; + packetDataQoSRecord->iGPRSReqBER = RPacketQoS::EBERUnspecified; + packetDataQoSRecord->iGPRSMaxBER = RPacketQoS::EBERUnspecified; + packetDataQoSRecord->iGPRSReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified; + packetDataQoSRecord->iGPRSMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified; + packetDataQoSRecord->iGPRSReqTrafficHandlingPriority = + RPacketQoS::ETrafficPriorityUnspecified; + packetDataQoSRecord->iGPRSMinTrafficHandlingPriority = + RPacketQoS::ETrafficPriorityUnspecified; + packetDataQoSRecord->iGPRSReqTransferDelay = 0; + packetDataQoSRecord->iGPRSMaxTransferDelay = 0; + packetDataQoSRecord->iGPRSReqGuaranteedUplinkRate = 0; + packetDataQoSRecord->iGPRSMinGuaranteedUplinkRate = 0; + packetDataQoSRecord->iGPRSReqGuaranteedDownlinkRate = 0; + packetDataQoSRecord->iGPRSMinGuaranteedDownlinkRate = 0; + packetDataQoSRecord->iGPRSSignallingIndication = EFalse; + packetDataQoSRecord->iGPRS_ImCnSignallingIndication = EFalse; + packetDataQoSRecord->iGPRSSourceStatisticsDescriptor = + RPacketQoS::ESourceStatisticsDescriptorUnknown; + + aRecordArray.AppendL( static_cast( packetDataQoSRecord ) ); + CleanupStack::Pop( packetDataQoSRecord ); + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETDEFAULTQOSRECORDL_EXIT ); + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::GetBearerIntAttributeL +// --------------------------------------------------------------------------- +// +TUint32 CCmPluginPacketData::GetBearerIntAttributeL( + TUint32 aAttribute, + RPointerArray& aGenRecordArray, + RPointerArray& aBearerSpecRecordArray ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERINTATTRIBUTEL_ENTRY ); + + TUint32 retVal( 0 ); + + CCDWCDMAPacketServiceRecord* serviceRecord = + static_cast( aGenRecordArray[KServiceRecordIndex] ); + + if ( aAttribute < ECmCommonAttributesEnd || + ( aAttribute > ECmBearerCreationCommonAttributes && + aAttribute < ECmBearerCreationCommonAttributesEnd ) ) + { + switch ( aAttribute ) + { + case ECmBearerType: + { + retVal = iBearerType; + } + break; + case ECmCommsDBBearerType: + { + retVal = KCommDbBearerWcdma; + } + break; + case ECmDefaultUiPriority: + { + retVal = GetDefPriorityL( aAttribute ); + } + break; + case ECmDefaultPriority: + { + retVal = GetDefPriorityL( aAttribute ); + } + break; + case ECmExtensionLevel: + { + retVal = KExtensionBaseLevel; + } + break; + case ECmInvalidAttribute: + { + // This attribute has been deprecated since Symbian^4. + User::Leave( KErrNotSupported ); + } + break; + case ECmIFAuthRetries: + { + retVal = serviceRecord->iGPRSIfAuthRetries; + } + break; + default: + { + User::Leave( KErrNotFound ); //TODO, check leave code, should it be KErrNotSupported ? + } + break; + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERINTATTRIBUTEL_EXIT ); + return retVal; + } + + if ( aAttribute >= EPacketDataSpecificAttributes && + aAttribute < EPacketDataServiceEnableLLMNR ) + { + retVal = GetServiceIntAttributeL( aAttribute, aGenRecordArray ); + } + else if ( aAttribute >= EGPRSReqTrafficClass && + aAttribute <= EGPRSSourceStatisticsDescriptor ) + { + retVal = GetQosIntAttributeL( aAttribute, aBearerSpecRecordArray ); + } + else + { + User::Leave( KErrNotFound ); + } + + OstTraceFunctionExit0( DUP1_CCMPLUGINPACKETDATA_GETBEARERINTATTRIBUTEL_EXIT ); + return retVal; + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::GetServiceIntAttributeL +// --------------------------------------------------------------------------- +// +TUint32 CCmPluginPacketData::GetServiceIntAttributeL( + TUint32 aAttribute, + RPointerArray& aGenRecordArray ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETSERVICEINTATTRIBUTEL_ENTRY ); + + TUint32 retVal( 0 ); + + CCDWCDMAPacketServiceRecord* serviceRecord = + static_cast( aGenRecordArray[KServiceRecordIndex] ); + + switch ( aAttribute ) + { + case EPacketDataPDPType: + { + retVal = serviceRecord->iGPRSPDPType; + } + break; + + case EPacketDataReqPrecedence: + { + retVal = serviceRecord->iGPRSReqPrecedence; + } + break; + + case EPacketDataReqDelay: + { + retVal = serviceRecord->iGPRSReqDelay; + } + break; + + case EPacketDataReliability: + { + retVal = serviceRecord->iGPRSReqReliability; + } + break; + + case EPacketDataPeakThroughput: + { + retVal = serviceRecord->iGPRSReqPeakThroughput; + } + break; + + case EPacketDataMeanThroughput: + { + retVal = serviceRecord->iGPRSMinMeanThroughput; + } + break; + + case EPacketDataMinPrecedence: + { + retVal = serviceRecord->iGPRSMinPrecedence; + } + break; + + case EPacketDataMinDelay: + { + retVal = serviceRecord->iGPRSMinDelay; + } + break; + + case EPacketDataMinReliability: + { + retVal = serviceRecord->iGPRSMinReliability; + } + break; + + case EPacketDataMinPeakThroughput: + { + retVal = serviceRecord->iGPRSMinPeakThroughput; + } + break; + + case EPacketDataMinMeanThroughput: + { + retVal = serviceRecord->iGPRSMinMeanThroughput; + } + break; + + case EPacketDataIFAuthRetries: + { + retVal = serviceRecord->iGPRSIfAuthRetries; + } + break; + + case EPacketDataApType: + { + retVal = serviceRecord->iGPRSAPType; + } + break; + + case EPacketDataQoSWarningTimeOut: + { + retVal = serviceRecord->iGPRSQOSWarningTimeOut; + } + break; + default: + { + User::Leave( KErrNotFound ); + } + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETSERVICEINTATTRIBUTEL_EXIT ); + + return retVal; + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::GetQosIntAttributeL +// --------------------------------------------------------------------------- +// +TUint32 CCmPluginPacketData::GetQosIntAttributeL( + TUint32 aAttribute, + RPointerArray& aBearerSpecRecordArray ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETQOSINTATTRIBUTEL_ENTRY ); + + TUint32 retVal( 0 ); + + CCDUmtsR99QoSAndOnTableRecord* qosRecord = static_cast( + aBearerSpecRecordArray[KQosRecordIndex] ); + + switch ( aAttribute ) + { + case EGPRSReqTrafficClass: + { + retVal = qosRecord->iGPRSReqTrafficClass; + } + break; + + case EGPRSMinTrafficClass: + { + retVal = qosRecord->iGPRSMinTrafficClass; + } + break; + + case EGPRSReqDeliveryOrder: + { + retVal = qosRecord->iGPRSReqDeliveryOrder; + } + break; + + case GPRSMinDeliveryOrder: + { + retVal = qosRecord->iGPRSMinDeliveryOrder; + } + break; + case EGPRSReqDeliverErroneousSDU: + { + retVal = qosRecord->iGPRSReqDeliverErroneousSDU; + } + break; + case EGPRSMinDeliverErroneousSDU: + { + retVal = qosRecord->iGPRSMinDeliverErroneousSDU; + } + break; + case EGPRSReqMaxSDUSize: + { + retVal = qosRecord->iGPRSReqMaxSDUSize; + } + break; + + case EGPRSMinAcceptableMaxSDUSize: + { + retVal = qosRecord->iGPRSMinAcceptableMaxSDUSize; + } + break; + + case EGPRSReqMaxUplinkRate: + { + retVal = qosRecord->iGPRSReqMaxUplinkRate; + } + break; + + case EGPRSReqMinUplinkRate: + { + retVal = qosRecord->iGPRSReqMinUplinkRate; + } + break; + + case EGPRSReqMaxDownlinkRate: + { + retVal = qosRecord->iGPRSReqMaxDownlinkRate; + } + break; + + case EGPRSReqMinDownlinkRate: + { + retVal = qosRecord->iGPRSReqMinDownlinkRate; + } + break; + + case EGPRSReqBER: + { + retVal = qosRecord->iGPRSReqBER; + } + break; + + case EGPRSMaxBER: + { + retVal = qosRecord->iGPRSMaxBER; + } + break; + + case EGPRSReqSDUErrorRatio: + { + retVal = qosRecord->iGPRSReqSDUErrorRatio; + } + break; + + case EGPRSMaxSDUErrorRatio: + { + retVal = qosRecord->iGPRSMaxSDUErrorRatio; + } + break; + + case EGPRSReqTrafficHandlingPriority: + { + retVal = qosRecord->iGPRSReqTrafficHandlingPriority; + } + break; + + case EGPRSMinTrafficHandlingPriority: + { + retVal = qosRecord->iGPRSMinTrafficHandlingPriority; + } + break; + + case EGPRSReqTransferDelay: + { + retVal = qosRecord->iGPRSReqTransferDelay; + } + break; + + case EGPRSMaxTransferDelay: + { + retVal = qosRecord->iGPRSMaxTransferDelay; + } + break; + + case EGPRSReqGuaranteedUplinkRate: + { + retVal = qosRecord->iGPRSReqGuaranteedUplinkRate; + } + break; + + case EGPRSMinGuaranteedUplinkRate: + { + retVal = qosRecord->iGPRSMinGuaranteedUplinkRate; + } + break; + + case EGPRSReqGuaranteedDownlinkRate: + { + retVal = qosRecord->iGPRSReqGuaranteedDownlinkRate; + } + break; + + case EGPRSMinGuaranteedDownlinkRate: + { + retVal = qosRecord->iGPRSMinGuaranteedDownlinkRate; + } + break; + + case EGPRSSourceStatisticsDescriptor: + { + retVal = qosRecord->iGPRSSourceStatisticsDescriptor; + } + break; + + default: + { + User::Leave( KErrNotFound ); + } + break; + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETQOSINTATTRIBUTEL_EXIT ); + return retVal; + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::GetBearerBoolAttributeL +// --------------------------------------------------------------------------- +// +TBool CCmPluginPacketData::GetBearerBoolAttributeL( TUint32 aAttribute, + RPointerArray& aGenRecordArray, + RPointerArray& aBearerSpecRecordArray ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERBOOLATTRIBUTEL_ENTRY ); + + TBool retVal( EFalse ); + + switch ( aAttribute ) + { + case EPacketDataOutGoing: + { + retVal = iOutgoing; + } + break; + case ECmCoverage: + { +#ifndef __WINS__ + CCmPDCoverageCheck* coverage = new( ELeave ) CCmPDCoverageCheck; + CleanupStack::PushL( coverage ); + + retVal = coverage->IsThereCoverageL(); + + CleanupStack::PopAndDestroy( coverage ); +#else + retVal = ETrue; +#endif + } + break; + case ECmDestination: + { + retVal = EFalse; + } + break; + case ECmBearerHasUi: + { + retVal = ETrue; + } + break; + case ECmIPv6Supported: + { + retVal = FeatureManager::FeatureSupported( KFeatureIdIPv6 ); + } + break; + case EPacketDataDataCompression: + { + retVal = static_cast( + aGenRecordArray[KServiceRecordIndex] )->iGPRSDataCompression; + } + break; + case EPacketDataHeaderCompression: + { + retVal = static_cast( + aGenRecordArray[KServiceRecordIndex] )->iGPRSHeaderCompression; + } + break; + case EPacketDataUseEdge: + { + retVal = static_cast( + aGenRecordArray[KServiceRecordIndex] )->iGPRSUseEdge; + } + break; + case EPacketDataAnonymousAccess: + { + retVal = static_cast( + aGenRecordArray[KServiceRecordIndex] )->iGPRSAnonymousAccess; + } + break; + case ECmIFPromptForAuth: + case EPacketDataIFPromptForAuth: + { + retVal = static_cast( + aGenRecordArray[KServiceRecordIndex] )->iGPRSIfPromptForAuth; + } + break; + case ECmIPAddFromServer: + case EPacketDataIPAddrFromServer: + { + retVal = static_cast( + aGenRecordArray[KServiceRecordIndex] )->iGPRSIPAddrFromServer; + } + break; + case ECmIPDNSAddrFromServer: + case EPacketDataIPDNSAddrFromServer: + { + retVal = static_cast( + aGenRecordArray[KServiceRecordIndex] )->iGPRSIPDNSAddrFromServer; + } + break; + case ECmIP6DNSAddrFromServer: + case EPacketDataIPIP6DNSAddrFromServer: + { + retVal = static_cast( + aGenRecordArray[KServiceRecordIndex] )->iGPRSIP6DNSAddrFromServer; + } + break; + case ECmEnableLPCExtension: + case EPacketDataEnableLcpExtension: + { + retVal = static_cast( + aGenRecordArray[KServiceRecordIndex] )->iGPRSEnableLCPExtension; + } + break; + case EPacketDataServiceEnableLLMNR: + { + retVal = static_cast( + aGenRecordArray[KServiceRecordIndex] )->iServiceEnableLlmnr; + } + break; + case ECmDisablePlainTextAuth: + case EPacketDataDisablePlainTextAuth: + { + retVal = static_cast( + aGenRecordArray[KServiceRecordIndex] )->iGPRSDisablePlainTextAuth; + } + break; + case EGPRSSignallingIndication: + { + retVal = static_cast( + aBearerSpecRecordArray[KQosRecordIndex] )->iGPRSSignallingIndication; + } + break; + case EGPRS_ImCnSignallingIndication: + { + retVal = static_cast( + aBearerSpecRecordArray[KQosRecordIndex] )->iGPRS_ImCnSignallingIndication; + } + break; + default: + { + User::Leave( KErrNotFound ); + } + break; + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERBOOLATTRIBUTEL_EXIT ); + return retVal; + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::GetBearerStringAttributeL +// --------------------------------------------------------------------------- +// +HBufC* CCmPluginPacketData::GetBearerStringAttributeL( TUint32 aAttribute, + RPointerArray& aGenRecordArray, + RPointerArray& /*aBearerSpecRecordArray*/ ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERSTRINGATTRIBUTEL_ENTRY ); + + HBufC* retVal( NULL ); + if ( ( aAttribute > EPacketDataSpecificAttributes && aAttribute < EGPRSReqTrafficClass ) || + ( aAttribute > ECmCommonAttributesStart && aAttribute < ECmCommonAttributesEnd ) ) + { + retVal = GetServiceStringAttributeL( aAttribute, aGenRecordArray ); + } + else + { + User::Leave( KErrNotSupported ); + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERSTRINGATTRIBUTEL_EXIT ); + return retVal; + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::GetServiceStringAttributeL +// --------------------------------------------------------------------------- +// +HBufC* CCmPluginPacketData::GetServiceStringAttributeL( + TUint32 aAttribute, + RPointerArray& aGenRecordArray ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETSERVICESTRINGATTRIBUTEL_ENTRY ); + + HBufC* retVal = NULL; + + CCDWCDMAPacketServiceRecord* serviceRecord = + static_cast( aGenRecordArray[KServiceRecordIndex] ); + switch ( aAttribute ) + { + case ECmIFName: + case EPacketDataAPName: + { + retVal = TPtrC( serviceRecord->iGPRSAPN ).AllocL(); + } + break; + case EPacketDataPDPAddress: + { + retVal = TPtrC( serviceRecord->iGPRSPDPAddress ).AllocL(); + } + break; + case ECmIFParams: + case EPacketDataIFParams: + { + retVal = TPtrC( serviceRecord->iGPRSIfParams ).AllocL(); + } + break; + case ECmIFNetworks: + case EPacketDataIFNetworks: + { + retVal = TPtrC( serviceRecord->iGPRSIfNetworks ).AllocL(); + } + break; + case ECmIFAuthName: + case EPacketDataIFAuthName: + { + retVal = TPtrC( serviceRecord->iGPRSIfAuthName ).AllocL(); + } + break; + case ECmIFAuthPass: + case EPacketDataIFAuthPass: + { + retVal = TPtrC( serviceRecord->iGPRSIfAuthPass ).AllocL(); + } + break; + case ECmIPNetmask: + case EPacketDataIPNetmask: + { + retVal = TPtrC( serviceRecord->iGPRSIPNetMask ).AllocL(); + } + break; + case ECmIPGateway: + case EPacketDataIPGateway: + { + retVal = TPtrC( serviceRecord->iGPRSIPGateway ).AllocL(); + } + break; + case ECmIPAddress: + case EPacketDataIPAddr: + { + retVal = TPtrC( serviceRecord->iGPRSIPAddr ).AllocL(); + } + break; + case ECmIPNameServer1: + case EPacketDataIPNameServer1: + { + retVal = TPtrC( serviceRecord->iGPRSIPNameServer1 ).AllocL(); + } + break; + case ECmIPNameServer2: + case EPacketDataIPNameServer2: + { + retVal = TPtrC( serviceRecord->iGPRSIPNameServer2 ).AllocL(); + } + break; + case ECmIP6NameServer1: + case EPacketDataIPIP6NameServer1: + { + retVal = TPtrC( serviceRecord->iGPRSIP6NameServer1 ).AllocL(); + } + break; + case ECmIP6NameServer2: + case EPacketDataIPIP6NameServer2: + { + retVal = TPtrC( serviceRecord->iGPRSIP6NameServer2 ).AllocL(); + } + break; + case ECmIPAddrLeaseValidFrom: + case EPacketDataIPAddrLeaseValidFrom: + { + retVal = TPtrC( serviceRecord->iGPRSIPAddrLeaseValidFrom ).AllocL(); + } + break; + case ECmIPAddrLeaseValidTo: + case EPacketDataIPAddrLeaseValidTo: + { + retVal = TPtrC( serviceRecord->iGPRSIPAddrLeaseValidTo ).AllocL(); + } + break; + case ECmConfigDaemonManagerName: + case EPacketDataConfigDaemonManagerName: + { + retVal = TPtrC( serviceRecord->iGPRSConfigDaemonManagerName ).AllocL(); + } + break; + case ECmConfigDaemonName: + case EPacketDataConfigDaemonName: + { + retVal = TPtrC( serviceRecord->iGPRSConfigDaemonName ).AllocL(); + } + break; + + default: + { + User::Leave( KErrNotFound ); + } + break; + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETSERVICESTRINGATTRIBUTEL_EXIT ); + return retVal; + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::GetBearerString8AttributeL +// --------------------------------------------------------------------------- +// +HBufC8* CCmPluginPacketData::GetBearerString8AttributeL( TUint32 /*aAttribute*/, + RPointerArray& /*aGenRecordArray*/, + RPointerArray& /*aBearerSpecRecordArray*/ ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERSTRING8ATTRIBUTEL_ENTRY ); + + User::Leave( KErrNotSupported ); + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERSTRING8ATTRIBUTEL_EXIT ); + return NULL; + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::SetBearerIntAttributeL +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::SetBearerIntAttributeL( + TUint32 aAttribute, + TUint32 aValue, + RPointerArray& aGenRecordArray, + RPointerArray& aBearerSpecRecordArray ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETBEARERINTATTRIBUTEL_ENTRY ); + + if ( aAttribute >= EPacketDataSpecificAttributes && aAttribute < EPacketDataServiceEnableLLMNR ) + { + SetServiceIntAttributeL( aAttribute, aValue, aGenRecordArray ); + } + else if ( aAttribute >= EGPRSReqTrafficClass && aAttribute <= EGPRSSourceStatisticsDescriptor ) + { + SetQosIntAttributeL( aAttribute, aValue, aBearerSpecRecordArray ); + } + else + { + User::Leave( KErrNotFound ); + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SETBEARERINTATTRIBUTEL_EXIT ); + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::SetServiceIntAttributeL +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::SetServiceIntAttributeL( + TUint32 aAttribute, + TUint32 aValue, + RPointerArray& aGenRecordArray ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETSERVICEINTATTRIBUTEL_ENTRY ); + + CCDWCDMAPacketServiceRecord* serviceRecord = static_cast( + aGenRecordArray[KServiceRecordIndex] ); + + switch ( aAttribute ) + { + case EPacketDataPDPType: + { + SetPDPTypeL( static_cast( aValue ), + serviceRecord ); + } + break; + + case EPacketDataReqPrecedence: + { + serviceRecord->iGPRSReqPrecedence.SetL( aValue ); + } + break; + + case EPacketDataReqDelay: + { + serviceRecord->iGPRSReqDelay.SetL( aValue ); + } + break; + + case EPacketDataReliability: + { + serviceRecord->iGPRSReqReliability.SetL( aValue ); + } + break; + + case EPacketDataPeakThroughput: + { + serviceRecord->iGPRSReqPeakThroughput.SetL( aValue ); + } + break; + + case EPacketDataMeanThroughput: + { + serviceRecord->iGPRSMinMeanThroughput.SetL( aValue ); + } + break; + + case EPacketDataMinPrecedence: + { + serviceRecord->iGPRSMinPrecedence.SetL( aValue ); + } + break; + + case EPacketDataMinDelay: + { + serviceRecord->iGPRSMinDelay.SetL( aValue ); + } + break; + + case EPacketDataMinReliability: + { + serviceRecord->iGPRSMinReliability.SetL( aValue ); + } + break; + + case EPacketDataMinPeakThroughput: + { + serviceRecord->iGPRSMinPeakThroughput.SetL( aValue ); + } + break; + + case EPacketDataMinMeanThroughput: + { + serviceRecord->iGPRSMinMeanThroughput.SetL( aValue ); + } + break; + + case EPacketDataIFAuthRetries: + { + serviceRecord->iGPRSIfAuthRetries.SetL( aValue ); + } + break; + + case EPacketDataApType: + { + serviceRecord->iGPRSAPType.SetL( aValue ); + } + break; + + case EPacketDataQoSWarningTimeOut: + { + serviceRecord->iGPRSQOSWarningTimeOut.SetL( aValue ); + } + break; + default: + { + User::Leave( KErrNotFound ); + } + } + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SETSERVICEINTATTRIBUTEL_EXIT ); + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::SetQosIntAttributeL +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::SetQosIntAttributeL( + TUint32 aAttribute, + TUint32 aValue, + RPointerArray& aBearerSpecRecordArray ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETQOSINTATTRIBUTEL_ENTRY ); + + CCDUmtsR99QoSAndOnTableRecord* qosRecord = static_cast( + aBearerSpecRecordArray[KQosRecordIndex] ); + + switch ( aAttribute ) + { + case EGPRSReqTrafficClass: + { + qosRecord->iGPRSReqTrafficClass.SetL( + static_cast( aValue ) ); + } + break; + + case EGPRSMinTrafficClass: + { + qosRecord->iGPRSMinTrafficClass.SetL( + static_cast( aValue ) ); + } + break; + + case EGPRSReqDeliveryOrder: + { + qosRecord->iGPRSReqDeliveryOrder.SetL( + static_cast( aValue ) ); + } + break; + + case GPRSMinDeliveryOrder: + { + qosRecord->iGPRSMinDeliveryOrder.SetL( + static_cast( aValue ) ); + } + break; + case EGPRSReqDeliverErroneousSDU: + { + qosRecord->iGPRSReqDeliverErroneousSDU.SetL( + static_cast( aValue ) ); + } + break; + case EGPRSMinDeliverErroneousSDU: + { + qosRecord->iGPRSMinDeliverErroneousSDU.SetL( + static_cast( aValue ) ); + } + break; + case EGPRSReqMaxSDUSize: + { + qosRecord->iGPRSReqMaxSDUSize.SetL( aValue ); + } + break; + + case EGPRSMinAcceptableMaxSDUSize: + { + qosRecord->iGPRSMinAcceptableMaxSDUSize.SetL( aValue ); + } + break; + + case EGPRSReqMaxUplinkRate: + { + qosRecord->iGPRSReqMaxUplinkRate.SetL( aValue ); + } + break; + + case EGPRSReqMinUplinkRate: + { + qosRecord->iGPRSReqMinUplinkRate.SetL( aValue ); + } + break; + + case EGPRSReqMaxDownlinkRate: + { + qosRecord->iGPRSReqMaxDownlinkRate.SetL( aValue ); + } + break; + + case EGPRSReqMinDownlinkRate: + { + qosRecord->iGPRSReqMinDownlinkRate.SetL( aValue ); + } + break; + + case EGPRSReqBER: + { + qosRecord->iGPRSReqBER.SetL( + static_cast( aValue ) ); + } + break; + + case EGPRSMaxBER: + { + qosRecord->iGPRSMaxBER.SetL( + static_cast( aValue ) ); + } + break; + + case EGPRSReqSDUErrorRatio: + { + qosRecord->iGPRSReqSDUErrorRatio.SetL( + static_cast( aValue ) ); + } + break; + + case EGPRSMaxSDUErrorRatio: + { + qosRecord->iGPRSMaxSDUErrorRatio.SetL( + static_cast( aValue ) ); + } + break; + + case EGPRSReqTrafficHandlingPriority: + { + qosRecord->iGPRSReqTrafficHandlingPriority.SetL( + static_cast( aValue ) ); + } + break; + + case EGPRSMinTrafficHandlingPriority: + { + qosRecord->iGPRSMinTrafficHandlingPriority.SetL( + static_cast( aValue ) ); + } + break; + + case EGPRSReqTransferDelay: + { + qosRecord->iGPRSReqTransferDelay.SetL( aValue ); + } + break; + + case EGPRSMaxTransferDelay: + { + qosRecord->iGPRSMaxTransferDelay.SetL( aValue ); + } + break; + + case EGPRSReqGuaranteedUplinkRate: + { + qosRecord->iGPRSReqGuaranteedUplinkRate.SetL( aValue ); + } + break; + + case EGPRSMinGuaranteedUplinkRate: + { + qosRecord->iGPRSMinGuaranteedUplinkRate.SetL( aValue ); + } + break; + + case EGPRSReqGuaranteedDownlinkRate: + { + qosRecord->iGPRSReqGuaranteedDownlinkRate.SetL( aValue ); + } + break; + + case EGPRSMinGuaranteedDownlinkRate: + { + qosRecord->iGPRSMinGuaranteedDownlinkRate.SetL( aValue ); + } + break; + + case EGPRSSourceStatisticsDescriptor: + { + qosRecord->iGPRSSourceStatisticsDescriptor.SetL( + static_cast( aValue ) ); + } + break; + + default: + { + User::Leave( KErrNotFound ); + } + break; + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SETQOSINTATTRIBUTEL_EXIT ); + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::SetBearerBoolAttributeL +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::SetBearerBoolAttributeL( + TUint32 aAttribute, + TBool aValue, + RPointerArray& aGenRecordArray, + RPointerArray& aBearerSpecRecordArray ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETBEARERBOOLATTRIBUTEL_ENTRY ); + + CCDWCDMAPacketServiceRecord* serviceRecord = static_cast( + aGenRecordArray[KServiceRecordIndex] ); + + switch ( aAttribute ) + { + case EPacketDataOutGoing: + { + iOutgoing = aValue; + } + break; + case EPacketDataDataCompression: + { + serviceRecord->iGPRSDataCompression.SetL( aValue ); + } + break; + case EPacketDataHeaderCompression: + { + serviceRecord->iGPRSHeaderCompression.SetL( aValue ); + } + break; + case EPacketDataUseEdge: + { + serviceRecord->iGPRSUseEdge.SetL( aValue ); + } + break; + case EPacketDataAnonymousAccess: + { + serviceRecord->iGPRSAnonymousAccess.SetL( aValue ); + } + break; + case ECmIFPromptForAuth: + case EPacketDataIFPromptForAuth: + { + serviceRecord->iGPRSIfPromptForAuth.SetL( aValue ); + } + break; + case ECmIPAddFromServer: + case EPacketDataIPAddrFromServer: + { + serviceRecord->iGPRSIPAddrFromServer.SetL( aValue ); + } + break; + case ECmIPDNSAddrFromServer: + case EPacketDataIPDNSAddrFromServer: + { + serviceRecord->iGPRSIPDNSAddrFromServer.SetL( aValue ); + } + break; + case ECmIP6DNSAddrFromServer: + case EPacketDataIPIP6DNSAddrFromServer: + { + serviceRecord->iGPRSIP6DNSAddrFromServer.SetL( aValue ); + } + break; + case ECmEnableLPCExtension: + case EPacketDataEnableLcpExtension: + { + serviceRecord->iGPRSEnableLCPExtension.SetL( aValue ); + } + break; + case ECmDisablePlainTextAuth: + case EPacketDataDisablePlainTextAuth: + { + serviceRecord->iGPRSDisablePlainTextAuth.SetL( aValue ); + } + break; + case EGPRSSignallingIndication: + { + static_cast( + aBearerSpecRecordArray[KQosRecordIndex] ) + ->iGPRSSignallingIndication.SetL( aValue ); + } + break; + case EGPRS_ImCnSignallingIndication: + { + static_cast + ( aBearerSpecRecordArray[KQosRecordIndex] ) + ->iGPRS_ImCnSignallingIndication.SetL( aValue ); + } + break; + case EPacketDataServiceEnableLLMNR: + { + serviceRecord->iServiceEnableLlmnr.SetL( aValue ); + } + break; + default: + { + User::Leave( KErrNotFound ); + } + break; + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SETBEARERBOOLATTRIBUTEL_EXIT ); + } + + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::SetBearerStringAttributeL +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::SetBearerStringAttributeL( + TUint32 aAttribute, + const TDesC16& aValue, + RPointerArray& aGenRecordArray, + RPointerArray& aBearerSpecRecordArray ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETBEARERSTRINGATTRIBUTEL_ENTRY ); + + CCDWCDMAPacketServiceRecord* serviceRecord = + static_cast( + aGenRecordArray[KServiceRecordIndex] ); + + switch ( aAttribute ) + { + case EPacketDataAPName: + { + serviceRecord->iGPRSAPN.SetL( aValue ); + } + break; + + case EPacketDataPDPAddress: + { + serviceRecord->iGPRSPDPAddress.SetL( aValue ); + } + break; + + case ECmIFParams: + case EPacketDataIFParams: + { + serviceRecord->iGPRSIfParams.SetL( aValue ); + } + break; + + case ECmIFNetworks: + case EPacketDataIFNetworks: + { + serviceRecord->iGPRSIfNetworks.SetL( aValue ); + } + break; + + case ECmIFAuthName: + case EPacketDataIFAuthName: + { + serviceRecord->iGPRSIfAuthName.SetL( aValue ); + } + break; + + case ECmIFAuthPass: + case EPacketDataIFAuthPass: + { + serviceRecord->iGPRSIfAuthPass.SetL( aValue ); + } + break; + + case ECmIPNetmask: + case EPacketDataIPNetmask: + { + serviceRecord->iGPRSIPNetMask.SetL( aValue ); + } + break; + + case ECmIPGateway: + case EPacketDataIPGateway: + { + serviceRecord->iGPRSIPGateway.SetL( aValue ); + } + break; + + case ECmIPAddress: + case EPacketDataIPAddr: + { + if ( ( aValue.Compare( KUnspecifiedIPv4 ) == 0 ) || + ( aValue.Compare( KNullDesC ) == 0 ) ) + { + // If unspecified or NULL address is set dynamic + // IP must be enabled. + SetBearerBoolAttributeL( ECmIPAddFromServer, + ETrue, + aGenRecordArray, + aBearerSpecRecordArray ); + } + else + { + // If valid address is set dynamic IP is disabled. + SetBearerBoolAttributeL( ECmIPAddFromServer, + EFalse, + aGenRecordArray, + aBearerSpecRecordArray ); + } + serviceRecord->iGPRSIPAddr.SetL( aValue ); + } + break; + + case ECmIPNameServer1: + case EPacketDataIPNameServer1: + { + serviceRecord->iGPRSIPNameServer1.SetL( aValue ); + } + break; + + case ECmIPNameServer2: + case EPacketDataIPNameServer2: + { + serviceRecord->iGPRSIPNameServer2.SetL( aValue ); + } + break; + + case ECmIP6NameServer1: + case EPacketDataIPIP6NameServer1: + { + serviceRecord->iGPRSIP6NameServer1.SetL( aValue ); + } + break; + + case ECmIP6NameServer2: + case EPacketDataIPIP6NameServer2: + { + serviceRecord->iGPRSIP6NameServer2.SetL( aValue ); + } + break; + + case ECmIPAddrLeaseValidFrom: + case EPacketDataIPAddrLeaseValidFrom: + { + serviceRecord->iGPRSIPAddrLeaseValidFrom.SetL( aValue ); + } + break; + + case ECmIPAddrLeaseValidTo: + case EPacketDataIPAddrLeaseValidTo: + { + serviceRecord->iGPRSIPAddrLeaseValidTo.SetL( aValue ); + } + break; + + case ECmConfigDaemonManagerName: + case EPacketDataConfigDaemonManagerName: + { + serviceRecord->iGPRSConfigDaemonManagerName.SetL( aValue ); + } + break; + + case ECmConfigDaemonName: + case EPacketDataConfigDaemonName: + { + serviceRecord->iGPRSConfigDaemonName.SetL( aValue ); + } + break; + + default: + { + User::Leave( KErrNotSupported ); + } + break; + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SETBEARERSTRINGATTRIBUTEL_EXIT ); + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::SetBearerString8AttributeL +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::SetBearerString8AttributeL( + TUint32 /*aAttribute*/, + const TDesC8& /*aValue*/, + RPointerArray& /*aGenRecordArray*/, + RPointerArray& /*aBearerSpecRecordArray*/ ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETBEARERSTRING8ATTRIBUTEL_ENTRY ); + + User::Leave( KErrNotSupported ); + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SETBEARERSTRING8ATTRIBUTEL_EXIT ); + return; + } + + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::GetBearerInfoIntL +// --------------------------------------------------------------------------- +// +TUint32 CCmPluginPacketData::GetBearerInfoIntL( TUint32 aAttribute ) const + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERINFOINTL_ENTRY ); + + TUint32 retVal( 0 ); + switch ( aAttribute ) + { + case ECmBearerType: + { + retVal = iBearerType; + } + break; + case ECmCommsDBBearerType: + { + retVal = KCommDbBearerWcdma; + } + break; + case ECmDefaultUiPriority: + { + retVal = GetDefPriorityL( aAttribute ); + } + break; + case ECmDefaultPriority: + { + retVal = GetDefPriorityL( aAttribute ); + } + break; + case ECmExtensionLevel: + { + retVal = KExtensionBaseLevel; + } + break; + + default: + { + User::Leave( KErrNotSupported ); + } + break; + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERINFOINTL_EXIT ); + return retVal; + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::GetBearerInfoBoolL +// --------------------------------------------------------------------------- +// +TBool CCmPluginPacketData::GetBearerInfoBoolL( TUint32 aAttribute ) const + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERINFOBOOLL_ENTRY ); + + TBool retVal( EFalse ); + switch ( aAttribute ) + { + case ECmCoverage: + { +#ifndef __WINS__ + CCmPDCoverageCheck* coverage = new (ELeave) CCmPDCoverageCheck; + CleanupStack::PushL( coverage ); + + retVal = coverage->IsThereCoverageL(); + + CleanupStack::PopAndDestroy( coverage ); +#else + retVal = ETrue; +#endif + } + break; + case ECmDestination: + { + retVal = EFalse; + } + break; + case ECmBearerHasUi: + { + retVal = EFalse; + } + break; + case ECmIPv6Supported: + { + retVal = FeatureManager::FeatureSupported( KFeatureIdIPv6 ); + } + break; + case ECmVirtual: + { + retVal = EFalse; + } + break; + + default: + { + User::Leave( KErrNotSupported ); + } + break; + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERINFOBOOLL_EXIT ); + return retVal; + } + + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::GetBearerInfoStringL +// --------------------------------------------------------------------------- +// +HBufC* CCmPluginPacketData::GetBearerInfoStringL( TUint32 aAttribute ) const + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERINFOSTRINGL_ENTRY ); + + HBufC* retVal( NULL ); + switch ( aAttribute ) + { + default: + { + User::Leave( KErrNotSupported ); + } + break; + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERINFOSTRINGL_EXIT ); + return retVal; + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::GetBearerInfoString8L +// --------------------------------------------------------------------------- +// +HBufC8* CCmPluginPacketData::GetBearerInfoString8L( TUint32 aAttribute ) const + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERINFOSTRING8L_ENTRY ); + + HBufC8* retVal( NULL ); + switch ( aAttribute ) + { + default: + { + User::Leave( KErrNotSupported ); + } + break; + } + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERINFOSTRING8L_EXIT ); + return retVal; + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::PrepareToCopyDataL +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::PrepareToCopyDataL( CCmPluginBaseEng* aCopyInstance ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_PREPARETOCOPYDATAL_ENTRY ); + + CCmPluginPacketData* plugin = static_cast( aCopyInstance ); + plugin->iOutgoing = iOutgoing; + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_PREPARETOCOPYDATAL_EXIT ); + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::CopyServiceRecordL +// --------------------------------------------------------------------------- +// +CommsDat::CCDRecordBase* CCmPluginPacketData::CopyServiceRecordL() + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_COPYSERVICERECORDL_ENTRY ); + + // New service record to be returned. + CCDRecordBase* serviceRecord = NULL; + if ( iOutgoing ) + { + serviceRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdOutgoingGprsRecord ) ); + } + else + { + serviceRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdIncomingGprsRecord ) ); + } + CleanupStack::PushL( serviceRecord ); + + CCDWCDMAPacketServiceRecord* tempServiceRecordPtrToNew = + static_cast( serviceRecord ); + + // CommsDat version of service record. + CCDWCDMAPacketServiceRecord* origServiceRecord = + static_cast( iServiceRecord ); + + if ( !origServiceRecord->iRecordTag.IsNull() ) + { + tempServiceRecordPtrToNew->iRecordTag.SetL( + origServiceRecord->iRecordTag ); + } + if ( !origServiceRecord->iRecordName.IsNull() ) + { + tempServiceRecordPtrToNew->iRecordName.SetL( + origServiceRecord->iRecordName ); + } + + if ( !origServiceRecord->iServiceEnableLlmnr.IsNull() ) + { + tempServiceRecordPtrToNew->iServiceEnableLlmnr.SetL( + origServiceRecord->iServiceEnableLlmnr ); + } + + if ( !origServiceRecord->iGPRSAPN.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSAPN.SetL( + origServiceRecord->iGPRSAPN ); + } + if ( !origServiceRecord->iGPRSPDPType.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSPDPType.SetL( + origServiceRecord->iGPRSPDPType ); + } + if ( !origServiceRecord->iGPRSPDPAddress.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSPDPAddress.SetL( + origServiceRecord->iGPRSPDPAddress ); + } + if ( !origServiceRecord->iGPRSReqPrecedence.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSReqPrecedence.SetL( + origServiceRecord->iGPRSReqPrecedence ); + } + if ( !origServiceRecord->iGPRSReqDelay.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSReqDelay.SetL( + origServiceRecord->iGPRSReqDelay ); + } + if ( !origServiceRecord->iGPRSReqReliability.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSReqReliability.SetL( + origServiceRecord->iGPRSReqReliability ); + } + if ( !origServiceRecord->iGPRSReqPeakThroughput.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSReqPeakThroughput.SetL( + origServiceRecord->iGPRSReqPeakThroughput ); + } + if ( !origServiceRecord->iGPRSReqMeanThroughput.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSReqMeanThroughput.SetL( + origServiceRecord->iGPRSReqMeanThroughput ); + } + if ( !origServiceRecord->iGPRSMinPrecedence.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSMinPrecedence.SetL( + origServiceRecord->iGPRSMinPrecedence ); + } + if ( !origServiceRecord->iGPRSMinDelay.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSMinDelay.SetL( + origServiceRecord->iGPRSMinDelay ); + } + if ( !origServiceRecord->iGPRSMinReliability.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSMinReliability.SetL( + origServiceRecord->iGPRSMinReliability ); + } + if ( !origServiceRecord->iGPRSMinPeakThroughput.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSMinPeakThroughput.SetL( + origServiceRecord->iGPRSMinPeakThroughput ); + } + if ( !origServiceRecord->iGPRSMinMeanThroughput.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSMinMeanThroughput.SetL( + origServiceRecord->iGPRSMinMeanThroughput ); + } + if ( !origServiceRecord->iGPRSDataCompression.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSDataCompression.SetL( + origServiceRecord->iGPRSDataCompression ); + } + if ( !origServiceRecord->iGPRSHeaderCompression.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSHeaderCompression.SetL( + origServiceRecord->iGPRSHeaderCompression ); + } + if ( !origServiceRecord->iGPRSUseEdge.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSUseEdge.SetL( + origServiceRecord->iGPRSUseEdge ); + } + if ( !origServiceRecord->iGPRSAnonymousAccess.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSAnonymousAccess.SetL( + origServiceRecord->iGPRSAnonymousAccess ); + } + if ( !origServiceRecord->iGPRSIfParams.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIfParams.SetL( + origServiceRecord->iGPRSIfParams ); + } + if ( !origServiceRecord->iGPRSIfNetworks.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIfNetworks.SetL( + origServiceRecord->iGPRSIfNetworks ); + } + if ( !origServiceRecord->iGPRSIfPromptForAuth.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIfPromptForAuth.SetL( + origServiceRecord->iGPRSIfPromptForAuth ); + } + if ( !origServiceRecord->iGPRSIfAuthName.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIfAuthName.SetL( + origServiceRecord->iGPRSIfAuthName ); + } + if ( !origServiceRecord->iGPRSIfAuthPass.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIfAuthPass.SetL( + origServiceRecord->iGPRSIfAuthPass ); + } + if ( !origServiceRecord->iGPRSIfAuthRetries.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIfAuthRetries.SetL( + origServiceRecord->iGPRSIfAuthRetries ); + } + if ( !origServiceRecord->iGPRSIPNetMask.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIPNetMask.SetL( + origServiceRecord->iGPRSIPNetMask ); + } + if ( !origServiceRecord->iGPRSIPGateway.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIPGateway.SetL( + origServiceRecord->iGPRSIPGateway ); + } + if ( !origServiceRecord->iGPRSIPAddrFromServer.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIPAddrFromServer.SetL( + origServiceRecord->iGPRSIPAddrFromServer ); + } + if ( !origServiceRecord->iGPRSIPAddr.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIPAddr.SetL( + origServiceRecord->iGPRSIPAddr ); + } + if ( !origServiceRecord->iGPRSIPDNSAddrFromServer.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIPDNSAddrFromServer.SetL( + origServiceRecord->iGPRSIPDNSAddrFromServer ); + } + if ( !origServiceRecord->iGPRSIPNameServer1.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIPNameServer1.SetL( + origServiceRecord->iGPRSIPNameServer1 ); + } + if ( !origServiceRecord->iGPRSIPNameServer2.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIPNameServer2.SetL( + origServiceRecord->iGPRSIPNameServer2 ); + } + if ( !origServiceRecord->iGPRSIP6DNSAddrFromServer.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIP6DNSAddrFromServer.SetL( + origServiceRecord->iGPRSIP6DNSAddrFromServer ); + } + if ( !origServiceRecord->iGPRSIP6NameServer1.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIP6NameServer1.SetL( + origServiceRecord->iGPRSIP6NameServer1 ); + } + if ( !origServiceRecord->iGPRSIP6NameServer2.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIP6NameServer2.SetL( + origServiceRecord->iGPRSIP6NameServer2 ); + } + if ( !origServiceRecord->iGPRSIPAddrLeaseValidFrom.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIPAddrLeaseValidFrom.SetL( + origServiceRecord->iGPRSIPAddrLeaseValidFrom ); + } + if ( !origServiceRecord->iGPRSIPAddrLeaseValidTo.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSIPAddrLeaseValidTo.SetL( + origServiceRecord->iGPRSIPAddrLeaseValidTo ); + } + if ( !origServiceRecord->iGPRSConfigDaemonManagerName.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSConfigDaemonManagerName.SetL( + origServiceRecord->iGPRSConfigDaemonManagerName ); + } + if ( !origServiceRecord->iGPRSConfigDaemonName.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSConfigDaemonName.SetL( + origServiceRecord->iGPRSConfigDaemonName ); + } + if ( !origServiceRecord->iGPRSEnableLCPExtension.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSEnableLCPExtension.SetL( + origServiceRecord->iGPRSEnableLCPExtension ); + } + if ( !origServiceRecord->iGPRSDisablePlainTextAuth.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSDisablePlainTextAuth.SetL( + origServiceRecord->iGPRSDisablePlainTextAuth ); + } + if ( !origServiceRecord->iGPRSAPType.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSAPType.SetL( + origServiceRecord->iGPRSAPType ); + } + if ( !origServiceRecord->iGPRSQOSWarningTimeOut.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSQOSWarningTimeOut.SetL( + origServiceRecord->iGPRSQOSWarningTimeOut ); + } + if ( !origServiceRecord->iUmtsR99QoSAndOnTable.IsNull() ) + { + tempServiceRecordPtrToNew->iUmtsR99QoSAndOnTable.SetL( + origServiceRecord->iUmtsR99QoSAndOnTable ); + } + if ( !origServiceRecord->iGPRSR5DataCompression.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSR5DataCompression.SetL( + origServiceRecord->iGPRSR5DataCompression ); + } + if ( !origServiceRecord->iGPRSR5HeaderCompression.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSR5HeaderCompression.SetL( + origServiceRecord->iGPRSR5HeaderCompression ); + } + if ( !origServiceRecord->iGPRSPacketFlowIdentifier.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSPacketFlowIdentifier.SetL( + origServiceRecord->iGPRSPacketFlowIdentifier ); + } + if ( !origServiceRecord->iGPRSUmtsGprsRelease.IsNull() ) + { + tempServiceRecordPtrToNew->iGPRSUmtsGprsRelease.SetL( + origServiceRecord->iGPRSUmtsGprsRelease ); + } + + CleanupStack::Pop( serviceRecord ); + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_COPYSERVICERECORDL_EXIT ); + return serviceRecord; + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::ResetBearerRecords +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::ResetBearerRecords() + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_RESETBEARERRECORDS_ENTRY ); + + delete iPacketDataQoSRecord; + iPacketDataQoSRecord = NULL; + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_RESETBEARERRECORDS_EXIT ); + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::DeleteBearerRecordsL +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::DeleteBearerRecordsL() + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_DELETEBEARERRECORDSL_ENTRY ); + + if ( !TPtrC(iPacketDataQoSRecord->iRecordName).CompareF( KDefaultQosDataRecordName ) || + !TPtrC(iPacketDataQoSRecord->iRecordName).CompareF( KDefaultQosDataRecordNamewithSpace ) ) + { + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_DELETEBEARERRECORDSL_EXIT ); + return; + } + + iPacketDataQoSRecord->DeleteL( iSession ); + + OstTraceFunctionExit0( DUP1_CCMPLUGINPACKETDATA_DELETEBEARERRECORDSL_EXIT ); + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::CopyBearerRecordsL +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::CopyBearerRecordsL( CCmPluginBaseEng* aCopyInstance ) + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_COPYBEARERRECORDSL_ENTRY ); + + CCmPluginPacketData* plugin = static_cast( aCopyInstance ); + + CCDUmtsR99QoSAndOnTableRecord* qosRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdUmtsR99QoSAndOnTableRecord ) ); + CleanupStack::PushL( qosRecord ); + CopyRecordFieldsL( *iPacketDataQoSRecord, *qosRecord ); + CleanupStack::Pop( qosRecord ); + plugin->iPacketDataQoSRecord = qosRecord; + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_COPYBEARERRECORDSL_EXIT ); + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::GetBearerTableIdsToBeObserved +// --------------------------------------------------------------------------- +// +void CCmPluginPacketData::GetBearerTableIdsToBeObservedL( + RArray& aTableIdArray ) const + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERTABLEIDSTOBEOBSERVEDL_ENTRY ); + + aTableIdArray.AppendL( KCDTIdOutgoingGprsRecord ); + aTableIdArray.AppendL( KCDTIdUmtsR99QoSAndOnTableRecord ); + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERTABLEIDSTOBEOBSERVEDL_EXIT ); + } + +// --------------------------------------------------------------------------- +// CCmPluginPacketData::GetDefPriorityL +// --------------------------------------------------------------------------- +// +TUint32 CCmPluginPacketData::GetDefPriorityL( const TUint32 aAttribute ) const + { + OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETDEFPRIORITYL_ENTRY ); + + TUint32 retVal( KDataMobilitySelectionPolicyPriorityWildCard ); + + CCDGlobalBearerTypePriorizationRecord* priorityRecord = + new( ELeave ) CCDGlobalBearerTypePriorizationRecord( iBearerPriorityTableId ); + CleanupStack::PushL( priorityRecord ); + + priorityRecord->iServiceType.SetL( TPtrC( KCDTypeNameOutgoingWCDMA ) ); + + if ( priorityRecord->FindL( iSession ) ) + { + priorityRecord->LoadL( iSession ); + + switch ( aAttribute ) + { + case ECmDefaultPriority: + { + retVal = priorityRecord->iPriority; + } + break; + case ECmDefaultUiPriority: + { + retVal = priorityRecord->iUIPriority; + } + break; + default: + break; + } + } + CleanupStack::PopAndDestroy( priorityRecord ); + + OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETDEFPRIORITYL_EXIT ); + return retVal; + } + +// End of file