apps/wireless/bluetooth/btsak: Adds a command to get the results of the GATT discovery.
This commit is contained in:
parent
6c14b97d70
commit
b2a6a6b5d4
@ -258,6 +258,8 @@ void btsak_cmd_gatt_discover_characteristic(FAR struct btsak_s *btsak,
|
||||
int argc, FAR char *argv[]);
|
||||
void btsak_cmd_gat_discover_descriptor(FAR struct btsak_s *btsak,
|
||||
int argc, FAR char *argv[]);
|
||||
void btsak_cmd_gat_discover_get(FAR struct btsak_s *btsak,
|
||||
int argc, FAR char *argv[]);
|
||||
void btsak_cmd_gatt_read(FAR struct btsak_s *btsak, int argc,
|
||||
FAR char *argv[]);
|
||||
void btsak_cmd_gatt_read_multiple(FAR struct btsak_s *btsak, int argc,
|
||||
|
@ -212,6 +212,68 @@ void btsak_cmd_gat_discover_descriptor(FAR struct btsak_s *btsak,
|
||||
btsak_cmd_discover_common(btsak, argc, argv, GATT_DISCOVER_DESC);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: btsak_cmd_gat_discover_get
|
||||
*
|
||||
* Description:
|
||||
* gatt [-h] dget [-h]
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void btsak_cmd_gat_discover_get(FAR struct btsak_s *btsak,
|
||||
int argc, FAR char *argv[])
|
||||
{
|
||||
FAR struct bt_discresonse_s *rsp;
|
||||
struct bt_discresonse_s result[8];
|
||||
struct btreq_s btreq;
|
||||
int sockfd;
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
/* Check for help command */
|
||||
|
||||
if (argc == 2 && strcmp(argv[1], "-h") == 0)
|
||||
{
|
||||
btsak_gatt_showusage(btsak->progname, argv[0], EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
if (argc != 1)
|
||||
{
|
||||
fprintf(stderr, "ERROR: No arguements expected\n", argc);
|
||||
btsak_gatt_showusage(btsak->progname, argv[0], EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/* Perform the IOCTL to start the discovery */
|
||||
|
||||
strncpy(btreq.btr_name, btsak->ifname, HCI_DEVNAME_SIZE);
|
||||
btreq.btr_gnrsp = 8;
|
||||
btreq.btr_grsp = result;
|
||||
|
||||
sockfd = btsak_socket(btsak);
|
||||
if (sockfd >= 0)
|
||||
{
|
||||
ret = ioctl(sockfd, SIOCBTDISCGET, (unsigned long)((uintptr_t)&btreq));
|
||||
if (ret < 0)
|
||||
{
|
||||
fprintf(stderr, "ERROR: ioctl(SIOCBTDISCGET) failed: %d\n", errno);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Show the results that we obtained */
|
||||
|
||||
printf("Discovered:\n");
|
||||
for (i = 0; i < btreq.btr_gnrsp; i++)
|
||||
{
|
||||
rsp = &result[i];
|
||||
printf("%d.\thandle 0x%04x perm: %02x\n",
|
||||
rsp->dr_handle, rsp->dr_perm);
|
||||
}
|
||||
}
|
||||
|
||||
close(sockfd);
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: btsak_cmd_gatt_read
|
||||
*
|
||||
|
@ -137,6 +137,11 @@ static const struct btsak_command_s g_btsak_gatt_commands[] =
|
||||
(CODE void *)btsak_cmd_gat_discover_descriptor,
|
||||
"[-h] <addr> <addr-type> [<start> [<end>]]"
|
||||
},
|
||||
{
|
||||
"dget",
|
||||
(CODE void *)btsak_cmd_gat_discover_get,
|
||||
"[-h]"
|
||||
},
|
||||
{
|
||||
"read",
|
||||
(CODE void *)btsak_cmd_gatt_read,
|
||||
|
Loading…
x
Reference in New Issue
Block a user