From: Claudio Takahasi <claudio.takahasi@xxxxxxxxxxxxx> bCountryCode is a 8-bits integer identifying hardware target country. The order of the characteristic declarations may be different on each implementation. Since GATT/ATT requests need to be serialized, HID information will be returned before report map characteristic value. --- profiles/input/hog_device.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/profiles/input/hog_device.c b/profiles/input/hog_device.c index 778a367..7e6c4b1 100644 --- a/profiles/input/hog_device.c +++ b/profiles/input/hog_device.c @@ -292,7 +292,7 @@ static void report_map_read_cb(guint8 status, const guint8 *pdu, guint16 plen, ev.u.create.vendor = vendor; ev.u.create.product = product; ev.u.create.version = version; - ev.u.create.country = 0; /* get this info from the right place */ + ev.u.create.country = hogdev->bcountrycode; ev.u.create.bus = BUS_BLUETOOTH; ev.u.create.rd_data = value; ev.u.create.rd_size = vlen; @@ -334,6 +334,7 @@ static void char_discovered_cb(GSList *chars, guint8 status, gpointer user_data) bt_uuid_t report_uuid, report_map_uuid, info_uuid; struct report *report; GSList *l; + uint16_t map_handle = 0, info_handle = 0; if (status != 0) { const char *str = att_ecode2str(status); @@ -365,12 +366,18 @@ static void char_discovered_cb(GSList *chars, guint8 status, gpointer user_data) report); discover_descriptor(hogdev->attrib, chr, next, report); } else if (bt_uuid_cmp(&uuid, &report_map_uuid) == 0) - gatt_read_char(hogdev->attrib, chr->value_handle, 0, - report_map_read_cb, hogdev); + map_handle = chr->value_handle; else if (bt_uuid_cmp(&uuid, &info_uuid) == 0) - gatt_read_char(hogdev->attrib, chr->value_handle, 0, - info_read_cb, hogdev); + info_handle = chr->value_handle; } + + if (info_handle) + gatt_read_char(hogdev->attrib, info_handle, 0, + info_read_cb, hogdev); + + if (map_handle) + gatt_read_char(hogdev->attrib, map_handle, 0, + report_map_read_cb, hogdev); } static void output_written_cb(guint8 status, const guint8 *pdu, -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html