Home | History | Annotate | Download | only in dbus
      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 CHROMEOS_DBUS_BLUETOOTH_GATT_SERVICE_CLIENT_H_
      6 #define CHROMEOS_DBUS_BLUETOOTH_GATT_SERVICE_CLIENT_H_
      7 
      8 #include <string>
      9 #include <vector>
     10 
     11 #include "chromeos/chromeos_export.h"
     12 #include "chromeos/dbus/dbus_client.h"
     13 #include "dbus/object_path.h"
     14 #include "dbus/property.h"
     15 
     16 namespace chromeos {
     17 
     18 // BluetoothGattServiceClient is used to communicate with remote GATT service
     19 // objects exposed by the Bluetooth daemon.
     20 class CHROMEOS_EXPORT BluetoothGattServiceClient : public DBusClient {
     21  public:
     22   // Structure of properties associated with GATT services.
     23   struct Properties : public dbus::PropertySet {
     24     // The 128-bit service UUID. [read-only]
     25     dbus::Property<std::string> uuid;
     26 
     27     // Object path of the Bluetooth device that the GATT service belongs to.
     28     dbus::Property<dbus::ObjectPath> device;
     29 
     30     // Whether or not this service is a primary service.
     31     dbus::Property<bool> primary;
     32 
     33     // Array of object paths representing the characteristics of this service.
     34     // [read-only]
     35     dbus::Property<std::vector<dbus::ObjectPath> > characteristics;
     36 
     37     // Array of object paths representing the included services of this service.
     38     // [read-only]
     39     dbus::Property<std::vector<dbus::ObjectPath> > includes;
     40 
     41     Properties(dbus::ObjectProxy* object_proxy,
     42                const std::string& interface_name,
     43                const PropertyChangedCallback& callback);
     44     virtual ~Properties();
     45   };
     46 
     47   // Interface for observing changes from a remote GATT service.
     48   class Observer {
     49    public:
     50     virtual ~Observer() {}
     51 
     52     // Called when the GATT service with object path |object_path| is added to
     53     // the system.
     54     virtual void GattServiceAdded(const dbus::ObjectPath& object_path) {}
     55 
     56     // Called when the GATT service with object path |object_path| is removed
     57     // from the system.
     58     virtual void GattServiceRemoved(const dbus::ObjectPath& object_path) {}
     59 
     60     // Called when the GATT service with object path |object_path| has a change
     61     // in the value of the property named |property_name|.
     62     virtual void GattServicePropertyChanged(const dbus::ObjectPath& object_path,
     63                                             const std::string& property_name) {}
     64   };
     65 
     66   virtual ~BluetoothGattServiceClient();
     67 
     68   // Adds and removes observers for events on all remote GATT services. Check
     69   // the |object_path| parameter of observer methods to determine which GATT
     70   // service is issuing the event.
     71   virtual void AddObserver(Observer* observer) = 0;
     72   virtual void RemoveObserver(Observer* observer) = 0;
     73 
     74   // Returns the list of GATT service object paths known to the system.
     75   virtual std::vector<dbus::ObjectPath> GetServices() = 0;
     76 
     77   // Obtain the properties for the GATT service with object path |object_path|.
     78   // Values should be copied if needed.
     79   virtual Properties* GetProperties(const dbus::ObjectPath& object_path) = 0;
     80 
     81   // Creates the instance.
     82   static BluetoothGattServiceClient* Create();
     83 
     84  protected:
     85   BluetoothGattServiceClient();
     86 
     87  private:
     88   DISALLOW_COPY_AND_ASSIGN(BluetoothGattServiceClient);
     89 };
     90 
     91 }  // namespace chromeos
     92 
     93 #endif  // CHROMEOS_DBUS_BLUETOOTH_GATT_SERVICE_CLIENT_H_
     94