--- a/fotaapplication/fotaserver/FotaServer/src/FotaNetworkRegStatus.cpp Thu Aug 19 10:44:50 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,391 +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 <startupdomainpskeys.h> //GlobalRFsStates
-#include <rconnmon.h> //RConnectionMonitor
-#include <featmgr.h> //Feature Manager
-#include <features.hrh> //Feature Manager
-#include <cmconnectionmethoddef.h>
-#include <cmmanagerext.h>
-#include <cmpluginwlandef.h>
-#include <cmpluginpacketdatadef.h>
-
-//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