diff -r 6a29d5ad0713 -r 0707dd69d236 bluetoothengine/bteng/src/btengsrvsession.cpp --- a/bluetoothengine/bteng/src/btengsrvsession.cpp Fri Feb 19 22:59:18 2010 +0200 +++ b/bluetoothengine/bteng/src/btengsrvsession.cpp Fri Mar 12 15:43:23 2010 +0200 @@ -22,6 +22,7 @@ #include "btengserver.h" #include "btengsrvbbconnectionmgr.h" #include "btengpairman.h" +#include "btengsrvsettingsmgr.h" #include "btengclientserver.h" #include "debug.h" @@ -79,14 +80,11 @@ { iNotifyConnMessage.Complete( KErrCancel ); } - CancelPairRequest(); if( Server() ) { - Server()->RemoveSession( iAutoSwitchOff ); + Server()->RemoveSession(this, iAutoSwitchOff ); } - delete iConnectionEventQueue; - TRACE_FUNC_EXIT } @@ -150,20 +148,6 @@ } // --------------------------------------------------------------------------- -// Comfirm the caller if pairing request is completed in this invoke. -// --------------------------------------------------------------------------- -// -TInt CBTEngSrvSession::CompletePairRequest( TInt aResult ) - { - if ( !iPairMessage.IsNull()) - { - iPairMessage.Complete( aResult ); - return KErrNone; - } - return KErrNotFound; - } - -// --------------------------------------------------------------------------- // From class CSession2 // Handles servicing of a client request that has been passed to the server. // --------------------------------------------------------------------------- @@ -171,11 +155,11 @@ void CBTEngSrvSession::ServiceL( const RMessage2& aMessage ) { TRAPD( err, DispatchMessageL( aMessage ) ); - if( !aMessage.IsNull() && ( err || ( aMessage.Function() != EBTEngNotifyConnectionEvents && - aMessage.Function() != EBTEngPairDevice ) ) ) + aMessage.Function() != EBTEngPairDevice && + aMessage.Function() != EBTEngSetPowerState ) ) ) { // Return the error code to the client. aMessage.Complete( err ); @@ -206,15 +190,13 @@ { case EBTEngSetPowerState: { - iAutoSwitchOff = (TBool) aMessage.Int1(); - Server()->SetPowerStateL( (TBTPowerStateValue) aMessage.Int0(), - iAutoSwitchOff ); + Server()->SetPowerStateL( aMessage ); } break; case EBTEngSetVisibilityMode: { - Server()->SetVisibilityModeL( (TBTVisibilityMode) aMessage.Int0(), - aMessage.Int1() ); + Server()->SettingsManager()->SetVisibilityModeL( + (TBTVisibilityMode) aMessage.Int0(),aMessage.Int1() ); } break; case EBTEngNotifyConnectionEvents: @@ -229,7 +211,6 @@ { User::Leave(KErrInUse); } - //save the client message iNotifyConnMessage = RMessage2(aMessage); @@ -261,17 +242,9 @@ case EBTEngIsDeviceConnected: case EBTEngGetConnectedAddresses: { - TBTPowerStateValue pwr = EBTPowerOff; - Server()->GetHwPowerState( pwr ); - if( pwr ) - { - // Simply forward it to the plug-in manager - Server()->DispatchPluginMessageL( aMessage ); - } - else - { - User::Leave( KErrNotReady ); - } + CheckPowerOnL(); + // Simply forward it to the plug-in manager + Server()->DispatchPluginMessageL( aMessage ); } break; case EBTEngIsDeviceConnectable: @@ -282,38 +255,31 @@ case EBTEngPrepareDiscovery: { aMessage.Complete( KErrNone ); // Client does not have to wait. - Server()->iBBConnMgr->ManageTopology( ETrue ); + Server()->BasebandConnectionManager()->ManageTopology( ETrue ); } break; case EBTEngSetPairingObserver: + { + CheckPowerOnL(); + // Simply forward it to the pairing manager + Server()->PairManager()->ProcessCommandL( aMessage ); + break; + } case EBTEngPairDevice: { - TBTPowerStateValue pwr = EBTPowerOff; - (void) Server()->GetHwPowerState( pwr ); - if( pwr ) - { - // Simply forward it to the pairing manager - Server()->PairManager().ProcessCommandL( aMessage ); - if ( opcode == EBTEngPairDevice ) - { - iPairMessage = RMessage2( aMessage ); - } - } - else - { - User::Leave( KErrNotReady ); - } + CheckPowerOnL(); + // Simply forward it to the pairing manager + Server()->PairManager()->ProcessCommandL( aMessage ); break; } case EBTEngCancelPairDevice: { - CancelPairRequest(); + Server()->PairManager()->ProcessCommandL( aMessage ); break; } default: { - TRACE_INFO( ( _L( "[BTENG]\t DispatchMessageL: bad request (%d)" ), - aMessage.Function() ) ) + TRACE_INFO( ( _L( "[BTENG]\t DispatchMessageL: bad request (%d)" ), aMessage.Function() ) ) User::Leave( KErrArgument ); } break; @@ -322,14 +288,15 @@ } // --------------------------------------------------------------------------- -// Only the originator of pairing can cancel the pairing request. +// Check if power is on, and leave if it is not. // --------------------------------------------------------------------------- // -void CBTEngSrvSession::CancelPairRequest() +void CBTEngSrvSession::CheckPowerOnL() { - if ( !iPairMessage.IsNull() ) + TBTPowerState power = EBTOff; + (void) Server()->SettingsManager()->GetHwPowerState( power ); + if ( power == EBTOff ) { - Server()->PairManager().CancelCommand( iPairMessage.Function() ); - iPairMessage.Complete( KErrCancel ); + User::Leave( KErrNotReady ); } }