Loading android/app/src/com/android/bluetooth/hfp/HeadsetStateMachine.java +10 −2 Original line number Original line Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.os.Build; import android.os.Looper; import android.os.Looper; import android.os.Message; import android.os.Message; import android.os.SystemClock; import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserHandle; import android.telephony.PhoneNumberUtils; import android.telephony.PhoneNumberUtils; import android.telephony.PhoneStateListener; import android.telephony.PhoneStateListener; Loading @@ -48,6 +49,7 @@ import com.android.bluetooth.Utils; import com.android.bluetooth.btservice.AdapterService; import com.android.bluetooth.btservice.AdapterService; import com.android.bluetooth.btservice.ProfileService; import com.android.bluetooth.btservice.ProfileService; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.bluetooth.flags.Flags; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.State; import com.android.internal.util.State; import com.android.internal.util.StateMachine; import com.android.internal.util.StateMachine; Loading Loading @@ -166,6 +168,10 @@ public class HeadsetStateMachine extends StateMachine { private BluetoothSinkAudioPolicy mHsClientAudioPolicy; private BluetoothSinkAudioPolicy mHsClientAudioPolicy; static final boolean IS_APTX_SUPPORT_ENABLED = Flags.hfpCodecAptxVoice() && SystemProperties.getBoolean("bluetooth.hfp.codec_aptx_voice.enabled", false); // Keys are AT commands, and values are the company IDs. // Keys are AT commands, and values are the company IDs. private static final Map<String, Integer> VENDOR_SPECIFIC_AT_COMMAND_COMPANY_ID; private static final Map<String, Integer> VENDOR_SPECIFIC_AT_COMMAND_COMPANY_ID; Loading Loading @@ -1685,8 +1691,10 @@ public class HeadsetStateMachine extends StateMachine { + (" hasSwbEnabled=" + mHasSwbLc3Enabled) + (" hasSwbEnabled=" + mHasSwbLc3Enabled) + (" hasAptXSwbEnabled=" + mHasSwbAptXEnabled)); + (" hasAptXSwbEnabled=" + mHasSwbAptXEnabled)); am.setParameters("bt_lc3_swb=" + (mHasSwbLc3Enabled ? "on" : "off")); am.setParameters("bt_lc3_swb=" + (mHasSwbLc3Enabled ? "on" : "off")); if (IS_APTX_SUPPORT_ENABLED) { /* AptX bt_swb: 0 -> on, 65535 -> off */ /* AptX bt_swb: 0 -> on, 65535 -> off */ am.setParameters("bt_swb=" + (mHasSwbAptXEnabled ? "0" : "65535")); am.setParameters("bt_swb=" + (mHasSwbAptXEnabled ? "0" : "65535")); } am.setBluetoothHeadsetProperties(getCurrentDeviceName(), mHasNrecEnabled, mHasWbsEnabled); am.setBluetoothHeadsetProperties(getCurrentDeviceName(), mHasNrecEnabled, mHasWbsEnabled); } } Loading android/app/tests/unit/Android.bp +1 −0 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,7 @@ java_defaults { "frameworks-base-testutils", "frameworks-base-testutils", "gson", "gson", "mockito-target", "mockito-target", "platform-test-annotations", "truth", "truth", ], ], Loading android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetStateMachineTest.java +11 −2 Original line number Original line Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.bluetooth.hfp; import static android.Manifest.permission.BLUETOOTH_CONNECT; import static android.Manifest.permission.BLUETOOTH_CONNECT; import static org.mockito.Mockito.*; import static org.mockito.Mockito.*; import static org.junit.Assume.assumeTrue; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothDevice; Loading @@ -36,7 +37,9 @@ import android.os.Build; import android.os.Bundle; import android.os.Bundle; import android.os.CancellationSignal; import android.os.CancellationSignal; import android.os.HandlerThread; import android.os.HandlerThread; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserHandle; import android.platform.test.annotations.RequiresFlagsEnabled; import android.provider.CallLog; import android.provider.CallLog; import android.provider.CallLog.Calls; import android.provider.CallLog.Calls; import android.telephony.PhoneNumberUtils; import android.telephony.PhoneNumberUtils; Loading @@ -55,6 +58,7 @@ import com.android.bluetooth.btservice.AdapterService; import com.android.bluetooth.btservice.RemoteDevices; import com.android.bluetooth.btservice.RemoteDevices; import com.android.bluetooth.btservice.SilenceDeviceManager; import com.android.bluetooth.btservice.SilenceDeviceManager; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.bluetooth.flags.Flags; import org.hamcrest.core.IsInstanceOf; import org.hamcrest.core.IsInstanceOf; import org.junit.After; import org.junit.After; Loading Loading @@ -1613,7 +1617,9 @@ public class HeadsetStateMachineTest { /** Test setting audio parameters according to received SWB event. SWB AptX is enabled. */ /** Test setting audio parameters according to received SWB event. SWB AptX is enabled. */ @Test @Test @RequiresFlagsEnabled(Flags.FLAG_HFP_CODEC_APTX_VOICE) public void testSetAudioParameters_SwbAptxEnabled() { public void testSetAudioParameters_SwbAptxEnabled() { assumeTrue(SystemProperties.getBoolean("bluetooth.hfp.codec_aptx_voice.enabled", false)); setUpConnectedState(); setUpConnectedState(); mHeadsetStateMachine.sendMessage( mHeadsetStateMachine.sendMessage( HeadsetStateMachine.STACK_EVENT, HeadsetStateMachine.STACK_EVENT, Loading Loading @@ -1683,9 +1689,12 @@ public class HeadsetStateMachineTest { private void verifyAudioSystemSetParametersInvocation(boolean lc3Enabled, boolean aptxEnabled) { private void verifyAudioSystemSetParametersInvocation(boolean lc3Enabled, boolean aptxEnabled) { verify(mAudioManager, timeout(ASYNC_CALL_TIMEOUT_MILLIS)) verify(mAudioManager, timeout(ASYNC_CALL_TIMEOUT_MILLIS)) .setParameters(lc3Enabled ? "bt_lc3_swb=on" : "bt_lc3_swb=off"); .setParameters(lc3Enabled ? "bt_lc3_swb=on" : "bt_lc3_swb=off"); if (mHeadsetStateMachine.IS_APTX_SUPPORT_ENABLED) { verify(mAudioManager, timeout(ASYNC_CALL_TIMEOUT_MILLIS)) verify(mAudioManager, timeout(ASYNC_CALL_TIMEOUT_MILLIS)) .setParameters(aptxEnabled ? "bt_swb=0" : "bt_swb=65535"); .setParameters(aptxEnabled ? "bt_swb=0" : "bt_swb=65535"); } } } /** /** * set sink audio policy * set sink audio policy Loading Loading
android/app/src/com/android/bluetooth/hfp/HeadsetStateMachine.java +10 −2 Original line number Original line Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.os.Build; import android.os.Looper; import android.os.Looper; import android.os.Message; import android.os.Message; import android.os.SystemClock; import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserHandle; import android.telephony.PhoneNumberUtils; import android.telephony.PhoneNumberUtils; import android.telephony.PhoneStateListener; import android.telephony.PhoneStateListener; Loading @@ -48,6 +49,7 @@ import com.android.bluetooth.Utils; import com.android.bluetooth.btservice.AdapterService; import com.android.bluetooth.btservice.AdapterService; import com.android.bluetooth.btservice.ProfileService; import com.android.bluetooth.btservice.ProfileService; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.bluetooth.flags.Flags; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.State; import com.android.internal.util.State; import com.android.internal.util.StateMachine; import com.android.internal.util.StateMachine; Loading Loading @@ -166,6 +168,10 @@ public class HeadsetStateMachine extends StateMachine { private BluetoothSinkAudioPolicy mHsClientAudioPolicy; private BluetoothSinkAudioPolicy mHsClientAudioPolicy; static final boolean IS_APTX_SUPPORT_ENABLED = Flags.hfpCodecAptxVoice() && SystemProperties.getBoolean("bluetooth.hfp.codec_aptx_voice.enabled", false); // Keys are AT commands, and values are the company IDs. // Keys are AT commands, and values are the company IDs. private static final Map<String, Integer> VENDOR_SPECIFIC_AT_COMMAND_COMPANY_ID; private static final Map<String, Integer> VENDOR_SPECIFIC_AT_COMMAND_COMPANY_ID; Loading Loading @@ -1685,8 +1691,10 @@ public class HeadsetStateMachine extends StateMachine { + (" hasSwbEnabled=" + mHasSwbLc3Enabled) + (" hasSwbEnabled=" + mHasSwbLc3Enabled) + (" hasAptXSwbEnabled=" + mHasSwbAptXEnabled)); + (" hasAptXSwbEnabled=" + mHasSwbAptXEnabled)); am.setParameters("bt_lc3_swb=" + (mHasSwbLc3Enabled ? "on" : "off")); am.setParameters("bt_lc3_swb=" + (mHasSwbLc3Enabled ? "on" : "off")); if (IS_APTX_SUPPORT_ENABLED) { /* AptX bt_swb: 0 -> on, 65535 -> off */ /* AptX bt_swb: 0 -> on, 65535 -> off */ am.setParameters("bt_swb=" + (mHasSwbAptXEnabled ? "0" : "65535")); am.setParameters("bt_swb=" + (mHasSwbAptXEnabled ? "0" : "65535")); } am.setBluetoothHeadsetProperties(getCurrentDeviceName(), mHasNrecEnabled, mHasWbsEnabled); am.setBluetoothHeadsetProperties(getCurrentDeviceName(), mHasNrecEnabled, mHasWbsEnabled); } } Loading
android/app/tests/unit/Android.bp +1 −0 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,7 @@ java_defaults { "frameworks-base-testutils", "frameworks-base-testutils", "gson", "gson", "mockito-target", "mockito-target", "platform-test-annotations", "truth", "truth", ], ], Loading
android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetStateMachineTest.java +11 −2 Original line number Original line Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.bluetooth.hfp; import static android.Manifest.permission.BLUETOOTH_CONNECT; import static android.Manifest.permission.BLUETOOTH_CONNECT; import static org.mockito.Mockito.*; import static org.mockito.Mockito.*; import static org.junit.Assume.assumeTrue; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothDevice; Loading @@ -36,7 +37,9 @@ import android.os.Build; import android.os.Bundle; import android.os.Bundle; import android.os.CancellationSignal; import android.os.CancellationSignal; import android.os.HandlerThread; import android.os.HandlerThread; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserHandle; import android.platform.test.annotations.RequiresFlagsEnabled; import android.provider.CallLog; import android.provider.CallLog; import android.provider.CallLog.Calls; import android.provider.CallLog.Calls; import android.telephony.PhoneNumberUtils; import android.telephony.PhoneNumberUtils; Loading @@ -55,6 +58,7 @@ import com.android.bluetooth.btservice.AdapterService; import com.android.bluetooth.btservice.RemoteDevices; import com.android.bluetooth.btservice.RemoteDevices; import com.android.bluetooth.btservice.SilenceDeviceManager; import com.android.bluetooth.btservice.SilenceDeviceManager; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.bluetooth.btservice.storage.DatabaseManager; import com.android.bluetooth.flags.Flags; import org.hamcrest.core.IsInstanceOf; import org.hamcrest.core.IsInstanceOf; import org.junit.After; import org.junit.After; Loading Loading @@ -1613,7 +1617,9 @@ public class HeadsetStateMachineTest { /** Test setting audio parameters according to received SWB event. SWB AptX is enabled. */ /** Test setting audio parameters according to received SWB event. SWB AptX is enabled. */ @Test @Test @RequiresFlagsEnabled(Flags.FLAG_HFP_CODEC_APTX_VOICE) public void testSetAudioParameters_SwbAptxEnabled() { public void testSetAudioParameters_SwbAptxEnabled() { assumeTrue(SystemProperties.getBoolean("bluetooth.hfp.codec_aptx_voice.enabled", false)); setUpConnectedState(); setUpConnectedState(); mHeadsetStateMachine.sendMessage( mHeadsetStateMachine.sendMessage( HeadsetStateMachine.STACK_EVENT, HeadsetStateMachine.STACK_EVENT, Loading Loading @@ -1683,9 +1689,12 @@ public class HeadsetStateMachineTest { private void verifyAudioSystemSetParametersInvocation(boolean lc3Enabled, boolean aptxEnabled) { private void verifyAudioSystemSetParametersInvocation(boolean lc3Enabled, boolean aptxEnabled) { verify(mAudioManager, timeout(ASYNC_CALL_TIMEOUT_MILLIS)) verify(mAudioManager, timeout(ASYNC_CALL_TIMEOUT_MILLIS)) .setParameters(lc3Enabled ? "bt_lc3_swb=on" : "bt_lc3_swb=off"); .setParameters(lc3Enabled ? "bt_lc3_swb=on" : "bt_lc3_swb=off"); if (mHeadsetStateMachine.IS_APTX_SUPPORT_ENABLED) { verify(mAudioManager, timeout(ASYNC_CALL_TIMEOUT_MILLIS)) verify(mAudioManager, timeout(ASYNC_CALL_TIMEOUT_MILLIS)) .setParameters(aptxEnabled ? "bt_swb=0" : "bt_swb=65535"); .setParameters(aptxEnabled ? "bt_swb=0" : "bt_swb=65535"); } } } /** /** * set sink audio policy * set sink audio policy Loading