OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_adapter_mac.h" | 5 #include "device/bluetooth/bluetooth_adapter_mac.h" |
6 | 6 |
7 #import <IOBluetooth/objc/IOBluetoothDevice.h> | 7 #import <IOBluetooth/objc/IOBluetoothDevice.h> |
8 #import <IOBluetooth/objc/IOBluetoothHostController.h> | 8 #import <IOBluetooth/objc/IOBluetoothHostController.h> |
9 #include <stddef.h> | 9 #include <stddef.h> |
10 | 10 |
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
532 NSDictionary* service_data = | 532 NSDictionary* service_data = |
533 [advertisement_data objectForKey:CBAdvertisementDataServiceDataKey]; | 533 [advertisement_data objectForKey:CBAdvertisementDataServiceDataKey]; |
534 for (CBUUID* uuid in service_data) { | 534 for (CBUUID* uuid in service_data) { |
535 NSData* data = [service_data objectForKey:uuid]; | 535 NSData* data = [service_data objectForKey:uuid]; |
536 const uint8_t* bytes = static_cast<const uint8_t*>([data bytes]); | 536 const uint8_t* bytes = static_cast<const uint8_t*>([data bytes]); |
537 size_t length = [data length]; | 537 size_t length = [data length]; |
538 service_data_map.emplace(BluetoothUUID([[uuid UUIDString] UTF8String]), | 538 service_data_map.emplace(BluetoothUUID([[uuid UUIDString] UTF8String]), |
539 std::vector<uint8_t>(bytes, bytes + length)); | 539 std::vector<uint8_t>(bytes, bytes + length)); |
540 } | 540 } |
541 | 541 |
542 device_mac->UpdateAdvertisementData(std::move(advertised_uuids), | 542 // Get Tx Power. |
543 std::move(service_data_map)); | 543 NSNumber* tx_power = |
544 [advertisement_data objectForKey:CBAdvertisementDataTxPowerLevelKey]; | |
545 base::Optional<int8_t> clamped_tx_power = | |
546 tx_power == nil ? base::nullopt | |
547 : base::make_optional<int8_t>( | |
548 BluetoothDevice::ClampPower([tx_power intValue])); | |
Jeffrey Yasskin
2016/08/24 22:32:07
Same reminder here as on Android. I forget about t
ortuno
2016/08/25 16:42:34
Done. [tx_power intValue] is 0 when tx_power is ni
| |
549 | |
550 device_mac->UpdateAdvertisementData( | |
551 BluetoothDevice::ClampPower(rssi), std::move(advertised_uuids), | |
552 std::move(service_data_map), | |
553 clamped_tx_power ? &clamped_tx_power.value() : nullptr); | |
544 | 554 |
545 if (is_new_device) { | 555 if (is_new_device) { |
546 std::string device_address = | 556 std::string device_address = |
547 BluetoothLowEnergyDeviceMac::GetPeripheralHashAddress(peripheral); | 557 BluetoothLowEnergyDeviceMac::GetPeripheralHashAddress(peripheral); |
548 devices_.add(device_address, std::unique_ptr<BluetoothDevice>(device_mac)); | 558 devices_.add(device_address, std::unique_ptr<BluetoothDevice>(device_mac)); |
549 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, | 559 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, |
550 DeviceAdded(this, device_mac)); | 560 DeviceAdded(this, device_mac)); |
551 } else { | 561 } else { |
552 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, | 562 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, |
553 DeviceChanged(this, device_mac)); | 563 DeviceChanged(this, device_mac)); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
625 std::string device_address = | 635 std::string device_address = |
626 BluetoothLowEnergyDeviceMac::GetPeripheralHashAddress(peripheral); | 636 BluetoothLowEnergyDeviceMac::GetPeripheralHashAddress(peripheral); |
627 DevicesMap::const_iterator iter = devices_.find(device_address); | 637 DevicesMap::const_iterator iter = devices_.find(device_address); |
628 if (iter == devices_.end()) { | 638 if (iter == devices_.end()) { |
629 return nil; | 639 return nil; |
630 } | 640 } |
631 return static_cast<BluetoothLowEnergyDeviceMac*>(iter->second); | 641 return static_cast<BluetoothLowEnergyDeviceMac*>(iter->second); |
632 } | 642 } |
633 | 643 |
634 } // namespace device | 644 } // namespace device |
OLD | NEW |