Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1387)

Side by Side Diff: device/bluetooth/bluetooth_remote_gatt_characteristic_mac.mm

Issue 2115953002: bluetooth: Initialize start_notitications_in_progress_ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Clean up Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "device/bluetooth/bluetooth_remote_gatt_characteristic_mac.h" 5 #include "device/bluetooth/bluetooth_remote_gatt_characteristic_mac.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/strings/sys_string_conversions.h" 9 #include "base/strings/sys_string_conversions.h"
10 #include "base/threading/thread_task_runner_handle.h" 10 #include "base/threading/thread_task_runner_handle.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 return result; 64 return result;
65 } 65 }
66 } // namespace 66 } // namespace
67 67
68 BluetoothRemoteGattCharacteristicMac::BluetoothRemoteGattCharacteristicMac( 68 BluetoothRemoteGattCharacteristicMac::BluetoothRemoteGattCharacteristicMac(
69 BluetoothRemoteGattServiceMac* gatt_service, 69 BluetoothRemoteGattServiceMac* gatt_service,
70 CBCharacteristic* cb_characteristic) 70 CBCharacteristic* cb_characteristic)
71 : gatt_service_(gatt_service), 71 : gatt_service_(gatt_service),
72 cb_characteristic_(cb_characteristic, base::scoped_policy::RETAIN), 72 cb_characteristic_(cb_characteristic, base::scoped_policy::RETAIN),
73 characteristic_value_read_or_write_in_progress_(false), 73 characteristic_value_read_or_write_in_progress_(false),
74 start_notifications_in_progress_(false),
74 weak_ptr_factory_(this) { 75 weak_ptr_factory_(this) {
75 uuid_ = BluetoothAdapterMac::BluetoothUUIDWithCBUUID( 76 uuid_ = BluetoothAdapterMac::BluetoothUUIDWithCBUUID(
76 [cb_characteristic_.get() UUID]); 77 [cb_characteristic_.get() UUID]);
77 identifier_ = base::SysNSStringToUTF8( 78 identifier_ = base::SysNSStringToUTF8(
78 [NSString stringWithFormat:@"%s-%p", uuid_.canonical_value().c_str(), 79 [NSString stringWithFormat:@"%s-%p", uuid_.canonical_value().c_str(),
79 (void*)cb_characteristic_]); 80 (void*)cb_characteristic_]);
80 } 81 }
81 82
82 BluetoothRemoteGattCharacteristicMac::~BluetoothRemoteGattCharacteristicMac() {} 83 BluetoothRemoteGattCharacteristicMac::~BluetoothRemoteGattCharacteristicMac() {}
83 84
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 BluetoothRemoteGattCharacteristicMac::GetDescriptor( 126 BluetoothRemoteGattCharacteristicMac::GetDescriptor(
126 const std::string& identifier) const { 127 const std::string& identifier) const {
127 NOTIMPLEMENTED(); 128 NOTIMPLEMENTED();
128 return nullptr; 129 return nullptr;
129 } 130 }
130 131
131 void BluetoothRemoteGattCharacteristicMac::StartNotifySession( 132 void BluetoothRemoteGattCharacteristicMac::StartNotifySession(
132 const NotifySessionCallback& callback, 133 const NotifySessionCallback& callback,
133 const ErrorCallback& error_callback) { 134 const ErrorCallback& error_callback) {
134 if (IsNotifying()) { 135 if (IsNotifying()) {
136 VLOG(2) << "Already notifying. Creating notify session.";
135 std::unique_ptr<BluetoothGattNotifySessionMac> notify_session( 137 std::unique_ptr<BluetoothGattNotifySessionMac> notify_session(
136 new BluetoothGattNotifySessionMac(weak_ptr_factory_.GetWeakPtr())); 138 new BluetoothGattNotifySessionMac(weak_ptr_factory_.GetWeakPtr()));
137 base::ThreadTaskRunnerHandle::Get()->PostTask( 139 base::ThreadTaskRunnerHandle::Get()->PostTask(
138 FROM_HERE, 140 FROM_HERE,
139 base::Bind(callback, base::Passed(std::move(notify_session)))); 141 base::Bind(callback, base::Passed(std::move(notify_session))));
140 return; 142 return;
141 } 143 }
144
142 if (!SupportsNotificationsOrIndications()) { 145 if (!SupportsNotificationsOrIndications()) {
143 base::ThreadTaskRunnerHandle::Get()->PostTask( 146 base::ThreadTaskRunnerHandle::Get()->PostTask(
144 FROM_HERE, 147 FROM_HERE,
145 base::Bind(error_callback, 148 base::Bind(error_callback,
146 BluetoothRemoteGattService::GATT_ERROR_NOT_SUPPORTED)); 149 BluetoothRemoteGattService::GATT_ERROR_NOT_SUPPORTED));
147 return; 150 return;
148 } 151 }
152
149 start_notify_session_callbacks_.push_back( 153 start_notify_session_callbacks_.push_back(
150 std::make_pair(callback, error_callback)); 154 std::make_pair(callback, error_callback));
151 if (start_notifications_in_progress_) 155
156 if (start_notifications_in_progress_) {
157 VLOG(2) << "Start Notifications already in progress. "
158 << "Request has been queued.";
152 return; 159 return;
160 }
161
153 [gatt_service_->GetCBPeripheral() setNotifyValue:YES 162 [gatt_service_->GetCBPeripheral() setNotifyValue:YES
154 forCharacteristic:cb_characteristic_.get()]; 163 forCharacteristic:cb_characteristic_.get()];
155 start_notifications_in_progress_ = true; 164 start_notifications_in_progress_ = true;
156 } 165 }
157 166
158 void BluetoothRemoteGattCharacteristicMac::ReadRemoteCharacteristic( 167 void BluetoothRemoteGattCharacteristicMac::ReadRemoteCharacteristic(
159 const ValueCallback& callback, 168 const ValueCallback& callback,
160 const ErrorCallback& error_callback) { 169 const ErrorCallback& error_callback) {
161 if (!IsReadable()) { 170 if (!IsReadable()) {
162 base::ThreadTaskRunnerHandle::Get()->PostTask( 171 base::ThreadTaskRunnerHandle::Get()->PostTask(
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 return (GetProperties() & BluetoothGattCharacteristic::PROPERTY_WRITE) 332 return (GetProperties() & BluetoothGattCharacteristic::PROPERTY_WRITE)
324 ? CBCharacteristicWriteWithResponse 333 ? CBCharacteristicWriteWithResponse
325 : CBCharacteristicWriteWithoutResponse; 334 : CBCharacteristicWriteWithoutResponse;
326 } 335 }
327 336
328 CBCharacteristic* BluetoothRemoteGattCharacteristicMac::GetCBCharacteristic() 337 CBCharacteristic* BluetoothRemoteGattCharacteristicMac::GetCBCharacteristic()
329 const { 338 const {
330 return cb_characteristic_.get(); 339 return cb_characteristic_.get();
331 } 340 }
332 } // namespace device. 341 } // namespace device.
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698