diff options
author | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2014-06-25 12:09:25 +0300 |
---|---|---|
committer | Szymon Janc <szymon.janc@tieto.com> | 2014-06-25 17:36:05 +0200 |
commit | ab063ec8c6770e5f16a2b5bf32c0700d147cf8a2 (patch) | |
tree | f7f9bed971691669faf10ee67608920dc12987e1 /android/hidhost.c | |
parent | 16e27fa445613f75085162d5e43d1357646c7f07 (diff) | |
download | bluez-ab063ec8c6770e5f16a2b5bf32c0700d147cf8a2.tar.gz |
android/hidhost: Add hid_device_new helper function
Diffstat (limited to 'android/hidhost.c')
-rw-r--r-- | android/hidhost.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/android/hidhost.c b/android/hidhost.c index fdbe885a5..0c0d69d0a 100644 --- a/android/hidhost.c +++ b/android/hidhost.c @@ -155,6 +155,18 @@ static void hid_device_remove(struct hid_device *dev) hid_device_free(dev); } +static struct hid_device *hid_device_new(const bdaddr_t *addr) +{ + struct hid_device *dev; + + dev = g_new0(struct hid_device, 1); + bacpy(&dev->dst, addr); + dev->state = HAL_HIDHOST_STATE_DISCONNECTED; + devices = g_slist_append(devices, dev); + + return dev; +} + static bool hex2buf(const uint8_t *hex, uint8_t *buf, int buf_size) { int i, j; @@ -771,9 +783,7 @@ static void hog_conn_cb(const bdaddr_t *addr, int err, void *attrib) } if (!dev) { - dev = g_new0(struct hid_device, 1); - bacpy(&dev->dst, addr); - devices = g_slist_append(devices, dev); + dev = hid_device_new(addr); bt_hid_notify_state(dev, HAL_HIDHOST_STATE_CONNECTING); } @@ -839,15 +849,11 @@ static void bt_hid_connect(const void *buf, uint16_t len) goto failed; } - dev = g_new0(struct hid_device, 1); - bacpy(&dev->dst, &dst); - dev->state = HAL_HIDHOST_STATE_DISCONNECTED; + dev = hid_device_new(&dst); ba2str(&dev->dst, addr); DBG("connecting to %s", addr); - devices = g_slist_append(devices, dev); - if (bt_is_device_le(&dst)) { if (!hog_connect(dev)) { status = HAL_STATUS_FAILED; @@ -1394,8 +1400,7 @@ static void connect_cb(GIOChannel *chan, GError *err, gpointer user_data) if (l) return; - dev = g_new0(struct hid_device, 1); - bacpy(&dev->dst, &dst); + dev = hid_device_new(&dst); dev->ctrl_io = g_io_channel_ref(chan); sdp_uuid16_create(&uuid, PNP_INFO_SVCLASS_ID); @@ -1406,8 +1411,6 @@ static void connect_cb(GIOChannel *chan, GError *err, gpointer user_data) return; } - devices = g_slist_append(devices, dev); - dev->ctrl_watch = g_io_add_watch(dev->ctrl_io, G_IO_HUP | G_IO_ERR | G_IO_NVAL, ctrl_watch_cb, dev); |