wlanutilities/wlanqtutilities/wrapper/src/wlanqtutilsscaniap_symbian.cpp
branchRCL_3
changeset 25 f28ada11abbf
parent 24 63be7eb3fc78
equal deleted inserted replaced
24:63be7eb3fc78 25:f28ada11abbf
     1 /*
       
     2 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 * Symbian platform specific implementation of WLAN IAP scanning.
       
    16 */
       
    17 
       
    18 // System includes
       
    19 
       
    20 #include <QList>
       
    21 #include <cmmanagerdefines_shim.h>
       
    22 
       
    23 // User includes
       
    24 
       
    25 #include "wlanqtutils.h"
       
    26 #include "wlanqtutilsiap.h"
       
    27 #include "wlanqtutilsscan.h"
       
    28 #include "wlanqtutilsscaniap_symbian.h"
       
    29 
       
    30 #include "OstTraceDefinitions.h"
       
    31 #ifdef OST_TRACE_COMPILER_IN_USE
       
    32 #include "wlanqtutilsscaniap_symbianTraces.h"
       
    33 #endif
       
    34 
       
    35 
       
    36 /*!
       
    37     \class WlanQtUtilsScanIapPrivate
       
    38     \brief Symbian platform specific implementation of WLAN IAP scanning.
       
    39 
       
    40     Symbian platform specific implementation of WLAN IAP scanning. 
       
    41 */
       
    42 
       
    43 
       
    44 // External function prototypes
       
    45 
       
    46 // Local constants
       
    47 
       
    48 // ======== LOCAL FUNCTIONS ========
       
    49 
       
    50 // ======== MEMBER FUNCTIONS ========
       
    51 
       
    52 /*!
       
    53     Static factory constructor.
       
    54     
       
    55     @param [in,out] wrapper Public implementation class reference.
       
    56     
       
    57     @return New instance of the class.
       
    58 */
       
    59 
       
    60 WlanQtUtilsScanIapPrivate *WlanQtUtilsScanIapPrivate::NewL(WlanQtUtilsScan *wrapper)
       
    61 {
       
    62     OstTraceFunctionEntry0(WLANQTUTILSSCANIAPPRIVATE_NEWL_ENTRY);
       
    63     
       
    64     WlanQtUtilsScanIapPrivate *self = new (ELeave) WlanQtUtilsScanIapPrivate(wrapper);
       
    65     CleanupStack::PushL(self);
       
    66     self->ConstructL();
       
    67     CleanupStack::Pop(self);
       
    68 
       
    69     OstTraceFunctionExit0(WLANQTUTILSSCANIAPPRIVATE_NEWL_EXIT);
       
    70     return self;
       
    71 }
       
    72 
       
    73 /*!
       
    74     Destructor.
       
    75 */
       
    76 
       
    77 WlanQtUtilsScanIapPrivate::~WlanQtUtilsScanIapPrivate()
       
    78 {
       
    79     OstTraceFunctionEntry0(WLANQTUTILSSCANIAPPRIVATE_WLANQTUTILSSCANIAPPRIVATE_ENTRY);
       
    80     
       
    81     Cancel();
       
    82     delete mWlanMgmtClient;
       
    83     mWlanMgmtClient = NULL;
       
    84     mAvailableIaps.Close();
       
    85     
       
    86     OstTraceFunctionExit0(WLANQTUTILSSCANIAPPRIVATE_WLANQTUTILSSCANIAPPRIVATE_EXIT);
       
    87 }
       
    88 
       
    89 /*!
       
    90     Starts a scan to see currently available WLAN IAPs.
       
    91 */
       
    92 
       
    93 void WlanQtUtilsScanIapPrivate::ScanIaps()
       
    94 {
       
    95     OstTraceFunctionEntry0(WLANQTUTILSSCANIAPPRIVATE_SCANIAPS_ENTRY);
       
    96     
       
    97     // Scanning while previous scan is not complete is not supported
       
    98     Q_ASSERT(!IsActive());
       
    99 
       
   100     // Make the scan
       
   101     mAvailableIaps.Reset();
       
   102     mWlanMgmtClient->GetAvailableIaps(
       
   103         mCacheLifetime,
       
   104         mMaxDelay,
       
   105         EFalse,
       
   106         iStatus,
       
   107         mAvailableIaps);
       
   108     SetActive();
       
   109 
       
   110     OstTraceFunctionExit0(WLANQTUTILSSCANIAPPRIVATE_SCANIAPS_EXIT);
       
   111 }
       
   112 
       
   113 /*!
       
   114     Stops an ongoing scan.
       
   115 */
       
   116 
       
   117 void WlanQtUtilsScanIapPrivate::StopScan()
       
   118 {
       
   119     OstTraceFunctionEntry0(WLANQTUTILSSCANIAPPRIVATE_STOPSCAN_ENTRY);
       
   120 
       
   121     Cancel();
       
   122 
       
   123     OstTraceFunctionExit0(WLANQTUTILSSCANIAPPRIVATE_STOPSCAN_EXIT);
       
   124 }
       
   125 
       
   126 /*!
       
   127     Scan results handler.
       
   128 */
       
   129 
       
   130 void WlanQtUtilsScanIapPrivate::RunL()
       
   131 {
       
   132     OstTraceFunctionEntry0(WLANQTUTILSSCANIAPPRIVATE_RUNL_ENTRY);
       
   133     
       
   134     QT_TRYCATCH_LEAVING(
       
   135         if (iStatus != KErrNone) {
       
   136             // Scan failed
       
   137             emit q_ptr->scanFailed(WlanQtUtils::ScanStatusError);
       
   138         } else {
       
   139             // Scan succeeded
       
   140             QList< QSharedPointer<WlanQtUtilsIap> > scanResults;
       
   141             ExtractScanResults(scanResults);
       
   142             
       
   143             // Inform about the results 
       
   144             emit q_ptr->availableWlanIaps(scanResults);
       
   145         }
       
   146     );
       
   147 
       
   148     OstTraceFunctionExit0(WLANQTUTILSSCANIAPPRIVATE_RUNL_EXIT);
       
   149 }
       
   150 
       
   151 /*!
       
   152     Cancels an outstanding request.
       
   153 */
       
   154 
       
   155 void WlanQtUtilsScanIapPrivate::DoCancel()
       
   156 {
       
   157     OstTraceFunctionEntry0(WLANQTUTILSSCANIAPPRIVATE_DOCANCEL_ENTRY);
       
   158     
       
   159     mWlanMgmtClient->CancelGetAvailableIaps();
       
   160 
       
   161     OstTraceFunctionExit0(WLANQTUTILSSCANIAPPRIVATE_DOCANCEL_EXIT);
       
   162 }
       
   163 
       
   164 /*!
       
   165     Constructor.
       
   166     
       
   167     @param [in,out] wrapper Public implementation class reference.
       
   168 */
       
   169 
       
   170 WlanQtUtilsScanIapPrivate::WlanQtUtilsScanIapPrivate(WlanQtUtilsScan *wrapper) :
       
   171     CActive(EPriorityStandard),
       
   172     q_ptr(wrapper),
       
   173     mWlanMgmtClient(NULL),
       
   174     mCacheLifetime(0),
       
   175     mMaxDelay(0),
       
   176     mAvailableIaps()
       
   177 {
       
   178     OstTraceFunctionEntry0(DUP1_WLANQTUTILSSCANIAPPRIVATE_WLANQTUTILSSCANIAPPRIVATE_ENTRY);
       
   179     OstTraceFunctionExit0(DUP1_WLANQTUTILSSCANIAPPRIVATE_WLANQTUTILSSCANIAPPRIVATE_EXIT);
       
   180 }
       
   181 
       
   182 /*!
       
   183     Second phase constructor.
       
   184 */
       
   185 
       
   186 void WlanQtUtilsScanIapPrivate::ConstructL()
       
   187 {
       
   188     OstTraceFunctionEntry0(WLANQTUTILSSCANIAPPRIVATE_CONSTRUCTL_ENTRY);
       
   189     
       
   190     CActiveScheduler::Add(this);
       
   191     mWlanMgmtClient = CWlanMgmtClient::NewL();
       
   192     
       
   193     OstTraceFunctionExit0(WLANQTUTILSSCANIAPPRIVATE_CONSTRUCTL_EXIT);
       
   194 }
       
   195 
       
   196 /*
       
   197     Extracts scan results and stores them into the given AP list.
       
   198     
       
   199     @param [out] scanResults Scan result list.
       
   200 */
       
   201 
       
   202 void WlanQtUtilsScanIapPrivate::ExtractScanResults(
       
   203     QList< QSharedPointer<WlanQtUtilsIap> > &scanResults)
       
   204 {
       
   205     OstTraceFunctionEntry0(WLANQTUTILSSCANIAPPRIVATE_EXTRACTSCANRESULTS_ENTRY);
       
   206 
       
   207     for (int i=0; i < mAvailableIaps.Count(); i++) {
       
   208         // Create an IAP for each result
       
   209         QSharedPointer<WlanQtUtilsIap> iap(new WlanQtUtilsIap());
       
   210 
       
   211         // IAP ID
       
   212         iap->setValue(
       
   213             WlanQtUtilsIap::ConfIdIapId,
       
   214             (int)mAvailableIaps[i].iIapId);
       
   215 
       
   216         // Signal strength
       
   217         iap->setValue(
       
   218             WlanQtUtilsIap::ConfIdSignalStrength,
       
   219             (int)mAvailableIaps[i].iRssi);
       
   220 
       
   221         // Append the IAP to scan result list
       
   222         scanResults.append(iap);
       
   223     }
       
   224 
       
   225     OstTraceFunctionExit0(WLANQTUTILSSCANIAPPRIVATE_EXTRACTSCANRESULTS_EXIT);
       
   226 }