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[]);
|
int argc, FAR char *argv[]);
|
||||||
void btsak_cmd_gat_discover_descriptor(FAR struct btsak_s *btsak,
|
void btsak_cmd_gat_discover_descriptor(FAR struct btsak_s *btsak,
|
||||||
int argc, FAR char *argv[]);
|
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,
|
void btsak_cmd_gatt_read(FAR struct btsak_s *btsak, int argc,
|
||||||
FAR char *argv[]);
|
FAR char *argv[]);
|
||||||
void btsak_cmd_gatt_read_multiple(FAR struct btsak_s *btsak, int argc,
|
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);
|
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
|
* 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,
|
(CODE void *)btsak_cmd_gat_discover_descriptor,
|
||||||
"[-h] <addr> <addr-type> [<start> [<end>]]"
|
"[-h] <addr> <addr-type> [<start> [<end>]]"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"dget",
|
||||||
|
(CODE void *)btsak_cmd_gat_discover_get,
|
||||||
|
"[-h]"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"read",
|
"read",
|
||||||
(CODE void *)btsak_cmd_gatt_read,
|
(CODE void *)btsak_cmd_gatt_read,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user