Merge "Start processes that need real-time with CAP_SYS_NICE." into oc-dev
diff --git a/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h
index 4835288..fb63e36 100644
--- a/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h
+++ b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h
@@ -63,277 +63,228 @@
     std::map<int32_t, VehiclePropValue::RawValue> initialAreaValues;
 };
 
-const ConfigDeclaration kVehicleProperties[] {
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::INFO_MAKE),
-            .access = VehiclePropertyAccess::READ,
-            .changeMode = VehiclePropertyChangeMode::STATIC,
-        },
-        .initialValue = { .stringValue = "Toy Vehicle" }
-    },
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::PERF_VEHICLE_SPEED),
-            .access = VehiclePropertyAccess::READ,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-            .minSampleRate = 1.0f,
-            .maxSampleRate = 1000.0f,
-        },
-        .initialValue = { .floatValues = {0.0f} }
-    },
+const ConfigDeclaration kVehicleProperties[]{
+    {.config =
+         {
+             .prop = toInt(VehicleProperty::INFO_MAKE),
+             .access = VehiclePropertyAccess::READ,
+             .changeMode = VehiclePropertyChangeMode::STATIC,
+         },
+     .initialValue = {.stringValue = "Toy Vehicle"}},
+    {.config =
+         {
+             .prop = toInt(VehicleProperty::PERF_VEHICLE_SPEED),
+             .access = VehiclePropertyAccess::READ,
+             .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+             .minSampleRate = 1.0f,
+             .maxSampleRate = 1000.0f,
+         },
+     .initialValue = {.floatValues = {0.0f}}},
+
+    {.config =
+         {
+             .prop = toInt(VehicleProperty::PERF_ODOMETER),
+             .access = VehiclePropertyAccess::READ,
+             .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+         },
+     .initialValue = {.floatValues = {0.0f}}},
 
     {
-        .config = {
-            .prop = toInt(VehicleProperty::PERF_ODOMETER),
-            .access = VehiclePropertyAccess::READ,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-        },
-        .initialValue = { .floatValues = {0.0f} }
-    },
-
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::ENGINE_RPM),
-            .access = VehiclePropertyAccess::READ,
-            .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
-            .minSampleRate = 1.0f,
-            .maxSampleRate = 1000.0f,
-        },
-        .initialValue = { .floatValues = {0.0f} },
-    },
-
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::CURRENT_GEAR),
-            .access = VehiclePropertyAccess::READ,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-        },
-        .initialValue = { .int32Values = { toInt(VehicleGear::GEAR_PARK) } }
-    },
-
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::PARKING_BRAKE_ON),
-            .access = VehiclePropertyAccess::READ,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-        },
-        .initialValue = { .int32Values = {1} }
-    },
-
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::FUEL_LEVEL_LOW),
-            .access = VehiclePropertyAccess::READ,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-        },
-        .initialValue = { .int32Values = {0} }
-    },
-
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::HVAC_POWER_ON),
-            .access = VehiclePropertyAccess::READ_WRITE,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-            .supportedAreas = toInt(VehicleAreaZone::ROW_1),
-            // TODO(bryaneyler): Ideally, this is generated dynamically from
-            // kHvacPowerProperties.
-            .configString = "0x12400500,0x12400501"  // HVAC_FAN_SPEED,HVAC_FAN_DIRECTION
-        },
-        .initialValue = { .int32Values = {1} }
-    },
-
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::HVAC_DEFROSTER),
-            .access = VehiclePropertyAccess::READ_WRITE,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-            .supportedAreas =
-            VehicleAreaWindow::FRONT_WINDSHIELD
-            | VehicleAreaWindow::REAR_WINDSHIELD
-        },
-        .initialValue = { .int32Values = {0} }  // Will be used for all areas.
-    },
-
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::HVAC_RECIRC_ON),
-            .access = VehiclePropertyAccess::READ_WRITE,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-            .supportedAreas = toInt(VehicleAreaZone::ROW_1)
-        },
-        .initialValue = { .int32Values = {1} }
-    },
-
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::HVAC_AC_ON),
-            .access = VehiclePropertyAccess::READ_WRITE,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-            .supportedAreas = toInt(VehicleAreaZone::ROW_1)
-        },
-        .initialValue = { .int32Values = {1} }
-    },
-
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::HVAC_AUTO_ON),
-            .access = VehiclePropertyAccess::READ_WRITE,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-            .supportedAreas = toInt(VehicleAreaZone::ROW_1)
-        },
-        .initialValue = { .int32Values = {1} }
-    },
-
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::HVAC_FAN_SPEED),
-            .access = VehiclePropertyAccess::READ_WRITE,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-            .supportedAreas = toInt(VehicleAreaZone::ROW_1),
-            .areaConfigs = {
-                VehicleAreaConfig {
-                    .areaId = toInt(VehicleAreaZone::ROW_1),
-                    .minInt32Value = 1,
-                    .maxInt32Value = 7
-                }
-            }
-        },
-        .initialValue = { .int32Values = {3} }
-    },
-
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::HVAC_FAN_DIRECTION),
-            .access = VehiclePropertyAccess::READ_WRITE,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-            .supportedAreas = toInt(VehicleAreaZone::ROW_1),
-        },
-        .initialValue = { .int32Values = { toInt(VehicleHvacFanDirection::FACE) } }
-    },
-
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::HVAC_TEMPERATURE_SET),
-            .access = VehiclePropertyAccess::READ_WRITE,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-            .supportedAreas =
-            VehicleAreaZone::ROW_1_LEFT
-            | VehicleAreaZone::ROW_1_RIGHT,
-            .areaConfigs = {
-                VehicleAreaConfig {
-                    .areaId = toInt(VehicleAreaZone::ROW_1_LEFT),
-                    .minFloatValue = 16,
-                    .maxFloatValue = 32,
-                },
-                VehicleAreaConfig {
-                    .areaId = toInt(VehicleAreaZone::ROW_1_RIGHT),
-                    .minFloatValue = 16,
-                    .maxFloatValue = 32,
-                }
-            }
-        },
-        .initialAreaValues = {
+        .config =
             {
-                toInt(VehicleAreaZone::ROW_1_LEFT),
-                { .floatValues = {16} }
-            }, {
-                toInt(VehicleAreaZone::ROW_1_RIGHT),
-                { .floatValues = {20} }
-            }
-        }
+                .prop = toInt(VehicleProperty::ENGINE_RPM),
+                .access = VehiclePropertyAccess::READ,
+                .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
+                .minSampleRate = 1.0f,
+                .maxSampleRate = 1000.0f,
+            },
+        .initialValue = {.floatValues = {0.0f}},
     },
 
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::ENV_OUTSIDE_TEMPERATURE),
-            .access = VehiclePropertyAccess::READ,
-            // TODO(bryaneyler): Support ON_CHANGE as well.
-            .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
-            .minSampleRate = 1.0f,
-            .maxSampleRate = 2.0f,
-        },
-        .initialValue = { .floatValues = {25.0f} }
-    },
+    {.config =
+         {
+             .prop = toInt(VehicleProperty::CURRENT_GEAR),
+             .access = VehiclePropertyAccess::READ,
+             .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+         },
+     .initialValue = {.int32Values = {toInt(VehicleGear::GEAR_PARK)}}},
+
+    {.config =
+         {
+             .prop = toInt(VehicleProperty::PARKING_BRAKE_ON),
+             .access = VehiclePropertyAccess::READ,
+             .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+         },
+     .initialValue = {.int32Values = {1}}},
+
+    {.config =
+         {
+             .prop = toInt(VehicleProperty::FUEL_LEVEL_LOW),
+             .access = VehiclePropertyAccess::READ,
+             .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+         },
+     .initialValue = {.int32Values = {0}}},
+
+    {.config =
+         {
+             .prop = toInt(VehicleProperty::HVAC_POWER_ON),
+             .access = VehiclePropertyAccess::READ_WRITE,
+             .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+             .supportedAreas = toInt(VehicleAreaZone::ROW_1),
+             // TODO(bryaneyler): Ideally, this is generated dynamically from
+             // kHvacPowerProperties.
+             .configString = "0x12400500,0x12400501"  // HVAC_FAN_SPEED,HVAC_FAN_DIRECTION
+         },
+     .initialValue = {.int32Values = {1}}},
 
     {
-        .config = {
-            .prop = toInt(VehicleProperty::NIGHT_MODE),
-            .access = VehiclePropertyAccess::READ,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-        },
-        .initialValue = { .int32Values = {0} }
+        .config = {.prop = toInt(VehicleProperty::HVAC_DEFROSTER),
+                   .access = VehiclePropertyAccess::READ_WRITE,
+                   .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+                   .supportedAreas =
+                       VehicleAreaWindow::FRONT_WINDSHIELD | VehicleAreaWindow::REAR_WINDSHIELD},
+        .initialValue = {.int32Values = {0}}  // Will be used for all areas.
     },
 
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::DRIVING_STATUS),
-            .access = VehiclePropertyAccess::READ,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-        },
-        .initialValue = { .int32Values = { toInt(VehicleDrivingStatus::UNRESTRICTED) } }
-    },
+    {.config = {.prop = toInt(VehicleProperty::HVAC_RECIRC_ON),
+                .access = VehiclePropertyAccess::READ_WRITE,
+                .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+                .supportedAreas = toInt(VehicleAreaZone::ROW_1)},
+     .initialValue = {.int32Values = {1}}},
+
+    {.config = {.prop = toInt(VehicleProperty::HVAC_AC_ON),
+                .access = VehiclePropertyAccess::READ_WRITE,
+                .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+                .supportedAreas = toInt(VehicleAreaZone::ROW_1)},
+     .initialValue = {.int32Values = {1}}},
+
+    {.config = {.prop = toInt(VehicleProperty::HVAC_AUTO_ON),
+                .access = VehiclePropertyAccess::READ_WRITE,
+                .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+                .supportedAreas = toInt(VehicleAreaZone::ROW_1)},
+     .initialValue = {.int32Values = {1}}},
+
+    {.config = {.prop = toInt(VehicleProperty::HVAC_FAN_SPEED),
+                .access = VehiclePropertyAccess::READ_WRITE,
+                .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+                .supportedAreas = toInt(VehicleAreaZone::ROW_1),
+                .areaConfigs = {VehicleAreaConfig{.areaId = toInt(VehicleAreaZone::ROW_1),
+                                                  .minInt32Value = 1,
+                                                  .maxInt32Value = 7}}},
+     .initialValue = {.int32Values = {3}}},
+
+    {.config =
+         {
+             .prop = toInt(VehicleProperty::HVAC_FAN_DIRECTION),
+             .access = VehiclePropertyAccess::READ_WRITE,
+             .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+             .supportedAreas = toInt(VehicleAreaZone::ROW_1),
+         },
+     .initialValue = {.int32Values = {toInt(VehicleHvacFanDirection::FACE)}}},
+
+    {.config = {.prop = toInt(VehicleProperty::HVAC_TEMPERATURE_SET),
+                .access = VehiclePropertyAccess::READ_WRITE,
+                .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+                .supportedAreas = VehicleAreaZone::ROW_1_LEFT | VehicleAreaZone::ROW_1_RIGHT,
+                .areaConfigs = {VehicleAreaConfig{
+                                    .areaId = toInt(VehicleAreaZone::ROW_1_LEFT),
+                                    .minFloatValue = 16,
+                                    .maxFloatValue = 32,
+                                },
+                                VehicleAreaConfig{
+                                    .areaId = toInt(VehicleAreaZone::ROW_1_RIGHT),
+                                    .minFloatValue = 16,
+                                    .maxFloatValue = 32,
+                                }}},
+     .initialAreaValues = {{toInt(VehicleAreaZone::ROW_1_LEFT), {.floatValues = {16}}},
+                           {toInt(VehicleAreaZone::ROW_1_RIGHT), {.floatValues = {20}}}}},
+
+    {.config =
+         {
+             .prop = toInt(VehicleProperty::ENV_OUTSIDE_TEMPERATURE),
+             .access = VehiclePropertyAccess::READ,
+             // TODO(bryaneyler): Support ON_CHANGE as well.
+             .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
+             .minSampleRate = 1.0f,
+             .maxSampleRate = 2.0f,
+         },
+     .initialValue = {.floatValues = {25.0f}}},
+
+    {.config =
+         {
+             .prop = toInt(VehicleProperty::NIGHT_MODE),
+             .access = VehiclePropertyAccess::READ,
+             .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+         },
+     .initialValue = {.int32Values = {0}}},
+
+    {.config =
+         {
+             .prop = toInt(VehicleProperty::DRIVING_STATUS),
+             .access = VehiclePropertyAccess::READ,
+             .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+         },
+     .initialValue = {.int32Values = {toInt(VehicleDrivingStatus::UNRESTRICTED)}}},
+
+    {.config =
+         {
+             .prop = toInt(VehicleProperty::GEAR_SELECTION),
+             .access = VehiclePropertyAccess::READ,
+             .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+         },
+     .initialValue = {.int32Values = {toInt(VehicleGear::GEAR_PARK)}}},
 
     {
-        .config = {
-            .prop = toInt(VehicleProperty::GEAR_SELECTION),
-            .access = VehiclePropertyAccess::READ,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-        },
-        .initialValue = { .int32Values = { toInt(VehicleGear::GEAR_PARK) } }
+        .config =
+            {
+                .prop = toInt(VehicleProperty::INFO_FUEL_CAPACITY),
+                .access = VehiclePropertyAccess::READ,
+                .changeMode = VehiclePropertyChangeMode::STATIC,
+            },
+        .initialValue = {.floatValues = {123000.0f}}  // In Milliliters
     },
 
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::INFO_FUEL_CAPACITY),
-            .access = VehiclePropertyAccess::READ,
-            .changeMode = VehiclePropertyChangeMode::STATIC,
-        },
-        .initialValue = { .floatValues = { 123000.0f } }  // In Milliliters
-    },
+    {.config = {.prop = toInt(VehicleProperty::DISPLAY_BRIGHTNESS),
+                .access = VehiclePropertyAccess::READ_WRITE,
+                .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+                .areaConfigs = {VehicleAreaConfig{.minInt32Value = 0, .maxInt32Value = 10}}},
+     .initialValue = {.int32Values = {7}}},
+
+    {.config =
+         {
+             .prop = toInt(VehicleProperty::IGNITION_STATE),
+             .access = VehiclePropertyAccess::READ,
+             .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+         },
+     .initialValue = {.int32Values = {toInt(VehicleIgnitionState::ON)}}},
+
+    {.config =
+         {
+             .prop = toInt(VehicleProperty::ENGINE_OIL_TEMP),
+             .access = VehiclePropertyAccess::READ,
+             .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
+             .minSampleRate = 0.1,  // 0.1 Hz, every 10 seconds
+             .maxSampleRate = 10,   // 10 Hz, every 100 ms
+         },
+     .initialValue = {.floatValues = {101.0f}}},
 
     {
-        .config = {
-            .prop = toInt(VehicleProperty::DISPLAY_BRIGHTNESS),
-            .access = VehiclePropertyAccess::READ_WRITE,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-            .areaConfigs = {
-                VehicleAreaConfig {
-                    .minInt32Value = 0,
-                    .maxInt32Value = 10
-                }
-            }
-        },
-        .initialValue = { .int32Values = {7} }
+        .config =
+            {
+                .prop = kGenerateFakeDataControllingProperty,
+                .access = VehiclePropertyAccess::WRITE,
+                .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+            },
     },
 
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::IGNITION_STATE),
-            .access = VehiclePropertyAccess::READ,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-        },
-        .initialValue = { .int32Values = { toInt(VehicleIgnitionState::ON) } }
-    },
+    {.config =
+         {
+             .prop = toInt(VehicleProperty::DOOR_LOCK),
+             .access = VehiclePropertyAccess::READ,
+             .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+         },
+     .initialValue = {.int32Values = {1}}}
 
-    {
-        .config = {
-            .prop = toInt(VehicleProperty::ENGINE_OIL_TEMP),
-            .access = VehiclePropertyAccess::READ,
-            .changeMode = VehiclePropertyChangeMode::CONTINUOUS,
-            .minSampleRate = 0.1, // 0.1 Hz, every 10 seconds
-            .maxSampleRate = 10,  // 10 Hz, every 100 ms
-        },
-        .initialValue = { .floatValues = {101.0f} }
-    },
-
-    {
-        .config = {
-            .prop = kGenerateFakeDataControllingProperty,
-            .access = VehiclePropertyAccess::WRITE,
-            .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
-        },
-    }
 };
 
 }  // impl
diff --git a/camera/common/1.0/default/CameraMetadata.cpp b/camera/common/1.0/default/CameraMetadata.cpp
index 0e7ef6e..4c54931 100644
--- a/camera/common/1.0/default/CameraMetadata.cpp
+++ b/camera/common/1.0/default/CameraMetadata.cpp
@@ -508,8 +508,6 @@
         }
     }
 
-    // TODO: Make above get_camera_metadata_section_from_name ?
-
     if (section == NULL) {
         return NAME_NOT_FOUND;
     } else {
diff --git a/camera/device/1.0/ICameraDeviceCallback.hal b/camera/device/1.0/ICameraDeviceCallback.hal
index 1dfcd80..4e2e719 100644
--- a/camera/device/1.0/ICameraDeviceCallback.hal
+++ b/camera/device/1.0/ICameraDeviceCallback.hal
@@ -33,8 +33,6 @@
      * Define a memory buffer from the provided handle and size, and return a
      * unique identifier for the HAL to use to reference it with.
      *
-     * TODO(b/33269977): Ensure this aligns with design and performance goals.
-     *
      * @param descriptor A native handle that must have exactly one file
      *     descriptor in it; the file descriptor must be memory mappable to
      *     bufferSize * bufferCount bytes.
diff --git a/camera/device/1.0/default/CameraDevice.cpp b/camera/device/1.0/default/CameraDevice.cpp
index 4f26c54..6f4e70f 100644
--- a/camera/device/1.0/default/CameraDevice.cpp
+++ b/camera/device/1.0/default/CameraDevice.cpp
@@ -183,7 +183,6 @@
 }
 
 int CameraDevice::sLockBuffer(struct preview_stream_ops*, buffer_handle_t*) {
-    // TODO: make sure lock_buffer is indeed a no-op (and will always be)
     return 0;
 }
 
@@ -585,8 +584,6 @@
             cameraInfo.facing = (CameraFacing) info.facing;
             // Device 1.0 does not support external camera facing.
             // The closest approximation would be front camera.
-            // TODO: figure out should we override here or let
-            //       camera service handle it.
             if (cameraInfo.facing == CameraFacing::EXTERNAL) {
                 cameraInfo.facing = CameraFacing::FRONT;
             }
diff --git a/camera/metadata/3.2/types.hal b/camera/metadata/3.2/types.hal
index 2b4b287..17d1d5e 100644
--- a/camera/metadata/3.2/types.hal
+++ b/camera/metadata/3.2/types.hal
@@ -16,14 +16,6 @@
 
 package android.hardware.camera.metadata@3.2;
 
-/** TODO(b/33012412):
- *   - The following information should be code-generated from:
- *     system/media/camera/docs/metadata_properties.xml
- *   - Some enum below should be signed:
- *       - metadata section/key should be unsigned
- *       - matadata value enum should be signed
- */
-
 /**
  * Top level hierarchy definitions for camera metadata. *_INFO sections are for
  * the static metadata that can be retrived without opening the camera device.
diff --git a/camera/provider/2.4/default/CameraProvider.cpp b/camera/provider/2.4/default/CameraProvider.cpp
index 791b93c..19f7bdd 100644
--- a/camera/provider/2.4/default/CameraProvider.cpp
+++ b/camera/provider/2.4/default/CameraProvider.cpp
@@ -461,10 +461,6 @@
         return Void();
     }
 
-    // TODO: we also need to keep a wp list of all generated devices to notify
-    //       devices of device present status change, but then each device might
-    //       need a sp<provider> to keep provider alive until all device closed?
-    //       Problem: do we have external camera products to test this?
     sp<android::hardware::camera::device::V3_2::implementation::CameraDevice> device =
             new android::hardware::camera::device::V3_2::implementation::CameraDevice(
                     mModule, cameraId, mCameraDeviceNames);
diff --git a/compatibility_matrix.xml b/compatibility_matrix.xml
index 8ef91b9..c643fc7 100644
--- a/compatibility_matrix.xml
+++ b/compatibility_matrix.xml
@@ -23,8 +23,7 @@
         <name>android.hardware.camera.provider</name>
         <version>2.4</version>
     </hal>
-    <!-- TODO(b/35356977): configstore is required. -->
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>android.hardware.configstore</name>
         <version>1.0-1</version>
     </hal>
@@ -72,8 +71,7 @@
         <name>android.hardware.light</name>
         <version>2.0</version>
     </hal>
-    <!-- TODO(b/36097717): omx is required. -->
-    <hal format="hidl" optional="true">
+    <hal format="hidl" optional="false">
         <name>android.hardware.media.omx</name>
         <version>1.0</version>
     </hal>
diff --git a/current.txt b/current.txt
index 82a1626..f22918c 100644
--- a/current.txt
+++ b/current.txt
@@ -50,14 +50,14 @@
 bd42c8d7838cfed1998b49c39745dec116d2d6edc2c11a4c0399b8f3a1d1655a android.hardware.broadcastradio@1.0::types
 81164323115d6588e259e8319fddf7487adfa1f49ce60f7e80ba74e0783392a4 android.hardware.camera.common@1.0::types
 c1705e9d62438a1d955269965af915ae28e692bd480a3b1ce67056fef992d62f android.hardware.camera.device@1.0::ICameraDevice
-2b6f81bba23b652736184d19f76a2358e9bb5f5295133406d155f0d37c7bac40 android.hardware.camera.device@1.0::ICameraDeviceCallback
+78e9b44cf8660bdc1e98dca07451804153824efcd28db208a62f5ad728f44076 android.hardware.camera.device@1.0::ICameraDeviceCallback
 28f0386ba86ddf41e53a8117b48a0328d7a4d2574213e89f4a1062398a244566 android.hardware.camera.device@1.0::ICameraDevicePreviewCallback
 4db48439ce9dde97f1cfb3d7408f6c737f621ac0f7494aeea35ed599bc2352a3 android.hardware.camera.device@1.0::types
 b32f9aeaf1c442195eb06ffc7600968c919d005b2718874f09c57287fae55918 android.hardware.camera.device@3.2::ICameraDevice
 63bfc3da0f2d2301f7a0508c7c2b9ffc521d4d545ee03718da70e9d6273b3b21 android.hardware.camera.device@3.2::ICameraDeviceCallback
 0fa3e1e64819283b8737fc4e5ab759f0cb4ac1a996e8a51cc4aa8025a457208e android.hardware.camera.device@3.2::ICameraDeviceSession
 030be3d2b159cbde7920485807140f6b6064ef4a5de4a40a6c4bc8d2c72f7cd3 android.hardware.camera.device@3.2::types
-a2dc9063c950f73d72a83797412d5ed25e905225d4650baf2c674c4263160295 android.hardware.camera.metadata@3.2::types
+5ba7947cee515d7a2359bfcbfb9678c1c3a768c288471919ac095b96ae6f3d40 android.hardware.camera.metadata@3.2::types
 f7e299d85033ac52d1095a35784fcfeaff43603f58c751e4153c85bbade3b330 android.hardware.camera.provider@2.4::ICameraProvider
 a501ca1aecd09f1b9fd70a9af84205430dbd49a808e8fa395d363b9902e6f58c android.hardware.camera.provider@2.4::ICameraProviderCallback
 7f5fe8f4f8a24037153c504d8b4d3313c2ce33d81c8c69fe5194ddd2d4080e72 android.hardware.configstore@1.0::ISurfaceFlingerConfigs
@@ -130,7 +130,7 @@
 efc83df3f962b93c7c0290d691d7d300dabe12683e2cde3591fb3c0beedce20f android.hardware.power@1.0::types
 9b5aa499ec3b4226f15f48f5ed08896e2fc0676f978c9e199c1da21daaf002a6 android.hardware.radio@1.0::IRadio
 5c8efbb9c451a59737ed2c6c20230aae4745839ca01d8088d6dcc9020e52d2c5 android.hardware.radio@1.0::IRadioIndication
-f72a0b0bd94e87f17900952dc0c43b1b8f661270805e00fc2f2dda358d5e3461 android.hardware.radio@1.0::IRadioResponse
+2b963c12b5b6961a6fcec6e6cbe3ed6cc8c4a7e95916c4947d8196d56aa57ec2 android.hardware.radio@1.0::IRadioResponse
 de3ab9f73b1073cd677b19d886fb927e9381b30161a704712d2b30f875873f5c android.hardware.radio@1.0::ISap
 d183e406ef0897df2117a9dde384e8e6ea4fa6ab1c7f6f28e65b87011218c9ea android.hardware.radio@1.0::ISapCallback
 96986fbd22f0e6ca752e1fcdc0a64bda213995a81f5f36bc4faf3532d9306b97 android.hardware.radio@1.0::types
diff --git a/radio/1.0/IRadioResponse.hal b/radio/1.0/IRadioResponse.hal
index 23c4d41..437e191 100644
--- a/radio/1.0/IRadioResponse.hal
+++ b/radio/1.0/IRadioResponse.hal
@@ -328,6 +328,12 @@
      * Valid errors returned:
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:NOT_PROVISIONED
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway getSignalStrengthResponse(RadioResponseInfo info, SignalStrength sigStrength);
 
@@ -351,6 +357,12 @@
      * Valid errors returned:
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:NOT_PROVISIONED
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway getDataRegistrationStateResponse(RadioResponseInfo info,
             DataRegStateResult dataRegResponse);
@@ -364,6 +376,10 @@
      * Valid errors returned:
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway getOperatorResponse(RadioResponseInfo info, string longName, string shortName,
             string numeric);
@@ -375,6 +391,16 @@
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
      *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:DEVICE_IN_USE
+     *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:INVALID_MODEM_STATE
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway setRadioPowerResponse(RadioResponseInfo info);
 
@@ -464,6 +490,8 @@
      *   RadioError:OP_NOT_ALLOWED_BEFORE_REG_TO_NW
      *   RadioError:OP_NOT_ALLOWED_DURING_VOICE_CALL
      *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway setupDataCallResponse(RadioResponseInfo info, SetupDataCallResult dcResponse);
 
@@ -692,6 +720,10 @@
      * Valid errors returned:
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:INVALID_CALL_ID
+     *   RadioError:INVALID_STATE
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway deactivateDataCallResponse(RadioResponseInfo info);
 
@@ -765,6 +797,12 @@
      * Valid errors returned:
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway getNetworkSelectionModeResponse(RadioResponseInfo info, bool manual);
 
@@ -776,6 +814,12 @@
      *   RadioError:RADIO_NOT_AVAILABLE
      *   RadioError:ILLEGAL_SIM_OR_ME
      *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
      *
      * Returns RadioError:ILLEGAL_SIM_OR_ME when the failure is permanent and
      * no retries needed, such as illegal SIM or ME.
@@ -790,6 +834,13 @@
      *   RadioError:RADIO_NOT_AVAILABLE
      *   RadioError:ILLEGAL_SIM_OR_ME
      *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:INVALID_STATE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
      *
      * Returns RadioError:ILLEGAL_SIM_OR_ME when the failure is permanent and
      * no retries needed, such as illegal SIM or ME.
@@ -810,6 +861,8 @@
      *   RadioError:INTERNAL_ERR
      *   RadioError:NO_MEMORY
      *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:CANCELLED
      */
     oneway getAvailableNetworksResponse(RadioResponseInfo info,
             vec<OperatorInfo> networkInfos);
@@ -858,6 +911,12 @@
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
      *   RadioError:EMPTY_RECORD
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:NOT_PROVISIONED
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway getBasebandVersionResponse(RadioResponseInfo info, string version);
 
@@ -1006,6 +1065,12 @@
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
      *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway setBandModeResponse(RadioResponseInfo info);
 
@@ -1017,6 +1082,11 @@
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
      *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway getAvailableBandModesResponse(RadioResponseInfo info, vec<RadioBandMode> bandModes);
 
@@ -1083,6 +1153,12 @@
      *   RadioError:RADIO_NOT_AVAILABLE
      *   RadioError:OPERATION_NOT_ALLOWED
      *   RadioError:MODE_NOT_SUPPORTED
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway setPreferredNetworkTypeResponse(RadioResponseInfo info);
 
@@ -1093,6 +1169,12 @@
      * Valid errors returned:
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway getPreferredNetworkTypeResponse(RadioResponseInfo info,
             PreferredNetworkType nwType);
@@ -1105,6 +1187,12 @@
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
      *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:NO_NETWORK_FOUND
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway getNeighboringCidsResponse(RadioResponseInfo info, vec<NeighboringCell> cells);
 
@@ -1114,6 +1202,12 @@
      * Valid errors returned:
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway setLocationUpdatesResponse(RadioResponseInfo info);
 
@@ -1134,6 +1228,13 @@
      * Valid errors returned:
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
+     *   RadioError:OPERATION_NOT_ALLOWED
      */
     oneway setCdmaRoamingPreferenceResponse(RadioResponseInfo info);
 
@@ -1145,6 +1246,11 @@
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
      *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway getCdmaRoamingPreferenceResponse(RadioResponseInfo info, CdmaRoamingType type);
 
@@ -1424,6 +1530,13 @@
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
      *   RadioError:SUBSCRIPTION_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:NOT_PROVISIONED
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway getCDMASubscriptionResponse(RadioResponseInfo info, string mdn, string hSid,
             string hNid, string min, string prl);
@@ -1480,6 +1593,12 @@
      * Valid errors returned:
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:NOT_PROVISIONED
      *
      * If a empty string value is returned for any of the device id, it means that there was error
      * accessing the device.
@@ -1495,6 +1614,12 @@
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
      *   RadioError:OPERATION_NO_ALLOWED
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:NO_MEMORY
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway exitEmergencyCallbackModeResponse(RadioResponseInfo info);
 
@@ -1622,6 +1747,12 @@
      * Valid errors returned:
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:NO_NETWORK_FOUND
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway getCellInfoListResponse(RadioResponseInfo info, vec<CellInfo> cellInfo);
 
@@ -1631,6 +1762,10 @@
      * Valid errors returned:
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
      */
     oneway setCellInfoListRateResponse(RadioResponseInfo info);
 
@@ -1641,6 +1776,13 @@
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
      *   RadioError:SUBSCRIPTION_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:NOT_PROVISIONED
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway setInitialAttachApnResponse(RadioResponseInfo info);
 
@@ -1771,6 +1913,12 @@
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
      *   RadioError:SUBSCRIPTION_NOT_SUPPORTED
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway setUiccSubscriptionResponse(RadioResponseInfo info);
 
@@ -1780,6 +1928,13 @@
      * Valid errors returned:
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:DEVICE_IN_USE
+     *   RadioError:INVALID_MODEM_STATE
      */
     oneway setDataAllowedResponse(RadioResponseInfo info);
 
@@ -1820,6 +1975,10 @@
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
      *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway requestShutdownResponse(RadioResponseInfo info);
 
@@ -1831,6 +1990,8 @@
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
      *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:INVALID_STATE
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway getRadioCapabilityResponse(RadioResponseInfo info, RadioCapability rc);
 
@@ -1843,6 +2004,13 @@
      *   RadioError:NONE means a unsol radioCapability() will be sent within 30 seconds.
      *   RadioError:RADIO_NOT_AVAILABLE
      *   RadioError:OPERATION_NOT_ALLOWED
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:MODEM_ERR
+     *   RadioError:INVALID_STATE
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway setRadioCapabilityResponse(RadioResponseInfo info, RadioCapability rc);
 
@@ -1854,6 +2022,8 @@
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
      *   RadioError:LCE_NOT_SUPPORTED
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway startLceServiceResponse(RadioResponseInfo info, LceStatusInfo statusInfo);
 
@@ -1886,6 +2056,11 @@
      * Valid errors returned:
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:MODEM_ERR
+     *   RadioError:NOT_PROVISIONED
      */
     oneway getModemActivityInfoResponse(RadioResponseInfo info, ActivityStatsInfo activityInfo);
 
@@ -1926,6 +2101,11 @@
      * Valid errors returned:
      *   RadioError:NONE
      *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:INVALID_ARGUMENTS
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway sendDeviceStateResponse(RadioResponseInfo info);
 
@@ -1936,6 +2116,10 @@
      *   RadioError:NONE
      *   RadioError:INVALID_ARGUMENTS
      *   RadioError:RADIO_NOT_AVAILABLE
+     *   RadioError:NO_MEMORY
+     *   RadioError:INTERNAL_ERR
+     *   RadioError:SYSTEM_ERR
+     *   RadioError:REQUEST_NOT_SUPPORTED
      */
     oneway setIndicationFilterResponse(RadioResponseInfo info);
 
diff --git a/radio/1.0/vts/functional/sap_hidl_hal_api.cpp b/radio/1.0/vts/functional/sap_hidl_hal_api.cpp
index 682230c..e166209 100644
--- a/radio/1.0/vts/functional/sap_hidl_hal_api.cpp
+++ b/radio/1.0/vts/functional/sap_hidl_hal_api.cpp
@@ -66,7 +66,8 @@
   EXPECT_EQ(std::cv_status::no_timeout, wait());
   EXPECT_EQ(sapCb->sapResponseToken, token);
 
-  ASSERT_TRUE(SapResultCode::DATA_NOT_AVAILABLE == sapCb->sapResultCode ||
+  ASSERT_TRUE(SapResultCode::GENERIC_FAILURE == sapCb->sapResultCode ||
+              SapResultCode::DATA_NOT_AVAILABLE == sapCb->sapResultCode ||
               SapResultCode::CARD_ALREADY_POWERED_OFF == sapCb->sapResultCode ||
               SapResultCode::CARD_REMOVED == sapCb->sapResultCode);
 }
@@ -82,7 +83,8 @@
   EXPECT_EQ(std::cv_status::no_timeout, wait());
   EXPECT_EQ(sapCb->sapResponseToken, token);
 
-  ASSERT_TRUE(SapResultCode::CARD_NOT_ACCESSSIBLE == sapCb->sapResultCode ||
+  ASSERT_TRUE(SapResultCode::GENERIC_FAILURE == sapCb->sapResultCode ||
+              SapResultCode::CARD_NOT_ACCESSSIBLE == sapCb->sapResultCode ||
               SapResultCode::CARD_ALREADY_POWERED_OFF == sapCb->sapResultCode ||
               SapResultCode::CARD_REMOVED == sapCb->sapResultCode ||
               SapResultCode::CARD_ALREADY_POWERED_ON == sapCb->sapResultCode);
@@ -98,7 +100,8 @@
   EXPECT_EQ(std::cv_status::no_timeout, wait());
   EXPECT_EQ(sapCb->sapResponseToken, token);
 
-  ASSERT_TRUE(SapResultCode::CARD_NOT_ACCESSSIBLE == sapCb->sapResultCode ||
+  ASSERT_TRUE(SapResultCode::GENERIC_FAILURE == sapCb->sapResultCode ||
+              SapResultCode::CARD_NOT_ACCESSSIBLE == sapCb->sapResultCode ||
               SapResultCode::CARD_ALREADY_POWERED_OFF == sapCb->sapResultCode ||
               SapResultCode::CARD_REMOVED == sapCb->sapResultCode);
 }
@@ -113,7 +116,8 @@
   EXPECT_EQ(std::cv_status::no_timeout, wait());
   EXPECT_EQ(sapCb->sapResponseToken, token);
 
-  EXPECT_EQ(SapResultCode::DATA_NOT_AVAILABLE, sapCb->sapResultCode);
+  ASSERT_TRUE(SapResultCode::GENERIC_FAILURE == sapCb->sapResultCode ||
+              SapResultCode::DATA_NOT_AVAILABLE == sapCb->sapResultCode);
 }
 
 /*
diff --git a/tests/libhwbinder/1.0/default/ScheduleTest.h b/tests/libhwbinder/1.0/default/ScheduleTest.h
index ad6dd9d..b1ed660 100644
--- a/tests/libhwbinder/1.0/default/ScheduleTest.h
+++ b/tests/libhwbinder/1.0/default/ScheduleTest.h
@@ -31,6 +31,8 @@
     // Methods from ::android::hidl::base::V1_0::IBase follow.
 };
 
+extern "C" IScheduleTest* HIDL_FETCH_IScheduleTest(const char* name);
+
 }  // namespace implementation
 }  // namespace V1_0
 }  // namespace libhwbinder