wlansecuritysettings/wifiprotectedsetup/plugininc/wifiprotactiverunner.h
branchRCL_3
changeset 18 bad0cc58d154
parent 17 30e048a7b597
child 19 c74b3d9f6b9e
--- a/wlansecuritysettings/wifiprotectedsetup/plugininc/wifiprotactiverunner.h	Thu Aug 19 09:58:27 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,507 +0,0 @@
-/*
-* Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "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: Implements a state - machine like active object that controls Wi-Fi Protected Setup Process. 
-*
-*/
-
-/*
-* %version: tr1cfwln#16 %
-*/
-
-#ifndef C_WIFIPROTACTIVERUNNER_H
-#define C_WIFIPROTACTIVERUNNER_H
-
-// INCLUDES
-#include <e32base.h>
-#include <cmmanagerext.h>
-#include <AknQueryDialog.h>
-#include <AknProgressDialog.h>
-
-#include "wifiprotdlgsplugin.h"
-#include "wifiparams.h"
-#include "wifiprotactiverunnercallback.h"
-
-
-//FORWARD DECLARATIONS
-class CWlanMgmtClient;
-class CMDBSession;
-class CWiFiProtConfirmationNoteDlg;
-class CWiFiProtInitiateEasySetupDlg;
-class CWlanScanInfo;
-class CWiFiProtEnterPinDlg;
-class CWEPSecuritySettings;
-class RCmConnectionMethodExt;
-
-//CONSTS
-const TInt KMaxPINLength = 8; //is it really 8?
-// ID of OfflineWlanNote dialog
-const TUid KUidCOfflineWlanNoteDlg = { 0x101FD671 };
-
-/**
-* CWiFiProtActiveRunner
-* State machine like object that manages Wi-Fi Protected setup ui process
-* @since S60 v3.2
-*/
-class CWiFiProtActiveRunner : public CActive, public MProgressDialogCallback,
-                                                     MActiveRunnerCallback
-    {
-    private:
-    // States to control Wi-Fi Protected Setup sequence
-        enum TWiFiProtStates
-            {
-            // Display 'Configure Automatically?' Dialog
-            EWiFiProtAskConfigureAutomatically = 1,  
-            // Display 'Initiate Easy Setup?' Dialog            
-            EWiFiProtInitiateEasySetup,
-            // If phone is in offline mode, continue with
-            // "Create WLAN connection in offline mode?" confirmation
-            EWifiProtOfflineQuery,
-            // Display 'Enter PIN code' Dialog
-            EWiFiProtUsePinCode,
-            // Starting wait dialog
-            EWiFiProtStartingWaitDlg,
-            // Configuring (Creating temp iap and making a call to wlan
-            // mgmt server )
-            EWiFiProtConfiguring,
-            // Wlan Mgmt server returned
-            EWiFiProtWlanMgmtEngineReturned,
-            // Creating iap from parameters from wlan mgmt server
-            EWiFiProtCreateAllIaps,
-            // Configuration finished
-            EWiFiProtConfFinished,
-            // Destroying wait note
-            EWiFiProtDestroyWaitNote,            
-            // Waiting for PIN query to exit
-            EWiFiProtWaitForPINQuery,            
-            // Wlan Scan
-            EWiFiProtWlanScan,
-            // Displaying Select Connection Dialog
-            EWiFiProtSelectConnection,
-            // Displaying final note about configured settings
-            EWiFiProtSettingsConfNote,
-            // Finished, exiting
-            EWiFiProtFinished,
-            // Cancelled, exiting
-            EWiFiProtCancelled
-            };
-            
-    // Asynchronous service to cancel
-        enum TWiFiProtOutstandingRequest
-            {
-            EWiFiProtReqNone = 0,
-            EWiFiProtReqConfirmDialog,
-            EWiFiProtReqInitDialog,
-            EWiFiProtReqWPS,
-            EWiFiProtReqWlanScan           
-            };
-            
-    public:
-        /**
-        * Two phased constructor
-        * @param aPriority Active object priority
-        */    
-        static CWiFiProtActiveRunner* NewL( CWiFiProtDlgsPlugin* aParent,
-                TInt aPriority = CActive::EPriorityStandard  );
-        
-        /**
-        * Destructor
-        */    
-        ~CWiFiProtActiveRunner();
-
-        
-        /**
-        * Starts Wi-Fi Protected Setup
-        * @param aSSid contains SSid of the network we want to configure 
-        * @param aCmManagerToUse - RCmManagerExt to use. Must pass this 
-        * to avoid CmManager database
-        * locking problems    
-        */    
-        void StartProtectedSetupAsyncL (  const TWlanSsid& aSSid,
-                                                      RArray<TUint32>& aUids,
-                                            RCmManagerExt& aCmManagerToUse );
-
-        /**
-        * Starts Wi-Fi Protected Setup in Connection creation mode
-        * @param aSSid contains SSid of the network we want to configure 
-        * @param aNetworkSettings the configured network's settings to be
-        * returned 
-        * @param aCmManagerToUse - RCmManagerExt to use. Must pass this 
-        * to avoid CmManager database
-        * locking problems
-        * @return  possible return values are ok, cancel process and not use 
-        * protected setup (No Automatic Setup).        
-        */                                                
-        void StartProtectedSetupConnL (
-                                     const TWlanSsid& aSSid,
-                                     TWlanProtectedSetupCredentialAttribute&
-                                          aNetworkSettings,
-                                     RCmManagerExt& aCmManagerToUse );
-        
-        /**
-        * Starts Wi-Fi Protected Setup using CActiveSchedulerWait block
-        * @param aSSid contains SSid of the network we want to configure 
-        * @param aCmManagerToUse - RCmManagerExt to use. Must pass this 
-        * to avoid CmManager database
-        * locking problems
-        * @return  possible return values are ok, cancel process and not use 
-        * protected setup (No Automatic Setup).        
-        */    
-        WiFiProt::TWiFiReturn StartProtectedSetupL (  const TWlanSsid& aSSid,
-                                                      RArray<TUint32>& aUids,
-                                            RCmManagerExt& aCmManagerToUse );
-        
-        /**
-         * When the process is cancelled by the client rather than
-         * cancelled by the user, some things are taken care of
-         * a bit differently.
-         */
-        void CancelByClient();
-        
-    private:
-
-
-        /**
-        * Shows the first dialog in the sequence
-        */
-        void ShowInitialDialogL (); 
-        /**
-         * Shows connect in offline -notification.
-         */
-        void ShowOfflineQuery ();
-         /**
-        * Shows the Initiate Easy Setup dialog
-        */
-        void ShowInitiateEasySetupDialogL (); 
-           
-         /**
-        * Shows the 'Enter PIN on Wireless Station' dialog
-        */    
-        void ShowEnterPinOnStationDialogL();
-
-        /**
-        * Shows waiting dialog
-        */     
-        void ShowWaitingDialogL();
-        
-        /**
-        * Shows waiting dialog and proceeds with the process
-        */     
-        void ShowWaitingDialogAndProceedL();
-        
-        /**
-        * Shows 'settings configured' dialog
-        * @param aWiFiProtState state to decide which note to display
-        */     
-        void ShowFinalNoteL();
-        
-        /**
-        * wait note callback
-        */
-        void DialogDismissedL( TInt aButtonId );
-
-        /**
-        * Creates Temporary iap (cm) which contains parameters to be passed
-        * to wlan engine
-        * @param aTempServId Temporary iap service id          
-        * @return TUint32 iap id (cm uid)
-        */    
-        TUint32 CreateTempIapL( TUint32& aTempServId );
-
-        /**
-        * Calls the active object that calls wlan engine's RunProtectedSetup
-        * @param TUint32 aIap iap id (cm uid)
-        */   
-        void RunProtectedSetup( const TInt32 aIap );    
-
-        /**
-        * Constructor
-        * @param aParent Parent object
-        * @param aPriority Active object priority
-        */
-        CWiFiProtActiveRunner( CWiFiProtDlgsPlugin* aParent, TInt aPriority );
-        
-        /**
-        * Second phase constructor
-        */
-        void ConstructL();
-
-        /** From CActive */
-        /**
-        @see CActive::DoCancel
-        */    
-        virtual void DoCancel();
-        
-        /**
-        @see CActive::RunL
-        */        
-        virtual void RunL();
-
-        
-        /**
-        * Sets iNextWiFiProtState and completes the pending request
-        * used to step forward in the 'state machine'
-        * @param aNextState - the state to step to
-        */
-        void SetNextStateAndComplete( TWiFiProtStates aNextState,
-                                      TInt aError = KErrNone );
-        
-        /**
-        * Called from RunL in EWiFiProtConfiguring state
-        * Starts configuring the connection methods
-        */
-        void ConfigureL();
-
-        /**
-        * Proceeds after DestroyWaitDialog or after PinQueryExitL and
-        * checks error state and continues with Wlan availability 
-        * scan if needed
-        */
-        void EvaluateResult();
-        
-        /**
-        * Called from RunL in EWiFiProtConfFinished state
-        * Destroys the wait dialog as configuring is complete
-        */
-        void DestroyWaitDialog();
- 
-        /*
-        * Computes checksum number which is the last number of
-        * the 8 digit PIN code passed to wlan mgmt engine
-        * algorythm copied from Wi-Fi spec
-        * @param aPin Pin code
-        * @return last digit, to be appended to PIN
-        */       
-        TInt ComputeChecksum(TInt aPin);
-
-        /*
-        * Creates a single iap (from the first network's parameters),
-        * and then repeats the process for each iap
-        * The iap parameters at 0 index (in iIapParametersArray) will be
-        * used to create an iap. passed to CreateIapL.
-        */       
-        void CreateAllIapsL();
-        
-        /**
-        * Creates Connection Method using RCmManagerExt
-        * The iap parameters at the given index (in iIapParametersArray)
-        * will be used to create an iap. Then the parameters entry will
-        * be deleted from iIapParametersArray
-        * and the new iap's id will be added to iCmArray.
-        * @param TInt aIndex index of the connection method (iap) to create
-        * in iIapParametersArray
-        * @return IapId of the cm
-        */
-        TUint32 CreateIapL( const TInt aIndex );
-        
-        /**
-        * Sets iap settings to a given connection method object and saves it
-        * @param TInt aIndex index of the connection method (iap) 
-        * in iIapParametersArray
-        * @param aCmToSet target connection method object 
-        * @return IapId of the cm
-        */        
-        TUint32 SetIapDataL( const TInt aIndex, RCmConnectionMethodExt& aCmToSet );
-
-        // calls DeleteTempIapL, and also steps the state machine
-        void CleanupTempIapL();        
-
-        /**
-        * Deletes temporary iap
-        */
-        void DeleteTempIapL();
-
-        /**
-        * Returns wep format, ETrue if it is in hex
-        * @param aLength Wep key length
-        */
-        TBool IsWepFormatHexL( TInt aLength );
-
-        /**
-        * Saves wep security settings from the 
-        * given credential parameters
-        * @param aCredentialAttribute credential parameters including wep
-        * security settings data
-        * @param aWlanServiceId Wlan service id
-        * @param aDb Database session needed for saving
-        * wep security settings
-        */
-        void SaveWepSecuritySettingsL(
-                       TWlanProtectedSetupCredentialAttribute
-                        aCredentialAttribute, 
-                       TUint32 aWlanServiceId,
-                       CommsDat::CMDBSession& aDb );
-
-        /**
-        * Handles the given error code by dispaying an error note
-        * @param aErrorCode error code to handle
-        */
-        TBool HandleErrorL( TInt aErrorCode );
-
-        /**
-        * Steps into the next state of Wi-Fi Protected Setup sequence
-        * called from RunL()
-        */
-        void HandleNoErrorL ();
-
-
-        /**
-        * From MActiveRunnerCallback
-        * called when CWifiProtEnterPinDlg is finished
-        * @param TInt aResponse can be KErrNone or KErrCancel
-        */
-        void PinQueryExitL( TInt aResponse );
-
-        /**
-        * Called by UsePinCodeLinkSelectedL when pin code mechanism
-        * is selected. Sets iUsePin flag and completes Active Runner
-        * (this) object
-        */
-        void DoUsePinCodeLinkSelectedL();
-
-        /**
-        * Starts wlan scan
-        */
-        void StartWlanScan();
-        
-        /**
-        * Compares the fresh wlan networks list with the
-        * items returned by WPS. Puts the available network indexes
-        * into iAvailableNetworks
-        */
-        void CheckNetworkAvailabilityL();
-
-        /*
-        * Displays the Select Connection Dialog
-        * When there are more connections available to use
-        * (used in Create Connection Mode)
-        */
-        void SelectConnectionL();
-        
-        /*
-        * Displays a note to show the user that 
-        * no wlan networks were found during wlan scan
-        */
-        void ShowNoWlanNetworksNoteL();
-
-        /*
-        * Calls cancel on the possibly currently ongoing request
-        */
-        void CancelOngoingRequest();
-        
-        /**
-        * Sets wep key
-        * @param aWepSecSettings Wep security settings object
-        * @param aWepKey Wep key to set
-        * @param aKeyNumber number of wep key to set
-        */
-        void SetWepKeyL( CWEPSecuritySettings& aWepSecSettings,
-                         TWlanWepKey& aWepKey, TInt aKeyNumber );    
-
-    public:
-        /**
-        * Callback to handle pin code pin code mechanism link selection
-        */    
-        static TInt UsePinCodeLinkSelectedL( TAny* aObject );
-        
-    private:
-        // reference to parent object
-        CWiFiProtDlgsPlugin* iParent;
-        // wait dialog
-        CAknWaitDialog* iWaitDlg;  ///Owned
-        // RCmManagerExt object for Cm Manager operations
-        RCmManagerExt* iCmManagerExt; //NOT OWNED!!!
-        // ETrue if connection is needed after the Wi-Fi Protected
-        // setup.
-        TBool iIsConnectionNeeded;
-        // Array to store returned uids of created iaps (connection methods)
-        RArray<TUint32>* iUids;//NOT OWNED!!!
-        // flag to indicate that wait dialog was cancelled
-        TBool iWaitDlgCancelled;
-        // ssid of the network to setup
-        TWlanSsid iSsid;
-        // iap id of the temporary iap
-        TUint32 iTempIapId ;
-        // service id of the temporary iap
-        TUint32 iTempServId ;
-        // PIN code (holds a value only if PIN method is used)
-        // for Wi-Fi Protected Setup authentication
-        TBuf<KMaxPINLength> iPIN;
-        // Wlan mgmt engine
-        CWlanMgmtClient* iWlanMgmtEngine;
-        // Next state, checked in RunL to control the setup process
-        TWiFiProtStates iNextWiFiProtState;
-        // return value
-        WiFiProt::TWiFiReturn iReturn;
-        // A flag to indicate that PIN method is used
-        TBool iUsePin;
-        // Holds the error code from wlan mgmt engine after 
-        // our wlan mgmt server request is complete
-        TInt iError;
-        // Active Scheduler wait object to hold the process until we are 
-        // complete
-        CActiveSchedulerWait iWait;
-        // Array to hold the connection methods which are created from 
-        // the data returned from wlan mgmt engine
-        RPointerArray<RCmConnectionMethodExt> iCmArray;//used to store cms
-                                                    // before submitting them
-        // The connection metod parameters returned from wlan mgmt engine
-        CArrayFixSeg<TWlanProtectedSetupCredentialAttribute>*
-                     iIapParametersArray; //parameters from wlan mgmt engine
-        // ETrue if Pin Query Dialog is active
-        TBool iPinQueryActive;
-        // ETrue if a wait note is needed to be shown
-        TBool iWaitNoteNeeded;
-        // initiate setup dialog is stored to handle link selection callback,
-        // not owned
-        CWiFiProtInitiateEasySetupDlg* iInitDialog;
-        // Wlan Scan Info
-        CWlanScanInfo* iScanInfo;
-        // List of available networks, contains indexes for iIapParametersArray
-        RArray<TInt> iAvailableNetworks;
-        // index of selected network in iAvailableNetworks
-        TInt iSelectedNetworkIndex;
-        // ongoing request to cancel if cancelled
-        TWiFiProtOutstandingRequest iORequest;
-        // Cancel called by user, cancel at next RunL cycle
-        TBool iUserCancelled;
-        // ETrue if the process is cancelled by the client.
-        TBool iClientCancelled;
-        // Flag to indicate that the 'use pin code' link was used
-        // and we have to destroy the dialog later, because avkon crashes if
-        // we do it in the callback (DoUsePinCodeLinkSelectedL)
-        TBool iDestroyInitDialogLater;
-        // not owned, just keeping pointer to handle cancel softkey removal
-        CWiFiProtEnterPinDlg* iPinDlg;
-        //pointer to network settings to be returned if WPS is used for 
-        // connection creation 
-        TWlanProtectedSetupCredentialAttribute* iNetworkSettings;
-        // ETrue if the WPS process is used in synchronous mode
-        TBool iSyncMode;
-        // ETrue if phone is in offline mode.
-        TBool iInOfflineMode;
-        // Stores data for offline note. Used
-        // only for writing result. Not read.
-        TPckgBuf<TBool> iOfflineReply;
-        // Interface to Notifier
-        RNotifier iNotifier;
-        // Pointer to the 1st confirmation dialog. Owned.
-        CWiFiProtConfirmationNoteDlg* iConfirmationDialog;
-        
-
-
-    };
-
-#endif //C_WIFIPROTACTIVERUNNER_H
-
-// End of File