wlansecuritysettings/wifiprotectedsetup/src/wifiprotsession.cpp
changeset 0 c8830336c852
child 2 1c7bc153c08e
equal deleted inserted replaced
-1:000000000000 0:c8830336c852
       
     1 /*
       
     2 * Copyright (c) 2001-2009 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 the License "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: Implementation of RWiFiProtSession
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // INCLUDE FILES
       
    20 #include "wifiprotsession.h"
       
    21 #include "e32ver.h"
       
    22 #include <wifiprotuiddefs.h>
       
    23 #include "wifiprotlogger.h"
       
    24 
       
    25 using namespace WiFiProt;
       
    26 
       
    27 // --------------------------------------------------------------------------
       
    28 // RWiFiProtSession::RWiFiProtSession()
       
    29 // --------------------------------------------------------------------------
       
    30 //
       
    31 RWiFiProtSession::RWiFiProtSession() :
       
    32                         RSessionBase(),
       
    33                         iNotifier( NULL ),
       
    34                         iWiFiProtActiveResp( NULL )
       
    35     {
       
    36     CLOG_ENTERFN( "RWiFiProtSession::RWiFiProtSession" );
       
    37     CLOG_LEAVEFN( "RWiFiProtSession::RWiFiProtSession" );
       
    38     }
       
    39 
       
    40 
       
    41 // --------------------------------------------------------------------------
       
    42 // ~RWiFiProtSession
       
    43 // --------------------------------------------------------------------------
       
    44 //
       
    45 RWiFiProtSession::~RWiFiProtSession()
       
    46     {
       
    47     CLOG_ENTERFN( "RWiFiProtSession::~RWiFiProtSession" );
       
    48     Close();
       
    49     CLOG_LEAVEFN( "RWiFiProtSession::~RWiFiProtSession" );
       
    50     }
       
    51 
       
    52 
       
    53 // --------------------------------------------------------------------------
       
    54 // Connect
       
    55 //
       
    56 // Create a session to the extended notifier framework
       
    57 // --------------------------------------------------------------------------
       
    58 //
       
    59 TInt RWiFiProtSession::Connect()
       
    60     {
       
    61     CLOG_ENTERFN( "RWiFiProtSession::Connect" );
       
    62 
       
    63     TInt error( KErrNone );
       
    64     if ( !iNotifier )
       
    65         {
       
    66         TRAP( error, iNotifier = new (ELeave) RNotifier() );
       
    67         }
       
    68     if ( !error && iNotifier )
       
    69         {
       
    70         error = iNotifier->Connect();
       
    71         }
       
    72     CLOG_LEAVEFN( "RWiFiProtSession::Connect" ); 
       
    73     return error;
       
    74     }
       
    75     
       
    76 // --------------------------------------------------------------------------
       
    77 // Close
       
    78 // --------------------------------------------------------------------------
       
    79 //
       
    80 void RWiFiProtSession::Close()
       
    81     {
       
    82     CLOG_ENTERFN( "RWiFiProtSession::Close" );
       
    83 
       
    84     RSessionBase::Close();
       
    85     
       
    86     if (iWiFiProtActiveResp)
       
    87         {
       
    88         iWiFiProtActiveResp->Cancel();
       
    89         delete iWiFiProtActiveResp;  
       
    90         iWiFiProtActiveResp = NULL;
       
    91         }
       
    92     if ( iNotifier ) 
       
    93         {
       
    94         iNotifier->Close();
       
    95         delete iNotifier;    
       
    96         iNotifier = NULL;
       
    97         }
       
    98 
       
    99     CLOG_LEAVEFN( "RWiFiProtSession::Close" );
       
   100     }
       
   101     
       
   102 // --------------------------------------------------------------------------
       
   103 // StartWiFiProtL
       
   104 // --------------------------------------------------------------------------
       
   105 //
       
   106 void RWiFiProtSession::StartWiFiProtL( const TWlanSsid& aSSid,
       
   107                                        TBool aConnectionNeeded,
       
   108                                        RArray<TUint32>& aUidsReturned,
       
   109                                        WiFiProt::TWiFiReturn& aReturnValue,
       
   110                                        TRequestStatus& aStatus )
       
   111     {
       
   112     CLOG_ENTERFN( "RWiFiProtSession::StartWiFiProtL" );
       
   113 
       
   114     aConnectionNeeded = EFalse; // this parameter is not supported anymore
       
   115                                 // to be set from the API, but it is used
       
   116                                 // internally from StartWiFiProtConnL
       
   117     TRAPD( err, iWiFiProtActiveResp =
       
   118      CWiFiProtActiveResp::NewL( aSSid,
       
   119                                 aConnectionNeeded,
       
   120                                 aUidsReturned,
       
   121                                 aReturnValue ) );
       
   122 
       
   123     
       
   124     if ( err != KErrNone )
       
   125         {
       
   126         TRequestStatus* pS = &aStatus;
       
   127         User::RequestComplete( pS, err );
       
   128         }
       
   129     else
       
   130         {
       
   131         iWiFiProtActiveResp->Observe( aStatus );
       
   132 
       
   133         TPckgBuf<TWiFiOutputParams>* outputParams =
       
   134              iWiFiProtActiveResp->OutputBuffer();
       
   135         TPckgBuf<TWiFiInputParams>* inputParams = 
       
   136              iWiFiProtActiveResp->InputBuffer();
       
   137 
       
   138         if ( iNotifier )
       
   139             {
       
   140             TRequestStatus& status = iWiFiProtActiveResp->iStatus;
       
   141             iNotifier->StartNotifierAndGetResponse( status,
       
   142                                                     KUidWiFiProtSetup,
       
   143                                                     *inputParams,
       
   144                                                     *outputParams );
       
   145             }
       
   146         }
       
   147 
       
   148     CLOG_LEAVEFN( "RWiFiProtSession::StartWiFiProtL" );
       
   149     }
       
   150 
       
   151 // --------------------------------------------------------------------------
       
   152 // StartWiFiProtConnL
       
   153 // --------------------------------------------------------------------------
       
   154 //
       
   155 void RWiFiProtSession::StartWiFiProtConnL( const TWlanSsid& aSSid,
       
   156                                       TWlanProtectedSetupCredentialAttribute&
       
   157                                         aNetworkSettings,
       
   158                                       WiFiProt::TWiFiReturn& aReturnValue,
       
   159                                       TRequestStatus& aStatus )
       
   160     {
       
   161     CLOG_ENTERFN( "RWiFiProtSession::StartWiFiProtConnL" );
       
   162 
       
   163     TRAPD( err, iWiFiProtActiveResp =
       
   164      CWiFiProtActiveResp::NewL( aSSid,
       
   165                                 aNetworkSettings,
       
   166                                 aReturnValue ) );
       
   167 
       
   168     
       
   169     if ( err != KErrNone )
       
   170         {
       
   171         TRequestStatus* pS = &aStatus;
       
   172         User::RequestComplete( pS, err );
       
   173         }
       
   174     else
       
   175         {
       
   176         iWiFiProtActiveResp->Observe( aStatus );
       
   177 
       
   178         TPckgBuf<TWiFiConnOutputParams>* connoutputParams =
       
   179              iWiFiProtActiveResp->ConnOutputBuffer();
       
   180         TPckgBuf<TWiFiInputParams>* inputParams = 
       
   181              iWiFiProtActiveResp->InputBuffer();
       
   182 
       
   183         if ( iNotifier )
       
   184             {
       
   185             TRequestStatus& status = iWiFiProtActiveResp->iStatus;
       
   186             iNotifier->StartNotifierAndGetResponse( status,
       
   187                                                     KUidWiFiProtSetup,
       
   188                                                     *inputParams,
       
   189                                                     *connoutputParams );
       
   190             }
       
   191         }
       
   192 
       
   193     CLOG_LEAVEFN( "RWiFiProtSession::StartWiFiProtConnL" );
       
   194     }    
       
   195     
       
   196 // --------------------------------------------------------------------------
       
   197 // CancelWiFiProt
       
   198 // --------------------------------------------------------------------------
       
   199 //
       
   200 void RWiFiProtSession::CancelWiFiProt()
       
   201     {
       
   202     CLOG_ENTERFN( "RWiFiProtSession::CancelWiFiProt()" );
       
   203     iNotifier->CancelNotifier( KUidWiFiProtSetup );
       
   204     iWiFiProtActiveResp->Cancel();
       
   205     delete iWiFiProtActiveResp ; 
       
   206     iWiFiProtActiveResp = NULL; 
       
   207     CLOG_LEAVEFN( "RWiFiProtSession::CancelWiFiProt()" );
       
   208     }    
       
   209 
       
   210 // End of File