Add more HVAC properties to default vehicle HAL
Bug: b/32949617
Test: manually using Hvac app
Change-Id: Id65921f29828f6b0dc23cc589672e877aa969ae1
diff --git a/vehicle/2.0/default/impl/DefaultVehicleHal.cpp b/vehicle/2.0/default/impl/DefaultVehicleHal.cpp
index 24d438d..c56248b 100644
--- a/vehicle/2.0/default/impl/DefaultVehicleHal.cpp
+++ b/vehicle/2.0/default/impl/DefaultVehicleHal.cpp
@@ -30,23 +30,56 @@
VehiclePropValuePtr v;
VehicleProperty property = requestedPropValue.prop;
int32_t areaId = requestedPropValue.areaId;
+ auto& pool = *getValuePool();
switch (property) {
case VehicleProperty::INFO_MAKE:
- v = getValuePool()->obtainString("Default Car");
+ v = pool.obtainString("Default Car");
break;
case VehicleProperty::HVAC_FAN_SPEED:
- int32_t value;
- *outStatus = getHvacFanSpeed(areaId, &value);
+ v = pool.obtainInt32(mFanSpeed);
+ break;
+ case VehicleProperty::HVAC_POWER_ON:
+ v = pool.obtainBoolean(mHvacPowerOn);
+ break;
+ case VehicleProperty::HVAC_RECIRC_ON:
+ v = pool.obtainBoolean(mHvacRecircOn);
+ break;
+ case VehicleProperty::HVAC_AC_ON:
+ v = pool.obtainBoolean(mHvacAcOn);
+ break;
+ case VehicleProperty::HVAC_AUTO_ON:
+ v = pool.obtainBoolean(mHvacAutoOn);
+ break;
+ case VehicleProperty::HVAC_FAN_DIRECTION:
+ v = pool.obtainInt32(toInt(mFanDirection));
+ break;
+ case VehicleProperty::HVAC_DEFROSTER:
+ bool defroster;
+ *outStatus = getHvacDefroster(areaId, &defroster);
if (StatusCode::OK == *outStatus) {
- v = getValuePool()->obtainInt32(value);
+ v = pool.obtainBoolean(defroster);
+ }
+ break;
+ case VehicleProperty::HVAC_TEMPERATURE_SET:
+ float value;
+ *outStatus = getHvacTemperature(requestedPropValue.areaId,
+ &value);
+ if (StatusCode::OK == *outStatus) {
+ v = pool.obtainFloat(value);
}
break;
case VehicleProperty::INFO_FUEL_CAPACITY:
- v = getValuePool()->obtainFloat(0.75f);
+ v = pool.obtainFloat(0.75f);
break;
case VehicleProperty::DISPLAY_BRIGHTNESS:
- v = getValuePool()->obtainInt32(brightness);
+ v = pool.obtainInt32(mBrightness);
+ break;
+ case VehicleProperty::NIGHT_MODE:
+ v = pool.obtainBoolean(false);
+ break;
+ case VehicleProperty::GEAR_SELECTION:
+ v = pool.obtainInt32(toInt(VehicleGear::GEAR_PARK));
break;
default:
*outStatus = StatusCode::INVALID_ARG;
@@ -63,16 +96,38 @@
StatusCode DefaultVehicleHal::set(const VehiclePropValue& propValue) {
auto property = propValue.prop;
+ const auto& v = propValue.value;
StatusCode status = StatusCode::OK;
switch (property) {
+ case VehicleProperty::HVAC_POWER_ON:
+ mHvacPowerOn = v.int32Values[0] == 1;
+ break;
+ case VehicleProperty::HVAC_RECIRC_ON:
+ mHvacRecircOn = v.int32Values[0] == 1;
+ break;
+ case VehicleProperty::HVAC_AC_ON:
+ mHvacAcOn = v.int32Values[0] == 1;
+ break;
+ case VehicleProperty::HVAC_AUTO_ON:
+ mHvacAutoOn = v.int32Values[0] == 1;
+ break;
+ case VehicleProperty::HVAC_DEFROSTER:
+ status = setHvacDefroster(propValue.areaId, v.int32Values[0] == 1);
+ break;
+ case VehicleProperty::HVAC_FAN_DIRECTION:
+ mFanDirection =
+ static_cast<VehicleHvacFanDirection>(v.int32Values[0]);
+ break;
case VehicleProperty::HVAC_FAN_SPEED:
- status = setHvacFanSpeed(propValue.areaId,
- propValue.value.int32Values[0]);
+ mFanSpeed = v.int32Values[0];
+ break;
+ case VehicleProperty::HVAC_TEMPERATURE_SET:
+ status = setHvacTemperature(propValue.areaId, v.floatValues[0]);
break;
case VehicleProperty::DISPLAY_BRIGHTNESS:
- brightness = propValue.value.int32Values[0];
+ mBrightness = v.int32Values[0];
break;
default:
status = StatusCode::INVALID_ARG;
@@ -81,23 +136,52 @@
return status;
}
-StatusCode DefaultVehicleHal::getHvacFanSpeed(int32_t areaId,
- int32_t* outValue) {
+StatusCode DefaultVehicleHal::getHvacTemperature(int32_t areaId,
+ float* outValue) {
if (areaId == toInt(VehicleAreaZone::ROW_1_LEFT)) {
- *outValue = fanSpeedRow1Left;
- } else if (areaId == toInt(VehicleAreaZone::ROW_2_RIGHT)) {
- *outValue = fanSpeedRow1Right;
+ *outValue = mRow1LeftHvacTemperatureSet;
+ } else if (areaId == toInt(VehicleAreaZone::ROW_1_RIGHT)) {
+ *outValue = mRow1RightHvacTemperatureSet;
} else {
return StatusCode::INVALID_ARG;
}
return StatusCode::OK;
}
-StatusCode DefaultVehicleHal::setHvacFanSpeed(int32_t areaId, int32_t value) {
+StatusCode DefaultVehicleHal::setHvacTemperature(
+ int32_t areaId, float value) {
if (areaId == toInt(VehicleAreaZone::ROW_1_LEFT)) {
- fanSpeedRow1Left = value;
- } else if (areaId == toInt(VehicleAreaZone::ROW_2_RIGHT)) {
- fanSpeedRow1Right = value;
+ mRow1LeftHvacTemperatureSet = value;
+ } else if (areaId == toInt(VehicleAreaZone::ROW_1_RIGHT)) {
+ mRow1RightHvacTemperatureSet = value;
+ } else {
+ return StatusCode::INVALID_ARG;
+ }
+ return StatusCode::OK;
+}
+
+StatusCode DefaultVehicleHal::getHvacDefroster(int32_t areaId,
+ bool* outValue) {
+ ALOGI("Getting Hvac defroster for area: 0x%x", areaId);
+
+ if (areaId == toInt(VehicleAreaWindow::FRONT_WINDSHIELD)) {
+ *outValue = mFrontDefroster;
+ } else if (areaId == toInt(VehicleAreaWindow::REAR_WINDSHIELD)) {
+ *outValue = mRearDefroster;
+ } else {
+ ALOGE("Unable to get hvac defroster for area: 0x%x", areaId);
+ return StatusCode::INVALID_ARG;
+ }
+
+ ALOGI("Getting Hvac defroster for area: 0x%x, OK", areaId);
+ return StatusCode::OK;
+}
+
+StatusCode DefaultVehicleHal::setHvacDefroster(int32_t areaId, bool value) {
+ if (areaId == toInt(VehicleAreaWindow::FRONT_WINDSHIELD)) {
+ mFrontDefroster = value;
+ } else if (areaId == toInt(VehicleAreaWindow::REAR_WINDSHIELD)) {
+ mRearDefroster = value;
} else {
return StatusCode::INVALID_ARG;
}