Strip hinge angle sensor when running a 2.1 HAL as 2.0

VTS ensures that  2.0 HALs don't expose the hinge angle sensor,
but the 2.1 HALs must run 2.0 VTS tests. This CL ensures that
we don't expose the hinge angle sensor on the 2.0 HAL, to avoid
failing those VTS tests.

Bug: 173135479
Test: run vts -a x86 -m VtsHalSensorsV2_0TargetTest
Change-Id: I944bfb0b01be0831e45cfd3d6ed7dab6770d1b80
This commit is contained in:
karthik bharadwaj
2020-11-15 20:50:06 -08:00
committed by Karthik Bharadwaj
parent f19e282226
commit c8fd7b31e0
5 changed files with 34 additions and 15 deletions

View File

@@ -28,6 +28,19 @@ namespace V2_0 {
namespace implementation {
struct SensorsV2_0 : public ::android::hardware::sensors::V2_X::implementation::Sensors<ISensors> {
Return<void>
getSensorsList(V2_0::ISensors::getSensorsList_cb _hidl_cb) override {
std::vector<V1_0::SensorInfo> sensors;
for (const auto &sensor : mSensors) {
sensors.push_back(V2_1::implementation::convertToOldSensorInfo(
sensor.second->getSensorInfo()));
}
// Call the HIDL callback with the SensorInfo
_hidl_cb(sensors);
return Void();
}
};
} // namespace implementation

View File

@@ -54,6 +54,23 @@ struct SensorsV2_1 : public Sensors {
// Methods from ::android::hardware::sensors::V2_1::ISensors follow.
Return<void> getSensorsList_2_1(ISensors::getSensorsList_2_1_cb _hidl_cb) override;
Return<void>
getSensorsList(V2_0::ISensors::getSensorsList_cb _hidl_cb) override {
std::vector<V1_0::SensorInfo> sensors;
for (const auto &sensor : mSensors) {
auto &info = sensor.second->getSensorInfo();
if (info.type != SensorType::HINGE_ANGLE) {
sensors.push_back(V2_1::implementation::convertToOldSensorInfo(
sensor.second->getSensorInfo()));
}
}
// Call the HIDL callback with the SensorInfo
_hidl_cb(sensors);
return Void();
}
Return<Result> initialize_2_1(
const ::android::hardware::MQDescriptorSync<V2_1::Event>& eventQueueDescriptor,
const ::android::hardware::MQDescriptorSync<uint32_t>& wakeLockDescriptor,
@@ -71,4 +88,4 @@ struct SensorsV2_1 : public Sensors {
} // namespace hardware
} // namespace android
#endif // ANDROID_HARDWARE_SENSORS_V2_1_H
#endif // ANDROID_HARDWARE_SENSORS_V2_1_H

View File

@@ -78,19 +78,6 @@ struct Sensors : public ISensorsInterface, public ISensorsEventCallback {
}
// Methods from ::android::hardware::sensors::V2_0::ISensors follow.
Return<void> getSensorsList(V2_0::ISensors::getSensorsList_cb _hidl_cb) override {
std::vector<V1_0::SensorInfo> sensors;
for (const auto& sensor : mSensors) {
sensors.push_back(
V2_1::implementation::convertToOldSensorInfo(sensor.second->getSensorInfo()));
}
// Call the HIDL callback with the SensorInfo
_hidl_cb(sensors);
return Void();
}
Return<Result> setOperationMode(OperationMode mode) override {
for (auto sensor : mSensors) {
sensor.second->setOperationMode(mode);

View File

@@ -124,7 +124,9 @@ Return<void> HalProxy::getSensorsList_2_1(ISensorsV2_1::getSensorsList_2_1_cb _h
Return<void> HalProxy::getSensorsList(ISensorsV2_0::getSensorsList_cb _hidl_cb) {
std::vector<V1_0::SensorInfo> sensors;
for (const auto& iter : mSensors) {
if (iter.second.type != SensorType::HINGE_ANGLE) {
sensors.push_back(convertToOldSensorInfo(iter.second));
}
}
_hidl_cb(sensors);
return Void();

View File

@@ -366,7 +366,7 @@ int32_t SensorsHidlTest::getInvalidSensorHandle() {
for (const SensorInfoType& sensor : getSensorsList()) {
maxHandle = std::max(maxHandle, sensor.sensorHandle);
}
return maxHandle + 1;
return maxHandle + 42;
}
// Test if sensor list returned is valid