Index: device/bluetooth/bluetooth_remote_gatt_characteristic_mac.mm |
diff --git a/device/bluetooth/bluetooth_remote_gatt_characteristic_mac.mm b/device/bluetooth/bluetooth_remote_gatt_characteristic_mac.mm |
index 2e2da4e618c0214d4907811847147a72b587390d..0e860b5ed85a2eed0110ad67c37918864b1f204a 100644 |
--- a/device/bluetooth/bluetooth_remote_gatt_characteristic_mac.mm |
+++ b/device/bluetooth/bluetooth_remote_gatt_characteristic_mac.mm |
@@ -152,6 +152,7 @@ void BluetoothRemoteGattCharacteristicMac::ReadRemoteCharacteristic( |
const ValueCallback& callback, |
const ErrorCallback& error_callback) { |
if (!IsReadable()) { |
+ VLOG(1) << *this << ": Characteristic not readable."; |
base::ThreadTaskRunnerHandle::Get()->PostTask( |
FROM_HERE, |
base::Bind(error_callback, |
@@ -159,12 +160,14 @@ void BluetoothRemoteGattCharacteristicMac::ReadRemoteCharacteristic( |
return; |
} |
if (characteristic_value_read_or_write_in_progress_) { |
+ VLOG(1) << *this << ": Characteristic read already in progress."; |
base::ThreadTaskRunnerHandle::Get()->PostTask( |
FROM_HERE, |
base::Bind(error_callback, |
BluetoothRemoteGattService::GATT_ERROR_IN_PROGRESS)); |
return; |
} |
+ VLOG(1) << *this << ": Read characteristic."; |
characteristic_value_read_or_write_in_progress_ = true; |
read_characteristic_value_callbacks_ = |
std::make_pair(callback, error_callback); |
@@ -176,6 +179,7 @@ void BluetoothRemoteGattCharacteristicMac::WriteRemoteCharacteristic( |
const base::Closure& callback, |
const ErrorCallback& error_callback) { |
if (!IsWritable()) { |
+ VLOG(1) << *this << ": Characteristic not writable."; |
base::ThreadTaskRunnerHandle::Get()->PostTask( |
FROM_HERE, |
base::Bind(error_callback, |
@@ -183,12 +187,14 @@ void BluetoothRemoteGattCharacteristicMac::WriteRemoteCharacteristic( |
return; |
} |
if (characteristic_value_read_or_write_in_progress_) { |
+ VLOG(1) << *this << ": Characteristic write already in progress."; |
base::ThreadTaskRunnerHandle::Get()->PostTask( |
FROM_HERE, |
base::Bind(error_callback, |
BluetoothRemoteGattService::GATT_ERROR_IN_PROGRESS)); |
return; |
} |
+ VLOG(1) << *this << ": Write characteristic."; |
characteristic_value_read_or_write_in_progress_ = true; |
write_characteristic_value_callbacks_ = |
std::make_pair(callback, error_callback); |
@@ -210,6 +216,7 @@ void BluetoothRemoteGattCharacteristicMac::SubscribeToNotifications( |
BluetoothRemoteGattDescriptor* ccc_descriptor, |
const base::Closure& callback, |
const ErrorCallback& error_callback) { |
+ VLOG(1) << *this << ": Subscribe to characteristic."; |
DCHECK(subscribe_to_notification_callbacks_.first.is_null()); |
DCHECK(subscribe_to_notification_callbacks_.second.is_null()); |
DCHECK(unsubscribe_from_notification_callbacks_.first.is_null()); |
@@ -224,6 +231,7 @@ void BluetoothRemoteGattCharacteristicMac::UnsubscribeFromNotifications( |
BluetoothRemoteGattDescriptor* ccc_descriptor, |
const base::Closure& callback, |
const ErrorCallback& error_callback) { |
+ VLOG(1) << *this << ": Unsubscribe from characteristic."; |
DCHECK(subscribe_to_notification_callbacks_.first.is_null()); |
DCHECK(subscribe_to_notification_callbacks_.second.is_null()); |
DCHECK(unsubscribe_from_notification_callbacks_.first.is_null()); |
@@ -235,6 +243,7 @@ void BluetoothRemoteGattCharacteristicMac::UnsubscribeFromNotifications( |
} |
void BluetoothRemoteGattCharacteristicMac::DiscoverDescriptors() { |
+ VLOG(1) << *this << ": Discover descriptors."; |
is_discovery_complete_ = false; |
[GetCBPeripheral() |
discoverDescriptorsForCharacteristic:cb_characteristic_.get()]; |
@@ -249,7 +258,8 @@ void BluetoothRemoteGattCharacteristicMac::DidUpdateValue(NSError* error) { |
callbacks.swap(read_characteristic_value_callbacks_); |
characteristic_value_read_or_write_in_progress_ = false; |
if (error) { |
- VLOG(1) << "Bluetooth error while reading for characteristic, domain: " |
+ VLOG(1) << *this |
+ << ": Bluetooth error while reading for characteristic, domain: " |
<< base::SysNSStringToUTF8(error.domain) |
<< ", error code: " << error.code; |
BluetoothGattService::GattErrorCode error_code = |
@@ -257,17 +267,21 @@ void BluetoothRemoteGattCharacteristicMac::DidUpdateValue(NSError* error) { |
callbacks.second.Run(error_code); |
return; |
} |
+ VLOG(1) << *this << ": Read request arrived."; |
UpdateValue(); |
callbacks.first.Run(value_); |
} else if (IsNotifying()) { |
+ VLOG(1) << *this << ": Notification arrived."; |
UpdateValue(); |
gatt_service_->GetMacAdapter()->NotifyGattCharacteristicValueChanged( |
this, value_); |
} else { |
// In case of buggy device, nothing should be done if receiving extra |
// read confirmation. |
- VLOG(1) << "Characteristic value updated while having no pending read nor " |
- "notification."; |
+ VLOG(1) |
+ << *this |
+ << ": Characteristic value updated while having no pending read nor " |
+ "notification."; |
} |
} |
@@ -282,14 +296,16 @@ void BluetoothRemoteGattCharacteristicMac::DidWriteValue(NSError* error) { |
if (!characteristic_value_read_or_write_in_progress_) { |
// In case of buggy device, nothing should be done if receiving extra |
// write confirmation. |
- VLOG(1) << "Write notification while no write operation pending."; |
+ VLOG(1) << *this |
+ << ": Write notification while no write operation pending."; |
return; |
} |
std::pair<base::Closure, ErrorCallback> callbacks; |
callbacks.swap(write_characteristic_value_callbacks_); |
characteristic_value_read_or_write_in_progress_ = false; |
if (error) { |
- VLOG(1) << "Bluetooth error while writing for characteristic, domain: " |
+ VLOG(1) << *this |
+ << ": Bluetooth error while writing for characteristic, domain: " |
<< base::SysNSStringToUTF8(error.domain) |
<< ", error code: " << error.code; |
BluetoothGattService::GattErrorCode error_code = |
@@ -297,6 +313,7 @@ void BluetoothRemoteGattCharacteristicMac::DidWriteValue(NSError* error) { |
callbacks.second.Run(error_code); |
return; |
} |
+ VLOG(1) << *this << ": Write value succeeded."; |
callbacks.first.Run(); |
} |
@@ -310,12 +327,12 @@ void BluetoothRemoteGattCharacteristicMac::DidUpdateNotificationState( |
DCHECK(![GetCBCharacteristic() isNotifying] || error); |
reentrant_safe_callbacks.swap(unsubscribe_from_notification_callbacks_); |
} else { |
- VLOG(1) << "No pending notification update for characteristic " |
- << GetUUID().value(); |
+ VLOG(1) << *this << ": No pending notification update for characteristic."; |
return; |
} |
if (error) { |
- VLOG(1) << "Bluetooth error while modifying notification state for " |
+ VLOG(1) << *this |
+ << ": Bluetooth error while modifying notification state for " |
"characteristic, domain: " |
<< base::SysNSStringToUTF8(error.domain) |
<< ", error code: " << error.code << ", localized description: " |
@@ -330,6 +347,7 @@ void BluetoothRemoteGattCharacteristicMac::DidUpdateNotificationState( |
void BluetoothRemoteGattCharacteristicMac::DidDiscoverDescriptors() { |
DCHECK(!is_discovery_complete_); |
+ VLOG(1) << *this << ": Did discover descriptors."; |
std::unordered_set<std::string> descriptor_identifier_to_remove; |
for (const auto& iter : gatt_descriptor_macs_) { |
descriptor_identifier_to_remove.insert(iter.first); |
@@ -339,6 +357,7 @@ void BluetoothRemoteGattCharacteristicMac::DidDiscoverDescriptors() { |
BluetoothRemoteGattDescriptorMac* gatt_descriptor_mac = |
GetBluetoothRemoteGattDescriptorMac(cb_descriptor); |
if (gatt_descriptor_mac) { |
+ VLOG(1) << *gatt_descriptor_mac << ": Known descriptor."; |
const std::string& identifier = gatt_descriptor_mac->GetIdentifier(); |
descriptor_identifier_to_remove.erase(identifier); |
continue; |
@@ -350,11 +369,13 @@ void BluetoothRemoteGattCharacteristicMac::DidDiscoverDescriptors() { |
{identifier, base::WrapUnique(gatt_descriptor_mac)}); |
DCHECK(result_iter.second); |
GetMacAdapter()->NotifyGattDescriptorAdded(gatt_descriptor_mac); |
+ VLOG(1) << *gatt_descriptor_mac << ": New descriptor."; |
} |
for (const std::string& identifier : descriptor_identifier_to_remove) { |
auto pair_to_remove = gatt_descriptor_macs_.find(identifier); |
std::unique_ptr<BluetoothRemoteGattDescriptorMac> descriptor_to_remove; |
+ VLOG(1) << *descriptor_to_remove << ": Removed descriptor."; |
pair_to_remove->second.swap(descriptor_to_remove); |
gatt_descriptor_macs_.erase(pair_to_remove); |
GetMacAdapter()->NotifyGattDescriptorRemoved(descriptor_to_remove.get()); |
@@ -420,4 +441,17 @@ BluetoothRemoteGattCharacteristicMac::GetBluetoothRemoteGattDescriptorMac( |
return found->second.get(); |
} |
} |
+ |
+DEVICE_BLUETOOTH_EXPORT std::ostream& operator<<( |
+ std::ostream& out, |
+ const BluetoothRemoteGattCharacteristicMac& characteristic) { |
+ const BluetoothRemoteGattServiceMac* service_mac = |
+ static_cast<const BluetoothRemoteGattServiceMac*>( |
+ characteristic.GetService()); |
+ return out << "<BluetoothRemoteGattCharacteristicMac " |
+ << characteristic.GetUUID().canonical_value() << "/" |
+ << &characteristic |
+ << ", service: " << service_mac->GetUUID().canonical_value() << "/" |
+ << service_mac << ">"; |
+} |
} // namespace device. |