OSDN Git Service

Move connectSocket into IBluetoothSocketManager (1/3)
authorJakub Pawlowski <jpawlowski@google.com>
Mon, 6 Nov 2017 18:04:53 +0000 (10:04 -0800)
committerJakub Pawlowski <jpawlowski@google.com>
Fri, 10 Nov 2017 21:40:09 +0000 (21:40 +0000)
Bug: 68359837
Test: none
Change-Id: Ia2825e43036dcd50408987118e41c794f7b38d34
Merged-In: Ia2825e43036dcd50408987118e41c794f7b38d34

binder/Android.bp
binder/android/bluetooth/BluetoothDevice.aidl
binder/android/bluetooth/IBluetooth.aidl
binder/android/bluetooth/IBluetoothSocketManager.aidl
binder/android/bluetooth/bluetooth_device.cc [new file with mode: 0644]
binder/android/bluetooth/bluetooth_device.h [new file with mode: 0644]
binder/android/os/parcel_uuid.cc
binder/android/os/parcel_uuid.h

index da7c5ac..e15977c 100644 (file)
@@ -1,6 +1,7 @@
 cc_library_shared {
     name: "libbluetooth-binder",
     srcs: [
+        "android/bluetooth/bluetooth_device.cc",
         "android/bluetooth/IBluetoothSocketManager.aidl",
         "android/os/parcel_file_descriptor.cc",
         "android/os/parcel_uuid.cc",
@@ -44,6 +45,7 @@ cc_library_shared {
 
              /* required for android.os.ParcelUuid, and android.os.ParcelFileDescriptor */
             "frameworks/base/core/java",
+            "system/bt/binder",
         ],
     },
     include_dirs: [
index 49d1803..b9b0589 100644 (file)
@@ -16,4 +16,4 @@
 
 package android.bluetooth;
 
-parcelable BluetoothDevice;
+parcelable BluetoothDevice cpp_header "android/bluetooth/bluetooth_device.h";
index 5801eca..b446ff3 100644 (file)
@@ -99,7 +99,6 @@ interface IBluetooth
     void unregisterCallback(in IBluetoothCallback callback);
 
     // For Socket
-    ParcelFileDescriptor connectSocket(in BluetoothDevice device, int type, in ParcelUuid uuid, int port, int flag);
     IBluetoothSocketManager getSocketManager();
 
     boolean factoryReset();
index 4bd7915..d7019c3 100644 (file)
@@ -16,6 +16,7 @@
 
 package android.bluetooth;
 
+import android.bluetooth.BluetoothDevice;
 import android.os.ParcelUuid;
 import android.os.ParcelFileDescriptor;
 
@@ -26,5 +27,6 @@ import android.os.ParcelFileDescriptor;
  */
 interface IBluetoothSocketManager
 {
+    @nullable ParcelFileDescriptor connectSocket(in BluetoothDevice device, int type, in @nullable ParcelUuid uuid, int port, int flag);
     @nullable ParcelFileDescriptor createSocketChannel(int type, in @nullable String serviceName, in @nullable ParcelUuid uuid, int port, int flag);
 }
diff --git a/binder/android/bluetooth/bluetooth_device.cc b/binder/android/bluetooth/bluetooth_device.cc
new file mode 100644 (file)
index 0000000..e291ba2
--- /dev/null
@@ -0,0 +1,46 @@
+//
+//  Copyright 2017, The Android Open Source Project
+//
+//  Licensed under the Apache License, Version 2.0 (the "License");
+//  you may not use this file except in compliance with the License.
+//  You may obtain a copy of the License at:
+//
+//  http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+
+#include "android/bluetooth/bluetooth_device.h"
+
+#include <utils/String16.h>
+
+using android::OK;
+using android::Parcel;
+using android::status_t;
+using android::String16;
+using android::String8;
+
+namespace android {
+namespace bluetooth {
+
+status_t BluetoothDevice::writeToParcel(Parcel* parcel) const {
+  status_t status = parcel->writeString16(String16(address.ToString().c_str()));
+  return status;
+}
+
+status_t BluetoothDevice::readFromParcel(const Parcel* parcel) {
+  String16 tmp;
+
+  status_t status = parcel->readString16(&tmp);
+  if (status != OK) return status;
+
+  RawAddress::FromString(String8(tmp).string(), address);
+  return OK;
+}
+
+}  // namespace bluetooth
+}  // namespace android
\ No newline at end of file
diff --git a/binder/android/bluetooth/bluetooth_device.h b/binder/android/bluetooth/bluetooth_device.h
new file mode 100644 (file)
index 0000000..01bc00a
--- /dev/null
@@ -0,0 +1,50 @@
+//
+//  Copyright 2017, The Android Open Source Project
+//
+//  Licensed under the Apache License, Version 2.0 (the "License");
+//  you may not use this file except in compliance with the License.
+//  You may obtain a copy of the License at:
+//
+//  http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+
+#pragma once
+
+#include <binder/Parcel.h>
+#include <binder/Parcelable.h>
+
+#include <raw_address.h>
+
+namespace android {
+namespace bluetooth {
+
+class BluetoothDevice : public android::Parcelable {
+ public:
+  BluetoothDevice() = default;
+  ~BluetoothDevice() = default;
+
+  // Write |this| parcelable to the given |parcel|.  Keep in mind that
+  // implementations of writeToParcel must be manually kept in sync
+  // with readFromParcel and the Java equivalent versions of these methods.
+  //
+  // Returns android::OK on success and an appropriate error otherwise.
+  android::status_t writeToParcel(android::Parcel* parcel) const override;
+
+  // Read data from the given |parcel| into |this|.  After readFromParcel
+  // completes, |this| should have equivalent state to the object that
+  // wrote itself to the parcel.
+  //
+  // Returns android::OK on success and an appropriate error otherwise.
+  android::status_t readFromParcel(const android::Parcel* parcel) override;
+
+  RawAddress address;
+};
+
+}  // namespace bluetooth
+}  // namespace android
index 221c294..ea97104 100644 (file)
@@ -19,7 +19,7 @@
 using android::OK;
 using android::Parcel;
 using android::status_t;
-using bluetooth::Uuid;
+using ::bluetooth::Uuid;
 
 namespace android {
 namespace os {
index f050acf..76bf9c4 100644 (file)
@@ -42,7 +42,7 @@ class ParcelUuid : public android::Parcelable {
   // Returns android::OK on success and an appropriate error otherwise.
   android::status_t readFromParcel(const android::Parcel* parcel) override;
 
-  bluetooth::Uuid uuid;
+  ::bluetooth::Uuid uuid;
 };
 
 }  // namespace os