Chromium Code Reviews| Index: device/bluetooth/bluetooth_low_energy_device_mac.mm |
| diff --git a/device/bluetooth/bluetooth_low_energy_device_mac.mm b/device/bluetooth/bluetooth_low_energy_device_mac.mm |
| index b8c47f4552fecb6d30312d02bb47c422c36274ea..1ae02bd7ec8d5cfdfdb06ebfc9a353672ad0b47f 100644 |
| --- a/device/bluetooth/bluetooth_low_energy_device_mac.mm |
| +++ b/device/bluetooth/bluetooth_low_energy_device_mac.mm |
| @@ -258,10 +258,48 @@ void BluetoothLowEnergyDeviceMac::DidDiscoverPrimaryServices(NSError* error) { |
| adapter_->NotifyGattServiceAdded(gatt_service); |
| } |
| } |
| - // TODO(http://crbug.com/609064): Services are fully discovered once all |
| - // characteristics have been found. |
| - SetGattServicesDiscoveryComplete(true); |
| - adapter_->NotifyGattServicesDiscovered(this); |
| + for (GattServiceMap::const_iterator it = gatt_services_.begin(); |
| + it != gatt_services_.end(); ++it) { |
| + device::BluetoothRemoteGattService* gatt_service = it->second; |
| + device::BluetoothRemoteGattServiceMac* gatt_service_mac = |
| + static_cast<BluetoothRemoteGattServiceMac*>(gatt_service); |
| + gatt_service_mac->DiscoverCharacteristics(); |
| + } |
| +} |
| + |
| +void BluetoothLowEnergyDeviceMac::DidDiscoverCharacteristics( |
| + CBService* cb_service, |
| + NSError* error) { |
| + if (error) { |
| + // TODO(http://crbug.com/609320): Need to pass the error. |
| + // TODO(http://crbug.com/609844): Decide what to do if we fail to discover |
|
msarda
2016/06/14 09:15:05
Do not use we in comments.
jlebel
2016/06/15 16:16:36
Done.
|
| + // a device services. |
| + VLOG(1) << "Can't discover characteristics: " |
| + << error.localizedDescription.UTF8String << " (" << error.domain |
| + << ": " << error.code << ")"; |
| + return; |
| + } |
| + BluetoothRemoteGattServiceMac* gatt_service = |
| + GetBluetoothRemoteGattService(cb_service); |
| + DCHECK(gatt_service); |
| + gatt_service->DidDiscoverCharacteristics(); |
| + |
| + // Notify when all services have been discovered. |
| + bool discovery_complete = true; |
| + for (GattServiceMap::const_iterator it = gatt_services_.begin(); |
|
ortuno
2016/06/13 20:51:19
I think you could do:
bool discovery_complete = s
jlebel
2016/06/15 16:16:36
Done.
|
| + it != gatt_services_.end(); ++it) { |
| + device::BluetoothRemoteGattService* gatt_service = it->second; |
|
ortuno
2016/06/13 20:51:19
Why do you need "device::" here?
jlebel
2016/06/15 16:16:36
Done.
|
| + device::BluetoothRemoteGattServiceMac* gatt_service_mac = |
| + static_cast<BluetoothRemoteGattServiceMac*>(gatt_service); |
| + discovery_complete = gatt_service_mac->IsDiscoveryComplete(); |
| + if (!discovery_complete) { |
|
msarda
2016/06/14 09:15:05
I think this could just be:
if (!gatt_service_mac-
jlebel
2016/06/15 16:16:36
Done.
|
| + break; |
| + } |
| + } |
| + if (discovery_complete) { |
| + SetGattServicesDiscoveryComplete(true); |
| + adapter_->NotifyGattServicesDiscovered(this); |
| + } |
| } |
| void BluetoothLowEnergyDeviceMac::DidModifyServices( |