Loading sensors/2.0/vts/functional/VtsHalSensorsV2_0TargetTest.cpp +32 −5 Original line number Diff line number Diff line Loading @@ -173,6 +173,7 @@ class SensorsHidlTest : public SensorsHidlTestBase { // Helper functions void activateAllSensors(bool enable); std::vector<SensorInfo> getNonOneShotSensors(); std::vector<SensorInfo> getNonOneShotAndNonSpecialSensors(); std::vector<SensorInfo> getOneShotSensors(); std::vector<SensorInfo> getInjectEventSensors(); int32_t getInvalidSensorHandle(); Loading Loading @@ -255,6 +256,18 @@ std::vector<SensorInfo> SensorsHidlTest::getNonOneShotSensors() { return sensors; } std::vector<SensorInfo> SensorsHidlTest::getNonOneShotAndNonSpecialSensors() { std::vector<SensorInfo> sensors; for (const SensorInfo& info : getSensorsList()) { SensorFlagBits reportMode = extractReportMode(info.flags); if (reportMode != SensorFlagBits::ONE_SHOT_MODE && reportMode != SensorFlagBits::SPECIAL_REPORTING_MODE) { sensors.push_back(info); } } return sensors; } std::vector<SensorInfo> SensorsHidlTest::getOneShotSensors() { std::vector<SensorInfo> sensors; for (const SensorInfo& info : getSensorsList()) { Loading Loading @@ -833,9 +846,10 @@ TEST_F(SensorsHidlTest, NoStaleEvents) { EventCallback callback; getEnvironment()->registerCallback(&callback); const std::vector<SensorInfo> sensors = getSensorsList(); // This test is not valid for one-shot or special-report-mode sensors const std::vector<SensorInfo> sensors = getNonOneShotAndNonSpecialSensors(); int32_t maxMinDelay = 0; for (const SensorInfo& sensor : getSensorsList()) { for (const SensorInfo& sensor : sensors) { maxMinDelay = std::max(maxMinDelay, sensor.minDelay); } Loading @@ -851,10 +865,15 @@ TEST_F(SensorsHidlTest, NoStaleEvents) { // Save the last received event for each sensor std::map<int32_t, int64_t> lastEventTimestampMap; for (const SensorInfo& sensor : sensors) { // Some on-change sensors may not report an event without stimulus if (extractReportMode(sensor.flags) != SensorFlagBits::ON_CHANGE_MODE) { ASSERT_GE(callback.getEvents(sensor.sensorHandle).size(), 1); } if (callback.getEvents(sensor.sensorHandle).size() >= 1) { lastEventTimestampMap[sensor.sensorHandle] = callback.getEvents(sensor.sensorHandle).back().timestamp; } } // Allow some time to pass, reset the callback, then reactivate the sensors usleep(kOneSecond + (5 * maxMinDelay)); Loading @@ -864,6 +883,14 @@ TEST_F(SensorsHidlTest, NoStaleEvents) { activateAllSensors(false); for (const SensorInfo& sensor : sensors) { // Skip sensors that did not previously report an event if (lastEventTimestampMap.find(sensor.sensorHandle) == lastEventTimestampMap.end()) { continue; } // Skip on-change sensors that do not consistently report an initial event if (callback.getEvents(sensor.sensorHandle).size() < 1) { continue; } // Ensure that the first event received is not stale by ensuring that its timestamp is // sufficiently different from the previous event const Event newEvent = callback.getEvents(sensor.sensorHandle).front(); Loading Loading
sensors/2.0/vts/functional/VtsHalSensorsV2_0TargetTest.cpp +32 −5 Original line number Diff line number Diff line Loading @@ -173,6 +173,7 @@ class SensorsHidlTest : public SensorsHidlTestBase { // Helper functions void activateAllSensors(bool enable); std::vector<SensorInfo> getNonOneShotSensors(); std::vector<SensorInfo> getNonOneShotAndNonSpecialSensors(); std::vector<SensorInfo> getOneShotSensors(); std::vector<SensorInfo> getInjectEventSensors(); int32_t getInvalidSensorHandle(); Loading Loading @@ -255,6 +256,18 @@ std::vector<SensorInfo> SensorsHidlTest::getNonOneShotSensors() { return sensors; } std::vector<SensorInfo> SensorsHidlTest::getNonOneShotAndNonSpecialSensors() { std::vector<SensorInfo> sensors; for (const SensorInfo& info : getSensorsList()) { SensorFlagBits reportMode = extractReportMode(info.flags); if (reportMode != SensorFlagBits::ONE_SHOT_MODE && reportMode != SensorFlagBits::SPECIAL_REPORTING_MODE) { sensors.push_back(info); } } return sensors; } std::vector<SensorInfo> SensorsHidlTest::getOneShotSensors() { std::vector<SensorInfo> sensors; for (const SensorInfo& info : getSensorsList()) { Loading Loading @@ -833,9 +846,10 @@ TEST_F(SensorsHidlTest, NoStaleEvents) { EventCallback callback; getEnvironment()->registerCallback(&callback); const std::vector<SensorInfo> sensors = getSensorsList(); // This test is not valid for one-shot or special-report-mode sensors const std::vector<SensorInfo> sensors = getNonOneShotAndNonSpecialSensors(); int32_t maxMinDelay = 0; for (const SensorInfo& sensor : getSensorsList()) { for (const SensorInfo& sensor : sensors) { maxMinDelay = std::max(maxMinDelay, sensor.minDelay); } Loading @@ -851,10 +865,15 @@ TEST_F(SensorsHidlTest, NoStaleEvents) { // Save the last received event for each sensor std::map<int32_t, int64_t> lastEventTimestampMap; for (const SensorInfo& sensor : sensors) { // Some on-change sensors may not report an event without stimulus if (extractReportMode(sensor.flags) != SensorFlagBits::ON_CHANGE_MODE) { ASSERT_GE(callback.getEvents(sensor.sensorHandle).size(), 1); } if (callback.getEvents(sensor.sensorHandle).size() >= 1) { lastEventTimestampMap[sensor.sensorHandle] = callback.getEvents(sensor.sensorHandle).back().timestamp; } } // Allow some time to pass, reset the callback, then reactivate the sensors usleep(kOneSecond + (5 * maxMinDelay)); Loading @@ -864,6 +883,14 @@ TEST_F(SensorsHidlTest, NoStaleEvents) { activateAllSensors(false); for (const SensorInfo& sensor : sensors) { // Skip sensors that did not previously report an event if (lastEventTimestampMap.find(sensor.sensorHandle) == lastEventTimestampMap.end()) { continue; } // Skip on-change sensors that do not consistently report an initial event if (callback.getEvents(sensor.sensorHandle).size() < 1) { continue; } // Ensure that the first event received is not stale by ensuring that its timestamp is // sufficiently different from the previous event const Event newEvent = callback.getEvents(sensor.sensorHandle).front(); Loading