wlanutilities/wlanqtutilities/tsrc/stubs/stub_wlanscaninfo.cpp
branchRCL_3
changeset 54 63be7eb3fc78
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wlanutilities/wlanqtutilities/tsrc/stubs/stub_wlanscaninfo.cpp	Tue Aug 31 16:18:40 2010 +0300
@@ -0,0 +1,287 @@
+/*
+* Copyright (c) 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:
+* WLAN Management API stubbing for WLAN Qt Utilities.
+*/
+
+#include <e32base.h>
+#include "wlanscaninfo.h"
+
+#include <cmmanager_shim.h>
+
+#include "wlanqtutilstestcontext.h"
+#include "wlanqtutilsap.h"
+
+extern WlanQtUtilsTestContext testContext;
+
+// Information Element ID for SSID as specified in 802.11.
+static const TUint8 KWlan802Dot11SsidIE = 0;
+
+// Bit mask for Capability info field to get type (Infra/AdHoc).
+static const TUint8 KWlan802Dot11CapabilityEssMask = 0x0001;
+
+// ---------------------------------------------------------
+// CWlanScanInfo::NewL
+// ---------------------------------------------------------
+//
+CWlanScanInfo* CWlanScanInfo::NewL()
+    {
+    CWlanScanInfo* self = new CWlanScanInfo;
+    return self;
+    }
+    
+// ---------------------------------------------------------
+// CWlanScanInfo::~CWlanScanInfo
+// ---------------------------------------------------------
+//
+CWlanScanInfo::~CWlanScanInfo()
+    {
+    }
+
+// ---------------------------------------------------------
+// CWlanScanInfo::~First
+// ---------------------------------------------------------
+//
+const TWlanScanInfoFrame* CWlanScanInfo::First()
+    {
+    // Rewind to the beginning of scan result list
+    testContext.mScan.mScanResultIterator = 0;
+    
+    return (TWlanScanInfoFrame*)1;   // Info frame is not supported
+    }
+
+// ---------------------------------------------------------
+// CWlanScanInfo::~Next
+// ---------------------------------------------------------
+//
+const TWlanScanInfoFrame* CWlanScanInfo::Next()
+    {
+    // Go to next AP in scan results
+    testContext.mScan.mScanResultIterator++;
+    
+    return (TWlanScanInfoFrame*)1;   // Info frame is not supported
+    }
+
+// ---------------------------------------------------------
+// CWlanScanInfo::~IsDone
+// ---------------------------------------------------------
+//
+TBool CWlanScanInfo::IsDone() const
+    {
+    TBool result = EFalse;
+    
+    // Iterating is complete when iterator is one past the last item
+    if (testContext.mScan.mScanResultIterator >=
+        testContext.mScan.mWlanScanApResultList.count()) {
+        result = ETrue;
+    }
+    
+    return result;
+    }
+
+// ---------------------------------------------------------
+// CWlanScanInfo::RXLevel
+// ---------------------------------------------------------
+//
+TUint8 CWlanScanInfo::RXLevel() const
+    {
+    QSharedPointer<WlanQtUtilsAp> ap(GetCurrentAp());
+    int rxlevel = ap->value(WlanQtUtilsAp::ConfIdSignalStrength).toInt();
+    
+    return (TUint8)rxlevel;
+    }
+
+// ---------------------------------------------------------
+// CWlanScanInfo::Bssid
+// ---------------------------------------------------------
+//
+void CWlanScanInfo::Bssid(
+    TWlanBssid& aBssid ) const
+    {
+    QSharedPointer<WlanQtUtilsAp> ap(GetCurrentAp());
+    QByteArray bssid = ap->value(WlanQtUtilsAp::ConfIdBssid).toByteArray();
+
+    // Length must match, since BSSID is always the same length
+    Q_ASSERT(bssid.length() == KWlanMaxBssidLength);
+    
+    // Copy the BSSID
+    aBssid.Copy((const unsigned char *)bssid.constData(), bssid.length());
+    }
+
+// ---------------------------------------------------------
+// CWlanScanInfo::Capability
+// ---------------------------------------------------------
+//
+TUint16 CWlanScanInfo::Capability() const
+    {
+    QSharedPointer<WlanQtUtilsAp> ap(GetCurrentAp());
+    
+    TUint16 capabilities = 0;
+    
+    // Only connection mode cabability is supported 
+    int connMode = ap->value(WlanQtUtilsAp::ConfIdConnectionMode).toInt();
+    if (connMode == CMManagerShim::Infra) {
+        capabilities |= KWlan802Dot11CapabilityEssMask; 
+    }
+    
+    return capabilities;
+    }
+
+// ---------------------------------------------------------
+// CWlanScanInfo::InformationElement
+// ---------------------------------------------------------
+//
+TInt CWlanScanInfo::InformationElement(
+    TUint8 aIE, 
+    TUint8& aLength, 
+    const TUint8** aData )
+    {
+    // Static SSID buffer
+    static TBuf8<255> ssidBuffer;
+    
+    QSharedPointer<WlanQtUtilsAp> ap(GetCurrentAp());
+    
+    aLength = 0;
+    
+    // Only SSID IE is supported
+    Q_ASSERT(aIE == KWlan802Dot11SsidIE);
+    (void)aIE;
+    
+    // Cypy the SSID
+    ssidBuffer.SetLength(0);
+    QString ssid = ap->value(WlanQtUtilsAp::ConfIdSsid).toString();
+    for (int i = 0; i < ssid.length(); i++) {
+        QChar character = ssid[i];
+        ssidBuffer.Append((TUint8)(character.unicode() & 0x000000FF));
+    }
+
+    // Give reference to the buffer to the caller
+    *aData = ssidBuffer.Ptr();
+    aLength = (TUint8)ssidBuffer.Length();
+    
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------
+// CWlanScanInfo::IsProtectedSetupSupported
+// ---------------------------------------------------------
+//
+TBool CWlanScanInfo::IsProtectedSetupSupported()
+    {
+    QSharedPointer<WlanQtUtilsAp> ap(GetCurrentAp());
+    
+    TBool wpsSupport;
+    bool wps = ap->value(WlanQtUtilsAp::ConfIdWpsSupported).toBool();
+    if (wps) {
+        wpsSupport = ETrue;
+    } else {
+        wpsSupport = EFalse;
+    }
+    
+    return wpsSupport;
+    }
+
+// ---------------------------------------------------------
+// CWlanScanInfo::ExtendedSecurityMode
+// ---------------------------------------------------------
+//
+TWlanConnectionExtentedSecurityMode CWlanScanInfo::ExtendedSecurityMode() const
+    {
+    QSharedPointer<WlanQtUtilsAp> ap(GetCurrentAp());
+    int secMode = ap->value(WlanQtUtilsAp::ConfIdSecurityMode).toInt();
+    bool pskUse = ap->value(WlanQtUtilsAp::ConfIdWpaPskUse).toBool();
+    
+    TWlanConnectionExtentedSecurityMode ret;
+    switch (secMode) {
+    case CMManagerShim::WlanSecModeWep:
+        // Both WEP security modes are mapped to same WEP sec mode value.
+        // We test both of them, and toggle the used value each time.
+        static bool wepOpen = true;
+        if (wepOpen) {
+            ret = EWlanConnectionExtentedSecurityModeWepOpen;
+        } else {
+            ret = EWlanConnectionExtentedSecurityModeWepShared;
+        }
+        wepOpen = !wepOpen;
+        break;
+        
+    case CMManagerShim::WlanSecMode802_1x:
+        ret = EWlanConnectionExtentedSecurityMode802d1x;        
+        break;
+        
+    case CMManagerShim::WlanSecModeWpa:
+        if (pskUse)
+            {
+            ret = EWlanConnectionExtentedSecurityModeWpaPsk;
+            }
+        else
+            {
+            ret = EWlanConnectionExtentedSecurityModeWpa;            
+            }
+        break;
+        
+    case CMManagerShim::WlanSecModeWpa2:
+        if (pskUse)
+            {
+            ret = EWlanConnectionExtentedSecurityModeWpa2Psk;
+            }
+        else
+            {
+            ret = EWlanConnectionExtentedSecurityModeWpa2;            
+            }
+        break;
+        
+    case CMManagerShim::WlanSecModeWapi:
+        if (pskUse)
+            {
+            ret = EWlanConnectionExtentedSecurityModeWapiPsk;
+            }
+        else
+            {
+            ret = EWlanConnectionExtentedSecurityModeWapi;            
+            }
+        break;
+        
+    default:
+        ret = EWlanConnectionExtentedSecurityModeOpen;
+        break;
+    }
+    
+    return ret;
+    }
+
+// ---------------------------------------------------------
+// CWlanScanInfo::CWlanScanInfo
+// ---------------------------------------------------------
+//
+CWlanScanInfo::CWlanScanInfo()
+    {
+    }
+
+// ---------------------------------------------------------
+// CWlanScanInfo::GetCurrentAp
+// ---------------------------------------------------------
+//
+QSharedPointer<WlanQtUtilsAp> CWlanScanInfo::GetCurrentAp() const
+    {
+    // If this fails, client iterates erroneously
+    Q_ASSERT(!IsDone());
+    
+    // Get the currently iterated AP
+    QSharedPointer<WlanQtUtilsAp> ap(
+        testContext.mScan.mWlanScanApResultList[
+            testContext.mScan.mScanResultIterator]);
+    
+    return ap;
+    }