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

Commit a1a8e7f3 authored by David Christie's avatar David Christie
Browse files

Wait for the capabilities callback before deciding FLP HAL version.

-Some implementations require a modem handshake to determine
 FLP HAL version and can't do it upon initialization.  Wait
 for a v2 callback before assuming that the HAL implementation
 is actually v2.

Bug: 21958418
Change-Id: I7512d293f99363c63580c69d84f80da96a88dd2f
parent b94761d0
Loading
Loading
Loading
Loading
+21 −4
Original line number Diff line number Diff line
@@ -136,6 +136,10 @@ public class FlpHardwareProvider {
        }

        maybeSendCapabilities();

        if (mGeofenceHardwareSink != null) {
            mGeofenceHardwareSink.setVersion(getVersion());
        }
    }

    private void onBatchingStatus(int status) {
@@ -152,10 +156,23 @@ public class FlpHardwareProvider {
        }
    }

    // Returns the current version of the FLP HAL.  This depends both on the version of the
    // structure returned by the hardware layer, and whether or not we've received the
    // capabilities callback on initialization.  Assume original version until we get
    // the new initialization callback.
    private int getVersion() {
        synchronized (mLocationSinkLock) {
            if (mHaveBatchingCapabilities) {
                return mVersion;
            }
        }
        return 1;
    }

    private void setVersion(int version) {
        mVersion = version;
        if (mGeofenceHardwareSink != null) {
            mGeofenceHardwareSink.setVersion(version);
            mGeofenceHardwareSink.setVersion(getVersion());
        }
    }

@@ -375,7 +392,7 @@ public class FlpHardwareProvider {

        @Override
        public void flushBatchedLocations() {
            if (mVersion >= FIRST_VERSION_WITH_FLUSH_LOCATIONS) {
            if (getVersion() >= FIRST_VERSION_WITH_FLUSH_LOCATIONS) {
                nativeFlushBatchedLocations();
            } else {
                Log.wtf(TAG,
@@ -405,7 +422,7 @@ public class FlpHardwareProvider {

        @Override
        public int getVersion() {
            return mVersion;
            return FlpHardwareProvider.this.getVersion();
        }
    };

@@ -482,7 +499,7 @@ public class FlpHardwareProvider {
    private GeofenceHardwareImpl getGeofenceHardwareSink() {
        if (mGeofenceHardwareSink == null) {
            mGeofenceHardwareSink = GeofenceHardwareImpl.getInstance(mContext);
            mGeofenceHardwareSink.setVersion(mVersion);
            mGeofenceHardwareSink.setVersion(getVersion());
        }

        return mGeofenceHardwareSink;