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

Commit 9a0c9b1b authored by Rahul Sabnis's avatar Rahul Sabnis
Browse files

Add setConnectionPolicy to HidDeviceService and PanService

Bug: 147444905
Test: Manual
Change-Id: I364b27b74156ca72bf92a8f371ddea7ab99befe8
parent 51164c0d
Loading
Loading
Loading
Loading
+43 −0
Original line number Original line Diff line number Diff line
@@ -404,6 +404,21 @@ public class HidDeviceService extends ProfileService {
            return service.disconnect(device);
            return service.disconnect(device);
        }
        }


        @Override
        public boolean setConnectionPolicy(BluetoothDevice device, int connectionPolicy) {
            if (DBG) {
                Log.d(TAG, "setConnectionPolicy(): device=" + device + " connectionPolicy="
                        + connectionPolicy);
            }

            HidDeviceService service = getService();
            if (service == null) {
                return false;
            }

            return service.setConnectionPolicy(device, connectionPolicy);
        }

        @Override
        @Override
        public boolean reportError(BluetoothDevice device, byte error) {
        public boolean reportError(BluetoothDevice device, byte error) {
            if (DBG) {
            if (DBG) {
@@ -627,6 +642,34 @@ public class HidDeviceService extends ProfileService {
        return checkDevice(device) && mHidDeviceNativeInterface.disconnect();
        return checkDevice(device) && mHidDeviceNativeInterface.disconnect();
    }
    }


    /**
     * Connects Hid Device if connectionPolicy is {@link BluetoothProfile#CONNECTION_POLICY_ALLOWED}
     * and disconnects Hid device if connectionPolicy is
     * {@link BluetoothProfile#CONNECTION_POLICY_FORBIDDEN}.
     *
     * <p> The device should already be paired.
     * Connection policy can be one of:
     * {@link BluetoothProfile#CONNECTION_POLICY_ALLOWED},
     * {@link BluetoothProfile#CONNECTION_POLICY_FORBIDDEN},
     * {@link BluetoothProfile#CONNECTION_POLICY_UNKNOWN}
     *
     * @param device Paired bluetooth device
     * @param connectionPolicy determines whether hid device should be connected or disconnected
     * @return true if hid device is connected or disconnected, false otherwise
     */
    public boolean setConnectionPolicy(BluetoothDevice device, int connectionPolicy) {
        enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, "Need BLUETOOTH_ADMIN permission");
        if (DBG) {
            Log.d(TAG, "setConnectionPolicy: device " + device
                    + " and connectionPolicy " + connectionPolicy);
        }
        if (connectionPolicy == BluetoothProfile.CONNECTION_POLICY_FORBIDDEN) {
            disconnect(device);
            return true;
        }
        return false;
    }

    synchronized boolean reportError(BluetoothDevice device, byte error) {
    synchronized boolean reportError(BluetoothDevice device, byte error) {
        enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, "Need BLUETOOTH ADMIN permission");
        enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, "Need BLUETOOTH ADMIN permission");
        if (DBG) {
        if (DBG) {
+9 −0
Original line number Original line Diff line number Diff line
@@ -249,6 +249,15 @@ public class PanService extends ProfileService {
            return service.disconnect(device);
            return service.disconnect(device);
        }
        }


        @Override
        public boolean setConnectionPolicy(BluetoothDevice device, int connectionPolicy) {
            PanService service = getService();
            if (service == null) {
                return false;
            }
            return service.setConnectionPolicy(device, connectionPolicy);
        }

        @Override
        @Override
        public int getConnectionState(BluetoothDevice device) {
        public int getConnectionState(BluetoothDevice device) {
            PanService service = getService();
            PanService service = getService();