--- /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 <e32base.h>
+#include <featmgr.h>
+#include <centralrepository.h>
+
+#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;
+ }