Bluetooth: shell: adding command for directed advertising

Added a new command, which can be used to test the directed advertising
API. This command allows user to turn on directed advertising in two
modes: low and high duty. High duty mode is the default one.

Signed-off-by: Kamil Piszczek <Kamil.Piszczek@nordicsemi.no>
This commit is contained in:
Kamil Piszczek 2018-08-23 12:07:56 +02:00 committed by Carles Cufí
commit 3e8f118d8f

View file

@ -210,7 +210,7 @@ static void conn_addr_str(struct bt_conn *conn, char *addr, size_t len)
break; break;
#endif #endif
case BT_CONN_TYPE_LE: case BT_CONN_TYPE_LE:
bt_addr_le_to_str(info.le.dst, addr, len); bt_addr_le_to_str(bt_conn_get_dst(conn), addr, len);
break; break;
} }
} }
@ -994,6 +994,44 @@ static int cmd_auto_conn(int argc, char *argv[])
return 0; return 0;
} }
static int cmd_directed_adv(int argc, char *argv[])
{
int err;
bt_addr_le_t addr;
struct bt_conn *conn;
struct bt_le_adv_param *param = BT_LE_ADV_CONN_DIR;
if (argc < 3) {
return -EINVAL;
}
err = str2bt_addr_le(argv[1], argv[2], &addr);
if (err) {
printk("Invalid peer address (err %d)\n", err);
return 0;
}
if (argc > 3) {
if (!strcmp(argv[3], "low")) {
param = BT_LE_ADV_CONN_DIR_LOW_DUTY;
} else {
return -EINVAL;
}
}
conn = bt_conn_create_slave_le(&addr, param);
if (!conn) {
printk("Failed to start directed advertising\n");
} else {
printk("Started directed advertising\n");
/* unref connection obj in advance as app user */
bt_conn_unref(conn);
}
return 0;
}
static int cmd_select(int argc, char *argv[]) static int cmd_select(int argc, char *argv[])
{ {
struct bt_conn *conn; struct bt_conn *conn;
@ -2173,6 +2211,7 @@ static const struct shell_cmd bt_commands[] = {
{ "connect", cmd_connect_le, HELP_ADDR_LE }, { "connect", cmd_connect_le, HELP_ADDR_LE },
{ "disconnect", cmd_disconnect, HELP_NONE }, { "disconnect", cmd_disconnect, HELP_NONE },
{ "auto-conn", cmd_auto_conn, HELP_ADDR_LE }, { "auto-conn", cmd_auto_conn, HELP_ADDR_LE },
{ "directed-adv", cmd_directed_adv, HELP_ADDR_LE " [mode: low]" },
{ "select", cmd_select, HELP_ADDR_LE }, { "select", cmd_select, HELP_ADDR_LE },
{ "conn-update", cmd_conn_update, "<min> <max> <latency> <timeout>" }, { "conn-update", cmd_conn_update, "<min> <max> <latency> <timeout>" },
{ "oob", cmd_oob }, { "oob", cmd_oob },