| Index: device/bluetooth/bluez/bluetooth_remote_gatt_characteristic_bluez.cc
|
| diff --git a/device/bluetooth/bluetooth_remote_gatt_characteristic_bluez.cc b/device/bluetooth/bluez/bluetooth_remote_gatt_characteristic_bluez.cc
|
| similarity index 88%
|
| rename from device/bluetooth/bluetooth_remote_gatt_characteristic_bluez.cc
|
| rename to device/bluetooth/bluez/bluetooth_remote_gatt_characteristic_bluez.cc
|
| index 71201fdf9699005f7721d0d88cc7f6fdba69a46b..b1d6a0ef80fae257db6831d27233915019a03b52 100644
|
| --- a/device/bluetooth/bluetooth_remote_gatt_characteristic_bluez.cc
|
| +++ b/device/bluetooth/bluez/bluetooth_remote_gatt_characteristic_bluez.cc
|
| @@ -1,26 +1,24 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Copyright 2016 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.
|
|
|
| -#include "device/bluetooth/bluetooth_remote_gatt_characteristic_bluez.h"
|
| +#include "device/bluetooth/bluez/bluetooth_remote_gatt_characteristic_bluez.h"
|
|
|
| #include <iterator>
|
| #include <limits>
|
| -#include <ostream>
|
|
|
| #include "base/bind.h"
|
| #include "base/callback.h"
|
| -#include "base/callback_forward.h"
|
| #include "base/logging.h"
|
| #include "base/strings/stringprintf.h"
|
| #include "dbus/property.h"
|
| -#include "device/bluetooth/bluetooth_adapter_bluez.h"
|
| #include "device/bluetooth/bluetooth_device.h"
|
| #include "device/bluetooth/bluetooth_gatt_characteristic.h"
|
| -#include "device/bluetooth/bluetooth_gatt_descriptor_bluez.h"
|
| -#include "device/bluetooth/bluetooth_gatt_notify_session_bluez.h"
|
| #include "device/bluetooth/bluetooth_gatt_service.h"
|
| -#include "device/bluetooth/bluetooth_remote_gatt_service_bluez.h"
|
| +#include "device/bluetooth/bluez/bluetooth_adapter_bluez.h"
|
| +#include "device/bluetooth/bluez/bluetooth_gatt_notify_session_bluez.h"
|
| +#include "device/bluetooth/bluez/bluetooth_remote_gatt_descriptor_bluez.h"
|
| +#include "device/bluetooth/bluez/bluetooth_remote_gatt_service_bluez.h"
|
| #include "device/bluetooth/dbus/bluetooth_gatt_characteristic_client.h"
|
| #include "device/bluetooth/dbus/bluez_dbus_manager.h"
|
| #include "third_party/cros_system_api/dbus/service_constants.h"
|
| @@ -44,9 +42,10 @@ std::ostream& operator<<(std::ostream& out, const std::vector<uint8_t> bytes) {
|
| BluetoothRemoteGattCharacteristicBlueZ::BluetoothRemoteGattCharacteristicBlueZ(
|
| BluetoothRemoteGattServiceBlueZ* service,
|
| const dbus::ObjectPath& object_path)
|
| - : BluetoothGattCharacteristicBlueZ(service, object_path),
|
| + : BluetoothGattCharacteristicBlueZ(object_path),
|
| num_notify_sessions_(0),
|
| notify_call_pending_(false),
|
| + service_(service),
|
| weak_ptr_factory_(this) {
|
| VLOG(1) << "Creating remote GATT characteristic with identifier: "
|
| << GetIdentifier() << ", UUID: " << GetUUID().canonical_value();
|
| @@ -80,7 +79,7 @@ BluetoothRemoteGattCharacteristicBlueZ::
|
| while (!pending_start_notify_calls_.empty()) {
|
| PendingStartNotifyCall callbacks = pending_start_notify_calls_.front();
|
| pending_start_notify_calls_.pop();
|
| - callbacks.second.Run(device::BluetoothGattService::GATT_ERROR_FAILED);
|
| + callbacks.second.Run(device::BluetoothRemoteGattService::GATT_ERROR_FAILED);
|
| }
|
| }
|
|
|
| @@ -93,23 +92,7 @@ device::BluetoothUUID BluetoothRemoteGattCharacteristicBlueZ::GetUUID() const {
|
| return device::BluetoothUUID(properties->uuid.value());
|
| }
|
|
|
| -bool BluetoothRemoteGattCharacteristicBlueZ::IsLocal() const {
|
| - return false;
|
| -}
|
| -
|
| -const std::vector<uint8_t>& BluetoothRemoteGattCharacteristicBlueZ::GetValue()
|
| - const {
|
| - bluez::BluetoothGattCharacteristicClient::Properties* properties =
|
| - bluez::BluezDBusManager::Get()
|
| - ->GetBluetoothGattCharacteristicClient()
|
| - ->GetProperties(object_path());
|
| -
|
| - DCHECK(properties);
|
| -
|
| - return properties->value.value();
|
| -}
|
| -
|
| -device::BluetoothGattCharacteristic::Properties
|
| +device::BluetoothRemoteGattCharacteristic::Properties
|
| BluetoothRemoteGattCharacteristicBlueZ::GetProperties() const {
|
| bluez::BluetoothGattCharacteristicClient::Properties* properties =
|
| bluez::BluezDBusManager::Get()
|
| @@ -146,6 +129,30 @@ BluetoothRemoteGattCharacteristicBlueZ::GetProperties() const {
|
| return props;
|
| }
|
|
|
| +device::BluetoothRemoteGattCharacteristic::Permissions
|
| +BluetoothRemoteGattCharacteristicBlueZ::GetPermissions() const {
|
| + // TODO(armansito): Once BlueZ defines the permissions, return the correct
|
| + // values here.
|
| + return PERMISSION_NONE;
|
| +}
|
| +
|
| +const std::vector<uint8_t>& BluetoothRemoteGattCharacteristicBlueZ::GetValue()
|
| + const {
|
| + bluez::BluetoothGattCharacteristicClient::Properties* properties =
|
| + bluez::BluezDBusManager::Get()
|
| + ->GetBluetoothGattCharacteristicClient()
|
| + ->GetProperties(object_path());
|
| +
|
| + DCHECK(properties);
|
| +
|
| + return properties->value.value();
|
| +}
|
| +
|
| +device::BluetoothRemoteGattService*
|
| +BluetoothRemoteGattCharacteristicBlueZ::GetService() const {
|
| + return service_;
|
| +}
|
| +
|
| bool BluetoothRemoteGattCharacteristicBlueZ::IsNotifying() const {
|
| bluez::BluetoothGattCharacteristicClient::Properties* properties =
|
| bluez::BluezDBusManager::Get()
|
| @@ -156,16 +163,23 @@ bool BluetoothRemoteGattCharacteristicBlueZ::IsNotifying() const {
|
| return properties->notifying.value();
|
| }
|
|
|
| -bool BluetoothRemoteGattCharacteristicBlueZ::AddDescriptor(
|
| - device::BluetoothGattDescriptor* descriptor) {
|
| - VLOG(1) << "Descriptors cannot be added to a remote GATT characteristic.";
|
| - return false;
|
| +std::vector<device::BluetoothRemoteGattDescriptor*>
|
| +BluetoothRemoteGattCharacteristicBlueZ::GetDescriptors() const {
|
| + std::vector<device::BluetoothRemoteGattDescriptor*> descriptors;
|
| + for (DescriptorMap::const_iterator iter = descriptors_.begin();
|
| + iter != descriptors_.end(); ++iter)
|
| + descriptors.push_back(iter->second);
|
| + return descriptors;
|
| }
|
|
|
| -bool BluetoothRemoteGattCharacteristicBlueZ::UpdateValue(
|
| - const std::vector<uint8_t>& value) {
|
| - VLOG(1) << "Cannot update the value of a remote GATT characteristic.";
|
| - return false;
|
| +device::BluetoothRemoteGattDescriptor*
|
| +BluetoothRemoteGattCharacteristicBlueZ::GetDescriptor(
|
| + const std::string& identifier) const {
|
| + DescriptorMap::const_iterator iter =
|
| + descriptors_.find(dbus::ObjectPath(identifier));
|
| + if (iter == descriptors_.end())
|
| + return nullptr;
|
| + return iter->second;
|
| }
|
|
|
| void BluetoothRemoteGattCharacteristicBlueZ::StartNotifySession(
|
| @@ -182,7 +196,8 @@ void BluetoothRemoteGattCharacteristicBlueZ::StartNotifySession(
|
| if (IsNotifying()) {
|
| // Check for overflows, though unlikely.
|
| if (num_notify_sessions_ == std::numeric_limits<size_t>::max()) {
|
| - error_callback.Run(device::BluetoothGattService::GATT_ERROR_FAILED);
|
| + error_callback.Run(
|
| + device::BluetoothRemoteGattService::GATT_ERROR_FAILED);
|
| return;
|
| }
|
|
|
| @@ -307,8 +322,8 @@ void BluetoothRemoteGattCharacteristicBlueZ::GattDescriptorAdded(
|
| VLOG(1) << "Adding new remote GATT descriptor for GATT characteristic: "
|
| << GetIdentifier() << ", UUID: " << GetUUID().canonical_value();
|
|
|
| - BluetoothGattDescriptorBlueZ* descriptor =
|
| - new BluetoothGattDescriptorBlueZ(this, object_path, false /* is_local */);
|
| + BluetoothRemoteGattDescriptorBlueZ* descriptor =
|
| + new BluetoothRemoteGattDescriptorBlueZ(this, object_path);
|
| descriptors_[object_path] = descriptor;
|
| DCHECK(descriptor->GetIdentifier() == object_path.value());
|
| DCHECK(descriptor->GetUUID().IsValid());
|
| @@ -329,7 +344,7 @@ void BluetoothRemoteGattCharacteristicBlueZ::GattDescriptorRemoved(
|
| VLOG(1) << "Removing remote GATT descriptor from characteristic: "
|
| << GetIdentifier() << ", UUID: " << GetUUID().canonical_value();
|
|
|
| - BluetoothGattDescriptorBlueZ* descriptor = iter->second;
|
| + BluetoothRemoteGattDescriptorBlueZ* descriptor = iter->second;
|
| DCHECK(descriptor->object_path() == object_path);
|
| descriptors_.erase(iter);
|
|
|
|
|