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

Commit febff45f authored by Ricardo Cerqueira's avatar Ricardo Cerqueira
Browse files

sensors: Fix sensorId/sensorType logic in back-compat layer

As it was, the code was only working on devices where the ID matched
the the sensorType. This isn't necessarily true on every device (and
definititely isn't on some)

Change-Id: I70a5d827c5a6406b5edacc334705edb43e6f5638
parent a1d1a0dc
Loading
Loading
Loading
Loading
+10 −4
Original line number Original line Diff line number Diff line
@@ -182,7 +182,7 @@ ssize_t SensorDevice::poll(sensors_event_t* buffer, size_t count) {
    if (!mSensorDevice && !mOldSensorsCompatMode) return NO_INIT;
    if (!mSensorDevice && !mOldSensorsCompatMode) return NO_INIT;
    if (mOldSensorsCompatMode) {
    if (mOldSensorsCompatMode) {
        size_t pollsDone = 0;
        size_t pollsDone = 0;
        LOGV("%d buffers were requested",count);
        //LOGV("%d buffers were requested",count);
        while (!mOldSensorsEnabled) {
        while (!mOldSensorsEnabled) {
            sleep(1);
            sleep(1);
            LOGV("Waiting...");
            LOGV("Waiting...");
@@ -190,12 +190,17 @@ ssize_t SensorDevice::poll(sensors_event_t* buffer, size_t count) {
        while (pollsDone < (size_t)mOldSensorsEnabled && pollsDone < count) {
        while (pollsDone < (size_t)mOldSensorsEnabled && pollsDone < count) {
            sensors_data_t oldBuffer;
            sensors_data_t oldBuffer;
            long result =  mSensorDataDevice->poll(mSensorDataDevice, &oldBuffer);
            long result =  mSensorDataDevice->poll(mSensorDataDevice, &oldBuffer);
            if (!result || result > SENSOR_TYPE_ROTATION_VECTOR) {
            if (result == 0x7FFFFFFF) {
                LOGV("Useless result at round %d",pollsDone);
                return pollsDone;
            }
            if (!oldBuffer.time) {
                LOGV("Useless output at round %u from %d",pollsDone,oldBuffer.sensor);
                count--;
                continue;
                continue;
            }
            }
            buffer[pollsDone].version = sizeof(struct sensors_event_t);
            buffer[pollsDone].timestamp = oldBuffer.time;
            buffer[pollsDone].timestamp = oldBuffer.time;
            buffer[pollsDone].sensor = oldBuffer.sensor;
            buffer[pollsDone].sensor = result;
            buffer[pollsDone].type = oldBuffer.sensor;
            buffer[pollsDone].type = oldBuffer.sensor;
            buffer[pollsDone].acceleration = oldBuffer.acceleration;
            buffer[pollsDone].acceleration = oldBuffer.acceleration;
            buffer[pollsDone].magnetic = oldBuffer.magnetic;
            buffer[pollsDone].magnetic = oldBuffer.magnetic;
@@ -203,6 +208,7 @@ ssize_t SensorDevice::poll(sensors_event_t* buffer, size_t count) {
            buffer[pollsDone].temperature = oldBuffer.temperature;
            buffer[pollsDone].temperature = oldBuffer.temperature;
            buffer[pollsDone].distance = oldBuffer.distance;
            buffer[pollsDone].distance = oldBuffer.distance;
            buffer[pollsDone].light = oldBuffer.light;
            buffer[pollsDone].light = oldBuffer.light;
            LOGV("Adding results for sensor %d", buffer[pollsDone].sensor);
            pollsDone++;
            pollsDone++;
        }
        }
        return pollsDone;
        return pollsDone;