From 8c6ac67a9657777b7f1d14f13cd2747f247185da Mon Sep 17 00:00:00 2001 From: Kevin Tang Date: Fri, 22 Mar 2019 12:31:01 -0700 Subject: [PATCH] rename vendor proprietary name XTRA to PSDS which stands for Predicted Satellite Data Service. Bug: 129091405 Test: Tested on a Pixel device. Change-Id: Ib3ef1ee3563292d3850b4ba1f8b009f9018ae551 (cherry picked from commit 8eb907ff9000eeadd390f0f3e9c5cd1b38dc510e) --- .../server/location/GnssLocationProvider.java | 123 +++++++++--------- ...Downloader.java => GpsPsdsDownloader.java} | 40 +++--- ...d_server_location_GnssLocationProvider.cpp | 18 +-- 3 files changed, 91 insertions(+), 90 deletions(-) rename services/core/java/com/android/server/location/{GpsXtraDownloader.java => GpsPsdsDownloader.java} (82%) diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java index d93dddfcffb89..c91f66b78a325 100644 --- a/services/core/java/com/android/server/location/GnssLocationProvider.java +++ b/services/core/java/com/android/server/location/GnssLocationProvider.java @@ -180,9 +180,10 @@ public class GnssLocationProvider extends AbstractLocationProvider implements private static final int SET_REQUEST = 3; private static final int INJECT_NTP_TIME = 5; - private static final int DOWNLOAD_XTRA_DATA = 6; + // PSDS stands for Predicted Satellite Data Service + private static final int DOWNLOAD_PSDS_DATA = 6; private static final int UPDATE_LOCATION = 7; // Handle external location from network listener - private static final int DOWNLOAD_XTRA_DATA_FINISHED = 11; + private static final int DOWNLOAD_PSDS_DATA_FINISHED = 11; private static final int SUBSCRIPTION_OR_CARRIER_CONFIG_CHANGED = 12; private static final int INITIALIZE_HANDLER = 13; private static final int REQUEST_LOCATION = 16; @@ -295,19 +296,19 @@ public class GnssLocationProvider extends AbstractLocationProvider implements // Typical hot TTTF is ~5 seconds, so 10 seconds seems sane. private static final int GPS_POLLING_THRESHOLD_INTERVAL = 10 * 1000; - // how long to wait if we have a network error in NTP or XTRA downloading + // how long to wait if we have a network error in NTP or PSDS downloading // the initial value of the exponential backoff // current setting - 5 minutes private static final long RETRY_INTERVAL = 5 * 60 * 1000; - // how long to wait if we have a network error in NTP or XTRA downloading + // how long to wait if we have a network error in NTP or PSDS downloading // the max value of the exponential backoff // current setting - 4 hours private static final long MAX_RETRY_INTERVAL = 4 * 60 * 60 * 1000; - // Timeout when holding wakelocks for downloading XTRA data. - private static final long DOWNLOAD_XTRA_DATA_TIMEOUT_MS = 60 * 1000; + // Timeout when holding wakelocks for downloading PSDS data. + private static final long DOWNLOAD_PSDS_DATA_TIMEOUT_MS = 60 * 1000; - private final ExponentialBackOff mXtraBackOff = new ExponentialBackOff(RETRY_INTERVAL, + private final ExponentialBackOff mPsdsBackOff = new ExponentialBackOff(RETRY_INTERVAL, MAX_RETRY_INTERVAL); // true if we are enabled, protected by this @@ -315,14 +316,14 @@ public class GnssLocationProvider extends AbstractLocationProvider implements private boolean mShutdown; - // states for injecting ntp and downloading xtra data + // states for injecting ntp and downloading psds data private static final int STATE_PENDING_NETWORK = 0; private static final int STATE_DOWNLOADING = 1; private static final int STATE_IDLE = 2; - // flags to trigger NTP or XTRA data download when network becomes available - // initialized to true so we do NTP and XTRA when the network comes up after booting - private int mDownloadXtraDataPending = STATE_PENDING_NETWORK; + // flags to trigger NTP or PSDS data download when network becomes available + // initialized to true so we do NTP and PSDS when the network comes up after booting + private int mDownloadPsdsDataPending = STATE_PENDING_NETWORK; // true if GPS is navigating private boolean mNavigating; @@ -346,8 +347,8 @@ public class GnssLocationProvider extends AbstractLocationProvider implements // capabilities reported through the top level IGnssCallback.hal private volatile int mTopHalCapabilities; - // true if XTRA is supported - private boolean mSupportsXtra; + // true if PSDS is supported + private boolean mSupportsPsds; // for calculating time to first fix private long mFixRequestTime = 0; @@ -404,8 +405,8 @@ public class GnssLocationProvider extends AbstractLocationProvider implements // Wakelocks private final static String WAKELOCK_KEY = "GnssLocationProvider"; private final PowerManager.WakeLock mWakeLock; - private static final String DOWNLOAD_EXTRA_WAKELOCK_KEY = "GnssLocationProviderXtraDownload"; - private final PowerManager.WakeLock mDownloadXtraWakeLock; + private static final String DOWNLOAD_EXTRA_WAKELOCK_KEY = "GnssLocationProviderPsdsDownload"; + private final PowerManager.WakeLock mDownloadPsdsWakeLock; // Alarms private final static String ALARM_WAKEUP = "com.android.internal.location.ALARM_WAKEUP"; @@ -592,10 +593,10 @@ public class GnssLocationProvider extends AbstractLocationProvider implements mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, WAKELOCK_KEY); mWakeLock.setReferenceCounted(true); - // Create a separate wake lock for xtra downloader as it may be released due to timeout. - mDownloadXtraWakeLock = mPowerManager.newWakeLock( + // Create a separate wake lock for psds downloader as it may be released due to timeout. + mDownloadPsdsWakeLock = mPowerManager.newWakeLock( PowerManager.PARTIAL_WAKE_LOCK, DOWNLOAD_EXTRA_WAKELOCK_KEY); - mDownloadXtraWakeLock.setReferenceCounted(true); + mDownloadPsdsWakeLock.setReferenceCounted(true); mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); mWakeupIntent = PendingIntent.getBroadcast(mContext, 0, new Intent(ALARM_WAKEUP), 0); @@ -701,10 +702,10 @@ public class GnssLocationProvider extends AbstractLocationProvider implements */ private void onNetworkAvailable() { mNtpTimeHelper.onNetworkAvailable(); - if (mDownloadXtraDataPending == STATE_PENDING_NETWORK) { - if (mSupportsXtra) { + if (mDownloadPsdsDataPending == STATE_PENDING_NETWORK) { + if (mSupportsPsds) { // Download only if supported, (prevents an unnecessary on-boot download) - xtraDownloadRequest(); + psdsDownloadRequest(); } } } @@ -811,61 +812,61 @@ public class GnssLocationProvider extends AbstractLocationProvider implements return false; } - private void handleDownloadXtraData() { - if (!mSupportsXtra) { - // native code reports xtra not supported, don't try - Log.d(TAG, "handleDownloadXtraData() called when Xtra not supported"); + private void handleDownloadPsdsData() { + if (!mSupportsPsds) { + // native code reports psds not supported, don't try + Log.d(TAG, "handleDownloadPsdsData() called when PSDS not supported"); return; } - if (mDownloadXtraDataPending == STATE_DOWNLOADING) { + if (mDownloadPsdsDataPending == STATE_DOWNLOADING) { // already downloading data return; } if (!mNetworkConnectivityHandler.isDataNetworkConnected()) { // try again when network is up - mDownloadXtraDataPending = STATE_PENDING_NETWORK; + mDownloadPsdsDataPending = STATE_PENDING_NETWORK; return; } - mDownloadXtraDataPending = STATE_DOWNLOADING; + mDownloadPsdsDataPending = STATE_DOWNLOADING; // hold wake lock while task runs - mDownloadXtraWakeLock.acquire(DOWNLOAD_XTRA_DATA_TIMEOUT_MS); - Log.i(TAG, "WakeLock acquired by handleDownloadXtraData()"); + mDownloadPsdsWakeLock.acquire(DOWNLOAD_PSDS_DATA_TIMEOUT_MS); + Log.i(TAG, "WakeLock acquired by handleDownloadPsdsData()"); AsyncTask.THREAD_POOL_EXECUTOR.execute(() -> { - GpsXtraDownloader xtraDownloader = new GpsXtraDownloader( + GpsPsdsDownloader psdsDownloader = new GpsPsdsDownloader( mGnssConfiguration.getProperties()); - byte[] data = xtraDownloader.downloadXtraData(); + byte[] data = psdsDownloader.downloadPsdsData(); if (data != null) { - if (DEBUG) Log.d(TAG, "calling native_inject_xtra_data"); - native_inject_xtra_data(data, data.length); - mXtraBackOff.reset(); + if (DEBUG) Log.d(TAG, "calling native_inject_psds_data"); + native_inject_psds_data(data, data.length); + mPsdsBackOff.reset(); } - sendMessage(DOWNLOAD_XTRA_DATA_FINISHED, 0, null); + sendMessage(DOWNLOAD_PSDS_DATA_FINISHED, 0, null); if (data == null) { // try again later // since this is delayed and not urgent we do not hold a wake lock here - mHandler.sendEmptyMessageDelayed(DOWNLOAD_XTRA_DATA, - mXtraBackOff.nextBackoffMillis()); + mHandler.sendEmptyMessageDelayed(DOWNLOAD_PSDS_DATA, + mPsdsBackOff.nextBackoffMillis()); } // Release wake lock held by task, synchronize on mLock in case multiple // download tasks overrun. synchronized (mLock) { - if (mDownloadXtraWakeLock.isHeld()) { + if (mDownloadPsdsWakeLock.isHeld()) { // This wakelock may have time-out, if a timeout was specified. // Catch (and ignore) any timeout exceptions. try { - mDownloadXtraWakeLock.release(); - if (DEBUG) Log.d(TAG, "WakeLock released by handleDownloadXtraData()"); + mDownloadPsdsWakeLock.release(); + if (DEBUG) Log.d(TAG, "WakeLock released by handleDownloadPsdsData()"); } catch (Exception e) { Log.i(TAG, "Wakelock timeout & release race exception in " - + "handleDownloadXtraData()", e); + + "handleDownloadPsdsData()", e); } } else { Log.e(TAG, "WakeLock expired before release in " - + "handleDownloadXtraData()"); + + "handleDownloadPsdsData()"); } } }); @@ -920,7 +921,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements if (inited) { mEnabled = true; - mSupportsXtra = native_supports_xtra(); + mSupportsPsds = native_supports_psds(); // TODO: remove the following native calls if we can make sure they are redundant. if (mSuplServerHost != null) { @@ -1162,9 +1163,9 @@ public class GnssLocationProvider extends AbstractLocationProvider implements deleteAidingData(extras); } else if ("force_time_injection".equals(command)) { requestUtcTime(); - } else if ("force_xtra_injection".equals(command)) { - if (mSupportsXtra) { - xtraDownloadRequest(); + } else if ("force_psds_injection".equals(command)) { + if (mSupportsPsds) { + psdsDownloadRequest(); } } else { Log.w(TAG, "sendExtraCommand: unknown command " + command); @@ -1677,9 +1678,9 @@ public class GnssLocationProvider extends AbstractLocationProvider implements } @NativeEntryPoint - private void xtraDownloadRequest() { - if (DEBUG) Log.d(TAG, "xtraDownloadRequest"); - sendMessage(DOWNLOAD_XTRA_DATA, 0, null); + private void psdsDownloadRequest() { + if (DEBUG) Log.d(TAG, "psdsDownloadRequest"); + sendMessage(DOWNLOAD_PSDS_DATA, 0, null); } /** @@ -2012,11 +2013,11 @@ public class GnssLocationProvider extends AbstractLocationProvider implements case REQUEST_LOCATION: handleRequestLocation(msg.arg1 == 1, (boolean) msg.obj); break; - case DOWNLOAD_XTRA_DATA: - handleDownloadXtraData(); + case DOWNLOAD_PSDS_DATA: + handleDownloadPsdsData(); break; - case DOWNLOAD_XTRA_DATA_FINISHED: - mDownloadXtraDataPending = STATE_IDLE; + case DOWNLOAD_PSDS_DATA_FINISHED: + mDownloadPsdsDataPending = STATE_IDLE; break; case UPDATE_LOCATION: handleUpdateLocation((Location) msg.obj); @@ -2166,10 +2167,10 @@ public class GnssLocationProvider extends AbstractLocationProvider implements return "INJECT_NTP_TIME"; case REQUEST_LOCATION: return "REQUEST_LOCATION"; - case DOWNLOAD_XTRA_DATA: - return "DOWNLOAD_XTRA_DATA"; - case DOWNLOAD_XTRA_DATA_FINISHED: - return "DOWNLOAD_XTRA_DATA_FINISHED"; + case DOWNLOAD_PSDS_DATA: + return "DOWNLOAD_PSDS_DATA"; + case DOWNLOAD_PSDS_DATA_FINISHED: + return "DOWNLOAD_PSDS_DATA_FINISHED"; case UPDATE_LOCATION: return "UPDATE_LOCATION"; case SUBSCRIPTION_OR_CARRIER_CONFIG_CHANGED: @@ -2266,12 +2267,12 @@ public class GnssLocationProvider extends AbstractLocationProvider implements private native void native_inject_location(double latitude, double longitude, float accuracy); - // XTRA Support + // PSDS Support private native void native_inject_time(long time, long timeReference, int uncertainty); - private native boolean native_supports_xtra(); + private native boolean native_supports_psds(); - private native void native_inject_xtra_data(byte[] data, int length); + private native void native_inject_psds_data(byte[] data, int length); // DEBUG Support private native String native_get_internal_state(); diff --git a/services/core/java/com/android/server/location/GpsXtraDownloader.java b/services/core/java/com/android/server/location/GpsPsdsDownloader.java similarity index 82% rename from services/core/java/com/android/server/location/GpsXtraDownloader.java rename to services/core/java/com/android/server/location/GpsPsdsDownloader.java index 7dffcb4c32a93..6fcb7d1af2ce5 100644 --- a/services/core/java/com/android/server/location/GpsXtraDownloader.java +++ b/services/core/java/com/android/server/location/GpsPsdsDownloader.java @@ -32,26 +32,26 @@ import java.util.Random; import java.util.concurrent.TimeUnit; /** - * A class for downloading GPS XTRA data. + * A class for downloading GPS PSDS data. * * {@hide} */ -public class GpsXtraDownloader { +public class GpsPsdsDownloader { - private static final String TAG = "GpsXtraDownloader"; + private static final String TAG = "GpsPsdsDownloader"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private static final long MAXIMUM_CONTENT_LENGTH_BYTES = 1000000; // 1MB. private static final String DEFAULT_USER_AGENT = "Android"; private static final int CONNECTION_TIMEOUT_MS = (int) TimeUnit.SECONDS.toMillis(30); private static final int READ_TIMEOUT_MS = (int) TimeUnit.SECONDS.toMillis(60); - private final String[] mXtraServers; + private final String[] mPsdsServers; // to load balance our server requests private int mNextServerIndex; private final String mUserAgent; - GpsXtraDownloader(Properties properties) { - // read XTRA servers from the Properties object + GpsPsdsDownloader(Properties properties) { + // read PSDS servers from the Properties object int count = 0; String server1 = properties.getProperty("XTRA_SERVER_1"); String server2 = properties.getProperty("XTRA_SERVER_2"); @@ -69,14 +69,14 @@ public class GpsXtraDownloader { } if (count == 0) { - Log.e(TAG, "No XTRA servers were specified in the GPS configuration"); - mXtraServers = null; + Log.e(TAG, "No PSDS servers were specified in the GPS configuration"); + mPsdsServers = null; } else { - mXtraServers = new String[count]; + mPsdsServers = new String[count]; count = 0; - if (server1 != null) mXtraServers[count++] = server1; - if (server2 != null) mXtraServers[count++] = server2; - if (server3 != null) mXtraServers[count++] = server3; + if (server1 != null) mPsdsServers[count++] = server1; + if (server2 != null) mPsdsServers[count++] = server2; + if (server3 != null) mPsdsServers[count++] = server3; // randomize first server Random random = new Random(); @@ -84,11 +84,11 @@ public class GpsXtraDownloader { } } - byte[] downloadXtraData() { + byte[] downloadPsdsData() { byte[] result = null; int startIndex = mNextServerIndex; - if (mXtraServers == null) { + if (mPsdsServers == null) { return null; } @@ -97,14 +97,14 @@ public class GpsXtraDownloader { final int oldTag = TrafficStats.getAndSetThreadStatsTag( TrafficStatsConstants.TAG_SYSTEM_GPS); try { - result = doDownload(mXtraServers[mNextServerIndex]); + result = doDownload(mPsdsServers[mNextServerIndex]); } finally { TrafficStats.setThreadStatsTag(oldTag); } // increment mNextServerIndex and wrap around if necessary mNextServerIndex++; - if (mNextServerIndex == mXtraServers.length) { + if (mNextServerIndex == mPsdsServers.length) { mNextServerIndex = 0; } // break if we have tried all the servers @@ -115,7 +115,7 @@ public class GpsXtraDownloader { } protected byte[] doDownload(String url) { - if (DEBUG) Log.d(TAG, "Downloading XTRA data from " + url); + if (DEBUG) Log.d(TAG, "Downloading PSDS data from " + url); HttpURLConnection connection = null; try { @@ -132,7 +132,7 @@ public class GpsXtraDownloader { connection.connect(); int statusCode = connection.getResponseCode(); if (statusCode != HttpURLConnection.HTTP_OK) { - if (DEBUG) Log.d(TAG, "HTTP error downloading gps XTRA: " + statusCode); + if (DEBUG) Log.d(TAG, "HTTP error downloading gps PSDS: " + statusCode); return null; } @@ -143,14 +143,14 @@ public class GpsXtraDownloader { while ((count = in.read(buffer)) != -1) { bytes.write(buffer, 0, count); if (bytes.size() > MAXIMUM_CONTENT_LENGTH_BYTES) { - if (DEBUG) Log.d(TAG, "XTRA file too large"); + if (DEBUG) Log.d(TAG, "PSDS file too large"); return null; } } return bytes.toByteArray(); } } catch (IOException ioe) { - if (DEBUG) Log.d(TAG, "Error downloading gps XTRA: ", ioe); + if (DEBUG) Log.d(TAG, "Error downloading gps PSDS: ", ioe); } finally { if (connection != null) { connection.disconnect(); diff --git a/services/core/jni/com_android_server_location_GnssLocationProvider.cpp b/services/core/jni/com_android_server_location_GnssLocationProvider.cpp index 98c620c50f54a..89a1ec8507d6c 100644 --- a/services/core/jni/com_android_server_location_GnssLocationProvider.cpp +++ b/services/core/jni/com_android_server_location_GnssLocationProvider.cpp @@ -62,7 +62,7 @@ static jmethodID method_reportNmea; static jmethodID method_setTopHalCapabilities; static jmethodID method_setGnssYearOfHardware; static jmethodID method_setGnssHardwareModelName; -static jmethodID method_xtraDownloadRequest; +static jmethodID method_psdsDownloadRequest; static jmethodID method_reportNiNotification; static jmethodID method_requestLocation; static jmethodID method_requestRefLocation; @@ -802,7 +802,7 @@ class GnssXtraCallback : public IGnssXtraCallback { */ Return GnssXtraCallback::downloadRequestCb() { JNIEnv* env = getJniEnv(); - env->CallVoidMethod(mCallbacksObj, method_xtraDownloadRequest); + env->CallVoidMethod(mCallbacksObj, method_psdsDownloadRequest); checkAndClearExceptionFromCallback(env, __FUNCTION__); return Void(); } @@ -1525,7 +1525,7 @@ static void android_location_GnssLocationProvider_init_once(JNIEnv* env, jclass method_setGnssYearOfHardware = env->GetMethodID(clazz, "setGnssYearOfHardware", "(I)V"); method_setGnssHardwareModelName = env->GetMethodID(clazz, "setGnssHardwareModelName", "(Ljava/lang/String;)V"); - method_xtraDownloadRequest = env->GetMethodID(clazz, "xtraDownloadRequest", "()V"); + method_psdsDownloadRequest = env->GetMethodID(clazz, "psdsDownloadRequest", "()V"); method_reportNiNotification = env->GetMethodID(clazz, "reportNiNotification", "(IIIIILjava/lang/String;Ljava/lang/String;II)V"); method_requestLocation = env->GetMethodID(clazz, "requestLocation", "(ZZ)V"); @@ -2190,12 +2190,12 @@ static void android_location_GnssLocationProvider_inject_location(JNIEnv* /* env } } -static jboolean android_location_GnssLocationProvider_supports_xtra( +static jboolean android_location_GnssLocationProvider_supports_psds( JNIEnv* /* env */, jobject /* obj */) { return (gnssXtraIface != nullptr) ? JNI_TRUE : JNI_FALSE; } -static void android_location_GnssLocationProvider_inject_xtra_data(JNIEnv* env, jobject /* obj */, +static void android_location_GnssLocationProvider_inject_psds_data(JNIEnv* env, jobject /* obj */, jbyteArray data, jint length) { if (gnssXtraIface == nullptr) { ALOGE("XTRA Interface not supported"); @@ -3047,10 +3047,10 @@ static const JNINativeMethod sMethods[] = { android_location_GnssLocationProvider_inject_best_location)}, {"native_inject_location", "(DDF)V", reinterpret_cast( android_location_GnssLocationProvider_inject_location)}, - {"native_supports_xtra", "()Z", reinterpret_cast( - android_location_GnssLocationProvider_supports_xtra)}, - {"native_inject_xtra_data", "([BI)V", reinterpret_cast( - android_location_GnssLocationProvider_inject_xtra_data)}, + {"native_supports_psds", "()Z", reinterpret_cast( + android_location_GnssLocationProvider_supports_psds)}, + {"native_inject_psds_data", "([BI)V", reinterpret_cast( + android_location_GnssLocationProvider_inject_psds_data)}, {"native_agps_set_id", "(ILjava/lang/String;)V", reinterpret_cast( android_location_GnssLocationProvider_agps_set_id)}, {"native_agps_set_ref_location_cellid", "(IIIII)V", reinterpret_cast(