apps/wireless/bluetooth/btsak: Add connect and disconnect commands to btsak
This commit is contained in:
parent
368f14852e
commit
09a108b507
@ -254,6 +254,10 @@ void btsak_cmd_gatt_exchange_mtu(FAR struct btsak_s *btsak, int argc,
|
||||
FAR char *argv[]);
|
||||
void btsak_cmd_gatt_exchange_mtu_result(FAR struct btsak_s *btsak, int argc,
|
||||
FAR char *argv[]);
|
||||
void btsak_cmd_connect(FAR struct btsak_s *btsak, int argc,
|
||||
FAR char *argv[]);
|
||||
void btsak_cmd_disconnect(FAR struct btsak_s *btsak, int argc,
|
||||
FAR char *argv[]);
|
||||
void btsak_cmd_discover(FAR struct btsak_s *btsak, int argc,
|
||||
FAR char *argv[]);
|
||||
void btsak_cmd_gatt_discover_characteristic(FAR struct btsak_s *btsak,
|
||||
|
@ -162,6 +162,70 @@ static void btsak_cmd_discover_common(FAR struct btsak_s *btsak,
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: btsak_cmd_connect_common
|
||||
*
|
||||
* Description:
|
||||
* Function used by the connect and disconnect commands.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static void btsak_cmd_connect_common(FAR struct btsak_s *btsak, int argc,
|
||||
FAR char *argv[], int cmd)
|
||||
{
|
||||
static struct btreq_s btreq;
|
||||
int sockfd;
|
||||
int ret;
|
||||
|
||||
if (argc == 2 && strcmp(argv[1], "-h") == 0)
|
||||
{
|
||||
btsak_gatt_showusage(btsak->progname, argv[0], EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
if (argc != 3)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"ERROR: Invalid number of arguments. Found %d expected 2\n",
|
||||
argc - 1);
|
||||
btsak_gatt_showusage(btsak->progname, argv[0], EXIT_FAILURE);
|
||||
}
|
||||
|
||||
ret = btsak_str2addr(argv[1], &btreq.btr_rmtpeer.val[0]);
|
||||
if (ret < 0)
|
||||
{
|
||||
fprintf(stderr, "ERROR: Bad value for <addr>: %s\n", argv[1]);
|
||||
btsak_gatt_showusage(btsak->progname, argv[0], EXIT_FAILURE);
|
||||
}
|
||||
|
||||
ret = btsak_str2addrtype(argv[2], &btreq.btr_rmtpeer.type);
|
||||
if (ret < 0)
|
||||
{
|
||||
fprintf(stderr, "ERROR: Bad value for address type: %s\n", argv[2]);
|
||||
btsak_gatt_showusage(btsak->progname, argv[0], EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/* Perform the IOCTL to start/end the connection */
|
||||
|
||||
strncpy(btreq.btr_name, btsak->ifname, IFNAMSIZ);
|
||||
|
||||
sockfd = btsak_socket(btsak);
|
||||
if (sockfd >= 0)
|
||||
{
|
||||
ret = ioctl(sockfd, cmd, (unsigned long)((uintptr_t)&btreq));
|
||||
if (ret < 0)
|
||||
{
|
||||
fprintf(stderr, "ERROR: ioctl(SIOCBT%sCONNECT) failed: %d\n",
|
||||
cmd == SIOCBTCONNECT ? "" : "DIS", errno);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Connect pending...\n");
|
||||
}
|
||||
|
||||
close(sockfd);
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Public functions
|
||||
****************************************************************************/
|
||||
@ -730,3 +794,32 @@ void btsak_cmd_gatt_write_get(FAR struct btsak_s *btsak, int argc,
|
||||
close(sockfd);
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: btsak_cmd_gatt_connect
|
||||
*
|
||||
* Description:
|
||||
* gatt [-h] connect [-h] <addr> public|private
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void btsak_cmd_connect(FAR struct btsak_s *btsak, int argc,
|
||||
FAR char *argv[])
|
||||
{
|
||||
btsak_cmd_connect_common(btsak, argc, argv, SIOCBTCONNECT);
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Name: btsak_cmd_gatt_connect
|
||||
*
|
||||
* Description:
|
||||
* gatt [-h] disconnect [-h] <addr> public|private
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void btsak_cmd_disconnect(FAR struct btsak_s *btsak, int argc,
|
||||
FAR char *argv[])
|
||||
{
|
||||
btsak_cmd_connect_common(btsak, argc, argv, SIOCBTDISCONNECT);
|
||||
}
|
||||
|
@ -127,6 +127,16 @@ static const struct btsak_command_s g_btsak_gatt_commands[] =
|
||||
(CODE void *)btsak_cmd_gatt_exchange_mtu_result,
|
||||
"[-h]"
|
||||
},
|
||||
{
|
||||
"connect",
|
||||
(CODE void *)btsak_cmd_connect,
|
||||
"[-h] <addr> public|private"
|
||||
},
|
||||
{
|
||||
"disconnect",
|
||||
(CODE void *)btsak_cmd_disconnect,
|
||||
"[-h] <addr> public|private"
|
||||
},
|
||||
{
|
||||
"discover",
|
||||
(CODE void *)btsak_cmd_discover,
|
||||
|
Loading…
x
Reference in New Issue
Block a user