wlanutilities/wlanqtutilities/wrapper/src/wlanqtutilsconmonwrapperscan_s60.cpp
changeset 46 2fbd1d709fe7
parent 45 d9ec2b8c6bad
child 47 b3d8f88532b7
child 50 d4198dcb9983
--- a/wlanutilities/wlanqtutilities/wrapper/src/wlanqtutilsconmonwrapperscan_s60.cpp	Wed Jun 23 19:25:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,330 +0,0 @@
-/*
-* Copyright (c) 2009-2010 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:
-* Private implementation of wrapper for Symbian Connection Monitor
-* library's scan interface.
-*/
-
-// System includes
-
-#include <QSharedPointer>
-#include <QVariant>
-#include <rconnmon.h>
-#include <cmmanagerdefines_shim.h>
-
-// User includes
-
-#include "wlanqtutilsap.h"
-#include "wlanqtutilsconmonwrapper.h"
-#include "wlanqtutilsconmonwrapperscan_s60_p.h"
-
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "wlanqtutilsconmonwrapperscan_s60Traces.h"
-#endif
-
-/*!
-    \class WlanQtUtilsConMonWrapperScan
-    \brief Private wrapper for Symbian Connection Monitor library.
-
-    Provides functionality to scan WLAN networks.
-*/
-
-// External function prototypes
-
-// Local constants
-
-//! Size of the scan result buffer. Good for about 100 networks.
-#define SCAN_RESULT_BUFFER_SIZE 15000
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-/*!
-    Constructor.
-    
-    @param [in] wrapper Wrapper to report progress to.
- */
-
-WlanQtUtilsConMonWrapperScan::WlanQtUtilsConMonWrapperScan(
-    WlanQtUtilsConMonWrapper *wrapper) :
-    CActive(EPriorityStandard),
-    iWlanBuf(NULL),
-    iWlanPtr(0, 0),
-    iScanCancelled(EFalse),
-    q_ptr(wrapper)
-{
-    OstTraceFunctionEntry1(WLANQTUTILSCONMONWRAPPERSCAN_WLANQTUTILSCONMONWRAPPERSCAN_ENTRY, this);
-    
-    CActiveScheduler::Add(this);
-    // Errors in Connection Monitor Server connection are fatal so just
-    // throw them as exceptions
-    QT_TRAP_THROWING(iMonitor.ConnectL());
-
-    OstTraceFunctionExit1(WLANQTUTILSCONMONWRAPPERSCAN_WLANQTUTILSCONMONWRAPPERSCAN_EXIT, this);
-}
-
-/*!
-    Destructor.
- */
-
-WlanQtUtilsConMonWrapperScan::~WlanQtUtilsConMonWrapperScan()
-{
-    OstTraceFunctionEntry1(DUP1_WLANQTUTILSCONMONWRAPPERSCAN_WLANQTUTILSCONMONWRAPPERSCAN_ENTRY, this);
-
-    // Cancel possibly ongoing scan
-    Cancel();
-    // Cancel notifications and close connection monitor session
-    iMonitor.Close();
-    delete iWlanBuf;
-
-    OstTraceFunctionExit1(DUP1_WLANQTUTILSCONMONWRAPPERSCAN_WLANQTUTILSCONMONWRAPPERSCAN_EXIT, this);
-}
-
-/*!
-    Request a scan for available WLAN networks.
- */
-
-void WlanQtUtilsConMonWrapperScan::ScanAvailableWlanAPs()
-{
-    OstTraceFunctionEntry1(WLANQTUTILSCONMONWRAPPERSCAN_SCANAVAILABLEWLANAPS_ENTRY, this);
-
-    if (!IsActive()) {
-        // Reserve the scan result buffer, if this is the first scan
-        // request. Same buffer is used for the lifetime of this object.
-        if (iWlanBuf == NULL) {
-            iWlanBuf = new CConnMonWlanNetworksPtrArrayPckg(
-                SCAN_RESULT_BUFFER_SIZE);
-            iWlanPtr.Set(iWlanBuf->Buf()->Des());
-        }
-
-        iScanCancelled = EFalse;
-        iMonitor.GetPckgAttribute(
-            EBearerIdWLAN,
-            0,
-            KWlanNetworks,
-            iWlanPtr,
-            iStatus);
-        SetActive();
-    }
-
-    OstTraceFunctionExit1(WLANQTUTILSCONMONWRAPPERSCAN_SCANAVAILABLEWLANAPS_EXIT, this);
-}
-
-/*!
-    Stops a possibly ongoing WLAN scan.
- */
-
-void WlanQtUtilsConMonWrapperScan::StopScan()
-{
-    OstTraceFunctionEntry1(WLANQTUTILSCONMONWRAPPERSCAN_STOPSCAN_ENTRY, this);
-
-    iScanCancelled = ETrue;
-    Cancel();
-
-    OstTraceFunctionExit1(WLANQTUTILSCONMONWRAPPERSCAN_STOPSCAN_EXIT, this);
-}
-
-/*!
-   From CActive: called when active object is cancelled.
- */
-
-void WlanQtUtilsConMonWrapperScan::DoCancel()
-{
-    OstTraceFunctionEntry1(WLANQTUTILSCONMONWRAPPERSCAN_DOCANCEL_ENTRY, this);
-
-    // Stop scan request, if one is active
-    iMonitor.CancelAsyncRequest(EConnMonGetPckgAttribute);
-
-    OstTraceFunctionExit1(WLANQTUTILSCONMONWRAPPERSCAN_DOCANCEL_EXIT, this);
-}
-
-/*!
-   From CActive: called when async scan request has been completed.
-   Reports results to owning wrapper.
- */
-
-void WlanQtUtilsConMonWrapperScan::RunL()
-{
-    OstTraceFunctionEntry1(WLANQTUTILSCONMONWRAPPERSCAN_RUNL_ENTRY, this);
-    
-    OstTrace1(
-        TRACE_NORMAL,
-        WLANQTUTILSCONMONWRAPPERSCAN_RUNL_STATUS,
-        "WlanQtUtilsConMonWrapperScan::RunL;iStatus=%d", iStatus.Int() );
-    
-    if (iStatus == KErrNone) {
-        RConnMonWlanNetworksPtrArray wlanPtrArray;
-        iWlanBuf->UnpackToL(wlanPtrArray);
-        QList< QSharedPointer<WlanQtUtilsAp> > wlanScanResult;
-
-        OstTrace1(
-            TRACE_NORMAL,
-            WLANQTUTILSCONMONWRAPPERSCAN_RUNL_COUNT,
-            "WlanQtUtilsConMonWrapperScan::RunL;count=%d",
-            wlanPtrArray.Count());
-        
-        for (TInt i = 0; i < wlanPtrArray.Count(); i++) {
-            // Convert name to QString
-            TBuf<CConnMonWlanNetwork::KMaxNameLength> wlanName =
-                    wlanPtrArray[i]->Name();
-            QString wlanNameInQt =
-                QString::fromUtf16(wlanName.Ptr(), wlanName.Length());
-
-            OstTraceExt1(
-                TRACE_DUMP,
-                WLANQTUTILSCONMONWRAPPERSCAN_RUNL,
-                "WlanQtUtilsConMonWrapperScan::RunL;name=%S",
-                wlanPtrArray[i]->Name());
-            
-            // Skip over hidden networks. There is no spec for what
-            // their names will contain, but at least names with only
-            // null characters and whitespace characters are seen
-            // in real life.
-            wlanNameInQt.remove(QChar());
-            if (wlanNameInQt.trimmed().isEmpty()) {
-                delete wlanPtrArray[i];
-                continue;
-            }
-            
-            // Go ahead and create the access point
-            QSharedPointer<WlanQtUtilsAp> ap = 
-                QSharedPointer<WlanQtUtilsAp>(new WlanQtUtilsAp());
-
-            ap->setValue(WlanQtUtilsAp::ConfIdSsid, wlanNameInQt);
-
-            StoreConMonConnMode(ap, wlanPtrArray[i]->ConnectionMode());
-            ap->setValue(
-                WlanQtUtilsAp::ConfIdSignalStrength, 
-                wlanPtrArray[i]->SignalStrength());
-
-            // Security mode values defined in enum TConnMonSecurityModeV2,
-            // rconnmon.h.
-            StoreConMonSecMode(ap, wlanPtrArray[i]->SecurityModeV2());
-
-            // TODO: "Adding WLAN network manually" subfreature:
-            // wps (Wifi Protected Setup) support, read this from connmon
-            ap->setValue(WlanQtUtilsAp::ConfIdWpsSupported, false);
-            // TODO: "Adding WLAN network manually" subfreature:
-            // different scan requests needed to identify hidden networks
-            ap->setValue(WlanQtUtilsAp::ConfIdHidden, false);
-            
-            wlanScanResult.append(ap);
-            delete wlanPtrArray[i];
-        }
-        // Don't report results, if scan was cancelled
-        if (!iScanCancelled) {
-            emit q_ptr->availableWlanApsFromWrapper(wlanScanResult);                
-        }
-        // else: scan was probably stopped before results were reveived
-        
-        wlanPtrArray.Close();
-        
-        // QSharedPointer takes care of memory deallocation
-        wlanScanResult.clear();
-    }
-
-    OstTraceFunctionExit1(WLANQTUTILSCONMONWRAPPERSCAN_RUNL_EXIT, this);
-}
-
-/*!
-   Stores Security mode parameters received from ConnMon to \a ap class.
-
-   @param ap Access Point object to where the configuration is stored
-   @param conMonSecMode Security mode to store.
- */
-
-void WlanQtUtilsConMonWrapperScan::StoreConMonSecMode(
-    QSharedPointer<WlanQtUtilsAp> ap,
-    TUint conMonSecMode)
-    {
-    // Entry-exit traces left out on purpose, because this is a simple
-    // function and called many times inside a loop.
-    
-    CMManagerShim::WlanSecMode secMode;
-    ap->setValue(WlanQtUtilsAp::ConfIdWpaPskUse, false);
-    
-    switch (conMonSecMode) {
-    case EConnMonSecurityV2WepOpen:
-    case EConnMonSecurityV2WepShared:
-        secMode = CMManagerShim::WlanSecModeWep;
-        break;
-        
-    case EConnMonSecurityV2802d1x:
-        secMode = CMManagerShim::WlanSecMode802_1x;
-        break;
-        
-    case EConnMonSecurityV2Wpa:
-        secMode = CMManagerShim::WlanSecModeWpa;
-        break;
-        
-    case EConnMonSecurityV2WpaPsk:
-        secMode = CMManagerShim::WlanSecModeWpa;
-        ap->setValue(WlanQtUtilsAp::ConfIdWpaPskUse, true);
-        break;
-        
-    case EConnMonSecurityV2Wpa2:
-        secMode = CMManagerShim::WlanSecModeWpa2;
-        break;
-        
-    case EConnMonSecurityV2Wpa2Psk:
-        secMode = CMManagerShim::WlanSecModeWpa2;
-        ap->setValue(WlanQtUtilsAp::ConfIdWpaPskUse, true);
-        break;
-        
-    case EConnMonSecurityV2Wapi:
-    case EConnMonSecurityV2WapiPsk:
-        secMode = CMManagerShim::WlanSecModeWapi;
-        break;
-        
-    default:
-        Q_ASSERT(conMonSecMode == EConnMonSecurityV2Open);
-        secMode = CMManagerShim::WlanSecModeOpen;
-        break;
-    }
-    
-    ap->setValue(WlanQtUtilsAp::ConfIdSecurityMode, secMode);
-}
-
-/*!
-   Stores connection mode parameters received from ConnMon to \a ap class.
-
-   @param ap Access Point object to where the configuration is stored
-   @param conMonConnMode Connection mode to store.
- */
-
-void WlanQtUtilsConMonWrapperScan::StoreConMonConnMode(
-    QSharedPointer<WlanQtUtilsAp> ap,
-    TInt conMonConnMode)
-{
-    // Entry-exit traces left out on purpose, because this is a simple
-    // function and called many times inside a loop.
-    
-    CMManagerShim::WlanConnMode connMode; 
-    
-    switch (conMonConnMode){
-    case EConnMonInfraStructure:
-    case EConnMonSecureInfra:
-        connMode = CMManagerShim::Infra;
-        break;
-        
-    default:
-        Q_ASSERT(conMonConnMode == EConnMonAdHoc);
-        connMode = CMManagerShim::Adhoc;
-        break;
-    }
-    
-    ap->setValue(WlanQtUtilsAp::ConfIdConnectionMode, connMode);
-}