| 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
|
| index 4c6bf2e5ccade407da7faf013c87416e285d4633..ceab7924a1246b5fbb9442b4077c07d386ff474a 100644
|
| --- a/device/bluetooth/bluetooth_low_energy_discovery_manager_mac.mm
|
| +++ b/device/bluetooth/bluetooth_low_energy_discovery_manager_mac.mm
|
| @@ -11,74 +11,8 @@
|
| #include "device/bluetooth/bluetooth_adapter_mac.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> {
|
| - BluetoothLowEnergyDiscoveryManagerMac* manager_;
|
| - scoped_ptr<BluetoothLowEnergyDiscoveryManagerMacDelegate> delegate_;
|
| -}
|
| -
|
| -- (id)initWithManager:(BluetoothLowEnergyDiscoveryManagerMac*)manager;
|
| -
|
| -@end
|
| -
|
| -@implementation BluetoothLowEnergyDiscoveryManagerMacBridge
|
| -
|
| -- (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() {
|
| }
|
| @@ -105,7 +39,8 @@ void BluetoothLowEnergyDiscoveryManagerMac::TryStartDiscovery() {
|
| }
|
|
|
| // Can only start if the bluetooth power is turned on.
|
| - if ([manager_ state] != CBCentralManagerStatePoweredOn) {
|
| + if (!central_manager_ ||
|
| + [central_manager_ state] != CBCentralManagerStatePoweredOn) {
|
| return;
|
| }
|
|
|
| @@ -122,17 +57,22 @@ void BluetoothLowEnergyDiscoveryManagerMac::TryStartDiscovery() {
|
| }
|
| };
|
|
|
| - [manager_ scanForPeripheralsWithServices:services options:nil];
|
| + [central_manager_ scanForPeripheralsWithServices:services options:nil];
|
| pending_ = false;
|
| }
|
|
|
| void BluetoothLowEnergyDiscoveryManagerMac::StopDiscovery() {
|
| if (discovering_ && !pending_) {
|
| - [manager_ stopScan];
|
| + [central_manager_ stopScan];
|
| }
|
| discovering_ = false;
|
| }
|
|
|
| +void BluetoothLowEnergyDiscoveryManagerMac::SetCentralManager(
|
| + CBCentralManager* central_manager) {
|
| + central_manager_ = central_manager;
|
| +}
|
| +
|
| void BluetoothLowEnergyDiscoveryManagerMac::DiscoveredPeripheral(
|
| CBPeripheral* peripheral,
|
| NSDictionary* advertisementData,
|
| @@ -149,17 +89,7 @@ BluetoothLowEnergyDiscoveryManagerMac::BluetoothLowEnergyDiscoveryManagerMac(
|
| Observer* observer)
|
| : observer_(observer) {
|
| DCHECK(BluetoothAdapterMac::IsLowEnergyAvailable());
|
| - bridge_.reset([[BluetoothLowEnergyDiscoveryManagerMacBridge alloc]
|
| - initWithManager:this]);
|
| - Class aClass = NSClassFromString(@"CBCentralManager");
|
| - manager_.reset([[aClass alloc] initWithDelegate:bridge_
|
| - queue:dispatch_get_main_queue()]);
|
| discovering_ = false;
|
| }
|
|
|
| -void BluetoothLowEnergyDiscoveryManagerMac::SetManagerForTesting(
|
| - CBCentralManager* manager) {
|
| - DCHECK(BluetoothAdapterMac::IsLowEnergyAvailable());
|
| - [manager performSelector:@selector(setDelegate:) withObject:bridge_];
|
| - manager_.reset(manager);
|
| -}
|
| +} // namespace device
|
|
|