Implement setConfigInfo in car_ui_portrait

Bug: 279449598
Test: presubmit
Change-Id: I3d8e21fbc0a6b1093915087d6bfa293e9c3af06e
diff --git a/car_product/car_ui_portrait/apps/CarUiPortraitSystemUI/src/com/android/systemui/car/hvac/CarUiPortraitTemperatureControlView.java b/car_product/car_ui_portrait/apps/CarUiPortraitSystemUI/src/com/android/systemui/car/hvac/CarUiPortraitTemperatureControlView.java
index c23382f..f0c411f 100644
--- a/car_product/car_ui_portrait/apps/CarUiPortraitSystemUI/src/com/android/systemui/car/hvac/CarUiPortraitTemperatureControlView.java
+++ b/car_product/car_ui_portrait/apps/CarUiPortraitSystemUI/src/com/android/systemui/car/hvac/CarUiPortraitTemperatureControlView.java
@@ -19,8 +19,7 @@
 import static android.car.VehiclePropertyIds.HVAC_POWER_ON;
 import static android.car.VehiclePropertyIds.HVAC_TEMPERATURE_SET;
 
-import static com.android.systemui.car.hvac.HvacUtils.celsiusToFahrenheit;
-
+import android.car.hardware.CarPropertyConfig;
 import android.car.hardware.CarPropertyValue;
 import android.content.Context;
 import android.content.res.TypedArray;
@@ -36,6 +35,8 @@
 
 import com.android.systemui.R;
 
+import java.util.List;
+
 /**
  *  A fork of {@link TemperatureControlView} that supports touch feedback on HVAC buttons.
  */
@@ -56,11 +57,10 @@
     private View mIncreaseButton;
     private View mDecreaseButton;
     private float mMinTempC;
+    private float mMinTempF;
     private float mMaxTempC;
     private String mTemperatureFormatCelsius;
     private String mTemperatureFormatFahrenheit;
-    private float mTemperatureRoundCelsius;
-    private float mTemperatureRoundFahrenheit;
     private float mTemperatureIncrementCelsius;
     private float mTemperatureIncrementFahrenheit;
     private float mCurrentTempC;
@@ -78,12 +78,9 @@
                 R.fraction.celsius_temperature_increment);
         mTemperatureIncrementFahrenheit = getResources().getFloat(
                 R.fraction.fahrenheit_temperature_increment);
-        mTemperatureRoundCelsius = getResources().getFloat(
-                R.fraction.celsius_temperature_round);
-        mTemperatureRoundFahrenheit = getResources().getFloat(
-                R.fraction.fahrenheit_temperature_round);
 
         mMinTempC = getResources().getFloat(R.dimen.hvac_min_value_celsius);
+        mMinTempF = getResources().getFloat(R.dimen.hvac_min_value_fahrenheit);
         mMaxTempC = getResources().getFloat(R.dimen.hvac_max_value_celsius);
         mAvailableTextColor = ContextCompat.getColor(getContext(), R.color.system_bar_text_color);
         mUnavailableTextColor = ContextCompat.getColor(getContext(),
@@ -133,6 +130,19 @@
         mHvacPropertySetter = hvacPropertySetter;
     }
 
+    @Override
+    public void setConfigInfo(CarPropertyConfig<?> carPropertyConfig) {
+        List<Integer> configArray = carPropertyConfig.getConfigArray();
+        // Need to divide by 10 because config array values are temperature values that have been
+        // multiplied by 10.
+        mMinTempC = configArray.get(0) / 10f;
+        mMaxTempC = configArray.get(1) / 10f;
+        mTemperatureIncrementCelsius = configArray.get(2) / 10f;
+
+        mMinTempF = configArray.get(3) / 10f;
+        mTemperatureIncrementFahrenheit = configArray.get(5) / 10f;
+    }
+
     /**
      * Returns {@code true} if temperature should be available for change.
      */
@@ -187,19 +197,15 @@
     private void incrementTemperature(boolean increment) {
         if (!mPowerOn) return;
 
-        float tempIncrement = mDisplayInFahrenheit
-                ? mTemperatureIncrementFahrenheit
-                : mTemperatureIncrementCelsius;
         float newTempC = increment
-                ? mCurrentTempC + tempIncrement
-                : mCurrentTempC - tempIncrement;
-
+                ? mCurrentTempC + mTemperatureIncrementCelsius
+                : mCurrentTempC - mTemperatureIncrementCelsius;
         setTemperature(newTempC);
     }
 
     private void updateTemperatureView() {
-        float tempToDisplayUnformatted = roundToClosestFraction(
-                mDisplayInFahrenheit ? celsiusToFahrenheit(mCurrentTempC) : mCurrentTempC);
+        float tempToDisplayUnformatted =
+                mDisplayInFahrenheit ? celsiusToFahrenheit(mCurrentTempC) : mCurrentTempC;
 
         mTempInDisplay = String.format(
                 mDisplayInFahrenheit ? mTemperatureFormatFahrenheit : mTemperatureFormatCelsius,
@@ -250,10 +256,8 @@
         });
     }
 
-    private float roundToClosestFraction(float rawFloat) {
-        float incrementFraction = mDisplayInFahrenheit
-                ? mTemperatureRoundFahrenheit
-                : mTemperatureRoundCelsius;
-        return Math.round(rawFloat / incrementFraction) * incrementFraction;
+    private float celsiusToFahrenheit(float tempC) {
+        int numIncrements = Math.round((tempC - mMinTempC) / mTemperatureIncrementCelsius);
+        return mTemperatureIncrementFahrenheit * numIncrements + mMinTempF;
     }
 }
diff --git a/car_product/car_ui_portrait/apps/CarUiPortraitSystemUI/src/com/android/systemui/car/hvac/custom/FanSpeedSeekBar.java b/car_product/car_ui_portrait/apps/CarUiPortraitSystemUI/src/com/android/systemui/car/hvac/custom/FanSpeedSeekBar.java
index bc7f4f2..28fca82 100644
--- a/car_product/car_ui_portrait/apps/CarUiPortraitSystemUI/src/com/android/systemui/car/hvac/custom/FanSpeedSeekBar.java
+++ b/car_product/car_ui_portrait/apps/CarUiPortraitSystemUI/src/com/android/systemui/car/hvac/custom/FanSpeedSeekBar.java
@@ -20,6 +20,7 @@
 import static android.car.VehiclePropertyIds.HVAC_FAN_SPEED;
 import static android.car.VehiclePropertyIds.HVAC_POWER_ON;
 
+import android.car.hardware.CarPropertyConfig;
 import android.car.hardware.CarPropertyValue;
 import android.content.Context;
 import android.content.res.TypedArray;
@@ -157,6 +158,11 @@
     }
 
     @Override
+    public void setConfigInfo(CarPropertyConfig<?> carPropertyConfig) {
+        // no-op.
+    }
+
+    @Override
     public void onHvacTemperatureUnitChanged(boolean usesFahrenheit) {
         // no-op.
     }
diff --git a/car_product/car_ui_portrait/apps/CarUiPortraitSystemUI/src/com/android/systemui/car/statusicon/ui/StatusBarSensorInfoManager.java b/car_product/car_ui_portrait/apps/CarUiPortraitSystemUI/src/com/android/systemui/car/statusicon/ui/StatusBarSensorInfoManager.java
index 0c960a6..7a7d8da 100644
--- a/car_product/car_ui_portrait/apps/CarUiPortraitSystemUI/src/com/android/systemui/car/statusicon/ui/StatusBarSensorInfoManager.java
+++ b/car_product/car_ui_portrait/apps/CarUiPortraitSystemUI/src/com/android/systemui/car/statusicon/ui/StatusBarSensorInfoManager.java
@@ -19,8 +19,6 @@
 import static android.car.VehiclePropertyIds.ENV_OUTSIDE_TEMPERATURE;
 import static android.car.VehiclePropertyIds.HVAC_TEMPERATURE_DISPLAY_UNITS;
 
-import static com.android.systemui.car.hvac.HvacUtils.celsiusToFahrenheit;
-
 import android.car.Car;
 import android.car.VehicleUnit;
 import android.car.hardware.CarPropertyValue;
@@ -148,4 +146,8 @@
             Log.d(TAG, msg);
         }
     }
+
+    private float celsiusToFahrenheit(float tempC) {
+        return (tempC * 9f / 5f) + 32;
+    }
 }