diff -r 608f67c22514 -r 896e9dbc5f19 internetradio2.0/networkcontrollersrc/irfilteredapreader.cpp --- a/internetradio2.0/networkcontrollersrc/irfilteredapreader.cpp Tue Jul 06 14:07:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,361 +0,0 @@ -/* -* Copyright (c) 2008 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: Used to read in only access points with the desired characteristics. -* -*/ - - -#include -#include - -#include "irdebug.h" -#include "irfilteredapreader.h" - -_LIT( KDynIpAddress, "0.0.0.0" ); -_LIT( KEasyWLAN, "Easy WLAN" ); - -// --------------------------------------------------------------------------- -// CIRFilteredApReader::NewL -// --------------------------------------------------------------------------- -// -CIRFilteredApReader* CIRFilteredApReader::NewL( TInt aFilterFlags ) - { - IRLOG_DEBUG2( "CIRFilteredApReader::NewL - Filter flags = %d", aFilterFlags ); - CIRFilteredApReader* self = CIRFilteredApReader::NewLC( aFilterFlags ); - CleanupStack::Pop( self ); - IRLOG_DEBUG( "CIRFilteredApReader::NewL - Exiting." ); - return self; - } - - -// --------------------------------------------------------------------------- -// CIRFilteredApReader::NewLC -// --------------------------------------------------------------------------- -// -CIRFilteredApReader* CIRFilteredApReader::NewLC( TInt aFilterFlags ) - { - IRLOG_DEBUG2( "CIRFilteredApReader::NewLC - Filter flags = %d", aFilterFlags ); - CIRFilteredApReader* self = new( ELeave ) CIRFilteredApReader( aFilterFlags ); - CleanupStack::PushL( self ); - self->ConstructL(); - IRLOG_DEBUG( "CIRFilteredApReader::NewL - Exiting." ); - return self; - } - - -// --------------------------------------------------------------------------- -// CIRFilteredApReader::FirstRecordL -// --------------------------------------------------------------------------- -// -CCDIAPRecord* CIRFilteredApReader::FirstRecordL() - { - IRLOG_DEBUG( "CIRFilteredApReader::FirstRecordL - Entering" ); - CCDIAPRecord* record( NULL ); - iWapTableIndex = 0; - if ( iWapTable->iRecords.Count() > 0 ) - { - TBool loaded( EFalse ); - TRAPD( err, loaded = LoadCurrentApDetailsL() ); // may leave because of access rights etc. - if ( err == KErrNone && loaded && FilterL()) - { - record = static_cast( CCDRecordBase::CreateCopyRecordL( *iIapRecord ) ); - record->SetRecordId( iIapRecord->RecordId() ); - IRLOG_INFO2( "CIRFilteredApReader::FirstRecordL - %S accepted.", &record->iRecordName.GetL() ); - } - else if ( err != KErrNone || !loaded ) - { - IRLOG_ERROR3( "CIRFilteredApReader::FirstRecordL - Loading AP details failed (err=%d, loaded=%d).", - err, loaded ); - record = NextRecordL(); - } - else - { - IRLOG_INFO2( "CIRFilteredApReader::FirstRecordL - %S filtered out.", &iIapRecord->iRecordName.GetL() ); - record = NextRecordL(); - } - } - IRLOG_DEBUG( "CIRFilteredApReader::FirstRecordL - Exiting." ); - return record; - } - -// --------------------------------------------------------------------------- -// CIRFilteredApReader::NextRecordL -// --------------------------------------------------------------------------- -// -CCDIAPRecord* CIRFilteredApReader::NextRecordL() - { - IRLOG_DEBUG( "CIRFilteredApReader::NextRecordL - Entering"); - CCDIAPRecord* record( NULL ); - - while ( !record && MoveToNextRecord() ) - { - TBool loaded( EFalse ); - TRAPD( err, loaded = LoadCurrentApDetailsL() ); // may leave because of access rights etc. - if ( err == KErrNone && loaded && FilterL()) - { - record = static_cast( CCDRecordBase::CreateCopyRecordL( *iIapRecord ) ); - record->SetRecordId( iIapRecord->RecordId() ); - IRLOG_INFO2( "CIRFilteredApReader::FirstRecordL - %S accepted.", &record->iRecordName.GetL() ); - } - else if ( err != KErrNone || !loaded ) - { - IRLOG_ERROR3( "CIRFilteredApReader::NextRecordL - Loading AP details failed (err=%d, loaded=%d).", - err, loaded ); - } - else - { - IRLOG_INFO2( "CIRFilteredApReader::NextRecordL - %S filtered out.", &iIapRecord->iRecordName.GetL() ); - } - } - IRLOG_DEBUG( "CIRFilteredApReader::NextRecordL - Exiting." ); - return record; - } - -// --------------------------------------------------------------------------- -// CIRFilteredApReader::CIRFilteredApReader -// --------------------------------------------------------------------------- -// -CIRFilteredApReader::CIRFilteredApReader( TInt aFilterFlags ) - : iFilterFlags( aFilterFlags ) - { - IRLOG_DEBUG( "CIRFilteredApReader::CIRFilteredApReader" ); - } - -// --------------------------------------------------------------------------- -// CIRFilteredApReader::ConstructL -// --------------------------------------------------------------------------- -// -void CIRFilteredApReader::ConstructL() - { - IRLOG_DEBUG( "CIRFilteredApReader::ConstructL - Entering" ); - iDbSession = CMDBSession::NewL(CMDBSession::LatestVersion()); - - iWapTable = new (ELeave) CMDBRecordSet( KCDTIdWAPAccessPointRecord ); - iWapTable->LoadL( *iDbSession ); - IRLOG_DEBUG( "CIRFilteredApReader::ConstructL - Exiting." ); - } - - - -// --------------------------------------------------------------------------- -// CIRFilteredApReader::~CIRFilteredApReader -// --------------------------------------------------------------------------- -// -CIRFilteredApReader::~CIRFilteredApReader() - { - IRLOG_DEBUG( "CIRFilteredApReader::~CIRFilteredApReader - Entering" ); - delete iDbSession; - delete iWapTable; - delete iWapIpBearerRecord; - delete iIapRecord; - IRLOG_DEBUG( "CIRFilteredApReader::~CIRFilteredApReader - Exiting." ); - } - -// --------------------------------------------------------------------------- -// CIRFilteredApReader::CurrentRecordL -// --------------------------------------------------------------------------- -// -CCDWAPAccessPointRecord* CIRFilteredApReader::CurrentRecordL() const - { - IRLOG_DEBUG( "CIRFilteredApReader::CurrentRecordL - Entering" ); - if ( iWapTableIndex >= iWapTable->iRecords.Count() ) - { - IRLOG_FATAL( "CIRFilteredApReader::CurrentRecordL - WAP table overflow!" ); - User::Leave( KErrCorrupt ); - } - IRLOG_DEBUG( "CIRFilteredApReader::CurrentRecordL - Exiting" ); - return static_cast( iWapTable->iRecords[iWapTableIndex] ); - } - -// --------------------------------------------------------------------------- -// CIRFilteredApReader::MoveToNextRecord -// --------------------------------------------------------------------------- -// -TBool CIRFilteredApReader::MoveToNextRecord() - { - IRLOG_DEBUG( "CIRFilteredApReader::MoveToNextRecord - Entering" ); - TBool retMe(EFalse); - if ( ++iWapTableIndex < iWapTable->iRecords.Count() ) - { - IRLOG_INFO2( "CIRFilteredApReader::MoveToNextRecord - Current record %d", iWapTableIndex ); - retMe = ETrue; - } - else - { - IRLOG_INFO( "CIRFilteredApReader::MoveToNextRecord - No more records" ); - } - IRLOG_DEBUG( "CIRFilteredApReader::MoveToNextRecord - Exiting" ); - return retMe; - } - -// --------------------------------------------------------------------------- -// CIRFilteredApReader::LoadCurrentApDetailsL -// --------------------------------------------------------------------------- -// -TBool CIRFilteredApReader::LoadCurrentApDetailsL() - { - IRLOG_DEBUG( "CIRFilteredApReader::LoadCurrentApDetailsL - Entering" ); - delete iWapIpBearerRecord; - iWapIpBearerRecord = NULL; - - delete iIapRecord; - iIapRecord = NULL; - - // Load record from WAPIPBearer - iWapIpBearerRecord = static_cast( - CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) ); - - iWapIpBearerRecord->iWAPAccessPointId.SetL( CurrentRecordL()->RecordId() ); - TBool res = iWapIpBearerRecord->FindL( *iDbSession ); - - if ( res ) - { - iIapRecord = static_cast( - CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) ); - iIapRecord->SetRecordId( iWapIpBearerRecord->iWAPIAP ); - iIapRecord->LoadL( *iDbSession ); - } - IRLOG_DEBUG2( "CIRFilteredApReader::LoadCurrentApDetailsL - returning %d", res ); - return res; - } - -// --------------------------------------------------------------------------- -// CIRFilteredApReader::FilterL -// --------------------------------------------------------------------------- -// -TBool CIRFilteredApReader::FilterL() const - { - IRLOG_DEBUG2( "CIRFilteredApReader::FilterL - Service type %S", &iIapRecord->iServiceType.GetL() ); - TBool retMe( ETrue ); - - // The WAP check needs to be done only for CSD, GPRS, CDMA and LAN (because of Easy WLAN) - // APs. - if ( iIapRecord->iServiceType.GetL().Compare( TPtrC( KCDTypeNameDialOutISP ) ) == 0 || - iIapRecord->iServiceType.GetL().Compare( TPtrC( KCDTypeNameOutgoingWCDMA ) ) == 0 || -// iIapRecord->iServiceType.GetL().Compare( -// TPtrC( KCDTypeNameCDMA2000PacketService ) ) == 0 || - iIapRecord->iServiceType.GetL().Compare( TPtrC( KCDTypeNameLANService) ) == 0 ) - { - if ( iFilterFlags & KIRFilterWAPMandatory ) - { - retMe = FilterWAPMandatoryL(); - } - if ( retMe && iFilterFlags & KIRFilterWAPOnly ) - { - retMe = FilterWAPOnlyL(); - } - if ( retMe && iFilterFlags & KIRFilterEasyWLAN ) - { - retMe = FilterEasyWlanL(); - } - } - IRLOG_DEBUG2( "CIRFilteredApReader::FilterL - Returning %d", retMe ); - return retMe; - } - -// --------------------------------------------------------------------------- -// CIRFilteredApReader::FilterWAPMandatoryL -// --------------------------------------------------------------------------- -// -TBool CIRFilteredApReader::FilterWAPMandatoryL() const - { - IRLOG_DEBUG( "CIRFilteredApReader::FilterWAPMandatoryL - Entering" ); - TBool retMe( EFalse ); - - // First check the WAP_GATEWAY_ADDRESS of WAP_IP_BEARER table. - if ( iWapIpBearerRecord->iWAPGatewayAddress.IsNull() || - iWapIpBearerRecord->iWAPGatewayAddress.GetL().Length() == 0 || - iWapIpBearerRecord->iWAPGatewayAddress.GetL().Compare( KDynIpAddress ) == 0 ) - { - retMe = ETrue; - } - IRLOG_INFO3( "CIRFilteredApReader::FilterWAPMandatoryL - Returning %d for %S", retMe, &iIapRecord->iRecordName.GetL() ); - return retMe; - } - -// --------------------------------------------------------------------------- -// CIRFilteredApReader::FilterWAPOnlyL -// --------------------------------------------------------------------------- -// -TBool CIRFilteredApReader::FilterWAPOnlyL() const - { - IRLOG_DEBUG( "CIRFilteredApReader::FilterWAPOnlyL - Entering" ); - TBool retMe( EFalse ); - - IRLOG_DEBUG2( "CIRFilteredApReader::FilterWAPOnlyL - Service type %S", &iIapRecord->iServiceType.GetL() ); - if ( iIapRecord->iServiceType.GetL().Compare( TPtrC( KCDTypeNameDialOutISP ) ) == 0 ) - { - CCDDialOutISPRecord* dialOutRecord = static_cast( - CCDRecordBase::RecordFactoryL( KCDTIdDialOutISPRecord ) ); - CleanupStack::PushL( dialOutRecord ); - dialOutRecord->SetRecordId( iIapRecord->iService ); - dialOutRecord->LoadL( *iDbSession ); - if ( dialOutRecord->iType != EIspTypeWAPOnly ) - { - retMe = ETrue; - } - CleanupStack::PopAndDestroy( dialOutRecord ); - } - else if ( iIapRecord->iServiceType.GetL().Compare( TPtrC( KCDTypeNameOutgoingWCDMA ) ) == 0 ) - { - CCDWCDMAPacketServiceRecord* gprsRecord = static_cast( - CCDRecordBase::RecordFactoryL( KCDTIdOutgoingGprsRecord ) ); - CleanupStack::PushL( gprsRecord ); - gprsRecord->SetRecordId( iIapRecord->iService ); - gprsRecord->LoadL( *iDbSession ); - if ( gprsRecord->iGPRSAPType != EIspTypeWAPOnly ) - { - retMe = ETrue; - } - CleanupStack::PopAndDestroy( gprsRecord ); - } -// else if ( iIapRecord->iServiceType.GetL().Compare( -// TPtrC( KCDTypeNameCDMA2000PacketService ) ) == 0 ) -// { -// CCDCDMA2000PacketServiceRecord* cdmaRecord = static_cast( -// CCDRecordBase::RecordFactoryL( KCDTIdCDMA2000PacketServiceRecord ) ); -// CleanupStack::PushL( cdmaRecord ); -// cdmaRecord->SetRecordId( iIapRecord->iService ); -// cdmaRecord->LoadL( *iDbSession ); -// if ( cdmaRecord->iApType != EIspTypeWAPOnly ) -// { -// retMe = ETrue; -// } -// CleanupStack::PopAndDestroy( cdmaRecord ); -// } - else - { - retMe = ETrue; - } - - IRLOG_INFO3( "CIRFilteredApReader::FilterWAPOnlyL - Returning %d for %S", retMe, &iIapRecord->iRecordName.GetL() ); - return retMe; - } - -// --------------------------------------------------------------------------- -// CIRFilteredApReader::FilterEasyWlanL -// --------------------------------------------------------------------------- -// -TBool CIRFilteredApReader::FilterEasyWlanL() const - { - IRLOG_DEBUG( "CIRFilteredApReader::FilterEasyWlanL - Entering" ); - TBool retMe( EFalse ); - if ( iIapRecord->iRecordName.GetL().Compare( KEasyWLAN ) != 0 ) - { - retMe = ETrue; - } - IRLOG_INFO3( "CIRFilteredApReader::FilterEasyWlanL - Returning %d for %S", retMe, &iIapRecord->iRecordName.GetL() ); - return retMe; - } -