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 16namespace device { 17 18class BluetoothAdapter; 19 20} // namespace device 21 22namespace chromeos { 23 24// BluetoothGattConnectionChromeOS implements BluetoothGattConnection for the 25// Chrome OS platform. 26class 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