Vehicle HAL reference impl Part II

Implemented:
  - IVehicle::get <-- changed signature
  - IVehicle::set
  - status_t replaced with StatusCode
  - changed error handling to handle errors on SET

Test: unit tests provided
Bug: b/31971746
Change-Id: I9ea3feab7539adf588f1278fb905c0a458fa1627
diff --git a/vehicle/2.0/default/impl/DefaultConfig.h b/vehicle/2.0/default/impl/DefaultConfig.h
index 6f04626..e620c28 100644
--- a/vehicle/2.0/default/impl/DefaultConfig.h
+++ b/vehicle/2.0/default/impl/DefaultConfig.h
@@ -43,11 +43,11 @@
             VehicleAreaZone::ROW_1_LEFT | VehicleAreaZone::ROW_1_RIGHT),
         .areaConfigs = init_hidl_vec({
                  VehicleAreaConfig {
-                     .areaId = val(VehicleAreaZone::ROW_2_LEFT),
+                     .areaId = toInt(VehicleAreaZone::ROW_2_LEFT),
                      .minInt32Value = 1,
                      .maxInt32Value = 7},
                  VehicleAreaConfig {
-                     .areaId = val(VehicleAreaZone::ROW_1_RIGHT),
+                     .areaId = toInt(VehicleAreaZone::ROW_1_RIGHT),
                      .minInt32Value = 1,
                      .maxInt32Value = 5,
                  }
diff --git a/vehicle/2.0/default/impl/DefaultVehicleHal.cpp b/vehicle/2.0/default/impl/DefaultVehicleHal.cpp
index 6ca0f9f..24d438d 100644
--- a/vehicle/2.0/default/impl/DefaultVehicleHal.cpp
+++ b/vehicle/2.0/default/impl/DefaultVehicleHal.cpp
@@ -23,12 +23,13 @@
 
 namespace impl {
 
-VehicleHal::VehiclePropValuePtr DefaultVehicleHal::get(VehicleProperty property,
-                                                       int32_t areaId,
-                                                       status_t* outStatus) {
-    *outStatus = OK;
+VehicleHal::VehiclePropValuePtr DefaultVehicleHal::get(
+        const VehiclePropValue& requestedPropValue, StatusCode* outStatus) {
+    *outStatus = StatusCode::OK;
 
     VehiclePropValuePtr v;
+    VehicleProperty property = requestedPropValue.prop;
+    int32_t areaId = requestedPropValue.areaId;
 
     switch (property) {
         case VehicleProperty::INFO_MAKE:
@@ -36,7 +37,8 @@
             break;
         case VehicleProperty::HVAC_FAN_SPEED:
             int32_t value;
-            if ((*outStatus = getHvacFanSpeed(areaId, &value)) == OK) {
+            *outStatus = getHvacFanSpeed(areaId, &value);
+            if (StatusCode::OK == *outStatus) {
                 v = getValuePool()->obtainInt32(value);
             }
             break;
@@ -47,10 +49,10 @@
             v = getValuePool()->obtainInt32(brightness);
             break;
         default:
-            *outStatus = BAD_VALUE;
+            *outStatus = StatusCode::INVALID_ARG;
     }
 
-    if (*outStatus == OK && v.get() != nullptr) {
+    if (StatusCode::OK == *outStatus && v.get() != nullptr) {
         v->prop = property;
         v->areaId = areaId;
         v->timestamp = elapsedRealtimeNano();
@@ -59,10 +61,10 @@
     return v;
 }
 
-status_t DefaultVehicleHal::set(const VehiclePropValue& propValue) {
+StatusCode DefaultVehicleHal::set(const VehiclePropValue& propValue) {
     auto property = propValue.prop;
 
-    status_t status = OK;
+    StatusCode status = StatusCode::OK;
 
     switch (property) {
         case VehicleProperty::HVAC_FAN_SPEED:
@@ -73,33 +75,33 @@
             brightness = propValue.value.int32Values[0];
             break;
         default:
-            status = BAD_VALUE;
+            status = StatusCode::INVALID_ARG;
     }
 
     return status;
 }
 
-status_t DefaultVehicleHal::getHvacFanSpeed(int32_t areaId,
+StatusCode DefaultVehicleHal::getHvacFanSpeed(int32_t areaId,
                                             int32_t* outValue)  {
-    if (areaId == val(VehicleAreaZone::ROW_1_LEFT)) {
+    if (areaId == toInt(VehicleAreaZone::ROW_1_LEFT)) {
         *outValue = fanSpeedRow1Left;
-    } else if (areaId == val(VehicleAreaZone::ROW_2_RIGHT)) {
+    } else if (areaId == toInt(VehicleAreaZone::ROW_2_RIGHT)) {
         *outValue = fanSpeedRow1Right;
     } else {
-        return BAD_VALUE;
+        return StatusCode::INVALID_ARG;
     }
-    return OK;
+    return StatusCode::OK;
 }
 
-status_t DefaultVehicleHal::setHvacFanSpeed(int32_t areaId, int32_t value) {
-    if (areaId == val(VehicleAreaZone::ROW_1_LEFT)) {
+StatusCode DefaultVehicleHal::setHvacFanSpeed(int32_t areaId, int32_t value) {
+    if (areaId == toInt(VehicleAreaZone::ROW_1_LEFT)) {
         fanSpeedRow1Left = value;
-    } else if (areaId == val(VehicleAreaZone::ROW_2_RIGHT)) {
+    } else if (areaId == toInt(VehicleAreaZone::ROW_2_RIGHT)) {
         fanSpeedRow1Right = value;
     } else {
-        return BAD_VALUE;
+        return StatusCode::INVALID_ARG;
     }
-    return OK;
+    return StatusCode::OK;
 }
 
 }  // impl
diff --git a/vehicle/2.0/default/impl/DefaultVehicleHal.h b/vehicle/2.0/default/impl/DefaultVehicleHal.h
index 7d0b7cb..4a81da3 100644
--- a/vehicle/2.0/default/impl/DefaultVehicleHal.h
+++ b/vehicle/2.0/default/impl/DefaultVehicleHal.h
@@ -35,27 +35,26 @@
                                               std::end(kVehicleProperties));
     }
 
-    VehiclePropValuePtr get(VehicleProperty property,
-                            int32_t areaId,
-                            status_t* outStatus) override;
+    VehiclePropValuePtr get(const VehiclePropValue& requestedPropValue,
+                            StatusCode* outStatus) override;
 
-    status_t set(const VehiclePropValue& propValue) override;
+    StatusCode set(const VehiclePropValue& propValue) override;
 
-    status_t subscribe(VehicleProperty property,
+    StatusCode subscribe(VehicleProperty property,
                        int32_t areas,
                        float sampleRate) {
         // TODO(pavelm): implement
-        return OK;
+        return StatusCode::OK;
     }
 
-    status_t unsubscribe(VehicleProperty property) {
+    StatusCode unsubscribe(VehicleProperty property) {
         // TODO(pavelm): implement
-        return OK;
+        return StatusCode::OK;
     }
 
 private:
-    status_t getHvacFanSpeed(int32_t areaId, int32_t* outValue);
-    status_t setHvacFanSpeed(int32_t areaId, int32_t value);
+    StatusCode getHvacFanSpeed(int32_t areaId, int32_t* outValue);
+    StatusCode setHvacFanSpeed(int32_t areaId, int32_t value);
 private:
     int32_t fanSpeedRow1Left = 3;
     int32_t fanSpeedRow1Right = 5;