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

Commit 8d981af4 authored by William Escande's avatar William Escande
Browse files

AICS: getType implementation

Bug: 372328699
Flag: com.android.bluetooth.flags.aics_api
Test: atest CtsBluetoothTestCases
Change-Id: I116d5e08724183a0f8d1756b03405dfa8e4af09f
parent 70d537cd
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -92,6 +92,9 @@ interface IBluetoothVolumeControl {
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
    int getAudioInputStatus(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId);

    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
    int getAudioInputType(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId);

    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
    int getAudioInputGainSetting(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId);
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
+3 −4
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static com.android.bluetooth.Utils.RemoteExceptionIgnoringConsumer;
import static java.util.Objects.requireNonNull;

import android.bluetooth.AudioInputControl.AudioInputStatus;
import android.bluetooth.AudioInputControl.AudioInputType;
import android.bluetooth.AudioInputControl.GainMode;
import android.bluetooth.AudioInputControl.Mute;
import android.bluetooth.BluetoothDevice;
@@ -30,8 +31,6 @@ import android.util.Log;

import com.android.bluetooth.btservice.ProfileService;

import bluetooth.constants.AudioInputType;

class VolumeControlInputDescriptor {
    private static final String TAG = VolumeControlInputDescriptor.class.getSimpleName();

@@ -55,7 +54,7 @@ class VolumeControlInputDescriptor {
    private static class Descriptor {
        @AudioInputStatus int mStatus = bluetooth.constants.aics.AudioInputStatus.INACTIVE;

        int mType = AudioInputType.UNSPECIFIED;
        @AudioInputType int mType = bluetooth.constants.AudioInputType.UNSPECIFIED;

        int mGainSetting = 0;
        @Mute int mMute = bluetooth.constants.aics.Mute.DISABLED;
@@ -165,7 +164,7 @@ class VolumeControlInputDescriptor {
    }

    int getType(int id) {
        if (!isValidId(id)) return AudioInputType.UNSPECIFIED;
        if (!isValidId(id)) return bluetooth.constants.AudioInputType.UNSPECIFIED;
        return mVolumeInputs[id].mType;
    }

+2 −1
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import static com.android.bluetooth.vc.VolumeControlStackEvent.EVENT_TYPE_VOLUME
import static java.util.Objects.requireNonNull;

import android.bluetooth.AudioInputControl.AudioInputStatus;
import android.bluetooth.AudioInputControl.AudioInputType;
import android.bluetooth.AudioInputControl.GainMode;
import android.bluetooth.AudioInputControl.Mute;
import android.bluetooth.BluetoothDevice;
@@ -183,7 +184,7 @@ class VolumeControlNativeCallback {
    }

    @VisibleForTesting
    void onExtAudioInTypeChanged(int id, int type, byte[] address) {
    void onExtAudioInTypeChanged(int id, @AudioInputType int type, byte[] address) {
        sendMessageToService(s -> s.onExtAudioInTypeChanged(getDevice(address), id, type));
    }

+13 −8
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import static java.util.Objects.requireNonNullElseGet;

import android.annotation.RequiresPermission;
import android.bluetooth.AudioInputControl.AudioInputStatus;
import android.bluetooth.AudioInputControl.AudioInputType;
import android.bluetooth.AudioInputControl.GainMode;
import android.bluetooth.AudioInputControl.Mute;
import android.bluetooth.BluetoothAdapter;
@@ -69,8 +70,6 @@ import com.android.internal.annotations.VisibleForTesting;

import libcore.util.SneakyThrow;

import bluetooth.constants.AudioInputType;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -1128,7 +1127,7 @@ public class VolumeControlService extends ProfileService {
        input.onStatusChanged(id, status);
    }

    void onExtAudioInTypeChanged(BluetoothDevice device, int id, int type) {
    void onExtAudioInTypeChanged(BluetoothDevice device, int id, @AudioInputType int type) {
        String logInfo =
                "onExtAudioInTypeChanged("
                        + ("device=" + device)
@@ -1142,11 +1141,6 @@ public class VolumeControlService extends ProfileService {
            return;
        }

        if (type > AudioInputType.AMBIENT) {
            Log.e(TAG, logInfo + ": Invalid type argument");
            return;
        }

        Log.d(TAG, logInfo);
        input.setType(id, type);
    }
@@ -1866,6 +1860,17 @@ public class VolumeControlService extends ProfileService {
                    (int) bluetooth.constants.aics.AudioInputStatus.INACTIVE);
        }

        @Override
        public @AudioInputType int getAudioInputType(
                AttributionSource source, BluetoothDevice device, int instanceId) {
            Log.d(TAG, "getAudioInputType(" + device + ", " + instanceId + ")");
            return aicsWrapper(
                    source,
                    device,
                    i -> i.getType(instanceId),
                    bluetooth.constants.AudioInputType.UNSPECIFIED);
        }

        @Override
        public int getAudioInputGainSetting(
                AttributionSource source, BluetoothDevice device, int instanceId) {
+9 −7
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.*;

import android.bluetooth.AudioInputControl.AudioInputStatus;
import android.bluetooth.AudioInputControl.AudioInputType;
import android.bluetooth.AudioInputControl.GainMode;
import android.bluetooth.AudioInputControl.Mute;
import android.bluetooth.BluetoothAdapter;
@@ -107,23 +108,24 @@ public class VolumeControlInputDescriptorTest {

    @Test
    public void getType_whenNeverSet_defaultToUnspecified() {
        assertThat(mDescriptor.getType(VALID_ID)).isEqualTo(0); // AudioInputType.UNSPECIFIED);
        assertThat(mDescriptor.getType(VALID_ID))
                .isEqualTo(bluetooth.constants.AudioInputType.UNSPECIFIED);
    }

    @Test
    public void setType_withValidId_valueIsUpdated() {
        int newType = 7; // AudioInputType.AMBIENT;
        mDescriptor.setType(VALID_ID, newType);
        @AudioInputType int type = bluetooth.constants.AudioInputType.AMBIENT;
        mDescriptor.setType(VALID_ID, type);

        assertThat(mDescriptor.getType(VALID_ID)).isEqualTo(newType);
        assertThat(mDescriptor.getType(VALID_ID)).isEqualTo(type);
    }

    @Test
    public void setType_withInvalidId_valueIsNotUpdated() {
        int newType = 1; // AudioInputType.BLUETOOTH;
        mDescriptor.setType(INVALID_ID2, newType);
        @AudioInputType int type = bluetooth.constants.AudioInputType.BLUETOOTH;
        mDescriptor.setType(INVALID_ID2, type);

        assertThat(mDescriptor.getType(INVALID_ID2)).isNotEqualTo(newType);
        assertThat(mDescriptor.getType(INVALID_ID2)).isNotEqualTo(type);
    }

    @Test