summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAyush Jain <ayushjain@google.com>2024-03-14 05:17:26 +0000
committerAyush Jain <ayushjain@google.com>2024-03-15 16:50:22 +0000
commit7323225721723e5ab7901880cb900f75943bb5e0 (patch)
treeeced8d3998498f7abd7ea09811e1e90788be0198
parent371235db5f0f7565fbd7aa231aaaf6e40b0554b0 (diff)
downloadUwb-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
-rw-r--r--framework/api/system-current.txt4
-rw-r--r--framework/java/android/uwb/IUwbRangingCallbacks.aidl8
-rw-r--r--framework/java/android/uwb/RangingManager.java8
-rw-r--r--framework/java/android/uwb/RangingSession.java24
-rw-r--r--framework/tests/src/android/uwb/RangingManagerTest.java18
-rw-r--r--framework/tests/src/android/uwb/RangingSessionTest.java8
-rw-r--r--service/java/com/android/server/uwb/UwbSessionNotificationManager.java2
-rw-r--r--service/java/com/android/server/uwb/UwbShellCommand.java4
-rw-r--r--service/tests/src/com/android/server/uwb/UwbSessionNotificationManagerTest.java40
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);