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_NOTIFY_SESSION_CHROMEOS_H_ 6#define DEVICE_BLUETOOTH_BLUETOOTH_GATT_NOTIFY_SESSION_CHROMEOS_H_ 7 8#include <string> 9 10#include "base/callback.h" 11#include "chromeos/dbus/bluetooth_gatt_characteristic_client.h" 12#include "device/bluetooth/bluetooth_gatt_notify_session.h" 13 14namespace device { 15 16class BluetoothAdapter; 17 18} // namespace device 19 20namespace chromeos { 21 22class BluetoothRemoteGattCharacteristicChromeOS; 23 24// BluetoothGattNotifySessionChromeOS implements 25// BluetoothGattNotifySession for the Chrome OS platform. 26class BluetoothGattNotifySessionChromeOS 27 : public device::BluetoothGattNotifySession, 28 public BluetoothGattCharacteristicClient::Observer { 29 public: 30 virtual ~BluetoothGattNotifySessionChromeOS(); 31 32 // BluetoothGattNotifySession overrides. 33 virtual std::string GetCharacteristicIdentifier() const OVERRIDE; 34 virtual bool IsActive() OVERRIDE; 35 virtual void Stop(const base::Closure& callback) OVERRIDE; 36 37 private: 38 friend class BluetoothRemoteGattCharacteristicChromeOS; 39 40 explicit BluetoothGattNotifySessionChromeOS( 41 scoped_refptr<device::BluetoothAdapter> adapter, 42 const std::string& device_address, 43 const std::string& service_identifier, 44 const std::string& characteristic_identifier, 45 const dbus::ObjectPath& characteristic_path); 46 47 // BluetoothGattCharacteristicClient::Observer overrides. 48 virtual void GattCharacteristicRemoved( 49 const dbus::ObjectPath& object_path) OVERRIDE; 50 virtual void GattCharacteristicPropertyChanged( 51 const dbus::ObjectPath& object_path, 52 const std::string& property_name) OVERRIDE; 53 54 // True, if this session is currently active. 55 bool active_; 56 57 // The Bluetooth adapter that this session is associated with. 58 scoped_refptr<device::BluetoothAdapter> adapter_; 59 60 // The Bluetooth address of the device hosting the characteristic. 61 std::string device_address_; 62 63 // The GATT service that the characteristic belongs to. 64 std::string service_id_; 65 66 // Identifier of the associated characteristic. 67 std::string characteristic_id_; 68 69 // D-Bus object path of the associated characteristic. This is used to filter 70 // observer events. 71 dbus::ObjectPath object_path_; 72 73 DISALLOW_COPY_AND_ASSIGN(BluetoothGattNotifySessionChromeOS); 74}; 75 76} // namespace chromeos 77 78#endif // DEVICE_BLUETOOTH_BLUETOOTH_GATT_NOTIFY_SESSION_CHROMEOS_H_ 79