Index: device/bluetooth/bluetooth_low_energy_discovery_manager_mac.mm |
diff --git a/device/bluetooth/bluetooth_low_energy_discovery_manager_mac.mm b/device/bluetooth/bluetooth_low_energy_discovery_manager_mac.mm |
deleted file mode 100644 |
index 1d7e409c81cd864d7935326d8b8f4583cd312587..0000000000000000000000000000000000000000 |
--- a/device/bluetooth/bluetooth_low_energy_discovery_manager_mac.mm |
+++ /dev/null |
@@ -1,180 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "device/bluetooth/bluetooth_low_energy_discovery_manager_mac.h" |
- |
-#include "base/mac/mac_util.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/strings/sys_string_conversions.h" |
-#include "device/bluetooth/bluetooth_low_energy_device_mac.h" |
- |
-using device::BluetoothLowEnergyDeviceMac; |
-using device::BluetoothLowEnergyDiscoveryManagerMac; |
-using device::BluetoothLowEnergyDiscoveryManagerMacDelegate; |
- |
-namespace device { |
- |
-// This class is a helper to call some protected methods in |
-// BluetoothLowEnergyDiscoveryManagerMac. |
-class BluetoothLowEnergyDiscoveryManagerMacDelegate { |
- public: |
- BluetoothLowEnergyDiscoveryManagerMacDelegate( |
- BluetoothLowEnergyDiscoveryManagerMac* manager) |
- : manager_(manager) {} |
- |
- virtual ~BluetoothLowEnergyDiscoveryManagerMacDelegate() {} |
- |
- virtual void DiscoveredPeripheral(CBPeripheral* peripheral, |
- NSDictionary* advertisementData, |
- int rssi) { |
- manager_->DiscoveredPeripheral(peripheral, advertisementData, rssi); |
- } |
- |
- virtual void TryStartDiscovery() { manager_->TryStartDiscovery(); } |
- |
- private: |
- BluetoothLowEnergyDiscoveryManagerMac* manager_; |
-}; |
- |
-} // namespace device |
- |
-// This class will serve as the Objective-C delegate of CBCentralManager. |
-@interface BluetoothLowEnergyDiscoveryManagerMacBridge |
- : NSObject<CBCentralManagerDelegate> |
- |
-- (id)initWithManager:(BluetoothLowEnergyDiscoveryManagerMac*)manager; |
- |
-@end |
- |
-@implementation BluetoothLowEnergyDiscoveryManagerMacBridge { |
- BluetoothLowEnergyDiscoveryManagerMac* manager_; |
- scoped_ptr<BluetoothLowEnergyDiscoveryManagerMacDelegate> delegate_; |
-} |
- |
-- (id)initWithManager:(BluetoothLowEnergyDiscoveryManagerMac*)manager { |
- if ((self = [super init])) { |
- manager_ = manager; |
- delegate_.reset( |
- new BluetoothLowEnergyDiscoveryManagerMacDelegate(manager_)); |
- } |
- return self; |
-} |
- |
-- (void)centralManager:(CBCentralManager*)central |
- didDiscoverPeripheral:(CBPeripheral*)peripheral |
- advertisementData:(NSDictionary*)advertisementData |
- RSSI:(NSNumber*)RSSI { |
- // Notifies the discovery of a device. |
- delegate_->DiscoveredPeripheral(peripheral, advertisementData, |
- [RSSI intValue]); |
-} |
- |
-- (void)centralManagerDidUpdateState:(CBCentralManager*)central { |
- // Notifies when the powered state of the central manager changed. |
- delegate_->TryStartDiscovery(); |
-} |
- |
-@end |
- |
-BluetoothLowEnergyDiscoveryManagerMac:: |
- ~BluetoothLowEnergyDiscoveryManagerMac() { |
- ClearDevices(); |
-} |
- |
-bool BluetoothLowEnergyDiscoveryManagerMac::IsDiscovering() const { |
- return discovering_; |
-} |
- |
-void BluetoothLowEnergyDiscoveryManagerMac::StartDiscovery( |
- BluetoothDevice::UUIDList services_uuids) { |
- ClearDevices(); |
- discovering_ = true; |
- pending_ = true; |
- services_uuids_ = services_uuids; |
- TryStartDiscovery(); |
-} |
- |
-void BluetoothLowEnergyDiscoveryManagerMac::TryStartDiscovery() { |
- if (!discovering_) { |
- return; |
- } |
- |
- if (!pending_) { |
- return; |
- } |
- |
- // Can only start if the bluetooth power is turned on. |
- if ([manager_ state] != CBCentralManagerStatePoweredOn) { |
- return; |
- } |
- |
- // Converts the services UUIDs to a CoreBluetooth data structure. |
- NSMutableArray* services = nil; |
- if (!services_uuids_.empty()) { |
- services = [NSMutableArray array]; |
- for (auto& service_uuid : services_uuids_) { |
- NSString* uuidString = |
- base::SysUTF8ToNSString(service_uuid.canonical_value().c_str()); |
- CBUUID* uuid = [CBUUID UUIDWithString:uuidString]; |
- [services addObject:uuid]; |
- } |
- } |
- |
- [manager_ scanForPeripheralsWithServices:services options:nil]; |
- pending_ = false; |
-} |
- |
-void BluetoothLowEnergyDiscoveryManagerMac::StopDiscovery() { |
- if (discovering_ && !pending_) { |
- [manager_ stopScan]; |
- } |
- discovering_ = false; |
-} |
- |
-void BluetoothLowEnergyDiscoveryManagerMac::DiscoveredPeripheral( |
- CBPeripheral* peripheral, |
- NSDictionary* advertisementData, |
- int rssi) { |
- // Look for existing device. |
- auto iter = devices_.find( |
- BluetoothLowEnergyDeviceMac::GetPeripheralIdentifier(peripheral)); |
- if (iter == devices_.end()) { |
- // A device has been added. |
- BluetoothLowEnergyDeviceMac* device = |
- new BluetoothLowEnergyDeviceMac(peripheral, advertisementData, rssi); |
- devices_.insert(devices_.begin(), |
- std::make_pair(device->GetIdentifier(), device)); |
- observer_->DeviceFound(device); |
- return; |
- } |
- |
- // A device has an update. |
- BluetoothLowEnergyDeviceMac* old_device = iter->second; |
- old_device->Update(peripheral, advertisementData, rssi); |
- observer_->DeviceUpdated(old_device); |
-} |
- |
-BluetoothLowEnergyDiscoveryManagerMac* |
-BluetoothLowEnergyDiscoveryManagerMac::Create(Observer* observer) { |
- return new BluetoothLowEnergyDiscoveryManagerMac(observer); |
-} |
- |
-BluetoothLowEnergyDiscoveryManagerMac::BluetoothLowEnergyDiscoveryManagerMac( |
- Observer* observer) |
- : observer_(observer) { |
- bridge_.reset([[BluetoothLowEnergyDiscoveryManagerMacBridge alloc] |
- initWithManager:this]); |
- // Since CoreBluetooth is only available on OS X 10.7 or later, we |
- // instantiate CBCentralManager only for OS X >= 10.7. |
- if (base::mac::IsOSLionOrLater()) { |
- manager_.reset( |
- [[CBCentralManager alloc] initWithDelegate:bridge_ |
- queue:dispatch_get_main_queue()]); |
- } |
- discovering_ = false; |
-} |
- |
-void BluetoothLowEnergyDiscoveryManagerMac::ClearDevices() { |
- STLDeleteValues(&devices_); |
-} |