From e39ba374c4ab9cdde6ae3f14fe53a66a7c13be23 Mon Sep 17 00:00:00 2001 From: Shinru Han Date: Fri, 25 Mar 2022 18:59:55 +0800 Subject: [PATCH] Refine PSDS periodic download Test: maunal test Bug: 226312901 Change-Id: I27aba25022da33c563940ce01964a51cf7815255 --- .../server/location/gnss/GnssLocationProvider.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java index 8407a117be946..07858c84712c4 100644 --- a/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java +++ b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java @@ -156,9 +156,6 @@ public class GnssLocationProvider extends AbstractLocationProvider implements private static final int AGPS_SUPL_MODE_MSA = 0x02; private static final int AGPS_SUPL_MODE_MSB = 0x01; - // PSDS stands for Predicted Satellite Data Service - private static final int DOWNLOAD_PSDS_DATA = 6; - // TCP/IP constants. // Valid TCP/UDP port range is (0, 65535]. private static final int TCP_MIN_PORT = 0; @@ -286,6 +283,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements // true if PSDS is supported private boolean mSupportsPsds; + private final Object mPsdsPeriodicDownloadToken = new Object(); @GuardedBy("mLock") private final PowerManager.WakeLock mDownloadPsdsWakeLock; @GuardedBy("mLock") @@ -670,10 +668,12 @@ public class GnssLocationProvider extends AbstractLocationProvider implements }); PackageManager pm = mContext.getPackageManager(); if (pm != null && pm.hasSystemFeature(FEATURE_WATCH) + && psdsType == GnssPsdsDownloader.LONG_TERM_PSDS_SERVER_INDEX && mGnssConfiguration.isPsdsPeriodicDownloadEnabled()) { - if (DEBUG) Log.d(TAG, "scheduling next Psds download"); - mHandler.removeMessages(DOWNLOAD_PSDS_DATA); - mHandler.sendEmptyMessageDelayed(DOWNLOAD_PSDS_DATA, + if (DEBUG) Log.d(TAG, "scheduling next long term Psds download"); + mHandler.removeCallbacksAndMessages(mPsdsPeriodicDownloadToken); + mHandler.postDelayed(() -> handleDownloadPsdsData(psdsType), + mPsdsPeriodicDownloadToken, GnssPsdsDownloader.PSDS_INTERVAL); } } else {