diff -r b183ec05bd8c -r 19bba8228ff0 fotaapplication/fotaserver/src/FotaNetworkRegStatus.cpp --- a/fotaapplication/fotaserver/src/FotaNetworkRegStatus.cpp Tue Aug 31 16:04:06 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,392 +0,0 @@ -/* - * Copyright (c) 2005 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: GPRS and Wlan status getter for sending Generic Alerts - * - */ - -// INCLUDE FILES - -//System Includes -#include //GlobalRFsStates -#include //RConnectionMonitor -#include //Feature Manager -#include //Feature Manager -#include -#include -#include -#include - -//User Includes -#include "FotaServer.h" -#include "FotaNetworkRegStatus.h" - -// ----------------------------------------------------------------------------- -// CFotaNetworkRegStatus::NewL -// Symbian 2-Phase construction, NewL used for creating object of this class -// This method can leave -// ----------------------------------------------------------------------------- - -CFotaNetworkRegStatus* CFotaNetworkRegStatus::NewL(CFotaServer* aObserver) - { - CFotaNetworkRegStatus* self = CFotaNetworkRegStatus::NewLC(aObserver); - CleanupStack::Pop(self); - return self; - } - -// ----------------------------------------------------------------------------- -// CFotaNetworkRegStatus::NewLC -// Symbian 2-Phase construction, NewLC used for creating object of this class -// This method can leave -// ----------------------------------------------------------------------------- - -CFotaNetworkRegStatus* CFotaNetworkRegStatus::NewLC(CFotaServer* aObserver) - { - CFotaNetworkRegStatus* self = new (ELeave) CFotaNetworkRegStatus( - aObserver); - CleanupStack::PushL(self); - self->ConstructL(); - - return self; - } - -// ----------------------------------------------------------------------------- -// CFotaNetworkRegStatus::ConstructL -// Symbian 2-Phase construction, ConstructL used for constructing the members of this class -// This method can leave -// ----------------------------------------------------------------------------- - -void CFotaNetworkRegStatus::ConstructL() - { - iTimer.CreateLocal(); - iMonitor.ConnectL(); - } - -// ----------------------------------------------------------------------------- -// CFotaNetworkRegStatus::CFotaNetworkRegStatus -// C++ Constructor -// This method shouldn't leave -// ----------------------------------------------------------------------------- - -CFotaNetworkRegStatus::CFotaNetworkRegStatus(CFotaServer* aObserver) : - CActive(CActive::EPriorityStandard), iObserver(aObserver), iRetriesLeft( - KRetries), iGlobalRFState(EFalse) - { - CActiveScheduler::Add(this); // Add AO to current active scheduler - } - -// ----------------------------------------------------------------------------- -// CFotaNetworkRegStatus::~CFotaNetworkRegStatus -// C++ Desctructor -// This method shouldn't leave -// ----------------------------------------------------------------------------- - -CFotaNetworkRegStatus::~CFotaNetworkRegStatus() - { - Cancel(); - - iTimer.Close(); - iMonitor.Close(); - } - -// ----------------------------------------------------------------------------- -// CFotaNetworkRegStatus::DoCancel() -// Cancels currently active notifier, if such exists -// ----------------------------------------------------------------------------- -// -void CFotaNetworkRegStatus::DoCancel() - { - FLOG(_L("CFotaNetworkRegStatus::DoCancel >>")); - - if (IsActive()) - { - iTimer.Cancel(); - // Cancel(); - } - - FLOG(_L("CFotaNetworkRegStatus::DoCancel <<")); - } - -// ----------------------------------------------------------------------------- -// CFotaNetworkRegStatus::StartMonitoringL -// Monitors for connection status -// This method don't leave -// ----------------------------------------------------------------------------- - -void CFotaNetworkRegStatus::StartMonitoringL() - { - FLOG(_L("CFotaNetworkRegStatus::StartMonitoringL >>")); - - //Check offline state - FLOG(_L("Check GlobalRF state...")); - if (!iGlobalRFState) - { - iGlobalRFState = CheckGlobalRFState(); - } - - if (iGlobalRFState) - { - //Check registration state only if iGlobalRFState is true - FLOG(_L("Check registration state...")); - if (CheckNetworkRegStateL()) - { - //If both are successful report complete - FLOG( - _L("Network Registration is successful, sending Status as success to FotaServer")); - iObserver->ReportNetworkStatus(ETrue); - return; - } - } - //If one of them is not successful, start timer and retry KRetries times... - - if (--iRetriesLeft >= 0) - { - FLOG(_L("Retry count... [%d]"), KRetries - iRetriesLeft); - iTimer.After(iStatus, KTimeInterval); - if (!IsActive()) - SetActive(); - } - else - { - FLOG( - _L("Maximum retries (%d) reached, sending Status as failure to FotaServer"), - KRetries); - iObserver->ReportNetworkStatus(IsWlanSupportedL()); - } - - FLOG(_L("CFotaNetworkRegStatus::StartMonitoringL <<")); - } - -// ----------------------------------------------------------------------------- -// CFotaNetworkRegStatus::RunL() -// Called when event accomplished -// ----------------------------------------------------------------------------- -// -void CFotaNetworkRegStatus::RunL() - { - FLOG(_L("CFotaNetworkRegStatus::RunL >>")); - - if (iStatus == KErrNone) - { - StartMonitoringL(); - } - else - { - iObserver->ReportNetworkStatus(EFalse); - } - - FLOG(_L("CFotaNetworkRegStatus::RunL <<")); - } - -// ----------------------------------------------------------------------------- -// CFotaNetworkRegStatus::RunError -// Called when RunL leaves -// This method can't leave -// ----------------------------------------------------------------------------- - -TInt CFotaNetworkRegStatus::RunError(TInt aError) - { - FLOG(_L("CFotaNetworkRegStatus::RunL >>")); - iObserver->ReportNetworkStatus(EFalse); - FLOG(_L("CFotaNetworkRegStatus::RunL <<")); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CFotaNetworkRegStatus::CheckGlobalRFState -// Checks for GlobalRFState, set by Starter -// This method can't leave -// ----------------------------------------------------------------------------- - -TBool CFotaNetworkRegStatus::CheckGlobalRFState() - { - FLOG(_L("CFotaNetworkRegStatus::CheckGlobalRFState >>")); - - RProperty prop; - TInt val = KErrNone; - TInt err = KErrNone; - TInt status = EFalse; - - err = prop.Get(KPSUidStartup, KPSGlobalSystemState, val); - if (err == KErrNone && val == ESwStateNormalRfOn) - { - //Phone is not offline. Check for Network Registration status - FLOG(_L("Phone is online. Check for Network Registration status")); - status = ETrue; - } - else - { - //Phone is offline. No Network activities allowed. - FLOG(_L("Phone is offline. No Network activities allowed.")); - status = EFalse; - } - FLOG(_L("CFotaNetworkRegStatus::CheckGlobalRFState, status = %d <<"), - status); - return status; - } - -// ----------------------------------------------------------------------------- -// CFotaNetworkRegStatus::CheckNetworkRegStatusL -// Checks for Network registration status -// This method can leave -// ----------------------------------------------------------------------------- - -TBool CFotaNetworkRegStatus::CheckNetworkRegStateL() - { - FLOG(_L("CFotaNetworkRegStatus::CheckNetworkRegStateL >>")); - - TBool status = EFalse; - - TInt registrationStatus(KErrNone); - TRequestStatus status1; - iMonitor.GetIntAttribute(EBearerIdGSM, // See bearer ids from TConnMonBearerId - 0, KNetworkRegistration, registrationStatus, status1); - User::WaitForRequest(status1); - - if (status1.Int() == KErrNone) - { - switch (registrationStatus) - { - case ENetworkRegistrationHomeNetwork: - case ENetworkRegistrationRoaming: - { - status = ETrue; - break; - } - default: - { - /* Includes - ENetworkRegistrationNotAvailable: - ENetworkRegistrationUnknown: - ENetworkRegistrationNoService: - ENetworkRegistrationEmergencyOnly: - ENetworkRegistrationSearching: - ENetworkRegistrationBusy: - ENetworkRegistrationDenied:*/ - status = EFalse; - break; - } - } - } - - FLOG(_L("CFotaNetworkRegStatus::CheckNetworkRegStateL, status = %d <<"), - status); - return status; - } - -// ----------------------------------------------------------------------------- -// CFotaNetworkRegStatus::IsWlanSupportedL -// Checks whether Wlan supported on device and active -// This method can leave -// ----------------------------------------------------------------------------- - -TBool CFotaNetworkRegStatus::IsWlanSupportedL() - { - FLOG(_L("CFotaNetworkRegStatus::IsWlanSupportedL >>")); - - TBool status = EFalse; - - FeatureManager::InitializeLibL(); - if (FeatureManager::FeatureSupported(KFeatureIdProtocolWlan)) // check for feature enabled - { - status = ETrue; - } - - FeatureManager::UnInitializeLib(); - -#if defined(__WINS__) - status = ETrue; -#endif - - FLOG(_L("CFotaNetworkRegStatus::IsWlanSupportedL, status = %d <<"), - status); - return status; - } - -// ----------------------------------------------------------------------------- -// CFotaNetworkRegStatus::IsConnectionPossibleL -// Checks whether the network connection is possible in the given IAP Id -// This method can leave -// ----------------------------------------------------------------------------- -/*TBool CFotaNetworkRegStatus::IsConnectionPossibleL(TInt aIapid) - { - FLOG(_L("CFotaNetworkRegStatus::IsConnectionPossibleL >>")); - TBool status(EFalse); - - TUint32 bearer = FindBearerL(aIapid); - if (bearer == KUidPacketDataBearerType) - { - FLOG(_L("Bearer is Packet data")); - if (CheckGlobalRFState() && CheckNetworkRegStateL()) - { - FLOG(_L("Network is up and connection is possible ")); - status = ETrue; - } - else - { - FLOG(_L("Network is not up and connection is not possible ")); - status = EFalse; - } - } - else if (bearer == KUidWlanBearerType)//for wlan or other bearers - { - FLOG(_L("Bearer is wlan and proceeding for download ")); - //proceed & this else loop to be removed - status = ETrue; - } - else - { - FLOG(_L("Bearer is not packet data or WLAN")); - } - - FLOG(_L("CFotaNetworkRegStatus::IsConnectionPossibleL, status = %d <<"), - status); - return status; - }*/ - -// ---------------------------------------------------------------------------------------- -// CFotaDownload::FindBearerId -// Finds the Bearer Id for a given IAP Id -// ---------------------------------------------------------------------------------------- -/*TUint32 CFotaNetworkRegStatus::FindBearerL(TInt aIapId) - { - FLOG(_L("CFotaNetworkRegStatus::FindBearerL: %d"), aIapId); - TUint32 bearer = 0; - TInt err(KErrNone); - // Query CM Id - TInt cmId(aIapId); - RCmManagerExt CmManagerExt; - TRAP( err, CmManagerExt.OpenL() ); - FLOG(_L("CmManagerExt.OpenL() with error as %d"), err); - if (err == KErrNone) - { - RCmConnectionMethodExt cm; - TRAP( err, cm = CmManagerExt.ConnectionMethodL( cmId ) ); - FLOG(_L("CmManagerExt.ConnectionMethodL with error as %d"), err); - if (err == KErrNone) - { - CleanupClosePushL(cm); - FLOG(_L("cm pushed to cleanupstack ")); - bearer = cm.GetIntAttributeL(CMManager::ECmBearerType); - FLOG(_L("bearer is %d "), bearer); - CleanupStack::PopAndDestroy(); // cm - FLOG(_L("cm poped & destroyed from cleanupstack ")); - } - - CmManagerExt.Close(); - FLOG(_L("CmManagerExt closed ")); - } - FLOG(_L("CFotaNetworkRegStatus::FindBearerL end with bearer: %d"), bearer); - return bearer; - }*/ - -// End of File