wlanutilities/wlansniffer/engine/server/inc/wsfengine.h
branchRCL_3
changeset 25 f28ada11abbf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wlanutilities/wlansniffer/engine/server/inc/wsfengine.h	Wed Sep 01 12:20:32 2010 +0100
@@ -0,0 +1,351 @@
+/*
+* 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 CWsfModel
+*
+*/
+
+
+
+#ifndef C_WSFENGINE_H
+#define C_WSFENGINE_H
+
+//  EXTERNAL INCLUDES
+#include <e32base.h>
+#include <commsdattypesv1_1.h>
+#include <cmmanagerext.h>
+
+//  INTERNAL INCLUDES
+#include "wsfwlanscannerobserver.h"
+#include "wsfwlanmonitorobserver.h"
+#include "wsfcommon.h"
+
+
+//  FORWARD DECLARATIONS
+class CWsfWlanScanner;
+class MWsfEngineObserver;
+class CWsfWlanBearerConnectionMonitor;
+class TWsfWlanInfo;
+class MWsfServerCloserAdapter;
+
+//  CLASS DEFINITION
+/**
+ * Sniffer engine class.
+ * This class manages the objects responsible for connection creation, 
+ * closing and monitoring, communication with the WLAN engine etc.
+ *
+ * @since S60 5.0
+ * @lib wsfserver.exe
+ */
+NONSHARABLE_CLASS( CWsfEngine ): public CBase, 
+                                 public MWsfWlanScannerObserver, 
+                                 public MWsfWlanMonitorObserver
+    {
+    public:     // Constructors and destructor
+        /**
+        * Factory function.
+        * @since S60 5.0
+        * @param aServerCloser Reference to the server closer object.
+        *                      Ownership not passed.
+        * @return Server instance
+        */
+        static CWsfEngine* NewL( MWsfServerCloserAdapter& aServerCloser );
+
+        /**
+        * Factory function.
+        * @since S60 5.0
+        * @param aServerCloser Reference to the server closer object.
+        *                      Ownership not passed.
+        * @return Server instance
+        */
+        static CWsfEngine* NewLC( MWsfServerCloserAdapter& aServerCloser );
+
+        /**
+        * Destructor
+        */        
+        ~CWsfEngine();
+        
+
+    private:    // Constructors
+        /**
+        * Constructor
+        * @since S60 5.0
+        * @param aServerCloser Reference to the server closer object.
+        *                      Ownership not passed.
+        */
+        CWsfEngine( MWsfServerCloserAdapter& aServerCloser );
+
+        /**
+        * Second-phase constructor.
+        * @since S60 5.0
+        */
+        void ConstructL();
+
+
+    public:     // New methods
+ 
+        /** 
+        * Gets the result of complete wlan scan
+        * @since S60 5.0
+        * @return Buffer pointer containing a serialized array of 
+        *         wlaninfo items
+        */ 
+        HBufC8* GetScanResults();
+
+        /**
+        * Sets wlan scanning on
+        * @since S60 5.0
+        */
+        void EnableScanningL();
+        
+        /**
+        * Sets wlan scanning off
+        * @since S60 5.0
+        */ 
+        void DisableScanningL();
+        
+        /**
+        * Returns whether scanning is enabled
+        * @since S60 5.0
+        * @return ETrue if scanning has been enabled, EFalse otherwise
+        */
+        TBool IsScanning();
+
+        /**
+        * Checks if there is an active wlan connection and returns connection
+        * name (SSID) if appropriate.
+        * @since S60 5.0
+        * @return The SSID of connected access point or empty descriptor 
+        *         if not connected
+        */
+        HBufC* ConnectedWlanSsidL();
+
+        /**
+        * Fills the wlaninfo with the details of the active WLAN connection
+        * @since S60 5.0
+        * @param aWlanInfo The wlaninfo record to be filled
+        *                  Ownership not passed.
+        * @return ETrue if success, EFalse on failure
+        */
+        TBool ConnectedWlanConnectionDetailsL( TWsfWlanInfo& aWlanInfo );
+
+        /**
+        * Connects to the given IAP
+        * @since S60 5.0
+        * @param aIapId The IAP to connect to
+        * @param aConnectOnly ETrue if Connect selected
+        * @param aPersistence Persistence property of the IAP
+        * @return KErrNone if successful, otherwise error code
+        */
+        TInt ConnectWlanL( TUint32 aIapId,
+                           TBool aConnectOnly,
+                           TWsfIapPersistence aPersistence );
+
+        /**
+        * Disconnects the active WLAN connection
+        * @since S60 5.0
+        * @return ETrue on success, EFalse if there was nothing to disconnect
+        */
+        TBool DisconnectWlan();
+    
+        /**
+        * Requests a wlan scan
+        * @since S60 5.0
+        * @return ETrue if scanning is restarted
+        */
+        TBool RefreshScanResults();
+        
+        /**
+        * Requests the server to monitor an access point
+        * @since S60 5.0
+        * @param aApId Access Point to be monitored
+        */
+        void MonitorAccessPointL( TUint32 aApId );
+
+        /**
+        * Queries if there is an active WLAN connection.
+        * @since S60 5.0
+        * @return ETrue if there is an active WLAN connection, 
+        *         EFalse otherwise.
+        */
+        TBool IsConnected();
+        
+        /**
+        * Aborts the currently ongoing connecting process 
+        * @since S60 5.0
+        */
+        void AbortConnectingL();
+        
+        /**
+        * Aborts the currently ongoing scanning process 
+        * @since S60 5.0
+        */
+        void AbortScanning();
+        
+        /**
+        * Sets the persistence property for the currently monitored IAP
+        * @since S60 5.0
+        * @param aPersistence The value of the property
+        * @return ETrue on success
+        */
+        TBool SetIapPersistenceL( TWsfIapPersistence aPersistence );
+
+        /**
+        * Controls the auto-disconnect timer in the server 
+        * for owned connections
+        * @since S60 5.0
+        * @param aAdcCommand Command 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).
+        */
+        TBool ControlDisconnectTimer( TUint aAdcCommand );
+        
+        /**
+         * Resets the iSuppressIapDeletion flag.
+         * @since S60 5.0
+         */
+        void ResetSuppressIapDeletion ();
+                
+    
+    public:  // new methods
+
+        /**
+        * Adds the given observer to the notification list
+        * @since S60 5.0
+        * @param aObserver The observer to add. Ownership not passed.
+        */
+        void AttachL( MWsfEngineObserver* aObserver );
+
+        /**
+        * Deletes the given observer from the notification list
+        * @since S60 5.0
+        * @param aObserver The observer to remove. Ownership not passed.
+        */
+        void Detach( MWsfEngineObserver* aObserver );
+   
+
+       protected: // from MWsfWlanScannerObserver
+       
+        /**
+        * When the scan cycle has completed this function is called to report 
+        * the completion.
+        * @since S60 5.0
+        */
+        void WlanScanCompleteL();
+
+        /**
+        * Called when the scan cycle has started  
+        * @since S60 5.0
+        */
+        void WlanScanStarted();
+
+        /**
+        * Called when an error occured while scanning wlan data  
+        * @since S60 5.0
+        * @param aError System wide error code
+        */
+        void NotifyError( TInt aError );        
+           
+          
+       protected: // from MWsfWlanMonitorObserver       
+
+        /**
+        * Called when a wlan connection is established
+        * @since S60 5.0
+        * @param aConnectionName WLAN connection name (SSID)
+        */
+        virtual void ConnectionEstablishedL( const TDesC& aConnectionName );
+
+        /**
+        * Called when wlan connection has been lost
+        * @since S60 5.0
+        */
+        virtual void ConnectionLostL();
+        
+        /**
+        * Called when the connection process failed for some reason
+        * @since S60 5.0
+        * @param aError System wide error code
+        */
+        virtual void ConnectingFailedL( TInt aError );
+        
+        /**
+        * Called when the connection no longer needs the IAP it was using
+        * @since S60 5.0
+        */
+        virtual void ConnectedIapReleasedL();
+
+        
+    private:
+    
+        /**
+        * Tries to delete the corresponding IAP
+        * @since S60 5.0
+        * @param aIapId The IAP to be deleted
+        */
+        void DeleteIapL( TUint32 aIapId );
+
+
+    private:    // Data
+        /**
+        * Reference to the server closer (not owned)
+        */
+        MWsfServerCloserAdapter& iServerCloser;
+        
+        /**
+        * WLAN scanner object (owned)
+        */
+        CWsfWlanScanner* iScanner;
+        
+        /**
+        * Handle to the commsdat database (owned)
+        */
+        CommsDat::CMDBSession* iDbSession;
+        
+        /**
+        * WLAN connection monitor object (owned)
+        */
+        CWsfWlanBearerConnectionMonitor* iWlanBearerMonitor;
+ 
+        /**
+        * Reference counter for scan enabling requests
+        */
+        TInt iEnableScanning;
+        
+        /**
+        * Array of references to the observers of the engine 
+        * (elements not owned)
+        */        
+        RPointerArray<MWsfEngineObserver> iObservers;
+        
+        /**
+        * Accesspoint to be monitored
+        */
+        TUint32 iMonitoredIap;
+
+        /**
+        * Indicates the persistence property of monitored IAP
+        */
+        TWsfIapPersistence iIapPersistence;
+
+        /**
+        * Indicates whether to postpone IAP deletion
+        */
+        TBool iSuppressIapDeletion;
+    };
+
+#endif      //  C_WSFENGINE_H
+
+// End of file