mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2024-12-27 12:53:26 +08:00
android/hidhost: Add support for re-connecting HoG
Once HoG disconnects scanning should be turned on so that once the device starts advertising again it should connected automatically.
This commit is contained in:
parent
00e5127fba
commit
100249a124
@ -109,6 +109,7 @@ struct hid_device {
|
|||||||
struct bt_uhid *uhid;
|
struct bt_uhid *uhid;
|
||||||
uint8_t last_hid_msg;
|
uint8_t last_hid_msg;
|
||||||
struct bt_hog *hog;
|
struct bt_hog *hog;
|
||||||
|
guint reconnect_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int device_cmp(gconstpointer s, gconstpointer user_data)
|
static int device_cmp(gconstpointer s, gconstpointer user_data)
|
||||||
@ -123,6 +124,9 @@ static void hid_device_free(void *data)
|
|||||||
{
|
{
|
||||||
struct hid_device *dev = data;
|
struct hid_device *dev = data;
|
||||||
|
|
||||||
|
if (dev->reconnect_id > 0)
|
||||||
|
g_source_remove(dev->reconnect_id);
|
||||||
|
|
||||||
if (dev->ctrl_watch > 0)
|
if (dev->ctrl_watch > 0)
|
||||||
g_source_remove(dev->ctrl_watch);
|
g_source_remove(dev->ctrl_watch);
|
||||||
|
|
||||||
@ -732,6 +736,19 @@ fail:
|
|||||||
hid_device_remove(dev);
|
hid_device_remove(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean hog_reconnect(void *user_data)
|
||||||
|
{
|
||||||
|
struct hid_device *dev = user_data;
|
||||||
|
|
||||||
|
DBG("");
|
||||||
|
|
||||||
|
dev->reconnect_id = 0;
|
||||||
|
|
||||||
|
bt_gatt_connect_app(hog_app, &dev->dst);
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static void hog_conn_cb(const bdaddr_t *addr, int err, void *attrib)
|
static void hog_conn_cb(const bdaddr_t *addr, int err, void *attrib)
|
||||||
{
|
{
|
||||||
GSList *l;
|
GSList *l;
|
||||||
@ -743,6 +760,13 @@ static void hog_conn_cb(const bdaddr_t *addr, int err, void *attrib)
|
|||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
if (!dev)
|
if (!dev)
|
||||||
return;
|
return;
|
||||||
|
if (dev->hog && !dev->reconnect_id) {
|
||||||
|
bt_hid_notify_state(dev,
|
||||||
|
HAL_HIDHOST_STATE_DISCONNECTED);
|
||||||
|
bt_hog_detach(dev->hog);
|
||||||
|
dev->reconnect_id = g_idle_add(hog_reconnect, dev);
|
||||||
|
return;
|
||||||
|
}
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user