Chromium Code Reviews| Index: device/bluetooth/bluez/bluetooth_local_gatt_service_bluez.cc |
| diff --git a/device/bluetooth/bluez/bluetooth_local_gatt_service_bluez.cc b/device/bluetooth/bluez/bluetooth_local_gatt_service_bluez.cc |
| index 267b04713e9daabd73653ff0815f1d5dc30f8cdf..5f79c2b9c7a2eb6bfc5bbf207908069944768b2c 100644 |
| --- a/device/bluetooth/bluez/bluetooth_local_gatt_service_bluez.cc |
| +++ b/device/bluetooth/bluez/bluetooth_local_gatt_service_bluez.cc |
| @@ -2,9 +2,8 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#include "device/bluetooth/bluez/bluetooth_local_gatt_service_bluez.h" |
| +#include <device/bluetooth/bluez/bluetooth_local_gatt_service_bluez.h> |
| -#include "base/callback.h" |
| #include "base/guid.h" |
| #include "base/logging.h" |
| #include "base/memory/ptr_util.h" |
| @@ -12,8 +11,39 @@ |
| #include "dbus/object_path.h" |
| #include "device/bluetooth/bluez/bluetooth_adapter_bluez.h" |
| +namespace device { |
| + |
| +// static |
| +base::WeakPtr<BluetoothLocalGattService> BluetoothLocalGattService::Create( |
| + BluetoothAdapter* adapter, |
| + const BluetoothUUID& uuid, |
| + bool is_primary, |
| + BluetoothLocalGattService* included_service, |
| + BluetoothLocalGattService::Delegate* delegate) { |
| + return bluez::BluetoothLocalGattServiceBlueZ::Create( |
| + adapter, uuid, is_primary, included_service, delegate); |
| +} |
| + |
| +} // device |
| + |
| namespace bluez { |
| +// static |
| +base::WeakPtr<device::BluetoothLocalGattService> |
| +BluetoothLocalGattServiceBlueZ::Create( |
| + device::BluetoothAdapter* adapter, |
| + const device::BluetoothUUID& uuid, |
| + bool is_primary, |
| + BluetoothLocalGattService* /* included_service */, |
| + BluetoothLocalGattService::Delegate* delegate) { |
| + BluetoothAdapterBlueZ* adapter_bluez = |
| + static_cast<BluetoothAdapterBlueZ*>(adapter); |
| + BluetoothLocalGattServiceBlueZ* service = new BluetoothLocalGattServiceBlueZ( |
| + adapter_bluez, uuid, is_primary, delegate); |
| + adapter_bluez->AddLocalGattService(base::WrapUnique(service)); |
| + return service->weak_ptr_factory_.GetWeakPtr(); |
| +} |
| + |
| BluetoothLocalGattServiceBlueZ::BluetoothLocalGattServiceBlueZ( |
| BluetoothAdapterBlueZ* adapter, |
| const device::BluetoothUUID& uuid, |
| @@ -24,12 +54,8 @@ BluetoothLocalGattServiceBlueZ::BluetoothLocalGattServiceBlueZ( |
| is_primary_(is_primary), |
| delegate_(delegate), |
| weak_ptr_factory_(this) { |
| - // TODO(rkc): Move this code in a common location. It is used by |
| - // BluetoothAdvertisementBlueZ() also. |
| - std::string GuidString = base::GenerateGUID(); |
| - base::RemoveChars(GuidString, "-", &GuidString); |
| - object_path_ = dbus::ObjectPath(adapter_->object_path().value() + |
| - "/service/" + GuidString); |
| + // TODO(rkc): Get base application path from adapter and prefix it here. |
|
scheib
2016/04/28 01:06:24
Use issue numbers for TODOs.
rkc
2016/04/28 02:06:58
This is just a remnant of the split to make the co
scheib
2016/04/28 04:34:07
OK, leave it for now but I'd suggest TODO(crrev.co
rkc
2016/04/28 05:07:23
Acknowledged.
|
| + object_path_ = AddGuidToObjectPath("/service"); |
| VLOG(1) << "Creating local GATT service with identifier: " |
| << object_path_.value(); |
| } |
| @@ -44,42 +70,36 @@ bool BluetoothLocalGattServiceBlueZ::IsPrimary() const { |
| return is_primary_; |
| } |
| -// static |
| -base::WeakPtr<device::BluetoothLocalGattService> |
| -BluetoothLocalGattServiceBlueZ::Create( |
| - device::BluetoothAdapter* adapter, |
| - const device::BluetoothUUID& uuid, |
| - bool is_primary, |
| - BluetoothLocalGattService* /* included_service */, |
| - BluetoothLocalGattService::Delegate* delegate) { |
| - BluetoothAdapterBlueZ* adapter_bluez = |
| - static_cast<BluetoothAdapterBlueZ*>(adapter); |
| - BluetoothLocalGattServiceBlueZ* service = new BluetoothLocalGattServiceBlueZ( |
| - adapter_bluez, uuid, is_primary, delegate); |
| - adapter_bluez->AddLocalGattService(base::WrapUnique(service)); |
| - return service->weak_ptr_factory_.GetWeakPtr(); |
| -} |
| - |
| void BluetoothLocalGattServiceBlueZ::Register( |
| const base::Closure& callback, |
| const ErrorCallback& error_callback) { |
| - // TODO(rkc): Call adapter_->RegisterGattService. |
| + // GetAdapter()->RegisterGattService(this, callback, error_callback); |
| } |
| void BluetoothLocalGattServiceBlueZ::Unregister( |
| const base::Closure& callback, |
| const ErrorCallback& error_callback) { |
| - // TODO(rkc): Call adapter_->UnregisterGattService. |
| + DCHECK(GetAdapter()); |
| + // GetAdapter()->UnregisterGattService(this, callback, error_callback); |
| +} |
| + |
| +const std::vector<std::unique_ptr<BluetoothLocalGattCharacteristicBlueZ>>& |
| +BluetoothLocalGattServiceBlueZ::GetCharacteristics() const { |
| + return characteristics_; |
| +} |
| + |
| +// static |
| +dbus::ObjectPath BluetoothLocalGattServiceBlueZ::AddGuidToObjectPath( |
| + const std::string& path) { |
| + std::string GuidString = base::GenerateGUID(); |
| + base::RemoveChars(GuidString, "-", &GuidString); |
| + |
| + return dbus::ObjectPath(path + GuidString); |
| } |
| -void BluetoothLocalGattServiceBlueZ::OnRegistrationError( |
| - const ErrorCallback& error_callback, |
| - const std::string& error_name, |
| - const std::string& error_message) { |
| - VLOG(1) << "[Un]Register Service failed: " << error_name |
| - << ", message: " << error_message; |
| - error_callback.Run( |
| - BluetoothGattServiceBlueZ::DBusErrorToServiceError(error_name)); |
| +void BluetoothLocalGattServiceBlueZ::AddCharacteristic( |
| + std::unique_ptr<BluetoothLocalGattCharacteristicBlueZ> characteristic) { |
| + characteristics_.push_back(std::move(characteristic)); |
| } |
| } // namespace bluez |