All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] android/hidhost: Handle uhid output and feature events
@ 2013-11-11 12:15 Ravi kumar Veeramally
  2013-11-11 12:15 ` [PATCH 2/3] android/hidhost: Remove deprecated idle opcode from ipc document Ravi kumar Veeramally
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Ravi kumar Veeramally @ 2013-11-11 12:15 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Ravi kumar Veeramally

Data read on uhid events output and feature has to be send through
SET_REPORT request to HID device.
---
 android/hidhost.c | 37 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 36 insertions(+), 1 deletion(-)

diff --git a/android/hidhost.c b/android/hidhost.c
index 683938f..816fe3e 100644
--- a/android/hidhost.c
+++ b/android/hidhost.c
@@ -155,7 +155,42 @@ static void hid_device_free(struct hid_device *dev)
 
 static void handle_uhid_event(struct hid_device *dev, struct uhid_event *ev)
 {
-	DBG("UHID_OUTPUT UHID_FEATURE unsupported");
+	int fd;
+	uint8_t *req = NULL;
+	uint8_t req_size = 0;
+
+	if (!(dev->ctrl_io))
+		return;
+
+	switch (ev->type) {
+	case UHID_OUTPUT:
+		req_size = 1 + ev->u.output.size;
+		req = g_try_malloc0(req_size);
+		if (!req)
+			return;
+
+		req[0] = HID_MSG_SET_REPORT | HID_DATA_TYPE_OUTPUT;
+		memcpy(req + 1, ev->u.output.data, ev->u.output.size);
+		break;
+
+	case UHID_FEATURE:
+		req_size = sizeof(struct uhid_feature_req);
+		req = g_try_malloc0(req_size);
+		if (!req)
+			return;
+
+		req[0] = HID_MSG_SET_REPORT | HID_DATA_TYPE_FEATURE;
+		memcpy(req + 1, (ev + sizeof(ev->type)), req_size - 1);
+		break;
+	}
+
+	fd = g_io_channel_unix_get_fd(dev->ctrl_io);
+
+	if (write(fd, req, req_size) < 0)
+		error("error writing hid_set_report: %s (%d)",
+						strerror(errno), errno);
+
+	g_free(req);
 }
 
 static gboolean uhid_event_cb(GIOChannel *io, GIOCondition cond,
-- 
1.8.3.2


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2013-11-12 15:57 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-11 12:15 [PATCH 1/3] android/hidhost: Handle uhid output and feature events Ravi kumar Veeramally
2013-11-11 12:15 ` [PATCH 2/3] android/hidhost: Remove deprecated idle opcode from ipc document Ravi kumar Veeramally
2013-11-11 23:05   ` Marcel Holtmann
2013-11-12  9:29     ` Ravi Kumar Veeramally
2013-11-12 14:00       ` Ravi Kumar Veeramally
2013-11-12 15:57       ` Marcel Holtmann
2013-11-11 12:15 ` [PATCH 3/3] android/hidhost: Set info request from HAL is not supported Ravi kumar Veeramally
2013-11-12 10:11 ` [PATCH 1/3] android/hidhost: Handle uhid output and feature events Ravi Kumar Veeramally

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.