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

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

Issue 2248913002: bluetooth: Implement RSSI and Tx Power on macOS and Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bluetooth-refactor-adv-data
Patch Set: Fix mac test Created 4 years, 3 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
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698