wlanutilities/wlansniffer/engine/client/src/wsfsession.cpp
branchRCL_3
changeset 15 dff6ebfd236f
parent 0 56b72877c1cb
child 20 858c6c491d0e
equal deleted inserted replaced
8:c2bc3f8c7777 15:dff6ebfd236f
    33 /**
    33 /**
    34 * Number of message slots at the server
    34 * Number of message slots at the server
    35 */
    35 */
    36 static const TInt KIPCSlots = 6;
    36 static const TInt KIPCSlots = 6;
    37 
    37 
       
    38 /**
       
    39 * Number of retries to start the server
       
    40 */
       
    41 static const TInt KRetries = 3;
       
    42 
    38 
    43 
    39 
    44 
    40 // ---------------------------------------------------------------------------
    45 // ---------------------------------------------------------------------------
    41 // RWsfSession::RWsfSession
    46 // RWsfSession::RWsfSession
    42 // ---------------------------------------------------------------------------
    47 // ---------------------------------------------------------------------------
   108 EXPORT_C TInt RWsfSession::Connect()
   113 EXPORT_C TInt RWsfSession::Connect()
   109     {
   114     {
   110     LOG_ENTERFN( "RWsfSession::Connect" );
   115     LOG_ENTERFN( "RWsfSession::Connect" );
   111     TInt err = StartServer();
   116     TInt err = StartServer();
   112     
   117     
   113     if ( err == KErrNone )
   118     for (TInt tries = 0; tries < KRetries; tries++)
   114         {
   119         {
   115         LOG_WRITE( "server started" );
   120         LOG_WRITE( "server started" );
   116 
   121 
   117         err = CreateSession( KWlanSnifferServerName, Version(), KIPCSlots );
   122         err = CreateSession( KWlanSnifferServerName, Version(), KIPCSlots );
   118 
   123 
   119         LOG_WRITEF( "CreateSession() returned %d", err );
   124         LOG_WRITEF( "CreateSession() returned %d", err );
   120         
   125         
   121         if ( err == KErrNone )
   126         if (!err)
   122             {
   127             {
       
   128             LOG_WRITE( "connected" );
   123             TRAP( err, iConnWaiter = new (ELeave) CActiveSchedulerWait() );
   129             TRAP( err, iConnWaiter = new (ELeave) CActiveSchedulerWait() );
       
   130             break; 
   124             }
   131             }
   125         }
   132         if (err != KErrNotFound && err != KErrServerTerminated)
   126     else
   133             {
   127         {
   134             LOG_WRITE( "problems session creation - break" );
   128         LOG_WRITEF( "server starting failed with error %d", err );
   135             break; 
   129         }
   136             }
       
   137             
       
   138         TInt err = StartServer(); // try to launch the server
       
   139 
       
   140         if (!err)
       
   141             {
       
   142             LOG_WRITE( "ok - try to connect again" );
       
   143             continue; 
       
   144             }
       
   145             
       
   146         if (err == KErrAlreadyExists)
       
   147             {
       
   148             LOG_WRITE( "someone else started - try to connect again" );
       
   149             continue; 
       
   150             }
       
   151             
       
   152         LOG_WRITE( "problems - break" );
       
   153         break; 
       
   154         }
       
   155     
       
   156     LOG_WRITEF( "connect exit value = %d", err );
   130 
   157 
   131     return err;
   158     return err;
   132     }
   159     }
   133 
   160 
   134 
   161 
   206                 waiter->iStatus.Int() );
   233                 waiter->iStatus.Int() );
   207     User::LeaveIfError( waiter->iStatus.Int() );
   234     User::LeaveIfError( waiter->iStatus.Int() );
   208     CleanupStack::PopAndDestroy( waiter );
   235     CleanupStack::PopAndDestroy( waiter );
   209 
   236 
   210     return ret();
   237     return ret();
       
   238     }
       
   239 
       
   240 
       
   241 // ---------------------------------------------------------------------------
       
   242 // RWsfSession::GetConnectedWlanDetails
       
   243 // ---------------------------------------------------------------------------
       
   244 //
       
   245 EXPORT_C void RWsfSession::GetConnectedWlanDetails( TPckgBuf<TBool>& aPckg,
       
   246                                                     TWsfWlanInfo& aWlanInfo,
       
   247                                                     TRequestStatus& aStatus )
       
   248     {
       
   249     LOG_ENTERFN("RWsfSession::GetConnectedWlanDetails");
       
   250     TPckg<TWsfWlanInfo> package( aWlanInfo );
       
   251 
       
   252     SendReceive( ESnifferCmdConnectedDetails, TIpcArgs( &aPckg, &package ), 
       
   253                  aStatus );
   211     }
   254     }
   212 
   255 
   213 
   256 
   214 // ---------------------------------------------------------------------------
   257 // ---------------------------------------------------------------------------
   215 // RWsfSession::NotifyEventL
   258 // RWsfSession::NotifyEventL
   360     CleanupStack::PopAndDestroy( waiter );
   403     CleanupStack::PopAndDestroy( waiter );
   361     }
   404     }
   362 
   405 
   363 
   406 
   364 // ---------------------------------------------------------------------------
   407 // ---------------------------------------------------------------------------
       
   408 // RWsfSession::GetWlanListSize
       
   409 // ---------------------------------------------------------------------------
       
   410 //
       
   411 EXPORT_C void RWsfSession::GetWlanListSize( TPckgBuf<TUint> &aPckg, TRequestStatus& aStatus )
       
   412     {
       
   413     LOG_ENTERFN("RWsfSession::GetWlanListSize");    
       
   414     SendReceive( ESnifferCmdWlanDataSize, TIpcArgs( &aPckg ), aStatus );
       
   415     }
       
   416 
       
   417 
       
   418 // ---------------------------------------------------------------------------
       
   419 // RWsfSession::GetWlanList
       
   420 // ---------------------------------------------------------------------------
       
   421 //
       
   422 EXPORT_C void RWsfSession::GetWlanList( TPckgBuf<TUint>& aPckg, TPtr8& aPtr, TRequestStatus& aStatus )
       
   423     {
       
   424     LOG_ENTERFN("RWsfSession::GetWlanList");    
       
   425     SendReceive( ESnifferCmdGetWlanInfo, TIpcArgs( &aPckg, &aPtr ), aStatus );
       
   426     }
       
   427 
       
   428 
       
   429 // ---------------------------------------------------------------------------
   365 // RWsfSession::MonitorAccessPointL
   430 // RWsfSession::MonitorAccessPointL
   366 // ---------------------------------------------------------------------------
   431 // ---------------------------------------------------------------------------
   367 //
   432 //
   368 EXPORT_C void RWsfSession::MonitorAccessPointL( TUint32 aMonitoredIap )
   433 EXPORT_C void RWsfSession::MonitorAccessPointL( TUint32 aMonitoredIap )
   369     {
   434     {
   370     LOG_ENTERFN("RWsfSession::MonitorAccessPointL");
   435     LOG_ENTERFN("RWsfSession::MonitorAccessPointL");
   371 
   436 
   372     CWsfActiveWaiter *waiter = CWsfActiveWaiter::NewL();
   437     TInt err = Send( ESnifferCmdMonitorAp, TIpcArgs( aMonitoredIap ));
   373     CleanupStack::PushL( waiter );
   438     LOG_WRITEF( "message[%d] call returned %d", ESnifferCmdMonitorAp, err );
   374 
   439         
   375     SendReceive( ESnifferCmdMonitorAp, TIpcArgs( aMonitoredIap ), 
   440     User::LeaveIfError( err );
   376                                                             waiter->iStatus );
       
   377     waiter->WaitForRequest();
       
   378     LOG_WRITEF( "message[%d] call returned %d", 
       
   379                 ESnifferCmdMonitorAp,
       
   380                 waiter->iStatus.Int() );
       
   381     User::LeaveIfError( waiter->iStatus.Int() );
       
   382     
       
   383     CleanupStack::PopAndDestroy( waiter );
       
   384     }
   441     }
   385 
   442 
   386 
   443 
   387 // ---------------------------------------------------------------------------
   444 // ---------------------------------------------------------------------------
   388 // RWsfSession::RequestScanL
   445 // RWsfSession::RequestScanL
   402                 ESnifferCmdRequestScan,
   459                 ESnifferCmdRequestScan,
   403                 waiter->iStatus.Int() );
   460                 waiter->iStatus.Int() );
   404     User::LeaveIfError( waiter->iStatus.Int() );
   461     User::LeaveIfError( waiter->iStatus.Int() );
   405     CleanupStack::PopAndDestroy( waiter );
   462     CleanupStack::PopAndDestroy( waiter );
   406     return pckg();
   463     return pckg();
       
   464     }
       
   465 
       
   466 
       
   467 // ---------------------------------------------------------------------------
       
   468 // RWsfSession::RequestScan
       
   469 // ---------------------------------------------------------------------------
       
   470 //
       
   471 EXPORT_C void RWsfSession::RequestScan(TPckgBuf<TBool>& aPckg, TRequestStatus& aStatus )
       
   472     {
       
   473     LOG_ENTERFN("RWsfSession::RequestScan");
       
   474     SendReceive( ESnifferCmdRequestScan, TIpcArgs( &aPckg ), aStatus );
   407     }
   475     }
   408 
   476 
   409 
   477 
   410 // ---------------------------------------------------------------------------
   478 // ---------------------------------------------------------------------------
   411 // RWsfSession::ConnectWlanBearerL
   479 // RWsfSession::ConnectWlanBearerL
   458     return res;
   526     return res;
   459     }
   527     }
   460 
   528 
   461 
   529 
   462 // ---------------------------------------------------------------------------
   530 // ---------------------------------------------------------------------------
   463 // RWsfSession::ConnectWlanBearerWithoutConnWaiterL
   531 // RWsfSession::ConnectWlanBearer
   464 // ---------------------------------------------------------------------------
   532 // ---------------------------------------------------------------------------
   465 //
   533 //
   466 EXPORT_C TInt RWsfSession::ConnectWlanBearerWithoutConnWaiterL( TUint32 aIapId, 
   534 EXPORT_C void RWsfSession::ConnectWlanBearer( TPckgBuf<TBool>& aPckg,
   467                                               TWsfIapPersistence aPersistence )
   535                                                TUint32 aIapId, 
   468     {
   536                                                TWsfIapPersistence aPersistence,
   469     LOG_ENTERFN( "RWsfSession::ConnectWlanBearerWithoutConnWaiterL" );
   537                                                TRequestStatus& aStatus )
       
   538     {
       
   539     LOG_ENTERFN( "RWsfSession::ConnectWlanBearer" );
   470     LOG_WRITEF( "IAP id = %d", aIapId );
   540     LOG_WRITEF( "IAP id = %d", aIapId );
   471 
   541 
   472     // mark the beginning of the connection process
   542     // mark the beginning of the connection process
   473     iEventHandler->SetConnecting( ETrue );
   543     iEventHandler->SetConnecting( ETrue );
   474 
   544 
   475     TInt res( KErrNone );
   545     SendReceive( ESnifferCmdConnect, TIpcArgs( &aPckg, aIapId, aPersistence ), 
   476     TPckgBuf<TInt> pckg;
   546                                                 aStatus );
   477 
   547     }
   478     CWsfActiveWaiter *waiter = CWsfActiveWaiter::NewL();
   548 
   479     CleanupStack::PushL( waiter );
   549 
   480 
   550 // ---------------------------------------------------------------------------
   481     SendReceive( ESnifferCmdConnect, TIpcArgs( &pckg, aIapId, aPersistence ), 
   551 // RWsfSession::SetConnectWlanBearerResult
   482                                                              waiter->iStatus );
   552 // ---------------------------------------------------------------------------
   483     waiter->WaitForRequest();
   553 //
   484     LOG_WRITEF( "message[%d] call returned %d", 
   554 EXPORT_C void RWsfSession::SetConnectWlanBearerResult( TInt aResult )
   485                 ESnifferCmdConnect,
   555     {
   486                 waiter->iStatus.Int() );
   556     LOG_ENTERFN( "RWsfSession::SetConnectWlanBearerResult" );
   487     User::LeaveIfError( waiter->iStatus.Int() );
   557     LOG_WRITEF( "Result = %d", aResult );
   488     CleanupStack::PopAndDestroy( waiter );
   558     
   489     
   559     if ( aResult != KErrNone )
   490     res = pckg();
       
   491     
       
   492     if ( res != KErrNone )
       
   493         {
   560         {
   494         // on any error the flag should be cleared
   561         // on any error the flag should be cleared
   495         iEventHandler->SetConnecting( EFalse );
   562         iEventHandler->SetConnecting( EFalse );
   496         }
   563         }
   497         
       
   498     return res;
       
   499     }
   564     }
   500 
   565 
   501 
   566 
   502 // ---------------------------------------------------------------------------
   567 // ---------------------------------------------------------------------------
   503 // RWsfSession::StopConnectingWait
   568 // RWsfSession::StopConnectingWait
   539     return res;
   604     return res;
   540     }
   605     }
   541 
   606 
   542 
   607 
   543 // ---------------------------------------------------------------------------
   608 // ---------------------------------------------------------------------------
       
   609 // RWsfSession::DisconnectWlanBearer
       
   610 // ---------------------------------------------------------------------------
       
   611 //
       
   612 EXPORT_C void RWsfSession::DisconnectWlanBearer( TPckgBuf<TBool>& aPckg, TRequestStatus& aStatus )
       
   613     {
       
   614     LOG_ENTERFN("RWsfSession::DisconnectWlanBearer");
       
   615     SendReceive( ESnifferCmdDisconnect, TIpcArgs( &aPckg ), aStatus );
       
   616     }
       
   617 
       
   618 
       
   619 // ---------------------------------------------------------------------------
   544 // RWsfSession::Close
   620 // RWsfSession::Close
   545 // ---------------------------------------------------------------------------
   621 // ---------------------------------------------------------------------------
   546 //
   622 //
   547 EXPORT_C void RWsfSession::Close()
   623 EXPORT_C void RWsfSession::Close()
   548     {
   624     {
   549     LOG_ENTERFN("RWsfSession::Close");
   625     LOG_ENTERFN("RWsfSession::Close");
   550     delete iEventHandler; iEventHandler = NULL;
   626     delete iEventHandler; iEventHandler = NULL;
   551     delete iConnWaiter; iConnWaiter = NULL;
   627     delete iConnWaiter; iConnWaiter = NULL;
   552     
   628     
       
   629     LOG_WRITE( "close session" );
   553     RSessionBase::Close();
   630     RSessionBase::Close();
   554     }
   631     }
   555 
   632 
   556 
   633 
   557 // ---------------------------------------------------------------------------
   634 // ---------------------------------------------------------------------------