aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2024-04-08 17:26:49 -0400
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2024-04-10 09:56:47 -0400
commita78c839b5d8546e660c4a382ab1c5c1d3a2a16a6 (patch)
tree00d15b287428cf009a920e49a234c98fbd9bf934
parent991ec8e2e088dbfeb954b6fe003e4188d516ba5a (diff)
hog-lib: Make use of bt_uhid_replay
This makes use of bt_uhid_replay to replay the GET/SET_REPORT messages recorded during the first time the device is created.
-rw-r--r--profiles/input/hog-lib.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/profiles/input/hog-lib.c b/profiles/input/hog-lib.c
index 8071e1364b..0291adb6eb 100644
--- a/profiles/input/hog-lib.c
+++ b/profiles/input/hog-lib.c
@@ -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;
}