diff -r 000000000000 -r f63038272f30 bluetoothengine/bteng/btengconnman/src/btengconnman.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetoothengine/bteng/btengconnman/src/btengconnman.cpp Mon Jan 18 20:28:57 2010 +0200 @@ -0,0 +1,295 @@ +/* +* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Bluetooth Engine API for connection management functionality. +* +*/ + + + +#include +#include +#include + +#include "btengconnman.h" +#include "btengconnhandler.h" +#include "debug.h" + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// C++ default constructor +// --------------------------------------------------------------------------- +// +CBTEngConnMan::CBTEngConnMan( MBTEngConnObserver* aObserver ) +: iObserver( aObserver ) + { + } + + +// --------------------------------------------------------------------------- +// Symbian 2nd-phase constructor +// --------------------------------------------------------------------------- +// +void CBTEngConnMan::ConstructL() + { + TRACE_FUNC_ENTRY + // Check if BT is supported at all + FeatureManager::InitializeLibL(); + TBool btSupported = FeatureManager::FeatureSupported( KFeatureIdBt ); + FeatureManager::UnInitializeLib(); + if( !btSupported ) + { + TRACE_INFO( ( _L( "[BTENGSETTINGS]\t ConstructL: BT not supported!!" ) ) ) + User::Leave( KErrNotSupported ); + } + iConnHandler = CBTEngConnHandler::NewL( iObserver ); + + TRACE_FUNC_EXIT + } + + +// --------------------------------------------------------------------------- +// NewL +// --------------------------------------------------------------------------- +// +EXPORT_C CBTEngConnMan* CBTEngConnMan::NewL( MBTEngConnObserver* aObserver ) + { + CBTEngConnMan* self = CBTEngConnMan::NewLC( aObserver ); + CleanupStack::Pop( self ); + return self; + } + + +// --------------------------------------------------------------------------- +// NewLC +// --------------------------------------------------------------------------- +// +EXPORT_C CBTEngConnMan* CBTEngConnMan::NewLC( MBTEngConnObserver* aObserver ) + { + CBTEngConnMan* self = new( ELeave ) CBTEngConnMan( aObserver ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +CBTEngConnMan::~CBTEngConnMan() + { + TRACE_FUNC_ENTRY + delete iConnHandler; + } + + +// --------------------------------------------------------------------------- +// ?implementation_description +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CBTEngConnMan::Connect( const TBTDevAddr& aAddr, + const TBTDeviceClass& aDeviceClass ) + { + TRACE_FUNC_ENTRY + return iConnHandler->ConnectDevice( aAddr, aDeviceClass ); + } + + +// --------------------------------------------------------------------------- +// ?implementation_description +// --------------------------------------------------------------------------- +// +EXPORT_C void CBTEngConnMan::CancelConnect( const TBTDevAddr& aAddr ) + { + TRACE_FUNC_ENTRY + (void) iConnHandler->CancelConnectDevice( aAddr ); + } + + +// --------------------------------------------------------------------------- +// ?implementation_description +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CBTEngConnMan::Disconnect( const TBTDevAddr& aAddr, + TBTDisconnectType aDiscType ) + { + TRACE_FUNC_ENTRY + return iConnHandler->DisconnectDevice( aAddr, aDiscType ); + } + + +// --------------------------------------------------------------------------- +// ?implementation_description +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CBTEngConnMan::IsConnected( const TBTDevAddr& aAddr, + TBTEngConnectionStatus& aConnected ) + { + TRACE_FUNC_ENTRY + return iConnHandler->IsDeviceConnected( aAddr, aConnected ); + } + + +// --------------------------------------------------------------------------- +// ?implementation_description +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CBTEngConnMan::IsConnectable( const TBTDeviceClass& aDeviceClass, + TBool& aConnectable ) + { + TRACE_FUNC_ENTRY + return iConnHandler->IsDeviceConnectable( aDeviceClass, aConnectable ); + } + + +// --------------------------------------------------------------------------- +// ?implementation_description +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CBTEngConnMan::SetObserver( MBTEngConnObserver* aObserver ) + { + TRACE_FUNC_ENTRY + return iConnHandler->NotifyConnectionEvents( aObserver ); + } + + +// --------------------------------------------------------------------------- +// ?implementation_description +// --------------------------------------------------------------------------- +// +EXPORT_C void CBTEngConnMan::RemoveObserver() + { + TRACE_FUNC_ENTRY + iConnHandler->CancelNotifyConnectionEvents(); + } + + +// --------------------------------------------------------------------------- +// Get the connected addresses of all baseband connections. +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CBTEngConnMan::GetConnectedAddresses( RBTDevAddrArray& aAddrArray ) + { + TRACE_FUNC_ENTRY + TRAPD( err, iConnHandler->GetConnectedAddressesL( aAddrArray, + EBTProfileUndefined ) ); + return err; + } + + +// --------------------------------------------------------------------------- +// Get the connected addresses for a specified profile (that is managed +// through BT Engine). +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CBTEngConnMan::GetConnectedAddresses( RBTDevAddrArray& aAddrArray, + TBTProfile aConnectedProfile ) + { + TRACE_FUNC_ENTRY + TRAPD( err, iConnHandler->GetConnectedAddressesL( aAddrArray, + aConnectedProfile ) ); + return err; + } + + +// --------------------------------------------------------------------------- +// Initiate pairing with the specified device +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CBTEngConnMan::PairDevice( const TBTDevAddr& aAddr ) + { + TRACE_FUNC_ENTRY + TBTDeviceClass deviceClass; + return PairDevice( aAddr, deviceClass ); + } + + +// --------------------------------------------------------------------------- +// Initiate pairing with the specified device (which advertises +// specified service class). +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CBTEngConnMan::PairDevice( const TBTDevAddr& aAddr, TBTDeviceClass aDeviceClass ) + { + TRACE_FUNC_ENTRY + return iConnHandler->StartPairing( aAddr, aDeviceClass ); + } + + +// --------------------------------------------------------------------------- +// Cancels an ongoing pairing. +// --------------------------------------------------------------------------- +// +EXPORT_C void CBTEngConnMan::CancelPairDevice() + { + TRACE_FUNC_ENTRY + if( iConnHandler ) + { + iConnHandler->CancelPairing(); + } + } + + +// --------------------------------------------------------------------------- +// Tell BTEng to start observing the status of an ongoing pairing. +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CBTEngConnMan::StartPairingObserver( const TBTDevAddr& aAddr ) + { + TRACE_FUNC_ENTRY + return CBTEngConnHandler::SetPairingObserver( aAddr, ETrue ); + } + + +// --------------------------------------------------------------------------- +// Tell BTEng to stop observing the status of an ongoing pairing. +// --------------------------------------------------------------------------- +// +EXPORT_C void CBTEngConnMan::PrepareDiscovery() + { + TRACE_FUNC_ENTRY + (void) iConnHandler->PrepareDiscovery(); + } + +// --------------------------------------------------------------------------- +// ?implementation_description +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CBTEngConnMan::StopPairingObserver( const TBTDevAddr& aAddr ) + { + TRACE_FUNC_ENTRY + return CBTEngConnHandler::SetPairingObserver( aAddr, EFalse ); + } + +// --------------------------------------------------------------------------- +// Check if the remote device is connectable or not. +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CBTEngConnMan::IsConnectable( const TBTDevAddr& aAddr, + const TBTDeviceClass& aDeviceClass, TBool& aConnectable ) + { + TRACE_FUNC_ENTRY + return iConnHandler->IsDeviceConnectable( aAddr, aDeviceClass, aConnectable ); + } + +// --------------------------------------------------------------------------- +// Default implementation of BTEng ConnMan result observer. +// --------------------------------------------------------------------------- +// +EXPORT_C void MBTEngConnObserver::PairingComplete( TBTDevAddr& aAddr, TInt aErr ) + { + (void) aAddr; + (void) aErr; + }