diff -r 608f67c22514 -r 896e9dbc5f19 internetradio2.0/networkcontrollerinc/irnetworkcontroller.h --- 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 -#include -#include - -#include -#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 iActiveNetworkObserverArray; - - TBool iDefaultConnection; - }; - -#endif //CIRNETWORKCONTROLLER_H