1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// found in the LICENSE file. 4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#ifndef DEVICE_BLUETOOTH_BLUETOOTH_GATT_CONNECTION_H_ 6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define DEVICE_BLUETOOTH_BLUETOOTH_GATT_CONNECTION_H_ 7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include <string> 9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/callback.h" 11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace device { 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// BluetoothGattConnection represents a GATT connection to a Bluetooth device 15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// that has GATT services. Instances are obtained from a BluetoothDevice, 16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// and the connection is kept alive as long as there is at least one 17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// active BluetoothGattConnection object. BluetoothGattConnection objects 18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// automatically update themselves, when the connection is terminated by the 19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// operating system (e.g. due to user action). 20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class BluetoothGattConnection { 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public: 22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Destructor automatically closes this GATT connection. If this is the last 23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // remaining GATT connection and this results in a call to the OS, that call 24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // may not always succeed. Users can make an explicit call to 25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // BluetoothGattConnection::Close to make sure that they are notified of 26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // a possible error via the callback. 27f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual ~BluetoothGattConnection(); 28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Returns the Bluetooth address of the device that this connection is open 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // to. 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual std::string GetDeviceAddress() const = 0; 32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Returns true if this connection is open. 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual bool IsConnected() = 0; 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Disconnects this GATT connection and calls |callback| upon completion. 37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // After a successful invocation, the device may still remain connected due to 38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // other GATT connections. 39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void Disconnect(const base::Closure& callback) = 0; 40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) protected: 42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) BluetoothGattConnection(); 43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) private: 45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(BluetoothGattConnection); 46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}; 47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} // namespace device 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif // DEVICE_BLUETOOTH_BLUETOOTH_GATT_CONNECTION_H_ 51