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

Unified Diff: device/bluetooth/bluetooth_low_energy_central_manager_delegate.mm

Issue 1226133006: Move CBCentralManager from the Discovery Manager to Adapter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@adddevs
Patch Set: comment edit Created 5 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: device/bluetooth/bluetooth_low_energy_central_manager_delegate.mm
diff --git a/device/bluetooth/bluetooth_low_energy_central_manager_delegate.mm b/device/bluetooth/bluetooth_low_energy_central_manager_delegate.mm
new file mode 100644
index 0000000000000000000000000000000000000000..598e4b97bcf70a177ce756c6a909519117f2a7e4
--- /dev/null
+++ b/device/bluetooth/bluetooth_low_energy_central_manager_delegate.mm
@@ -0,0 +1,68 @@
+// 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_central_manager_delegate.h"
+
+#include "device/bluetooth/bluetooth_adapter_mac.h"
+#include "device/bluetooth/bluetooth_low_energy_discovery_manager_mac.h"
+
+namespace device {
+
+// This class exists to bridge between the Objective-C CBCentralManagerDelegate
+// class and our BluetoothLowEnergyDiscoveryManagerMac and BluetoothAdapterMac
+// classes.
+class BluetoothLowEnergyCentralManagerBridge {
+ public:
+ BluetoothLowEnergyCentralManagerBridge(
+ BluetoothLowEnergyDiscoveryManagerMac* discovery_manager,
+ BluetoothAdapterMac* adapter)
+ : discovery_manager_(discovery_manager), adapter_(adapter) {}
+
+ virtual ~BluetoothLowEnergyCentralManagerBridge() {}
+
+ virtual void DiscoveredPeripheral(CBPeripheral* peripheral,
+ NSDictionary* advertisementData,
+ int rssi) {
+ discovery_manager_->DiscoveredPeripheral(peripheral, advertisementData,
+ rssi);
+ }
+
+ virtual void UpdatedState() {
+ discovery_manager_->TryStartDiscovery();
+ adapter_->LowEnergyCentralManagerUpdatedState();
+ }
+
+ private:
+ BluetoothLowEnergyDiscoveryManagerMac* discovery_manager_;
+ BluetoothAdapterMac* adapter_;
+};
+
+} // namespace device
+
+@implementation BluetoothLowEnergyCentralManagerDelegate
+
+- (id)initWithDiscoveryManager:
+ (device::BluetoothLowEnergyDiscoveryManagerMac*)discovery_manager
+ andAdapter:(device::BluetoothAdapterMac*)adapter {
+ if ((self = [super init])) {
+ bridge_.reset(new device::BluetoothLowEnergyCentralManagerBridge(
+ discovery_manager, adapter));
+ }
+ return self;
+}
+
+- (void)centralManager:(CBCentralManager*)central
+ didDiscoverPeripheral:(CBPeripheral*)peripheral
+ advertisementData:(NSDictionary*)advertisementData
+ RSSI:(NSNumber*)RSSI {
+ // Notifies the discovery of a device.
+ bridge_->DiscoveredPeripheral(peripheral, advertisementData, [RSSI intValue]);
+}
+
+- (void)centralManagerDidUpdateState:(CBCentralManager*)central {
+ // Notifies when the powered state of the central manager changed.
+ bridge_->UpdatedState();
+}
+
+@end

Powered by Google App Engine
This is Rietveld 408576698