diff --git a/android/hog.c b/android/hog.c
index 85a6982..09a16d5 100644
--- a/android/hog.c
+++ b/android/hog.c
data, size, NULL, NULL);
}
+static void get_report(struct uhid_event *ev, void *user_data)
+{
+ struct bt_hog *hog = user_data;
+ struct report *report;
+ GSList *l;
+ struct uhid_event rsp;
+ int err;
+
+ memset(&rsp, 0, sizeof(rsp));
+ rsp.type = UHID_FEATURE_ANSWER;
+ rsp.u.feature_answer.id = ev->u.feature.id;
+
+ l = g_slist_find_custom(hog->reports,
+ GUINT_TO_POINTER(ev->u.feature.rtype),
+ report_type_cmp);
+ if (!l) {
+ rsp.u.feature_answer.err = ENOTSUP;
+ goto done;
+ }
+
+ report = l->data;
+
+ if (!report->value) {
+ rsp.u.feature_answer.err = EIO;
+ goto done;
+ }
+
+ rsp.u.feature_answer.size = report->len;
+ memcpy(rsp.u.feature_answer.data, report->value, report->len);
+
+done:
+ err = bt_uhid_send(hog->uhid, &rsp);
+ if (err < 0)
+ error("bt_uhid_send: %s", strerror(-err));
+}
+
static bool get_descriptor_item_info(uint8_t *buf, ssize_t blen, ssize_t *len,
bool *is_long)
{
}
bt_uhid_register(hog->uhid, UHID_OUTPUT, forward_report, hog);
+ bt_uhid_register(hog->uhid, UHID_FEATURE, get_report, hog);
}
static void info_read_cb(guint8 status, const guint8 *pdu, guint16 plen,