--- a/wlanutilities/wlansniffer/engine/server/inc/wsfwlanscanner.h Thu Aug 19 10:59:40 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,604 +0,0 @@
-/*
-* 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 CWsfWlanScanner
-*
-*/
-
-
-
-#ifndef C_WSFWLANSCANNER_H
-#define C_WSFWLANSCANNER_H
-
-// EXTERNAL INCLUDES
-#include <e32base.h>
-#include <wlanmgmtcommon.h>
-#include <commsdattypesv1_1.h>
-#include <cmmanagerext.h>
-
-
-
-// INTERNAL INCLUDES
-#include "wsfwlanscannerobserver.h"
-#include "wsfwlanmonitorobserver.h"
-#include "wsfwlanscanintervalchangeobserver.h"
-#include "wsfwlaninfo.h"
-
-
-const TUint8 TX_RATE_BASIC_MASK = 0x80;
-
-
-/**
- * Defines the possible TX rate values.
- */
-typedef enum _core_tx_rate_e
- {
- core_tx_rate_none = 0x00000000,
- core_tx_rate_1mbit = 0x00000001,
- core_tx_rate_2mbit = 0x00000002,
- core_tx_rate_5p5mbit = 0x00000004,
- core_tx_rate_6mbit = 0x00000008,
- core_tx_rate_9mbit = 0x00000010,
- core_tx_rate_11mbit = 0x00000020,
- core_tx_rate_12mbit = 0x00000040,
- core_tx_rate_18mbit = 0x00000080,
- core_tx_rate_22mbit = 0x00000100,
- core_tx_rate_24mbit = 0x00000200,
- core_tx_rate_33mbit = 0x00000400,
- core_tx_rate_36mbit = 0x00000800,
- core_tx_rate_48mbit = 0x00001000,
- core_tx_rate_54mbit = 0x00002000
- } core_tx_rate_e;
-
-const TUint32 CORE_TX_RATES_802P11B =
- core_tx_rate_1mbit |
- core_tx_rate_2mbit |
- core_tx_rate_5p5mbit |
- core_tx_rate_11mbit;
-
-const TUint32 CORE_TX_RATES_802P11G =
- core_tx_rate_6mbit |
- core_tx_rate_9mbit |
- core_tx_rate_12mbit |
- core_tx_rate_18mbit |
- core_tx_rate_22mbit |
- core_tx_rate_24mbit |
- core_tx_rate_33mbit |
- core_tx_rate_36mbit |
- core_tx_rate_48mbit |
- core_tx_rate_54mbit;
-
-/**
- * Define the possible TX rate value as units of 500kbit/s.
- */
-typedef enum _core_tx_rate_value_e
- {
- core_tx_rate_value_none = 0,
- core_tx_rate_value_1mbit = 2,
- core_tx_rate_value_2mbit = 4,
- core_tx_rate_value_5p5mbit = 11,
- core_tx_rate_value_6mbit = 12,
- core_tx_rate_value_9mbit = 18,
- core_tx_rate_value_11mbit = 22,
- core_tx_rate_value_12mbit = 24,
- core_tx_rate_value_18mbit = 36,
- core_tx_rate_value_22mbit = 44,
- core_tx_rate_value_24mbit = 48,
- core_tx_rate_value_33mbit = 66,
- core_tx_rate_value_36mbit = 72,
- core_tx_rate_value_48mbit = 96,
- core_tx_rate_value_54mbit = 108,
- } _core_tx_rate_value_e;
-
-
-// FORWARD DECLARATIONS
-class CWlanMgmtClient;
-class CWlanScanInfo;
-class CWsfWlanSettingsAccessor;
-class CWsfWlanInfoArray;
-class TWsfWlanInfo;
-class MWsfWlanConnectionDetailsProvider;
-class MWsfKnownIapRecognizer;
-
-
-// CLASS DEFINITION
-/**
- * Class to schedule WLAN scanning and process the resultant data
- *
- * @since S60 5.0
- * @lib wsfserver.exe
- */
-NONSHARABLE_CLASS( CWsfWlanScanner ): public CActive,
- public MWlanMgmtNotifications,
- public MWsfWlanMonitorObserver,
- public MWsfWlanScanIntervalChangeObserver
- {
- private: // Type definitions
-
- /**
- * States of the scanning process
- */
- enum TWsfScanState
- {
- /**
- * Not scanning but scheduled
- */
- EIdle,
-
- /**
- * Do broadcast scan
- */
- EBroadcastScan,
-
- /**
- * Processing broadcast scan results
- */
- EProcessBroadcastScan,
-
- /**
- * Processing direct scan results
- */
- EDirectScan,
-
- /**
- * Scanning finished, cleanup and notification
- */
- EFinished
- };
-
- public: // Constructors and destructor
-
- /**
- * Factory function.
- * @since S60 5.0
- * @param aDbSession Reference to the database session to use
- * @return Class instance
- */
- static CWsfWlanScanner* NewL( CommsDat::CMDBSession& aDbSession );
-
- /**
- * Factory function.
- * @since S60 5.0
- * @param aDbSession Reference to the database session to use
- * @return Class instance
- */
- static CWsfWlanScanner* NewLC( CommsDat::CMDBSession& aDbSession );
-
- /**
- * Destructor.
- */
- ~CWsfWlanScanner();
-
-
- private: // Constructors
-
- /**
- * Constructor
- * @since S60 5.0
- * @param aDbSession Reference to the database session to use
- */
- CWsfWlanScanner( CommsDat::CMDBSession& aSession );
-
- /**
- * Second-phase constructor.
- * @since S60 5.0
- */
- void ConstructL();
-
-
- public: // New methods
- /**
- * Sets the observer of this class
- * @since S60 5.0
- * @param aObserver The observer to be notified of scanning events
- */
- void SetObserver( MWsfWlanScannerObserver& aObserver );
-
- /**
- * Enables scanning for wlans
- * @since S60 5.0
- */
- void StartScanningL();
-
- /**
- * Stops the activation timer and cancels the mgmt client to
- * give notifications
- * @since S60 5.0
- */
- void StopScanning();
-
- /**
- * Initiates a new scanning if it was already enabled but was idle.
- * @since S60 5.0
- * @return ETrue if scanning was in fact restarted
- */
- TBool RestartScanning();
-
- /**
- * Aborts the scanning process if it was active. However, it does not
- * disable scanning
- * @since S60 5.0
- */
- void AbortScanning();
-
- /**
- * Returns the serialized contents of scan results
- * @since S60 5.0
- * @return A serialized array of wlaninfo items
- */
- HBufC8* ScanResults();
-
- /**
- * Sets ConnectionDetails provider handle to get data about
- * connected wlans
- * @since S60 5.0
- * @param aProvider The object to be asked for connection details
- */
- void SetConnectionDetailProvider(
- MWsfWlanConnectionDetailsProvider& aProvider );
-
-
- public: // From MWlanMgmtNotifications
- /**
- * Connection status has changed.
- * @since S60 5.0
- * @param aNewState The new connection state
- */
- void ConnectionStateChanged( TWlanConnectionMode aNewState );
-
- /**
- * BSSID has changed (i.e. AP handover).
- * @since S60 5.0
- * @param aNewBssid The new BSSID
- */
- void BssidChanged( TWlanBssid& aNewBssid );
-
- /**
- * Connection has been lost.
- * @since S60 5.0
- */
- void BssLost();
-
- /**
- * Connection has been regained.
- * @since S60 5.0
- */
- void BssRegained();
-
- /**
- * New networks have been detected during scan.
- * @since S60 5.0
- */
- void NewNetworksDetected();
-
- /**
- * One or more networks have been lost since the last scan.
- * @since S60 5.0
- */
- void OldNetworksLost();
-
- /**
- * The used transmit power has been changed.
- * @since S60 5.0
- * @param aPower The transmit power in mW.
- */
- void TransmitPowerChanged( TUint aPower );
-
- /**
- * Received signal strength level has been changed.
- * @since S60 5.0
- * @param aRssClass specifies the current class of the received signal
- * @param aRss RSS level in absolute dBm values.
- */
- void RssChanged( TWlanRssClass aRssClass, TUint aRss );
-
-
- private: // New methods
- /**
- * Processes the results of the broadcast scan
- * @since S60 5.0
- */
- void DoScanForNetworksL();
-
- /**
- * Compares two SSIDs
- * @since S60 5.0
- * @param aSsid1 First SSID
- * @param aSsid2 Second SSID
- * @return ETrue if the SSIDs are the same, EFalse otherwise
- */
- static TBool SsidIdentity( const TWlanSsid& aSsid1,
- const TWlanSsid& aSsid2 );
-
-#ifdef _DEBUG
- /**
- * Dumps the scan results to the log
- * @since S60 5.0
- * @param aArray Array of wlaninfo items added during scanning
- */
- static void DumpScanResultsL( CWsfWlanInfoArray* aArray );
-#endif
-
- /**
- * Check if the given SSID implies a hidden WLAN
- * @since S60 5.0
- * @param aSsidLength Length of the SSID passed
- * @param aSsid SSID as array of bytes
- * @return ETrue if the network in question is hidden, EFalse otherwise
- */
- TBool IsHiddenSsid( TUint aSsidLength, const TUint8* aSsid );
-
- /**
- * Parses the scan results for the network name
- * @since S60 5.0
- * @param aWlanInfo The wlaninfo to put the results in
- * @return ETrue if the network is a hidden one
- */
- TBool RefreshNetworkNameL( TWsfWlanInfo& aWlanInfo );
-
- /**
- * Parses the scan results for the wlan signal stregth
- * @since S60 5.0
- * @param aWlanInfo The wlaninfo to put the results in
- */
- void RefreshSignalStrength( TWsfWlanInfo& aWlanInfo );
-
- /**
- * Parses the scan results for the network mode
- * @since S60 5.0
- * @param aWlanInfo The wlaninfo to put the results in
- */
- void RefreshNetworkMode( TWsfWlanInfo& aWlanInfo );
-
- /**
- * Parses the scan results for the security mode
- * @since S60 5.0
- * @param aWlanInfo The wlaninfo to put the results in
- */
- void RefreshSecurityMode( TWsfWlanInfo& aWlanInfo );
-
- /**
- * Convert the given rate value (500kbit/s per unit)
- * to a corresponding enum.
- * @since S60 5.2
- * @param aRate Rate value to be converted.
- * @return Corresponding rate enum.
- */
- core_tx_rate_e ConvertTxRateToTxRateEnum( TUint8 aRate );
-
- /**
- * Parses the scan results for the technology information
- * @since S60 5.2
- * @param aWlanInfo The wlaninfo to put the results in
- */
- void RefreshTechnology( TWsfWlanInfo& aWlanInfo );
-
- /**
- * Prepares for direct scanning
- * @since S60 5.0
- */
- void PrepareDirectScan();
-
- /**
- * Processes the result of the last direct scan
- * @since S60 5.0
- */
- void ProcessDirectScanResultL();
-
- /**
- * Checks iScanArray and replaces SSIDs of known networks
- * with their IAP names.
- * @param aWlanInfo The wlaninfo to put the results in
- * @since S60 5.0
- */
- void ReplaceSsidsWithIapName(TWsfWlanInfo& aWlanInfo);
-
- /**
- * Updates IAPs priority
- * @since S60 5.0
- * @param aWlanInfo The wlaninfo to put the results in
- */
- void UpdatePriorityL( TWsfWlanInfo& aWlanInfo );
-
- /**
- * Finds the security mode, network mode from WLAN table
- * with their IAP names.
- * @param aWlanInfo The wlaninfo to put the results in
- * @since S60 5.0
- */
- void GetWlanInfoFromIapL( TWsfWlanInfo& aWlanInfo );
-
- /**
- * Add connected wlan info to scan results
- * @since S60 5.0
- */
- void AddConnectedWLANInfoL();
-
- private: // From CActive
- /**
- * Implements cancellation of an outstanding request.
- * @since S60 5.0
- */
- void DoCancel();
-
- /**
- * Handles an active object's request completion event.
- * @since S60 5.0
- */
- void RunL();
-
- /**
- * Handles a leave occurring in RunL().
- * @since S60 5.0
- * @param aError Leave code
- * @return aError
- */
- TInt RunError( TInt aError );
-
-
- public: // from MWsfWlanMonitorObserver
-
- /**
- * Called when a wlan connection is established
- * @since S60 5.0
- * @param aConnectionName WLAN connection name (SSID)
- */
- void ConnectionEstablishedL( const TDesC& aConnectionName );
-
- /**
- * Called when wlan connection has been lost
- * @since S60 5.0
- */
- void ConnectionLostL();
-
- /**
- * Called when the connection process failed for some reason
- * @since S60 5.0
- * @param aError System wide error code
- */
- void ConnectingFailedL( TInt aError );
-
- /**
- * Called when the connection no longer needs the IAP it was using
- * @since S60 5.0
- */
- void ConnectedIapReleasedL();
-
-
- public: // from MWsfWlanScanIntervalChangeObserver
- /**
- * Called when the value of the background scan interval or the
- * show availability flag has been changed
- * @since S60 5.0
- * @param aNewScanInterval The new value for the scan interval
- * @param aShowAvailability The new value for the
- * Show WLAN availability flag
- */
- void WlanScanIntervalChangedL( TUint aNewScanInterval,
- TBool aShowAvailability );
-
- private: // Data
- /**
- * Reference to the observer of this class (not owned)
- */
- MWsfWlanScannerObserver* iObserver;
-
- /**
- * Reference to the database session to use (not owned)
- */
- CommsDat::CMDBSession* iDbSession;
-
- /**
- * Reference to the connection details providing object (not owned)
- */
- MWsfWlanConnectionDetailsProvider* iConnectionDetailsProvider;
-
- /**
- * Handle to the WLAN management client (owned)
- */
- CWlanMgmtClient* iWlanMgmtClient;
-
- /**
- * Scan info object (owned)
- */
- CWlanScanInfo* iScanInfo;
-
- /**
- * WLAN settings monitoring object (owned)
- */
- CWsfWlanSettingsAccessor* iWlanSettingsAccessor;
-
- /**
- * The array containing the wlaninfo items found during scanning
- * (owned)
- */
- CWsfWlanInfoArray* iScanArray;
-
- /**
- * Name of the active connection (owned)
- */
- HBufC* iActiveConnectionName;
-
- /**
- * Timer for scheduling WLAN scans
- */
- RTimer iTimer;
-
- /**
- * Handle to the CmManager
- */
- RCmManagerExt iCmManagerExt;
-
- /**
- * Buffer to store the serialized array of wlaninfo items (owned)
- */
- HBufC8* iScanResults;
-
- /**
- * The background scan interval in microseconds
- */
- TUint iScanningInterval;
-
- /**
- * Value of Show WLAN availability flag
- */
- TBool iShowAvailability;
-
- /**
- * Array of SSIDs that are in CommsDat but have not been found
- * by broadcast scan
- */
- RArray<TWlanSsid> iDirectScanSsids;
-
- /**
- * Array of IapIDs that are in CommsDat but have not been found
- * by broadcast scan
- */
- RArray<TUint> iDirectScanIapIDs;
-
- /**
- * Indicates the scanning state
- */
- TWsfScanState iScanState;
-
- /**
- * Connected SSID or IAP name
- */
- TBuf8<KWlanMaxAccessPointNameLength> iConnectedSsidOrIap;
-
- /**
- * Array containing the available IAP IDs and Signal Strengths
- */
- RArray<TWlanIapAvailabilityData> iAvailableIaps;
-
- /**
- * Cache lifetime.
- * Parameter needed for issuing "get available WLAN IAPs"
- * request.
- */
- TInt iCacheLifetime;
-
- /**
- * Max Delay.
- * Parameter needed for issuing "get available WLAN IAPs"
- * request.
- */
- TUint iMaxDelay;
-
-
- };
-
-
-#endif // C_WSFWLANSCANNER_H
-
-// End of file