Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp781617pxx; Thu, 29 Oct 2020 14:27:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJysrL/JLYxbMDUdeH7zGsuU78Jdz2X1GhlFRY59uZVG2VNSmvLfVGJvKu6/nKvXL8RyY4s9 X-Received: by 2002:a17:907:4273:: with SMTP id nq3mr6256967ejb.439.1604006850638; Thu, 29 Oct 2020 14:27:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1604006850; cv=none; d=google.com; s=arc-20160816; b=ZgHl7GjG2hL2J/OUt+OXFjgr2AgcDaje7CmPHCw5zjCvbTE0dK18HP5gXB8RQKifgS kc6L03RwEshjAplEtpRqdO+V51nCzQVbrbZEJgt5CzA4QnheaECnXzVIxwjaMm9NUEIl IRiixTFviJhl+H31ol96Dhrt+8ScyPBqoTMjx5CVXISMp/SXMu2oAVDxD/zmK7tgCXuh mdDjwdMwmaYI/h3u69Upd0ahD7uEdQ4F+5g2aHlxGzYoZRP6+tSVjwZsR+ASpGjTO5R3 dPrQ9djXj81pTn+2yqks4mXMuRUXfeIHaO7ssOcZmxAu+lAw6p7skpbrUaB1Cdnmqet6 Glag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:references:mime-version :message-id:in-reply-to:date:sender:dkim-signature; bh=/6ckWU4P9kOQQn4bPjgVIjuXAYYlJBgep6JJu1NnBoY=; b=YP/XpkMbAQNePPrYiqjXxZFQ3Sk9i6eFFAOpTvf7NAsw2wsbtUcXozeNH+q+MNct3c nnDmzb8Wun4H6JmF+Ba/q7WS03SfsvoVo3dR0TZ12BSLN3eR8ia1BMFmBfSKcP93lzk/ nzW53ld8jygQ5tlkBPZPbLZYWrWj6M4+DY6Yaw1mGdVWJaf9Jlh0LVlHuQ/RSuB8LrP+ xsF47bF8cB16N5Y6DxRplVRlFNlA18nPLUZLLI4x9dgpcHfkVVGBi4MZTfesT24winx9 oA7MbNWMyOop8dCmYjnWC9BhjUR9EaftdmsRPnxtdmq4vZSPwaKfeKDxikw6khc1jODI OEVQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="i/+C17SH"; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i23si3269504ejj.284.2020.10.29.14.27.06; Thu, 29 Oct 2020 14:27:30 -0700 (PDT) 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=@google.com header.s=20161025 header.b="i/+C17SH"; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726536AbgJ2VYD (ORCPT + 99 others); Thu, 29 Oct 2020 17:24:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45360 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725948AbgJ2VYD (ORCPT ); Thu, 29 Oct 2020 17:24:03 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BB647C0613CF for ; Thu, 29 Oct 2020 14:24:01 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id x125so4064321yba.17 for ; Thu, 29 Oct 2020 14:24:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:date:in-reply-to:message-id:mime-version:references:subject :from:to:cc; bh=/6ckWU4P9kOQQn4bPjgVIjuXAYYlJBgep6JJu1NnBoY=; b=i/+C17SHZp7eXw+vkDJdmMaF/wDTufbCR3cQFRsU3B/JkSAtjA0xdKYnutSR/xBS/k lTrPHieG6SMQ3kL6gATMXhfE+enMkRY0egVrAtbgj8b1CV7XgMzOah6EYEgismQCvhDC cZ+XgCzGStDBim0f0ubTzfUhT77fS0grsRq7uGdlBxwjq5+6J0dxM5bTQvSN+n7E/W2B 95f8S91C5/oGiw81SDqsqcsPQqTPCXLFoT+5cVGuSnOQ26QCUsT8uO9BE/QYXf6iw1fN nOM90Fvj5vRdq5Z/DnnClPuGt8M1tpBEspgG07nIbcb+ku1Fu3iXiytC4K/OVhyFm1Xl s9Cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=/6ckWU4P9kOQQn4bPjgVIjuXAYYlJBgep6JJu1NnBoY=; b=HeqM+8nPfR1Oci/uC3sn+rcESmMww9Cl0N2eParYOI1Uc5rNivdW5svo/rZIidjxNT Gm8IESombwjw7u55QSiIzkndPyfIsFJqXeOOvR7n+6CRQ1tiv1ufKCXu49v2HQQYFGhk 3f2hNbBl9OVC/w6P2tv3xmA7VOKuaDkJ5tI2YOjsCE7PT4z0VV0TpW+uC2rCjf0a3zK5 HxBN/bFkwzlBUYBaLUtV49Q+EB+5HfLnkKsMxYnyT+lXhaKxWZvq4etJEQGzQJzPq9g1 bsUP4+nmPLqqEuCrVz1wWUMeu9MjISI7zR4P57+piIEHW7lE20/dERBrLf/hV51+F0rW ujPg== X-Gm-Message-State: AOAM530yK1BxtwEPKRL9bu72RFyoKPbsYiAad6TSZHGVij9YveMGII9O ttqUb/cBwC3niwfK3j2g5riOpchUXryms3oBDg4I Sender: "danielwinkler via sendgmr" X-Received: from danielwinkler-linux.mtv.corp.google.com ([2620:15c:202:201:f693:9fff:fef4:4e59]) (user=danielwinkler job=sendgmr) by 2002:a25:2284:: with SMTP id i126mr8649810ybi.454.1604006641042; Thu, 29 Oct 2020 14:24:01 -0700 (PDT) Date: Thu, 29 Oct 2020 14:23:33 -0700 In-Reply-To: <20201029212336.3283410-1-danielwinkler@google.com> Message-Id: <20201029141832.Bluez.v5.8.I4e536cf2c9b6c5571b4b3800dfb8338fce8e4421@changeid> Mime-Version: 1.0 References: <20201029212336.3283410-1-danielwinkler@google.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog Subject: [Bluez PATCH v5 08/10] advertising: Expose SupportedCapabilities for advertising From: Daniel Winkler To: luiz.von.dentz@intel.com Cc: linux-bluetooth@vger.kernel.org, chromeos-bluetooth-upstreaming@chromium.org, Daniel Winkler , Sonny Sasaka , Alain Michaud Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org To help our advertising clients understand the device capabilities, this patch adds a SupportedCapabilities dbus endpoint for the advertising manager. The primary reason behind this is to provide the valid LE tx power range the controller supports (populated if controller supports BT5), so a client can know the valid power range before requesting a tx power for their advertisement. I also thought it would be useful to indicate the max advertising data length and scan response length in this endpoint, since some clients will find it useful to set their advertising data (currently experimental feature) or scan response data (possible future feature) directly. This patch has been tested on Hatch (BT5 support) and Kukui (No BT5 support) chromebooks to verify that the dbus endpoint contains the correct data. Reviewed-by: Sonny Sasaka Reviewed-by: Alain Michaud --- Changes in v5: - Make SupportedCapabilities experimental Changes in v4: None Changes in v3: None Changes in v2: None src/advertising.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/advertising.c b/src/advertising.c index 5ed2edf44..62fb3b939 100644 --- a/src/advertising.c +++ b/src/advertising.c @@ -1641,12 +1641,47 @@ static gboolean get_supported_secondary(const GDBusPropertyTable *property, return TRUE; } +static gboolean get_supported_cap(const GDBusPropertyTable *property, + DBusMessageIter *iter, void *data) +{ + struct btd_adv_manager *manager = data; + DBusMessageIter dict; + int16_t min_tx_power = manager->min_tx_power; + int16_t max_tx_power = manager->max_tx_power; + + dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY, + DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING + DBUS_TYPE_STRING_AS_STRING + DBUS_TYPE_VARIANT_AS_STRING + DBUS_DICT_ENTRY_END_CHAR_AS_STRING, + &dict); + + if (min_tx_power != ADV_TX_POWER_NO_PREFERENCE) + dict_append_entry(&dict, "MinTxPower", DBUS_TYPE_INT16, + &min_tx_power); + + if (max_tx_power != ADV_TX_POWER_NO_PREFERENCE) + dict_append_entry(&dict, "MaxTxPower", DBUS_TYPE_INT16, + &max_tx_power); + + dict_append_entry(&dict, "MaxAdvLen", DBUS_TYPE_BYTE, + &manager->max_adv_len); + dict_append_entry(&dict, "MaxScnRspLen", DBUS_TYPE_BYTE, + &manager->max_scan_rsp_len); + + dbus_message_iter_close_container(iter, &dict); + + return TRUE; +} + static const GDBusPropertyTable properties[] = { { "ActiveInstances", "y", get_active_instances, NULL, NULL }, { "SupportedInstances", "y", get_instances, NULL, NULL }, { "SupportedIncludes", "as", get_supported_includes, NULL, NULL }, { "SupportedSecondaryChannels", "as", get_supported_secondary, NULL, secondary_exits }, + { "SupportedCapabilities", "a{sv}", get_supported_cap, NULL, NULL, + G_DBUS_PROPERTY_FLAG_EXPERIMENTAL}, { } }; -- 2.29.1.341.ge80a0c044ae-goog