From: cdwhite13@gmail.com
To: linux-bluetooth@vger.kernel.org
Cc: chris.white@dolby.com, Keyur Parekh <kpare@dolby.com>
Subject: [PATCH BlueZ 1/1] emulator: Periodic Advertising Command
Date: Thu, 11 Mar 2021 10:35:50 -0800 [thread overview]
Message-ID: <20210311183550.11150-2-cdwhite13@gmail.com> (raw)
In-Reply-To: <20210311183550.11150-1-cdwhite13@gmail.com>
From: Keyur Parekh <kpare@dolby.com>
This adds support for Periodic Advertising HCI
command in the emulator. These changes are the
first step in making the emulator useful for
testing the LE Audio Broadcast feature
---
emulator/btdev.c | 50 ++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 44 insertions(+), 6 deletions(-)
diff --git a/emulator/btdev.c b/emulator/btdev.c
index c824f48ff..749fbafa7 100644
--- a/emulator/btdev.c
+++ b/emulator/btdev.c
@@ -141,6 +141,12 @@ struct btdev {
uint8_t le_scan_own_addr_type;
uint8_t le_filter_dup;
uint8_t le_adv_enable;
+ uint8_t le_periodic_adv_enable;
+ uint16_t le_periodic_adv_properties;
+ uint16_t le_periodic_min_interval;
+ uint16_t le_periodic_max_interval;
+ uint8_t le_periodic_data_len;
+ uint8_t le_periodic_data[31];
uint8_t le_ltk[16];
struct {
struct bt_hci_cmd_le_set_cig_params params;
@@ -3934,22 +3940,54 @@ static int cmd_clear_adv_sets(struct btdev *dev, const void *data,
static int cmd_set_per_adv_params(struct btdev *dev, const void *data,
uint8_t len)
{
- /* TODO */
- return -ENOTSUP;
+ const struct bt_hci_cmd_le_set_periodic_adv_params *cmd = data;
+ uint8_t status;
+
+ if (dev->le_periodic_adv_enable) {
+ status = BT_HCI_ERR_COMMAND_DISALLOWED;
+ } else {
+ status = BT_HCI_ERR_SUCCESS;
+ dev->le_periodic_adv_properties = le16_to_cpu(cmd->properties);
+ dev->le_periodic_min_interval = cmd->min_interval;
+ dev->le_periodic_max_interval = cmd->max_interval;
+ }
+
+ cmd_complete(dev, BT_HCI_CMD_LE_SET_PERIODIC_ADV_PARAMS, &status,
+ sizeof(status));
+ return 0;
}
static int cmd_set_per_adv_data(struct btdev *dev, const void *data,
uint8_t len)
{
- /* TODO */
- return -ENOTSUP;
+ const struct bt_hci_cmd_le_set_periodic_adv_data *cmd = data;
+ uint8_t status = BT_HCI_ERR_SUCCESS;
+
+ dev->le_periodic_data_len = cmd->data_len;
+ memcpy(dev->le_periodic_data, cmd->data, 31);
+ cmd_complete(dev, BT_HCI_CMD_LE_SET_PERIODIC_ADV_DATA, &status,
+ sizeof(status));
+
+ return 0;
}
static int cmd_set_per_adv_enable(struct btdev *dev, const void *data,
uint8_t len)
{
- /* TODO */
- return -ENOTSUP;
+ const struct bt_hci_cmd_le_set_periodic_adv_enable *cmd = data;
+ uint8_t status;
+
+ if (dev->le_periodic_adv_enable == cmd->enable) {
+ status = BT_HCI_ERR_COMMAND_DISALLOWED;
+ } else {
+ dev->le_periodic_adv_enable = cmd->enable;
+ status = BT_HCI_ERR_SUCCESS;
+ }
+
+ cmd_complete(dev, BT_HCI_CMD_LE_SET_PERIODIC_ADV_ENABLE, &status,
+ sizeof(status));
+
+ return 0;
}
static int cmd_set_ext_scan_params(struct btdev *dev, const void *data,
--
2.21.0 (Apple Git-122.2)
next prev parent reply other threads:[~2021-03-11 18:39 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-11 18:35 [PATCH BlueZ 1/1] emulator: Periodic Advertising Command cdwhite13
2021-03-11 18:35 ` cdwhite13 [this message]
2021-03-11 19:05 ` [BlueZ,1/1] " bluez.test.bot
2021-03-15 21:46 ` Luiz Augusto von Dentz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210311183550.11150-2-cdwhite13@gmail.com \
--to=cdwhite13@gmail.com \
--cc=chris.white@dolby.com \
--cc=kpare@dolby.com \
--cc=linux-bluetooth@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.