diff options
| author | Takanori Watanabe <takawata@FreeBSD.org> | 2020-04-27 02:48:49 +0000 |
|---|---|---|
| committer | Takanori Watanabe <takawata@FreeBSD.org> | 2020-04-27 02:48:49 +0000 |
| commit | 84662d68e5ba32af80b45f846540d4495ed09658 (patch) | |
| tree | b00d84d4ed094df88771b7223c6972d12a9d525e /usr.sbin/bluetooth | |
| parent | 401475f50c6d1dd81cdbd994376d727d90cc979e (diff) | |
Notes
Diffstat (limited to 'usr.sbin/bluetooth')
| -rw-r--r-- | usr.sbin/bluetooth/hccontrol/node.c | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/usr.sbin/bluetooth/hccontrol/node.c b/usr.sbin/bluetooth/hccontrol/node.c index 0e779cf8e6340..ac41cbe7656b2 100644 --- a/usr.sbin/bluetooth/hccontrol/node.c +++ b/usr.sbin/bluetooth/hccontrol/node.c @@ -40,6 +40,7 @@ #include <stdlib.h> #include <string.h> #include <unistd.h> +#include <uuid.h> #include "hccontrol.h" /* Send Read_Node_State command to the node */ @@ -222,19 +223,19 @@ static int hci_dump_adv(uint8_t *data, int length) elemlen = *data; data++; length --; - elemlen--; if(length<=0) break; type = *data; data++; length --; elemlen--; - if(length<=0) + if(length <= 0) break; switch(type){ case 0x1: printf("NDflag:%x\n", *data); break; + case 0x8: case 0x9: printf("LocalName:"); for(i = 0; i < MIN(length,elemlen); i++){ @@ -242,6 +243,36 @@ static int hci_dump_adv(uint8_t *data, int length) } printf("\n"); break; + case 0x6: + case 0x7: + { + uuid_t uuid; + char *uuidstr; + uint32_t ustatus; + if (elemlen < 16) + break; + uuid.time_low = le32dec(data+12); + uuid.time_mid = le16dec(data+10); + uuid.time_hi_and_version = le16dec(data+8); + uuid.clock_seq_hi_and_reserved = data[7]; + uuid.clock_seq_low = data[6]; + for(i = 0; i < _UUID_NODE_LEN; i++){ + uuid.node[i] = data[5 - i]; + } + uuid_to_string(&uuid, &uuidstr, &ustatus); + + printf("ServiceUUID: %s\n", uuidstr); + break; + } + case 0xff: + if (elemlen < 2) + break; + printf("Vendor:%04x:", data[0]|data[1]<<8); + for (i = 2; i < MIN(length,elemlen); i++) { + printf("%02x ",data[i]); + } + printf("\n"); + break; default: printf("Type%d:", type); for(i=0; i < MIN(length,elemlen); i++){ |
