# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1263839629 -7200 # Node ID 086aae6fc07e776fb2096afafe2246f494ca023c # Parent 40cb640ef159a8a5c09d2bd7738252913cd775d2 Revision: 201001 Kit: 201003 diff -r 40cb640ef159 -r 086aae6fc07e bearermanagement/S60MCPR/inc/s60mcpr.h --- a/bearermanagement/S60MCPR/inc/s60mcpr.h Thu Jan 07 12:56:54 2010 +0200 +++ b/bearermanagement/S60MCPR/inc/s60mcpr.h Mon Jan 18 20:33:49 2010 +0200 @@ -62,6 +62,7 @@ EMPMPreferredCarrierAvailableMsg, EMPMStartIAPNotificationMsg, EMPMErrorNotificationMsg, + EMPMStartupErrorIgnoredMsg, }; public: typedef Messages::TMessageSigVoid TMPMReselectBestIAPCompletedMsg; @@ -70,6 +71,7 @@ typedef Messages::TMessageSigAny TMPMPreferredCarrierAvailableMsg; typedef Messages::TMessageSigNumber TMPMStartIAPNotificationMsg; typedef Messages::TMessageSigNumber TMPMErrorNotificationMsg; + typedef Messages::TMessageSigVoid TMPMStartupErrorIgnoredMsg; }; /** diff -r 40cb640ef159 -r 086aae6fc07e bearermanagement/S60MCPR/inc/s60mcpractivities.h --- a/bearermanagement/S60MCPR/inc/s60mcpractivities.h Thu Jan 07 12:56:54 2010 +0200 +++ b/bearermanagement/S60MCPR/inc/s60mcpractivities.h Mon Jan 18 20:33:49 2010 +0200 @@ -286,8 +286,6 @@ /** * CS60ConnectionRecoveryActivity is the S60 version of the ErrorRecovery -activity * that is responsible to process connection errors whenever it happens. - * - * -jl- TODO Either finalize or remove S60CConnectionRecoveryActivity after EC158(?) */ class CS60ConnectionRecoveryActivity : public S60MCprStates::CS60ErrorRecoveryActivity { @@ -526,17 +524,29 @@ DECLARE_SMELEMENT_FOOTER( TAwaitingMigrationRequestedOrRejectedOrCancel ) /** - * STATE: Watis for application response. - * @return ETrue if Migration Accepted or Rejected. + * STATE: Waits for application response. + * @return ETrue if Migration Accepted or Rejected or Start-up Error Ignored. */ - DECLARE_SMELEMENT_HEADER( TAwaitingMigrationAcceptedOrRejectedOrCancel, + DECLARE_SMELEMENT_HEADER( TAwaitingMigrationAcceptedOrRejectedOrStartupErrorIgnoredOrCancel, MeshMachine::TState, NetStateMachine::MState, TContext ) virtual TBool Accept(); - DECLARE_SMELEMENT_FOOTER( TAwaitingMigrationAcceptedOrRejectedOrCancel ) + DECLARE_SMELEMENT_FOOTER( TAwaitingMigrationAcceptedOrRejectedOrStartupErrorIgnoredOrCancel ) /** + * STATE: Waits for IPCPR rejected response that ends the mobility handshake. + * @return ETrue if Rejected. + */ + DECLARE_SMELEMENT_HEADER( TAwaitingMigrationRejected, + MeshMachine::TState, + NetStateMachine::MState, + TContext ) + virtual TBool Accept(); + DECLARE_SMELEMENT_FOOTER( TAwaitingMigrationRejected ) + + + /** * FORK/DECISION: Returns the KStartMobilityHandshake backwards or error * @return KStartMobilityHandshake backwards or error */ @@ -563,14 +573,15 @@ * 1. Application accepted, continue to send accept to policy server. * 2. Error * 3. Application rejected, continue to send reject to policy server. + * 4. Error process occured, consume the next rejected msg/accept msg. * @return TransitionTag of the selected transition. */ - DECLARE_SMELEMENT_HEADER( TNoTagOrErrorTagOrApplicationRejected, + DECLARE_SMELEMENT_HEADER( TNoTagOrErrorTagOrApplicationRejectedOrConsumeRejected, MeshMachine::TStateFork, NetStateMachine::MStateFork, TContext ) virtual TInt TransitionTag(); - DECLARE_SMELEMENT_FOOTER( TNoTagOrErrorTagOrApplicationRejected ) + DECLARE_SMELEMENT_FOOTER( TNoTagOrErrorTagOrApplicationRejectedOrConsumeRejected ) /** * FORK/DECISION: Decides whether to wait MPM actions or report an error. diff -r 40cb640ef159 -r 086aae6fc07e bearermanagement/S60MCPR/inc/s60mcprstates.h --- a/bearermanagement/S60MCPR/inc/s60mcprstates.h Thu Jan 07 12:56:54 2010 +0200 +++ b/bearermanagement/S60MCPR/inc/s60mcprstates.h Mon Jan 18 20:33:49 2010 +0200 @@ -55,6 +55,7 @@ const TInt KWaitPolicyServerResponse = 11051; const TInt KInformMigrationAvailable = 11052; const TInt KSendInitialApplicationReject = 11053; + const TInt KConsumeRejectedMsg = 11054; /** * Execution context */ diff -r 40cb640ef159 -r 086aae6fc07e bearermanagement/S60MCPR/src/s60mcpractivities.cpp --- a/bearermanagement/S60MCPR/src/s60mcpractivities.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/bearermanagement/S60MCPR/src/s60mcpractivities.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -315,8 +315,8 @@ // If the migration was acepted we loop again waiting for a new, preferred one NODEACTIVITY_ENTRY( KNoTag, CS60MobilityActivity::TInformMigrationCompleted, - S60MCprMobilityActivity::TAwaitingMigrationAcceptedOrRejectedOrCancel, - S60MCprMobilityActivity::TNoTagOrErrorTagOrApplicationRejected ) //-jl- TODO cancel here? + S60MCprMobilityActivity::TAwaitingMigrationAcceptedOrRejectedOrStartupErrorIgnoredOrCancel, + S60MCprMobilityActivity::TNoTagOrErrorTagOrApplicationRejectedOrConsumeRejected ) // Informs policy server that application has accepted the carrier THROUGH_NODEACTIVITY_ENTRY( KNoTag, CS60MobilityActivity::TSendApplicationAccept, @@ -325,6 +325,12 @@ THROUGH_NODEACTIVITY_ENTRY( S60MCprStates::KApplicationRejectedMigration, CS60MobilityActivity::TSendApplicationReject, TTag ) + // Waits for Migration Rejected the carrier -msg and consumes it, because MPM doesn't need it. + // MPM already received the ProcessError which is enough. + NODEACTIVITY_ENTRY( S60MCprStates::KConsumeRejectedMsg, + CS60MobilityActivity::TClearHandshakingFlag, + S60MCprMobilityActivity::TAwaitingMigrationRejected, + TTag ) // On error, we do not terminate the activity. // We need to inform the client and propose a new handshake should the client wish to continue // Shut down the layer, to release the rejected bearer diff -r 40cb640ef159 -r 086aae6fc07e bearermanagement/S60MCPR/src/s60mcprmobilityactivity.cpp --- a/bearermanagement/S60MCPR/src/s60mcprmobilityactivity.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/bearermanagement/S60MCPR/src/s60mcprmobilityactivity.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -140,23 +140,38 @@ // ----------------------------------------------------------------------------- - // S60MCprMobilityActivity::TAwaitingMigrationAcceptedOrRejectedOrCancel::Accept + // S60MCprMobilityActivity::TAwaitingMigrationAcceptedOrRejectedOrStartupErrorIgnoredOrCancel::Accept // ----------------------------------------------------------------------------- // - DEFINE_SMELEMENT( TAwaitingMigrationAcceptedOrRejectedOrCancel, NetStateMachine::MState, TContext ) - TBool TAwaitingMigrationAcceptedOrRejectedOrCancel::Accept() + DEFINE_SMELEMENT( TAwaitingMigrationAcceptedOrRejectedOrStartupErrorIgnoredOrCancel, NetStateMachine::MState, TContext ) + TBool TAwaitingMigrationAcceptedOrRejectedOrStartupErrorIgnoredOrCancel::Accept() { if ( (iContext.iMessage.IsMessage()) || (iContext.iMessage.IsMessage()) || + (iContext.iMessage.IsMessage()) || (iContext.iMessage.IsMessage()) ) { - S60MCPRLOGSTRING1("S60MCPR<%x>::TAwaitingMigrationAcceptedOrRejectedOrCancel::Accept()",(TInt*)&iContext.Node()) + S60MCPRLOGSTRING1("S60MCPR<%x>::TAwaitingMigrationAcceptedOrRejectedOrStartupErrorIgnoredOrCancel::Accept()",(TInt*)&iContext.Node()) return ETrue; } return EFalse; } - - + + // ----------------------------------------------------------------------------- + // S60MCprMobilityActivity::TAwaitingMigrationRejected::Accept + // ----------------------------------------------------------------------------- + // + DEFINE_SMELEMENT( TAwaitingMigrationRejected, NetStateMachine::MState, TContext ) + TBool TAwaitingMigrationRejected::Accept() + { + if ( iContext.iMessage.IsMessage() ) + { + S60MCPRLOGSTRING1("S60MCPR<%x>::TAwaitingMigrationRejected::Accept()",(TInt*)&iContext.Node()) + return ETrue; + } + return EFalse; + } + // ----------------------------------------------------------------------------- // S60MCprMobilityActivity::TNoTagOrInformMigrationAvailableBackwardsOrErrorOrCancel::TransitionTag // ----------------------------------------------------------------------------- @@ -229,30 +244,35 @@ // ----------------------------------------------------------------------------- - // S60MCprMobilityActivity::TNoTagOrErrorTagOrApplicationRejected::TransitionTag + // S60MCprMobilityActivity::TNoTagOrErrorTagOrApplicationRejectedOrConsumeRejected::TransitionTag // ----------------------------------------------------------------------------- // - DEFINE_SMELEMENT( TNoTagOrErrorTagOrApplicationRejected, NetStateMachine::MStateFork, TContext ) - TBool TNoTagOrErrorTagOrApplicationRejected::TransitionTag() + DEFINE_SMELEMENT( TNoTagOrErrorTagOrApplicationRejectedOrConsumeRejected, NetStateMachine::MStateFork, TContext ) + TBool TNoTagOrErrorTagOrApplicationRejectedOrConsumeRejected::TransitionTag() { if ( iContext.iNodeActivity->Error() ) { - S60MCPRLOGSTRING1("S60MCPR<%x>::TNoTagOrErrorTagOrApplicationRejected::TransitionTag() KErrorTag",(TInt*)&iContext.Node()) + S60MCPRLOGSTRING1("S60MCPR<%x>::TNoTagOrErrorTagOrApplicationRejectedOrConsumeRejected::TransitionTag() KErrorTag",(TInt*)&iContext.Node()) return MeshMachine::KErrorTag | NetStateMachine::EForward; } if ( message_cast(&iContext.iMessage) ) { - S60MCPRLOGSTRING1("S60MCPR<%x>::TNoTagOrErrorTagOrApplicationRejected::TransitionTag() KNoTag",(TInt*)&iContext.Node()) + S60MCPRLOGSTRING1("S60MCPR<%x>::TNoTagOrErrorTagOrApplicationRejectedOrConsumeRejected::TransitionTag() KNoTag",(TInt*)&iContext.Node()) return MeshMachine::KNoTag | NetStateMachine::EForward; } else if ( message_cast(&iContext.iMessage) ) { - S60MCPRLOGSTRING1("S60MCPR<%x>::TNoTagOrErrorTagOrApplicationRejected::TransitionTag() KApplicationRejectedMigration",(TInt*)&iContext.Node()) + S60MCPRLOGSTRING1("S60MCPR<%x>::TNoTagOrErrorTagOrApplicationRejectedOrConsumeRejected::TransitionTag() KApplicationRejectedMigration",(TInt*)&iContext.Node()) return S60MCprStates::KApplicationRejectedMigration | NetStateMachine::EForward; } + else if ( message_cast(&iContext.iMessage) ) + { + S60MCPRLOGSTRING1("S60MCPR<%x>::TNoTagOrErrorTagOrApplicationRejectedOrConsumeRejected::TransitionTag() KSwallowRejectedMsg",(TInt*)&iContext.Node()) + return S60MCprStates::KConsumeRejectedMsg | NetStateMachine::EForward; + } else { - S60MCPRLOGSTRING1("S60MCPR<%x>::TNoTagOrErrorTagOrApplicationRejected::TransitionTag() KCancelTag",(TInt*)&iContext.Node()) + S60MCPRLOGSTRING1("S60MCPR<%x>::TNoTagOrErrorTagOrApplicationRejectedOrConsumeRejected::TransitionTag() KCancelTag",(TInt*)&iContext.Node()) return MeshMachine::KCancelTag | NetStateMachine::EForward; } } diff -r 40cb640ef159 -r 086aae6fc07e bearermanagement/S60MCPR/src/s60mcprstates.cpp --- a/bearermanagement/S60MCPR/src/s60mcprstates.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/bearermanagement/S60MCPR/src/s60mcprstates.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -465,6 +465,15 @@ ( aCompletedRequest.iNeededAction == EIgnoreError || aCompletedRequest.iNeededAction == EDoReselection )) { + // Send error recovery propagated msg to self. This way a potential mobility + // handshake knows that there were a problem with migrated IAP. + // In case there isn't mobility active available this just results as stray msg + if ( aCompletedRequest.iNeededAction == EIgnoreError ) + { + iNode.SelfInterface().PostMessage( iNode.Id(), + TCFS60MCPRMessage::TMPMStartupErrorIgnoredMsg().CRef() ); + } + TCFS60MCPRMessage::TMPMProcessErrorCompletedMsg msg( (TInt)aCompletedRequest.iNeededAction ); iLastRequestOriginator.ReplyTo( iNode.Id(), msg ); iLastRequestOriginator.Close(); @@ -480,6 +489,8 @@ ASSERT( aCompletedRequest.iError != KErrNone ); err = aCompletedRequest.iError != KErrNone ? aCompletedRequest.iError : KErrGeneral; } + + // Send error msg indicatating the processerror has been completed. TEBase::TError msg( TCFS60MCPRMessage::TMPMProcessErrorCompletedMsg::Id(), err ); iLastRequestOriginator.ReplyTo( iNode.Id(), msg ); iLastRequestOriginator.Close(); diff -r 40cb640ef159 -r 086aae6fc07e bearermanagement/mpm/src/mpmconfirmdlgstarting.cpp --- a/bearermanagement/mpm/src/mpmconfirmdlgstarting.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/bearermanagement/mpm/src/mpmconfirmdlgstarting.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -262,7 +262,7 @@ //If reading of database failed we do not write back to the database to prevent random values if (errorCode == KErrNone) { - genConnSettings.iSeamlessnessHome = ECmSeamlessnessShowprogress; + genConnSettings.iCellularDataUsageHome = ECmCellularDataUsageAutomatic; TRAP_IGNORE(iServer.CommsDatAccess()->WriteGenConnSettingsL( genConnSettings )); } } diff -r 40cb640ef159 -r 086aae6fc07e bearermanagement/mpm/src/mpmiapselection.cpp --- a/bearermanagement/mpm/src/mpmiapselection.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/bearermanagement/mpm/src/mpmiapselection.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -505,9 +505,16 @@ ChooseBestIAPL( iChooseIapPref, availableIAPList, iNextBestExists ); TUint32 validateIapId = iChooseIapPref.IapId(); // Check if any suitable IAP's were found, if not then complete selection with error code - if (validateIapId == 0 ) + if ( validateIapId == 0 ) { - ChooseIapComplete( KErrNotFound, NULL ); + if ( iChooseIapPref.ConnType() == TMpmConnPref::EConnTypeDefault ) + { + ImplicitConnectionL(); + } + else + { + ChooseIapComplete( KErrNotFound, NULL ); + } CleanupStack::PopAndDestroy( &availableIAPList ); return; } diff -r 40cb640ef159 -r 086aae6fc07e bearermanagement/mpm/src/mpmserversession.cpp --- a/bearermanagement/mpm/src/mpmserversession.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/bearermanagement/mpm/src/mpmserversession.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -838,31 +838,26 @@ return EFalse; } - // Read global OCC seamlessness values from CommsDat's DefConn table + // Read global cellular data usage values from CommsDat's DefConn table genConnSettings = iMyServer.CommsDatAccess()->ReadGenConnSettingsL(); - TUint32 currentSeamlessness( genConnSettings.iSeamlessnessHome ); + TUint32 currentDataUsage( genConnSettings.iCellularDataUsageHome ); if ( iMyServer.IsVisitorNetwork() ) { - currentSeamlessness = genConnSettings.iSeamlessnessVisitor; + currentDataUsage = genConnSettings.iCellularDataUsageVisitor; } - if ( currentSeamlessness == ECmSeamlessnessShowprogress || - currentSeamlessness == ECmSeamlessnessFullySeamless ) + if ( currentDataUsage == ECmCellularDataUsageConfirm ) { - MPMLOGSTRING( "CMPMServerSession::IsConfirmFirstL - False" ) - isConfirmFirst = EFalse; + MPMLOGSTRING( "CMPMServerSession::IsConfirmFirstL - True" ) + isConfirmFirst = ETrue; } else { - // The currentSeamlessness value ECmSeamlessnessConfirmFirst - // matches with need to display confirmation dialog. - // - MPMLOGSTRING( - "CMPMServerSession::IsConfirmFirstL - True" ) - isConfirmFirst = ETrue; + MPMLOGSTRING( "CMPMServerSession::IsConfirmFirstL - False" ) } + return isConfirmFirst; } @@ -1106,7 +1101,7 @@ //If reading of database failed we do not write back to the database to prevent random values if (errorCode == KErrNone) { - genConnSettings.iSeamlessnessHome = ECmSeamlessnessShowprogress; + genConnSettings.iCellularDataUsageHome = ECmCellularDataUsageAutomatic; TRAP_IGNORE(MyServer().CommsDatAccess()->WriteGenConnSettingsL( genConnSettings )); } } @@ -3544,7 +3539,7 @@ MPMLOGSTRING( "CMPMServerSession::IsWlanOnlyL") - // Read global OCC seamlessness values from CommsDat's DefConn table + // Read global cellular data usage values from CommsDat's DefConn table genConnSettings = iMyServer.CommsDatAccess()->ReadGenConnSettingsL(); // Find out if new wlans can be prompted @@ -3560,14 +3555,14 @@ } // Find out is only WLAN connection is allowed in current network - TUint32 currentSeamlessness( genConnSettings.iSeamlessnessHome ); + TUint32 currentCellularDataUsage( genConnSettings.iCellularDataUsageHome ); if ( iMyServer.IsVisitorNetwork() ) { - currentSeamlessness = genConnSettings.iSeamlessnessVisitor; + currentCellularDataUsage = genConnSettings.iCellularDataUsageVisitor; } - if ( currentSeamlessness == ECmSeamlessnessDisabled ) + if ( currentCellularDataUsage == ECmCellularDataUsageDisabled ) { MPMLOGSTRING( "CMPMServerSession::IsWlanOnlyL: True" ) return ETrue; diff -r 40cb640ef159 -r 086aae6fc07e bearermanagement/mpm/src/mpmwlanquerydialog.cpp --- a/bearermanagement/mpm/src/mpmwlanquerydialog.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/bearermanagement/mpm/src/mpmwlanquerydialog.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -332,14 +332,39 @@ } else // WiFiProt::EWiFiNoAuto { - MPMLOGSTRING( "CMPMWlanQueryDialog::RunL No Auto, starting WPA key query" ) - iWlanQueryState = EWpaSettings; - iNotifier.StartNotifierAndGetResponse( iStatus, - KUidEasyWpaDlg, - iNotifWpaKey, - iNotifWpaKey ); - SetActive(); - return; + if( iNetworkPrefs().iSecMode == EWlanConnectionSecurityWep ) + { + MPMLOGSTRING( "CMPMWlanQueryDialog::RunL: No WPS, starting WEP key query" ); + iWlanQueryState = EWepSettings; + iNotifier.StartNotifierAndGetResponse( iStatus, + KUidEasyWepDlg, + iNotifWep, + iNotifWep ); + SetActive(); + return; + } + else if ( iNetworkPrefs().iSecMode == EWlanConnectionSecurityWpaPsk ) + { + MPMLOGSTRING( "CMPMWlanQueryDialog::RunL: No WPS, starting WPA key query" ); + iWlanQueryState = EWpaSettings; + iNotifier.StartNotifierAndGetResponse( iStatus, + KUidEasyWpaDlg, + iNotifWpaKey, + iNotifWpaKey ); + SetActive(); + return; + } + else if ( iNetworkPrefs().iSecMode == EWlanConnectionSecurityOpen ) + { + MPMLOGSTRING( "CMPMWlanQueryDialog::RunL: No WPS, sec mode open" ); + iStatus = KErrNone; + } + else + { + MPMLOGSTRING2( "CMPMWlanQueryDialog::RunL: No WPS, unsupported sec mode %d", + iNetworkPrefs().iSecMode ); + iStatus = KErrNotSupported; + } } } } diff -r 40cb640ef159 -r 086aae6fc07e cmmanager/cmmgr/Framework/Group/bld.inf --- a/cmmanager/cmmgr/Framework/Group/bld.inf Thu Jan 07 12:56:54 2010 +0200 +++ b/cmmanager/cmmgr/Framework/Group/bld.inf Mon Jan 18 20:33:49 2010 +0200 @@ -23,7 +23,9 @@ PRJ_EXPORTS // export localised loc file -../loc/cmmanager.loc MW_LAYER_LOC_EXPORT_PATH(cmmanager.loc) +../loc/cmmanager.loc MW_LAYER_LOC_EXPORT_PATH(cmmanager.loc) +../conf/cmmanager.confml MW_LAYER_CONFML(cmmanager.confml) +../conf/cmmanager_10207376.crml MW_LAYER_CRML(cmmanager_10207376.crml) PRJ_MMPFILES cmmanager.mmp diff -r 40cb640ef159 -r 086aae6fc07e cmmanager/cmmgr/Framework/Src/cmconnsettingsuiimpl.cpp --- a/cmmanager/cmmgr/Framework/Src/cmconnsettingsuiimpl.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/cmmanager/cmmgr/Framework/Src/cmconnsettingsuiimpl.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -319,6 +319,13 @@ } } + if ( aTitleStringResource == R_CMMANAGERUI_DEFAULT_CONNECTION_TITLE ) + { + // It is not allowed to choose Connection Methods + // in Default connection -dialog. + // + iOpenDestination = EFalse; + } if ( UserSelectionDlgL( listIndex, items, aSelection, aTitleStringResource, diff -r 40cb640ef159 -r 086aae6fc07e cmmanager/cmmgr/Framework/Src/cmmanagerimpl.cpp --- a/cmmanager/cmmgr/Framework/Src/cmmanagerimpl.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/cmmanager/cmmgr/Framework/Src/cmmanagerimpl.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -2331,11 +2331,11 @@ TInt value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdUsageOfWlan ); genConnSettings.iUsageOfWlan = TCmUsageOfWlan( value ); - value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdSeamlessnessHome ); - genConnSettings.iSeamlessnessHome = TCmSeamlessnessValue( value ); + value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdCellularDataUsageHome ); + genConnSettings.iCellularDataUsageHome = TCmCellularDataUsage( value ); - value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdSeamlessnessVisitor ); - genConnSettings.iSeamlessnessVisitor = TCmSeamlessnessValue( value ); + value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdCellularDataUsageVisitor ); + genConnSettings.iCellularDataUsageVisitor = TCmCellularDataUsage( value ); } TInt typeVal = aDCSetting.iType; @@ -2355,8 +2355,8 @@ dcRcd->SetRecordId( KCDNewRecordRequest ); SET_INT_FIELD(dcRcd, KCDTIdUsageOfWlan, genConnSettings.iUsageOfWlan ); - SET_INT_FIELD(dcRcd, KCDTIdSeamlessnessHome, genConnSettings.iSeamlessnessHome ); - SET_INT_FIELD(dcRcd, KCDTIdSeamlessnessVisitor, genConnSettings.iSeamlessnessVisitor ); + SET_INT_FIELD(dcRcd, KCDTIdCellularDataUsageHome, genConnSettings.iCellularDataUsageHome ); + SET_INT_FIELD(dcRcd, KCDTIdCellularDataUsageVisitor, genConnSettings.iCellularDataUsageVisitor ); CLOG_WRITE_FORMAT( "Set default connection type: [%d]", typeVal ); SET_INT_FIELD( dcRcd, @@ -2427,11 +2427,11 @@ TInt value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdUsageOfWlan ); aGenConnSettings.iUsageOfWlan = TCmUsageOfWlan( value ); - value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdSeamlessnessHome ); - aGenConnSettings.iSeamlessnessHome = TCmSeamlessnessValue( value ); + value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdCellularDataUsageHome ); + aGenConnSettings.iCellularDataUsageHome = TCmCellularDataUsage( value ); - value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdSeamlessnessVisitor ); - aGenConnSettings.iSeamlessnessVisitor = TCmSeamlessnessValue( value ); + value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdCellularDataUsageVisitor ); + aGenConnSettings.iCellularDataUsageVisitor = TCmCellularDataUsage( value ); CleanupStack::PopAndDestroy( defConnRecordSet ); RollbackTransaction(); @@ -2467,8 +2467,8 @@ } TInt usageOfNewWlan = aGenConnSettings.iUsageOfWlan; - TInt seamlessnessHome = aGenConnSettings.iSeamlessnessHome; - TInt seamlessnessVisitor = aGenConnSettings.iSeamlessnessVisitor; + TInt cellularDataUsageHome = aGenConnSettings.iCellularDataUsageHome; + TInt cellularDataUsageVisitor = aGenConnSettings.iCellularDataUsageVisitor; // Delete the old record for ( TInt i = 0; i < defConnRecordSet->iRecords.Count(); ++i ) @@ -2489,11 +2489,11 @@ CLOG_WRITE_1( "Set wlan usage: [%d]", usageOfNewWlan ); SET_INT_FIELD(dcRcd, KCDTIdUsageOfWlan, usageOfNewWlan ); - CLOG_WRITE_1( "Set seamlessnessHome: [%d]", seamlessnessHome ); - SET_INT_FIELD(dcRcd, KCDTIdSeamlessnessHome, seamlessnessHome ); + CLOG_WRITE_1( "Set cellularDataUsageHome: [%d]", cellularDataUsageHome ); + SET_INT_FIELD(dcRcd, KCDTIdCellularDataUsageHome, cellularDataUsageHome ); - CLOG_WRITE_1( "Set seamlessnessVisitor: [%d]", seamlessnessVisitor ); - SET_INT_FIELD(dcRcd, KCDTIdSeamlessnessVisitor, seamlessnessVisitor ); + CLOG_WRITE_1( "Set cellularDataUsageVisitor: [%d]", cellularDataUsageVisitor ); + SET_INT_FIELD(dcRcd, KCDTIdCellularDataUsageVisitor, cellularDataUsageVisitor ); dcRcd->StoreL( Session() ); CleanupStack::PopAndDestroy( dcRcd ); @@ -2873,8 +2873,8 @@ LOGGER_ENTERFN( "CCmManagerImpl::SetGenConnSettingsToDefault" ); aGenConnSettings.iUsageOfWlan = ECmUsageOfWlanKnown; - aGenConnSettings.iSeamlessnessHome = ECmSeamlessnessConfirmFirst; - aGenConnSettings.iSeamlessnessVisitor = ECmSeamlessnessConfirmFirst; + aGenConnSettings.iCellularDataUsageHome = ECmCellularDataUsageAutomatic; + aGenConnSettings.iCellularDataUsageVisitor = ECmCellularDataUsageConfirm; } diff -r 40cb640ef159 -r 086aae6fc07e cmmanager/cmmgr/Framework/conf/cmmanager.confml Binary file cmmanager/cmmgr/Framework/conf/cmmanager.confml has changed diff -r 40cb640ef159 -r 086aae6fc07e cmmanager/cmmgr/Framework/conf/cmmanager_10207376.crml Binary file cmmanager/cmmgr/Framework/conf/cmmanager_10207376.crml has changed diff -r 40cb640ef159 -r 086aae6fc07e cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpluginwlan.cpp --- a/cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpluginwlan.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpluginwlan.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -68,7 +68,11 @@ const TInt KWlanLastSocketClosedTimeout = -1; const TUint32 KEndOfArray = KMaxTUint; -/// Modem bearer names for WLAN connection methods +// Daemon manager name for Easy WLAN IAP +_LIT( KHotspotDaemonManagerName, "NetCfgExtnHotSpot" ); +_LIT( KEasyWlanName, "Easy WLAN" ); + +// Modem bearer names for WLAN connection methods _LIT( KModemBearerWLAN, "WLANBearer" ); _LIT( KWlanFileIcons, "z:cmpluginwlan.mbm" ); @@ -2741,6 +2745,24 @@ } delete daemonName; } + + // check if Easy WLAN IAP since it has different config daemon + // manager name + HBufC* iapName = GetStringAttributeL( ECmName ); + if ( iapName ) + { + CleanupStack::PushL( iapName ); + if ( iapName->Compare( KEasyWlanName ) == 0 ) + { + SetStringAttributeL( ECmConfigDaemonManagerName, + KHotspotDaemonManagerName ); + SetStringAttributeL( ECmConfigDaemonName, + KConfigDaemonName ); + CleanupStack::PopAndDestroy( iapName ); + return; + } + CleanupStack::PopAndDestroy( iapName ); + } // use DHCP if we can TBool ipfromSrv = GetBoolAttributeL( ECmIPAddFromServer ); diff -r 40cb640ef159 -r 086aae6fc07e cmmanager/cmmgr/database/inc/datamobilitycommsdattypes.h --- a/cmmanager/cmmgr/database/inc/datamobilitycommsdattypes.h Thu Jan 07 12:56:54 2010 +0200 +++ b/cmmanager/cmmgr/database/inc/datamobilitycommsdattypes.h Mon Jan 18 20:33:49 2010 +0200 @@ -456,8 +456,8 @@ #define DEFCONN_TYPE _S("DefConnType") #define DEFCONN_UID _S("DefConnUId") #define USAGEOFWLAN _S("UsageOfWlan") -#define SEAMLESSNESS_HOME _S("SeamlessnessHome") -#define SEAMLESSNESS_VISITOR _S("SeamlessnessVisitor") +#define CELLULAR_DATA_USAGE_HOME _S("CellularDataUsageHome") +#define CELLULAR_DATA_USAGE_VISITOR _S("CellularDataUsageVisitor") NONSHARABLE_CLASS( CCDDefConnRecord ) : public CommsDat::CCDRecordBase { @@ -476,8 +476,8 @@ CommsDat::CMDBField iDefConnType; CommsDat::CMDBField iDefConnUid; CommsDat::CMDBField iUsageOfWlan; - CommsDat::CMDBField iSeamlessnessHome; - CommsDat::CMDBField iSeamlessnessVisitor; + CommsDat::CMDBField iCellularDataUsageHome; + CommsDat::CMDBField iCellularDataUsageVisitor; private: diff -r 40cb640ef159 -r 086aae6fc07e cmmanager/cmmgr/database/src/cmmanagertableformats.cpp --- a/cmmanager/cmmgr/database/src/cmmanagertableformats.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/cmmanager/cmmgr/database/src/cmmanagertableformats.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -97,8 +97,8 @@ X_REGISTER_ATTRIBUTE( CCDDefConnRecord, iDefConnType, TMDBNum ) X_REGISTER_ATTRIBUTE( CCDDefConnRecord, iDefConnUid, TMDBNum ) X_REGISTER_ATTRIBUTE( CCDDefConnRecord, iUsageOfWlan, TMDBNum ) - X_REGISTER_ATTRIBUTE( CCDDefConnRecord, iSeamlessnessHome, TMDBNum ) - X_REGISTER_ATTRIBUTE( CCDDefConnRecord, iSeamlessnessVisitor, TMDBNum ) + X_REGISTER_ATTRIBUTE( CCDDefConnRecord, iCellularDataUsageHome, TMDBNum ) + X_REGISTER_ATTRIBUTE( CCDDefConnRecord, iCellularDataUsageVisitor, TMDBNum ) X_REGISTER_ATTRIBUTE( CCDRecordBase, iRecordTag, TMDBNum ) X_REGISTER_ATTRIBUTE( CCDRecordBase, iRecordName, TMDBText ) END_ATTRIBUTE_TABLE() @@ -110,8 +110,8 @@ { KCDTIdDefConnType, EUint32, ENoAttrs, DEFCONN_TYPE }, { KCDTIdDefConnUid, EUint32, ENoAttrs, DEFCONN_UID }, { KCDTIdUsageOfWlan, EUint32, ENoAttrs, USAGEOFWLAN }, - { KCDTIdSeamlessnessHome, EUint32, ENoAttrs, SEAMLESSNESS_HOME }, - { KCDTIdSeamlessnessVisitor, EUint32, ENoAttrs, SEAMLESSNESS_VISITOR }, + { KCDTIdCellularDataUsageHome, EUint32, ENoAttrs, CELLULAR_DATA_USAGE_HOME }, + { KCDTIdCellularDataUsageVisitor, EUint32, ENoAttrs, CELLULAR_DATA_USAGE_VISITOR }, { 0, 0, ENoAttrs, KCDNull } }; @@ -129,10 +129,10 @@ | KCDTIdDefConnUid ), iUsageOfWlan( ( aElementId & KCDMaskShowRecordType ) | KCDTIdUsageOfWlan ), - iSeamlessnessHome( ( aElementId & KCDMaskShowRecordType ) - | KCDTIdSeamlessnessHome ), - iSeamlessnessVisitor( ( aElementId & KCDMaskShowRecordType ) - | KCDTIdSeamlessnessVisitor ) + iCellularDataUsageHome( ( aElementId & KCDMaskShowRecordType ) + | KCDTIdCellularDataUsageHome ), + iCellularDataUsageVisitor( ( aElementId & KCDMaskShowRecordType ) + | KCDTIdCellularDataUsageVisitor ) {}; EXPORT_C TMDBElementId @@ -157,10 +157,10 @@ ENoAttrs, DEFCONN_UID ), SGenericRecordTypeInfo( KCDTIdUsageOfWlan, EUint32, ENoAttrs, USAGEOFWLAN ), - SGenericRecordTypeInfo( KCDTIdSeamlessnessHome, EUint32, - ENoAttrs, SEAMLESSNESS_HOME ), - SGenericRecordTypeInfo( KCDTIdSeamlessnessVisitor, EUint32, - ENoAttrs, SEAMLESSNESS_VISITOR ), + SGenericRecordTypeInfo( KCDTIdCellularDataUsageHome, EUint32, + ENoAttrs, CELLULAR_DATA_USAGE_HOME ), + SGenericRecordTypeInfo( KCDTIdCellularDataUsageVisitor, EUint32, + ENoAttrs, CELLULAR_DATA_USAGE_VISITOR ), SGenericRecordTypeInfo( 0, 0, ENoAttrs, KCDNull ) }; diff -r 40cb640ef159 -r 086aae6fc07e cmmanager/gsconnsettingsplugin/src/gsconnsettingspluginmodel.cpp --- a/cmmanager/gsconnsettingsplugin/src/gsconnsettingspluginmodel.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/cmmanager/gsconnsettingsplugin/src/gsconnsettingspluginmodel.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -116,8 +116,8 @@ //Print out loaded settings OstTrace1( TRACE_NORMAL, CSP_LOADSETTINGSL_USAGE_OF_NEW_WLAN_PARAM_TRACE, "iSettings.iUsageOfWlan=%d", iSettings.iUsageOfWlan ); - OstTrace1( TRACE_NORMAL, CSP_LOADSETTINGSL_SEAMLESSNESS_VISITOR_PARAM_TRACE, "iSeamlessnessVisitor=%d", iSettings.iSeamlessnessVisitor ); - OstTrace1( TRACE_NORMAL, CSP_LOADSETTINGSL_SEAMLESSNESS_HOME_PARAM_TRACE, "iSettings.iSeamlessnessHome=%d", iSettings.iSeamlessnessHome ); + OstTrace1( TRACE_NORMAL, CSP_LOADSETTINGSL_CELLULAR_DATA_USAGE_VISITOR_PARAM_TRACE, "iSettings.iCellularDataUsageVisitor=%d", iSettings.iCellularDataUsageVisitor ); + OstTrace1( TRACE_NORMAL, CSP_LOADSETTINGSL_CELLULAR_DATA_USAGE_HOME_PARAM_TRACE, "iSettings.iCellularDataUsageHome=%d", iSettings.iCellularDataUsageHome ); } // ---------------------------------------------------------------------------- @@ -136,8 +136,8 @@ //Print out saved settings OstTrace1( TRACE_NORMAL, CSP_SAVESETTINGSL_USAGE_OF_NEW_WLAN_PARAM_TRACE, "iSettings.iUsageOfWlan=%d", iSettings.iUsageOfWlan ); - OstTrace1( TRACE_NORMAL, CSP_SAVESETTINGSL_SEAMLESSNESS_VISITOR_PARAM_TRACE, "iSeamlessnessVisitor=%d", iSettings.iSeamlessnessVisitor ); - OstTrace1( TRACE_NORMAL, CSP_SAVESETTINGSL_SEAMLESSNESS_HOME_PARAM_TRACE, "iSettings.iSeamlessnessHome=%d", iSettings.iSeamlessnessHome ); + OstTrace1( TRACE_NORMAL, CSP_SAVESETTINGSL_CELLULAR_DATA_USAGE_VISITOR_PARAM_TRACE, "iSettings.iCellularDataUsageVisitor=%d", iSettings.iCellularDataUsageVisitor ); + OstTrace1( TRACE_NORMAL, CSP_SAVESETTINGSL_CELLULAR_DATA_USAGE_HOME_PARAM_TRACE, "iSettings.iCellularDataUsageHome=%d", iSettings.iCellularDataUsageHome ); } // ---------------------------------------------------------------------------- @@ -178,19 +178,18 @@ TInt mappedValue = 0; //Map to correct index - switch ( iSettings.iSeamlessnessVisitor ) + switch ( iSettings.iCellularDataUsageVisitor ) { - case ECmSeamlessnessShowprogress: - case ECmSeamlessnessFullySeamless: - mappedValue = EDataUsageAbroadAutomatic; //Automatic + case ECmCellularDataUsageAutomatic: + mappedValue = EDataUsageAbroadAutomatic; // Automatic break; - case ECmSeamlessnessConfirmFirst: - mappedValue = EDataUsageAbroadConfirm; //Confirm + case ECmCellularDataUsageConfirm: + mappedValue = EDataUsageAbroadConfirm; // Confirm break; - case ECmSeamlessnessDisabled: - mappedValue = EDataUsageAbroadWlanOnly; //Wlan only + case ECmCellularDataUsageDisabled: + mappedValue = EDataUsageAbroadWlanOnly; // Wlan only break; default: @@ -210,19 +209,18 @@ TInt mappedValue = 0; //Map to correct index - switch ( iSettings.iSeamlessnessHome ) + switch ( iSettings.iCellularDataUsageHome ) { - case ECmSeamlessnessShowprogress: - case ECmSeamlessnessFullySeamless: - mappedValue = EDataUsageHomeNwAutomatic; //Automatic + case ECmCellularDataUsageAutomatic: + mappedValue = EDataUsageHomeNwAutomatic; // Automatic break; - case ECmSeamlessnessConfirmFirst: - mappedValue = EDataUsageHomeNwConfirm; //Confirm + case ECmCellularDataUsageConfirm: + mappedValue = EDataUsageHomeNwConfirm; // Confirm break; - case ECmSeamlessnessDisabled: - mappedValue = EDataUsageHomeNwWlanOnly; //Wlan only + case ECmCellularDataUsageDisabled: + mappedValue = EDataUsageHomeNwWlanOnly; // Wlan only break; default: @@ -266,14 +264,14 @@ switch ( aValue ) { case EDataUsageAbroadAutomatic: //Automatic - iSettings.iSeamlessnessVisitor = ECmSeamlessnessShowprogress; + iSettings.iCellularDataUsageVisitor = ECmCellularDataUsageAutomatic; break; case EDataUsageAbroadConfirm: //Confirm - iSettings.iSeamlessnessVisitor = ECmSeamlessnessConfirmFirst; + iSettings.iCellularDataUsageVisitor = ECmCellularDataUsageConfirm; break; case EDataUsageAbroadWlanOnly: //Wlan only - iSettings.iSeamlessnessVisitor = ECmSeamlessnessDisabled; + iSettings.iCellularDataUsageVisitor = ECmCellularDataUsageDisabled; break; default: @@ -292,15 +290,15 @@ switch ( aValue ) { case EDataUsageHomeNwAutomatic: //Automatic - iSettings.iSeamlessnessHome = ECmSeamlessnessShowprogress; + iSettings.iCellularDataUsageHome = ECmCellularDataUsageAutomatic; break; case EDataUsageHomeNwConfirm: //Confirm - iSettings.iSeamlessnessHome = ECmSeamlessnessConfirmFirst; + iSettings.iCellularDataUsageHome = ECmCellularDataUsageConfirm; break; case EDataUsageHomeNwWlanOnly: //Wlan only - iSettings.iSeamlessnessHome = ECmSeamlessnessDisabled; + iSettings.iCellularDataUsageHome = ECmCellularDataUsageDisabled; break; default: diff -r 40cb640ef159 -r 086aae6fc07e cmmanager/gsconnsettingsplugin/traces/OstTraceDefinitions.h --- a/cmmanager/gsconnsettingsplugin/traces/OstTraceDefinitions.h Thu Jan 07 12:56:54 2010 +0200 +++ b/cmmanager/gsconnsettingsplugin/traces/OstTraceDefinitions.h Mon Jan 18 20:33:49 2010 +0200 @@ -1,20 +1,3 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the License "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: -* -*/ - #ifndef __OSTTRACEDEFINITIONS_H__ #define __OSTTRACEDEFINITIONS_H__ #include diff -r 40cb640ef159 -r 086aae6fc07e cmmanager/gsconnsettingsplugin/traces/gsconnsettingspluginmodelTraces.h --- a/cmmanager/gsconnsettingsplugin/traces/gsconnsettingspluginmodelTraces.h Thu Jan 07 12:56:54 2010 +0200 +++ b/cmmanager/gsconnsettingsplugin/traces/gsconnsettingspluginmodelTraces.h Mon Jan 18 20:33:49 2010 +0200 @@ -1,4 +1,4 @@ -// Created by TraceCompiler1.1.6 +// Created by TraceCompiler 1.3.1 // DO NOT EDIT, CHANGES WILL BE LOST #ifndef __GSCONNSETTINGSPLUGINMODELTRACES_H__ @@ -6,14 +6,12 @@ #define KOstTraceComponentID 0x200255b8 -#define CSP_LOADSETTINGSL_USAGE_OF_NEW_WLAN_PARAM_TRACE 0x30002 -#define CSP_LOADSETTINGSL_FORCED_ROAMING_PARAM_TRACE 0x30003 -#define CSP_LOADSETTINGSL_SEAMLESSNESS_VISITOR_PARAM_TRACE 0x30004 -#define CSP_LOADSETTINGSL_SEAMLESSNESS_HOME_PARAM_TRACE 0x30005 -#define CSP_SAVESETTINGSL_USAGE_OF_NEW_WLAN_PARAM_TRACE 0x30007 -#define CSP_SAVESETTINGSL_FORCED_ROAMING_PARAM_TRACE 0x30008 -#define CSP_SAVESETTINGSL_SEAMLESSNESS_VISITOR_PARAM_TRACE 0x30009 -#define CSP_SAVESETTINGSL_SEAMLESSNESS_HOME_PARAM_TRACE 0x3000a +#define CSP_LOADSETTINGSL_USAGE_OF_NEW_WLAN_PARAM_TRACE 0x30001 +#define CSP_SAVESETTINGSL_USAGE_OF_NEW_WLAN_PARAM_TRACE 0x30004 +#define CSP_LOADSETTINGSL_CELLULAR_DATA_USAGE_VISITOR_PARAM_TRACE 0x30007 +#define CSP_LOADSETTINGSL_CELLULAR_DATA_USAGE_HOME_PARAM_TRACE 0x30008 +#define CSP_SAVESETTINGSL_CELLULAR_DATA_USAGE_VISITOR_PARAM_TRACE 0x30009 +#define CSP_SAVESETTINGSL_CELLULAR_DATA_USAGE_HOME_PARAM_TRACE 0x3000a #endif diff -r 40cb640ef159 -r 086aae6fc07e connectionmonitoring/connectionmonitorui/help/inc/cmon.hlp.hrh --- a/connectionmonitoring/connectionmonitorui/help/inc/cmon.hlp.hrh Thu Jan 07 12:56:54 2010 +0200 +++ b/connectionmonitoring/connectionmonitorui/help/inc/cmon.hlp.hrh Mon Jan 18 20:33:49 2010 +0200 @@ -2,9 +2,9 @@ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available -* under the terms of the License "Symbian Foundation License v1.0" +* under the terms of "Eclipse Public License v1.0" * which accompanies this distribution, and is available -* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * * Initial Contributors: * Nokia Corporation - initial contribution. diff -r 40cb640ef159 -r 086aae6fc07e connectionmonitoring/connectionmonitorui/inc/ConnectionInfoBase.h --- a/connectionmonitoring/connectionmonitorui/inc/ConnectionInfoBase.h Thu Jan 07 12:56:54 2010 +0200 +++ b/connectionmonitoring/connectionmonitorui/inc/ConnectionInfoBase.h Mon Jan 18 20:33:49 2010 +0200 @@ -193,6 +193,13 @@ TConnectionStatus GetStatus() const; /** + * Refresh status of connection + * @param aConnectionStatus new status of connection + */ + void RefreshConnectionStatus( + const TInt aConnectionStatus ); + + /** * Gives back the name of connection * @return the name of connection */ @@ -261,13 +268,6 @@ void RefreshConnectionStatus(); /** - * Refresh status of connection - * @param aConnectionStatus new status of connection - */ - void RefreshConnectionStatus( - const TConnectionStatus aConnectionStatus ); - - /** * Refresh amount of sent and received data of connection */ void RefreshSentReceivedDataL(); diff -r 40cb640ef159 -r 086aae6fc07e connectionmonitoring/connectionmonitorui/inc/ConnectionMonitorUiDetailsView.h --- a/connectionmonitoring/connectionmonitorui/inc/ConnectionMonitorUiDetailsView.h Thu Jan 07 12:56:54 2010 +0200 +++ b/connectionmonitoring/connectionmonitorui/inc/ConnectionMonitorUiDetailsView.h Mon Jan 18 20:33:49 2010 +0200 @@ -50,7 +50,7 @@ * @param aConnectionArray array containing connection list */ CConnectionMonitorUiDetailsView( - const CConnectionArray* const aConnectionArray ); + CConnectionArray* const aConnectionArray ); /** * EPOC second phase constructor. @@ -136,7 +136,7 @@ /** * Array contains connections */ - const CConnectionArray* const iConnectionArray; // Not Owned. + CConnectionArray* const iConnectionArray; // Not Owned. /** * The index of selected connection diff -r 40cb640ef159 -r 086aae6fc07e connectionmonitoring/connectionmonitorui/src/ConnectionInfoBase.cpp --- a/connectionmonitoring/connectionmonitorui/src/ConnectionInfoBase.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/connectionmonitoring/connectionmonitorui/src/ConnectionInfoBase.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -216,13 +216,7 @@ // CDesCArrayFlat* CConnectionInfoBase::GetDetailsArray() const { - CDesCArrayFlat* array = NULL; - if ( ( iConnectionStatus == EConnectionSuspended ) || - ( iConnectionStatus == EConnectionCreated ) ) - { - array = iDetailsArray; - } - return array; + return iDetailsArray; } // --------------------------------------------------------- @@ -301,7 +295,7 @@ // --------------------------------------------------------- // void CConnectionInfoBase::RefreshConnectionStatus( - const TConnectionStatus aConnectionStatus ) + const TInt aConnectionStatus ) { CMUILOGGER_ENTERFN( "RefreshConnectionStatus" ); CMUILOGGER_WRITE_F( "RefreshConnectionStatus aConnectionStatus %d", @@ -317,9 +311,8 @@ CMUILOGGER_WRITE("1"); iConnectionStatus = EConnectionCreated; } - else if ( ( iConnectionStatus == EConnectionClosing ) && - ( ( aConnectionStatus == KConnectionClosed ) || - ( aConnectionStatus == KLinkLayerClosed ) ) ) + else if ( ( aConnectionStatus == KConnectionClosed ) || + ( aConnectionStatus == KLinkLayerClosed ) ) { CMUILOGGER_WRITE("2"); iConnectionStatus = EConnectionClosed; diff -r 40cb640ef159 -r 086aae6fc07e connectionmonitoring/connectionmonitorui/src/ConnectionMonitorUiAppUi.cpp --- a/connectionmonitoring/connectionmonitorui/src/ConnectionMonitorUiAppUi.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/connectionmonitoring/connectionmonitorui/src/ConnectionMonitorUiAppUi.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "ConnectionMonitorUi.hrh" #include "ConnectionMonitorUiAppUi.h" @@ -317,13 +318,11 @@ connectionInfo = ( *iConnectionArray )[index]; if ( iView->Id() == KDetailsViewId ) - { - CConnectionMonitorUiDetailsView* view = (CConnectionMonitorUiDetailsView*) iView; - if ( view->GetSelectedConnection() == ((TUint) index) ) - { - view->CloseViewL(); - activateMainView = ETrue; - } + { + // Mark the connection as closed and refresh details view. + // It will change the status there. + connectionInfo->RefreshConnectionStatus( KConnectionClosed ); + connectionInfo->RefreshDetailsArrayL(); } else // MainView { @@ -332,8 +331,10 @@ { ShowConnectionSummaryInformationNoteL( connectionInfo ); } - } - iConnectionArray->Delete( connectionId ); + // Mark the connection as closed. When the timer ticks the next + // time the marked connection is deleted and removed from the main view. + connectionInfo->RefreshConnectionStatus( KConnectionClosed ); + } CMUILOGGER_WRITE_F( "Deleted: %d", connectionId ); } break; @@ -601,6 +602,28 @@ // void CConnectionMonitorUiAppUi::OnTimerExpiredL() { + CMUILOGGER_WRITE_F( "MdcaCount: %d", iConnectionArray->MdcaCount()); + // First check if there are connections that need to be deleted. + // The conditions for deletion are: + // 1. Connection status must be closed + // 2. Main view must be active (details view should be shown also for closed connections) + // 3. There must not be active request ongoing (otherwise deletion might cause crash) + for(TUint i = 0; i < iConnectionArray->MdcaCount(); i++) + { + CMUILOGGER_WRITE_F( "i: %d", i ); + CMUILOGGER_WRITE_F( "Status: %d", (*iConnectionArray)[i]->GetStatus() ); + CMUILOGGER_WRITE_F( "active: %d", iActiveWrapper->IsActive() ); + if( (*iConnectionArray)[i]->GetStatus() == EConnectionClosed + && !iActiveWrapper->IsActive() + && iView->Id() != KDetailsViewId) + { + CMUILOGGER_WRITE_F( "Delete conn id: %d", (*iConnectionArray)[i]->GetConnectionId() ); + iConnectionArray->Delete( (*iConnectionArray)[i]->GetConnectionId() ); + i--; + } + } + + TInt count = iNewConnectionIdArray.Count(); if ( count > 0 ) { diff -r 40cb640ef159 -r 086aae6fc07e connectionmonitoring/connectionmonitorui/src/ConnectionMonitorUiDetailsContainer.cpp --- a/connectionmonitoring/connectionmonitorui/src/ConnectionMonitorUiDetailsContainer.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/connectionmonitoring/connectionmonitorui/src/ConnectionMonitorUiDetailsContainer.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -317,40 +317,9 @@ { case EConnMonDeleteConnection: { - if ( aIndex == iConnectionIndex ) - { - TUint count = iConnectionArray->MdcaCount(); - switch ( count ) - { - case 0: - { - iListBox->Model()->SetItemTextArray( - new (ELeave) CDesCArrayFlat( 1 ) ); - iListBox->Model()->SetOwnershipType( - ELbmOwnsItemArray ); - iConnectionIndex = 0; - iConnectionInfo = NULL; - break; - } - case 1: - { - SetSelectedConnectionL( 0 ); - break; - } - default : - { - TInt index = iConnectionIndex < count ? - iConnectionIndex : - iConnectionIndex - 1; - SetSelectedConnectionL( index ); - break; - } - } - iListBox->DrawNow(); - iListBox->UpdateScrollBarsL(); - } - break; + // Do nothing } + break; case EConnMonCreateConnection: { CMUILOGGER_WRITE_F( "iConnectionInfo : %d", iConnectionInfo ); @@ -388,14 +357,13 @@ if ( iConnectionArray->MdcaCount() ) { iListBox->DrawNow(); - iListBox->UpdateScrollBarsL(); + CMUILOGGER_WRITE_F( "CMUIDW GetStatus() before: %d", iConnectionInfo->GetStatus() ); if ( iConnectionInfo->GetStatus() == EConnectionClosing ) { CConnectionMonitorUiAppUi* tempApUi = CConnectionMonitorUiAppUi::Static(); - tempApUi->StopTimer(); iConnectionInfo->StatusChangedL(); } CMUILOGGER_WRITE_F( "CMUIDW GetStatus() after: %d", @@ -447,7 +415,8 @@ // void CConnectionMonitorUiDetailsContainer::PushAndRefreshNaviPaneL() { - TUint countOfConnection = iConnectionArray->NumberOfActiveConnections(); + TUint countOfConnection = iConnectionArray->MdcaCount(); + CMUILOGGER_WRITE_F( "countOfConnection : %d", countOfConnection ); if ( ( iConnectionIndex > countOfConnection ) && // spec. index update diff -r 40cb640ef159 -r 086aae6fc07e connectionmonitoring/connectionmonitorui/src/ConnectionMonitorUiDetailsView.cpp --- a/connectionmonitoring/connectionmonitorui/src/ConnectionMonitorUiDetailsView.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/connectionmonitoring/connectionmonitorui/src/ConnectionMonitorUiDetailsView.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -31,7 +31,7 @@ // --------------------------------------------------------- // CConnectionMonitorUiDetailsView::CConnectionMonitorUiDetailsView( - const CConnectionArray* const aConnectionArray ) + CConnectionArray* const aConnectionArray ) : CAknView(), iConnectionArray( aConnectionArray ), iViewRefreshState( EFalse ) @@ -93,6 +93,8 @@ // void CConnectionMonitorUiDetailsView::CloseViewL() { + CMUILOGGER_ENTERFN( "CConnectionMonitorUiDetailsView::CloseViewL" ); + if ( GetViewRefreshState() ) { // Now delete this view @@ -101,6 +103,7 @@ appUi->StartTimerL(); SetViewRefreshState( EFalse ); } + CMUILOGGER_LEAVEFN( "CConnectionMonitorUiDetailsView::CloseViewL" ); } // --------------------------------------------------------- diff -r 40cb640ef159 -r 086aae6fc07e connectionmonitoring/connmon/connectionmonitor/group/ConnMon.mmp --- a/connectionmonitoring/connmon/connectionmonitor/group/ConnMon.mmp Thu Jan 07 12:56:54 2010 +0200 +++ b/connectionmonitoring/connmon/connectionmonitor/group/ConnMon.mmp Mon Jan 18 20:33:49 2010 +0200 @@ -56,6 +56,7 @@ SOURCE connmondtmnoti.cpp SOURCE ConnMonBearerNotifier.cpp ConnMonEGprsNotifier.cpp ConnMonHsdpaNotifier.cpp +SOURCE cellulardatausagekeyupdater.cpp USERINCLUDE ../inc diff -r 40cb640ef159 -r 086aae6fc07e connectionmonitoring/connmon/connectionmonitor/inc/ConnMonIAP.h --- a/connectionmonitoring/connmon/connectionmonitor/inc/ConnMonIAP.h Thu Jan 07 12:56:54 2010 +0200 +++ b/connectionmonitoring/connmon/connectionmonitor/inc/ConnMonIAP.h Mon Jan 18 20:33:49 2010 +0200 @@ -642,6 +642,15 @@ * (weak signal, no WLAN connection, WLAN not supported... ). */ TBool WlanRssGoodEnough(); + + /** + * Gets the network roaming status. + * @since + * @param aNetworkStatus On return, contains the current network registration status. + * @return KErrNone if successfull, otherwise a system wide error code. + */ + TInt GetNetworkRegistration_v2( TInt& aRegistration ) const; + private: // New methods /** @@ -742,14 +751,6 @@ TInt GetNetworkRegistration( TInt& aRegistration ) const; /** - * Gets the network roaming status. - * @since - * @param aNetworkStatus On return, contains the current network registration status. - * @return KErrNone if successfull, otherwise a system wide error code. - */ - TInt GetNetworkRegistration_v2( TInt& aRegistration ) const; - - /** * Gets the GSM signal strength. * @since * @param aSignalStrength On return, contains the GSM signal strength in dBs. diff -r 40cb640ef159 -r 086aae6fc07e connectionmonitoring/connmon/connectionmonitor/inc/ConnMonServ.h --- a/connectionmonitoring/connmon/connectionmonitor/inc/ConnMonServ.h Thu Jan 07 12:56:54 2010 +0200 +++ b/connectionmonitoring/connmon/connectionmonitor/inc/ConnMonServ.h Mon Jan 18 20:33:49 2010 +0200 @@ -133,6 +133,7 @@ class TConnMonIapInfo; class TConnMonSNAPInfo; class TConnMonId; +class CCellularDataUsageKeyUpdater; /** * CConnMonServer @@ -326,6 +327,13 @@ { return iBearerGroupManager; } + + /** + * Gets a pointer to the iap module. + * @return A pointer to the iap module. + */ + inline CCellularDataUsageKeyUpdater* CellularDataUsageKeyUpdater() + { return iCellularDataUsageKeyUpdater; } public: /** @@ -367,7 +375,8 @@ CConnMonCommsDatNotifier* iSnapTableNotifier; CConnMonCommsDatNotifier* iVirtualTableNotifier; - CConnMonBearerGroupManager* iBearerGroupManager; + CConnMonBearerGroupManager* iBearerGroupManager; + CCellularDataUsageKeyUpdater* iCellularDataUsageKeyUpdater; }; /** diff -r 40cb640ef159 -r 086aae6fc07e connectionmonitoring/connmon/connectionmonitor/inc/cellulardatausagekeyupdater.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/connectionmonitoring/connmon/connectionmonitor/inc/cellulardatausagekeyupdater.h Mon Jan 18 20:33:49 2010 +0200 @@ -0,0 +1,67 @@ +/* +* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Listens for changes in one CommsDat table through CenRep. +* +*/ + +#ifndef CELLULARDATAUSAGEKEYUPDATER_H +#define CELLULARDATAUSAGEKEYUPDATER_H + +class CConnMonServer; +class CRepository; +class TCmGenConnSettings; + +// Stop requesting new notifications after this many consecutive errors +const TInt KCenRepErrorRetryCount = 80; + +NONSHARABLE_CLASS( CCellularDataUsageKeyUpdater ) : public CActive + { +public: + static CCellularDataUsageKeyUpdater* NewL( + CConnMonServer* aServer ); + + static CCellularDataUsageKeyUpdater* NewLC( + CConnMonServer* aServer ); + + virtual ~CCellularDataUsageKeyUpdater(); + + void UpdateKeyL( const TInt aRegistration ) const; + +private: + CCellularDataUsageKeyUpdater( + CConnMonServer* aServer ); + + void ConstructL(); + TInt RequestNotifications(); + + TCmGenConnSettings ReadGenConnSettingsL() const; + TInt GetNetworkRegistration( TInt& aRegistration ) const; + void UpdateKeyL() const; + +private: // Methods from base class + void DoCancel(); + void RunL(); + +private: + CConnMonServer* iServer; + TUint32 iTableId; + CRepository* iRepository; + TInt iErrorCounter; + // used for complete runl. Not owned. + TRequestStatus* iInitStatus; + }; + +#endif // CELLULARDATAUSAGEKEYUPDATER_H + +// End-of-file diff -r 40cb640ef159 -r 086aae6fc07e connectionmonitoring/connmon/connectionmonitor/src/ConnMonNoti.cpp --- a/connectionmonitoring/connmon/connectionmonitor/src/ConnMonNoti.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/connectionmonitoring/connmon/connectionmonitor/src/ConnMonNoti.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -28,6 +28,7 @@ #include "ConnMonIAP.h" #include "ConnMonNoti.h" #include "ConnMonAvailabilityManager.h" +#include "cellulardatausagekeyupdater.h" #include "log.h" // ============================ MEMBER FUNCTIONS =============================== @@ -974,6 +975,11 @@ // Store to compare next event correctly iEventInfo.iData = value; + + // Update KCurrentCellularDataUsage -key in Repository KCRUidCmManage. + // Key tells applications whether it is allowed to use packet data or not. + TRAP_IGNORE( iServer->CellularDataUsageKeyUpdater()->UpdateKeyL( + iServer->Iap()->CalculateNetworkRegistration_v2( iRegistration ) ); ) } LOGIT("CNetwRegistrationNotifier::RunL triggered HandleAvailabilityChange()") iServer->AvailabilityManager()->HandleAvailabilityChange(); diff -r 40cb640ef159 -r 086aae6fc07e connectionmonitoring/connmon/connectionmonitor/src/ConnMonServ.cpp --- a/connectionmonitoring/connmon/connectionmonitor/src/ConnMonServ.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/connectionmonitoring/connmon/connectionmonitor/src/ConnMonServ.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -33,6 +33,7 @@ #include "ConnMonBearerWLAN.h" #include "ConnMonBearerGroupManager.h" #include "connmoncommsdatnotifier.h" +#include "cellulardatausagekeyupdater.h" // ============================ LOCAL FUNCTIONS =============================== @@ -318,7 +319,10 @@ // Bearer group manager iBearerGroupManager = CConnMonBearerGroupManager::NewL(); LOGIT("ConstructL: Bearer group manager constructed") - + + iCellularDataUsageKeyUpdater = CCellularDataUsageKeyUpdater::NewL( this ); + LOGIT("ConstructL: CCellularDataUsageKeyUpdater constructed") + // Identify ourselves and open for service StartL( KConnectionMonitorServerName ); @@ -368,6 +372,8 @@ // Bearer Group Manager delete iBearerGroupManager; + + delete iCellularDataUsageKeyUpdater; FeatureManager::UnInitializeLib(); } diff -r 40cb640ef159 -r 086aae6fc07e connectionmonitoring/connmon/connectionmonitor/src/cellulardatausagekeyupdater.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/connectionmonitoring/connmon/connectionmonitor/src/cellulardatausagekeyupdater.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -0,0 +1,298 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Keeps KCurrentCellularDataUsage -key +* in Repository KCRUidCmManager up-to-date based +* on current network registration status and +* iCellularDataUsageHome and iCellularDataUsageVisitor keys. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cellulardatausagekeyupdater.h" +#include "ConnMonServ.h" +#include "ConnMonIap.h" +#include "ConnMonDef.h" +#include "log.h" + +// Repository for CommsDat +const TUid KCDCommsRepositoryId = { 0xCCCCCC00 }; + +// ----------------------------------------------------------------------------- +// CCellularDataUsageKeyUpdater::NewL +// ----------------------------------------------------------------------------- +// +CCellularDataUsageKeyUpdater* CCellularDataUsageKeyUpdater::NewL( + CConnMonServer* aServer ) + { + CCellularDataUsageKeyUpdater* self = + CCellularDataUsageKeyUpdater::NewLC( aServer ); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CCellularDataUsageKeyUpdater::NewLC +// ----------------------------------------------------------------------------- +// +CCellularDataUsageKeyUpdater* CCellularDataUsageKeyUpdater::NewLC( + CConnMonServer* aServer ) + { + CCellularDataUsageKeyUpdater* self = + new( ELeave ) CCellularDataUsageKeyUpdater( aServer ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CCellularDataUsageKeyUpdater::~CCellularDataUsageKeyUpdater +// ----------------------------------------------------------------------------- +// +CCellularDataUsageKeyUpdater::~CCellularDataUsageKeyUpdater() + { + // Cancel outstanding request, if exists + Cancel(); + delete iRepository; + } + +// ----------------------------------------------------------------------------- +// CCellularDataUsageKeyUpdater::UpdateKeyL +// ----------------------------------------------------------------------------- +// +void CCellularDataUsageKeyUpdater::UpdateKeyL( const TInt aRegistration ) const + { + LOGENTRFN("CCellularDataUsageKeyUpdater::UpdateKeyL()") + LOGIT1("CCellularDataUsageKeyUpdater::UpdateKeyL: aRegistration <%d>", + aRegistration) + + TCmGenConnSettings occSettings = ReadGenConnSettingsL(); + + TInt value( occSettings.iCellularDataUsageHome ); + + if ( aRegistration == ENetworkRegistrationExtRoamingInternational ) + { + value = occSettings.iCellularDataUsageVisitor; + } + + CRepository* cmRepository = NULL; + + TRAPD( err, cmRepository = CRepository::NewL( KCRUidCmManager ) ) + + if ( err == KErrNone ) + { + TInt previous( 0 ); + TInt err = cmRepository->Get( KCurrentCellularDataUsage, previous ); + + if ( err == KErrNone && ( value != previous ) ) + { + cmRepository->Set( KCurrentCellularDataUsage, value ); + LOGIT1("KCurrentCellularDataUsage set to <%d>", value) + } + delete cmRepository; + } + else + { + LOGIT1("CCRepository::NewL( KCRUidCmManager ) FAILED <%d>", err) + } + + LOGEXITFN("CCellularDataUsageKeyUpdater::UpdateKeyL()") + } + +// ----------------------------------------------------------------------------- +// CCellularDataUsageKeyUpdater::CCellularDataUsageKeyUpdater +// ----------------------------------------------------------------------------- +// +CCellularDataUsageKeyUpdater::CCellularDataUsageKeyUpdater( CConnMonServer* aServer ) + : + CActive( EConnMonPriorityNormal ), + iServer( aServer ) + { + iRepository = NULL; + iErrorCounter = 0; + } + +// ----------------------------------------------------------------------------- +// CCellularDataUsageKeyUpdater::ConstructL +// ----------------------------------------------------------------------------- +// +void CCellularDataUsageKeyUpdater::ConstructL() + { + iRepository = CRepository::NewL( KCDCommsRepositoryId ); + + // Find out Default connection table id. + // It contains iCellularDataUsageHome and iCellularDataUsageVisitor keys. + CMDBSession* db = CMDBSession::NewLC( CMDBSession::LatestVersion() ); + TRAPD( err, iTableId = CCDDefConnRecord::TableIdL( *db ) ) + + if ( err ) + { + LOGIT1("ERROR, CCDDefConnRecord::TableIdL() <%d>", err) + // Default connection table did not exist. + // Try once more because CMManager might have created it. + iTableId = CCDDefConnRecord::TableIdL( *db ); + } + CleanupStack::PopAndDestroy( db ); + + CActiveScheduler::Add( this ); + + // Initialize later asynchronously and let ConnMonServ continue now + SetActive(); + iInitStatus = &iStatus; + User::RequestComplete( iInitStatus, KErrNone ); + } + +// ----------------------------------------------------------------------------- +// CCellularDataUsageKeyUpdater::RequestNotifications +// ----------------------------------------------------------------------------- +// +TInt CCellularDataUsageKeyUpdater::RequestNotifications() + { + LOGIT1("Calling iRepository->NotifyRequest() for table 0x%08X", iTableId) + TInt err = iRepository->NotifyRequest( iTableId, KCDMaskShowRecordType, iStatus ); + + if ( err == KErrNone ) + { + SetActive(); + } + else + { + LOGIT1("ERROR, iRepository->NotifyRequest() <%d>", err) + } + + return err; + } + +// ----------------------------------------------------------------------------- +// CCellularDataUsageKeyUpdater::DoCancel +// ----------------------------------------------------------------------------- +// +void CCellularDataUsageKeyUpdater::DoCancel() + { + iRepository->NotifyCancel( iTableId, KCDMaskShowRecordType ); + } + +// ----------------------------------------------------------------------------- +// CCellularDataUsageKeyUpdater::RunL +// ----------------------------------------------------------------------------- +// +void CCellularDataUsageKeyUpdater::RunL() + { + LOGIT(".") + LOGIT2("RunL: CCellularDataUsageKeyUpdater 0x%08X, 0x%08X", + iTableId, iStatus.Int()) + + if ( iStatus.Int() < KErrNone ) + { + LOGIT1("CCellularDataUsageKeyUpdater::RunL: error <%d>", iStatus.Int()) + iErrorCounter++; + if ( iErrorCounter > KCenRepErrorRetryCount ) + { + LOGIT1("Over %d consecutive errors, stopping notifications permanently", + KCenRepErrorRetryCount) + return; + } + } + else + { + iErrorCounter = 0; + + TRAPD( leaveCode, UpdateKeyL() ) + + if ( leaveCode ) + { + LOGIT1("CCellularDataUsageKeyUpdater::RunL: LEAVE <%d>", leaveCode) + } + } + + RequestNotifications(); + } + +// ----------------------------------------------------------------------------- +// CCellularDataUsageKeyUpdater::ReadGenConnSettings +// ----------------------------------------------------------------------------- +// +TCmGenConnSettings CCellularDataUsageKeyUpdater::ReadGenConnSettingsL() const + { + TCmGenConnSettings cmGenConnSettings; + + CMDBSession* db = CMDBSession::NewLC( CMDBSession::LatestVersion() ); + + CMDBRecordSet* defConnRecordSet = + new ( ELeave ) CMDBRecordSet( iTableId ); + CleanupStack::PushL( defConnRecordSet ); + + defConnRecordSet->LoadL( *db ); + + TInt value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], + KCDTIdUsageOfWlan ); + cmGenConnSettings.iUsageOfWlan = TCmUsageOfWlan( value ); + + value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], + KCDTIdCellularDataUsageHome ); + cmGenConnSettings.iCellularDataUsageHome = TCmCellularDataUsage( value ); + LOGIT1("cmGenConnSettings.iCellularDataUsageHome <%d>", + cmGenConnSettings.iCellularDataUsageHome) + + value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], + KCDTIdCellularDataUsageVisitor ); + cmGenConnSettings.iCellularDataUsageVisitor = TCmCellularDataUsage( value ); + LOGIT1("cmGenConnSettings.iCellularDataUsageVisitor <%d>", + cmGenConnSettings.iCellularDataUsageVisitor) + + CleanupStack::PopAndDestroy( defConnRecordSet ); + CleanupStack::PopAndDestroy( db ); + + return cmGenConnSettings; + } + +// ----------------------------------------------------------------------------- +// CCellularDataUsageKeyUpdater::GetNetworkRegistration +// ----------------------------------------------------------------------------- +// +TInt CCellularDataUsageKeyUpdater::GetNetworkRegistration( TInt& aRegistration ) const + { + return iServer->Iap()->GetNetworkRegistration_v2( aRegistration ); + } + +// ----------------------------------------------------------------------------- +// CCellularDataUsageKeyUpdater::UpdateKeyL +// ----------------------------------------------------------------------------- +// +void CCellularDataUsageKeyUpdater::UpdateKeyL() const + { + TInt registration( ENetworkRegistrationExtHomeNetwork ); + TInt err( KErrNone ); + +#ifndef __WINSCW__ // emulator does not support cellular network + err = GetNetworkRegistration( registration ); +#endif + + if ( err == KErrNone ) + { + UpdateKeyL( registration ); + } + else + { + LOGIT1("GetNetworkRegistration failed: <%d>", err ); + } + } + +// End-of-file diff -r 40cb640ef159 -r 086aae6fc07e connectionmonitoring/connmon/dataconnectionlogger/src/saeobserver.cpp --- a/connectionmonitoring/connmon/dataconnectionlogger/src/saeobserver.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/connectionmonitoring/connmon/dataconnectionlogger/src/saeobserver.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -261,23 +261,33 @@ User::WaitForRequest( status ); LOG( Log::Printf( _L("+ DCL: Async call status==(%d)."), status.Int() )); - if ( (ntwStatus == EConnMonStatusNotAvailable) || (ntwStatus == EConnMonStatusUnattached) ) - { - LOG( Log::Printf( _L("DCL: GPRS ntwk is UnAttached." ))); - iNetworkIsUnAttached = ETrue; - NotifyPubSub( KPSUidGprsStatus, EPSGprsUnattached ); - } - else if ( ntwStatus == ENtwkStatusNotKnown ) + switch ( ntwStatus ) { - LOG( Log::Printf( _L("DCL: Async request for GPRS ntwk status failed %d!"), - status.Int() )); + case ENtwkStatusNotKnown: + LOG( Log::Printf( _L("DCL: Async request for GPRS ntwk status failed %d!"), + status.Int() )); + break; + + case EConnMonStatusNotAvailable: + case EConnMonStatusUnattached: + LOG( Log::Printf( _L("DCL: GPRS ntwk is UnAttached." ))); + iNetworkIsUnAttached = ETrue; + NotifyPubSub( KPSUidGprsStatus, EPSGprsUnattached ); + break; + + case EConnMonStatusActive: + LOG( Log::Printf( _L("DCL: GPRS ntwk is Active." ))); + iNetworkIsUnAttached = EFalse; + NotifyPubSub( KPSUidGprsStatus, EPSGprsContextActive ); + break; + + case EConnMonStatusAttached: + default: + LOG( Log::Printf( _L("DCL: GPRS ntwk is Attached." ))); + iNetworkIsUnAttached = EFalse; + NotifyPubSub( KPSUidGprsStatus, EPSGprsAttach ); } - else - { - LOG( Log::Printf( _L("DCL: GPRS ntwk is Attached." ))); - iNetworkIsUnAttached = EFalse; - NotifyPubSub( KPSUidGprsStatus, EPSGprsAttach ); - } + } else if ( connType == ESAEWCDMAConnectionType ) { @@ -285,23 +295,33 @@ User::WaitForRequest( status ); LOG( Log::Printf( _L("+ DCL: Async call status==(%d)."), status.Int() )); - if ( (ntwStatus == EConnMonStatusNotAvailable) || (ntwStatus == EConnMonStatusUnattached) ) - { - LOG( Log::Printf( _L("DCL: WCDMA ntwk is UnAttached." ))); - iNetworkIsUnAttached = ETrue; - NotifyPubSub( KPSUidWcdmaStatus, EPSWcdmaUnattached ); - } - else if ( ntwStatus == ENtwkStatusNotKnown ) + switch ( ntwStatus ) { - LOG( Log::Printf( _L("DCL: Async request for WCDMA ntwk status failed %d!"), - status.Int() )); + case ENtwkStatusNotKnown: + LOG( Log::Printf( _L("DCL: Async request for WCDMA ntwk status failed %d!"), + status.Int() )); + break; + + case EConnMonStatusNotAvailable: + case EConnMonStatusUnattached: + LOG( Log::Printf( _L("DCL: WCDMA ntwk is UnAttached." ))); + iNetworkIsUnAttached = ETrue; + NotifyPubSub( KPSUidWcdmaStatus, EPSWcdmaUnattached); + break; + + case EConnMonStatusActive: + LOG( Log::Printf( _L("DCL: WCDMA ntwk is Active." ))); + iNetworkIsUnAttached = EFalse; + NotifyPubSub( KPSUidWcdmaStatus, EPSWcdmaContextActive ); + break; + + case EConnMonStatusAttached: + default: + LOG( Log::Printf( _L("DCL: WCDMA ntwk is Attached." ))); + iNetworkIsUnAttached = EFalse; + NotifyPubSub( KPSUidWcdmaStatus, EPSWcdmaAttach ); } - else - { - LOG( Log::Printf( _L("DCL: WCDMA ntwk is Attached." ))); - iNetworkIsUnAttached = EFalse; - NotifyPubSub( KPSUidWcdmaStatus, EPSWcdmaAttach ); - } + } else { diff -r 40cb640ef159 -r 086aae6fc07e dbcreator/commsdatcreator/Inc/cdcprocessorglobal.h --- a/dbcreator/commsdatcreator/Inc/cdcprocessorglobal.h Thu Jan 07 12:56:54 2010 +0200 +++ b/dbcreator/commsdatcreator/Inc/cdcprocessorglobal.h Mon Jan 18 20:33:49 2010 +0200 @@ -142,18 +142,18 @@ void SetGenConnSettingWlanUsage( HBufC16* aPtrTag ); /** - * Sets the "Seamlessness (cellular data usage) in home networks" + * Sets the "cellular data usage in home networks" * parameter in general connection settings. * @param aPtrTag string containing the parameter's value. */ - void SetGenConnSettingSeamlessnessHome( HBufC16* aPtrTag ); + void SetGenConnSettingCellularDataUsageHome( HBufC16* aPtrTag ); /** - * Sets the "Seamlessness (cellular data usage) in visitor networks" + * Sets the "cellular data usage in visitor networks" * parameter in general connection settings. * @param aPtrTag string containing the parameter's value. */ - void SetGenConnSettingSeamlessnessVisitor( HBufC16* aPtrTag ); + void SetGenConnSettingCellularDataUsageVisitor( HBufC16* aPtrTag ); // Stores the general connection settings, using CMM void SetGenConnSettingsL(); diff -r 40cb640ef159 -r 086aae6fc07e dbcreator/commsdatcreator/Src/cdcprocessorglobal.cpp --- a/dbcreator/commsdatcreator/Src/cdcprocessorglobal.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/dbcreator/commsdatcreator/Src/cdcprocessorglobal.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -156,8 +156,8 @@ // Create General connection settings struct and set the default values iGenConnSettings = new (ELeave) TCmGenConnSettings; iGenConnSettings->iUsageOfWlan = ECmUsageOfWlanKnown; - iGenConnSettings->iSeamlessnessHome = ECmSeamlessnessConfirmFirst; - iGenConnSettings->iSeamlessnessVisitor = ECmSeamlessnessConfirmFirst; + iGenConnSettings->iCellularDataUsageHome = ECmCellularDataUsageAutomatic; + iGenConnSettings->iCellularDataUsageVisitor = ECmCellularDataUsageConfirm; CLOG_WRITE( "Initialising FeatureManager\n" ) //checks if Wlan feature is supported @@ -462,15 +462,15 @@ break; } - case ESeamlessnessHome: + case ECellularDataUsageHome: { - SetGenConnSettingSeamlessnessHome( ptrTag ); + SetGenConnSettingCellularDataUsageHome( ptrTag ); break; } - case ESeamlessnessVisitor: + case ECellularDataUsageVisitor: { - SetGenConnSettingSeamlessnessVisitor( ptrTag ); + SetGenConnSettingCellularDataUsageVisitor( ptrTag ); break; } @@ -707,37 +707,37 @@ } // --------------------------------------------------------- -// CProcessorGlobal::SetGenConnSettingSeamlessnessHome +// CProcessorGlobal::SetGenConnSettingCellularDataUsageHome // --------------------------------------------------------- // -void CProcessorGlobal::SetGenConnSettingSeamlessnessHome( HBufC16* aPtrTag ) +void CProcessorGlobal::SetGenConnSettingCellularDataUsageHome( HBufC16* aPtrTag ) { if ( aPtrTag->CompareF( KStrAutomatic ) == 0 ) { - iGenConnSettings->iSeamlessnessHome = ECmSeamlessnessShowprogress; + iGenConnSettings->iCellularDataUsageHome = ECmCellularDataUsageAutomatic; } else if ( iIsWlanS && aPtrTag->CompareF( KStrWlanOnly ) == 0 ) { // This value can't be set if WLAN isn't supported - iGenConnSettings->iSeamlessnessHome = ECmSeamlessnessDisabled; + iGenConnSettings->iCellularDataUsageHome = ECmCellularDataUsageDisabled; } // else: Default value for the string is: "Confirm", set in ConstructL() } // --------------------------------------------------------- -// CProcessorGlobal::SetGenConnSettingSeamlessnessVisitor +// CProcessorGlobal::SetGenConnSettingCellularDataUsageVisitor // --------------------------------------------------------- // -void CProcessorGlobal::SetGenConnSettingSeamlessnessVisitor( HBufC16* aPtrTag ) +void CProcessorGlobal::SetGenConnSettingCellularDataUsageVisitor( HBufC16* aPtrTag ) { if ( aPtrTag->CompareF( KStrAutomatic ) == 0 ) { - iGenConnSettings->iSeamlessnessVisitor = ECmSeamlessnessShowprogress; + iGenConnSettings->iCellularDataUsageVisitor = ECmCellularDataUsageAutomatic; } else if ( iIsWlanS && aPtrTag->CompareF( KStrWlanOnly ) == 0 ) { // This value can't be set if WLAN isn't supported - iGenConnSettings->iSeamlessnessVisitor = ECmSeamlessnessDisabled; + iGenConnSettings->iCellularDataUsageVisitor = ECmCellularDataUsageDisabled; } // else: Default value for the string is: "Confirm", set in ConstructL() } diff -r 40cb640ef159 -r 086aae6fc07e dbcreator/commsdatcreator/Src/cdcreaderxml.cpp --- a/dbcreator/commsdatcreator/Src/cdcreaderxml.cpp Thu Jan 07 12:56:54 2010 +0200 +++ b/dbcreator/commsdatcreator/Src/cdcreaderxml.cpp Mon Jan 18 20:33:49 2010 +0200 @@ -476,8 +476,8 @@ _LIT16( KDefaultConnectionType, "DefaultConnectionType" ); _LIT16( KDefaultConnectionName, "DefaultConnectionName" ); _LIT16( KUsageOfWlan, "UsageOfWlan" ); -_LIT16( KSeamlessnessHome, "SeamlessnessHome" ); -_LIT16( KSeamlessnessVisitor, "SeamlessnessVisitor" ); +_LIT16( KCellularDataUsageHome, "CellularDataUsageHome" ); +_LIT16( KCellularDataUsageVisitor, "CellularDataUsageVisitor" ); _LIT16( KGprsLastSocketActivityTimeout, "GprsLastSocketActivityTimeout" ); _LIT16( KGprsLastSessionClosedTimeout, "GprsLastSessionClosedTimeout" ); _LIT16( KGprsLastSocketClosedTimeout, "GprsLastSocketClosedTimeout" ); @@ -1780,8 +1780,8 @@ iGlobalParams.Append( EInputParams( EDefaultConnectionType, KDefaultConnectionType ) ); iGlobalParams.Append( EInputParams( EDefaultConnectionName, KDefaultConnectionName ) ); iGlobalParams.Append( EInputParams( EUsageOfWlan, KUsageOfWlan ) ); - iGlobalParams.Append( EInputParams( ESeamlessnessHome, KSeamlessnessHome ) ); - iGlobalParams.Append( EInputParams( ESeamlessnessVisitor, KSeamlessnessVisitor ) ); + iGlobalParams.Append( EInputParams( ECellularDataUsageHome, KCellularDataUsageHome ) ); + iGlobalParams.Append( EInputParams( ECellularDataUsageVisitor, KCellularDataUsageVisitor ) ); iGlobalParams.Append( EInputParams( EGprsLastSocketActivityTimeout, KGprsLastSocketActivityTimeout ) ); iGlobalParams.Append( EInputParams( EGprsLastSessionClosedTimeout, KGprsLastSessionClosedTimeout ) ); iGlobalParams.Append( EInputParams( EGprsLastSocketClosedTimeout, KGprsLastSocketClosedTimeout ) ); diff -r 40cb640ef159 -r 086aae6fc07e dbcreator/conf/commsdatcreator.confml Binary file dbcreator/conf/commsdatcreator.confml has changed diff -r 40cb640ef159 -r 086aae6fc07e dbcreator/inc/cdccommon.h --- a/dbcreator/inc/cdccommon.h Thu Jan 07 12:56:54 2010 +0200 +++ b/dbcreator/inc/cdccommon.h Mon Jan 18 20:33:49 2010 +0200 @@ -87,19 +87,19 @@ EWlanLastSocketActivityTimeout = 0x0000001f, EWlanLastSessionClosedTimeout = 0x00000020, EWlanLastSocketClosedTimeout = 0x00000021, - EWlanBGScanInterval = 0x00000022, - EWlanUseDefSettings = 0x00000023, - EWlanLongRetry = 0x00000024, - EWlanShortRetry = 0x00000025, - EWlanRTS = 0x00000026, - EWlanTxPowerLevel = 0x00000027, - EWlanRadioMeasurements = 0x00000028, - EWlanPowerMode = 0x00000029, - EDefaultAP = 0x0000002a, - EUsageOfWlan = 0x0000002b, - ESeamlessnessHome = 0x0000002c, - ESeamlessnessVisitor = 0x0000002d, - EUnused = 0x00010000 + EWlanBGScanInterval = 0x00000022, + EWlanUseDefSettings = 0x00000023, + EWlanLongRetry = 0x00000024, + EWlanShortRetry = 0x00000025, + EWlanRTS = 0x00000026, + EWlanTxPowerLevel = 0x00000027, + EWlanRadioMeasurements = 0x00000028, + EWlanPowerMode = 0x00000029, + EDefaultAP = 0x0000002a, + EUsageOfWlan = 0x0000002b, + ECellularDataUsageHome = 0x0000002c, + ECellularDataUsageVisitor = 0x0000002d, + EUnused = 0x00010000 }; diff -r 40cb640ef159 -r 086aae6fc07e ipcm_plat/commsdat_wlan_api/inc/cmmanagertablefields.h --- a/ipcm_plat/commsdat_wlan_api/inc/cmmanagertablefields.h Thu Jan 07 12:56:54 2010 +0200 +++ b/ipcm_plat/commsdat_wlan_api/inc/cmmanagertablefields.h Mon Jan 18 20:33:49 2010 +0200 @@ -96,8 +96,8 @@ const CommsDat::TMDBElementId KCDTIdDefConnType = 0x00120000; const CommsDat::TMDBElementId KCDTIdDefConnUid = 0x00130000; const CommsDat::TMDBElementId KCDTIdUsageOfWlan = 0x00150000; -const CommsDat::TMDBElementId KCDTIdSeamlessnessHome = 0x00170000; -const CommsDat::TMDBElementId KCDTIdSeamlessnessVisitor = 0x00180000; +const CommsDat::TMDBElementId KCDTIdCellularDataUsageHome = 0x00170000; +const CommsDat::TMDBElementId KCDTIdCellularDataUsageVisitor = 0x00180000; #endif // TABLE_FIELDS_H diff -r 40cb640ef159 -r 086aae6fc07e ipcm_plat/extended_connection_settings_api/group/bld.inf --- a/ipcm_plat/extended_connection_settings_api/group/bld.inf Thu Jan 07 12:56:54 2010 +0200 +++ b/ipcm_plat/extended_connection_settings_api/group/bld.inf Mon Jan 18 20:33:49 2010 +0200 @@ -30,3 +30,4 @@ ../inc/cmsettingsui.h MW_LAYER_PLATFORM_EXPORT_PATH(cmsettingsui.h) ../inc/cmcommonui.h MW_LAYER_PLATFORM_EXPORT_PATH(cmcommonui.h) ../inc/cmmanagerext.h MW_LAYER_PLATFORM_EXPORT_PATH(cmmanagerext.h) +../inc/cmmanagerkeys.h MW_LAYER_PLATFORM_EXPORT_PATH(cmmanagerkeys.h) diff -r 40cb640ef159 -r 086aae6fc07e ipcm_plat/extended_connection_settings_api/inc/cmmanagerkeys.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ipcm_plat/extended_connection_settings_api/inc/cmmanagerkeys.h Mon Jan 18 20:33:49 2010 +0200 @@ -0,0 +1,40 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: CmManager central repository keys. +* +*/ + +#ifndef CMMANAGERKEYS_H +#define CMMANAGERKEYS_H + +/** + * UID of CmManager repository + * + * @since S60 5.1 + */ +const TUid KCRUidCmManager = {0x10207376}; + +/** + * Cellular data usage setting in current network. + * + * This means that the client does not need to take into account + * whether the device is in the home country or in a foreign country + * but the value is provided for the country the device is at the moment. + * See TCmCellularDataUsage in cmgenconnsettings.h for more info. + * + * @since S60 5.1 + */ +const TUint32 KCurrentCellularDataUsage = 0x00000001; + +#endif // CMMANAGERKEYS_H diff -r 40cb640ef159 -r 086aae6fc07e ipcm_pub/connection_settings_api/inc/cmgenconnsettings.h --- a/ipcm_pub/connection_settings_api/inc/cmgenconnsettings.h Thu Jan 07 12:56:54 2010 +0200 +++ b/ipcm_pub/connection_settings_api/inc/cmgenconnsettings.h Mon Jan 18 20:33:49 2010 +0200 @@ -18,29 +18,61 @@ #define CMGENCONNSETTINGS_H -// Usage types for new WLAN +// Usage types for WLAN enum TCmUsageOfWlan { + // Known WLANs will be used, and they will be switched to + // if they become available during existing connections. ECmUsageOfWlanKnown, - ECmUsageOfWlanKnownAndNew, // default + // Known and new WLANs will be used. + ECmUsageOfWlanKnownAndNew, + // WLANs will be used but they will not be switched to + // from existing connections. ECmUsageOfWlanManual }; -// Seamlessness values +// Cellular data usage values +enum TCmCellularDataUsage + { + // Cellular data connection is not used automatically but a confirmation + // is requested from the user. + ECmCellularDataUsageConfirm, + // Cellular data connection is automatically used without querying + // permission from the user. + ECmCellularDataUsageAutomatic, + // Cellular data usage is disabled. Only WLAN will be used. + ECmCellularDataUsageDisabled + }; + +// DEPRECATED enumeration which will be removed within few weeks. +// DO NOT USE THESE VALUES. +// Functionality related to these values is broken although it compiles. enum TCmSeamlessnessValue { - ECmSeamlessnessNotRoamedTo, // IAP can be used in start, but not roamed to unless already active - ECmSeamlessnessConfirmFirst, // Confirm first - ECmSeamlessnessShowprogress, // Show progress - ECmSeamlessnessFullySeamless, // Same as previous - ECmSeamlessnessDisabled // IAP blacklisted and not used at all + ECmSeamlessnessNotRoamedTo, // DO NOT USE + ECmSeamlessnessConfirmFirst, // DO NOT USE + ECmSeamlessnessShowprogress, // DO NOT USE + ECmSeamlessnessFullySeamless, // DO NOT USE + ECmSeamlessnessDisabled // DO NOT USE }; // Table for connection settings other than default connection struct TCmGenConnSettings { + // WLAN usage. TCmUsageOfWlan iUsageOfWlan; + // Cellular data usage in home country. + TCmCellularDataUsage iCellularDataUsageHome; + // Cellular data usage abroad. + TCmCellularDataUsage iCellularDataUsageVisitor; + + // DEPRECATED variable that will be removed within few weeks. + // DO NOT USE THESE VARIABLES. + // Functionality related to this variable is broken although it compiles. TCmSeamlessnessValue iSeamlessnessHome; + // DEPRECATED variable that will be removed within few weeks. + // DO NOT USE THESE VARIABLES. + // Functionality related to this variable is broken although it compiles. TCmSeamlessnessValue iSeamlessnessVisitor; };