bluetoothengine/btserviceutil/src/advancedevdiscovererimpl.cpp
changeset 19 43824b19ee35
--- /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