diff -r 13d7c31c74e0 -r b183ec05bd8c omaprovisioning/provisioning/IMAdapter/Src/WPIMUtil.cpp --- a/omaprovisioning/provisioning/IMAdapter/Src/WPIMUtil.cpp Thu Aug 19 10:44:50 2010 +0300 +++ b/omaprovisioning/provisioning/IMAdapter/Src/WPIMUtil.cpp Tue Aug 31 16:04:06 2010 +0300 @@ -26,9 +26,9 @@ #include #include -#include -#include -#include +#include +#include +#include #include #include "WPAdapterUtil.h" #include @@ -47,40 +47,43 @@ // CWPPecAdapter::FindGPRSL // ----------------------------------------------------------------------------- // -CApAccessPointItem* WPIMUtil::FindGPRSL( +TUint32 WPIMUtil::FindGPRSL( RPointerArray& aLinks ) { - CCommsDatabase* commDb = CCommsDatabase::NewL(); - CleanupStack::PushL( commDb ); - CApDataHandler* apHandler = CApDataHandler::NewLC( *commDb ); + TUint32 iapID=NULL; + RCmManagerExt cmmanagerExt; + cmmanagerExt.OpenL(); + CleanupClosePushL(cmmanagerExt); + TUint32 bearer = 0; + - for( TInt i( 0 ); i < aLinks.Count(); i++ ) - { - CWPCharacteristic* curr = aLinks[i]; - - TPckgBuf uidPckg; - for( TInt dataNum( 0 ); curr->Data( dataNum ).Length() == uidPckg.MaxLength(); dataNum++ ) - { - uidPckg.Copy( curr->Data( dataNum ) ); + for( TInt i( 0 ); i < aLinks.Count(); i++ ) + { + CWPCharacteristic* curr = aLinks[i]; - CApAccessPointItem* item = CApAccessPointItem::NewLC(); - // Read the access point pointed to by TO-NAPID or TO-PROXY - apHandler->AccessPointDataL( uidPckg(), *item ); - - if( item->BearerTypeL() == EApBearerTypeGPRS ) - { - CleanupStack::Pop(); // item - CleanupStack::PopAndDestroy( 2 ); // apHandler, commDb - return item; - } - CleanupStack::PopAndDestroy( item ); - } - } - + TPckgBuf uidPckg; + for( TInt dataNum( 0 ); curr->Data( dataNum ).Length() == uidPckg.MaxLength(); dataNum++ ) + { + uidPckg.Copy( curr->Data( dataNum ) ); + RCmConnectionMethodExt cm; + cm = cmmanagerExt.ConnectionMethodL( uidPckg() ); + CleanupClosePushL( cm ); + bearer = cm.GetIntAttributeL( CMManager::ECmBearerType ); + if(bearer == KUidPacketDataBearerType) + { + iapID = cm.GetIntAttributeL(CMManager::ECmIapId); + CleanupStack::PopAndDestroy(2); + return iapID; + } + CleanupStack::PopAndDestroy(); // cm + } + } + CleanupStack::PopAndDestroy(); //cmmanagerExt + // This leave is absolutely needed as it pops & destroys // data in CleanupStack - User::Leave( KErrNotFound ); - return NULL; + // User::Leave( KErrNotFound ); + return iapID; } // -----------------------------------------------------------------------------