2024-04-08 21:43:09

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: [PATCH BlueZ v1 2/3] hog-lib: Make use of bt_uhid_replay

From: Luiz Augusto von Dentz <[email protected]>

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(-)

diff --git a/profiles/input/hog-lib.c b/profiles/input/hog-lib.c
index 8071e1364b10..0291adb6eb23 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;
}

--
2.44.0