| 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 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 } | 67 } |
| 68 | 68 |
| 69 // static | 69 // static |
| 70 BluetoothUUID BluetoothAdapterMac::BluetoothUUIDWithCBUUID(CBUUID* uuid) { | 70 BluetoothUUID BluetoothAdapterMac::BluetoothUUIDWithCBUUID(CBUUID* uuid) { |
| 71 // UUIDString only available OS X >= 10.10. | 71 // UUIDString only available OS X >= 10.10. |
| 72 DCHECK(base::mac::IsAtLeastOS10_10()); | 72 DCHECK(base::mac::IsAtLeastOS10_10()); |
| 73 std::string uuid_c_string = base::SysNSStringToUTF8([uuid UUIDString]); | 73 std::string uuid_c_string = base::SysNSStringToUTF8([uuid UUIDString]); |
| 74 return device::BluetoothUUID(uuid_c_string); | 74 return device::BluetoothUUID(uuid_c_string); |
| 75 } | 75 } |
| 76 | 76 |
| 77 // static |
| 78 std::string BluetoothAdapterMac::String(NSError* error) { |
| 79 if (!error) { |
| 80 return "no error"; |
| 81 } |
| 82 return std::string("error domain: ") + base::SysNSStringToUTF8(error.domain) + |
| 83 ", code: " + std::to_string(error.code) + ", description: " + |
| 84 base::SysNSStringToUTF8(error.localizedDescription); |
| 85 } |
| 86 |
| 77 BluetoothAdapterMac::BluetoothAdapterMac() | 87 BluetoothAdapterMac::BluetoothAdapterMac() |
| 78 : BluetoothAdapter(), | 88 : BluetoothAdapter(), |
| 79 classic_powered_(false), | 89 classic_powered_(false), |
| 80 num_discovery_sessions_(0), | 90 num_discovery_sessions_(0), |
| 81 should_update_name_(true), | 91 should_update_name_(true), |
| 82 classic_discovery_manager_( | 92 classic_discovery_manager_( |
| 83 BluetoothDiscoveryManagerMac::CreateClassic(this)), | 93 BluetoothDiscoveryManagerMac::CreateClassic(this)), |
| 84 weak_ptr_factory_(this) { | 94 weak_ptr_factory_(this) { |
| 85 if (IsLowEnergyAvailable()) { | 95 if (IsLowEnergyAvailable()) { |
| 86 low_energy_discovery_manager_.reset( | 96 low_energy_discovery_manager_.reset( |
| (...skipping 582 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 669 if (!device_mac) { | 679 if (!device_mac) { |
| 670 [low_energy_central_manager_ cancelPeripheralConnection:peripheral]; | 680 [low_energy_central_manager_ cancelPeripheralConnection:peripheral]; |
| 671 return; | 681 return; |
| 672 } | 682 } |
| 673 BluetoothDevice::ConnectErrorCode error_code = | 683 BluetoothDevice::ConnectErrorCode error_code = |
| 674 BluetoothDevice::ConnectErrorCode::ERROR_UNKNOWN; | 684 BluetoothDevice::ConnectErrorCode::ERROR_UNKNOWN; |
| 675 if (error) { | 685 if (error) { |
| 676 error_code = BluetoothDeviceMac::GetConnectErrorCodeFromNSError(error); | 686 error_code = BluetoothDeviceMac::GetConnectErrorCodeFromNSError(error); |
| 677 } | 687 } |
| 678 VLOG(1) << *device_mac << ": Failed to connect to peripheral with error " | 688 VLOG(1) << *device_mac << ": Failed to connect to peripheral with error " |
| 679 << error << ", error code: " << error_code; | 689 << BluetoothAdapterMac::String(error) |
| 690 << ", error code: " << error_code; |
| 680 device_mac->DidFailToConnectGatt(error_code); | 691 device_mac->DidFailToConnectGatt(error_code); |
| 681 } | 692 } |
| 682 | 693 |
| 683 void BluetoothAdapterMac::DidDisconnectPeripheral(CBPeripheral* peripheral, | 694 void BluetoothAdapterMac::DidDisconnectPeripheral(CBPeripheral* peripheral, |
| 684 NSError* error) { | 695 NSError* error) { |
| 685 BluetoothLowEnergyDeviceMac* device_mac = | 696 BluetoothLowEnergyDeviceMac* device_mac = |
| 686 GetBluetoothLowEnergyDeviceMac(peripheral); | 697 GetBluetoothLowEnergyDeviceMac(peripheral); |
| 687 if (!device_mac) { | 698 if (!device_mac) { |
| 688 [low_energy_central_manager_ cancelPeripheralConnection:peripheral]; | 699 [low_energy_central_manager_ cancelPeripheralConnection:peripheral]; |
| 689 return; | 700 return; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 717 // Collision, two identifiers map to the same hash address. With a 48 bit | 728 // Collision, two identifiers map to the same hash address. With a 48 bit |
| 718 // hash the probability of this occuring with 10,000 devices | 729 // hash the probability of this occuring with 10,000 devices |
| 719 // simultaneously present is 1e-6 (see | 730 // simultaneously present is 1e-6 (see |
| 720 // https://en.wikipedia.org/wiki/Birthday_problem#Probability_table). We | 731 // https://en.wikipedia.org/wiki/Birthday_problem#Probability_table). We |
| 721 // ignore the second device by returning. | 732 // ignore the second device by returning. |
| 722 return true; | 733 return true; |
| 723 } | 734 } |
| 724 return false; | 735 return false; |
| 725 } | 736 } |
| 726 | 737 |
| 727 DEVICE_BLUETOOTH_EXPORT std::ostream& operator<<(std::ostream& out, | |
| 728 NSError* error) { | |
| 729 if (!error) { | |
| 730 return out << "no error"; | |
| 731 } | |
| 732 return out << "error domain: " << base::SysNSStringToUTF8(error.domain) | |
| 733 << ", code: " << std::to_string(error.code) << ", description: " | |
| 734 << base::SysNSStringToUTF8(error.localizedDescription); | |
| 735 } | |
| 736 | |
| 737 } // namespace device | 738 } // namespace device |
| OLD | NEW |