Loading services/core/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,7 @@ java_library_static { libs: [ "services.net", "android.hardware.light-V2.0-java", "android.hardware.gnss-java", "android.hardware.power-java", "android.hardware.power-V1.0-java", "android.hardware.vibrator-java", Loading services/core/java/com/android/server/location/LocationShellCommand.java +1 −0 Original line number Diff line number Diff line Loading @@ -88,5 +88,6 @@ class LocationShellCommand extends BasicShellCommandHandler { pw.println(" force_time_injection - requests NTP time injection to chipset"); pw.println(" force_psds_injection - " + "requests predictive aiding data injection to chipset"); pw.println(" request_power_stats - requests GNSS power stats update from chipset"); } } services/core/java/com/android/server/location/gnss/GnssLocationProvider.java +44 −31 Original line number Diff line number Diff line Loading @@ -363,6 +363,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements private final GnssMeasurementCorrectionsProvider mGnssMeasurementCorrectionsProvider; private final GnssAntennaInfoProvider mGnssAntennaInfoProvider; private final GnssNavigationMessageProvider mGnssNavigationMessageProvider; private final GnssPowerIndicationProvider mGnssPowerIndicationProvider; private final NtpTimeHelper mNtpTimeHelper; private final GnssGeofenceProvider mGnssGeofenceProvider; private final GnssCapabilitiesProvider mGnssCapabilitiesProvider; Loading Loading @@ -534,6 +535,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements mGnssMeasurementCorrectionsProvider = new GnssMeasurementCorrectionsProvider(mHandler); mGnssAntennaInfoProvider = new GnssAntennaInfoProvider(injector); mGnssNavigationMessageProvider = new GnssNavigationMessageProvider(injector); mGnssPowerIndicationProvider = new GnssPowerIndicationProvider(); mGnssMetrics = new GnssMetrics(mContext, mBatteryStats); mNtpTimeHelper = new NtpTimeHelper(mContext, mHandler.getLooper(), this); Loading Loading @@ -1128,6 +1130,8 @@ public class GnssLocationProvider extends AbstractLocationProvider implements downloadPsdsData(/* psdsType= */ GnssPsdsDownloader.LONG_TERM_PSDS_SERVER_INDEX); } } else if ("request_power_stats".equals(command)) { GnssPowerIndicationProvider.requestPowerStats(); } else { Log.w(TAG, "sendExtraCommand: unknown command " + command); } Loading Loading @@ -1455,6 +1459,10 @@ public class GnssLocationProvider extends AbstractLocationProvider implements } } void reportGnssPowerStats(GnssPowerStats powerStats) { mHandler.post(() -> mGnssPowerIndicationProvider.onGnssPowerStatsAvailable(powerStats)); } void setTopHalCapabilities(int topHalCapabilities) { mHandler.post(() -> { mTopHalCapabilities = topHalCapabilities; Loading @@ -1481,6 +1489,15 @@ public class GnssLocationProvider extends AbstractLocationProvider implements }); } /** * Sets the capabilities bits for IGnssPowerIndication HAL. * * These capabilities are defined in IGnssPowerIndicationCallback.aidl. */ void setSubHalPowerIndicationCapabilities(int subHalCapabilities) { mHandler.post(() -> mGnssPowerIndicationProvider.onCapabilitiesUpdated(subHalCapabilities)); } private void restartRequests() { Log.i(TAG, "restartRequests"); Loading Loading @@ -1965,44 +1982,40 @@ public class GnssLocationProvider extends AbstractLocationProvider implements } } StringBuilder s = new StringBuilder(); s.append("mStarted=").append(mStarted).append(" (changed "); pw.print("mStarted=" + mStarted + " (changed "); TimeUtils.formatDuration(SystemClock.elapsedRealtime() - mStartedChangedElapsedRealtime, s); s.append(" ago)").append('\n'); s.append("mBatchingEnabled=").append(mBatchingEnabled).append('\n'); s.append("mBatchingStarted=").append(mBatchingStarted).append('\n'); s.append("mBatchSize=").append(getBatchSize()).append('\n'); s.append("mFixInterval=").append(mFixInterval).append('\n'); s.append("mTopHalCapabilities=0x").append(Integer.toHexString(mTopHalCapabilities)); s.append(" ( "); if (hasCapability(GPS_CAPABILITY_SCHEDULING)) s.append("SCHEDULING "); if (hasCapability(GPS_CAPABILITY_MSB)) s.append("MSB "); if (hasCapability(GPS_CAPABILITY_MSA)) s.append("MSA "); if (hasCapability(GPS_CAPABILITY_SINGLE_SHOT)) s.append("SINGLE_SHOT "); if (hasCapability(GPS_CAPABILITY_ON_DEMAND_TIME)) s.append("ON_DEMAND_TIME "); if (hasCapability(GPS_CAPABILITY_GEOFENCING)) s.append("GEOFENCING "); if (hasCapability(GPS_CAPABILITY_MEASUREMENTS)) s.append("MEASUREMENTS "); if (hasCapability(GPS_CAPABILITY_NAV_MESSAGES)) s.append("NAV_MESSAGES "); if (hasCapability(GPS_CAPABILITY_LOW_POWER_MODE)) s.append("LOW_POWER_MODE "); if (hasCapability(GPS_CAPABILITY_SATELLITE_BLOCKLIST)) s.append("SATELLITE_BLOCKLIST "); - mStartedChangedElapsedRealtime, pw); pw.println(" ago)"); pw.println("mBatchingEnabled=" + mBatchingEnabled); pw.println("mBatchingStarted=" + mBatchingStarted); pw.println("mBatchSize=" + getBatchSize()); pw.println("mFixInterval=" + mFixInterval); mGnssPowerIndicationProvider.dump(fd, pw, args); pw.print("mTopHalCapabilities=0x" + Integer.toHexString(mTopHalCapabilities) + " ( "); if (hasCapability(GPS_CAPABILITY_SCHEDULING)) pw.print("SCHEDULING "); if (hasCapability(GPS_CAPABILITY_MSB)) pw.print("MSB "); if (hasCapability(GPS_CAPABILITY_MSA)) pw.print("MSA "); if (hasCapability(GPS_CAPABILITY_SINGLE_SHOT)) pw.print("SINGLE_SHOT "); if (hasCapability(GPS_CAPABILITY_ON_DEMAND_TIME)) pw.print("ON_DEMAND_TIME "); if (hasCapability(GPS_CAPABILITY_GEOFENCING)) pw.print("GEOFENCING "); if (hasCapability(GPS_CAPABILITY_MEASUREMENTS)) pw.print("MEASUREMENTS "); if (hasCapability(GPS_CAPABILITY_NAV_MESSAGES)) pw.print("NAV_MESSAGES "); if (hasCapability(GPS_CAPABILITY_LOW_POWER_MODE)) pw.print("LOW_POWER_MODE "); if (hasCapability(GPS_CAPABILITY_SATELLITE_BLOCKLIST)) pw.print("SATELLITE_BLOCKLIST "); if (hasCapability(GPS_CAPABILITY_MEASUREMENT_CORRECTIONS)) { s.append("MEASUREMENT_CORRECTIONS "); pw.print("MEASUREMENT_CORRECTIONS "); } if (hasCapability(GPS_CAPABILITY_ANTENNA_INFO)) s.append("ANTENNA_INFO "); s.append(")\n"); if (hasCapability(GPS_CAPABILITY_ANTENNA_INFO)) pw.print("ANTENNA_INFO "); pw.println(")"); if (hasCapability(GPS_CAPABILITY_MEASUREMENT_CORRECTIONS)) { s.append("SubHal=MEASUREMENT_CORRECTIONS["); s.append(mGnssMeasurementCorrectionsProvider.toStringCapabilities()); s.append("]\n"); pw.println("SubHal=MEASUREMENT_CORRECTIONS[" + mGnssMeasurementCorrectionsProvider.toStringCapabilities() + "]"); } s.append(mGnssMetrics.dumpGnssMetricsAsText()); pw.print(mGnssMetrics.dumpGnssMetricsAsText()); if (dumpAll) { s.append("native internal state: \n"); s.append(" ").append(native_get_internal_state()); s.append("\n"); pw.println("native internal state: "); pw.println(" " + native_get_internal_state()); } pw.append(s); } // preallocated to avoid memory allocation in reportNmea() Loading services/core/java/com/android/server/location/gnss/GnssManagerService.java +10 −0 Original line number Diff line number Diff line Loading @@ -333,6 +333,11 @@ public class GnssManagerService implements GnssNative.Callbacks { mGnssLocationProvider.reportNavigationMessage(event); } @Override public void reportGnssPowerStats(GnssPowerStats powerStats) { mGnssLocationProvider.reportGnssPowerStats(powerStats); } @Override public void setTopHalCapabilities(int topHalCapabilities) { mGnssLocationProvider.setTopHalCapabilities(topHalCapabilities); Loading @@ -343,6 +348,11 @@ public class GnssManagerService implements GnssNative.Callbacks { mGnssLocationProvider.setSubHalMeasurementCorrectionsCapabilities(subHalCapabilities); } @Override public void setSubHalPowerIndicationCapabilities(int subHalCapabilities) { mGnssLocationProvider.setSubHalPowerIndicationCapabilities(subHalCapabilities); } @Override public void setGnssYearOfHardware(int yearOfHardware) { mGnssLocationProvider.setGnssYearOfHardware(yearOfHardware); Loading services/core/java/com/android/server/location/gnss/GnssNative.java +12 −0 Original line number Diff line number Diff line Loading @@ -48,8 +48,10 @@ class GnssNative { void reportMeasurementData(GnssMeasurementsEvent event); void reportAntennaInfo(List<GnssAntennaInfo> antennaInfos); void reportNavigationMessage(GnssNavigationMessage event); void reportGnssPowerStats(GnssPowerStats powerStats); void setTopHalCapabilities(int topHalCapabilities); void setSubHalMeasurementCorrectionsCapabilities(int subHalCapabilities); void setSubHalPowerIndicationCapabilities(int subHalCapabilities); void setGnssYearOfHardware(int yearOfHardware); void setGnssHardwareModelName(String modelName); void reportGnssServiceRestarted(); Loading Loading @@ -178,6 +180,11 @@ class GnssNative { mCallbacks.reportNavigationMessage(event); } @NativeEntryPoint private void reportGnssPowerStats(GnssPowerStats powerStats) { mCallbacks.reportGnssPowerStats(powerStats); } @NativeEntryPoint private void setTopHalCapabilities(int topHalCapabilities) { mCallbacks.setTopHalCapabilities(topHalCapabilities); Loading @@ -188,6 +195,11 @@ class GnssNative { mCallbacks.setSubHalMeasurementCorrectionsCapabilities(subHalCapabilities); } @NativeEntryPoint private void setSubHalPowerIndicationCapabilities(int subHalCapabilities) { mCallbacks.setSubHalPowerIndicationCapabilities(subHalCapabilities); } @NativeEntryPoint private void setGnssYearOfHardware(int yearOfHardware) { mCallbacks.setGnssYearOfHardware(yearOfHardware); Loading Loading
services/core/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,7 @@ java_library_static { libs: [ "services.net", "android.hardware.light-V2.0-java", "android.hardware.gnss-java", "android.hardware.power-java", "android.hardware.power-V1.0-java", "android.hardware.vibrator-java", Loading
services/core/java/com/android/server/location/LocationShellCommand.java +1 −0 Original line number Diff line number Diff line Loading @@ -88,5 +88,6 @@ class LocationShellCommand extends BasicShellCommandHandler { pw.println(" force_time_injection - requests NTP time injection to chipset"); pw.println(" force_psds_injection - " + "requests predictive aiding data injection to chipset"); pw.println(" request_power_stats - requests GNSS power stats update from chipset"); } }
services/core/java/com/android/server/location/gnss/GnssLocationProvider.java +44 −31 Original line number Diff line number Diff line Loading @@ -363,6 +363,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements private final GnssMeasurementCorrectionsProvider mGnssMeasurementCorrectionsProvider; private final GnssAntennaInfoProvider mGnssAntennaInfoProvider; private final GnssNavigationMessageProvider mGnssNavigationMessageProvider; private final GnssPowerIndicationProvider mGnssPowerIndicationProvider; private final NtpTimeHelper mNtpTimeHelper; private final GnssGeofenceProvider mGnssGeofenceProvider; private final GnssCapabilitiesProvider mGnssCapabilitiesProvider; Loading Loading @@ -534,6 +535,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements mGnssMeasurementCorrectionsProvider = new GnssMeasurementCorrectionsProvider(mHandler); mGnssAntennaInfoProvider = new GnssAntennaInfoProvider(injector); mGnssNavigationMessageProvider = new GnssNavigationMessageProvider(injector); mGnssPowerIndicationProvider = new GnssPowerIndicationProvider(); mGnssMetrics = new GnssMetrics(mContext, mBatteryStats); mNtpTimeHelper = new NtpTimeHelper(mContext, mHandler.getLooper(), this); Loading Loading @@ -1128,6 +1130,8 @@ public class GnssLocationProvider extends AbstractLocationProvider implements downloadPsdsData(/* psdsType= */ GnssPsdsDownloader.LONG_TERM_PSDS_SERVER_INDEX); } } else if ("request_power_stats".equals(command)) { GnssPowerIndicationProvider.requestPowerStats(); } else { Log.w(TAG, "sendExtraCommand: unknown command " + command); } Loading Loading @@ -1455,6 +1459,10 @@ public class GnssLocationProvider extends AbstractLocationProvider implements } } void reportGnssPowerStats(GnssPowerStats powerStats) { mHandler.post(() -> mGnssPowerIndicationProvider.onGnssPowerStatsAvailable(powerStats)); } void setTopHalCapabilities(int topHalCapabilities) { mHandler.post(() -> { mTopHalCapabilities = topHalCapabilities; Loading @@ -1481,6 +1489,15 @@ public class GnssLocationProvider extends AbstractLocationProvider implements }); } /** * Sets the capabilities bits for IGnssPowerIndication HAL. * * These capabilities are defined in IGnssPowerIndicationCallback.aidl. */ void setSubHalPowerIndicationCapabilities(int subHalCapabilities) { mHandler.post(() -> mGnssPowerIndicationProvider.onCapabilitiesUpdated(subHalCapabilities)); } private void restartRequests() { Log.i(TAG, "restartRequests"); Loading Loading @@ -1965,44 +1982,40 @@ public class GnssLocationProvider extends AbstractLocationProvider implements } } StringBuilder s = new StringBuilder(); s.append("mStarted=").append(mStarted).append(" (changed "); pw.print("mStarted=" + mStarted + " (changed "); TimeUtils.formatDuration(SystemClock.elapsedRealtime() - mStartedChangedElapsedRealtime, s); s.append(" ago)").append('\n'); s.append("mBatchingEnabled=").append(mBatchingEnabled).append('\n'); s.append("mBatchingStarted=").append(mBatchingStarted).append('\n'); s.append("mBatchSize=").append(getBatchSize()).append('\n'); s.append("mFixInterval=").append(mFixInterval).append('\n'); s.append("mTopHalCapabilities=0x").append(Integer.toHexString(mTopHalCapabilities)); s.append(" ( "); if (hasCapability(GPS_CAPABILITY_SCHEDULING)) s.append("SCHEDULING "); if (hasCapability(GPS_CAPABILITY_MSB)) s.append("MSB "); if (hasCapability(GPS_CAPABILITY_MSA)) s.append("MSA "); if (hasCapability(GPS_CAPABILITY_SINGLE_SHOT)) s.append("SINGLE_SHOT "); if (hasCapability(GPS_CAPABILITY_ON_DEMAND_TIME)) s.append("ON_DEMAND_TIME "); if (hasCapability(GPS_CAPABILITY_GEOFENCING)) s.append("GEOFENCING "); if (hasCapability(GPS_CAPABILITY_MEASUREMENTS)) s.append("MEASUREMENTS "); if (hasCapability(GPS_CAPABILITY_NAV_MESSAGES)) s.append("NAV_MESSAGES "); if (hasCapability(GPS_CAPABILITY_LOW_POWER_MODE)) s.append("LOW_POWER_MODE "); if (hasCapability(GPS_CAPABILITY_SATELLITE_BLOCKLIST)) s.append("SATELLITE_BLOCKLIST "); - mStartedChangedElapsedRealtime, pw); pw.println(" ago)"); pw.println("mBatchingEnabled=" + mBatchingEnabled); pw.println("mBatchingStarted=" + mBatchingStarted); pw.println("mBatchSize=" + getBatchSize()); pw.println("mFixInterval=" + mFixInterval); mGnssPowerIndicationProvider.dump(fd, pw, args); pw.print("mTopHalCapabilities=0x" + Integer.toHexString(mTopHalCapabilities) + " ( "); if (hasCapability(GPS_CAPABILITY_SCHEDULING)) pw.print("SCHEDULING "); if (hasCapability(GPS_CAPABILITY_MSB)) pw.print("MSB "); if (hasCapability(GPS_CAPABILITY_MSA)) pw.print("MSA "); if (hasCapability(GPS_CAPABILITY_SINGLE_SHOT)) pw.print("SINGLE_SHOT "); if (hasCapability(GPS_CAPABILITY_ON_DEMAND_TIME)) pw.print("ON_DEMAND_TIME "); if (hasCapability(GPS_CAPABILITY_GEOFENCING)) pw.print("GEOFENCING "); if (hasCapability(GPS_CAPABILITY_MEASUREMENTS)) pw.print("MEASUREMENTS "); if (hasCapability(GPS_CAPABILITY_NAV_MESSAGES)) pw.print("NAV_MESSAGES "); if (hasCapability(GPS_CAPABILITY_LOW_POWER_MODE)) pw.print("LOW_POWER_MODE "); if (hasCapability(GPS_CAPABILITY_SATELLITE_BLOCKLIST)) pw.print("SATELLITE_BLOCKLIST "); if (hasCapability(GPS_CAPABILITY_MEASUREMENT_CORRECTIONS)) { s.append("MEASUREMENT_CORRECTIONS "); pw.print("MEASUREMENT_CORRECTIONS "); } if (hasCapability(GPS_CAPABILITY_ANTENNA_INFO)) s.append("ANTENNA_INFO "); s.append(")\n"); if (hasCapability(GPS_CAPABILITY_ANTENNA_INFO)) pw.print("ANTENNA_INFO "); pw.println(")"); if (hasCapability(GPS_CAPABILITY_MEASUREMENT_CORRECTIONS)) { s.append("SubHal=MEASUREMENT_CORRECTIONS["); s.append(mGnssMeasurementCorrectionsProvider.toStringCapabilities()); s.append("]\n"); pw.println("SubHal=MEASUREMENT_CORRECTIONS[" + mGnssMeasurementCorrectionsProvider.toStringCapabilities() + "]"); } s.append(mGnssMetrics.dumpGnssMetricsAsText()); pw.print(mGnssMetrics.dumpGnssMetricsAsText()); if (dumpAll) { s.append("native internal state: \n"); s.append(" ").append(native_get_internal_state()); s.append("\n"); pw.println("native internal state: "); pw.println(" " + native_get_internal_state()); } pw.append(s); } // preallocated to avoid memory allocation in reportNmea() Loading
services/core/java/com/android/server/location/gnss/GnssManagerService.java +10 −0 Original line number Diff line number Diff line Loading @@ -333,6 +333,11 @@ public class GnssManagerService implements GnssNative.Callbacks { mGnssLocationProvider.reportNavigationMessage(event); } @Override public void reportGnssPowerStats(GnssPowerStats powerStats) { mGnssLocationProvider.reportGnssPowerStats(powerStats); } @Override public void setTopHalCapabilities(int topHalCapabilities) { mGnssLocationProvider.setTopHalCapabilities(topHalCapabilities); Loading @@ -343,6 +348,11 @@ public class GnssManagerService implements GnssNative.Callbacks { mGnssLocationProvider.setSubHalMeasurementCorrectionsCapabilities(subHalCapabilities); } @Override public void setSubHalPowerIndicationCapabilities(int subHalCapabilities) { mGnssLocationProvider.setSubHalPowerIndicationCapabilities(subHalCapabilities); } @Override public void setGnssYearOfHardware(int yearOfHardware) { mGnssLocationProvider.setGnssYearOfHardware(yearOfHardware); Loading
services/core/java/com/android/server/location/gnss/GnssNative.java +12 −0 Original line number Diff line number Diff line Loading @@ -48,8 +48,10 @@ class GnssNative { void reportMeasurementData(GnssMeasurementsEvent event); void reportAntennaInfo(List<GnssAntennaInfo> antennaInfos); void reportNavigationMessage(GnssNavigationMessage event); void reportGnssPowerStats(GnssPowerStats powerStats); void setTopHalCapabilities(int topHalCapabilities); void setSubHalMeasurementCorrectionsCapabilities(int subHalCapabilities); void setSubHalPowerIndicationCapabilities(int subHalCapabilities); void setGnssYearOfHardware(int yearOfHardware); void setGnssHardwareModelName(String modelName); void reportGnssServiceRestarted(); Loading Loading @@ -178,6 +180,11 @@ class GnssNative { mCallbacks.reportNavigationMessage(event); } @NativeEntryPoint private void reportGnssPowerStats(GnssPowerStats powerStats) { mCallbacks.reportGnssPowerStats(powerStats); } @NativeEntryPoint private void setTopHalCapabilities(int topHalCapabilities) { mCallbacks.setTopHalCapabilities(topHalCapabilities); Loading @@ -188,6 +195,11 @@ class GnssNative { mCallbacks.setSubHalMeasurementCorrectionsCapabilities(subHalCapabilities); } @NativeEntryPoint private void setSubHalPowerIndicationCapabilities(int subHalCapabilities) { mCallbacks.setSubHalPowerIndicationCapabilities(subHalCapabilities); } @NativeEntryPoint private void setGnssYearOfHardware(int yearOfHardware) { mCallbacks.setGnssYearOfHardware(yearOfHardware); Loading