@@ -856,12 +856,14 @@ static void set_report(struct uhid_event *ev, void *user_data)
--size;
}
+ if (hog->attrib == NULL) {
+ err = -ENOTCONN;
+ goto fail;
+ }
+
DBG("Sending report type %d ID %d to handle 0x%X", report->type,
report->id, report->value_handle);
- if (hog->attrib == NULL)
- return;
-
hog->setrep_att = gatt_write_char(hog->attrib,
report->value_handle,
data, size, set_report_cb,
@@ -1726,6 +1728,11 @@ bool bt_hog_attach(struct bt_hog *hog, void *gatt)
"handle 0x%04x", r->value_handle);
}
+ /* Attempt to replay get/set report messages since the driver might not
+ * be aware the device has been disconnected in the meantime.
+ */
+ bt_uhid_replay(hog->uhid);
+
return true;
}
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> This makes use of bt_uhid_replay to replay the GET/SET_REPORT messages recorded during the first time the device is created. --- profiles/input/hog-lib.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-)