Received: by 2002:a25:e74b:0:0:0:0:0 with SMTP id e72csp1404120ybh; Thu, 16 Jul 2020 11:06:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw1ClofuXUGNJZb7dYSVyFvfWWazUzBCFoSEXRoI0zkRlkfS/ylEepuLuqzWvrWUmCv/xh8 X-Received: by 2002:a17:906:240d:: with SMTP id z13mr4797110eja.346.1594922768269; Thu, 16 Jul 2020 11:06:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594922768; cv=none; d=google.com; s=arc-20160816; b=ZpfwOHGrINxhN+4Ka5Bhz+0OwsF5VY+0xChgXp54UEfGw+ewq6ChhDYRVUqdXhxE+v o+xJ8WhYnB9zsy5ancUlpraeXWMNU3HykBVE1TQlwUfa89BLUqt1S9rO/MmLQr/A1NMo ZQvsnE6eNdFNT1C24GTODgKzwuQQ5wIBn8pdmMj3f7P7qDZZ7u5drL82T7UwhYy3Y2dL 0BRNeFMx9u2gNW6Yw70CbOXod8DRWSYqgUxljolAI2monRqWq2oOrWFL2cFlBvNAS6BV QqmCPXV/BUlq3Jw7Fzguv0d4euw9se1kll6wVavDsOrNwaG1exsn7gjKveenoIys30OM ZMEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:from:subject:mime-version :message-id:date:dkim-signature; bh=5i6s9EyPlfxHx+66OfGFkRV1yvtiRhlOmgOMdROAJ5E=; b=v58UmNZqVHqZxNsfdhMeFj6FE8T0sh/A+bENmPgko/z35SsPhoCdbEWErL/jUzVJo5 rS9IwCfGFVHUlglf1q67M6sdHUij9hh3XqPYuWWbGsdpXWAdT8e+B05lk7rasWVacVny opRPsRpLvQ0ndegDjUVlFI8mshZ6aSWCjtJJeNyE2YEXsWLPnYmB5V3fd7DnBOBEAZiN HvprwLz5TGpEUW7TW+A0RtQnGkoviLpxxnaUQL8OZ1E4jrtCqWTIOnlyMcupoY9Xb0cd JbWJbbYNclL3MR0SGdWD37gOXdAi1U5PzpJO7HfF9PxRTLlMQpFUWyE+N7mKvXCU+5Zi Dx4w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=RarlXJt2; 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 rp17si3423902ejb.67.2020.07.16.11.05.24; Thu, 16 Jul 2020 11:06:08 -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=RarlXJt2; 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 S1728237AbgGPSEq (ORCPT + 99 others); Thu, 16 Jul 2020 14:04:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52828 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727844AbgGPSEq (ORCPT ); Thu, 16 Jul 2020 14:04:46 -0400 Received: from mail-qv1-xf49.google.com (mail-qv1-xf49.google.com [IPv6:2607:f8b0:4864:20::f49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DC8BBC061755 for ; Thu, 16 Jul 2020 11:04:45 -0700 (PDT) Received: by mail-qv1-xf49.google.com with SMTP id j4so3908605qvt.20 for ; Thu, 16 Jul 2020 11:04:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=5i6s9EyPlfxHx+66OfGFkRV1yvtiRhlOmgOMdROAJ5E=; b=RarlXJt2534WE+tm8kUm5giPC/u9gPQUYCeQIT2gsqzD9yXaOojFL4fbOejNQuwrxW GdbZiI323Yje6D3FpKTPts8AWyIhQ5TTQC6Oh6JdvP0hNa5ydvkZ6MmIn/b6eWkjZWQ3 z1+xAICplY0D5eV+RaQem9eYBvez7jvTqiPL44fgjC6FNSQiJnLPUCAVxkLHnFAqoZbk SligMV4jg5hru4IZlXMGk/zshLDlXMp7k8oiDNaX8czxCiPfHTajnTOjl2iLAZdrS6ym 7XsPRl2tB+R9jWinqe9ITAWWC1oFaSb0nVjuvv3ilDGyDQLFIi5Zm5nR4az7Oq/ku4YA fBdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=5i6s9EyPlfxHx+66OfGFkRV1yvtiRhlOmgOMdROAJ5E=; b=RL4/pbFE+vouMO6VEy4gY3ntIdLrKCS4RdBFcb+9bJEWhyRtK8KnzMtd7YsFvmxIWH +uGZOdWc1BdNr/BYI4puplIUWwJu1F3ChTUrZLClx/vgkZ4jo0w7QJHoi1CKhmFmYhiV CAxRadQ4Ddf2dy0ekXscm0fe/170J7e/5egH9UlhuXS/63Tq2oYLkQ2S14TLcY5pQYZS YL6CuAH2J2afndTFg21pnwMFTXe1b8GQ8wLU+0tjXtPaQQ4bx1mHXCTjPUziTc4bz9on LUBhnTY4edZlLwWLwj9WQCeZEi4I0hNd/5+nxbM9ikfDFouxtJUanz6Waxm4WHLelKF1 V0nw== X-Gm-Message-State: AOAM533gXjNzpDZLq4TdMt2/cX7Y4YkB7JEuwCTyXu4UO15mZnW44UdZ BcxOv5vclqWSallKo9bIIVdiGHBgvSd0LvVlOD8hUphaNLmyQ2MZh7YyxgkZOOaaGnzuB5QBEL3 SpKtm3yQp/yW/GOjjLoApOQag6YILxHe8ujnrv+aB1IUOOS/35s7BgSSSWPPxgsXgVRgbnmR1vs MH X-Received: by 2002:ad4:54e9:: with SMTP id k9mr5160647qvx.193.1594922684814; Thu, 16 Jul 2020 11:04:44 -0700 (PDT) Date: Fri, 17 Jul 2020 02:04:32 +0800 Message-Id: <20200717020332.Bluez.v3.1.I1322f6745fa50365c1c88de3e2c50c9c5962c094@changeid> Mime-Version: 1.0 X-Mailer: git-send-email 2.27.0.389.gc38d7665816-goog Subject: [Bluez PATCH v3 1/2] device: add device_remove_bonding function From: Archie Pusaka To: linux-bluetooth , Luiz Augusto von Dentz Cc: Archie Pusaka , Alain Michaud Content-Type: text/plain; charset="UTF-8" Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org From: Archie Pusaka This patch splits the "bonding removal" function in device.c, because we need to remove bonding information when receiving "virtual cable unplug" in HID profile. Reviewed-by: Alain Michaud --- Changes in v3: - Call device_set_temporary on device_remove_bonding Changes in v2: None src/device.c | 28 ++++++++++++++++++---------- src/device.h | 1 + 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/device.c b/src/device.c index 226216235..b23ecb7fd 100644 --- a/src/device.c +++ b/src/device.c @@ -4356,6 +4356,20 @@ static void delete_folder_tree(const char *dirname) rmdir(dirname); } +void device_remove_bonding(struct btd_device *device, uint8_t bdaddr_type) +{ + if (bdaddr_type == BDADDR_BREDR) + device->bredr_state.bonded = false; + else + device->le_state.bonded = false; + + if (!device->bredr_state.bonded && !device->le_state.bonded) + btd_device_set_temporary(device, true); + + btd_adapter_remove_bonding(device->adapter, &device->bdaddr, + bdaddr_type); +} + static void device_remove_stored(struct btd_device *device) { char device_addr[18]; @@ -4364,17 +4378,11 @@ static void device_remove_stored(struct btd_device *device) char *data; gsize length = 0; - if (device->bredr_state.bonded) { - device->bredr_state.bonded = false; - btd_adapter_remove_bonding(device->adapter, &device->bdaddr, - BDADDR_BREDR); - } + if (device->bredr_state.bonded) + device_remove_bonding(device, BDADDR_BREDR); - if (device->le_state.bonded) { - device->le_state.bonded = false; - btd_adapter_remove_bonding(device->adapter, &device->bdaddr, - device->bdaddr_type); - } + if (device->le_state.bonded) + device_remove_bonding(device, device->bdaddr_type); device->bredr_state.paired = false; device->le_state.paired = false; diff --git a/src/device.h b/src/device.h index cb8d884e8..956fec1ae 100644 --- a/src/device.h +++ b/src/device.h @@ -50,6 +50,7 @@ uint16_t btd_device_get_vendor(struct btd_device *device); uint16_t btd_device_get_vendor_src(struct btd_device *device); uint16_t btd_device_get_product(struct btd_device *device); uint16_t btd_device_get_version(struct btd_device *device); +void device_remove_bonding(struct btd_device *device, uint8_t bdaddr_type); void device_remove(struct btd_device *device, gboolean remove_stored); int device_address_cmp(gconstpointer a, gconstpointer b); int device_bdaddr_cmp(gconstpointer a, gconstpointer b); -- 2.27.0.389.gc38d7665816-goog