diff options
author | Kai Shi <kaishi@google.com> | 2022-04-19 15:46:04 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-04-19 15:46:04 +0000 |
commit | 32ec4cdc9f316fe6bda905022fde969371281fe1 (patch) | |
tree | dfd6f1b8b99b48ee95d44e331e5a536aed77ae95 | |
parent | d9c6d71bafd2cbf5dc2d5b00e175e14a3112fbd9 (diff) | |
parent | a68572f0f423a830e2557b0ff1b6cc817f90b16e (diff) | |
download | Uwb-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>
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, |