Fix for StandardDeviation test.
Cap the maxBandWidth and the minBandWith to the max, min frequencies reportd by the sensor.
Bug: 23772471
Change-Id: I9b7c960913871b63aae732252dc8b6f89886fd79
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorEnvironment.java b/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorEnvironment.java
index 6156d3d..47c8313 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorEnvironment.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorEnvironment.java
@@ -223,7 +223,7 @@
if (mSamplingPeriodUs == SensorManager.SENSOR_DELAY_FASTEST) {
return "fastest";
}
- return String.format("%.0fhz", getFrequencyHz());
+ return String.format("%.2fhz", getFrequencyHz());
}
/**
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/FrequencyVerification.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/FrequencyVerification.java
index cf34f28..2f4777b 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/FrequencyVerification.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/FrequencyVerification.java
@@ -128,9 +128,9 @@
stats.addValue(SensorStats.FREQUENCY_KEY, measuredFrequencyHz);
stats.addValue(PASSED_KEY, !failed);
String resultString = String.format(
- "Requested \"%s\" at %.2fHz (expecting between %.2fHz and %.2fHz, measured %.2fHz)",
+ "Requested \"%s\" at %s (expecting between %.2fHz and %.2fHz, measured %.2fHz)",
environment.getSensor().getName(),
- environment.getFrequencyHz(),
+ environment.getFrequencyString(),
mLowerThresholdHz,
mUpperThresholdHz,
measuredFrequencyHz);
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/StandardDeviationVerification.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/StandardDeviationVerification.java
index 1e1c950..1b66e6a 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/StandardDeviationVerification.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/StandardDeviationVerification.java
@@ -24,8 +24,10 @@
import android.hardware.cts.helpers.SensorStats;
import android.hardware.cts.helpers.TestSensorEnvironment;
import android.hardware.cts.helpers.TestSensorEvent;
+import android.hardware.cts.helpers.SensorCtsHelper;
import android.util.Log;
+import java.util.concurrent.TimeUnit;
import java.util.HashMap;
import java.util.Map;
@@ -66,18 +68,37 @@
*/
public static StandardDeviationVerification getDefault(TestSensorEnvironment environment) {
int sensorType = environment.getSensor().getType();
- float mGraceFactorAccelGyro = 2.0f;
- float mGraceFactorMagPressure = 4.0f;
- float mMaxBandWidth = (float) environment.getFrequencyHz();
- float mAccelNoise = (float)(mGraceFactorAccelGyro * Math.sqrt(mMaxBandWidth) * (9.81 * 0.0004));
- float mGyroNoise = (float)(mGraceFactorAccelGyro * Math.sqrt(mMaxBandWidth) * (Math.PI/180.0 * 0.014));
- float mMagNoise = (float)((mGraceFactorMagPressure) * 0.5); // Allow extra grace for mag
- float mPressureNoise = (float)(mGraceFactorMagPressure * 0.02 * (float)Math.sqrt(mMaxBandWidth)); // Allow extra grace for pressure
+ float graceFactorAccelGyro = 2.0f;
+ float graceFactorMagPressure = 4.0f;
+ float currOperatingFreq = (float) environment.getFrequencyHz();
+ float maxBandWidth = (float)SensorCtsHelper.getFrequency(
+ environment.getSensor().getMinDelay(), TimeUnit.MICROSECONDS);
+ float minBandWidth = (float) SensorCtsHelper.getFrequency(
+ environment.getSensor().getMaxDelay(), TimeUnit.MICROSECONDS);
+
+ if (Float.isInfinite(currOperatingFreq)) {
+ currOperatingFreq = maxBandWidth;
+ }
+
+ if (currOperatingFreq > maxBandWidth && !Float.isInfinite(maxBandWidth)) {
+ currOperatingFreq = maxBandWidth;
+ }
+
+ if (currOperatingFreq < minBandWidth && !Float.isInfinite(minBandWidth)) {
+ currOperatingFreq = minBandWidth;
+ }
+
+ float mAccelNoise = (float)(graceFactorAccelGyro * Math.sqrt(currOperatingFreq) *
+ (9.81 * 0.0004));
+ float mGyroNoise = (float)(graceFactorAccelGyro * Math.sqrt(currOperatingFreq) *
+ (Math.PI/180.0 * 0.014));
+ float mMagNoise = (float)((graceFactorMagPressure) * 0.5); // Allow extra grace for mag
+ float mPressureNoise = (float)(graceFactorMagPressure * 0.02 *
+ (float)Math.sqrt(currOperatingFreq)); // Allow extra grace for pressure
if (!DEFAULTS.containsKey(sensorType)) {
return null;
}
-
boolean hasHifiSensors = environment.getContext().getPackageManager().hasSystemFeature(
PackageManager.FEATURE_HIFI_SENSORS);
@@ -132,9 +153,9 @@
if (stdDevs[i] > mThreshold[i]) {
failed = true;
}
- stddevSb.append(String.format("%.3f", stdDevs[i]));
+ stddevSb.append(String.format("%.6f", stdDevs[i]));
if (i != stdDevs.length - 1) stddevSb.append(", ");
- expectedSb.append(String.format("<%.3f", mThreshold[i]));
+ expectedSb.append(String.format("<%.6f", mThreshold[i]));
if (i != stdDevs.length - 1) expectedSb.append(", ");
}
if (stdDevs.length > 1) {