android/avrcp: Add passthrough handler for fast forward
Fast forward should be send via HAL not handled directly by uinput
otherwise Android media player might not interpret it correctly.
diff --git a/android/avrcp.c b/android/avrcp.c
index b65f35c..6e576d6 100644
--- a/android/avrcp.c
+++ b/android/avrcp.c
@@ -301,6 +301,27 @@
avrcp_device_remove(dev);
}
+static bool handle_fast_forward(struct avrcp *session, bool pressed,
+ void *user_data)
+{
+ struct hal_ev_avrcp_passthrough_cmd ev;
+
+ DBG("pressed %s", pressed ? "true" : "false");
+
+ ev.id = AVC_FAST_FORWARD;
+ ev.state = pressed;
+
+ ipc_send_notif(hal_ipc, HAL_SERVICE_ID_AVRCP,
+ HAL_EV_AVRCP_PASSTHROUGH_CMD, sizeof(ev), &ev);
+
+ return true;
+}
+
+static const struct avrcp_passthrough_handler passthrough_handlers[] = {
+ { AVC_FAST_FORWARD, handle_fast_forward },
+ { },
+};
+
static void connect_cb(GIOChannel *chan, GError *err, gpointer user_data)
{
struct avrcp_device *dev;
@@ -350,6 +371,8 @@
}
avrcp_set_destroy_cb(dev->session, disconnect_cb, dev);
+ avrcp_set_passthrough_handlers(dev->session, passthrough_handlers,
+ dev);
/* FIXME: get the real name of the device */
avrcp_init_uinput(dev->session, "bluetooth", address);