diff -r 63be7eb3fc78 -r f28ada11abbf wlanutilities/wlansniffer/engine/client/inc/wsfsession.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlanutilities/wlansniffer/engine/client/inc/wsfsession.h Wed Sep 01 12:20:32 2010 +0100 @@ -0,0 +1,354 @@ +/* +* Copyright (c) 2007-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: Class header for RWsfSession +* +*/ + + + + + +#ifndef R_WSFSESSION_H +#define R_WSFSESSION_H + +// EXTERNAL INCLUDES +#include + +// INTERNAL INCLUDES +#include "wsfcommon.h" + + +// FORWARD DECLARATIONS +class CWsfWlanInfoArray; +class CWsfEventHandler; +class MWsfStateChangeObserver; +class TWsfWlanInfo; +class CWsfActiveWaiter; + + +// CLASS DEFINITION +/** + * Client-side handle to server session + * + * RWsfSession is the client-side session of a connection to the server. + * It provides an interface through which the different scanning services + * can be reached and results obtained. + * + * @lib wsfclient.lib + * @since S60 5.0 + */ +NONSHARABLE_CLASS( RWsfSession ): public RSessionBase + { + friend class CWsfEventHandler; + + + public: // Constructor + + IMPORT_C RWsfSession(); + + + public: // New methods + + /** + * Initiates a connection to the server and also launches it + * if it was not running yet. + * @since S60 5.0 + */ + IMPORT_C TInt Connect(); + + /** + * Returns the version number of the session class + * @since S60 5.0 + * @return A version structure + */ + inline TVersion Version() const; + + /** + * Closes this session. + * @since S60 5.0 + */ + IMPORT_C void Close(); + + /** + * Subscribes to server events + * @since S60 5.0 + * @param aObserver The object which should be notified on event + */ + IMPORT_C void NotifyEventL( MWsfStateChangeObserver& aObserver ); + + /** + * Cancels the subscription + * @since S60 5.0 + */ + IMPORT_C void CancelNotifyEvent(); + + /** + * Sets the wlan scanning on if not already active + * @since S60 5.0 + * @return ETrue on success. + */ + IMPORT_C TBool EnableScanL(); + + /** + * Disables the scanning + * @since S60 5.0 + * @return ETrue on success. + */ + IMPORT_C TBool DisableScanL(); + + /** + * Queries the current scanning status. + * @since S60 5.0 + * @return ETrue if scanning is enabled, EFalse otherwise. + */ + IMPORT_C TBool IsScanEnabledL(); + + /** + * Requests the scan results from the server + * @since S60 5.0 + * @param aInfoArray Array for the scan results. Ownership not changed. + */ + IMPORT_C void UpdateWlanListL( CWsfWlanInfoArray* aInfoArray ); + + /** + * Asyncronous request to the server to return wlan list size + * @since S60 5.2 + * @param aPckg request result + * @param aStatus The request status object used to contain + * the completion status of the request. + */ + IMPORT_C void GetWlanListSize( TPckgBuf& aPckg, + TRequestStatus& aStatus ); + + + /** + * Asyncronous request to the server to return wlan list + * @since S60 5.2 + * @param aPckg request result + * @param aPtr wlan list + * @param aStatus The request status object used to contain + * the completion status of the request. + */ + IMPORT_C void GetWlanList( TPckgBuf& aPckg, TPtr8& aPtr, + TRequestStatus& aStatus ); + + /** + * Cancel all pending tasks. + * @since S60 5.0 + */ + IMPORT_C void CancelAll(); + + /** + * Return the connected wlan network name + * @since S60 5.0 + * @return The connected account name, or NULL if not connected + */ + IMPORT_C HBufC* ConnectedAccountNameL(); + + /** + * Return the connected wlan's details + * @since S60 5.0 + * @param aWlanInfo The wlaninfo object to fill + * @return ETrue if success, EFalse otherwise + */ + IMPORT_C TBool GetConnectedWlanDetailsL( TWsfWlanInfo& aWlanInfo ); + + /** + * Asyncronous request to the server to return connected wlan network + * @since S60 5.2 + * @param aPckg request result + * @param aWlanInfo The wlaninfo object to fill + * @param aStatus The request status object used to contain + * the completion status of the request. + */ + IMPORT_C void GetConnectedWlanDetails( TPckgBuf& aPckg, + TWsfWlanInfo& aWlanInfo, + TRequestStatus& aStatus ); + + /** + * Start monitoring events for the specified access point + * @since S60 5.0 + * @param aMonitoredIap The id of the IAP to be monitored + */ + IMPORT_C void MonitorAccessPointL( TUint32 aMonitoredIap ); + + /** + * Connect to the given WLAN IAP. The function requests the server, + * then starts a synchronous wait until the connection is established. + * @since S60 5.0 + * @param aIapId The id of the IAP to connect to + * @param aConnectOnly ETrue if Connect selected + * @param aPersistence The value of the persistence property + * @return KErrNone if managed to connect, otherwise error code + */ + IMPORT_C TInt ConnectWlanBearerL( TUint32 aIapId, + TBool aConnectOnly, + TWsfIapPersistence aPersistence = EIapPersistent ); + + /** + * Asyncronous request to the server to connect + * @since S60 5.2 + * @param aPckg request result + * @param aIapId The id of the IAP to connect to + * @param aConnectOnly ETrue if Connect selected + * @param aPersistence The value of the persistence property + * @param aStatus The request status object used to contain + * the completion status of the request. + */ + IMPORT_C void ConnectWlanBearer( TPckgBuf& aPckg, + TUint32 aIapId, + TBool aConnectOnly, + TWsfIapPersistence aPersistence, + TRequestStatus& aStatus ); + + /** + * Sets connection result + * @since S60 5.2 + * @param aResult The connection request result + */ + IMPORT_C void SetConnectWlanBearerResult( TInt aResult ); + + /** + * Sets the persistence property of the currently monitored IAP + * @since S60 5.0 + * @param aPersistence The value of the property + * @return ETrue on success, otherwise false + */ + IMPORT_C TBool SetIapPersistenceL( TWsfIapPersistence aPersistence ); + + /** + * Disconnect the current wlan connection + * @since S60 5.0 + * @return ETrue if there was an active connection and it was + * disconnected successfully, otherwise EFalse + */ + IMPORT_C TBool DisconnectWlanBearerL(); + + /** + * Asyncronous request to the server to disconnect + * @since S60 5.2 + * @param aPckg request result + * @param aStatus The request status object used to contain + * the completion status of the request. + */ + IMPORT_C void DisconnectWlanBearer( TPckgBuf& aPckg, + TRequestStatus& aStatus ); + + /** + * Request the server to make a forced scan + * @since S60 5.0 + * @return ETrue on success + */ + IMPORT_C TBool RequestScanL(); + + /** + * Asyncronous request to the server to make a scan + * @since S60 5.2 + * @param aPckg request result + * @param aStatus The request status object used to contain + * the completion status of the request. + */ + IMPORT_C void RequestScan( TPckgBuf& aPckg, + TRequestStatus& aStatus ); + + /** + * Queries if there is an active WLAN connection. + * @since S60 5.0 + * @return ETrue if there is an active WLAN connection, + * * EFalse otherwise. + */ + IMPORT_C TBool IsConnectedL(); + + /** + * Aborts the currently ongoing connecting process + * @since S60 5.0 + */ + IMPORT_C void AbortConnectingL(); + + /** + * Aborts the currently ongoing scanning process + * @since S60 5.0 + */ + IMPORT_C void AbortScanningL(); + + /** + * Controls the auto-disconnect timer in the server + * for owned connections + * @since S60 5.0 + * @param aAdcCommand Command bitmask for the timer, + * see TWsfAutoDisconnectCommand + * @return ETrue if the timer has been started (also if it had been + * started earlier), EFalse if the timer couldn't be started + * (e.g. because there is no owned connection). + */ + IMPORT_C TBool ControlDisconnectTimerL( TUint aAdcCommand ); + + + private: + /** + * Starts the server if it was not running already. + * @since S60 5.0 + * @return KErrNone on success, otherwise error code + */ + TInt StartServer(); + + + private: + /** + * Cancels the notifications from the server. + * Only called by CWsfEventHandler. + * @since S60 5.0 + */ + void DoCancelNotifyEvent(); + + /** + * Tries to restart the server after it died because of an error. + * Only called by CWsfEventHandler. + * @since S60 5.0 + * @param aObserver The object which should be notified on + * server events. (This call just passes the current + * observer of the event handler, which is needed + * for the initialisation.) + * @return ETrue if the restart succeeded + */ + TBool RecoverFromServerTermination( + MWsfStateChangeObserver& aObserver ); + + /** + * Stops the waiting for connection creation started by + * ConnectWlanBearerL. + * @since S60 5.0 + */ + void StopConnectingWait(); + + + private: // Data + /** + * Event handler active object for the server-generated events. Owned. + */ + CWsfEventHandler* iEventHandler; + + /** + * Indicates the result of the connecting process + */ + TInt iConnectingResult; + + /** + * Waiter to make the asynchronous connect call synchronous + * on client-side + */ + CActiveSchedulerWait* iConnWaiter; + }; + +#endif // R_WSFSESSION_H