wlanutilities/wlanlogin/wlanloginapp/src/wlanloginengine.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 * Wlan Login engine class implementation
       
    16 * 
       
    17 */
       
    18 
       
    19 // System includes
       
    20 #include <QObject>
       
    21 #include <QString>
       
    22 #include <QUrl>
       
    23 #include <HbMessagebox>
       
    24 #include <HbAction>
       
    25 #include <qnetworkconfigmanager.h>
       
    26 #include <qnetworkconfiguration.h>
       
    27 #include <qnetworksession.h>
       
    28 
       
    29 //User includes
       
    30 #include "wlanloginengine.h"
       
    31 #include "wlanloginapplication.h"
       
    32 #include "wlanloginmainwindow.h"
       
    33 #include "ictsqtwrapper.h"
       
    34 #include "wlanloginnetworkaccessmanager.h"
       
    35 
       
    36 #include "OstTraceDefinitions.h"
       
    37 #ifdef OST_TRACE_COMPILER_IN_USE
       
    38 #include "wlanloginengineTraces.h"
       
    39 #endif
       
    40 
       
    41 /*!
       
    42     \class WlanLoginEngine
       
    43     \brief WLAN Login engine class implementation.
       
    44 */
       
    45 
       
    46 // External function prototypes
       
    47 
       
    48 // Local constants
       
    49 const QString iapIdentifierPrefix = "I_";
       
    50 
       
    51 // ======== LOCAL FUNCTIONS ========
       
    52 
       
    53 // ======== MEMBER FUNCTIONS ========
       
    54 
       
    55 /*!
       
    56     Constructor.
       
    57  */
       
    58 WlanLoginEngine::WlanLoginEngine(QObject *parent): 
       
    59     QObject(parent),
       
    60     mEngineState(WaitingForStart),
       
    61     mStartRequestCompleted(false),
       
    62     mNetConfigurationManager(new QNetworkConfigurationManager(this)),
       
    63     mNetworkAccessManager(new WlanLoginNetworkAccessManager(this)),
       
    64     mNetworkSession(NULL),
       
    65     mIctsWrapper(NULL),
       
    66     mIctsFirstRun(true),
       
    67     mIap(0),
       
    68     mNetId(0),
       
    69     mRedirectionUrl(QUrl(""))            
       
    70 {
       
    71     OstTraceFunctionEntry0(WLANLOGINENGINE_WLANLOGINENGINE_ENTRY);
       
    72     
       
    73     bool connectStatus = connect(
       
    74         mNetConfigurationManager,
       
    75         SIGNAL(updateCompleted()),
       
    76         this, 
       
    77         SLOT(handleUpdateCompleted()));  
       
    78     Q_ASSERT(connectStatus == true);
       
    79             
       
    80     OstTraceFunctionExit0(WLANLOGINENGINE_WLANLOGINENGINE_EXIT);
       
    81 }
       
    82 
       
    83 
       
    84 /*!
       
    85     Destructor.
       
    86  */
       
    87 WlanLoginEngine::~WlanLoginEngine()
       
    88 {
       
    89     OstTraceFunctionEntry0(WLANLOGINENGINE_DESTRUCTOR_ENTRY);
       
    90 
       
    91     if (mNetworkSession) {
       
    92         mNetworkSession->close();
       
    93     }
       
    94     
       
    95     OstTraceFunctionExit0(WLANLOGINENGINE_DESTRUCTOR_EXIT);
       
    96 }
       
    97 
       
    98 
       
    99 /*!
       
   100     Function that returns pointer to network access manager.
       
   101     
       
   102     @return Pointer to WlanLoginNetworkAccessManager
       
   103  */
       
   104 WlanLoginNetworkAccessManager* WlanLoginEngine::networkAccessManager() const
       
   105 {
       
   106     OstTraceFunctionEntry0(WLANLOGINENGINE_NETWORKACCESSMANAGER_ENTRY);
       
   107     OstTraceFunctionExit0(WLANLOGINENGINE_NETWORKACCESSMANAGER_EXIT);
       
   108     
       
   109     return mNetworkAccessManager;
       
   110 
       
   111 }
       
   112 
       
   113 
       
   114 /*!
       
   115     Function that returns current state of the engine.
       
   116     
       
   117     @return engine state
       
   118  */
       
   119 WlanLoginEngine::EngineState WlanLoginEngine::engineState()
       
   120 {
       
   121     OstTraceFunctionEntry0(WLANLOGINENGINE_ENGINESTATE_ENTRY);
       
   122     OstTraceFunctionExit0(WLANLOGINENGINE_ENGINESTATE_EXIT);
       
   123     
       
   124     return mEngineState;
       
   125 }
       
   126 
       
   127 
       
   128 /*!
       
   129     Function that sets the current state of the engine.
       
   130     
       
   131     @param [in] newState New state of the engine to be set
       
   132  */
       
   133 void WlanLoginEngine::setEngineState(WlanLoginEngine::EngineState newState)
       
   134 {
       
   135     OstTraceFunctionEntry0(WLANLOGINENGINE_SETENGINESTATE_ENTRY);
       
   136     
       
   137     mEngineState = newState;
       
   138     OstTrace1(
       
   139         TRACE_NORMAL,
       
   140         WLANLOGINENGINE_SETENGINESTATE_STATE_TRACE,
       
   141         "WlanLoginEngine::setEngineState;mEngineState=%d",
       
   142         mEngineState);
       
   143     
       
   144     OstTraceFunctionExit0(WLANLOGINENGINE_SETENGINESTATE_EXIT);
       
   145 }
       
   146 
       
   147 
       
   148 /*!
       
   149     This slot handles startLogin signal from Qt Highway service provider
       
   150     
       
   151     @param [in] iapId Internet access point ID for a connection that we should attach to'
       
   152     @param [in] netId Network Id for the connection to be used
       
   153     @param [in] redirectionUrl The URL that we were redirected to by the first internet connectivity test
       
   154     
       
   155  */
       
   156 void WlanLoginEngine::handleStartLogin(int iapId, int netId, QUrl redirectionUrl)
       
   157 {
       
   158     OstTraceFunctionEntry0(WLANLOGINENGINE_HANDLESTARTLOGIN_ENTRY);
       
   159    
       
   160     mIap = iapId; 
       
   161     OstTrace1(
       
   162         TRACE_NORMAL,
       
   163         WLANLOGINENGINE_HANDLESTARTLOGIN_IAP_TRACE,
       
   164         "WlanLoginEngine::handleStartLogin;mIap=%d",
       
   165         mIap);
       
   166   
       
   167     mNetId = netId;
       
   168     OstTrace1(
       
   169         TRACE_NORMAL,
       
   170         WLANLOGINENGINE_HANDLESTARTLOGIN_NETID_TRACE,
       
   171         "WlanLoginEngine::handleStartLogin;mNetId=%d",
       
   172         mNetId);
       
   173        
       
   174     mRedirectionUrl = redirectionUrl;
       
   175     
       
   176 #ifdef OST_TRACE_COMPILER_IN_USE
       
   177     QString url = mRedirectionUrl.toString();
       
   178     TPtrC tmp(url.utf16(),url.length() );
       
   179     
       
   180     OstTraceExt1(
       
   181         TRACE_NORMAL,
       
   182         WLANLOGINENGINE_HANDLESTARTLOGIN_URL_TRACE, 
       
   183         "WlanLoginEngine::handleStartLogin;mRedirectionUrl=%S",
       
   184         tmp);
       
   185 #endif
       
   186         
       
   187     //Create ICTS instance as we know needed parameters now
       
   188     mIctsWrapper = new IctsWrapper(mIap, mNetId, this);
       
   189     
       
   190     bool connectStatus = connect(
       
   191         mIctsWrapper,
       
   192         SIGNAL(connectivityTestResult(IctsWrapper::ConnectivityTestResult, QUrl)), 
       
   193         this,
       
   194         SLOT(handleConnectivityTestResult(IctsWrapper::ConnectivityTestResult, QUrl)));  
       
   195     Q_ASSERT(connectStatus == true);
       
   196     
       
   197     //Update network configurations as only states of the cellular IAP's are reliable 
       
   198     //after creating network configuration manager
       
   199     
       
   200     setEngineState(UpdatingNetworkConfigurations);
       
   201     mNetConfigurationManager->updateConfigurations();
       
   202     
       
   203     OstTraceFunctionExit0(WLANLOGINENGINE_HANDLESTARTLOGIN_EXIT);
       
   204 }
       
   205 
       
   206 /*!
       
   207     This slot handles stopLogin signal from Qt Highway service provider
       
   208         
       
   209  */
       
   210 void WlanLoginEngine::handleStopLogin()
       
   211 {
       
   212     OstTraceFunctionEntry0(WLANLOGINENGINE_HANDLESTOPLOGIN_ENTRY);
       
   213 
       
   214     // Exit application
       
   215     qApp->quit();
       
   216 
       
   217     OstTraceFunctionExit0(WLANLOGINENGINE_HANDLESTOPLOGIN_EXIT);
       
   218 }
       
   219 
       
   220 
       
   221 /*!
       
   222     This slot handles updateCompleted signal from QNetworkConfigManager
       
   223         
       
   224  */
       
   225 void WlanLoginEngine::handleUpdateCompleted()
       
   226 {
       
   227    OstTraceFunctionEntry0(WLANLOGINENGINE_HANDLEUPDATECOMPLETED_ENTRY);
       
   228    
       
   229    //States of the available configurations are now updated and
       
   230    //we can open the network session to provided IAP
       
   231    
       
   232    //Check that cancel has not been pressed
       
   233    if (engineState() != WaitingForStopRequest) {
       
   234        openSession();
       
   235    }
       
   236  
       
   237    OstTraceFunctionExit0(WLANLOGINENGINE_HANDLEUPDATECOMPLETED_EXIT);
       
   238 }
       
   239 
       
   240 /*!
       
   241     This function handles opening of the network session to the specified IAP.
       
   242     If IAP is not already in connected state, function completes service request
       
   243     with connection dropped status and show a message box to user.
       
   244         
       
   245  */
       
   246 void WlanLoginEngine::openSession()
       
   247 {
       
   248     OstTraceFunctionEntry0(WLANLOGINENGINE_OPENSESSION_ENTRY);
       
   249 
       
   250     setEngineState(WlanLoginEngine::OpeningNetworkSession);
       
   251     
       
   252     //Get configuration that matches the provided IAP
       
   253 	//Note that identifier must be given in format I_ + IAP ID
       
   254     QNetworkConfiguration netConfiguration = mNetConfigurationManager->configurationFromIdentifier(iapIdentifierPrefix + QString::number(mIap));    
       
   255     
       
   256     OstTrace1(
       
   257         TRACE_NORMAL,
       
   258         WLANLOGINENGINE_OPENSESSION_CONFIGURATION_IDENTIFIER_TRACE,
       
   259         "WlanLoginEngine::openSession;netConfiguration identifier=%d",
       
   260         netConfiguration.identifier().toInt());
       
   261     
       
   262     OstTrace1(TRACE_NORMAL,
       
   263         WLANLOGINENGINE_OPENSESSION_CONFIGURATION_STATE_TRACE,
       
   264         "WlanLoginEngine::openSession;netConfiguration state=%d",
       
   265         netConfiguration.state());
       
   266     
       
   267 #ifdef OST_TRACE_COMPILER_IN_USE
       
   268     QString string = netConfiguration.name();
       
   269     TPtrC tmp(string.utf16(),string.length() );
       
   270     
       
   271     OstTraceExt1(
       
   272         TRACE_NORMAL,
       
   273         WLANLOGINENGINE_OPENSESSION_CONFIGURATION_NAME_TRACE, 
       
   274         "WlanLoginEngine::openSession;netConfiguration name=%S",
       
   275         tmp );
       
   276        
       
   277     string = netConfiguration.bearerName();
       
   278     tmp.Set(string.utf16(),string.length());
       
   279     
       
   280     OstTraceExt1(
       
   281         TRACE_NORMAL,
       
   282         WLANLOGINENGINE_OPENSESSION_CONFIGURATION_BEARER_NAME_TRACE, 
       
   283         "WlanLoginEngine::openSession;netConfiguration bearerName=%S",
       
   284         tmp );
       
   285 #endif
       
   286     
       
   287     //Check that configuration state is active before opening session
       
   288     //Otherwise show disconnected message box
       
   289     
       
   290     if (netConfiguration.state() == QNetworkConfiguration::Active)
       
   291         {
       
   292         //Create network session to IAP that was provided in startup
       
   293         mNetworkSession = new QNetworkSession(netConfiguration, this);
       
   294         
       
   295         bool connectStatus = connect(
       
   296             mNetworkSession,
       
   297             SIGNAL(opened()),
       
   298             this, 
       
   299             SLOT(handleSessionOpened()));
       
   300         Q_ASSERT(connectStatus == true);
       
   301         
       
   302         connectStatus = connect(
       
   303             mNetworkSession,
       
   304             SIGNAL(stateChanged(QNetworkSession::State)), 
       
   305             this,
       
   306             SLOT(handleSessionStateChanged(QNetworkSession::State)));       
       
   307         Q_ASSERT(connectStatus == true);
       
   308         
       
   309         connectStatus = connect(
       
   310             mNetworkSession,
       
   311             SIGNAL(error(QNetworkSession::SessionError)), 
       
   312             this,
       
   313             SLOT(handleSessionError(QNetworkSession::SessionError)));   
       
   314         Q_ASSERT(connectStatus == true);
       
   315         
       
   316         mNetworkSession->open();
       
   317         } else {
       
   318             showConnectionDroppedMessageBox();
       
   319         }
       
   320     
       
   321     OstTraceFunctionExit0(WLANLOGINENGINE_OPENSESSION_EXIT);
       
   322 }
       
   323 
       
   324 
       
   325 /*!
       
   326     This function handles sessionOpened signal from QNetworkSession. It informs view that
       
   327     connection is ready to be used.
       
   328         
       
   329  */
       
   330 void WlanLoginEngine::handleSessionOpened()
       
   331 {
       
   332     OstTraceFunctionEntry0(WLANLOGINENGINE_HANDLESESSIONOPENED_ENTRY);
       
   333 
       
   334     //Check that cancel has not been pressed
       
   335     if (engineState() != WaitingForStopRequest) {    
       
   336         setEngineState(NetworkSessionOpened);
       
   337         //Send indication to view that connection is ready
       
   338         emit connectionReady(mRedirectionUrl);
       
   339     }
       
   340 
       
   341     OstTraceFunctionExit0(WLANLOGINENGINE_HANDLESESSIONOPENED_EXIT);
       
   342 }
       
   343 
       
   344 
       
   345 /*!
       
   346     This function handles sessionStateChanged signal from QNetworkSession.
       
   347     @param [in] newState New state of the session  
       
   348  */
       
   349 void WlanLoginEngine::handleSessionStateChanged(QNetworkSession::State newState)
       
   350 {
       
   351     OstTraceFunctionEntry0(WLANLOGINENGINE_HANDLESESSIONSTATECHANGED_ENTRY);
       
   352 
       
   353     OstTrace1(
       
   354         TRACE_NORMAL,
       
   355         WLANLOGINENGINE_HANDLESESSIONSTATECHANGED_STATE_TRACE,
       
   356         "WlanLoginEngine::handleSessionStateChanged;newState=%d",
       
   357         newState );
       
   358     
       
   359     OstTraceFunctionExit0(WLANLOGINENGINE_HANDLESESSIONSTATECHANGED_EXIT);
       
   360 }
       
   361 
       
   362 
       
   363 /*!
       
   364     This function handles sessionError signal from QNetworkSession
       
   365     @param [in] error session error     
       
   366  */
       
   367 void WlanLoginEngine::handleSessionError(QNetworkSession::SessionError error)
       
   368 {
       
   369     OstTraceFunctionEntry0(WLANLOGINENGINE_HANDLESESSIONERROR_ENTRY);
       
   370         
       
   371     OstTrace1(
       
   372         TRACE_NORMAL,
       
   373         WLANLOGINENGINE_SESSION_ERROR_TRACE,
       
   374         "WlanLoginEngine::handleSessionError;error=%d",
       
   375         error);
       
   376     
       
   377     switch (engineState()) {    
       
   378     case OpeningNetworkSession:
       
   379         showConnectionDroppedMessageBox();
       
   380         break;
       
   381         
       
   382     case NetworkSessionOpened:
       
   383     case IctsOk:
       
   384     case IctsFailed:    
       
   385         if (error == QNetworkSession::SessionAbortedError ) {
       
   386             showConnectionDroppedMessageBox();
       
   387         }
       
   388         break;
       
   389         
       
   390     case RunningIcts:
       
   391         if (error == QNetworkSession::SessionAbortedError ) {
       
   392             stopIcts();
       
   393             showConnectionDroppedMessageBox();
       
   394         }
       
   395         break;
       
   396         
       
   397     default:
       
   398         break;
       
   399     }
       
   400         
       
   401     OstTraceFunctionExit0(WLANLOGINENGINE_HANDLESESSIONERROR_EXIT);
       
   402 }
       
   403 
       
   404 /*!
       
   405     This function handles startIcts signal and starts connectivity test in polling mode
       
   406         
       
   407  */
       
   408 void WlanLoginEngine::handleStartIcts()
       
   409 {
       
   410     OstTraceFunctionEntry0(WLANLOGINENGINE_HANDLESTARTICTS_ENTRY);
       
   411     
       
   412     if (!mIctsWrapper->isPolling()) {
       
   413         setEngineState(RunningIcts);
       
   414         mIctsWrapper->startPolling(totalPollingTime, pollingInterval);
       
   415     }
       
   416 
       
   417     OstTraceFunctionExit0(WLANLOGINENGINE_HANDLESTARTICTS_EXIT);
       
   418 }
       
   419 
       
   420 /*!
       
   421     This function stops internet connectivity test
       
   422         
       
   423  */
       
   424 void WlanLoginEngine::stopIcts()
       
   425 {
       
   426     OstTraceFunctionEntry0(WLANLOGINENGINE_STOPICTS_ENTRY);
       
   427 
       
   428     if (mIctsWrapper->isPolling()) {
       
   429         mIctsWrapper->stopPolling();
       
   430     }
       
   431 
       
   432     OstTraceFunctionExit0(WLANLOGINENGINE_STOPICTS_EXIT);
       
   433 }
       
   434 
       
   435 /*!
       
   436     This slot handles connectivityTestResult signal from ICTS wrapper
       
   437     @param [in] result Result of the internet connectivity test
       
   438     @param [in] redirectionUrl The URL that we are being redirected, valid only if result is HttpAuthenticationNeeded
       
   439  */
       
   440 
       
   441 void WlanLoginEngine::handleConnectivityTestResult(IctsWrapper::ConnectivityTestResult result, QUrl redirectUrl)
       
   442 {
       
   443     OstTraceFunctionEntry0(WLANLOGINENGINE_HANDLECONNECTIVITYTESTRESULT_ENTRY);
       
   444 
       
   445     Q_UNUSED(redirectUrl);
       
   446     
       
   447     mIctsFirstRun = false;
       
   448     
       
   449     if (result == IctsWrapper::ConnectionOk){
       
   450         setEngineState(IctsOk);
       
   451         emit ictsOk();
       
   452     } else {
       
   453         setEngineState(IctsFailed);
       
   454     }
       
   455     
       
   456     OstTraceFunctionExit0(WLANLOGINENGINE_HANDLECONNECTIVITYTESTRESULT_EXIT);
       
   457 }
       
   458 
       
   459 /*!
       
   460     This slot handles cancelTriggered signal from the view
       
   461         
       
   462  */
       
   463 void WlanLoginEngine::handleCancelTriggered()
       
   464 {
       
   465     OstTraceFunctionEntry0(WLANLOGINENGINE_HANDLECANCELTRIGGERED_ENTRY);
       
   466     
       
   467     //Check if Qt Highway request is completed
       
   468      if (mStartRequestCompleted == false){
       
   469         
       
   470          switch (engineState()) {
       
   471             
       
   472          case UpdatingNetworkConfigurations:
       
   473          case OpeningNetworkSession:
       
   474          case NetworkSessionOpened:
       
   475              setEngineState(WaitingForStopRequest);
       
   476              emitCompleteServiceRequest(WlanLoginService::WlanLoginStatusCancel);
       
   477              break;   
       
   478             
       
   479          case RunningIcts:      
       
   480              stopIcts();
       
   481              setEngineState(WaitingForStopRequest);
       
   482              if (mIctsFirstRun) {
       
   483                  emitCompleteServiceRequest(WlanLoginService::WlanLoginStatusCancel);
       
   484              } else {
       
   485                  emitCompleteServiceRequest(WlanLoginService::WlanLoginStatusFailed);
       
   486              } 
       
   487              break;
       
   488              
       
   489          case IctsFailed:
       
   490              setEngineState(WaitingForStopRequest);
       
   491              emitCompleteServiceRequest(WlanLoginService::WlanLoginStatusFailed);
       
   492              break;
       
   493                  
       
   494          default:          
       
   495              break;
       
   496          }
       
   497     } else {
       
   498         //Check race condition
       
   499         if(engineState() != WaitingForStopRequest) {
       
   500             qApp->exit();
       
   501         }
       
   502     }
       
   503 
       
   504     OstTraceFunctionExit0(WLANLOGINENGINE_HANDLECANCELTRIGGERED_EXIT);
       
   505 }
       
   506 
       
   507 /*!
       
   508     This slot handles nextTriggered signal from the view
       
   509         
       
   510  */
       
   511 void WlanLoginEngine::handleNextTriggered()
       
   512 {
       
   513     OstTraceFunctionEntry0(WLANLOGINENGINE_HANDLENEXTTRIGGERED_ENTRY);
       
   514 
       
   515     if (mStartRequestCompleted == false ) {    
       
   516         emitCompleteServiceRequest(WlanLoginService::WlanLoginStatusNext);
       
   517     }
       
   518     
       
   519     //put application to background:
       
   520     WlanLoginApplication* app = static_cast<WlanLoginApplication *>(this->parent());    
       
   521     app->mainWindow()->lower();
       
   522     
       
   523     OstTraceFunctionExit0(WLANLOGINENGINE_HANDLENEXTTRIGGERED_EXIT);
       
   524 }
       
   525 
       
   526 /*!
       
   527     This function shows connection dropped message box to the user
       
   528         
       
   529  */
       
   530 void WlanLoginEngine::showConnectionDroppedMessageBox()
       
   531 {
       
   532     OstTraceFunctionEntry0(WLANLOGINENGINE_SHOWCONNECTIONDROPPEDMESSAGEBOX_ENTRY);
       
   533     
       
   534     HbMessageBox *messageBox = new HbMessageBox(hbTrId("txt_occ_info_wlan_connection_closed_login_applica"));
       
   535     messageBox->setAttribute(Qt::WA_DeleteOnClose);
       
   536     messageBox->setTimeout(messageBoxTimeout);
       
   537     messageBox->open(this,SLOT(connectionDroppedMessageBoxClosed(HbAction*)));
       
   538     
       
   539     OstTraceFunctionExit0(WLANLOGINENGINE_SHOWCONNECTIONDROPPEDMESSAGEBOX_EXIT);
       
   540 }
       
   541 
       
   542 void WlanLoginEngine::connectionDroppedMessageBoxClosed(HbAction* action)
       
   543 {
       
   544     OstTraceFunctionEntry0(WLANLOGINENGINE_HANDLEMESSAGEBOXCLOSED_ENTRY);
       
   545     
       
   546     Q_UNUSED(action);
       
   547         
       
   548     if (mStartRequestCompleted == false ) {
       
   549         emitCompleteServiceRequest(WlanLoginService::WlanLoginStatusConnectionDropped);
       
   550                 
       
   551     } else {
       
   552         //If Qt Highway service request is already completed when connection drops, we have to make exit by our own
       
   553         qApp->exit();
       
   554     }               
       
   555       
       
   556     OstTraceFunctionExit0(WLANLOGINENGINE_HANDLEMESSAGEBOXCLOSED_EXIT);    
       
   557 }
       
   558 
       
   559 /*!
       
   560     This function completes Qt Highway service request
       
   561     @param [in] status completeing status of the service request   
       
   562  */
       
   563 void WlanLoginEngine::emitCompleteServiceRequest(WlanLoginService::WlanLoginStatus status )
       
   564 {
       
   565     OstTraceFunctionEntry0(WLANLOGINENGINE_EMITCOMPLETESERVICEREQUEST_ENTRY);
       
   566         
       
   567     mStartRequestCompleted = true;
       
   568     OstTrace1(
       
   569         TRACE_BORDER,
       
   570         WLANLOGINENGINE_EMITCOMPLETESERVICEREQUEST_EMIT_TRACE,
       
   571         "WlanLoginEngine::emitCompleteServiceRequest with status:;status=%d",
       
   572         status);
       
   573     emit completeServiceRequest(status);
       
   574 
       
   575     OstTraceFunctionExit0(WLANLOGINENGINE_EMITCOMPLETESERVICEREQUEST_EXIT);
       
   576 }