1 // Copyright 2013 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_ADAPTER_MAC_H_
6 #define DEVICE_BLUETOOTH_BLUETOOTH_ADAPTER_MAC_H_
8 #include <IOKit/IOReturn.h>
13 #include "base/containers/hash_tables.h"
14 #include "base/mac/scoped_nsobject.h"
15 #include "base/memory/ref_counted.h"
16 #include "base/memory/weak_ptr.h"
17 #include "base/observer_list.h"
18 #include "device/bluetooth/bluetooth_adapter.h"
19 #include "device/bluetooth/bluetooth_discovery_manager_mac.h"
21 @
class IOBluetoothDevice
;
27 class SequencedTaskRunner
;
33 class BluetoothAdapterMacTest
;
35 class BluetoothAdapterMac
: public BluetoothAdapter
,
36 public BluetoothDiscoveryManagerMac::Observer
{
38 static base::WeakPtr
<BluetoothAdapter
> CreateAdapter();
41 void AddObserver(BluetoothAdapter::Observer
* observer
) override
;
42 void RemoveObserver(BluetoothAdapter::Observer
* observer
) override
;
43 std::string
GetAddress() const override
;
44 std::string
GetName() const override
;
45 void SetName(const std::string
& name
,
46 const base::Closure
& callback
,
47 const ErrorCallback
& error_callback
) override
;
48 bool IsInitialized() const override
;
49 bool IsPresent() const override
;
50 bool IsPowered() const override
;
51 void SetPowered(bool powered
,
52 const base::Closure
& callback
,
53 const ErrorCallback
& error_callback
) override
;
54 bool IsDiscoverable() const override
;
55 void SetDiscoverable(bool discoverable
,
56 const base::Closure
& callback
,
57 const ErrorCallback
& error_callback
) override
;
58 bool IsDiscovering() const override
;
59 void CreateRfcommService(
60 const BluetoothUUID
& uuid
,
61 const ServiceOptions
& options
,
62 const CreateServiceCallback
& callback
,
63 const CreateServiceErrorCallback
& error_callback
) override
;
64 void CreateL2capService(
65 const BluetoothUUID
& uuid
,
66 const ServiceOptions
& options
,
67 const CreateServiceCallback
& callback
,
68 const CreateServiceErrorCallback
& error_callback
) override
;
70 // BluetoothDiscoveryManagerMac::Observer overrides
71 void DeviceFound(IOBluetoothDevice
* device
) override
;
72 void DiscoveryStopped(bool unexpected
) override
;
74 // Registers that a new |device| has connected to the local host.
75 void DeviceConnected(IOBluetoothDevice
* device
);
79 void RemovePairingDelegateInternal(
80 device::BluetoothDevice::PairingDelegate
* pairing_delegate
) override
;
83 friend class BluetoothAdapterMacTest
;
85 BluetoothAdapterMac();
86 ~BluetoothAdapterMac() override
;
89 void AddDiscoverySession(const base::Closure
& callback
,
90 const ErrorCallback
& error_callback
) override
;
91 void RemoveDiscoverySession(const base::Closure
& callback
,
92 const ErrorCallback
& error_callback
) override
;
95 void InitForTest(scoped_refptr
<base::SequencedTaskRunner
> ui_task_runner
);
98 // Registers that a new |device| has replied to an Inquiry, is paired, or has
99 // connected to the local host.
100 void DeviceAdded(IOBluetoothDevice
* device
);
102 // Updates |devices_| to include the currently paired devices, as well as any
103 // connected, but unpaired, devices. Notifies observers if any previously
104 // paired or connected devices are no longer present.
105 void UpdateDevices();
107 std::string address_
;
111 int num_discovery_sessions_
;
113 // Discovery manager for Bluetooth Classic.
114 scoped_ptr
<BluetoothDiscoveryManagerMac
> classic_discovery_manager_
;
116 scoped_refptr
<base::SequencedTaskRunner
> ui_task_runner_
;
118 // List of observers interested in event notifications from us.
119 ObserverList
<BluetoothAdapter::Observer
> observers_
;
121 base::WeakPtrFactory
<BluetoothAdapterMac
> weak_ptr_factory_
;
123 DISALLOW_COPY_AND_ASSIGN(BluetoothAdapterMac
);
126 } // namespace device
128 #endif // DEVICE_BLUETOOTH_BLUETOOTH_ADAPTER_MAC_H_