Bluetooth: shell: Add LE Adv. Ext. advx command
Add Bluetooth Link Layer LE Advertising Extensions commands for manual testing the feature during development. First one being advx command to start non-connectable non-scannable extended advertising. Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
parent
03942483ec
commit
128a0613cd
4 changed files with 133 additions and 0 deletions
|
@ -1,3 +1,4 @@
|
||||||
obj-y += bt.o
|
obj-y += bt.o
|
||||||
obj-y += gatt.o
|
obj-y += gatt.o
|
||||||
|
obj-$(CONFIG_BLUETOOTH_CONTROLLER) += ll.o
|
||||||
obj-$(CONFIG_BLUETOOTH_CONTROLLER) += ticker.o
|
obj-$(CONFIG_BLUETOOTH_CONTROLLER) += ticker.o
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
|
|
||||||
#include "bt.h"
|
#include "bt.h"
|
||||||
#include "gatt.h"
|
#include "gatt.h"
|
||||||
|
#include "ll.h"
|
||||||
|
|
||||||
#define DEVICE_NAME CONFIG_BLUETOOTH_DEVICE_NAME
|
#define DEVICE_NAME CONFIG_BLUETOOTH_DEVICE_NAME
|
||||||
#define DEVICE_NAME_LEN (sizeof(DEVICE_NAME) - 1)
|
#define DEVICE_NAME_LEN (sizeof(DEVICE_NAME) - 1)
|
||||||
|
@ -2040,6 +2041,9 @@ static const struct shell_cmd bt_commands[] = {
|
||||||
{ "br-rfcomm-disconnect", cmd_rfcomm_disconnect, HELP_NONE },
|
{ "br-rfcomm-disconnect", cmd_rfcomm_disconnect, HELP_NONE },
|
||||||
#endif /* CONFIG_BLUETOOTH_RFCOMM */
|
#endif /* CONFIG_BLUETOOTH_RFCOMM */
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_ADV_EXT)
|
||||||
|
{ "advx", cmd_advx, "<on off> [coded] [anon] [txp]" },
|
||||||
|
#endif /* CONFIG_BLUETOOTH_CONTROLLER_ADV_EXT */
|
||||||
{ NULL, NULL, NULL }
|
{ NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
110
subsys/bluetooth/shell/ll.c
Normal file
110
subsys/bluetooth/shell/ll.c
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
/** @file
|
||||||
|
* @brief Bluetooth Link Layer functions
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2017 Nordic Semiconductor ASA
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include <zephyr.h>
|
||||||
|
#include <shell/shell.h>
|
||||||
|
#include <misc/printk.h>
|
||||||
|
|
||||||
|
#include "../controller/include/ll.h"
|
||||||
|
|
||||||
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_ADV_EXT)
|
||||||
|
#define ADV_INTERVAL 0x000020
|
||||||
|
#define ADV_TYPE 0x05 /* Adv. Ext. */
|
||||||
|
#define OWN_ADDR_TYPE 1
|
||||||
|
#define PEER_ADDR_TYPE 0
|
||||||
|
#define PEER_ADDR NULL
|
||||||
|
#define ADV_CHAN_MAP 0x07
|
||||||
|
#define FILTER_POLICY 0x00
|
||||||
|
#define ADV_TX_PWR NULL
|
||||||
|
#define ADV_SEC_SKIP 0
|
||||||
|
#define ADV_PHY_S 0x01
|
||||||
|
#define ADV_SID 0
|
||||||
|
#define SCAN_REQ_NOT 0
|
||||||
|
|
||||||
|
int cmd_advx(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
u16_t evt_prop;
|
||||||
|
u8_t enable;
|
||||||
|
u8_t phy_p;
|
||||||
|
s32_t err;
|
||||||
|
|
||||||
|
if (argc < 2) {
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc > 1) {
|
||||||
|
if (!strcmp(argv[1], "on")) {
|
||||||
|
evt_prop = 0;
|
||||||
|
enable = 1;
|
||||||
|
} else if (!strcmp(argv[1], "off")) {
|
||||||
|
enable = 0;
|
||||||
|
goto disable;
|
||||||
|
} else {
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
phy_p = BIT(0);
|
||||||
|
|
||||||
|
if (argc > 2) {
|
||||||
|
if (!strcmp(argv[2], "coded")) {
|
||||||
|
phy_p = BIT(2);
|
||||||
|
} else if (!strcmp(argv[2], "anon")) {
|
||||||
|
evt_prop |= BIT(5);
|
||||||
|
} else if (!strcmp(argv[2], "txp")) {
|
||||||
|
evt_prop |= BIT(6);
|
||||||
|
} else {
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc > 3) {
|
||||||
|
if (!strcmp(argv[3], "anon")) {
|
||||||
|
evt_prop |= BIT(5);
|
||||||
|
} else if (!strcmp(argv[3], "txp")) {
|
||||||
|
evt_prop |= BIT(6);
|
||||||
|
} else {
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc > 4) {
|
||||||
|
if (!strcmp(argv[4], "txp")) {
|
||||||
|
evt_prop |= BIT(6);
|
||||||
|
} else {
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
printk("adv param set...");
|
||||||
|
err = ll_adv_params_set(0x00, evt_prop, ADV_INTERVAL, ADV_TYPE,
|
||||||
|
OWN_ADDR_TYPE, PEER_ADDR_TYPE, PEER_ADDR,
|
||||||
|
ADV_CHAN_MAP, FILTER_POLICY, ADV_TX_PWR,
|
||||||
|
phy_p, ADV_SEC_SKIP, ADV_PHY_S, ADV_SID,
|
||||||
|
SCAN_REQ_NOT);
|
||||||
|
if (err) {
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
disable:
|
||||||
|
printk("adv enable (%u)...", enable);
|
||||||
|
err = ll_adv_enable(enable);
|
||||||
|
if (err) {
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
exit:
|
||||||
|
printk("done (err= %d).\n", err);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_BLUETOOTH_CONTROLLER_ADV_EXT */
|
18
subsys/bluetooth/shell/ll.h
Normal file
18
subsys/bluetooth/shell/ll.h
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/** @file
|
||||||
|
* @brief Bluetooth Link Layer shell functions
|
||||||
|
*
|
||||||
|
* This is not to be included by the application.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2017 Nordic Semiconductor ASA
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __LL_H
|
||||||
|
#define __LL_H
|
||||||
|
|
||||||
|
int cmd_advx(int argc, char *argv[]);
|
||||||
|
|
||||||
|
#endif /* __LL_H */
|
Loading…
Add table
Add a link
Reference in a new issue