1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef DEVICE_BLUETOOTH_BLUETOOTH_DISCOVERY_MANAGER_MAC_H_
6 #define DEVICE_BLUETOOTH_BLUETOOTH_DISCOVERY_MANAGER_MAC_H_
8 #include "base/macros.h"
10 @
class IOBluetoothDevice
;
14 // Class used by BluetoothAdapterMac to manage classic and LE device discovery.
15 // For Bluetooth Classic, this class is responsible for keeping device inquiry
16 // running if device discovery is initiated.
17 class BluetoothDiscoveryManagerMac
{
19 // Interface for being notified of events during a device discovery session.
22 // Called when |this| manager has found a device through classic device
23 // inquiry in the form of an IOBluetoothDevice.
24 virtual void DeviceFound(IOBluetoothDevice
* device
) = 0;
26 // Called when device discovery is no longer running, due to either a call
27 // to BluetoothDiscoveryManagerMac::StopDiscovery or an unexpected reason,
28 // such as when a user disables the controller, in which case the value of
29 // |unexpected| will be true.
30 virtual void DiscoveryStopped(bool unexpected
) = 0;
33 virtual ~BluetoothDiscoveryManagerMac();
35 // Returns true, if discovery is currently being performed.
36 virtual bool IsDiscovering() const = 0;
38 // Initiates a discovery session. Returns true on success or if discovery
39 // is already running. Returns false on failure.
40 virtual bool StartDiscovery() = 0;
42 // Stops a discovery session. Returns true on success or if discovery is
43 // already not running. Returns false on failure.
44 virtual bool StopDiscovery() = 0;
46 // Creates a discovery manager for Bluetooth Classic device discovery with
47 // observer |observer|. Note that the life-time of |observer| should not
48 // end before that of the returned BluetoothDiscoveryManager, as that may
49 // lead to use after free errors.
50 static BluetoothDiscoveryManagerMac
* CreateClassic(Observer
* observer
);
53 explicit BluetoothDiscoveryManagerMac(Observer
* observer
);
55 // Observer interested in notifications from us.
59 DISALLOW_COPY_AND_ASSIGN(BluetoothDiscoveryManagerMac
);
64 #endif // DEVICE_BLUETOOTH_BLUETOOTH_DISCOVERY_MANAGER_MAC_H_