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

Commit dc0a7a5a authored by Scott Mertz's avatar Scott Mertz
Browse files

sensorservice: add fusion sensors if all events are supported

- Fusion sensors depend on gyro, mag field, and accelerometer
  events in order to emulate these sensors.  Don't create
  them unless ALL of the real hardware devices required exist.

Change-Id: I1bce167a52c2dfc56a07450f858b01b78c39b7fe
parent af2dde62
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -80,6 +80,8 @@ void SensorService::onFirstRef()
        if (count > 0) {
            ssize_t orientationIndex = -1;
            bool hasGyro = false;
            bool hasMagnetometer = false;
            bool hasAccelerometer = false;
            uint32_t virtualSensorsNeeds =
                    (1<<SENSOR_TYPE_GRAVITY) |
                    (1<<SENSOR_TYPE_LINEAR_ACCELERATION) |
@@ -96,6 +98,12 @@ void SensorService::onFirstRef()
                    case SENSOR_TYPE_GYROSCOPE_UNCALIBRATED:
                        hasGyro = true;
                        break;
                    case SENSOR_TYPE_MAGNETIC_FIELD:
                        hasMagnetometer = true;
                        break;
                    case SENSOR_TYPE_ACCELEROMETER:
                        hasAccelerometer = true;
                        break;
                    case SENSOR_TYPE_GRAVITY:
                    case SENSOR_TYPE_LINEAR_ACCELERATION:
                    case SENSOR_TYPE_ROTATION_VECTOR:
@@ -112,7 +120,7 @@ void SensorService::onFirstRef()
            // build the sensor list returned to users
            mUserSensorList = mSensorList;

            if (hasGyro) {
            if (hasGyro && hasMagnetometer && hasAccelerometer) {
                Sensor aSensor;

                // Add Android virtual sensors if they're not already