summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2006-09-20 16:18:31 +0000
committerMarcel Holtmann <marcel@holtmann.org>2006-09-20 16:18:31 +0000
commitabe03b24985eef4659c9d058c354f9b7df0a41f0 (patch)
tree7dad097cc2d42a59771adbf0a86abc7ecbc20190
parentffee48e182962699136a618c9fba5961718de0e1 (diff)
Set name field for extended inquiry response
-rw-r--r--hcid/device.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/hcid/device.c b/hcid/device.c
index f92fa0c7..71af2d59 100644
--- a/hcid/device.c
+++ b/hcid/device.c
@@ -438,10 +438,13 @@ int get_device_name(uint16_t dev_id, char *name, size_t size)
int set_device_name(uint16_t dev_id, const char *name)
{
+ struct hci_dev *dev;
int dd;
ASSERT_DEV_ID;
+ dev = &devices[dev_id];
+
dd = hci_open_dev(dev_id);
if (dd < 0) {
error("Can't open device hci%d",
@@ -457,6 +460,29 @@ int set_device_name(uint16_t dev_id, const char *name)
return -err;
}
+ if (dev->features[6] & LMP_EXT_INQ) {
+ uint8_t fec = 0, data[240];
+ int len;
+
+ memset(data, 0, sizeof(data));
+ len = strlen(name);
+ if (len > 48) {
+ len = 48;
+ data[1] = 0x08;
+ } else
+ data[1] = 0x09;
+ data[0] = len + 1;
+ memcpy(data + 2, name, len);
+
+ if (hci_write_ext_inquiry_response(dd, fec, data, 2000) < 0) {
+ int err = errno;
+ error("Can't write extended inquiry response for hci%d: %s (%d)",
+ dev_id, strerror(errno), errno);
+ hci_close_dev(dd);
+ return -err;
+ }
+ }
+
hci_close_dev(dd);
return 0;