*
******************************************************************************/
-
+#include <assert.h>
#include <ctype.h>
+#include <errno.h>
#include <fcntl.h>
-#include <sys/poll.h>
+#include <linux/uhid.h>
#include <pthread.h>
#include <stdio.h>
#include <string.h>
#include <stdint.h>
-#include <errno.h>
-#include <unistd.h>
-#include <linux/uhid.h>
+#include <sys/poll.h>
#include <unistd.h>
+
+#include "btcore/include/bdaddr.h"
#include "osi/include/osi.h"
-#include "btif_hh.h"
#include "bta_api.h"
#include "bta_hh_api.h"
-#include "btif_util.h"
#include "bta_hh_co.h"
-#include "btcore/include/bdaddr.h"
+#include "btif_hh.h"
+#include "btif_util.h"
const char *dev_path = "/dev/uhid";
static int uhid_write(int fd, const struct uhid_event *ev)
{
ssize_t ret;
-
OSI_NO_INTR(ret = write(fd, ev, sizeof(*ev)));
+
if (ret < 0){
int rtn = -errno;
APPL_TRACE_ERROR("%s: Cannot write to uhid:%s",
}
/* Internal function to parse the events received from UHID driver*/
-static int uhid_event(btif_hh_device_t *p_dev)
+static int uhid_read_event(btif_hh_device_t *p_dev)
{
+ assert(p_dev);
+
struct uhid_event ev;
- ssize_t ret;
memset(&ev, 0, sizeof(ev));
- if(!p_dev)
- {
- APPL_TRACE_ERROR("%s: Device not found",__func__)
- return -1;
- }
- ret = read(p_dev->fd, &ev, sizeof(ev));
+
+ ssize_t ret;
+ OSI_NO_INTR(ret = read(p_dev->fd, &ev, sizeof(ev)));
+
if (ret == 0) {
APPL_TRACE_ERROR("%s: Read HUP on uhid-cdev %s", __func__,
strerror(errno));
}
if (pfds[0].revents & POLLIN) {
APPL_TRACE_DEBUG("%s: POLLIN", __func__);
- ret = uhid_event(p_dev);
- if (ret != -EINTR && ret != 0)
+ ret = uhid_read_event(p_dev);
+ if (ret != 0)
break;
}
}
if ((p_dev->fd >= 0) && p_dev->ready_for_data) {
bta_hh_co_write(p_dev->fd, p_rpt, len);
}else {
- APPL_TRACE_WARNING("%s: Error: fd = %d, ready %d, len = %d", __func__, p_dev->fd,
+ APPL_TRACE_WARNING("%s: Error: fd = %d, ready %d, len = %d", __func__, p_dev->fd,
p_dev->ready_for_data, len);
}
}