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. 4 5 #ifndef DEVICE_BLUETOOTH_BLUETOOTH_GATT_CONNECTION_CHROMEOS_H_ 6 #define DEVICE_BLUETOOTH_BLUETOOTH_GATT_CONNECTION_CHROMEOS_H_ 7 8 #include <string> 9 10 #include "base/callback.h" 11 #include "base/memory/weak_ptr.h" 12 #include "chromeos/dbus/bluetooth_device_client.h" 13 #include "dbus/object_path.h" 14 #include "device/bluetooth/bluetooth_gatt_connection.h" 15 16 namespace device { 17 18 class BluetoothAdapter; 19 20 } // namespace device 21 22 namespace chromeos { 23 24 // BluetoothGattConnectionChromeOS implements BluetoothGattConnection for the 25 // Chrome OS platform. 26 class BluetoothGattConnectionChromeOS 27 : public device::BluetoothGattConnection, 28 public BluetoothDeviceClient::Observer { 29 public: 30 explicit BluetoothGattConnectionChromeOS( 31 scoped_refptr<device::BluetoothAdapter> adapter, 32 const std::string& device_address, 33 const dbus::ObjectPath& object_path); 34 virtual ~BluetoothGattConnectionChromeOS(); 35 36 // BluetoothGattConnection overrides. 37 virtual std::string GetDeviceAddress() const OVERRIDE; 38 virtual bool IsConnected() OVERRIDE; 39 virtual void Disconnect(const base::Closure& callback) OVERRIDE; 40 41 private: 42 43 // chromeos::BluetoothDeviceClient::Observer overrides. 44 virtual void DeviceRemoved(const dbus::ObjectPath& object_path) OVERRIDE; 45 virtual void DevicePropertyChanged(const dbus::ObjectPath& object_path, 46 const std::string& property_name) OVERRIDE; 47 48 // True, if the connection is currently active. 49 bool connected_; 50 51 // The Bluetooth adapter that this connection is associated with. 52 scoped_refptr<device::BluetoothAdapter> adapter_; 53 54 // Bluetooth address of the underlying device. 55 std::string device_address_; 56 57 // D-Bus object path of the underlying device. This is used to filter observer 58 // events. 59 dbus::ObjectPath object_path_; 60 61 DISALLOW_COPY_AND_ASSIGN(BluetoothGattConnectionChromeOS); 62 }; 63 64 } // namespace chromeos 65 66 #endif // DEVICE_BLUETOOTH_BLUETOOTH_GATT_CONNECTION_CHROMEOS_H_ 67