--- a/wlanutilities/wlanqtutilities/wrapper/src/wlanqtutilsscanap_symbian.cpp Tue Aug 31 16:18:40 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,428 +0,0 @@
-/*
-* 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:
-* Symbian platform specific implementation of WLAN AP scanning.
-*/
-
-// System includes
-
-#include <QList>
-#include <cmmanagerdefines_shim.h>
-#include <utf.h>
-
-// User includes
-
-#include "wlanqtutils.h"
-#include "wlanqtutilsap.h"
-#include "wlanqtutilsscan.h"
-#include "wlanqtutilsscanap_symbian.h"
-
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "wlanqtutilsscanap_symbianTraces.h"
-#endif
-
-
-/*!
- \class WlanQtUtilsScanApPrivate
- \brief Symbian platform specific implementation of WLAN AP scanning.
-
- Symbian platform specific implementation of WLAN AP scanning.
-*/
-
-
-// External function prototypes
-
-// Local constants
-
-// 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;
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-/*!
- Static factory constructor.
-
- @param [in,out] wrapper Public implementation class reference.
-
- @return New instance of the class.
-*/
-
-WlanQtUtilsScanApPrivate *WlanQtUtilsScanApPrivate::NewL(WlanQtUtilsScan *wrapper)
-{
- OstTraceFunctionEntry0(WLANQTUTILSSCANAPPRIVATE_NEWL_ENTRY);
-
- WlanQtUtilsScanApPrivate *self = new (ELeave) WlanQtUtilsScanApPrivate(wrapper);
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
-
- OstTraceFunctionExit0(WLANQTUTILSSCANAPPRIVATE_NEWL_EXIT);
- return self;
-}
-
-/*!
- Destructor.
-*/
-
-WlanQtUtilsScanApPrivate::~WlanQtUtilsScanApPrivate()
-{
- OstTraceFunctionEntry0(WLANQTUTILSSCANAPPRIVATE_WLANQTUTILSSCANAPPRIVATE_ENTRY);
-
- Cancel();
- delete mWlanMgmtClient;
- mWlanMgmtClient = NULL;
- delete mResults;
- mResults = NULL;
-
- OstTraceFunctionExit0(WLANQTUTILSSCANAPPRIVATE_WLANQTUTILSSCANAPPRIVATE_EXIT);
-}
-
-/*!
- Starts a broadcast scan of available access points.
-*/
-
-void WlanQtUtilsScanApPrivate::Scan()
-{
- OstTraceFunctionEntry0(WLANQTUTILSSCANAPPRIVATE_SCAN_ENTRY);
-
- // Scanning while previous scan is not complete is not supported
- Q_ASSERT(!IsActive());
-
- // Make the scan
- mWlanMgmtClient->GetScanResults(iStatus, *mResults);
- SetActive();
-
- OstTraceFunctionExit0(WLANQTUTILSSCANAPPRIVATE_SCAN_EXIT);
-}
-
-/*!
- Starts a direct scan of available access points having given SSID.
-
- @param ssid SSID to scan.
-*/
-
-void WlanQtUtilsScanApPrivate::Scan(const QString &ssid)
-{
- OstTraceFunctionEntry0(WLANQTUTILSSCANAPPRIVATE_SCAN_SSID_ENTRY);
-
- // Scanning while previous scan is not complete is not supported
- Q_ASSERT(!IsActive());
-
- // Convert from QString to TBuf8
- TBuf<KWlanMaxSsidLength> buffer(ssid.utf16());
- TInt error = CnvUtfConverter::ConvertFromUnicodeToUtf8(mWlanSsid, buffer);
- qt_symbian_throwIfError(error);
-
- OstTraceExt1(
- TRACE_NORMAL,
- WLANQTUTILSSCANAPPRIVATE_SCAN_SSID,
- "WlanQtUtilsScanApPrivate::Scan;mWlanSsid=%s",
- mWlanSsid);
-
- // Make the scan
- mWlanMgmtClient->GetScanResults(mWlanSsid, iStatus, *mResults);
- SetActive();
-
- OstTraceFunctionExit0(WLANQTUTILSSCANAPPRIVATE_SCAN_SSID_EXIT);
-}
-
-/*!
- Stops an ongoing scan.
-*/
-
-void WlanQtUtilsScanApPrivate::StopScan()
-{
- OstTraceFunctionEntry0(WLANQTUTILSSCANAPPRIVATE_STOPSCAN_ENTRY);
-
- Cancel();
-
- OstTraceFunctionExit0(WLANQTUTILSSCANAPPRIVATE_STOPSCAN_EXIT);
-}
-
-/*!
- Scan results handler.
-*/
-
-void WlanQtUtilsScanApPrivate::RunL()
-{
- OstTraceFunctionEntry0(WLANQTUTILSSCANAPPRIVATE_RUNL_ENTRY);
-
- QT_TRYCATCH_LEAVING(
- if (iStatus != KErrNone) {
- // Scan failed
- emit q_ptr->scanFailed(WlanQtUtils::ScanStatusError);
- } else {
- // Scan succeeded
- QList< QSharedPointer<WlanQtUtilsAp> > scanResults;
- ExtractScanResults(scanResults);
-
- // Inform about the results
- emit q_ptr->availableWlanAps(scanResults);
- }
- );
-
- OstTraceFunctionExit0(WLANQTUTILSSCANAPPRIVATE_RUNL_EXIT);
-}
-
-/*!
- Cancels an outstanding request.
-*/
-
-void WlanQtUtilsScanApPrivate::DoCancel()
-{
- OstTraceFunctionEntry0(WLANQTUTILSSCANAPPRIVATE_DOCANCEL_ENTRY);
-
- mWlanMgmtClient->CancelGetScanResults();
-
- OstTraceFunctionExit0(WLANQTUTILSSCANAPPRIVATE_DOCANCEL_EXIT);
-}
-
-/*!
- Constructor.
-
- @param [in,out] wrapper Public implementation class reference.
-*/
-
-WlanQtUtilsScanApPrivate::WlanQtUtilsScanApPrivate(WlanQtUtilsScan *wrapper) :
- CActive(EPriorityStandard),
- q_ptr(wrapper),
- mWlanMgmtClient(NULL),
- mResults(NULL)
-{
- OstTraceFunctionEntry0(DUP1_WLANQTUTILSSCANAPPRIVATE_WLANQTUTILSSCANAPPRIVATE_ENTRY);
- OstTraceFunctionExit0(DUP1_WLANQTUTILSSCANAPPRIVATE_WLANQTUTILSSCANAPPRIVATE_EXIT);
-}
-
-/*!
- Second phase constructor.
-*/
-
-void WlanQtUtilsScanApPrivate::ConstructL()
-{
- OstTraceFunctionEntry0(WLANQTUTILSSCANAPPRIVATE_CONSTRUCTL_ENTRY);
-
- CActiveScheduler::Add(this);
- mWlanMgmtClient = CWlanMgmtClient::NewL();
- mResults = CWlanScanInfo::NewL();
-
- OstTraceFunctionExit0(WLANQTUTILSSCANAPPRIVATE_CONSTRUCTL_EXIT);
-}
-
-/*
- Extracts scan results and stores them into the given AP list.
-
- @param [out] scanResults Scan result list.
-*/
-
-void WlanQtUtilsScanApPrivate::ExtractScanResults(
- QList< QSharedPointer<WlanQtUtilsAp> > &scanResults)
-{
- for (mResults->First(); !mResults->IsDone(); mResults->Next()) {
- // Create an access point for each result
- QSharedPointer<WlanQtUtilsAp> ap(new WlanQtUtilsAp());
-
- // SSID
- QString ssid = ExtractSsid();
-
- // 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.
- if (ssid.trimmed().isEmpty()) {
- continue;
- }
- ap->setValue(WlanQtUtilsAp::ConfIdSsid, ssid);
-
- // BSSID
- QByteArray bssid = ExtractBssid();
- ap->setValue(WlanQtUtilsAp::ConfIdBssid, bssid);
-
- // Signal strength
- ap->setValue(
- WlanQtUtilsAp::ConfIdSignalStrength,
- (int)mResults->RXLevel());
-
- // Connection Mode
- CMManagerShim::WlanConnMode connMode;
- if (mResults->Capability() & KWlan802Dot11CapabilityEssMask) {
- connMode = CMManagerShim::Infra;
- } else {
- connMode = CMManagerShim::Adhoc;
- }
- ap->setValue(WlanQtUtilsAp::ConfIdConnectionMode, (int)connMode);
-
- // Security Mode parameters
- StoreSecMode(ap, mResults->ExtendedSecurityMode());
-
- // Hidden attribute
- // These scan results do not tell if the AP is hidden or not
- ap->setValue(WlanQtUtilsAp::ConfIdHidden, false);
- ap->setValue(WlanQtUtilsAp::ConfIdWlanScanSSID, false);
-
- // WPS support
- TBool wpsSupported = mResults->IsProtectedSetupSupported();
- ap->setValue(
- WlanQtUtilsAp::ConfIdWpsSupported,
- (wpsSupported == EFalse) ? false : true);
-
- // Append the AP to scan result list
- scanResults.append(ap);
- }
-}
-
-/*!
- Extracts and cleans up the WLAN SSID from current scan result element.
-
- @return SSID string.
-*/
-
-QString WlanQtUtilsScanApPrivate::ExtractSsid()
-{
- // Get the SSID in raw data format
- TUint8 ieLen;
- const TUint8* ieData;
- TInt ret = mResults->InformationElement(KWlan802Dot11SsidIE, ieLen, &ieData);
-
- // Convert into QString
- QString ssid;
- if (ret == KErrNone && ieLen > 0) {
- // Trace the buffer as data to ease low level debugging
- OstTraceData(
- TRACE_DUMP,
- WLANQTUTILSSCANAPPRIVATE_EXTRACTSSID_DATA,
- "WlanQtUtilsScanApPrivate::ExtractSsid data 0x%{hex8[]}",
- ieData,
- ieLen);
-
- // The IEEE 802.11-2007 section 7.3.2.1 only specifies that
- // the SSID is 0-32 octets, leaving the format of the octets
- // completely open.
- // To support a bit wider character set than 7-bit ASCII, we
- // treat the raw SSID bytes as the lowest octets of Unicode.
- for (int i = 0; i < ieLen; i++) {
- ssid.append(QChar((uint)ieData[i]));
- }
-
-#ifdef OST_TRACE_COMPILER_IN_USE
- TPtrC16 string(ssid.utf16(), ssid.length());
- OstTraceExt1(
- TRACE_DUMP,
- WLANQTUTILSSCANAPPRIVATE_EXTRACTSSID_STRING,
- "WlanQtUtilsScanApPrivate::ExtractSsid string;ssid=%S",
- string);
-#endif
- }
-
- // Remove nul characters
- ssid.remove(QChar());
-
- return ssid;
-}
-
-/*!
- Extracts the WLAN BSSID from current scan result element.
-
- @return BSSID array.
-*/
-
-QByteArray WlanQtUtilsScanApPrivate::ExtractBssid()
-{
- TWlanBssid wlanBssid;
- mResults->Bssid(wlanBssid);
- QByteArray bssid;
- for (int i = 0; i < (int)wlanBssid.Length(); i++) {
- bssid[i] = (char)wlanBssid[i];
- }
-
-#ifdef OST_TRACE_COMPILER_IN_USE
- QString bssidHex(bssid.toHex());
- TPtrC16 string(bssidHex.utf16(), bssidHex.length());
-
- OstTraceExt1(
- TRACE_DUMP,
- WLANQTUTILSSCANAPPRIVATE_EXTRACTBSSID,
- "WlanQtUtilsScanApPrivate::ExtractBssid;bssid=%S",
- string);
-#endif
-
- return bssid;
-}
-
-/*!
- Stores Security mode parameters to \a ap class.
-
- @param [in,out] ap Access Point object to where the configuration is stored.
- @param [in] secMode Security mode to store.
-*/
-
-void WlanQtUtilsScanApPrivate::StoreSecMode(
- QSharedPointer<WlanQtUtilsAp> ap,
- TUint wlanSecMode)
-{
- CMManagerShim::WlanSecMode secMode = CMManagerShim::WlanSecModeOpen;
- ap->setValue(WlanQtUtilsAp::ConfIdWpaPskUse, false);
-
- switch (wlanSecMode) {
- case EWlanConnectionExtentedSecurityModeWepOpen:
- case EWlanConnectionExtentedSecurityModeWepShared:
- secMode = CMManagerShim::WlanSecModeWep;
- break;
-
- case EWlanConnectionExtentedSecurityMode802d1x:
- secMode = CMManagerShim::WlanSecMode802_1x;
- break;
-
- case EWlanConnectionExtentedSecurityModeWpa:
- secMode = CMManagerShim::WlanSecModeWpa;
- break;
-
- case EWlanConnectionExtentedSecurityModeWpaPsk:
- secMode = CMManagerShim::WlanSecModeWpa;
- ap->setValue(WlanQtUtilsAp::ConfIdWpaPskUse, true);
- break;
-
- case EWlanConnectionExtentedSecurityModeWpa2:
- secMode = CMManagerShim::WlanSecModeWpa2;
- break;
-
- case EWlanConnectionExtentedSecurityModeWpa2Psk:
- secMode = CMManagerShim::WlanSecModeWpa2;
- ap->setValue(WlanQtUtilsAp::ConfIdWpaPskUse, true);
- break;
-
- case EWlanConnectionExtentedSecurityModeWapi:
- case EWlanConnectionExtentedSecurityModeWapiPsk:
- secMode = CMManagerShim::WlanSecModeWapi;
- break;
-
- case EWlanConnectionExtentedSecurityModeOpen:
- secMode = CMManagerShim::WlanSecModeOpen;
- break;
-
-#ifndef QT_NO_DEBUG
- default:
- // Invalid security mode detected
- Q_ASSERT(0);
- break;
-#endif
- }
-
- ap->setValue(WlanQtUtilsAp::ConfIdSecurityMode, secMode);
-}