summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorJoy Babafemi <jbabs@google.com>2021-04-26 21:52:46 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2021-04-26 21:52:46 +0000
commitf9169bbb09eeba0c699e50aa83f2d204a62aa324 (patch)
tree3ec33cc96a40aa520d5bef92392f66db269418de /core/java/android
parente7a1ee828d22a5c2085a48b1de103135e1bdd236 (diff)
parentadf4270f69b5f7b9318ea7b5db0f138fadd3f16b (diff)
Merge "UWB: Add getAdapterState System API"
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/uwb/AdapterStateListener.java28
-rw-r--r--core/java/android/uwb/IUwbAdapter.aidl12
-rw-r--r--core/java/android/uwb/UwbManager.java17
3 files changed, 42 insertions, 15 deletions
diff --git a/core/java/android/uwb/AdapterStateListener.java b/core/java/android/uwb/AdapterStateListener.java
index b9900951591f..91847f740953 100644
--- a/core/java/android/uwb/AdapterStateListener.java
+++ b/core/java/android/uwb/AdapterStateListener.java
@@ -68,8 +68,7 @@ public class AdapterStateListener extends IUwbAdapterStateCallbacks.Stub {
mIsRegistered = true;
} catch (RemoteException e) {
Log.w(TAG, "Failed to register adapter state callback");
- executor.execute(() -> callback.onStateChanged(mAdapterState,
- AdapterStateCallback.STATE_CHANGED_REASON_ERROR_UNKNOWN));
+ throw e.rethrowFromSystemServer();
}
} else {
sendCurrentState(callback);
@@ -95,6 +94,7 @@ public class AdapterStateListener extends IUwbAdapterStateCallbacks.Stub {
mAdapter.unregisterAdapterStateCallbacks(this);
} catch (RemoteException e) {
Log.w(TAG, "Failed to unregister AdapterStateCallback with service");
+ throw e.rethrowFromSystemServer();
}
mIsRegistered = false;
}
@@ -115,24 +115,24 @@ public class AdapterStateListener extends IUwbAdapterStateCallbacks.Stub {
mAdapter.setEnabled(isEnabled);
} catch (RemoteException e) {
Log.w(TAG, "Failed to set adapter state");
- sendErrorState();
+ throw e.rethrowFromSystemServer();
}
}
}
}
- private void sendErrorState() {
+ /**
+ * Gets the adapter enabled state
+ *
+ * @return integer representing adapter enabled state
+ */
+ public int getAdapterState() {
synchronized (this) {
- for (AdapterStateCallback callback: mCallbackMap.keySet()) {
- Executor executor = mCallbackMap.get(callback);
-
- final long identity = Binder.clearCallingIdentity();
- try {
- executor.execute(() -> callback.onStateChanged(
- mAdapterState, mAdapterStateChangeReason));
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
+ try {
+ return mAdapter.getAdapterState();
+ } catch (RemoteException e) {
+ Log.w(TAG, "Failed to get adapter state");
+ throw e.rethrowFromSystemServer();
}
}
}
diff --git a/core/java/android/uwb/IUwbAdapter.aidl b/core/java/android/uwb/IUwbAdapter.aidl
index 5804d04bdba7..e02e5eb25990 100644
--- a/core/java/android/uwb/IUwbAdapter.aidl
+++ b/core/java/android/uwb/IUwbAdapter.aidl
@@ -158,6 +158,18 @@ interface IUwbAdapter {
*/
void setEnabled(boolean enabled);
+ /**
+ * Returns the current enabled/disabled UWB state.
+ *
+ * Possible values are:
+ * IUwbAdapterState#STATE_DISABLED
+ * IUwbAdapterState#STATE_ENABLED_ACTIVE
+ * IUwbAdapterState#STATE_ENABLED_INACTIVE
+ *
+ * @return value representing enabled/disabled UWB state.
+ */
+ int getAdapterState();
+
/**
* The maximum allowed time to open a ranging session.
*/
diff --git a/core/java/android/uwb/UwbManager.java b/core/java/android/uwb/UwbManager.java
index 9116c49d0764..4edecdaad0dd 100644
--- a/core/java/android/uwb/UwbManager.java
+++ b/core/java/android/uwb/UwbManager.java
@@ -175,7 +175,7 @@ public final class UwbManager {
* <p>The provided callback will be invoked by the given {@link Executor}.
*
* <p>When first registering a callback, the callbacks's
- * {@link AdapterStateCallback#onStateChanged(boolean, int)} is immediately invoked to indicate
+ * {@link AdapterStateCallback#onStateChanged(int, int)} is immediately invoked to indicate
* the current state of the underlying UWB adapter with the most recent
* {@link AdapterStateCallback.StateChangedReason} that caused the change.
*
@@ -272,6 +272,21 @@ public final class UwbManager {
}
/**
+ * Returns the current enabled/disabled state for UWB.
+ *
+ * Possible values are:
+ * AdapterStateCallback#STATE_DISABLED
+ * AdapterStateCallback#STATE_ENABLED_INACTIVE
+ * AdapterStateCallback#STATE_ENABLED_ACTIVE
+ *
+ * @return value representing current enabled/disabled state for UWB.
+ * @hide
+ */
+ public @AdapterStateCallback.State int getAdapterState() {
+ return mAdapterStateListener.getAdapterState();
+ }
+
+ /**
* Disables or enables UWB for a user
*
* @param enabled value representing intent to disable or enable UWB. If true any subsequent