| // Copyright 2014 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_BLUETOOTH_GATT_NOTIFY_SESSION_H_ |
| #define DEVICE_BLUETOOTH_BLUETOOTH_GATT_NOTIFY_SESSION_H_ |
| |
| #include <string> |
| |
| #include "base/callback.h" |
| #include "base/macros.h" |
| #include "base/memory/weak_ptr.h" |
| #include "device/bluetooth/bluetooth_export.h" |
| |
| namespace device { |
| |
| class BluetoothRemoteGattCharacteristic; |
| |
| // A BluetoothGattNotifySession represents an active session for listening |
| // to value updates from GATT characteristics that support notifications and/or |
| // indications. Instances are obtained by calling |
| // BluetoothRemoteGattCharacteristic::StartNotifySession. |
| class DEVICE_BLUETOOTH_EXPORT BluetoothGattNotifySession { |
| public: |
| explicit BluetoothGattNotifySession( |
| base::WeakPtr<BluetoothRemoteGattCharacteristic> characteristic); |
| |
| // Destructor automatically stops this session. |
| virtual ~BluetoothGattNotifySession(); |
| |
| // Returns the identifier of the associated characteristic. |
| virtual std::string GetCharacteristicIdentifier() const; |
| |
| // Returns the associated characteristic. This function will return nullptr |
| // if the associated characteristic is deleted. |
| virtual BluetoothRemoteGattCharacteristic* GetCharacteristic() const; |
| |
| // Returns true if this session is active. Notify sessions are active from |
| // the time of creation, until they have been stopped, either explicitly, or |
| // because the remote device disconnects. |
| virtual bool IsActive(); |
| |
| // Stops this session and calls |callback| upon completion. This won't |
| // necessarily stop value updates from the characteristic -- since updates |
| // are shared among BluetoothGattNotifySession instances -- but it will |
| // terminate this session. |
| virtual void Stop(const base::Closure& callback); |
| |
| private: |
| // The associated characteristic. |
| base::WeakPtr<BluetoothRemoteGattCharacteristic> characteristic_; |
| std::string characteristic_id_; |
| bool active_; |
| |
| DISALLOW_COPY_AND_ASSIGN(BluetoothGattNotifySession); |
| }; |
| |
| } // namespace device |
| |
| #endif // DEVICE_BLUETOOTH_BLUETOOTH_GATT_NOTIFY_SESSION_H_ |