bluetoothengine/btserviceutil/export/advancedevdiscoverer.h
branchRCL_3
changeset 55 613943a21004
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btserviceutil/export/advancedevdiscoverer.h	Tue Aug 31 15:25:10 2010 +0300
@@ -0,0 +1,131 @@
+/*
+* 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:  Declares Bluetooth device inquiry helper class.
+*
+*/
+
+#ifndef ADVANCEBTDEVDISCOVERER_H
+#define ADVANCEBTDEVDISCOVERER_H
+
+#include <btdevice.h>
+#include <bt_sock.h>
+#include <btservices/devdiscoveryobserver.h>
+#include <btservices/btdevrepository.h>
+
+class CAdvanceDevDiscovererImpl;
+
+/**
+ * APIs from this class offer functionalities that are common in mw and app 
+ * components of Bluetooth packages. They do not serve as domain APIs.
+ * 
+ * Using these from external components is risky, due to possible source
+ * and binary breaks in future.
+ * 
+ */
+
+/**
+* The interface of discovering in-range Bluetooth devices via Host Resolver.
+* This class offers some options to search certain devices by CoD and other 
+* filters e.g., bonded and blocked.
+* 
+* It requires the client to supply a CBtDevRepository instance for filtering
+* devices.
+*/
+NONSHARABLE_CLASS( CAdvanceDevDiscoverer ) : public CBase
+    {
+
+public: // Constructor and destructor
+
+    /**
+     * Options for clients to specify criteria on discovered devices.
+     */
+    enum TDevDiscoveryFilter
+        {
+        // do not filter in-range devices
+        ENoFilter = 0,
+
+        // Excludes an in-range device if its device name is not available
+        ExcludeIfNoDevName = 0x01,
+        
+        // Excludes an in-range device if it is user-aware bonded with phone.
+        ExcludeUserAwareBonded = 0x02,
+        
+        // Excludes an in-range device if it is banned by phone.
+        ExcludeBanned = 0x04,
+        };
+
+    IMPORT_C static CAdvanceDevDiscoverer* NewL(
+            CBtDevRepository& aDevRep,
+            MDevDiscoveryObserver& aObserver );
+    
+    /**
+    * Destructor.
+    */
+    IMPORT_C virtual ~CAdvanceDevDiscoverer();
+
+    /**
+     * sets the discovery result receiver.
+     * 
+     * @param aObserver the new observer to receive inquiry results
+     */
+    IMPORT_C void SetObserver( MDevDiscoveryObserver& aObserver );
+    
+    /**
+    * Discover currently in-range devices that matches the given major 
+    * device class type.
+     
+    * Found devices will be informed by 
+    * MBtDevDiscoveryObserver::HandleNextDiscoveryResult().
+    * 
+    * When no more device can be found, 
+    * MBtDevDiscoveryObserver::HandleDiscoveryCompleted() will be issued.
+    * 
+    * @param aFilter the filter that shall be applied when a device 
+    *        is discovered. If this is specified, only a device passing 
+    *        the filter will be informed to client. 
+    *        By default, no filter is applied.
+    * 
+    * @param aDeviceClass the major device class which a found device 
+    *        must match. 
+    *        By default, it includes any device types.
+    */
+    IMPORT_C void DiscoverDeviceL( 
+            TDevDiscoveryFilter aFilter = CAdvanceDevDiscoverer::ENoFilter, 
+            TBTMajorDeviceClass aDeviceClass = EMajorDeviceMisc );
+
+    /**
+    * Cancels any outstanding discovery request.
+    */
+    IMPORT_C void CancelDiscovery();
+    
+private:
+
+    /**
+    * C++ default constructor.
+    */
+    CAdvanceDevDiscoverer();
+
+    /**
+    * The 2nd phase constructor
+    */
+    void ConstructL( CBtDevRepository& aDevRep, MDevDiscoveryObserver& aObserver );
+
+private:  // Data
+
+    CAdvanceDevDiscovererImpl* iImpl;
+};
+
+#endif
+
+// End of File