// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef DEVICE_BLUETOOTH_ADAPTER_H_ #define DEVICE_BLUETOOTH_ADAPTER_H_ #include #include #include "base/macros.h" #include "base/memory/ref_counted.h" #include "device/bluetooth/bluetooth_adapter.h" #include "device/bluetooth/bluetooth_gatt_connection.h" #include "device/bluetooth/public/mojom/adapter.mojom.h" #include "device/bluetooth/public/mojom/device.mojom.h" namespace bluetooth { // Implementation of Mojo Adapter located in // device/bluetooth/public/mojom/adapter.mojom. // It handles requests for Bluetooth adapter capabilities // and devices and uses the platform abstraction of device/bluetooth. class Adapter : public mojom::Adapter, public device::BluetoothAdapter::Observer { public: explicit Adapter(scoped_refptr adapter); ~Adapter() override; // mojom::Adapter overrides: void ConnectToDevice(const std::string& address, ConnectToDeviceCallback callback) override; void GetDevices(GetDevicesCallback callback) override; void GetInfo(GetInfoCallback callback) override; void SetClient(mojom::AdapterClientPtr client) override; void StartDiscoverySession(StartDiscoverySessionCallback callback) override; // device::BluetoothAdapter::Observer overrides: void AdapterPresentChanged(device::BluetoothAdapter* adapter, bool present) override; void AdapterPoweredChanged(device::BluetoothAdapter* adapter, bool powered) override; void AdapterDiscoverableChanged(device::BluetoothAdapter* adapter, bool discoverable) override; void AdapterDiscoveringChanged(device::BluetoothAdapter* adapter, bool discovering) override; void DeviceAdded(device::BluetoothAdapter* adapter, device::BluetoothDevice* device) override; void DeviceChanged(device::BluetoothAdapter* adapter, device::BluetoothDevice* device) override; void DeviceRemoved(device::BluetoothAdapter* adapter, device::BluetoothDevice* device) override; private: void OnGattConnected( ConnectToDeviceCallback callback, std::unique_ptr connection); void OnConnectError(ConnectToDeviceCallback callback, device::BluetoothDevice::ConnectErrorCode error_code); void OnStartDiscoverySession( StartDiscoverySessionCallback callback, std::unique_ptr session); void OnDiscoverySessionError(StartDiscoverySessionCallback callback); // The current Bluetooth adapter. scoped_refptr adapter_; // The adapter client that listens to this service. mojom::AdapterClientPtr client_; base::WeakPtrFactory weak_ptr_factory_; DISALLOW_COPY_AND_ASSIGN(Adapter); }; } // namespace bluetooth #endif // DEVICE_BLUETOOTH_ADAPTER_H_