diff options
author | Ayush Jain <ayushjain@google.com> | 2024-03-14 05:17:26 +0000 |
---|---|---|
committer | Ayush Jain <ayushjain@google.com> | 2024-03-15 16:50:22 +0000 |
commit | 7323225721723e5ab7901880cb900f75943bb5e0 (patch) | |
tree | eced8d3998498f7abd7ea09811e1e90788be0198 | |
parent | 371235db5f0f7565fbd7aa231aaaf6e40b0554b0 (diff) | |
download | Uwb-7323225721723e5ab7901880cb900f75943bb5e0.tar.gz |
Add "reason" parameter to new Hybrid Session Callback APIs.
We match the existing UWB callback failure APIs by adding an integer reason parameter.
Bug: 329240252
Test: atest ServiceUwbTests FrameworkUwbTests CtsUwbTestCases
Change-Id: I1d72a8db8a7d3068fffc3b3aaff9f0c619dd92af
9 files changed, 82 insertions, 34 deletions
diff --git a/framework/api/system-current.txt b/framework/api/system-current.txt index 3855e2ca..82ab5136 100644 --- a/framework/api/system-current.txt +++ b/framework/api/system-current.txt @@ -132,9 +132,9 @@ package android.uwb { method public default void onDataSent(@NonNull android.uwb.UwbAddress, @NonNull android.os.PersistableBundle); method @FlaggedApi("com.android.uwb.flags.data_transfer_phase_config") public default void onDataTransferPhaseConfigFailed(int, @NonNull android.os.PersistableBundle); method @FlaggedApi("com.android.uwb.flags.data_transfer_phase_config") public default void onDataTransferPhaseConfigured(@NonNull android.os.PersistableBundle); - method @FlaggedApi("com.android.uwb.flags.hybrid_session_support") public default void onHybridSessionControleeConfigurationFailed(@NonNull android.os.PersistableBundle); + method @FlaggedApi("com.android.uwb.flags.hybrid_session_support") public default void onHybridSessionControleeConfigurationFailed(int, @NonNull android.os.PersistableBundle); method @FlaggedApi("com.android.uwb.flags.hybrid_session_support") public default void onHybridSessionControleeConfigured(@NonNull android.os.PersistableBundle); - method @FlaggedApi("com.android.uwb.flags.hybrid_session_support") public default void onHybridSessionControllerConfigurationFailed(@NonNull android.os.PersistableBundle); + method @FlaggedApi("com.android.uwb.flags.hybrid_session_support") public default void onHybridSessionControllerConfigurationFailed(int, @NonNull android.os.PersistableBundle); method @FlaggedApi("com.android.uwb.flags.hybrid_session_support") public default void onHybridSessionControllerConfigured(@NonNull android.os.PersistableBundle); method public void onOpenFailed(int, @NonNull android.os.PersistableBundle); method public void onOpened(@NonNull android.uwb.RangingSession); diff --git a/framework/java/android/uwb/IUwbRangingCallbacks.aidl b/framework/java/android/uwb/IUwbRangingCallbacks.aidl index 42505711..5c422141 100644 --- a/framework/java/android/uwb/IUwbRangingCallbacks.aidl +++ b/framework/java/android/uwb/IUwbRangingCallbacks.aidl @@ -286,7 +286,7 @@ oneway interface IUwbRangingCallbacks { * success. */ void onHybridSessionControllerConfigured(in SessionHandle sessionHandle, - in PersistableBundle parameters); + in PersistableBundle parameters); /** * Invoked when set hybrid session controller configuration via {@link RangingSession# @@ -298,7 +298,7 @@ oneway interface IUwbRangingCallbacks { * failure. */ void onHybridSessionControllerConfigurationFailed(in SessionHandle sessionHandle, - in PersistableBundle parameters); + RangingChangeReason reason, in PersistableBundle parameters); /** * Invoked when set hybrid session Controlee configuration via {@link RangingSession# @@ -310,7 +310,7 @@ oneway interface IUwbRangingCallbacks { * success. */ void onHybridSessionControleeConfigured(in SessionHandle sessionHandle, - in PersistableBundle parameters); + in PersistableBundle parameters); /** * Invoked when set hybrid session Controlee configuration via {@link RangingSession# @@ -322,7 +322,7 @@ oneway interface IUwbRangingCallbacks { * failure. */ void onHybridSessionControleeConfigurationFailed(in SessionHandle sessionHandle, - in PersistableBundle parameters); + RangingChangeReason reason, in PersistableBundle parameters); void onServiceDiscovered(in SessionHandle sessionHandle, in PersistableBundle parameters); diff --git a/framework/java/android/uwb/RangingManager.java b/framework/java/android/uwb/RangingManager.java index a40e51e3..4e887b32 100644 --- a/framework/java/android/uwb/RangingManager.java +++ b/framework/java/android/uwb/RangingManager.java @@ -490,7 +490,7 @@ public class RangingManager extends android.uwb.IUwbRangingCallbacks.Stub { @Override public void onHybridSessionControllerConfigurationFailed(SessionHandle sessionHandle, - PersistableBundle parameters) { + @RangingChangeReason int reason, PersistableBundle parameters) { synchronized (this) { if (!hasSession(sessionHandle)) { Log.w(mTag, "onHybridSessionControllerConfigurationFailed - received" @@ -499,7 +499,7 @@ public class RangingManager extends android.uwb.IUwbRangingCallbacks.Stub { } RangingSession session = mRangingSessionTable.get(sessionHandle); - session.onHybridSessionControllerConfigurationFailed(parameters); + session.onHybridSessionControllerConfigurationFailed(reason, parameters); } } @@ -520,7 +520,7 @@ public class RangingManager extends android.uwb.IUwbRangingCallbacks.Stub { @Override public void onHybridSessionControleeConfigurationFailed(SessionHandle sessionHandle, - PersistableBundle parameters) { + @RangingChangeReason int reason, PersistableBundle parameters) { synchronized (this) { if (!hasSession(sessionHandle)) { Log.w(mTag, "onHybridSessionControleeConfigurationFailed - received" @@ -529,7 +529,7 @@ public class RangingManager extends android.uwb.IUwbRangingCallbacks.Stub { } RangingSession session = mRangingSessionTable.get(sessionHandle); - session.onHybridSessionControleeConfigurationFailed(parameters); + session.onHybridSessionControleeConfigurationFailed(reason, parameters); } } diff --git a/framework/java/android/uwb/RangingSession.java b/framework/java/android/uwb/RangingSession.java index c11cdad7..5ff5279d 100644 --- a/framework/java/android/uwb/RangingSession.java +++ b/framework/java/android/uwb/RangingSession.java @@ -485,7 +485,7 @@ public final class RangingSession implements AutoCloseable { */ @FlaggedApi("com.android.uwb.flags.hybrid_session_support") default void onHybridSessionControllerConfigurationFailed( - @NonNull PersistableBundle parameters) { + @RangingChangeReason int reason, @NonNull PersistableBundle parameters) { } /** @@ -504,7 +504,7 @@ public final class RangingSession implements AutoCloseable { */ @FlaggedApi("com.android.uwb.flags.hybrid_session_support") default void onHybridSessionControleeConfigurationFailed( - @NonNull PersistableBundle parameters) {} + @RangingChangeReason int reason, @NonNull PersistableBundle parameters) {} } /** @@ -897,8 +897,8 @@ public final class RangingSession implements AutoCloseable { * is invoked. * * <p>On failing to set the hybrid controller configuration, - * {@link RangingSession.Callback#onHybridSessionControllerConfigurationFailed( - * PersistableBundle)} is invoked. + * {@link RangingSession.Callback#onHybridSessionControllerConfigurationFailed(int, + * PersistableBundle)} is invoked. * * @param params protocol specific parameters to configure the hybrid session controller * @throws RemoteException if a remote error occurred @@ -926,8 +926,8 @@ public final class RangingSession implements AutoCloseable { * is invoked. * * <p>On failing to set the hybrid Controlee configuration, - * {@link RangingSession.Callback#onHybridSessionControleeConfigurationFailed( - * PersistableBundle)} is invoked. + * {@link RangingSession.Callback#onHybridSessionControleeConfigurationFailed(int, + * PersistableBundle)} is invoked. * * @param params protocol specific parameters to configure the hybrid session Controlee * @throws RemoteException if a remote error occurred @@ -1331,7 +1331,8 @@ public final class RangingSession implements AutoCloseable { /** * @hide */ - public void onHybridSessionControllerConfigurationFailed(@NonNull PersistableBundle params) { + public void onHybridSessionControllerConfigurationFailed(@Callback.Reason int reason, + @NonNull PersistableBundle params) { if (!isOpen()) { Log.w(mTag, "onHybridSessionControllerConfigurationFailed invoked for non-open" + "session"); @@ -1340,7 +1341,8 @@ public final class RangingSession implements AutoCloseable { Log.v(mTag, "onHybridSessionControllerConfigurationFailed - sessionHandle: " + mSessionHandle); - executeCallback(() -> mCallback.onHybridSessionControllerConfigurationFailed(params)); + executeCallback(() -> mCallback.onHybridSessionControllerConfigurationFailed( + reason, params)); } /** @@ -1359,7 +1361,8 @@ public final class RangingSession implements AutoCloseable { /** * @hide */ - public void onHybridSessionControleeConfigurationFailed(@NonNull PersistableBundle params) { + public void onHybridSessionControleeConfigurationFailed(@Callback.Reason int reason, + @NonNull PersistableBundle params) { if (!isOpen()) { Log.w(mTag, "onHybridSessionControleeConfigurationFailed invoked for non-open" + "session"); @@ -1368,7 +1371,8 @@ public final class RangingSession implements AutoCloseable { Log.v(mTag, "onHybridSessionControleeConfigurationFailed - sessionHandle: " + mSessionHandle); - executeCallback(() -> mCallback.onHybridSessionControleeConfigurationFailed(params)); + executeCallback(() -> mCallback.onHybridSessionControleeConfigurationFailed( + reason, params)); } /** diff --git a/framework/tests/src/android/uwb/RangingManagerTest.java b/framework/tests/src/android/uwb/RangingManagerTest.java index 3e30c994..6279782e 100644 --- a/framework/tests/src/android/uwb/RangingManagerTest.java +++ b/framework/tests/src/android/uwb/RangingManagerTest.java @@ -278,17 +278,17 @@ public class RangingManagerTest { verify(callback, times(1)) .onHybridSessionControllerConfigured(eq(PARAMS)); - rangingManager.onHybridSessionControllerConfigurationFailed(handle, PARAMS); + rangingManager.onHybridSessionControllerConfigurationFailed(handle, REASON, PARAMS); verify(callback, times(1)) - .onHybridSessionControllerConfigurationFailed(eq(PARAMS)); + .onHybridSessionControllerConfigurationFailed(eq(REASON), eq(PARAMS)); rangingManager.onHybridSessionControleeConfigured(handle, PARAMS); verify(callback, times(1)) .onHybridSessionControleeConfigured(eq(PARAMS)); - rangingManager.onHybridSessionControleeConfigurationFailed(handle, PARAMS); + rangingManager.onHybridSessionControleeConfigurationFailed(handle, REASON, PARAMS); verify(callback, times(1)) - .onHybridSessionControleeConfigurationFailed(eq(PARAMS)); + .onHybridSessionControleeConfigurationFailed(eq(REASON), eq(PARAMS)); } rangingManager.onRangingClosed(handle, REASON, PARAMS); @@ -397,14 +397,16 @@ public class RangingManagerTest { rangingManager.onHybridSessionControllerConfigured(handle, PARAMS); verify(callback, never()).onHybridSessionControllerConfigured(eq(PARAMS)); - rangingManager.onHybridSessionControllerConfigurationFailed(handle, PARAMS); - verify(callback, never()).onHybridSessionControllerConfigurationFailed(eq(PARAMS)); + rangingManager.onHybridSessionControllerConfigurationFailed(handle, REASON, PARAMS); + verify(callback, never()).onHybridSessionControllerConfigurationFailed( + eq(REASON), eq(PARAMS)); rangingManager.onHybridSessionControleeConfigured(handle, PARAMS); verify(callback, never()).onHybridSessionControleeConfigured(eq(PARAMS)); - rangingManager.onHybridSessionControleeConfigurationFailed(handle, PARAMS); - verify(callback, never()).onHybridSessionControleeConfigurationFailed(eq(PARAMS)); + rangingManager.onHybridSessionControleeConfigurationFailed(handle, REASON, PARAMS); + verify(callback, never()).onHybridSessionControleeConfigurationFailed( + eq(REASON), eq(PARAMS)); } rangingManager.onRangingClosed(handle, REASON, PARAMS); diff --git a/framework/tests/src/android/uwb/RangingSessionTest.java b/framework/tests/src/android/uwb/RangingSessionTest.java index 772d95a1..4c54dc21 100644 --- a/framework/tests/src/android/uwb/RangingSessionTest.java +++ b/framework/tests/src/android/uwb/RangingSessionTest.java @@ -616,11 +616,11 @@ public class RangingSessionTest { // Simulate the session opening rangingSession.onRangingOpened(); - rangingSession.onHybridSessionControllerConfigurationFailed(PARAMS); + rangingSession.onHybridSessionControllerConfigurationFailed(REASON, PARAMS); // Verify that the callback method onHybridSessionControllerConfigurationFailed() is // called once with the correct parameters. - verify(callback).onHybridSessionControllerConfigurationFailed(PARAMS); + verify(callback).onHybridSessionControllerConfigurationFailed(REASON, PARAMS); } @Test @@ -703,11 +703,11 @@ public class RangingSessionTest { // Simulate the session opening rangingSession.onRangingOpened(); - rangingSession.onHybridSessionControleeConfigurationFailed(PARAMS); + rangingSession.onHybridSessionControleeConfigurationFailed(REASON, PARAMS); // Verify that the callback method onHybridSessionControleeConfigurationFailed() is // called once with the correct parameters. - verify(callback).onHybridSessionControleeConfigurationFailed(PARAMS); + verify(callback).onHybridSessionControleeConfigurationFailed(REASON, PARAMS); } @Test diff --git a/service/java/com/android/server/uwb/UwbSessionNotificationManager.java b/service/java/com/android/server/uwb/UwbSessionNotificationManager.java index 9045eae9..d32d003c 100644 --- a/service/java/com/android/server/uwb/UwbSessionNotificationManager.java +++ b/service/java/com/android/server/uwb/UwbSessionNotificationManager.java @@ -561,6 +561,7 @@ public class UwbSessionNotificationManager { IUwbRangingCallbacks uwbRangingCallbacks = uwbSession.getIUwbRangingCallbacks(); try { uwbRangingCallbacks.onHybridSessionControllerConfigurationFailed(sessionHandle, + UwbSessionNotificationHelper.convertUciStatusToApiReasonCode(status), UwbSessionNotificationHelper.convertUciStatusToParam( uwbSession.getProtocolName(), status)); Log.i(TAG, "IUwbRangingCallbacks - onHybridSessionControllerConfigurationFailed"); @@ -592,6 +593,7 @@ public class UwbSessionNotificationManager { IUwbRangingCallbacks uwbRangingCallbacks = uwbSession.getIUwbRangingCallbacks(); try { uwbRangingCallbacks.onHybridSessionControleeConfigurationFailed(sessionHandle, + UwbSessionNotificationHelper.convertUciStatusToApiReasonCode(status), UwbSessionNotificationHelper.convertUciStatusToParam( uwbSession.getProtocolName(), status)); Log.i(TAG, "IUwbRangingCallbacks - onHybridSessionControleeConfigurationFailed"); diff --git a/service/java/com/android/server/uwb/UwbShellCommand.java b/service/java/com/android/server/uwb/UwbShellCommand.java index 48572641..568bc234 100644 --- a/service/java/com/android/server/uwb/UwbShellCommand.java +++ b/service/java/com/android/server/uwb/UwbShellCommand.java @@ -402,13 +402,13 @@ public class UwbShellCommand extends BasicShellCommandHandler { PersistableBundle parameters) {} public void onHybridSessionControllerConfigurationFailed(SessionHandle sessionHandle, - PersistableBundle parameters) {} + int reason, PersistableBundle parameters) {} public void onHybridSessionControleeConfigured(SessionHandle sessionHandle, PersistableBundle parameters) {} public void onHybridSessionControleeConfigurationFailed(SessionHandle sessionHandle, - PersistableBundle parameters) {} + int reason, PersistableBundle parameters) {} } diff --git a/service/tests/src/com/android/server/uwb/UwbSessionNotificationManagerTest.java b/service/tests/src/com/android/server/uwb/UwbSessionNotificationManagerTest.java index 20cb8cb1..06d78bd8 100644 --- a/service/tests/src/com/android/server/uwb/UwbSessionNotificationManagerTest.java +++ b/service/tests/src/com/android/server/uwb/UwbSessionNotificationManagerTest.java @@ -684,6 +684,46 @@ public class UwbSessionNotificationManagerTest { } @Test + public void testOnHybridSessionControllerConfigured() throws Exception { + mUwbSessionNotificationManager.onHybridSessionControllerConfigured(mUwbSession, + UwbUciConstants.STATUS_CODE_OK); + + verify(mIUwbRangingCallbacks).onHybridSessionControllerConfigured(eq(mSessionHandle), + argThat(p -> (p.getInt("status_code")) == UwbUciConstants.STATUS_CODE_OK)); + } + + @Test + public void testOnHybridSessionControllerConfigurationFailed() throws Exception { + mUwbSessionNotificationManager.onHybridSessionControllerConfigurationFailed(mUwbSession, + UwbUciConstants.STATUS_CODE_FAILED); + + verify(mIUwbRangingCallbacks).onHybridSessionControllerConfigurationFailed( + eq(mSessionHandle), + eq(RangingChangeReason.UNKNOWN), + argThat(p -> (p.getInt("status_code")) == UwbUciConstants.STATUS_CODE_FAILED)); + } + + @Test + public void testOnHybridSessionControleeConfigured() throws Exception { + mUwbSessionNotificationManager.onHybridSessionControleeConfigured(mUwbSession, + UwbUciConstants.STATUS_CODE_OK); + + verify(mIUwbRangingCallbacks).onHybridSessionControleeConfigured(eq(mSessionHandle), + argThat(p -> (p.getInt("status_code")) == UwbUciConstants.STATUS_CODE_OK)); + } + + @Test + public void testOnHybridSessionControleeConfigurationFailed() throws Exception { + mUwbSessionNotificationManager.onHybridSessionControleeConfigurationFailed(mUwbSession, + UwbUciConstants.STATUS_CODE_FAILED); + + verify(mIUwbRangingCallbacks).onHybridSessionControleeConfigurationFailed( + eq(mSessionHandle), + eq(RangingChangeReason.UNKNOWN), + argThat(p -> (p.getInt("status_code")) == UwbUciConstants.STATUS_CODE_FAILED)); + } + + @Test public void testOnRangingRoundsUpdateStatus() throws RemoteException { PersistableBundle bundle = new PersistableBundle(); mUwbSessionNotificationManager.onRangingRoundsUpdateStatus(mUwbSession, bundle); |