aboutsummaryrefslogtreecommitdiff
path: root/gd/rust/topshim/btav_sink/btav_sink_shim.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gd/rust/topshim/btav_sink/btav_sink_shim.cc')
-rw-r--r--gd/rust/topshim/btav_sink/btav_sink_shim.cc24
1 files changed, 22 insertions, 2 deletions
diff --git a/gd/rust/topshim/btav_sink/btav_sink_shim.cc b/gd/rust/topshim/btav_sink/btav_sink_shim.cc
index f0816df71..53d943a5c 100644
--- a/gd/rust/topshim/btav_sink/btav_sink_shim.cc
+++ b/gd/rust/topshim/btav_sink/btav_sink_shim.cc
@@ -19,6 +19,8 @@
#include <memory>
#include "include/hardware/bluetooth.h"
+#include "rust/cxx.h"
+#include "src/profiles/a2dp.rs.h"
#include "types/raw_address.h"
namespace bluetooth {
@@ -37,6 +39,12 @@ btav_sink_callbacks_t g_a2dp_sink_callbacks = {
audio_state_cb,
audio_config_cb,
};
+
+static RawAddress from_rust_address(const RustRawAddress& raddr) {
+ RawAddress addr;
+ addr.FromOctets(raddr.address.data());
+ return addr;
+}
} // namespace internal
A2dpSinkIntf::~A2dpSinkIntf() {
@@ -54,11 +62,23 @@ std::unique_ptr<A2dpSinkIntf> GetA2dpSinkProfile(const unsigned char* btif) {
return a2dp_sink;
}
-int A2dpSinkIntf::init() {
+int A2dpSinkIntf::init() const {
return intf_->init(&internal::g_a2dp_sink_callbacks, 1);
}
-void A2dpSinkIntf::cleanup() {
+int A2dpSinkIntf::connect(RustRawAddress bt_addr) const {
+ return intf_->connect(internal::from_rust_address(bt_addr));
+}
+
+int A2dpSinkIntf::disconnect(RustRawAddress bt_addr) const {
+ return intf_->disconnect(internal::from_rust_address(bt_addr));
+}
+
+int A2dpSinkIntf::set_active_device(RustRawAddress bt_addr) const {
+ return intf_->set_active_device(internal::from_rust_address(bt_addr));
+}
+
+void A2dpSinkIntf::cleanup() const {
// TODO: Implement.
}