diff options
author | 2024-08-06 16:52:26 +0100 | |
---|---|---|
committer | 2024-08-07 12:33:00 +0100 | |
commit | 01dda268ff27269fc6f4f3a02a68a42d793ba43d (patch) | |
tree | 8273bf38b2912d4741704650294e0d6942a1da40 | |
parent | 9ac72828e854860810a8c9ba66b7fec000055d42 (diff) |
Report vendor vibrations via VibrationReported atom
Add new field to count HAL interactions with new API to perform vendor
vibration effects. Also update the vibration type to the new VENDOR enum
value.
Fix: 345413438
Test: manual
Flag: EXEMPT proto auto generated method changes
Change-Id: I6517aa84c99dbacb637f3dba81fc0155ef4a43b2
3 files changed, 16 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/vibrator/HalVibration.java b/services/core/java/com/android/server/vibrator/HalVibration.java index 46bd7af159da..fe0cf5909970 100644 --- a/services/core/java/com/android/server/vibrator/HalVibration.java +++ b/services/core/java/com/android/server/vibrator/HalVibration.java @@ -170,9 +170,11 @@ final class HalVibration extends Vibration { /** Return {@link VibrationStats.StatsInfo} with read-only metrics about this vibration. */ public VibrationStats.StatsInfo getStatsInfo(long completionUptimeMillis) { - int vibrationType = isRepeating() - ? FrameworkStatsLog.VIBRATION_REPORTED__VIBRATION_TYPE__REPEATED - : FrameworkStatsLog.VIBRATION_REPORTED__VIBRATION_TYPE__SINGLE; + int vibrationType = mEffectToPlay.hasVendorEffects() + ? FrameworkStatsLog.VIBRATION_REPORTED__VIBRATION_TYPE__VENDOR + : isRepeating() + ? FrameworkStatsLog.VIBRATION_REPORTED__VIBRATION_TYPE__REPEATED + : FrameworkStatsLog.VIBRATION_REPORTED__VIBRATION_TYPE__SINGLE; return new VibrationStats.StatsInfo( callerInfo.uid, vibrationType, callerInfo.attrs.getUsage(), mStatus, stats, completionUptimeMillis); diff --git a/services/core/java/com/android/server/vibrator/PerformVendorEffectVibratorStep.java b/services/core/java/com/android/server/vibrator/PerformVendorEffectVibratorStep.java index 8f36118543ed..407f3d996798 100644 --- a/services/core/java/com/android/server/vibrator/PerformVendorEffectVibratorStep.java +++ b/services/core/java/com/android/server/vibrator/PerformVendorEffectVibratorStep.java @@ -52,6 +52,7 @@ final class PerformVendorEffectVibratorStep extends AbstractVibratorStep { long vibratorOnResult = controller.on(effect, getVibration().id); vibratorOnResult = Math.min(vibratorOnResult, VENDOR_EFFECT_MAX_DURATION_MS); handleVibratorOnResult(vibratorOnResult); + getVibration().stats.reportPerformVendorEffect(vibratorOnResult); return List.of(new CompleteEffectVibratorStep(conductor, startTime, /* cancelled= */ false, controller, mPendingVibratorOffDeadline)); } finally { diff --git a/services/core/java/com/android/server/vibrator/VibrationStats.java b/services/core/java/com/android/server/vibrator/VibrationStats.java index dd66809e7ae6..8179d6aea9ca 100644 --- a/services/core/java/com/android/server/vibrator/VibrationStats.java +++ b/services/core/java/com/android/server/vibrator/VibrationStats.java @@ -79,6 +79,7 @@ final class VibrationStats { private int mVibratorSetAmplitudeCount; private int mVibratorSetExternalControlCount; private int mVibratorPerformCount; + private int mVibratorPerformVendorCount; private int mVibratorComposeCount; private int mVibratorComposePwleCount; @@ -239,6 +240,11 @@ final class VibrationStats { } } + /** Report a call to vibrator method to trigger a vendor vibration effect. */ + void reportPerformVendorEffect(long halResult) { + mVibratorPerformVendorCount++; + } + /** Report a call to vibrator method to trigger a vibration as a composition of primitives. */ void reportComposePrimitives(long halResult, PrimitiveSegment[] primitives) { mVibratorComposeCount++; @@ -313,6 +319,7 @@ final class VibrationStats { public final int halOnCount; public final int halOffCount; public final int halPerformCount; + public final int halPerformVendorCount; public final int halSetAmplitudeCount; public final int halSetExternalControlCount; public final int halCompositionSize; @@ -357,6 +364,7 @@ final class VibrationStats { halOnCount = stats.mVibratorOnCount; halOffCount = stats.mVibratorOffCount; halPerformCount = stats.mVibratorPerformCount; + halPerformVendorCount = stats.mVibratorPerformVendorCount; halSetAmplitudeCount = stats.mVibratorSetAmplitudeCount; halSetExternalControlCount = stats.mVibratorSetExternalControlCount; halCompositionSize = stats.mVibrationCompositionTotalSize; @@ -390,7 +398,8 @@ final class VibrationStats { halOnCount, halOffCount, halPerformCount, halSetAmplitudeCount, halSetExternalControlCount, halSupportedCompositionPrimitivesUsed, halSupportedEffectsUsed, halUnsupportedCompositionPrimitivesUsed, - halUnsupportedEffectsUsed, halCompositionSize, halPwleSize, adaptiveScale); + halUnsupportedEffectsUsed, halCompositionSize, halPwleSize, adaptiveScale, + halPerformVendorCount); } private static int[] filteredKeys(SparseBooleanArray supportArray, boolean supported) { |