Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp622088pxf; Thu, 11 Mar 2021 10:45:35 -0800 (PST) X-Google-Smtp-Source: ABdhPJz+rFH8TosPHKh554TmcptaqPeGHLwbnW+KE3StdYD5sOHaQuojEgwntYv/20Pt+RH4Vvx2 X-Received: by 2002:a17:906:cd12:: with SMTP id oz18mr4464255ejb.498.1615488335477; Thu, 11 Mar 2021 10:45:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615488335; cv=none; d=google.com; s=arc-20160816; b=u/YNMoYHJvP3GpZP3gyZTcLPEn6tuGi3kyWxPiTFHoMIskJgyc6N/G6d609N46gZDH o6N2VZktD7gFXMJKshXpDHDP3d1hCniWXiE3BhoPDX57WuudUNaarqNIOSAbmZKGZlSg Oh8Y1yaNxxrbykFvzs/QByr1Z8opMUrlfZmH9g0RtSph8MDGEeCGUWrCmmWcSdx8N+dq jbRsEwPeseEof7c3i0FQu4IBFFAuif28Nm3AggSDFILc8xbd7fOeozPRMqIi72Rlnn14 2/6U9A9upQQk3B2PPOxNO3lm52WKeQJM1m43Empkc0rd0QCQ6s9bAkdNS3JoLeu4Ck91 czlw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version:reply-to :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=BdVR68284gxJydNyFk5b5RvTyoIgTl6fYipG7tiLT6A=; b=EFBXhCL1sDJUOExs9Ugukfpf8b/4w6KNjcGDZk7SgY1O3X3RgdVlQgCzOwlro5c2z7 35e/LXIDDXPIdmTXHJuZbIRiz3JK5/eMomudiFafmWQB3ud1fxzT6tVtOFQwLXeMxfAF Y27lIpmTl5VUunV15yK5kR4iLZkubrBlDWE8A8UvS12jyPwH/QI+yLFIUu0DBPWlWzAO Bh0WpTa4L59sBcoq1qR6uA8OyZbvdL5RFSaYzn9p5Eggs54jgH9Ll17Tb8jgFK6xqRSx SdCsGb6S5O5EiLius2hU34+SQBB6eQ07FUmTYYj9Rglm+gjPtQJvQvkKKr4SFB3Y4jnR mJag== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=h6qrwfxC; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o20si2323169eja.515.2021.03.11.10.45.12; Thu, 11 Mar 2021 10:45:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=h6qrwfxC; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229821AbhCKSjC (ORCPT + 99 others); Thu, 11 Mar 2021 13:39:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57088 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230214AbhCKSi5 (ORCPT ); Thu, 11 Mar 2021 13:38:57 -0500 Received: from mail-pl1-x633.google.com (mail-pl1-x633.google.com [IPv6:2607:f8b0:4864:20::633]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4CC40C061574 for ; Thu, 11 Mar 2021 10:36:42 -0800 (PST) Received: by mail-pl1-x633.google.com with SMTP id a8so4130202plp.13 for ; Thu, 11 Mar 2021 10:36:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=BdVR68284gxJydNyFk5b5RvTyoIgTl6fYipG7tiLT6A=; b=h6qrwfxC2OVcWJf8Or4tz9zxI2jxPCqXgAFy1tarQRR9JhlCeUFfQlxBQZB9kW+nKb rojOHVIF99hug7Xrlh+94E6DMgpx48oLj2LfB6MECt12JxQegrYDRtQau8SwuSxLaibt MLFVyZcLM18P9LzE49juyj+DdVZDvU07Y1vz6CmLDnHlTQxj6Pu3GwEjb9zt1Zl4acIG QiUhpiRvc8MEsd3KDbq8t/b7+kgT3CB4j+/H077wo99vXLYC6/fA4DIJvBKhdMoRkScm Kr7JwGs65DkzIicKdRD81tBoqxcrQIZ0OHyEM5arukEN6o2Zy0lzTOjHQXA3eQxaX2DR Duqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=BdVR68284gxJydNyFk5b5RvTyoIgTl6fYipG7tiLT6A=; b=HnaQgdKm6ctYIFMOrwfQW+a9faZyqAn8mu4i4/zlYSteGjLbVFmk3OiQdcO6SW4XcG cqCMBdAf9o+Vl45ouDp2qyIty5TL/U8DYtIH6LxPy+KfVNuCMa8/RbHNRTXA/EueYPFu 1TXkYOl2bvpfY6sRMx+VOG/d9r64njiyvYaBAjFcOw8nfOaryf7/9TfnnH3/1WZVtXhV WBS7+w7mdSAQsyN+ofCJh6zdoGidXcXh1RrzIm/aWeAUp9yJfQPDnrCZpe10AwHqml/w jr/o6RaCEQtC7jgyxfA/u0eIfS8Mnzj60RQs62N4vy3MFlgas08SOWfKS0uc6VYzuIas geAw== X-Gm-Message-State: AOAM530fk66Plw0aYyRhDCpULFoRCo6b4Z3kgusU/MUSf1Eh5M5yyVYe jQHvUsS+FZFcoBS/aBe/OXNVlpFAoQY= X-Received: by 2002:a17:90a:bf15:: with SMTP id c21mr10169052pjs.160.1615487801666; Thu, 11 Mar 2021 10:36:41 -0800 (PST) Received: from localhost.localdomain (76-14-108-251.rk.wavecable.com. [76.14.108.251]) by smtp.gmail.com with ESMTPSA id r23sm3192094pje.38.2021.03.11.10.36.40 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 11 Mar 2021 10:36:41 -0800 (PST) From: cdwhite13@gmail.com To: linux-bluetooth@vger.kernel.org Cc: chris.white@dolby.com, Keyur Parekh Subject: [PATCH BlueZ 1/1] emulator: Periodic Advertising Command Date: Thu, 11 Mar 2021 10:35:50 -0800 Message-Id: <20210311183550.11150-2-cdwhite13@gmail.com> X-Mailer: git-send-email 2.21.0 (Apple Git-122.2) In-Reply-To: <20210311183550.11150-1-cdwhite13@gmail.com> References: <20210311183550.11150-1-cdwhite13@gmail.com> Reply-To: chris.white@dolby.com MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org From: Keyur Parekh 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)