diff -r f05641c183ff -r 43824b19ee35 bluetoothengine/btserviceutil/src/advancedevdiscovererimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetoothengine/btserviceutil/src/advancedevdiscovererimpl.cpp Fri May 14 16:01:46 2010 +0300 @@ -0,0 +1,180 @@ +/* +* Copyright (c) 2010 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: class for searching BT devices +* +*/ +#include "advancedevdiscovererimpl.h" +#include "basicdevdiscoverer.h" + + +// ---------------------------------------------------------- +// CAdvanceDevDiscovererImpl::CAdvanceDevDiscovererImpl +// ---------------------------------------------------------- +// +CAdvanceDevDiscovererImpl::CAdvanceDevDiscovererImpl( + CBtDevRepository& aDevRep, + MDevDiscoveryObserver& aObserver ) + :iDevRep( aDevRep ), iObserver( aObserver ) + { + } + +// ---------------------------------------------------------- +// CAdvanceDevDiscovererImpl::ConstructL +// ---------------------------------------------------------- +// +void CAdvanceDevDiscovererImpl::ConstructL() + { + iBasicDiscoverer = CBasicDevDiscoverer::NewL( *this ); + } + +// ---------------------------------------------------------- +// CAdvanceDevDiscovererImpl::NewL +// ---------------------------------------------------------- +// +CAdvanceDevDiscovererImpl* CAdvanceDevDiscovererImpl::NewL( + CBtDevRepository& aDevRep, + MDevDiscoveryObserver& aObserver ) + { + CAdvanceDevDiscovererImpl* self = + new (ELeave) CAdvanceDevDiscovererImpl( aDevRep, aObserver ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// ---------------------------------------------------------- +// CAdvanceDevDiscovererImpl:: +// ---------------------------------------------------------- +// +CAdvanceDevDiscovererImpl::~CAdvanceDevDiscovererImpl() + { + delete iBasicDiscoverer; + } + +// ---------------------------------------------------------- +// CAdvanceDevDiscovererImpl::SetObserver +// ---------------------------------------------------------- +// +void CAdvanceDevDiscovererImpl::SetObserver( MDevDiscoveryObserver& aObserver ) + { + iObserver = aObserver; + } + +// ---------------------------------------------------------- +// CAdvanceDevDiscovererImpl:: +// ---------------------------------------------------------- +// +void CAdvanceDevDiscovererImpl::Cancel() + { + iBasicDiscoverer->Cancel(); + } + +// ---------------------------------------------------------- +// CAdvanceDevDiscovererImpl:: +// ---------------------------------------------------------- +// +void CAdvanceDevDiscovererImpl::DiscoverDeviceL( + CAdvanceDevDiscoverer::TDevDiscoveryFilter aFilter, + TBTMajorDeviceClass aDeviceClass ) + { + iBasicDiscoverer->DiscoverDeviceL( aDeviceClass ); + iFilter = aFilter; + } + +// ---------------------------------------------------------- +// CAdvanceDevDiscovererImpl::DiscoverDeviceL +// ---------------------------------------------------------- +// +void CAdvanceDevDiscovererImpl::DiscoverDeviceL( + const RBTDevAddrArray& aPriorityList ) + { + // to be implemented when BTUI requires this feature. + ( void ) aPriorityList; + } + +// ---------------------------------------------------------- +// CAdvanceDevDiscovererImpl::HandleNextDiscoveryResult +// ---------------------------------------------------------- +// +void CAdvanceDevDiscovererImpl::HandleNextDiscoveryResultL( + const TInquirySockAddr& aAddr, const TDesC& aName ) + { + TBool filtered = EFalse; + if ( iFilter ) + { + // For filtering, we need to examine the properties of + // this device from repository. + const CBtDevExtension* devExt = iDevRep.Device( aAddr.BTAddr() ); + // No filter is needed if this device is not in registry. + if ( devExt ) + { + if ( iFilter & CAdvanceDevDiscoverer::ExcludeUserAwareBonded) + { + // client does not want to discover devices that have been + // bonded already. + if ( devExt->IsUserAwareBonded() ) + { + filtered = ETrue; + } + } + } + } + if ( !filtered ) + { + iObserver.HandleNextDiscoveryResultL( aAddr, aName ); + } + } + +// ---------------------------------------------------------- +// CAdvanceDevDiscovererImpl::HandleDiscoveryCompleted +// ---------------------------------------------------------- +// +void CAdvanceDevDiscovererImpl::HandleDiscoveryCompleted( TInt aErr ) + { + iObserver.HandleDiscoveryCompleted( aErr ); + } + +// ---------------------------------------------------------- +// CAdvanceDevDiscovererImpl::RequestCompletedL +// Inform caller for received device and issue next EIR/Name request +// if the request was successful. +// ---------------------------------------------------------- +// +void CAdvanceDevDiscovererImpl::RequestCompletedL( CBtSimpleActive* aActive, TInt aStatus ) + { + (void) aActive; + (void) aStatus; + } + +// ---------------------------------------------------------- +// CAdvanceDevDiscovererImpl::CancelRequest +// ---------------------------------------------------------- +// +void CAdvanceDevDiscovererImpl::CancelRequest( TInt aId ) + { + (void) aId; + } + +// ---------------------------------------------------------- +// CAdvanceDevDiscovererImpl::HandleError +// ---------------------------------------------------------- +// +void CAdvanceDevDiscovererImpl::HandleError( CBtSimpleActive* aActive, TInt aError ) + { + (void) aActive; + (void) aError; + } + +// End of File