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) {