diff -r 63be7eb3fc78 -r f28ada11abbf wlanutilities/wlansniffer/aiplugin/src/wsfdbobserver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlanutilities/wlansniffer/aiplugin/src/wsfdbobserver.cpp Wed Sep 01 12:20:32 2010 +0100 @@ -0,0 +1,276 @@ +/* +* Copyright (c) 2007-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: +* Implementation of utilities functions. +* +* +*/ + + + +//User includes +#include "wsfdbobserver.h" +#include "wsfaicontroller.h" +#include "wsflogger.h" + +#include + +#include +#include + + +const TInt KWlanSettingsUiDefaultScanNetwork = 300; + + +// --------------------------------------------------------- +// CWsfDbObserver::CWsfDbObserver +// --------------------------------------------------------- +CWsfDbObserver::CWsfDbObserver( ) +: CActive( EPriorityNormal ), +iOuterScanState( EFalse ) + { + } + + +// --------------------------------------------------------- +// CWsfDbObserver::NewL +// --------------------------------------------------------- +CWsfDbObserver* CWsfDbObserver::NewL( ) + { + CWsfDbObserver* self = new ( ELeave ) CWsfDbObserver( ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } + + +// --------------------------------------------------------- +// CWsfDbObserver::ConstructL +// --------------------------------------------------------- +void CWsfDbObserver::ConstructL() + { +#ifndef __WINS__ // client is not available on wins + iWlanMgmtClient = CWlanMgmtClient::NewL(); +#endif + + FeatureManager::InitializeLibL(); + + CActiveScheduler::Add( this ); + } + + +// --------------------------------------------------------- +// CWsfDbObserver::~CWsfDbObserver +// --------------------------------------------------------- +CWsfDbObserver::~CWsfDbObserver() + { + Cancel(); + + delete iRecord; + + delete iSession; + + delete iWlanMgmtClient; + + FeatureManager::UnInitializeLib(); + } + + +// --------------------------------------------------------- +// CWsfDbObserver::RunL +// --------------------------------------------------------- +void CWsfDbObserver::RunL() + { + LOG_ENTERFN( "CWsfDbObserver::RunL" ); + iRecord->LoadL( *iSession ); + + //if scanning state changed start or stop the server + TInt i = iRecord->iBgScanInterval; + TInt j = iRecord->iSavedBgScanInterval; + LOG_WRITEF( "CWsfDbObserver::RunL -- Bg:%d bg2:%d O:%d", i, j, + iOuterScanState ); + if ( iRecord->iBgScanInterval == 0 && iOuterScanState ) + { + LOG_WRITE( "CWsfDbObserver::RunL -- Scan disabled" ); + iController->DisableScanL(); + iOuterScanState = EFalse; + } + else if(iRecord->iBgScanInterval != 0 && !iOuterScanState ) + { + LOG_WRITE( "CWsfDbObserver::RunL -- Scan enabled" ); + iController->EnableScanL(); + iOuterScanState = ETrue; + } + + SetActive(); + + iRecord->RequestNotification(*iSession,iStatus); + } + + +// --------------------------------------------------------- +// CWsfDbObserver::DoCancel +// --------------------------------------------------------- +void CWsfDbObserver::DoCancel() + { + iRecord->CancelNotification( *iSession, iStatus ); + } + + +// --------------------------------------------------------- +// CWsfDbObserver::ActivateIt +// --------------------------------------------------------- +void CWsfDbObserver::ActivateItL() + { + LOG_ENTERFN( "CWsfDbObserver::ActivateItL" ); + + iSession = CMDBSession::NewL( KCDLatestVersion ); + + TMDBElementId tableId = 0; + + tableId = CCDWlanDeviceSettingsRecord::TableIdL( *iSession ); + + iRecord = new (ELeave) CCDWlanDeviceSettingsRecord( tableId ); + + iRecord->iWlanDeviceSettingsType = KWlanUserSettings; + + + if(iRecord->FindL( *iSession )) + { + iRecord->LoadL( *iSession ); + } + + if ( iRecord->iBgScanInterval != 0 ) + { + iController->EnableScanL(); + iOuterScanState = ETrue; + } + SetActive(); + + iRecord->RequestNotification(*iSession,iStatus); + + } + + +// --------------------------------------------------------- +// CWsfDbObserver::SetController +// --------------------------------------------------------- +void CWsfDbObserver::SetController( TWsfAiController* aController ) + { + iController = aController; + } + + +// --------------------------------------------------------- +// CWsfDbObserver::EnableScanL +// --------------------------------------------------------- +void CWsfDbObserver::EnableScanL() + { + LOG_ENTERFN( "CWsfDbObserver::EnableScanL" ); + if ( !iOuterScanState ) + { + iRecord->RefreshL( *iSession ); + if ( iRecord->iBgScanInterval == 0 ) // not scanning + { + TInt j; + j = iRecord->iSavedBgScanInterval; + if ( j == 0 ) + { + j = DefaultScanIntervalL(); + } + iRecord->iBgScanInterval = j; + iRecord->ModifyL( *iSession ); + iOuterScanState = ETrue; + } +#ifndef __WINS__ + // Notifying WLAN Engine about changes in settings + iWlanMgmtClient->NotifyChangedSettings(); +#endif + } + } + + +// --------------------------------------------------------- +// CWsfDbObserver::DisableScanL +// --------------------------------------------------------- +void CWsfDbObserver::DisableScanL() + { + LOG_ENTERFN( "CWsfDbObserver::DisableScanL" ); + if ( iOuterScanState ) + { + iRecord->RefreshL(*iSession); + if ( iRecord->iBgScanInterval != 0 ) // scanning + { + TInt i; + i = iRecord->iBgScanInterval; + iRecord->iBgScanInterval = 0; + iRecord->iSavedBgScanInterval = i; + iRecord->ModifyL( *iSession ); + iOuterScanState = EFalse; + } +#ifndef __WINS__ + // Notifying WLAN Engine about changes in settings + iWlanMgmtClient->NotifyChangedSettings(); +#endif + } + } + + +// --------------------------------------------------------- +// CWsfDbObserver::DefaultScanInterval +// --------------------------------------------------------- +TInt CWsfDbObserver::DefaultScanIntervalL() + { + LOG_ENTERFN( "CWsfDbObserver::DefaultScanIntervalL" ); + TBool iPsmSupported = FeatureManager::FeatureSupported( + KFeatureIdPowerSave ); + if ( iPsmSupported ) + { + // Read the default value from CenRep (different in PSM mode) + TInt defaultScanInterval( KWlanSettingsUiDefaultScanNetwork ); + + CRepository* repository = CRepository::NewLC( + KCRUidWlanDeviceSettingsRegistryId ); + if ( repository ) + { + repository->Get( KWlanDefaultBGScanInterval, defaultScanInterval ); + } + CleanupStack::PopAndDestroy( repository ); + return defaultScanInterval; + } + else + { + return KWlanSettingsUiDefaultScanNetwork; + } + } + + +// ---------------------------------------------------------------------------- +// CWsfDbObserver::RunError +// ---------------------------------------------------------------------------- +// +#ifdef _DEBUG +TInt CWsfDbObserver::RunError( TInt aError ) + { + LOG_ENTERFN( "CWsfDbObserver::RunError" ); + LOG_WRITEF( "aError = %d", aError ); +#else +TInt CWsfDbObserver::RunError( TInt /*aError*/ ) + { +#endif + return KErrNone; + } + +