| OLD | NEW |
| 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 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 return; | 191 return; |
| 192 } | 192 } |
| 193 characteristic_value_read_or_write_in_progress_ = true; | 193 characteristic_value_read_or_write_in_progress_ = true; |
| 194 read_characteristic_value_callbacks_ = | 194 read_characteristic_value_callbacks_ = |
| 195 std::make_pair(callback, error_callback); | 195 std::make_pair(callback, error_callback); |
| 196 [gatt_service_->GetCBPeripheral() | 196 [gatt_service_->GetCBPeripheral() |
| 197 readValueForCharacteristic:cb_characteristic_]; | 197 readValueForCharacteristic:cb_characteristic_]; |
| 198 } | 198 } |
| 199 | 199 |
| 200 void BluetoothRemoteGattCharacteristicMac::WriteRemoteCharacteristic( | 200 void BluetoothRemoteGattCharacteristicMac::WriteRemoteCharacteristic( |
| 201 const std::vector<uint8_t>& new_value, | 201 const std::vector<uint8_t>& value, |
| 202 const base::Closure& callback, | 202 const base::Closure& callback, |
| 203 const ErrorCallback& error_callback) { | 203 const ErrorCallback& error_callback) { |
| 204 if (!IsWritable()) { | 204 if (!IsWritable()) { |
| 205 base::ThreadTaskRunnerHandle::Get()->PostTask( | 205 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 206 FROM_HERE, | 206 FROM_HERE, |
| 207 base::Bind(error_callback, | 207 base::Bind(error_callback, |
| 208 BluetoothRemoteGattService::GATT_ERROR_NOT_PERMITTED)); | 208 BluetoothRemoteGattService::GATT_ERROR_NOT_PERMITTED)); |
| 209 return; | 209 return; |
| 210 } | 210 } |
| 211 if (characteristic_value_read_or_write_in_progress_) { | 211 if (characteristic_value_read_or_write_in_progress_) { |
| 212 base::ThreadTaskRunnerHandle::Get()->PostTask( | 212 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 213 FROM_HERE, | 213 FROM_HERE, |
| 214 base::Bind(error_callback, | 214 base::Bind(error_callback, |
| 215 BluetoothRemoteGattService::GATT_ERROR_IN_PROGRESS)); | 215 BluetoothRemoteGattService::GATT_ERROR_IN_PROGRESS)); |
| 216 return; | 216 return; |
| 217 } | 217 } |
| 218 characteristic_value_read_or_write_in_progress_ = true; | 218 characteristic_value_read_or_write_in_progress_ = true; |
| 219 write_characteristic_value_callbacks_ = | 219 write_characteristic_value_callbacks_ = |
| 220 std::make_pair(callback, error_callback); | 220 std::make_pair(callback, error_callback); |
| 221 base::scoped_nsobject<NSData> nsdata_value( | 221 base::scoped_nsobject<NSData> nsdata_value( |
| 222 [[NSData alloc] initWithBytes:new_value.data() length:new_value.size()]); | 222 [[NSData alloc] initWithBytes:value.data() length:value.size()]); |
| 223 CBCharacteristicWriteType write_type = GetCBWriteType(); | 223 CBCharacteristicWriteType write_type = GetCBWriteType(); |
| 224 [gatt_service_->GetCBPeripheral() writeValue:nsdata_value | 224 [gatt_service_->GetCBPeripheral() writeValue:nsdata_value |
| 225 forCharacteristic:cb_characteristic_ | 225 forCharacteristic:cb_characteristic_ |
| 226 type:write_type]; | 226 type:write_type]; |
| 227 if (write_type == CBCharacteristicWriteWithoutResponse) { | 227 if (write_type == CBCharacteristicWriteWithoutResponse) { |
| 228 base::ThreadTaskRunnerHandle::Get()->PostTask( | 228 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 229 FROM_HERE, | 229 FROM_HERE, |
| 230 base::Bind(&BluetoothRemoteGattCharacteristicMac::DidWriteValue, | 230 base::Bind(&BluetoothRemoteGattCharacteristicMac::DidWriteValue, |
| 231 base::Unretained(this), nil)); | 231 base::Unretained(this), nil)); |
| 232 } | 232 } |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 return (GetProperties() & BluetoothGattCharacteristic::PROPERTY_WRITE) | 357 return (GetProperties() & BluetoothGattCharacteristic::PROPERTY_WRITE) |
| 358 ? CBCharacteristicWriteWithResponse | 358 ? CBCharacteristicWriteWithResponse |
| 359 : CBCharacteristicWriteWithoutResponse; | 359 : CBCharacteristicWriteWithoutResponse; |
| 360 } | 360 } |
| 361 | 361 |
| 362 CBCharacteristic* BluetoothRemoteGattCharacteristicMac::GetCBCharacteristic() | 362 CBCharacteristic* BluetoothRemoteGattCharacteristicMac::GetCBCharacteristic() |
| 363 const { | 363 const { |
| 364 return cb_characteristic_.get(); | 364 return cb_characteristic_.get(); |
| 365 } | 365 } |
| 366 } // namespace device. | 366 } // namespace device. |
| OLD | NEW |