diff options
-rw-r--r-- | hcid/device.c | 15 | ||||
-rw-r--r-- | sdpd/sdpd.h | 1 | ||||
-rw-r--r-- | sdpd/service.c | 17 |
3 files changed, 21 insertions, 12 deletions
diff --git a/hcid/device.c b/hcid/device.c index 983071d0..c80f5875 100644 --- a/hcid/device.c +++ b/hcid/device.c @@ -45,6 +45,7 @@ #include "dbus-helper.h" #include "hcid.h" +#include "sdpd.h" #include "logging.h" #include "textfile.h" @@ -218,18 +219,8 @@ static void update_ext_inquiry_response(int dd, struct hci_dev *dev) memset(data, 0, sizeof(data)); - if (dev->ssp_mode > 0) { - int len; - - len = strlen((char *) dev->name); - if (len > 48) { - len = 48; - data[1] = 0x08; - } else - data[1] = 0x09; - data[0] = len + 1; - memcpy(data + 2, dev->name, len); - } + if (dev->ssp_mode > 0) + create_ext_inquiry_response((char *) dev->name, data); if (hci_write_ext_inquiry_response(dd, fec, data, 2000) < 0) error("Can't write extended inquiry response: %s (%d)", diff --git a/sdpd/sdpd.h b/sdpd/sdpd.h index ad7a2d4f..0a2bccf4 100644 --- a/sdpd/sdpd.h +++ b/sdpd/sdpd.h @@ -91,3 +91,4 @@ typedef void (*service_classes_callback_t) (const bdaddr_t *bdaddr, uint8_t valu uint8_t get_service_classes(const bdaddr_t *bdaddr); void set_service_classes_callback(service_classes_callback_t callback); +void create_ext_inquiry_response(const char *name, uint8_t *data); diff --git a/sdpd/service.c b/sdpd/service.c index 7f8296f4..bbc7fcc8 100644 --- a/sdpd/service.c +++ b/sdpd/service.c @@ -139,6 +139,23 @@ void set_service_classes_callback(service_classes_callback_t callback) service_classes_callback = callback; } +void create_ext_inquiry_response(const char *name, uint8_t *data) +{ + if (name) { + int len = strlen(name); + + if (len > 48) { + len = 48; + data[1] = 0x08; + } else + data[1] = 0x09; + + data[0] = len + 1; + + memcpy(data + 2, name, len); + } +} + void register_public_browse_group(void) { sdp_list_t *browselist; |