summaryrefslogtreecommitdiffstats
path: root/device/bluetooth/bluetooth_remote_gatt_descriptor_win.cc
diff options
context:
space:
mode:
Diffstat (limited to 'device/bluetooth/bluetooth_remote_gatt_descriptor_win.cc')
-rw-r--r--device/bluetooth/bluetooth_remote_gatt_descriptor_win.cc99
1 files changed, 99 insertions, 0 deletions
diff --git a/device/bluetooth/bluetooth_remote_gatt_descriptor_win.cc b/device/bluetooth/bluetooth_remote_gatt_descriptor_win.cc
new file mode 100644
index 0000000..3610af0
--- /dev/null
+++ b/device/bluetooth/bluetooth_remote_gatt_descriptor_win.cc
@@ -0,0 +1,99 @@
+// 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_descriptor_win.h"
+
+#include "base/bind.h"
+#include "device/bluetooth/bluetooth_adapter_win.h"
+#include "device/bluetooth/bluetooth_remote_gatt_characteristic_win.h"
+#include "device/bluetooth/bluetooth_remote_gatt_service_win.h"
+
+namespace device {
+
+BluetoothRemoteGattDescriptorWin::BluetoothRemoteGattDescriptorWin(
+ BluetoothRemoteGattCharacteristicWin* parent_characteristic,
+ BTH_LE_GATT_DESCRIPTOR* descriptor_info,
+ scoped_refptr<base::SequencedTaskRunner>& ui_task_runner)
+ : parent_characteristic_(parent_characteristic),
+ descriptor_info_(descriptor_info),
+ ui_task_runner_(ui_task_runner),
+ weak_ptr_factory_(this) {
+ DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
+ DCHECK(parent_characteristic_);
+ DCHECK(descriptor_info_.get());
+
+ task_manager_ = parent_characteristic_->GetWinService()
+ ->GetWinAdapter()
+ ->GetWinBluetoothTaskManager();
+ DCHECK(task_manager_);
+ service_path_ = parent_characteristic_->GetWinService()->GetServicePath();
+ DCHECK(!service_path_.empty());
+ descriptor_uuid_ =
+ BluetoothTaskManagerWin::BluetoothLowEnergyUuidToBluetoothUuid(
+ descriptor_info_.get()->DescriptorUuid);
+ DCHECK(descriptor_uuid_.IsValid());
+ descriptor_identifier_ = parent_characteristic_->GetIdentifier() + "_" +
+ std::to_string(descriptor_info_->AttributeHandle);
+}
+
+BluetoothRemoteGattDescriptorWin::~BluetoothRemoteGattDescriptorWin() {
+ DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
+
+ parent_characteristic_->GetWinService()
+ ->GetWinAdapter()
+ ->NotifyGattDescriptorRemoved(this);
+}
+
+std::string BluetoothRemoteGattDescriptorWin::GetIdentifier() const {
+ return descriptor_identifier_;
+}
+
+BluetoothUUID BluetoothRemoteGattDescriptorWin::GetUUID() const {
+ return descriptor_uuid_;
+}
+
+bool BluetoothRemoteGattDescriptorWin::IsLocal() const {
+ return false;
+}
+
+std::vector<uint8_t>& BluetoothRemoteGattDescriptorWin::GetValue() const {
+ NOTIMPLEMENTED();
+ return const_cast<std::vector<uint8_t>&>(descriptor_value_);
+}
+
+BluetoothGattCharacteristic*
+BluetoothRemoteGattDescriptorWin::GetCharacteristic() const {
+ return parent_characteristic_;
+}
+
+BluetoothGattCharacteristic::Permissions
+BluetoothRemoteGattDescriptorWin::GetPermissions() const {
+ NOTIMPLEMENTED();
+ return descriptor_permissions_;
+}
+
+void BluetoothRemoteGattDescriptorWin::ReadRemoteDescriptor(
+ const ValueCallback& callback,
+ const ErrorCallback& error_callback) {
+ DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
+
+ NOTIMPLEMENTED();
+ error_callback.Run(BluetoothGattService::GATT_ERROR_NOT_SUPPORTED);
+}
+
+void BluetoothRemoteGattDescriptorWin::WriteRemoteDescriptor(
+ const std::vector<uint8_t>& new_value,
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) {
+ DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
+
+ NOTIMPLEMENTED();
+ error_callback.Run(BluetoothGattService::GATT_ERROR_NOT_SUPPORTED);
+}
+
+uint16_t BluetoothRemoteGattDescriptorWin::GetAttributeHandle() const {
+ return descriptor_info_->AttributeHandle;
+}
+
+} // namespace device.