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

Unified Diff: device/bluetooth/bluetooth_device_android.h

Issue 1215303006: bluetooth: android: Initial BluetoothDeviceAndroid implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bta-discovery-
Patch Set: 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_device_android.h
diff --git a/device/bluetooth/bluetooth_low_energy_device_mac.h b/device/bluetooth/bluetooth_device_android.h
similarity index 53%
copy from device/bluetooth/bluetooth_low_energy_device_mac.h
copy to device/bluetooth/bluetooth_device_android.h
index 5fa43355c83eb3967560df43b9edb3a41d1e7e13..dd323f3436111634dd5ba88fd161d05d6ecf1ab0 100644
--- a/device/bluetooth/bluetooth_low_energy_device_mac.h
+++ b/device/bluetooth/bluetooth_device_android.h
@@ -2,37 +2,43 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef DEVICE_BLUETOOTH_BLUETOOTH_LOW_ENERGY_DEVICE_MAC_H_
-#define DEVICE_BLUETOOTH_BLUETOOTH_LOW_ENERGY_DEVICE_MAC_H_
+#ifndef DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_ANDROID_H_
+#define DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_ANDROID_H_
-#if defined(OS_IOS)
-#import <CoreBluetooth/CoreBluetooth.h>
-#else
-#import <IOBluetooth/IOBluetooth.h>
-#endif
-
-#include "base/mac/scoped_nsobject.h"
-#include "base/mac/sdk_forward_declarations.h"
+#include "base/android/jni_android.h"
+#include "base/memory/weak_ptr.h"
#include "device/bluetooth/bluetooth_device.h"
namespace device {
-class BluetoothLowEnergyDiscoverManagerMac;
-
-class BluetoothLowEnergyDeviceMac : public BluetoothDevice {
+// BluetoothDeviceAndroid along with the Java class
+// org.chromium.device.bluetooth.BluetoothDevice implement BluetoothDevice.
+class DEVICE_BLUETOOTH_EXPORT BluetoothDeviceAndroid final
+ : public BluetoothDevice {
public:
- BluetoothLowEnergyDeviceMac(CBPeripheral* peripheral,
- NSDictionary* advertisementData,
- int rssi);
- ~BluetoothLowEnergyDeviceMac() override;
-
- int GetRSSI() const;
-
- // BluetoothDevice overrides.
- std::string GetIdentifier() const override;
+ // Create a BluetoothDeviceAndroid instance and associated Java
+ // ChromeBluetoothDevice using the provided |java_bluetooth_device_wrapper|.
+ //
+ // The ChromeBluetoothDevice instance will hold a Java reference
+ // to |java_bluetooth_device_wrapper|.
+ //
+ // TODO(scheib): Return a scoped_ptr<>, but then adapter will need to handle
+ // this correctly. http://crbug.com/506416
+ static BluetoothDeviceAndroid* Create(jobject java_bluetooth_device_wrapper);
+
+ ~BluetoothDeviceAndroid() override;
+
+ // Register C++ methods exposed to Java using JNI.
+ static bool RegisterJNI(JNIEnv* env);
+
+ // Updates cached copy of advertised UUIDs discovered during a scan.
+ // Returns true if new UUIDs differed from cached values.
+ bool UpdateAdvertisedUUIDs(jobject advertised_uuids);
+
+ // BluetoothDevice:
uint32 GetBluetoothClass() const override;
std::string GetAddress() const override;
- BluetoothDevice::VendorIDSource GetVendorIDSource() const override;
+ VendorIDSource GetVendorIDSource() const override;
uint16 GetVendorID() const override;
uint16 GetProductID() const override;
uint16 GetDeviceID() const override;
@@ -40,14 +46,14 @@ class BluetoothLowEnergyDeviceMac : public BluetoothDevice {
bool IsConnected() const override;
bool IsConnectable() const override;
bool IsConnecting() const override;
- BluetoothDevice::UUIDList GetUUIDs() const override;
+ UUIDList GetUUIDs() const override;
int16 GetInquiryRSSI() const override;
int16 GetInquiryTxPower() const override;
bool ExpectingPinCode() const override;
bool ExpectingPasskey() const override;
bool ExpectingConfirmation() const override;
void GetConnectionInfo(const ConnectionInfoCallback& callback) override;
- void Connect(PairingDelegate* pairing_delegate,
+ void Connect(device::BluetoothDevice::PairingDelegate* pairing_delegate,
const base::Closure& callback,
const ConnectErrorCallback& error_callback) override;
void SetPinCode(const std::string& pincode) override;
@@ -59,7 +65,7 @@ class BluetoothLowEnergyDeviceMac : public BluetoothDevice {
const ErrorCallback& error_callback) override;
void Forget(const ErrorCallback& error_callback) override;
void ConnectToService(
- const BluetoothUUID& uuid,
+ const device::BluetoothUUID& uuid,
const ConnectToServiceCallback& callback,
const ConnectToServiceErrorCallback& error_callback) override;
void ConnectToServiceInsecurely(
@@ -71,31 +77,17 @@ class BluetoothLowEnergyDeviceMac : public BluetoothDevice {
const ConnectErrorCallback& error_callback) override;
protected:
- // BluetoothDevice override.
- std::string GetDeviceName() const override;
+ BluetoothDeviceAndroid();
- // Updates information about the device.
- virtual void Update(CBPeripheral* peripheral,
- NSDictionary* advertisementData,
- int rssi);
-
- static std::string GetPeripheralIdentifier(CBPeripheral* peripheral);
-
- private:
- friend class BluetoothAdapterMac;
-
- // CoreBluetooth data structure.
- base::scoped_nsobject<CBPeripheral> peripheral_;
-
- // RSSI value.
- int rssi_;
+ // BluetoothDevice:
+ std::string GetDeviceName() const override;
- // Whether the device is connectable.
- bool connectable_;
+ // Java object org.chromium.device.bluetooth.ChromeBluetoothDevice.
+ base::android::ScopedJavaGlobalRef<jobject> j_device_;
- DISALLOW_COPY_AND_ASSIGN(BluetoothLowEnergyDeviceMac);
+ DISALLOW_COPY_AND_ASSIGN(BluetoothDeviceAndroid);
};
} // namespace device
-#endif // DEVICE_BLUETOOTH_BLUETOOTH_LOW_ENERGY_DEVICE_MAC_H_
+#endif // DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_ANDROID_H_

Powered by Google App Engine
This is Rietveld 408576698