summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Shi <kaishi@google.com>2022-04-19 15:46:04 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-04-19 15:46:04 +0000
commit32ec4cdc9f316fe6bda905022fde969371281fe1 (patch)
treedfd6f1b8b99b48ee95d44e331e5a536aed77ae95
parentd9c6d71bafd2cbf5dc2d5b00e175e14a3112fbd9 (diff)
parenta68572f0f423a830e2557b0ff1b6cc817f90b16e (diff)
downloadUwb-32ec4cdc9f316fe6bda905022fde969371281fe1.tar.gz
Merge "Report device error count" into tm-dev am: a68572f0f4
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Uwb/+/17802714 Change-Id: I4579d0f2e0c33b8ac7255f45b7ad2249dda4d3c7 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--service/java/com/android/server/uwb/UwbMetrics.java52
-rw-r--r--service/java/com/android/server/uwb/UwbServiceCore.java15
-rw-r--r--service/java/com/android/server/uwb/UwbServiceImpl.java1
-rw-r--r--service/tests/src/com/android/server/uwb/UwbMetricsTest.java14
4 files changed, 78 insertions, 4 deletions
diff --git a/service/java/com/android/server/uwb/UwbMetrics.java b/service/java/com/android/server/uwb/UwbMetrics.java
index 017860d5..ffbb0c4e 100644
--- a/service/java/com/android/server/uwb/UwbMetrics.java
+++ b/service/java/com/android/server/uwb/UwbMetrics.java
@@ -437,25 +437,69 @@ public class UwbMetrics {
}
}
+ private int mNumDeviceInitSuccess = 0;
+ private int mNumDeviceInitFailure = 0;
+ private int mNumDeviceStatusError = 0;
+ private int mNumUciGenericError = 0;
+
+ /**
+ * Increment the count of device initialization success
+ */
+ public synchronized void incrementDeviceInitSuccessCount() {
+ mNumDeviceInitSuccess++;
+ }
+
+ /**
+ * Increment the count of device initialization failure
+ */
+ public synchronized void incrementDeviceInitFailureCount() {
+ mNumDeviceInitFailure++;
+ UwbStatsLog.write(UwbStatsLog.UWB_DEVICE_ERROR_REPORTED,
+ UwbStatsLog.UWB_DEVICE_ERROR_REPORTED__TYPE__INIT_ERROR);
+ }
+
+ /**
+ * Increment the count of device status error
+ */
+ public synchronized void incrementDeviceStatusErrorCount() {
+ mNumDeviceStatusError++;
+ UwbStatsLog.write(UwbStatsLog.UWB_DEVICE_ERROR_REPORTED,
+ UwbStatsLog.UWB_DEVICE_ERROR_REPORTED__TYPE__DEVICE_STATUS_ERROR);
+ }
+
+ /**
+ * Increment the count of UCI generic error which will trigger UCI command retry
+ */
+ public synchronized void incrementUciGenericErrorCount() {
+ mNumUciGenericError++;
+ UwbStatsLog.write(UwbStatsLog.UWB_DEVICE_ERROR_REPORTED,
+ UwbStatsLog.UWB_DEVICE_ERROR_REPORTED__TYPE__UCI_GENERIC_ERROR);
+ }
+
/**
* Dump the UWB logs
*/
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
synchronized (mLock) {
- pw.println("Dump of UwbMetrics");
- pw.println("mRangingSessionList");
+ pw.println("---- Dump of UwbMetrics ----");
+ pw.println("---- mRangingSessionList ----");
for (RangingSessionStats stats: mRangingSessionList) {
pw.println(stats.toString());
}
- pw.println("mOpenedSessionMap");
+ pw.println("---- mOpenedSessionMap ----");
for (int i = 0; i < mOpenedSessionMap.size(); i++) {
pw.println(mOpenedSessionMap.valueAt(i).toString());
}
- pw.println("mRangingReportList");
+ pw.println("---- mRangingReportList ----");
for (RangingReportEvent event: mRangingReportList) {
pw.println(event.toString());
}
pw.println("mNumApps=" + mNumApps);
+ pw.println("---- Device operation success/error count ----");
+ pw.println("mNumDeviceInitSuccess = " + mNumDeviceInitSuccess);
+ pw.println("mNumDeviceInitFailure = " + mNumDeviceInitFailure);
+ pw.println("mNumDeviceStatusError = " + mNumDeviceStatusError);
+ pw.println("mNumUciGenericError = " + mNumUciGenericError);
}
}
}
diff --git a/service/java/com/android/server/uwb/UwbServiceCore.java b/service/java/com/android/server/uwb/UwbServiceCore.java
index 6689100a..d97ccf80 100644
--- a/service/java/com/android/server/uwb/UwbServiceCore.java
+++ b/service/java/com/android/server/uwb/UwbServiceCore.java
@@ -59,6 +59,8 @@ import com.google.uwb.support.fira.FiraRangingReconfigureParams;
import com.google.uwb.support.generic.GenericParams;
import com.google.uwb.support.generic.GenericSpecificationParams;
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
@@ -176,6 +178,7 @@ public class UwbServiceCore implements INativeUwbManager.DeviceNotification,
// TODO(b/227488208): Should we try to restart (like wifi) instead?
if ((byte) deviceState == UwbUciConstants.DEVICE_STATE_ERROR) {
Log.e(TAG, "Error device status received. Disabling...");
+ mUwbMetrics.incrementDeviceStatusErrorCount();
setEnabled(false);
return;
}
@@ -212,6 +215,7 @@ public class UwbServiceCore implements INativeUwbManager.DeviceNotification,
@Override
public void onCoreGenericErrorNotificationReceived(int status) {
Log.e(TAG, "onCoreGenericErrorNotificationReceived status = " + status);
+ mUwbMetrics.incrementUciGenericErrorCount();
}
@Override
@@ -516,11 +520,13 @@ public class UwbServiceCore implements INativeUwbManager.DeviceNotification,
try {
if (!mNativeUwbManager.doInitialize()) {
Log.e(TAG, "Error enabling UWB");
+ mUwbMetrics.incrementDeviceInitFailureCount();
updateState(AdapterStateCallback.STATE_DISABLED,
StateChangeReason.SYSTEM_POLICY);
} else {
Log.i(TAG, "Initialization success");
/* TODO : keep it until MW, FW fix b/196943897 */
+ mUwbMetrics.incrementDeviceInitSuccessCount();
handleDeviceStatusNotification(UwbUciConstants.DEVICE_STATE_READY);
// Set country code on every enable.
mUwbCountryCode.setCountryCode(true);
@@ -626,4 +632,13 @@ public class UwbServiceCore implements INativeUwbManager.DeviceNotification,
mAdapterMap.remove(mPid);
}
}
+
+ /**
+ * Dump the UWB service status
+ */
+ public synchronized void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ pw.println("---- Dump of UwbServiceCore ----");
+ pw.println("device state = " + getDeviceStateString(mState));
+ pw.println("mLastStateChangedReason = " + mLastStateChangedReason);
+ }
}
diff --git a/service/java/com/android/server/uwb/UwbServiceImpl.java b/service/java/com/android/server/uwb/UwbServiceImpl.java
index 5e41c632..dfb396fc 100644
--- a/service/java/com/android/server/uwb/UwbServiceImpl.java
+++ b/service/java/com/android/server/uwb/UwbServiceImpl.java
@@ -87,6 +87,7 @@ public class UwbServiceImpl extends IUwbAdapter.Stub {
}
mUwbSettingsStore.dump(fd, pw, args);
mUwbInjector.getUwbMetrics().dump(fd, pw, args);
+ mUwbServiceCore.dump(fd, pw, args);
mUwbInjector.getUwbCountryCode().dump(fd, pw, args);
}
diff --git a/service/tests/src/com/android/server/uwb/UwbMetricsTest.java b/service/tests/src/com/android/server/uwb/UwbMetricsTest.java
index 00d91a30..c0fe2e4c 100644
--- a/service/tests/src/com/android/server/uwb/UwbMetricsTest.java
+++ b/service/tests/src/com/android/server/uwb/UwbMetricsTest.java
@@ -264,6 +264,20 @@ public class UwbMetricsTest {
}
@Test
+ public void testReportDeviceSuccessErrorCount() throws Exception {
+ mUwbMetrics.incrementDeviceInitFailureCount();
+ ExtendedMockito.verify(() -> UwbStatsLog.write(UwbStatsLog.UWB_DEVICE_ERROR_REPORTED,
+ UwbStatsLog.UWB_DEVICE_ERROR_REPORTED__TYPE__INIT_ERROR));
+ mUwbMetrics.incrementDeviceInitSuccessCount();
+ mUwbMetrics.incrementDeviceStatusErrorCount();
+ ExtendedMockito.verify(() -> UwbStatsLog.write(UwbStatsLog.UWB_DEVICE_ERROR_REPORTED,
+ UwbStatsLog.UWB_DEVICE_ERROR_REPORTED__TYPE__DEVICE_STATUS_ERROR));
+ mUwbMetrics.incrementUciGenericErrorCount();
+ ExtendedMockito.verify(() -> UwbStatsLog.write(UwbStatsLog.UWB_DEVICE_ERROR_REPORTED,
+ UwbStatsLog.UWB_DEVICE_ERROR_REPORTED__TYPE__UCI_GENERIC_ERROR));
+ }
+
+ @Test
public void testDumpStatsNoCrash() throws Exception {
mUwbMetrics.logRangingInitEvent(mUwbSession, UwbUciConstants.STATUS_CODE_OK);
mUwbMetrics.logRangingInitEvent(mUwbSession,