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

Commit 97fc6f5e authored by Yu-Han Yang's avatar Yu-Han Yang
Browse files

Log the last GnssMeasurementsEvent summary in dumpsys

Bug: 319518263
Test: on device
Change-Id: Iee0116b15712838f710aeb6ff72becd0a9ddd1ce
parent 55e27576
Loading
Loading
Loading
Loading
+48 −0
Original line number Original line Diff line number Diff line
@@ -25,6 +25,7 @@ import static com.android.server.location.gnss.GnssManagerService.TAG;
import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
import android.app.AppOpsManager;
import android.app.AppOpsManager;
import android.location.GnssMeasurement;
import android.location.GnssMeasurementRequest;
import android.location.GnssMeasurementRequest;
import android.location.GnssMeasurementsEvent;
import android.location.GnssMeasurementsEvent;
import android.location.IGnssMeasurementsListener;
import android.location.IGnssMeasurementsListener;
@@ -33,6 +34,7 @@ import android.os.IBinder;
import android.stats.location.LocationStatsEnums;
import android.stats.location.LocationStatsEnums;
import android.util.Log;
import android.util.Log;


import com.android.internal.annotations.GuardedBy;
import com.android.server.location.gnss.GnssConfiguration.HalInterfaceVersion;
import com.android.server.location.gnss.GnssConfiguration.HalInterfaceVersion;
import com.android.server.location.gnss.hal.GnssNative;
import com.android.server.location.gnss.hal.GnssNative;
import com.android.server.location.injector.AppOpsHelper;
import com.android.server.location.injector.AppOpsHelper;
@@ -40,6 +42,8 @@ import com.android.server.location.injector.Injector;
import com.android.server.location.injector.LocationUsageLogger;
import com.android.server.location.injector.LocationUsageLogger;
import com.android.server.location.injector.SettingsHelper;
import com.android.server.location.injector.SettingsHelper;


import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Collection;
import java.util.Collection;


/**
/**
@@ -91,6 +95,9 @@ public final class GnssMeasurementsProvider extends
    private final LocationUsageLogger mLogger;
    private final LocationUsageLogger mLogger;
    private final GnssNative mGnssNative;
    private final GnssNative mGnssNative;


    @GuardedBy("mMultiplexerLock")
    private GnssMeasurementsEvent mLastGnssMeasurementsEvent;

    public GnssMeasurementsProvider(Injector injector, GnssNative gnssNative) {
    public GnssMeasurementsProvider(Injector injector, GnssNative gnssNative) {
        super(injector);
        super(injector);
        mAppOpsHelper = injector.getAppOpsHelper();
        mAppOpsHelper = injector.getAppOpsHelper();
@@ -264,5 +271,46 @@ public final class GnssMeasurementsProvider extends
                return null;
                return null;
            }
            }
        });
        });
        synchronized (mMultiplexerLock) {
            mLastGnssMeasurementsEvent = event;
        }
    }

    @Override
    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        super.dump(fd, pw, args);
        pw.print("last measurements=");
        pw.println(getLastMeasurementEventSummary());
    }

    /**
     * Returns a string of GnssMeasurementsEvent summary including received time, satellite count
     * and average baseband C/No.
     */
    private String getLastMeasurementEventSummary() {
        synchronized (mMultiplexerLock) {
            if (mLastGnssMeasurementsEvent == null) {
                return null;
            }
            StringBuilder builder = new StringBuilder("[");
            builder.append("elapsedRealtimeNs=").append(
                    mLastGnssMeasurementsEvent.getClock().getElapsedRealtimeNanos());
            builder.append(" measurementCount=").append(
                    mLastGnssMeasurementsEvent.getMeasurements().size());

            float sumBasebandCn0 = 0;
            int countBasebandCn0 = 0;
            for (GnssMeasurement measurement : mLastGnssMeasurementsEvent.getMeasurements()) {
                if (measurement.hasBasebandCn0DbHz()) {
                    sumBasebandCn0 += measurement.getBasebandCn0DbHz();
                    countBasebandCn0++;
                }
            }
            if (countBasebandCn0 > 0) {
                builder.append(" avgBasebandCn0=").append(sumBasebandCn0 / countBasebandCn0);
            }
            builder.append("]");
            return builder.toString();
        }
    }
    }
}
}