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

Unified Diff: device/bluetooth/adapter.cc

Issue 2448713002: bluetooth: Add Device connection logic and accompanying user interface. (Closed)
Patch Set: Created 4 years, 2 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/adapter.cc
diff --git a/device/bluetooth/adapter.cc b/device/bluetooth/adapter.cc
index 639e7a2fd501b984dcbe1fc63486200e7523ef1c..afb37b0d03407414fe9d4f3e9454141a32fb050c 100644
--- a/device/bluetooth/adapter.cc
+++ b/device/bluetooth/adapter.cc
@@ -34,12 +34,20 @@ void Adapter::GetInfo(const GetInfoCallback& callback) {
callback.Run(std::move(adapter_info));
}
-void Adapter::GetDevice(const std::string& address,
- const GetDeviceCallback& callback) {
- mojom::DevicePtr device_ptr;
- mojo::MakeStrongBinding(base::MakeUnique<Device>(address, adapter_),
- mojo::GetProxy(&device_ptr));
- callback.Run(std::move(device_ptr));
+void Adapter::ConnectToDevice(const std::string& address,
+ const ConnectToDeviceCallback& callback) {
+ device::BluetoothDevice* device = adapter_->GetDevice(address);
+ if (device) {
ortuno 2016/10/25 10:42:09 nit: To avoid indenting lines: if (!condition) {
mbrunson 2016/10/25 20:03:03 Done.
+ device->CreateGattConnection(
+ base::Bind(&Adapter::OnGattConnected, weak_ptr_factory_.GetWeakPtr(),
+ callback),
+ base::Bind(&Adapter::OnConnectError, weak_ptr_factory_.GetWeakPtr(),
+ callback));
+ } else {
+ mojom::ConnectErrorPtr error = mojom::ConnectError::New();
+ error->code = mojom::ConnectError::Code::ERROR_FAILED;
+ callback.Run(std::move(error), nullptr /* Device */);
+ }
}
void Adapter::GetDevices(const GetDevicesCallback& callback) {
@@ -82,4 +90,21 @@ void Adapter::DeviceChanged(device::BluetoothAdapter* adapter,
}
}
+void Adapter::OnGattConnected(
+ const ConnectToDeviceCallback& callback,
+ std::unique_ptr<device::BluetoothGattConnection> connection) {
+ mojom::DevicePtr device_ptr;
+ mojo::MakeStrongBinding(
+ base::MakeUnique<Device>(adapter_, std::move(connection)),
+ mojo::GetProxy(&device_ptr));
+ callback.Run(nullptr /* ConnectError */, std::move(device_ptr));
+}
+
+void Adapter::OnConnectError(
+ const ConnectToDeviceCallback& callback,
+ device::BluetoothDevice::ConnectErrorCode error_code) {
+ mojom::ConnectErrorPtr error = mojom::ConnectError::New();
+ error->code = static_cast<mojom::ConnectError::Code>(error_code);
ortuno 2016/10/25 10:42:09 Hmmm this is dangerous. Someone could add a new er
mbrunson 2016/10/25 20:03:03 Done.
+ callback.Run(std::move(error), nullptr /* Device */);
+}
} // namespace bluetooth

Powered by Google App Engine
This is Rietveld 408576698