wlanutilities/wlanqtutilities/base/src/wlanqtutils_p.cpp
changeset 46 2fbd1d709fe7
parent 38 2dc6da6fb431
child 53 bdc64aa9b954
equal deleted inserted replaced
45:d9ec2b8c6bad 46:2fbd1d709fe7
    25 #include "wlanqtutilsiap.h"
    25 #include "wlanqtutilsiap.h"
    26 #include "wlanqtutilsconnection.h"
    26 #include "wlanqtutilsconnection.h"
    27 #include "wlanqtutilsiapsettings.h"
    27 #include "wlanqtutilsiapsettings.h"
    28 #include "wlanqtutilsconmonwrapper.h"
    28 #include "wlanqtutilsconmonwrapper.h"
    29 #include "wlanqtutilsesockwrapper.h"
    29 #include "wlanqtutilsesockwrapper.h"
    30 #include "wlanqtutilsconntestwrapper.h"
    30 #include "wlanqtutilsscan.h"
    31 
    31 
    32 #include "wlanqtutils.h"
    32 #include "wlanqtutils.h"
    33 #include "wlanqtutils_p.h"
    33 #include "wlanqtutils_p.h"
    34 
    34 
    35 #include "OstTraceDefinitions.h"
    35 #include "OstTraceDefinitions.h"
    61 
    61 
    62 WlanQtUtilsPrivate::WlanQtUtilsPrivate(WlanQtUtils *q_ptr) :
    62 WlanQtUtilsPrivate::WlanQtUtilsPrivate(WlanQtUtils *q_ptr) :
    63     q_ptr(q_ptr),
    63     q_ptr(q_ptr),
    64     mSettings(new WlanQtUtilsIapSettings(this)),
    64     mSettings(new WlanQtUtilsIapSettings(this)),
    65     mConMonWrapper(new WlanQtUtilsConMonWrapper(this)),
    65     mConMonWrapper(new WlanQtUtilsConMonWrapper(this)),
       
    66     mScanWrapper(new WlanQtUtilsScan(this)),
    66     mEsockWrapper(new WlanQtUtilsEsockWrapper(this)),
    67     mEsockWrapper(new WlanQtUtilsEsockWrapper(this)),
    67     mConnTestWrapper(new ConnTestWrapper(this)),
    68     mIctService(),
       
    69     mScanMode(ScanModeNone),
    68     mWlanScanList(),
    70     mWlanScanList(),
    69     mToBeTestedIapId(WlanQtUtils::IapIdNone), 
    71     mToBeTestedIapId(WlanQtUtils::IapIdNone), 
    70     mConnectingIapId(WlanQtUtils::IapIdNone),
    72     mConnectingIapId(WlanQtUtils::IapIdNone),
    71     mConnection()
    73     mConnection()
    72 {
    74 {
    73     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_WLANQTUTILSPRIVATE_ENTRY, this);
    75     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_WLANQTUTILSPRIVATE_ENTRY, this);
    74 
    76 
    75     // Make all connections.
    77     // Make all connections.
    76     bool connectStatus = connect(
    78     bool connectStatus = connect(
    77         mConMonWrapper, 
    79         mScanWrapper, 
    78         SIGNAL(availableWlanApsFromWrapper(
    80         SIGNAL(availableWlanAps(QList< QSharedPointer<WlanQtUtilsAp> >&)), 
    79             QList< QSharedPointer<WlanQtUtilsAp> >&)), 
       
    80         this, 
    81         this, 
    81         SLOT(updateAvailableWlanAps(
    82         SLOT(updateAvailableWlanAps(QList< QSharedPointer<WlanQtUtilsAp> >&)));
    82             QList< QSharedPointer<WlanQtUtilsAp> >&)));
    83     Q_ASSERT(connectStatus);
       
    84     
       
    85     connectStatus = connect(
       
    86         mScanWrapper,
       
    87         SIGNAL(scanFailed(int)),
       
    88         this,
       
    89         SLOT(reportScanResult(int)));
    83     Q_ASSERT(connectStatus);
    90     Q_ASSERT(connectStatus);
    84 
    91 
    85     connectStatus = connect(
    92     connectStatus = connect(
    86         mEsockWrapper, 
    93         mEsockWrapper, 
    87         SIGNAL(connectionStatusFromWrapper(bool)), 
    94         SIGNAL(connectionStatusFromWrapper(bool)), 
    88         this,
    95         this,
    89         SLOT(updateConnectionStatus(bool)));
    96         SLOT(updateConnectionStatus(bool)));
    90     Q_ASSERT(connectStatus);
    97     Q_ASSERT(connectStatus);
    91 
    98 
    92     connectStatus = connect(
    99     connectStatus = connect(
    93         mConnTestWrapper, 
       
    94         SIGNAL(connectivityTestResult(bool)), 
       
    95         this,
       
    96         SLOT(updateConnectivityTestResult(bool)));
       
    97     Q_ASSERT(connectStatus);
       
    98 
       
    99     connectStatus = connect(
       
   100         mConMonWrapper, 
   100         mConMonWrapper, 
   101         SIGNAL(connCreatedEventFromWrapper(uint)), 
   101         SIGNAL(connCreatedEventFromWrapper(uint)), 
   102         this,
   102         this,
   103         SLOT(addActiveConnection(uint)));
   103         SLOT(addActiveConnection(uint)));
   104     Q_ASSERT(connectStatus);
   104     Q_ASSERT(connectStatus);
   140 
   140 
   141 void WlanQtUtilsPrivate::scanWlans()
   141 void WlanQtUtilsPrivate::scanWlans()
   142 {
   142 {
   143     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_SCANWLANS_ENTRY, this);
   143     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_SCANWLANS_ENTRY, this);
   144 
   144 
   145     // Just forward the request to wrapper, which triggers a single WLAN scan
   145     // Scanning while there is an ongoing scan is not supported
   146     mConMonWrapper->scanAvailableWlanAPs();
   146     Q_ASSERT(mScanMode == ScanModeNone);
       
   147     
       
   148     // Just forward the request to wrapper, which triggers a broadcast WLAN scan
       
   149     mScanMode = ScanModeAvailableWlans;
       
   150     mScanWrapper->scanWlanAps();
   147 
   151 
   148     OstTraceFunctionExit1(WLANQTUTILSPRIVATE_SCANWLANS_EXIT, this);
   152     OstTraceFunctionExit1(WLANQTUTILSPRIVATE_SCANWLANS_EXIT, this);
   149 }
   153 }
   150 
   154 
   151 /*!
   155 /*!
   154 
   158 
   155 void WlanQtUtilsPrivate::scanWlanAps()
   159 void WlanQtUtilsPrivate::scanWlanAps()
   156 {
   160 {
   157     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_SCANWLANAPS_ENTRY, this);
   161     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_SCANWLANAPS_ENTRY, this);
   158     
   162     
   159     emit q_ptr->wlanScanApReady();
   163     // Scanning while there is an ongoing scan is not supported
   160     // TODO: implement me (wizard requires this)
   164     Q_ASSERT(mScanMode == ScanModeNone);
       
   165     
       
   166     // Just forward the request to wrapper, which triggers a broadcast WLAN scan
       
   167     mScanMode = ScanModeAvailableWlanAps;
       
   168     mScanWrapper->scanWlanAps();
   161 
   169 
   162     OstTraceFunctionExit1(WLANQTUTILSPRIVATE_SCANWLANAPS_EXIT, this);
   170     OstTraceFunctionExit1(WLANQTUTILSPRIVATE_SCANWLANAPS_EXIT, this);
   163 }
   171 }
   164 
   172 
   165 /*!
   173 /*!
   167 */
   175 */
   168 
   176 
   169 void WlanQtUtilsPrivate::scanWlanDirect(const QString &ssid)
   177 void WlanQtUtilsPrivate::scanWlanDirect(const QString &ssid)
   170 {
   178 {
   171     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_SCANWLANDIRECT_ENTRY, this);
   179     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_SCANWLANDIRECT_ENTRY, this);
   172     
   180 
   173     Q_UNUSED(ssid);
   181     // Scanning while there is an ongoing scan is not supported
   174     
   182     Q_ASSERT(mScanMode == ScanModeNone);
   175     emit q_ptr->wlanScanDirectReady();
   183     
   176     // TODO: implement me (wizard requires this)
   184     // Just forward the request to wrapper, which triggers a direct WLAN scan
       
   185     mScanMode = ScanModeDirect;
       
   186     mScanWrapper->scanWlanDirect(ssid);
   177     
   187     
   178     OstTraceFunctionExit1(WLANQTUTILSPRIVATE_SCANWLANDIRECT_EXIT, this);
   188     OstTraceFunctionExit1(WLANQTUTILSPRIVATE_SCANWLANDIRECT_EXIT, this);
   179 }
   189 }
   180 
   190 
   181 /*!
   191 /*!
   184 
   194 
   185 void WlanQtUtilsPrivate::stopWlanScan()
   195 void WlanQtUtilsPrivate::stopWlanScan()
   186 {
   196 {
   187     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_STOPWLANSCAN_ENTRY, this);
   197     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_STOPWLANSCAN_ENTRY, this);
   188     
   198     
   189     mConMonWrapper->stopScan();
   199     if (mScanMode != ScanModeNone) {
       
   200         // Inform that scan was cancelled
       
   201         reportScanResult(WlanQtUtils::ScanStatusCancelled);
       
   202         
       
   203         // Stop the scan
       
   204         mScanMode = ScanModeNone;
       
   205         mScanWrapper->stopScan();
       
   206     }
   190     
   207     
   191     OstTraceFunctionExit1(WLANQTUTILSPRIVATE_STOPWLANSCAN_EXIT, this);
   208     OstTraceFunctionExit1(WLANQTUTILSPRIVATE_STOPWLANSCAN_EXIT, this);
   192 }
   209 }
   193 
   210 
   194 /*!
   211 /*!
   203 
   220 
   204     wlanIapList.clear();
   221     wlanIapList.clear();
   205     wlanApList.clear();
   222     wlanApList.clear();
   206 
   223 
   207     // Read the list of configured IAPs
   224     // Read the list of configured IAPs
   208     QList<QSharedPointer<WlanQtUtilsIap> > configuredIapList;
   225     QList< QSharedPointer<WlanQtUtilsIap> > configuredIapList;
   209     mSettings->fetchIaps(configuredIapList);
   226     mSettings->fetchIaps(configuredIapList);
   210 
   227 
   211     // Match IAPs against WLAN scan results
   228     // Match IAPs against WLAN scan results
   212     foreach (QSharedPointer<WlanQtUtilsIap> iap, configuredIapList) {
   229     foreach (QSharedPointer<WlanQtUtilsIap> iap, configuredIapList) {
   213         foreach (QSharedPointer<WlanQtUtilsAp> scanAp, mWlanScanList) {
   230         foreach (QSharedPointer<WlanQtUtilsAp> scanAp, mWlanScanList) {
   214             if (WlanQtUtilsAp::compare(iap.data(), scanAp.data()) == true) {
   231             if (WlanQtUtilsAp::compare(iap.data(), scanAp.data()) == 0) {
   215                 // IAP found, add it to caller's list of known IAPs
   232                 // IAP found, add it to caller's list of known IAPs
   216                 // (signal strength needs to be updated manually since
   233                 // (signal strength needs to be updated manually since
   217                 // the IAP in our list does not have that information yet)
   234                 // the IAP in our list does not have that information yet)
   218                 iap->setValue(
   235                 iap->setValue(
   219                     WlanQtUtilsAp::ConfIdSignalStrength,
   236                     WlanQtUtilsAp::ConfIdSignalStrength,
   247 void WlanQtUtilsPrivate::availableWlanAps(
   264 void WlanQtUtilsPrivate::availableWlanAps(
   248     QList< QSharedPointer<WlanQtUtilsAp> > &wlanApList) const
   265     QList< QSharedPointer<WlanQtUtilsAp> > &wlanApList) const
   249 {
   266 {
   250     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_AVAILABLEWLANAPS_ENTRY, this);
   267     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_AVAILABLEWLANAPS_ENTRY, this);
   251     
   268     
   252     Q_UNUSED(wlanApList);
   269     // Just copy the results
   253     // TODO: implement me (wizard requires this)
   270     wlanApList = mWlanScanList;
   254     
   271     
   255     OstTraceFunctionExit1(WLANQTUTILSPRIVATE_AVAILABLEWLANAPS_EXIT, this);
   272     OstTraceFunctionExit1(WLANQTUTILSPRIVATE_AVAILABLEWLANAPS_EXIT, this);
   256 }
   273 }
   257 
   274 
   258 /*!
   275 /*!
   339     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_DISCONNECTIAP_ENTRY, this);
   356     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_DISCONNECTIAP_ENTRY, this);
   340     
   357     
   341     OstTrace1(
   358     OstTrace1(
   342         TRACE_BORDER,
   359         TRACE_BORDER,
   343         WLANQTUTILSPRIVATE_DISCONNECTIAP,
   360         WLANQTUTILSPRIVATE_DISCONNECTIAP,
   344         "WlanQtUtilsPrivate::disconnectIap;IAP ID=%d", iapId );
   361         "WlanQtUtilsPrivate::disconnectIap;IAP ID=%d",
       
   362         iapId);
   345 
   363 
   346     if (iapId != WlanQtUtils::IapIdNone) {
   364     if (iapId != WlanQtUtils::IapIdNone) {
   347         // Close our RConnection handle, if needed. Wrapper ignores call, if
   365         // Close our RConnection handle, if needed. Wrapper ignores call, if
   348         // no handle exists.
   366         // no handle exists.
   349         mEsockWrapper->disconnectIap();
   367         mEsockWrapper->disconnectIap();
   435     const WlanQtUtilsAp *ap) const
   453     const WlanQtUtilsAp *ap) const
   436 {
   454 {
   437     bool match = false;     // Return value
   455     bool match = false;     // Return value
   438     
   456     
   439     foreach (QSharedPointer<WlanQtUtilsIap> iap, list) {
   457     foreach (QSharedPointer<WlanQtUtilsIap> iap, list) {
   440         if (WlanQtUtilsAp::compare(iap.data(), ap) == true) {
   458         if (WlanQtUtilsAp::compare(iap.data(), ap) == 0) {
   441             // Match found
   459             // Match found
   442             match = true;
   460             match = true;
   443             break;
   461             break;
   444         }
   462         }
   445     }
   463     }
   466         QString tmp(iap->value(WlanQtUtilsIap::ConfIdName).toString());
   484         QString tmp(iap->value(WlanQtUtilsIap::ConfIdName).toString());
   467         TPtrC16 name(tmp.utf16(), tmp.length());
   485         TPtrC16 name(tmp.utf16(), tmp.length());
   468         OstTraceExt3(
   486         OstTraceExt3(
   469             TRACE_NORMAL,
   487             TRACE_NORMAL,
   470             WLANQTUTILSPRIVATE_TRACEAVAILABLEWLANAPS_IAP,
   488             WLANQTUTILSPRIVATE_TRACEAVAILABLEWLANAPS_IAP,
   471             "WlanQtUtilsPrivate::traceAvailableWlanAps IAP;name=%S;iap->securityMode()=%d;iap->signalStrength()=%d",
   489             "WlanQtUtilsPrivate::traceAvailableWlanAps IAP;name=%S;secMode=%{WlanSecMode};signalStrength=%d",
   472             name,
   490             name,
   473             iap->value(WlanQtUtilsAp::ConfIdSecurityMode).toInt(),
   491             iap->value(WlanQtUtilsAp::ConfIdSecurityMode).toInt(),
   474             iap->value(WlanQtUtilsAp::ConfIdSignalStrength).toInt());
   492             iap->value(WlanQtUtilsAp::ConfIdSignalStrength).toInt());
   475     }
   493     }
   476     foreach (QSharedPointer<WlanQtUtilsAp> ap, aps) {
   494     foreach (QSharedPointer<WlanQtUtilsAp> ap, aps) {
   477         QString tmp(ap->value(WlanQtUtilsAp::ConfIdSsid).toString());
   495         QString tmp(ap->value(WlanQtUtilsAp::ConfIdSsid).toString());
   478         TPtrC16 ssid(tmp.utf16(), tmp.length());
   496         TPtrC16 ssid(tmp.utf16(), tmp.length());
   479         OstTraceExt3(
   497         OstTraceExt3(
   480             TRACE_NORMAL,
   498             TRACE_NORMAL,
   481             WLANQTUTILSPRIVATE_TRACEAVAILABLEWLANAPS_AP,
   499             WLANQTUTILSPRIVATE_TRACEAVAILABLEWLANAPS_AP,
   482             "WlanQtUtilsPrivate::traceAvailableWlanAps AP;ssid=%S;ap->securityMode()=%d;ap->signalStrength()=%d",
   500             "WlanQtUtilsPrivate::traceAvailableWlanAps AP;ssid=%S;secMode=%{WlanSecMode};signalStrength=%d",
   483             ssid,
   501             ssid,
   484             ap->value(WlanQtUtilsAp::ConfIdSecurityMode).toInt(),
   502             ap->value(WlanQtUtilsAp::ConfIdSecurityMode).toInt(),
   485             ap->value(WlanQtUtilsAp::ConfIdSignalStrength).toInt() );
   503             ap->value(WlanQtUtilsAp::ConfIdSignalStrength).toInt());
   486     }
   504     }
   487 #endif
   505 #endif
   488 }
   506 }
   489 
   507 
   490 /*!
   508 /*!
   493 
   511 
   494     @param [in] availableWlanList WLAN networks found in scan.
   512     @param [in] availableWlanList WLAN networks found in scan.
   495 */
   513 */
   496 
   514 
   497 void WlanQtUtilsPrivate::updateAvailableWlanAps(
   515 void WlanQtUtilsPrivate::updateAvailableWlanAps(
   498     QList<QSharedPointer<WlanQtUtilsAp> > &availableWlanList)
   516     QList< QSharedPointer<WlanQtUtilsAp> > &availableWlanList)
   499 {
   517 {
   500     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_UPDATEAVAILABLEWLANAPS_ENTRY, this);
   518     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_UPDATEAVAILABLEWLANAPS_ENTRY, this);
   501 
   519 
   502     // Old results are removed
   520     // Old results are removed
   503     mWlanScanList.clear();
   521     mWlanScanList.clear();
   505     for (int i = 0; i < availableWlanList.count(); i++) {
   523     for (int i = 0; i < availableWlanList.count(); i++) {
   506         bool duplicate = false;
   524         bool duplicate = false;
   507         for (int j = 0; j < mWlanScanList.count(); j++) {
   525         for (int j = 0; j < mWlanScanList.count(); j++) {
   508             if (WlanQtUtilsAp::compare(
   526             if (WlanQtUtilsAp::compare(
   509                 availableWlanList[i].data(),
   527                 availableWlanList[i].data(),
   510                 mWlanScanList[j].data()) == true) {
   528                 mWlanScanList[j].data()) == 0) {
   511                 duplicate = true;
   529                 duplicate = true;
   512                 break;
   530                 break;
   513             }
   531             }
   514         }
   532         }
   515         if (duplicate == false) {
   533         if (duplicate == false) {
   516             mWlanScanList.append(availableWlanList[i]);
   534             mWlanScanList.append(availableWlanList[i]);
   517         }
   535         }
   518     }
   536     }
   519 
   537 
   520     // The information is forwarded to the UI
   538     // The information is forwarded to the client
   521     OstTrace0(
   539     reportScanResult(WlanQtUtils::ScanStatusOk);
   522         TRACE_BORDER,
   540     
   523         WLANQTUTILSPRIVATE_WLANSCANREADY,
   541     // Scan is complete
   524         "WlanQtUtilsPrivate::emit wlanScanReady");
   542     mScanMode = ScanModeNone;
   525     emit q_ptr->wlanScanReady();
       
   526     
   543     
   527     OstTraceFunctionExit1(WLANQTUTILSPRIVATE_UPDATEAVAILABLEWLANAPS_EXIT, this);
   544     OstTraceFunctionExit1(WLANQTUTILSPRIVATE_UPDATEAVAILABLEWLANAPS_EXIT, this);
       
   545 }
       
   546 
       
   547 /*!
       
   548     Scan result handler. Reports the scanning result to the client.
       
   549         
       
   550     @param [in] status Scan status code (WlanQtUtils::ScanStatus).
       
   551 */
       
   552 
       
   553 void WlanQtUtilsPrivate::reportScanResult(int status)
       
   554 {
       
   555     switch (mScanMode) {
       
   556     case ScanModeAvailableWlans:
       
   557         OstTrace1(
       
   558             TRACE_BORDER,
       
   559             WLANQTUTILSPRIVATE_WLANSCANREADY,
       
   560             "WlanQtUtilsPrivate::reportScanResult emit wlanScanReady;status=%{ScanStatus};",
       
   561             status);
       
   562         emit q_ptr->wlanScanReady(status);
       
   563         break;
       
   564 
       
   565     case ScanModeAvailableWlanAps:
       
   566         OstTrace1(
       
   567             TRACE_BORDER,
       
   568             WLANQTUTILSPRIVATE_WLANSCANAPREADY,
       
   569             "WlanQtUtilsPrivate::reportScanResult emit wlanScanApReady;status=%{ScanStatus};",
       
   570             status);
       
   571         emit q_ptr->wlanScanApReady(status);
       
   572         break;
       
   573 
       
   574     case ScanModeDirect:
       
   575         OstTrace1(
       
   576             TRACE_BORDER,
       
   577             WLANQTUTILSPRIVATE_WLANSCANDIRECTREADY,
       
   578             "WlanQtUtilsPrivate::reportScanResult emit wlanScanDirectReady;status=%{ScanStatus};",
       
   579             status);
       
   580         emit q_ptr->wlanScanDirectReady(status);
       
   581         break;
       
   582 
       
   583 #ifndef QT_NO_DEBUG
       
   584     default:
       
   585         // Invalid scan mode detected
       
   586         Q_ASSERT(0);
       
   587         break;
       
   588 #endif        
       
   589     }
   528 }
   590 }
   529 
   591 
   530 /*!
   592 /*!
   531     Slot for handling connection setup status event from wrapper.
   593     Slot for handling connection setup status event from wrapper.
   532 
   594 
   554             status);
   616             status);
   555         emit q_ptr->wlanNetworkClosed(mConnectingIapId, status);
   617         emit q_ptr->wlanNetworkClosed(mConnectingIapId, status);
   556     } else {
   618     } else {
   557         // Opening succeeded, update connection status and inform UI
   619         // Opening succeeded, update connection status and inform UI
   558         if (mConnection) {
   620         if (mConnection) {
   559             mConnection->setConnectionStatus(
   621             mConnection->setConnectionStatus(WlanQtUtils::ConnStatusConnected);
   560                 WlanQtUtils::ConnStatusConnected);
       
   561         }
   622         }
   562         
   623         
   563         OstTrace1(
   624         OstTrace1(
   564             TRACE_BORDER,
   625             TRACE_BORDER,
   565             WLANQTUTILSPRIVATE_WLANNETWORKOPENED,
   626             WLANQTUTILSPRIVATE_WLANNETWORKOPENED,
   567             mConnectingIapId);
   628             mConnectingIapId);
   568         emit q_ptr->wlanNetworkOpened(mConnectingIapId);
   629         emit q_ptr->wlanNetworkOpened(mConnectingIapId);
   569 
   630 
   570         // Start ICT, if needed
   631         // Start ICT, if needed
   571         if (mConnectingIapId == mToBeTestedIapId) {
   632         if (mConnectingIapId == mToBeTestedIapId) {
   572             QSharedPointer<WlanQtUtilsIap> iap = 
   633             QSharedPointer<WlanQtUtilsIap> iap(mSettings->fetchIap(mConnectingIapId));
   573                 mSettings->fetchIap(mToBeTestedIapId);
   634             
   574             mConnTestWrapper->startConnectivityTest(
   635             mIctService = QSharedPointer<IctsWlanLoginInterface>(
       
   636                 new IctsWlanLoginInterface(this));
       
   637             
       
   638             // IctsWlanLoginInterface instance is created for each connectivity test
       
   639             // Note: Queued connection is required since mIctService is deleted
       
   640             // when signal comes
       
   641             bool connectStatus = connect(
       
   642                 mIctService.data(),
       
   643                 SIGNAL(ictsResult(int)),
       
   644                 this,
       
   645                 SLOT(updateIctResult(int)),
       
   646                 Qt::QueuedConnection); 
       
   647             Q_ASSERT(connectStatus);            
       
   648             connectStatus = connect(
       
   649                 mIctService.data(),
       
   650                 SIGNAL(hotspotCase()),
       
   651                 this,
       
   652                 SLOT(updateIctHotspotCase()),
       
   653                 Qt::QueuedConnection);
       
   654             Q_ASSERT(connectStatus);
       
   655             
       
   656             mIctService->start(
   575                 mToBeTestedIapId,
   657                 mToBeTestedIapId,
   576                 iap->value(WlanQtUtilsIap::ConfIdNetworkId).toInt());
   658                 iap->value(WlanQtUtilsIap::ConfIdNetworkId).toInt());
   577         }
   659         }
   578     }
   660     }
   579     // IAP is no more in connecting state
   661     // IAP is no more in connecting state
   581 
   663 
   582     OstTraceFunctionExit1(WLANQTUTILSPRIVATE_UPDATECONNECTIONSTATUS_EXIT, this);
   664     OstTraceFunctionExit1(WLANQTUTILSPRIVATE_UPDATECONNECTIONSTATUS_EXIT, this);
   583 }
   665 }
   584 
   666 
   585 /*!
   667 /*!
   586     Slot for handling connectivity test result event from wrapper. Tested
   668     Slot for handling internet connectivity test result event from wrapper.
   587     IAP is stored to Internet SNAP, if test was successful.
   669     Tested IAP is stored to Internet SNAP, if test was successful. If the
   588 
   670     IAP needs Hotspot authentication, it remains ungategorized.
   589     @param [in] result Was the test successful?
   671 
   590 */
   672     @param [in] result Result of internet connectivity test and hotspot
   591 
   673                        authentication (IctsWlanLoginInterface::ictsResultType).
   592 void WlanQtUtilsPrivate::updateConnectivityTestResult(bool result)
   674 */
   593 {
   675 
   594     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_UPDATECONNECTIVITYTESTRESULT_ENTRY, this);
   676 void WlanQtUtilsPrivate::updateIctResult(int ictsResult)
   595 
   677 {
   596     if (result == true) {
   678     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_UPDATEICTRESULT_ENTRY, this);
       
   679 
       
   680     Q_ASSERT(mToBeTestedIapId != WlanQtUtils::IapIdNone);
       
   681     WlanQtUtils::IctStatus result = WlanQtUtils::IctFailed;
       
   682     
       
   683     if (ictsResult == IctsWlanLoginInterface::IctsPassed) {
   597         // Move the tested IAP to Internet SNAP since the test passed
   684         // Move the tested IAP to Internet SNAP since the test passed
   598         Q_ASSERT(mToBeTestedIapId != WlanQtUtils::IapIdNone);
   685         Q_ASSERT(mToBeTestedIapId != WlanQtUtils::IapIdNone);
   599         mSettings->moveIapToInternetSnap(mToBeTestedIapId);
   686         mSettings->moveIapToInternetSnap(mToBeTestedIapId);
   600     } // else: do nothing, IAP remains to be uncategorized
   687         result = WlanQtUtils::IctPassed;
   601 
   688     } else if (ictsResult == IctsWlanLoginInterface::IctsHotspotPassed) {
       
   689         Q_ASSERT(mToBeTestedIapId != WlanQtUtils::IapIdNone);
       
   690         result = WlanQtUtils::IctHotspotPassed;
       
   691     } else if (ictsResult == IctsWlanLoginInterface::IctsCanceled) {
       
   692         Q_ASSERT(mToBeTestedIapId != WlanQtUtils::IapIdNone);
       
   693         result = WlanQtUtils::IctCancelled;
       
   694     } else {
       
   695         // ICTS failed - IAP remains to be uncategorized and mIctService is deleted.
       
   696         mIctService.clear();
       
   697     }
       
   698     
   602     // Inform UI
   699     // Inform UI
   603     OstTraceExt2(
   700     OstTraceExt2(
   604         TRACE_NORMAL,
   701         TRACE_NORMAL,
   605         WLANQTUTILSPRIVATE_ICTRESULT,
   702         WLANQTUTILSPRIVATE_ICTRESULT,
   606         "WlanQtUtilsPrivate::emit ictResult;result=%hhu;IAP ID=%d",
   703         "WlanQtUtilsPrivate::emit ictResult;iapId=%d;result=%{IctStatus}",
   607         result,
   704         mToBeTestedIapId,
   608         mToBeTestedIapId);
   705         result);
   609 
   706 
   610     emit q_ptr->ictResult(mToBeTestedIapId, result);
   707     emit q_ptr->ictResult(mToBeTestedIapId, result);
   611 
   708 
   612     // This IAP is now tested
   709     // This IAP is now tested
   613     mToBeTestedIapId = WlanQtUtils::IapIdNone;
   710     mToBeTestedIapId = WlanQtUtils::IapIdNone;
   614 
   711 
   615     OstTraceFunctionExit1(WLANQTUTILSPRIVATE_UPDATECONNECTIVITYTESTRESULT_EXIT, this);
   712     OstTraceFunctionExit1(WLANQTUTILSPRIVATE_UPDATEICTRESULT_EXIT, this);
       
   713 }
       
   714 
       
   715 /*!
       
   716     Slot for setting IAP to be tested as hotspot IAP.
       
   717 */
       
   718 
       
   719 void WlanQtUtilsPrivate::updateIctHotspotCase()
       
   720 {
       
   721     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_UPDATEICTHOTSPOTCASE_ENTRY, this);
       
   722 
       
   723     mSettings->setAsHotspotIap(mToBeTestedIapId);
       
   724   
       
   725     Q_ASSERT(mToBeTestedIapId != WlanQtUtils::IapIdNone);
       
   726     OstTrace1(
       
   727         TRACE_BORDER,
       
   728         WLANQTUTILSPRIVATE_UPDATEICTHOTSPOTCASE,
       
   729         "WlanQtUtilsPrivate::updateIctHotspotCase set as hotspot IAP;iapId=%d",
       
   730         mToBeTestedIapId);
       
   731         
       
   732     OstTraceFunctionExit1(WLANQTUTILSPRIVATE_UPDATEICTHOTSPOTCASE_EXIT, this);
   616 }
   733 }
   617 
   734 
   618 /*!
   735 /*!
   619     Slot for updating active connection status from wrapper.
   736     Slot for updating active connection status from wrapper.
   620 
   737 
   666             // only relevant for connections opened by this dll
   783             // only relevant for connections opened by this dll
   667             // (updateConnectionStatus)
   784             // (updateConnectionStatus)
   668             OstTraceExt2(
   785             OstTraceExt2(
   669                 TRACE_BORDER,
   786                 TRACE_BORDER,
   670                 DUP1_WLANQTUTILSPRIVATE_WLANNETWORKCLOSED,
   787                 DUP1_WLANQTUTILSPRIVATE_WLANNETWORKCLOSED,
   671                 "WlanQtUtilsPrivate::emit wlanNetworkClosed;IAP ID=%d;status=%d",
   788                 "WlanQtUtilsPrivate::emit wlanNetworkClosed;iapID=%d;status=%d",
   672                 closedIapId,
   789                 closedIapId,
   673                 KErrNone);
   790                 KErrNone);
   674             emit q_ptr->wlanNetworkClosed(closedIapId, KErrNone);
   791             emit q_ptr->wlanNetworkClosed(closedIapId, KErrNone);
   675         }
   792         }
   676         // else: connection creation started by thid dll, but creation failed
   793         // else: connection creation started by thid dll, but creation failed
   693 {
   810 {
   694     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_UPDATEACTIVECONNECTION_ENTRY, this);
   811     OstTraceFunctionEntry1(WLANQTUTILSPRIVATE_UPDATEACTIVECONNECTION_ENTRY, this);
   695     OstTraceExt2(
   812     OstTraceExt2(
   696         TRACE_BORDER,
   813         TRACE_BORDER,
   697         WLANQTUTILSPRIVATE_UPDATEACTIVECONNECTION,
   814         WLANQTUTILSPRIVATE_UPDATEACTIVECONNECTION,
   698         "WlanQtUtilsPrivate::updateActiveConnection;connectionId=%u;connectionStatus=%u",
   815         "WlanQtUtilsPrivate::updateActiveConnection;connectionId=%u;connectionStatus=%{ConnStatus}",
   699         connectionId,
   816         connectionId,
   700         (uint)connectionStatus);
   817         (uint)connectionStatus);
   701 
   818 
   702     Q_ASSERT(mConnection);
   819     Q_ASSERT(mConnection);
   703     if (mConnection->connectionId() == connectionId
   820     if (mConnection->connectionId() == connectionId
   706         mConnection->setConnectionStatus(connectionStatus);
   823         mConnection->setConnectionStatus(connectionStatus);
   707         if (connectionStatus == WlanQtUtils::ConnStatusConnected) {
   824         if (connectionStatus == WlanQtUtils::ConnStatusConnected) {
   708             OstTrace1(
   825             OstTrace1(
   709                 TRACE_BORDER,
   826                 TRACE_BORDER,
   710                 DUP1_WLANQTUTILSPRIVATE_WLANNETWORKOPENED,
   827                 DUP1_WLANQTUTILSPRIVATE_WLANNETWORKOPENED,
   711                 "WlanQtUtilsPrivate::emit wlanNetworkOpened;IAP ID=%d",
   828                 "WlanQtUtilsPrivate::emit wlanNetworkOpened;iapId=%d",
   712                 mConnection->iapId());
   829                 mConnection->iapId());
   713             emit q_ptr->wlanNetworkOpened(mConnection->iapId());
   830             emit q_ptr->wlanNetworkOpened(mConnection->iapId());
   714         }
   831         }
   715         // Do not inform UI about connection closing here. It is done in
   832         // Do not inform UI about connection closing here. It is done in
   716         // removeActiveConnection(), because that may occur without any
   833         // removeActiveConnection(), because that may occur without any