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",
/* required for android.os.ParcelUuid, and android.os.ParcelFileDescriptor */
"frameworks/base/core/java",
+ "system/bt/binder",
],
},
include_dirs: [
package android.bluetooth;
-parcelable BluetoothDevice;
+parcelable BluetoothDevice cpp_header "android/bluetooth/bluetooth_device.h";
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();
package android.bluetooth;
+import android.bluetooth.BluetoothDevice;
import android.os.ParcelUuid;
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);
}
--- /dev/null
+//
+// 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
--- /dev/null
+//
+// 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
using android::OK;
using android::Parcel;
using android::status_t;
-using bluetooth::Uuid;
+using ::bluetooth::Uuid;
namespace android {
namespace os {
// 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