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

Commit 39e04c65 authored by Arthur Ishiguro's avatar Arthur Ishiguro
Browse files

Reorganize sensors resolution logic

Bug: 195593357
Test: Load on device
Change-Id: Iad2642ad06bbe315332d47abb1ee4f8108d8ef58
parent ffef668d
Loading
Loading
Loading
Loading
+0 −21
Original line number Diff line number Diff line
@@ -216,9 +216,6 @@ ssize_t HidlSensorHalWrapper::pollFmq(sensors_event_t* buffer, size_t maxNumEven

            for (size_t i = 0; i < eventsToRead; i++) {
                convertToSensorEvent(mEventBuffer[i], &buffer[i]);
                android::SensorDeviceUtils::quantizeSensorEventValues(&buffer[i],
                                                                      getResolutionForSensor(
                                                                              buffer[i].sensor));
            }
            eventsRead = eventsToRead;
        } else {
@@ -538,25 +535,7 @@ void HidlSensorHalWrapper::convertToSensorEventsAndQuantize(

    for (size_t i = 0; i < src.size(); ++i) {
        android::hardware::sensors::V2_1::implementation::convertToSensorEvent(src[i], &dst[i]);
        android::SensorDeviceUtils::quantizeSensorEventValues(&dst[i],
                                                              getResolutionForSensor(
                                                                      dst[i].sensor));
    }
}

float HidlSensorHalWrapper::getResolutionForSensor(int sensorHandle) {
    for (size_t i = 0; i < mSensorList.size(); i++) {
        if (sensorHandle == mSensorList[i].handle) {
            return mSensorList[i].resolution;
        }
    }

    auto it = mConnectedDynamicSensors.find(sensorHandle);
    if (it != mConnectedDynamicSensors.end()) {
        return it->second.resolution;
    }

    return 0;
}

} // namespace android
+0 −3
Original line number Diff line number Diff line
@@ -124,7 +124,6 @@ public:
private:
    sp<::android::hardware::sensors::V2_1::implementation::ISensorsWrapperBase> mSensors;
    sp<::android::hardware::sensors::V2_1::ISensorsCallback> mCallback;
    std::vector<sensor_t> mSensorList;
    std::unordered_map<int32_t, sensor_t> mConnectedDynamicSensors;

    std::mutex mDynamicSensorsMutex;
@@ -167,8 +166,6 @@ private:
    typedef hardware::MessageQueue<uint32_t, hardware::kSynchronizedReadWrite> WakeLockQueue;
    std::unique_ptr<WakeLockQueue> mWakeLockQueue;

    float getResolutionForSensor(int sensorHandle);

    hardware::EventFlag* mEventQueueFlag;
    hardware::EventFlag* mWakeLockQueueFlag;

+8 −0
Original line number Diff line number Diff line
@@ -349,6 +349,14 @@ ssize_t SensorDevice::poll(sensors_event_t* buffer, size_t count) {
        ALOGE("Must support polling or FMQ");
        eventsRead = -1;
    }

    if (eventsRead > 0) {
        for (ssize_t i = 0; i < eventsRead; i++) {
            float resolution = getResolutionForSensor(buffer[i].sensor);
            android::SensorDeviceUtils::quantizeSensorEventValues(&buffer[i], resolution);
        }
    }

    return eventsRead;
}