From patchwork Fri May 23 14:25:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 892263 Received: from mail-qk1-f171.google.com (mail-qk1-f171.google.com [209.85.222.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2E98429672F for ; Fri, 23 May 2025 14:25:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748010313; cv=none; b=MTozFPWeSSBLBFsmnxo3QqKSEFIbV9+1ZqdAXFQMMgPU80A040sVOkzELO2GYTiR0mpebpgou3HyR15ZCbsJHN3elR+APKxuKz47pqfM4xeN3vDmkUAM2k1NsUffdLuwTx54kDk6E/JYQY0w9BkprRc8bSUEAZ3j/RRYII6DswU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748010313; c=relaxed/simple; bh=WkPpEYQD6/0L3oU5nfiijjL8PK5jrszRcNjt/hq1NSc=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uoRjCIU5sAylK5++bf1LFXjjQbkrQfdExnbVc18fit595HE7lCWIV7XSYn1GSQxc74JJPGu17rcDWyzeqwBa6ZFpMDjsy3lhhooYZJhpRsOf0Uxt47tMGEkWl5oEEoNATG3+jreK4ycEwGn/PdcNQjEtecQ8XhsO/3mUi5XRcu8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=UyQFY9Ug; arc=none smtp.client-ip=209.85.222.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UyQFY9Ug" Received: by mail-qk1-f171.google.com with SMTP id af79cd13be357-7c7913bab2cso926162785a.0 for ; Fri, 23 May 2025 07:25:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748010309; x=1748615109; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=GjXH6omJNQD/ZRNQroaO4b00SQL+neFkNXItZmD5B5I=; b=UyQFY9UgWdPV5pifn7W8pJSmH5AG1MBlDH7bN9fFXNOGT793ugO8Z5lrHBRrwvv9yA 9rPAPtBB9wTQVAElGVhORk8Ht7iuGaBAb6Of5TPFFxhnPczljMApvvK6LDXw/mjm2LRl PyG+Gzx6eMYvVeNeUQF3We7DUKrO0wii5H2AHLHzO4bQyyZbn6zIAlStoa9e8L+NQMKX 74s2dC1watb2ylgUPzfUhLbNWneteMyGb/1nzrwUQABquTM1fJ/uU4Pavc+jpvJ6Oynm JDNJPdhrUTeUahsssqXy4yilWsU+M6bniRQKh3A7MkfYRuvOOsv5mBQL+iHJIO4BhBZM xdvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748010309; x=1748615109; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GjXH6omJNQD/ZRNQroaO4b00SQL+neFkNXItZmD5B5I=; b=kQubBsRucjpX1FXSIVFDwFORAie3eGTVG8QhpfTDSrf//TCn1Njuhi9NI3PQtADoHm gs/vtKw2rgrtVK2Gu1WBf8ka8eicvljNw+qd1OrQNDOISj9gcG3WJKnBBew48ZcVThGc B7DXG4X2mqaVTRlFUEl4qD4MEtDCgbutPwVyVf1rPz5xLY8XQUtNTOLrewKLOi206CE8 BqSVZO/H1F8Jjk8C49M2kaQH/Q3+N2rrVTnsJfIy4SWnGyrXr2YYOcKSB87AB/EeYpoK 2UCAbo6LnjKHoXfWYeCHj3Ak3fV2etNNr8dME4Qf3Ea80tOj/pJl+PeWqcovAHJW4VhA 0Veg== X-Gm-Message-State: AOJu0YzkFkQCpk90YW3GlznjI2U2zL2FmKTlXtOB8xQKFSVgINc4KMOy OqkPF7rXf9d41yhj93tKJbaiNIHKq8TGLYKbKZUQXbcCjw5uY0lf24DqaTXsV4e7 X-Gm-Gg: ASbGnctGTqcNNmIaG5Yh/LL2tFU5oCWX69KHHUbDqkZyLzZVcfdhAC1kIJ4SGBmqOX7 SB8kZ9Gp7r3Qfe5/hSgi55RSRUL0AS+IaN7XDl3dAAzDE/PubAVYX8Hk1Lxl5kI0W9SCz74JjxQ JY6prT+GaNyhJDf1FFJ0o9Mx1Xm9liWmaA+FF0+Y1FzpKssdGIJDe7E8ZAMArO1rAQvbvGd5nPN OLE5uNu203mWGRqy4biZOWO9+PWzpMjh4+v2vJwHXbYfIqJeqbxIZKeiTU3UZjtcdJ8pcpwK3QI iB0OPmxB47/TRP/cK8MWHgPzOi7UUMokiF45l4rT/MDzOxq3btxhK2MMzEtrfUgFHP9BiUC+vUM EGdJNFtp5VtKM7lJyzdCN5AOCRqMFKxE= X-Google-Smtp-Source: AGHT+IFCSpZSYZ958gdLJrokQU87TSm2XonyC+GweDahCXdJmwoOQnuR5laNL2P2LGnnjsw+pE/UuQ== X-Received: by 2002:a05:620a:254c:b0:7ce:bd16:a1a5 with SMTP id af79cd13be357-7cebd16a676mr2823969285a.18.1748010309207; Fri, 23 May 2025 07:25:09 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-87bec027524sm12246308241.0.2025.05.23.07.25.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 07:25:08 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 2/4] adapter: Implement SetFilterPolicy AutoConnect filter Date: Fri, 23 May 2025 10:25:03 -0400 Message-ID: <20250523142505.3476436-2-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250523142505.3476436-1-luiz.dentz@gmail.com> References: <20250523142505.3476436-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz This implements AutoConnect filter option in SetFilterPolicy method according to its documentation. --- src/adapter.c | 55 +++++++++++++++++++++---- src/device.c | 111 +++++++++++++++++++++++++++----------------------- 2 files changed, 107 insertions(+), 59 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index fd425e6d2fe4..6f0699302257 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -214,6 +214,7 @@ struct discovery_filter { GSList *uuids; bool duplicate; bool discoverable; + bool auto_connect; }; struct discovery_client { @@ -2697,6 +2698,21 @@ static bool parse_pattern(DBusMessageIter *value, return true; } +static bool parse_auto_connect(DBusMessageIter *value, + struct discovery_filter *filter) +{ + dbus_bool_t connect; + + if (dbus_message_iter_get_arg_type(value) != DBUS_TYPE_BOOLEAN) + return false; + + dbus_message_iter_get_basic(value, &connect); + + filter->auto_connect = connect; + + return true; +} + struct filter_parser { const char *name; bool (*func)(DBusMessageIter *iter, struct discovery_filter *filter); @@ -2708,6 +2724,7 @@ struct filter_parser { { "DuplicateData", parse_duplicate_data }, { "Discoverable", parse_discoverable }, { "Pattern", parse_pattern }, + { "AutoConnect", parse_auto_connect }, { } }; @@ -2748,6 +2765,7 @@ static bool parse_discovery_filter_dict(struct btd_adapter *adapter, (*filter)->type = get_scan_type(adapter); (*filter)->duplicate = false; (*filter)->discoverable = false; + (*filter)->auto_connect = false; (*filter)->pattern = NULL; dbus_message_iter_init(msg, &iter); @@ -2794,11 +2812,12 @@ static bool parse_discovery_filter_dict(struct btd_adapter *adapter, goto invalid_args; DBG("filtered discovery params: transport: %d rssi: %d pathloss: %d " - " duplicate data: %s discoverable %s pattern %s", + " duplicate data: %s discoverable %s pattern %s auto-connect %s", (*filter)->type, (*filter)->rssi, (*filter)->pathloss, (*filter)->duplicate ? "true" : "false", (*filter)->discoverable ? "true" : "false", - (*filter)->pattern); + (*filter)->pattern, + (*filter)->auto_connect ? "true" : "false"); return true; @@ -7212,7 +7231,7 @@ static void filter_duplicate_data(void *data, void *user_data) static bool device_is_discoverable(struct btd_adapter *adapter, struct eir_data *eir, const char *addr, - uint8_t bdaddr_type) + uint8_t bdaddr_type, bool *auto_connect) { GSList *l; bool discoverable; @@ -7242,15 +7261,21 @@ static bool device_is_discoverable(struct btd_adapter *adapter, discoverable = false; pattern_len = strlen(filter->pattern); - if (!pattern_len) + if (!pattern_len) { + *auto_connect = filter->auto_connect; return true; + } - if (!strncmp(filter->pattern, addr, pattern_len)) + if (!strncmp(filter->pattern, addr, pattern_len)) { + *auto_connect = filter->auto_connect; return true; + } if (eir->name && !strncmp(filter->pattern, eir->name, - pattern_len)) + pattern_len)) { + *auto_connect = filter->auto_connect; return true; + } } return discoverable; @@ -7274,6 +7299,7 @@ void btd_adapter_device_found(struct btd_adapter *adapter, bool name_resolve_failed; bool scan_rsp; bool duplicate = false; + bool auto_connect = false; struct queue *matched_monitors = NULL; confirm = (flags & MGMT_DEV_FOUND_CONFIRM_NAME); @@ -7310,7 +7336,7 @@ void btd_adapter_device_found(struct btd_adapter *adapter, ba2str(bdaddr, addr); discoverable = device_is_discoverable(adapter, &eir_data, addr, - bdaddr_type); + bdaddr_type, &auto_connect); dev = btd_adapter_find_device(adapter, bdaddr, bdaddr_type); if (!dev) { @@ -7330,7 +7356,14 @@ void btd_adapter_device_found(struct btd_adapter *adapter, MGMT_SETTING_ISO_SYNC_RECEIVER)) monitoring = true; - if (!discoverable && !monitoring && not_connectable) { + /* Monitor Devices advertising RSI since those can be + * coordinated sets not marked as visible but their object are + * needed. + */ + if (eir_data.rsi) + monitoring = true; + + if (!discoverable && !monitoring) { eir_data_free(&eir_data); return; } @@ -7468,6 +7501,12 @@ void btd_adapter_device_found(struct btd_adapter *adapter, adapter->discovery_found = g_slist_prepend(adapter->discovery_found, dev); + /* If device has a pattern match and it also set auto-connect then + * attempt to connect. + */ + if (!btd_device_is_connected(dev) && auto_connect) + btd_device_connect_services(dev, NULL); + return; connect_le: diff --git a/src/device.c b/src/device.c index 56583f71a78b..60fdc2ef2779 100644 --- a/src/device.c +++ b/src/device.c @@ -2569,9 +2569,61 @@ static GSList *create_pending_list(struct btd_device *dev, const char *uuid) return dev->pending; } +#define NVAL_TIME ((time_t) -1) +#define SEEN_TRESHHOLD 300 + +static uint8_t select_conn_bearer(struct btd_device *dev) +{ + time_t bredr_last = NVAL_TIME, le_last = NVAL_TIME; + time_t current = time(NULL); + + /* Use preferred bearer or bonded bearer in case only one is bonded */ + if (dev->bredr_state.prefer || + (dev->bredr_state.bonded && !dev->le_state.bonded)) + return BDADDR_BREDR; + else if (dev->le_state.prefer || + (!dev->bredr_state.bonded && dev->le_state.bonded)) + return dev->bdaddr_type; + + /* If the address is random it can only be connected over LE */ + if (dev->bdaddr_type == BDADDR_LE_RANDOM) + return dev->bdaddr_type; + + if (dev->bredr_state.connectable && dev->bredr_state.last_seen) { + bredr_last = current - dev->bredr_state.last_seen; + if (bredr_last > SEEN_TRESHHOLD) + bredr_last = NVAL_TIME; + } + + if (dev->le_state.connectable && dev->le_state.last_seen) { + le_last = current - dev->le_state.last_seen; + if (le_last > SEEN_TRESHHOLD) + le_last = NVAL_TIME; + } + + if (le_last == NVAL_TIME && bredr_last == NVAL_TIME) + return dev->bdaddr_type; + + if (dev->bredr && (!dev->le || le_last == NVAL_TIME)) + return BDADDR_BREDR; + + if (dev->le && (!dev->bredr || bredr_last == NVAL_TIME)) + return dev->bdaddr_type; + + /* + * Prefer BR/EDR if time is the same since it might be from an + * advertisement with BR/EDR flag set. + */ + if (bredr_last <= le_last && btd_adapter_get_bredr(dev->adapter)) + return BDADDR_BREDR; + + return dev->bdaddr_type; +} + int btd_device_connect_services(struct btd_device *dev, GSList *services) { GSList *l; + uint8_t bdaddr_type; if (dev->pending || dev->connect || dev->browse) return -EBUSY; @@ -2579,6 +2631,14 @@ int btd_device_connect_services(struct btd_device *dev, GSList *services) if (!btd_adapter_get_powered(dev->adapter)) return -ENETDOWN; + bdaddr_type = select_conn_bearer(dev); + if (bdaddr_type != BDADDR_BREDR) { + if (dev->le_state.connected) + return -EALREADY; + + return device_connect_le(dev); + } + if (!dev->bredr_state.svc_resolved) return -ENOENT; @@ -2661,57 +2721,6 @@ resolve_services: return NULL; } -#define NVAL_TIME ((time_t) -1) -#define SEEN_TRESHHOLD 300 - -static uint8_t select_conn_bearer(struct btd_device *dev) -{ - time_t bredr_last = NVAL_TIME, le_last = NVAL_TIME; - time_t current = time(NULL); - - /* Use preferred bearer or bonded bearer in case only one is bonded */ - if (dev->bredr_state.prefer || - (dev->bredr_state.bonded && !dev->le_state.bonded)) - return BDADDR_BREDR; - else if (dev->le_state.prefer || - (!dev->bredr_state.bonded && dev->le_state.bonded)) - return dev->bdaddr_type; - - /* If the address is random it can only be connected over LE */ - if (dev->bdaddr_type == BDADDR_LE_RANDOM) - return dev->bdaddr_type; - - if (dev->bredr_state.connectable && dev->bredr_state.last_seen) { - bredr_last = current - dev->bredr_state.last_seen; - if (bredr_last > SEEN_TRESHHOLD) - bredr_last = NVAL_TIME; - } - - if (dev->le_state.connectable && dev->le_state.last_seen) { - le_last = current - dev->le_state.last_seen; - if (le_last > SEEN_TRESHHOLD) - le_last = NVAL_TIME; - } - - if (le_last == NVAL_TIME && bredr_last == NVAL_TIME) - return dev->bdaddr_type; - - if (dev->bredr && (!dev->le || le_last == NVAL_TIME)) - return BDADDR_BREDR; - - if (dev->le && (!dev->bredr || bredr_last == NVAL_TIME)) - return dev->bdaddr_type; - - /* - * Prefer BR/EDR if time is the same since it might be from an - * advertisement with BR/EDR flag set. - */ - if (bredr_last <= le_last && btd_adapter_get_bredr(dev->adapter)) - return BDADDR_BREDR; - - return dev->bdaddr_type; -} - static DBusMessage *dev_connect(DBusConnection *conn, DBusMessage *msg, void *user_data) { From patchwork Fri May 23 14:25:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 892262 Received: from mail-ot1-f45.google.com (mail-ot1-f45.google.com [209.85.210.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CBF612957B2 for ; Fri, 23 May 2025 14:25:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748010327; cv=none; b=H3BIXe9wiRisrWpfZ2rhveW7DBbWBEGyQypj8ckPx8PIK1s4zRoKJ73U8iYYYWfYKlgc+H5n+fiwzQ6F2TZZJYKCILGwoiOWZ3noZyy6kZf8xhNxj4L2EvzX9eTm5bYvYG10oxznWf46RpWlxbqBLfxALDx2azOwHzZpbEC2Izs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748010327; c=relaxed/simple; bh=V9moyCEvcreBrmKtmYS+DmumWNR2WbQ6dAJHdwX3Rp4=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FscljD94tCvMW5BlYTVyGVM86tz8mk2JvYMRmujG/bx97SgQdGBM2xtxMIhm0ZoD+CWxyqD3dphlL8+JKJhcZrkMfoDIVJyhZwtrk3LWSZqe4RXQqqcaf+8aFFSKjVAS8acYqxGI22xCQagpwfkhJyzyuglRmJ1xwQh5HxJMI30= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=BTzBV8nI; arc=none smtp.client-ip=209.85.210.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BTzBV8nI" Received: by mail-ot1-f45.google.com with SMTP id 46e09a7af769-72c14235af3so5938972a34.3 for ; Fri, 23 May 2025 07:25:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748010324; x=1748615124; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=9m4+0OIIskS7vHvSoBI6wzMv5zKIWeD/uVc6SDRQhLc=; b=BTzBV8nILmxNXIVzRKnxtJc+vSW4quD4cNHaI3Iq6Xx7bS7OBJKMBJ/KGLa9GNlHLP NEkYWw/L5w2s4e689GW2Js6C7vGSaQyFmtuyqUMWp4YmP/CGpO49iAHexe5le48TFJUI OV1xPx3NZ/pMBDtO0HTma1bTTH4aX0n38GPEon5yMiqKgSHADpb6UtV7pCN02ggeYulR QnLpkQw7t5Sw+xZ4cyFPkWMFmWfk6mHOlec5vTbupItmgfagQDITHKzudd31wdR8Q2vk rqUr9DchRdWRi/XorHn/Rot/5XO2hWoBe8lMGCrnh8iykuR+adFuaxGb/yglXHeMkcQl pQLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748010324; x=1748615124; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9m4+0OIIskS7vHvSoBI6wzMv5zKIWeD/uVc6SDRQhLc=; b=HGGfKXv1ejYnYJk1u+62VWVi3pxfDTH+wdlWYy4ZAdrH5Dt6/qAvwSTNgwYc5VRppE C9/ZUuOLoNbTpJnViwH61itH28zlE7aQIVE0baNZ+17sivfyXAVJHxtD7Eo3ALrg8Mgh qC7cLYm45+R+tC64yh5VDLlxkdGDfja9vHuQWcfwNyQ+N0mQtS6oWAt5hXlsLyWdI9/0 U1ow9qGOFfJdRobvh27RrfFuoxN397uJRK4gKPDqegGXWiy6/zAuBOi1VmhuBX6SBdWv T/sb9Sb97RqZemlh5n7P6SR1fFlqzfIxbWBHfOacByWdfgz1HKU/NmnWCT5oHCGY/19U 143w== X-Gm-Message-State: AOJu0YwH1kds0qupShsa9ZsEjO8rM1rfMNWfKVOFJoR9MQob3OMxYXK5 nAq+TLJL2gfSCQXbqMSZtLC/upvTghnv4/i4ZgT9Z1/1ZBI2YmfF0DWl5TBX22rT X-Gm-Gg: ASbGnctGQiGxBtlBgqEkKh3u0ZFqt78tlTIT3E1YJVNIY8Ox+hW7BMLX01eEeK+gtQd xSDqJTYdzPNJls71i5RdZal7TpXGXYYXB6woEWXBxNNivr5R7FZWkZKkG9gq0QAwv2itWh1xctV UuAgysCBwe+6QuSI94BzeAepUF7dL7dO6qdb63phUe2PMhjLJQgddIO9BUFj5xV3SyQARA0G42F qQ+en4EjCIzDDIpiCSpaJvAcZluf+iDjYm7TEUKrwlHgU332i9N9XrN4yu8hCLa2m//l2/B8774 dfFNeq2Jy7ivvzrYnNwiXlEfJOpPl7uFvm/6e5b3Unj9f+7FY+0Pt+Gz2eaWx5aR5PnApjyec5m pYqGbw0AJfoKR+QVS0TeTkbLycULrzYw= X-Google-Smtp-Source: AGHT+IEfFjjD0RGWur3/pvu2hmT/75fPRSIHZaTpngMEaLX25qcMh/1neRyDpMzLZbQ1pei8gyU0Fw== X-Received: by 2002:a05:620a:bd6:b0:7c9:269f:b654 with SMTP id af79cd13be357-7cd47f5a35bmr4317772685a.27.1748010312707; Fri, 23 May 2025 07:25:12 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-87bec027524sm12246308241.0.2025.05.23.07.25.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 07:25:11 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 4/4] bluetoothctl-scan: Add documentation for auto-connect command Date: Fri, 23 May 2025 10:25:05 -0400 Message-ID: <20250523142505.3476436-4-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250523142505.3476436-1-luiz.dentz@gmail.com> References: <20250523142505.3476436-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz This adds documentation for auto-connect command. --- client/bluetoothctl-scan.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/client/bluetoothctl-scan.rst b/client/bluetoothctl-scan.rst index b4b8315926a2..cee255131622 100644 --- a/client/bluetoothctl-scan.rst +++ b/client/bluetoothctl-scan.rst @@ -122,6 +122,16 @@ When set, it disregards device discoverable flags. :Usage: **> pattern [value]** +auto-connect +------------ + +Set/Get auto-connect filter. + +Connect to discovered devices automatically if pattern filter has been set and +it matches the device address or name and the device is connectable. + +:Usage: **> auto-connect [on/off]** + clear -----