Friendly ping to maintainers on this one. Thanks, Alain On Thu, Jul 16, 2020 at 2:04 PM Archie Pusaka <apusaka@xxxxxxxxxx> wrote: > > From: Archie Pusaka <apusaka@xxxxxxxxxxxx> > > 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 <alainm@xxxxxxxxxxxx> > --- > > 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 >