Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cb2f4785 authored by JohnLai's avatar JohnLai
Browse files

floss: Remove bonded devices in FactoryReset

Remove bonded devices in FactoryReset.

Bug: 306113830
Tag: #floss
Test: m Bluetooth && pts-bot HID/HOS/HCE/BV-01-I
Flag: EXEMPT floss only changes
Change-Id: I8f4c1a6f4859c50b0c52f692d4436c948148f9cf
parent 07db314b
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -685,6 +685,15 @@ class FlossAdapterClient(BluetoothCallbacks, BluetoothConnectionCallbacks):
        remote_device = self._make_dbus_device(address, name)
        return bool(self.proxy().RemoveBond(remote_device))

    @utils.glib_call(None)
    def get_bonded_devices(self):
        """Get all bonded devices.

        Returns:
            List of device addresses; None on DBus error.
        """
        return self.proxy().GetBondedDevices()

    @utils.glib_call(False)
    def forget_device(self, address):
        """Forgets device from local cache and removes bonding.
+9 −0
Original line number Diff line number Diff line
@@ -196,6 +196,15 @@ class Bluetooth(object):
    def create_bond(self, address, transport):
        return self.adapter_client.create_bond(address, transport)

    def remove_bond(self, address):
        return self.adapter_client.remove_bond(address)

    def get_bonded_devices(self):
        return self.adapter_client.get_bonded_devices()

    def forget_device(self, address):
        return self.adapter_client.forget_device(address)

    def set_pairing_confirmation(self, address, accept):
        return self.adapter_client.set_pairing_confirmation(address, accept)

+10 −0
Original line number Diff line number Diff line
@@ -51,6 +51,16 @@ class HostService(host_grpc_aio.HostServicer):

    async def FactoryReset(self, request: empty_pb2.Empty, context: grpc.ServicerContext) -> empty_pb2.Empty:
        self.waited_connections.clear()

        devices = self.bluetooth.get_bonded_devices()
        if devices is None:
            logging.error('Failed to call get_bonded_devices.')
        else:
            for device in devices:
                address = device['address']
                logging.info('Forget device %s', address)
                self.bluetooth.forget_device(address)

        asyncio.create_task(self.server.stop(None))
        return empty_pb2.Empty()