diff -r 608f67c22514 -r 896e9dbc5f19 internetradio2.0/networkcontrollersrc/irnetworkobserver.cpp --- a/internetradio2.0/networkcontrollersrc/irnetworkobserver.cpp Tue Jul 06 14:07:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,455 +0,0 @@ -/* -* Copyright (c) 2006-2007 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: ?Description -* -*/ - - -#include "irdebug.h" -#include "irnetworkobserver.h" -#include "irnetworkcontroller.h" - -// --------------------------------------------------------------------------- -// CIRNetworkObserver::NewL -// Creates an Instance of CIRNetworkObserver -// --------------------------------------------------------------------------- -// -EXPORT_C CIRNetworkObserver *CIRNetworkObserver::NewL(CIRNetworkController *aNetworkController) - { - IRLOG_DEBUG( "CIRNetworkObserver::NewL - Entering" ); - CIRNetworkObserver *self = NewLC(aNetworkController); - CleanupStack::Pop(self); - IRLOG_DEBUG( "CIRNetworkObserver::NewL - Exiting." ); - return self; - } - -// --------------------------------------------------------------------------- -// CIRNetworkObserver::~CIRNetworkObserver() -// Default Destructor -// --------------------------------------------------------------------------- -// -CIRNetworkObserver::~CIRNetworkObserver() - { - IRLOG_DEBUG( "CIRNetworkObserver::~CIRNetworkObserver - Entering" ); - Cancel(); - iIRConnectionMonitor.CancelNotifications(); - iIRConnectionMonitor.Close(); - IRLOG_DEBUG( "CIRNetworkObserver::~CIRNetworkObserver - Exiting." ); - } - -// --------------------------------------------------------------------------- -// CIRNetworkObserver::InitializeNetworkObserver() -// Initializes the Connection monitor -// --------------------------------------------------------------------------- -// -void CIRNetworkObserver::InitializeNetworkObserver() - { - IRLOG_DEBUG( "CIRNetworkObserver::InitializeNetworkObserver - Entering" ); - iConnectionId = 0; - if(!IsActive()) - { - iObserverState = EInitializing; - iIRConnectionMonitor.GetConnectionCount(iConnectionCount,iStatus); - SetActive(); - } - IRLOG_DEBUG( "CIRNetworkObserver::InitializeNetworkObserver - Exiting." ); - } - -// --------------------------------------------------------------------------- -// CIRNetworkObserver::SetObserver(MIRNetworkController* aObserver) -// Set the observer used to communicate with the IRNetworkController -// --------------------------------------------------------------------------- -// -void CIRNetworkObserver::SetObserver(MIRNetworkController* aObserver) - { - IRLOG_DEBUG( "CIRNetworkObserver::SetObserver - Entering" ); - iMonitorObserver = aObserver; - iMonitoringRequired = ETrue; - IRLOG_DEBUG( "CIRNetworkObserver::SetObserver - Exiting." ); - } - -// --------------------------------------------------------------------------- -// CIRNetworkObserver::CIRNetworkObserver() -// Default Constructor -// --------------------------------------------------------------------------- -// -CIRNetworkObserver::CIRNetworkObserver(CIRNetworkController *aNetworkController): - CActive( CActive::EPriorityStandard ), iNetworkController(aNetworkController) - { - IRLOG_DEBUG( "CIRNetworkObserver::CIRNetworkObserver - Entering" ); - // Add the AO to the ActiveScheduler - CActiveScheduler::Add( this ); - IRLOG_DEBUG( "CIRNetworkObserver::CIRNetworkObserver - Exiting." ); - } - -// --------------------------------------------------------------------------- -// Creates an Instance of CIRNetworkObserver -// --------------------------------------------------------------------------- -// -CIRNetworkObserver *CIRNetworkObserver::NewLC(CIRNetworkController *aNetworkController ) - { - IRLOG_DEBUG( "CIRNetworkObserver::NewLC - Entering " ); - CIRNetworkObserver *self = new( ELeave )CIRNetworkObserver(aNetworkController); - CleanupStack::PushL( self ); - self->ConstructL(); - IRLOG_DEBUG( "CIRNetworkObserver::NewLC - Exiting." ); - return self; - } - -// --------------------------------------------------------------------------- -// CIRNetworkObserver::ConstructL() -// Second Phase construction. -// --------------------------------------------------------------------------- -// -void CIRNetworkObserver::ConstructL() - { - IRLOG_DEBUG( "CIRNetworkObserver::ConstructL - Entering" ); - iIRConnectionMonitor.ConnectL(); - iIRConnectionMonitor.NotifyEventL(*this); - iMonitoringRequired = EFalse; - IRLOG_DEBUG( "CIRNetworkObserver::ConstructL - Exiting." ); - } - -// --------------------------------------------------------------------------- -// CIRNetworkObserver::RunL() -// The function is called by the active scheduler when a request completion event occurs, -// --------------------------------------------------------------------------- -// -void CIRNetworkObserver::RunL() - { - IRLOG_DEBUG( "CIRNetworkObserver::RunL - Entering" ); - IRNetworkObserverRunL(); - IRLOG_DEBUG( "CIRNetworkObserver::RunL - Exiting" ); - } - -// --------------------------------------------------------------------------- -// CIRNetworkObserver::DoCancel() -// Cancels the pending requests on the CIRNetworkObserver Active object -// --------------------------------------------------------------------------- -// -void CIRNetworkObserver::DoCancel() - { - IRLOG_DEBUG( "CIRNetworkObserver::DoCancel" ); - } - -// --------------------------------------------------------------------------- -// CIRNetworkObserver::RunError() -// Handles a leave occurring in the request completion event handler RunL() -// --------------------------------------------------------------------------- -// -TInt CIRNetworkObserver::RunError(TInt /*aError*/) - { - IRLOG_DEBUG( "CIRNetworkObserver::RunError" ); - iNetworkController->ResetHandingOverConnection(); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CIRNetworkObserver::EventL(const CConnMonEventBase &aConnMonEvent) -// Derived from MConnectionMonitorObserver -// Implements the EventL method which is called when there is a network event -// --------------------------------------------------------------------------- -// -void CIRNetworkObserver::EventL(const CConnMonEventBase &aConnMonEvent) - { - IRLOG_INFO4( "CIRNetworkObserver::EventL - Event type %d for connection %d, iConnectionId=%d", - aConnMonEvent.EventType(), aConnMonEvent.ConnectionId(), iConnectionId ); - switch(aConnMonEvent.EventType()) - { - case EConnMonCreateConnection: - { - //Triggered when a new connection has been been created - // for future implementation - } - break; - - case EConnMonDeleteConnection: - { - //Triggered when a connection has been been deleted. - if( aConnMonEvent.ConnectionId() == iConnectionId ) - { - if(iMonitoringRequired) - { - if (iMonitorObserver) - { - iMonitorObserver->IRNetworkEventL(ENetworkConnectionDisconnected); - } - else - { - iNetworkController->NotifyActiveNetworkObserversL(ENetworkConnectionDisconnected); - } - } - } - } - break; - - case EConnMonCreateSubConnection: - { - //Triggered when a new subconnection has been been created - // for future implementation - } - break; - - case EConnMonDeleteSubConnection: - { - //Triggered when a subconnection has been been deleted - // for future implementation - } - break; - - case EConnMonDownlinkDataThreshold: - { - // for future implementation - } - break; - - case EConnMonUplinkDataThreshold: - { - // for future implementation - } - break; - - case EConnMonNetworkStatusChange: - { - // for future implementation - } - break; - - case EConnMonConnectionStatusChange: - { - //Triggered when the status of some connection changes. - // for future implementation - } - break; - - case EConnMonConnectionActivityChange: - { - //Triggered when some connection changes from active to idle or vice versa - // for future implementation - } - break; - - case EConnMonNetworkRegistrationChange: - { - // for future implementation - } - break; - - case EConnMonBearerChange: - { - //Triggered when bearer type (GPRS / Edge GPRS / WCDMA) changes - // for future implementation - } - break; - - case EConnMonSignalStrengthChange: - { - // for future implementation - } - break; - - case EConnMonBearerAvailabilityChange: - { - //Triggered when the availability of some bearer changes - // for future implementation - } - break; - - case EConnMonIapAvailabilityChange: - { - // for future implementation - } - break; - - case EConnMonTransmitPowerChange: - { - // for future implementation - } - break; - default: - { - // no implementation - } - break; - } - IRLOG_DEBUG( "CIRNetworkObserver::EventL - Exiting." ); - } - -// --------------------------------------------------------------------------- -// CIRNetworkObserver::IdentifyConnection() -// Identifies the type of connection we have used to get connected to network -// --------------------------------------------------------------------------- -// -void CIRNetworkObserver::IdentifyConnection() - { - IRLOG_DEBUG( "CIRNetworkObserver::IdentifyConnection - Entering" ); - if(!IsActive()) - { - iObserverState = EGettingConnectionInfo; - iIRConnectionMonitor.GetConnectionInfo( - iConnectionCount,iConnectionId,iSubConnectionCount); - // O Indicates method applies to connection - iIRConnectionMonitor.GetIntAttribute( - iConnectionId,0,KBearer,iConnectionType,iStatus); - SetActive(); - } - IRLOG_DEBUG( "CIRNetworkObserver::IdentifyConnection - Exiting." ); -} - -// --------------------------------------------------------------------------- -// CIRNetworkObserver::GetIAPId() -// Retrieves the IAP Id of the connection -// --------------------------------------------------------------------------- -// -void CIRNetworkObserver::GetAPId() - { - IRLOG_DEBUG( "CIRNetworkObserver::GetIAPId - Entering" ); - if(!IsActive()) - { - iObserverState = EGettingIAPId; - iIRConnectionMonitor.GetConnectionInfo( - iConnectionCount,iConnectionId,iSubConnectionCount); - // O in RConnectionMonitor::GetIntAttribute indicates method applies to connection - iIRConnectionMonitor.GetUintAttribute( - iConnectionId,0,KIAPId,iIAPId,iStatus); - SetActive(); - } - IRLOG_DEBUG( "CIRNetworkObserver::GetIAPId - Exiting." ); - } - -// --------------------------------------------------------------------------- -// CIRNetworkObserver::IRNetworkObserverRunL() -// Utility function used just to keep RunL() small -// --------------------------------------------------------------------------- -// -void CIRNetworkObserver::IRNetworkObserverRunL() - { - IRLOG_DEBUG( "CIRNetworkObserver::IRNetworkObserverRunL - Entering" ); - switch(iObserverState) - { - case EInitializing: - { - if( iStatus.Int() == KErrNone ) - { - // Initializing the Connection Monitor sucessful - IdentifyConnection(); - } - else - { - // Error initializing the connection monitor - iNetworkController->ResetHandingOverConnection(); - } - } - break; - - case EGettingConnectionInfo: - { - if( iStatus.Int() == KErrNone ) - { - iIsIAPIdAvailable = EFalse; - GetAPId(); - } - else - { - // Error initializing the connection monitor - iNetworkController->ResetHandingOverConnection(); - } - } - break; - - case EGettingIAPId: - { - iIsIAPIdAvailable = ETrue; - switch(iConnectionType) - { - case EBearerGPRS: - { - iIRConnectionType = EGprs; - } - break; - - case EBearerEdgeGPRS: - { - iIRConnectionType = EEdge; - } - break; - - case EBearerWLAN: - { - iIRConnectionType = EWiFi; - } - break; - - case EBearerWCDMA: - { - iIRConnectionType = EWcdma; - } - break; - - case EBearerCDMA2000: - { - iIRConnectionType = ECdma2000; - } - break; - - default: - { - #ifdef __WINS__ - iIRConnectionType = EGprs; - #endif - } - break; - } - - - if (iMonitoringRequired) - { - if (iMonitorObserver) - { - // Intimate the connection established event - iMonitorObserver->IRNetworkEventL(ENetworkConnectionEstablished); - } - else - { - iNetworkController->NotifyActiveNetworkObserversL(ENetworkConnectionEstablished); - } - } - - iNetworkController->ResetHandingOverConnection(); - } - break; - - default: - { - // no implementation - } - break; - } - IRLOG_DEBUG( "CIRNetworkObserver::IRNetworkObserverRunL - Exiting." ); - } - -// --------------------------------------------------------------------------- -// CIRNetworkObserver::SetNetworkMonitoring() -// Sets network monitoring observer to decide whether network monitoring is required. -// --------------------------------------------------------------------------- -// -void CIRNetworkObserver::SetNetworkMonitoring(TBool aValue) - { - IRLOG_DEBUG( "CIRNetworkObserver::SetNetworkMonitoring - Entering" ); - - iMonitoringRequired = aValue; - - IRLOG_DEBUG( "CIRNetworkObserver::SetNetworkMonitoring - Exiting" ); - - }