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

Commit 12cae397 authored by Jaikumar Ganesh's avatar Jaikumar Ganesh
Browse files

Revert "Initial support of 2.1 pairing."

This reverts commit 228b2f3a.
parent 7ff6b74c
Loading
Loading
Loading
Loading
+2 −25
Original line number Diff line number Diff line
@@ -74,14 +74,6 @@ public class BluetoothDevice {
    /** An existing bond was explicitly revoked */
    public static final int UNBOND_REASON_REMOVED = 6;

    /* The user will be prompted to enter a pin */
    public static final int PAIRING_VARIANT_PIN = 0;
    /* The user will be prompted to enter a passkey */
    public static final int PAIRING_VARIANT_PASSKEY = 1;
    /* The user will be prompted to confirm the passkey displayed on the screen */
    public static final int PAIRING_VARIANT_CONFIRMATION = 2;


    private static final String TAG = "BluetoothDevice";

    private final IBluetoothDevice mService;
@@ -366,24 +358,9 @@ public class BluetoothDevice {
        } catch (RemoteException e) {Log.e(TAG, "", e);}
        return false;
    }

    public boolean setPasskey(String address, int passkey) {
        try {
            return mService.setPasskey(address, passkey);
        } catch (RemoteException e) {Log.e(TAG, "", e);}
        return false;
    }

    public boolean setPairingConfirmation(String address, boolean confirm) {
        try {
            return mService.setPairingConfirmation(address, confirm);
        } catch (RemoteException e) {Log.e(TAG, "", e);}
        return false;
    }

    public boolean cancelPairingUserInput(String address) {
    public boolean cancelPin(String address) {
        try {
            return mService.cancelPairingUserInput(address);
            return mService.cancelPin(address);
        } catch (RemoteException e) {Log.e(TAG, "", e);}
        return false;
    }
+0 −4
Original line number Diff line number Diff line
@@ -57,10 +57,6 @@ public interface BluetoothIntent {
        "android.bluetooth.intent.BOND_PREVIOUS_STATE";
    public static final String REASON =
        "android.bluetooth.intent.REASON";
    public static final String PAIRING_VARIANT =
        "android.bluetooth.intent.PAIRING_VARIANT";
    public static final String PASSKEY =
        "android.bluetooth.intent.PASSKEY";

    /** Broadcast when the local Bluetooth device state changes, for example
     *  when Bluetooth is enabled. Will contain int extra's BLUETOOTH_STATE and
+1 −4
Original line number Diff line number Diff line
@@ -54,8 +54,5 @@ interface IBluetoothDevice
    int getRemoteServiceChannel(in String address, String uuid);

    boolean setPin(in String address, in byte[] pin);
    boolean setPasskey(in String address, int passkey);
    boolean setPairingConfirmation(in String address, boolean confirm);
    boolean cancelPairingUserInput(in String address);

    boolean cancelPin(in String address);
}
+6 −40
Original line number Diff line number Diff line
@@ -959,38 +959,7 @@ public class BluetoothDeviceService extends IBluetoothDevice.Stub {
        return setPinNative(address, pinString, data.intValue());
    }

    public synchronized boolean setPasskey(String address, int passkey) {
        mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM,
                                                "Need BLUETOOTH_ADMIN permission");
        if (passkey < 0 || passkey > 999999 || !BluetoothDevice.checkBluetoothAddress(address)) {
            return false;
        }
        address = address.toUpperCase();
        Integer data = mEventLoop.getPasskeyAgentRequestData().remove(address);
        if (data == null) {
            Log.w(TAG, "setPasskey(" + address + ") called but no native data available, " +
                  "ignoring. Maybe the PasskeyAgent Request was cancelled by the remote device" +
                  " or by bluez.\n");
            return false;
        }
        return setPasskeyNative(address, passkey, data.intValue());
    }

    public synchronized boolean setPairingConfirmation(String address, boolean confirm) {
        mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM,
                                                "Need BLUETOOTH_ADMIN permission");
        address = address.toUpperCase();
        Integer data = mEventLoop.getPasskeyAgentRequestData().remove(address);
        if (data == null) {
            Log.w(TAG, "setPasskey(" + address + ") called but no native data available, " +
                  "ignoring. Maybe the PasskeyAgent Request was cancelled by the remote device" +
                  " or by bluez.\n");
            return false;
        }
        return setPairingConfirmationNative(address, confirm, data.intValue());
    }

    public synchronized boolean cancelPairingUserInput(String address) {
    public synchronized boolean cancelPin(String address) {
        mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM,
                                                "Need BLUETOOTH_ADMIN permission");
        if (!BluetoothDevice.checkBluetoothAddress(address)) {
@@ -999,12 +968,12 @@ public class BluetoothDeviceService extends IBluetoothDevice.Stub {
        address = address.toUpperCase();
        Integer data = mEventLoop.getPasskeyAgentRequestData().remove(address);
        if (data == null) {
            Log.w(TAG, "cancelUserInputNative(" + address + ") called but no native data " +
                "available, ignoring. Maybe the PasskeyAgent Request was already cancelled " +
                "by the remote or by bluez.\n");
            Log.w(TAG, "cancelPin(" + address + ") called but no native data available, " +
                  "ignoring. Maybe the PasskeyAgent Request was already cancelled by the remote " +
                  "or by bluez.\n");
            return false;
        }
        return cancelPairingUserInputNative(address, data.intValue());
        return cancelPinNative(address, data.intValue());
    }

    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@@ -1191,10 +1160,7 @@ public class BluetoothDeviceService extends IBluetoothDevice.Stub {
    private native int getDeviceServiceChannelNative(String objectPath, String uuid,
            int attributeId);

    private native boolean cancelPairingUserInputNative(String address, int nativeData);
    private native boolean cancelPinNative(String address, int nativeData);
    private native boolean setPinNative(String address, String pin, int nativeData);
    private native boolean setPasskeyNative(String address, int passkey, int nativeData);
    private native boolean setPairingConfirmationNative(String address, boolean confirm,
            int nativeData);

}
+9 −40
Original line number Diff line number Diff line
@@ -317,54 +317,24 @@ class BluetoothEventLoop {
            }
            mBluetoothService.setRemoteDeviceProperty(address, name, uuid);
        }

    }

    private String checkPairingRequestAndGetAddress(String objectPath, int nativeData) {
    private void onRequestPinCode(String objectPath, int nativeData) {
        String address = mBluetoothService.getAddressFromObjectPath(objectPath);
        if (address == null) {
            Log.e(TAG, "Unable to get device address in checkPairingRequestAndGetAddress, " +
                  "returning null");
            return null;
            Log.e(TAG, "Unable to get device address in onRequestPinCode, returning null");
            return;
        }
        address = address.toUpperCase();
        mPasskeyAgentRequestData.put(address, new Integer(nativeData));

        if (mBluetoothService.getBluetoothState() == BluetoothDevice.BLUETOOTH_STATE_TURNING_OFF) {
            // shutdown path
            mBluetoothService.cancelPairingUserInput(address);
            return null;
        }
        return address;
    }

    private void onRequestConfirmation(String objectPath, int passkey, int nativeData) {
        String address = checkPairingRequestAndGetAddress(objectPath, nativeData);
        if (address == null) return;

        Intent intent = new Intent(BluetoothIntent.PAIRING_REQUEST_ACTION);
        intent.putExtra(BluetoothIntent.ADDRESS, address);
        intent.putExtra(BluetoothIntent.PASSKEY, passkey);
        intent.putExtra(BluetoothIntent.PAIRING_VARIANT,
                BluetoothDevice.PAIRING_VARIANT_CONFIRMATION);
        mContext.sendBroadcast(intent, BLUETOOTH_ADMIN_PERM);
            mBluetoothService.cancelPin(address);
            return;
        }

    private void onRequestPasskey(String objectPath, int nativeData) {
        String address = checkPairingRequestAndGetAddress(objectPath, nativeData);
        if (address == null) return;

        Intent intent = new Intent(BluetoothIntent.PAIRING_REQUEST_ACTION);
        intent.putExtra(BluetoothIntent.ADDRESS, address);
        intent.putExtra(BluetoothIntent.PAIRING_VARIANT, BluetoothDevice.PAIRING_VARIANT_PASSKEY);
        mContext.sendBroadcast(intent, BLUETOOTH_ADMIN_PERM);
        return;
    }

    private void onRequestPinCode(String objectPath, int nativeData) {
        String address = checkPairingRequestAndGetAddress(objectPath, nativeData);
        if (address == null) return;

        if (mBluetoothService.getBondState().getBondState(address) ==
                BluetoothDevice.BOND_BONDING) {
            // we initiated the bonding
@@ -388,7 +358,6 @@ class BluetoothEventLoop {
        }
        Intent intent = new Intent(BluetoothIntent.PAIRING_REQUEST_ACTION);
        intent.putExtra(BluetoothIntent.ADDRESS, address);
        intent.putExtra(BluetoothIntent.PAIRING_VARIANT, BluetoothDevice.PAIRING_VARIANT_PIN);
        mContext.sendBroadcast(intent, BLUETOOTH_ADMIN_PERM);
        return;
    }
@@ -417,9 +386,9 @@ class BluetoothEventLoop {
    }

    private void onAgentCancel() {
        Intent intent = new Intent(BluetoothIntent.PAIRING_CANCEL_ACTION);
        mContext.sendBroadcast(intent, BLUETOOTH_ADMIN_PERM);
        return;
        // We immediately response to DBUS Authorize() so this should not
        // usually happen
        log("onAgentCancel");
    }

    private void onRestartRequired() {
Loading