Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b5097f6e authored by karthik bharadwaj's avatar karthik bharadwaj Committed by Raj M
Browse files

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
(cherry picked from commit c8fd7b31)
parent 73515d7f
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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
+18 −1
Original line number Diff line number Diff line
@@ -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,
+0 −13
Original line number Diff line number Diff line
@@ -79,19 +79,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);
+2 −0
Original line number Diff line number Diff line
@@ -124,8 +124,10 @@ 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();
}
+1 −1
Original line number Diff line number Diff line
@@ -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