--- a/internetradio2.0/networkcontrollerinc/irnetworkcontroller.h Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,513 +0,0 @@
-/*
-* Copyright (c) 2006-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: Controls the network interface(s) for Internet Radio.
-*
-*/
-
-
-#ifndef CIRNETWORKCONTROLLER_H
-#define CIRNETWORKCONTROLLER_H
-
-#include <badesca.h>
-#include <es_sock.h>
-#include <rhttpsession.h>
-
-#include <comms-infras/cs_mobility_apiext.h>
-#include "iractivenetworkobserver.h"
-
-
-#include "irnetworkcontrollerobserver.h"
-#include "irdatatransfertracker.h"
-
-class CIRNetworkObserver;
-class CIRSettings;
-class MIRActiveNetworkObserver;
-
-/**
- * This class provides the interface to IRNetworkController component
- *
- * @code
- * // CIRNetworkController follows a singleton pattern
- * // hence the destructor is private and to destroy it we need to use an API
- * // For creating a network controller which has provision for network monitoring
- * // we need to pass the reference of the observer which should derive from
- * // MIRNetworkControllerObserver class the network even observed will be
- * // indicated to the observer with the call back IRNetworkEvent() function
- * CIRNetworkController* iNetworkController = CIRNetworkController::NewL(iObserver)
- *
- * // For creating a network controller which does not have provision for network monitoring
- * // we use the overloaded NewL() of CIRNetworkController
- * CIRNetworkController* iNetworkController = CIRNetworkController::NewL()
- *
- * // This API is used to destroy the network controller handle
- * iNetworkController->DestroyNetworkController();
- *
- * // This API returns the instance of RConnection
- * // The same RConnection object is used across the entire iRAPP components to
- * // provide central arbiter and monitoring of Network Connection
- * iNetworkController->GetIRConnection();
- *
- * // This API returns the instance of RSocketServ
- * // The same RSocketServ object is used across the entire iRAPP components to
- * // provide central arbiter and monitoring of Network Connection
- * iNetworkController->GetIRSocketServer();
- *
- * // This API returns a pointer to the x-wap-profile string.
- * // The ownership of the object is passed onto the caller
- * iNetworkController->GetWapProfString();
- *
- * // This API returns a pointer to the UAProf string.
- * // The ownership of the object is passed onto the caller
- * iNetworkController->GetUAProfString();
- *
- * // This API returns ETrue of network connection is up and running EFalse
- * // otherwise
- * iNetworkController->GetNetworkStatus();
- *
- * // This API returns the IAP id of the connected connection
- * // this is used by download manager for choosing the access point
- * iNetworkController->GetIAPId();
- *
- * // This API is called to initiate access point selection
- * iNetworkController->ChooseAccessPointL();
- *
- * // This API returns ETrue if the phone is in offline mode, EFalse
- * // otherwise
- * iNetworkController->IsOfflineMode();
- *
- * // This API returns ETrue if WLan is supported on the device, EFalse
- * // otherwise
- * iNetworkController->IsWlanSupported();
- *
- * // This API allows the caller to reset the network connection status
- * iNetworkController->ResetConnectionStatus();
- *
- * // This API returns the type of connection open
- * iNetworkController->IdentifyConnectionType();
- *
- * @endcode
- *
- */
-
-NONSHARABLE_CLASS(CIRNetworkController): public CActive,
- public MIRDataTransferObserver,
- public MMobilityProtocolResp
- {
-
-public:
-
- /**
- * Creates an Instance of CIRNetworkController
- * @return CIRNetworkController*
- */
- IMPORT_C static CIRNetworkController* OpenL(MIRNetworkController* aObserver = NULL);
-
- /**
- * Conditionally destroys the IRNetworkController object
- */
- IMPORT_C void Close();
-
- /**
- * Default C++ Destructor
- */
- ~CIRNetworkController();
-
- /**
- * Returns the instance of RConnection
- * The same RConnection object is used across the entire iRAPP components to
- * provide central arbiter and monitoring of Network Connection
- * @return RConnection&
- */
- IMPORT_C RConnection& GetIRConnection();
-
- /**
- * Returns the instance of RSocketServ
- * The same RSocketServ object is used across the entire iRAPP components to
- * provide central arbiter and monitoring of Network Connection
- * @return RSocketServ&
- */
- IMPORT_C RSocketServ& GetIRSocketServer();
-
- /**
- * Returns a HBufC pointer to the x-wap-profile string
- * Transfers the ownership of the returned HBufC8 object
- * The caller must takecare of deleting the returned object
- * @return HBufC8*
- */
- IMPORT_C HBufC8* GetWapProfString();
-
- /**
- * Returns a HBufC pointer to the UAProf string
- * Transfers the ownership of the returned HBufC8 object
- * The caller must takecare of deleting the returned object
- * @return HBufC8*
- */
- IMPORT_C HBufC8* GetUAProfString();
-
- /**
- * Returns the variable which indicates if connection is active or not
- * @return TBool iIsConnectedToNetwork
- */
- IMPORT_C TBool GetNetworkStatus() const;
-
- /**
- * Gets the IAP Id of the chosen IAP
- * @return TInt Error code.
- */
- IMPORT_C TInt GetIAPId(TUint32& aIapId) const;
-
- /**
- * Configures the Access Point which is used by all the components for network connectivity
- */
- IMPORT_C void ChooseAccessPointL(TBool aDefaultConnection = ETrue);
-
- /*
- * cancel configuring access point
- */
- IMPORT_C void CancelConnecting();
-
- /**
- * This api is used to determine if the phone is in offline mode
- * @return ETrue if the phone is in offline mode else EFalse
- */
- IMPORT_C TBool IsOfflineMode();
-
- /**
- * This api is used to determine if the phone supports WLan usage
- * @return ETrue if the phone supports else EFalse
- */
- IMPORT_C TBool IsWlanSupported() const;
-
- /**
- * Reset the connection status to Disconnected state
- */
- IMPORT_C void ResetConnectionStatus();
-
- /**
- * Used to determine the type of connection
- * @return enum describing the type of connection ( GPRS/3G/WiFi )
- */
- IMPORT_C TIRConnectionType IdentifyConnectionType() const;
-
- /**
- * Binds DataTranseferTracker instance to HTTPSession (Byte Counter Impl)
- */
- IMPORT_C void InitializeHttpSessionL(const RHTTPSession& aHTTPSession,
- MIRDataTransferTracker::TIRTransferCategory aCategory );
-
- /**
- * Binds LogoDataTranseferTracker instance to Logo HTTPSession (Byte Counter Impl)
- */
- IMPORT_C void RegisterLogoDataTransferTrackerL( RHTTPSession& aHTTPSession );
-
- /**
- * DataTranseferTracker instance for observers and Raw sockets (Byte Counter Impl)
- */
- IMPORT_C MIRDataTransferTracker& DataTransferTracker();
-
- /**
- * LogoDataTranseferTracker instance for observers and Raw sockets (Byte Counter Impl)
- */
- IMPORT_C MIRDataTransferTracker& LogoDataTransferTracker();
-
- /**
- * Method to receive notification when logo is downloaded
- */
- void HandleDataTransferEventL( const MIRDataTransferTracker::TIRDataTransferPckg& aData );
-
- /*
- * Registers the observer that will be notified for
- * a network connection.
- * Observer requires notification to reissue pending request
- */
- IMPORT_C void RegisterActiveNetworkObserverL(MIRActiveNetworkObserver& aActiveNetworkObserver);
-
- /**
- * DeleteRoamingObserver()
- * Used to remove an observer for roaming events from the observer array
- */
- IMPORT_C void DeleteActiveNetworkObserver(MIRActiveNetworkObserver& aActiveNetworkObserver);
-
- /**
- * Notifies all observers whose network request is active
- * to reissue the request
- * NotifyActiveNetworkObserversL()
- */
- IMPORT_C void NotifyActiveNetworkObserversL(TIRNetworkEvent aEvent);
-
-
- /**
- * Notifies all observers whose network request is active
- * to reset the pending request status
- * ResetPendingRequests()
- */
- void ResetPendingRequests(TBool aValue);
-
-protected:
-
- /**
- * Derived from CActive
- */
-
- /**
- * The function is called by the active scheduler when a request completion event occurs,
- */
- virtual void RunL();
-
- /**
- * Cancels the pending requests on the CIRNetworkController Active object
- */
- virtual void DoCancel();
-
-
-public: // From MMobilityProtocolResp //to be changed to private after demo
-
- //Added for ALR/SNAP
- void PreferredCarrierAvailable( TAccessPointInfo aOldAPInfo,
- TAccessPointInfo aNewAPInfo,
- TBool aIsUpgrade,
- TBool aIsSeamless );
- void NewCarrierActive( TAccessPointInfo aNewAPInfo, TBool aIsSeamless );
- void Error( TInt aError );
-
-public:
- /**
- * IsHandingOverConnection()
- * Indicates if the Hand over of Network connection has happened
- */
- IMPORT_C TBool IsHandingOverConnection();
-
- void ResetHandingOverConnection();
-
-private:
-
- /**
- * Used to determine the current profile
- * @return TInt describing the profile value
- */
- TInt DetermineCurrentProfile() const;
-
- /**
- * Pops up the access point list.
- * @return TBool ETrue feature is supported EFalse otherwise
- */
- TBool CheckFeatureL(TInt aFeatureId) const;
-
- /**
- * Default C++ Constructor
- */
- CIRNetworkController();
-
- /**
- * Second Phase construction.
- */
- void ConstructL();
-
- /**
- * Second Phase construction.
- * @param aObserver pointer to the observer class if an observer is needed
- */
- void ConstructL( MIRNetworkController* aObserver );
-
- /**
- * Determines the available access points using CommsDat Api
- */
- void QueryCommsForIAPL();
-
- /**
- * Queries the system and extracts the UAProf information
- * Used by IRDataProvider and IRStreamSource
- */
- void BuildUAProfStringL();
-
- /**
- * Retrievs the string from Central Repository for the specified key and cen rep uid
- * Transfers the ownership of the returned HBufC object
- * The caller must takecare of deleting the returned object*
- * @param aRepositoryUid specifies the Uid of the repository to be used
- * @param aKey specifies the key to be used
- * @return HufC* pointer to the retrieved string
- */
- HBufC* CentralRepositoryStringValueL(const TUid& aRepositoryUid,
- TUint32 aKey ) const;
-
- /**
- * Pops up the access point list.
- * @return TBool ETrue is we need to proceed with access point selection EFalse otherwise
- */
- TBool DisplayAccessPointListL();
-
- /**
- * Validates the access point availablity etc.
- */
- TBool ValidateAccessPointsL();
-
- /**
- * Handles the success case of Network connection in RunL
- */
- void HandleRunLSuccessL();
-
- /**
- * Handles the error case of Network connection in RunL
- */
- void HandleRunLErrorL(TInt aStatusCode);
-
-public:
- /**
- * Indicates if ChooseAccessPointL is called
- */
- TBool iIsConnectRequestIssued;
-
-private:
- /**
- * This is the physical connection we are putting up
- */
- RConnection* iIRNetworkConnection;
-
- /**
- * Actual RSocketServ instance
- */
- RSocketServ iIRSocketServer;
-
- /**
- * Number of objects currently referring to the singleton object CIRNetworkController
- */
- TInt iSingletonInstances;
-
- /**
- * Used to access Settings object
- */
- CIRSettings* iIRSettings;
-
- /**
- * IR Network component observer
- */
- MIRNetworkController* iObserver;
-
- /**
- * Enum declaration which indicate the network status
- */
- enum TIRNetworkConnectionStatus
- {
- EIRNetworkConnectionActive = 1,
- EIRNetworkConnectionInActive
- };
-
- /**
- * Variable to keep track of the RConnection connection status
- */
- TIRNetworkConnectionStatus iNetworkConnectionState;
-
- /**
- * Enum declaration which indicate the connection to RSocketServ status
- */
- enum TIRSocketServerConnectionStatus
- {
- EIRSocketServerActive = 1,
- EIRSocketServerInActive
- };
-
- /**
- * Variable to keep track of the RSocketServ connection status
- */
- TIRSocketServerConnectionStatus iSocketServerConnectionState;
-
- /**
- * Enum declaration to indicate the NetworkController state
- */
- enum TIRNetworkControllerState
- {
- EInActive = 1,
- EConnectingToNetwork
- };
-
- /**
- * Specifies the Network controller state
- */
- TIRNetworkControllerState iNetworkControllerState;
-
- /**
- * Indicates the current network connection status
- */
- TBool iIsConnectedToNetwork;
-
- /**
- * Network observer
- */
- CIRNetworkObserver* iIRNetworkObserver;
-
- /**
- * Pointer to UAProf string
- */
- HBufC8* iIRUAProf;
-
- /**
- * Pointer to x-wap-profile string
- */
- HBufC8* iIRWapProf;
-
- /**
- * Access point list for settings view
- */
- CDesCArrayFlat* iIapList;
-
- /**
- * Indicates if WiFi is supported or not
- */
- TBool iIsWlanSupported;
-
- /**
- * Used to determine if connection is open or not
- */
-
- TBool iConnectionPresent;
-
- /**
- * Tracks data transferred over the network for the connection.
- * Owned.
- */
-
- CIRDataTransferTracker* iDataTransferTracker;
-
- /**
- * Tracks data transferred over the network for the Logo session.
- * Owned.
- */
-
- CIRDataTransferTracker* iLogoDataTransferTracker;
-
-
- //Added for ALR/SNAP
-
- /**
- * Observes the preferred network within defined destination
- */
- CActiveCommsMobilityApiExt* iMobility;
-
-
- /**
- * ETrue if the ALR handover is ongoing
- */
- TBool iHandingOver;
-
-
- /**
- * Array of observers for change in roaming events
- */
- RPointerArray<MIRActiveNetworkObserver> iActiveNetworkObserverArray;
-
- TBool iDefaultConnection;
- };
-
-#endif //CIRNETWORKCONTROLLER_H