summaryrefslogtreecommitdiff
path: root/location
diff options
context:
space:
mode:
author Shinru Han <shinruhan@google.com> 2024-12-18 12:31:10 -0800
committer Shinru Han <shinruhan@google.com> 2024-12-18 12:31:10 -0800
commit98b4a9ce5c2c13b7ada74b16dbe7cd9bc114b368 (patch)
tree67d1803b42fae42c3d34e68773bac964a3525e88 /location
parentab3e9c5e68fa776f7dcfa80d9122ed9c83d663cb (diff)
Add AuxiliaryInformation to GnssAssistance
- Add AuxiliaryInformation to GnssAssistance - Remove NullableCollection lint suppression in all Assistance.Builder classes set methods Bug: 358381377 Bug: 384869212 Test: atest CtsLocationNoneTestCases Flag: android.location.flags.gnss_assistance_interface Change-Id: Ibdf2aa20ecc63ae623e02beeaa541d07ac8c487b
Diffstat (limited to 'location')
-rw-r--r--location/api/system-current.txt79
-rw-r--r--location/java/android/location/AuxiliaryInformation.java274
-rw-r--r--location/java/android/location/BeidouAssistance.java36
-rw-r--r--location/java/android/location/GalileoAssistance.java36
-rw-r--r--location/java/android/location/GlonassAssistance.java39
-rw-r--r--location/java/android/location/GpsAssistance.java45
-rw-r--r--location/java/android/location/QzssAssistance.java62
-rw-r--r--location/java/android/location/RealTimeIntegrityModel.java77
8 files changed, 532 insertions, 116 deletions
diff --git a/location/api/system-current.txt b/location/api/system-current.txt
index 023bad26e4f5..eb19ba84ee62 100644
--- a/location/api/system-current.txt
+++ b/location/api/system-current.txt
@@ -1,6 +1,29 @@
// Signature format: 2.0
package android.location {
+ @FlaggedApi("android.location.flags.gnss_assistance_interface") public final class AuxiliaryInformation implements android.os.Parcelable {
+ method public int describeContents();
+ method @NonNull public java.util.List<android.location.GnssSignalType> getAvailableSignalTypes();
+ method @IntRange(from=0xfffffff9, to=6) public int getFrequencyChannelNumber();
+ method public int getSatType();
+ method @IntRange(from=1) public int getSvid();
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field public static final int BDS_B1C_ORBIT_TYPE_GEO = 1; // 0x1
+ field public static final int BDS_B1C_ORBIT_TYPE_IGSO = 2; // 0x2
+ field public static final int BDS_B1C_ORBIT_TYPE_MEO = 3; // 0x3
+ field public static final int BDS_B1C_ORBIT_TYPE_UNDEFINED = 0; // 0x0
+ field @NonNull public static final android.os.Parcelable.Creator<android.location.AuxiliaryInformation> CREATOR;
+ }
+
+ public static final class AuxiliaryInformation.Builder {
+ ctor public AuxiliaryInformation.Builder();
+ method @NonNull public android.location.AuxiliaryInformation build();
+ method @NonNull public android.location.AuxiliaryInformation.Builder setAvailableSignalTypes(@NonNull java.util.List<android.location.GnssSignalType>);
+ method @NonNull public android.location.AuxiliaryInformation.Builder setFrequencyChannelNumber(@IntRange(from=0xfffffff9, to=6) int);
+ method @NonNull public android.location.AuxiliaryInformation.Builder setSatType(int);
+ method @NonNull public android.location.AuxiliaryInformation.Builder setSvid(@IntRange(from=1) int);
+ }
+
public abstract class BatchedLocationCallback {
ctor public BatchedLocationCallback();
method public void onLocationBatch(java.util.List<android.location.Location>);
@@ -9,6 +32,7 @@ package android.location {
@FlaggedApi("android.location.flags.gnss_assistance_interface") public final class BeidouAssistance implements android.os.Parcelable {
method public int describeContents();
method @Nullable public android.location.GnssAlmanac getAlmanac();
+ method @Nullable public android.location.AuxiliaryInformation getAuxiliaryInformation();
method @Nullable public android.location.KlobucharIonosphericModel getIonosphericModel();
method @Nullable public android.location.LeapSecondsModel getLeapSecondsModel();
method @NonNull public java.util.List<android.location.RealTimeIntegrityModel> getRealTimeIntegrityModels();
@@ -24,12 +48,13 @@ package android.location {
ctor public BeidouAssistance.Builder();
method @NonNull public android.location.BeidouAssistance build();
method @NonNull public android.location.BeidouAssistance.Builder setAlmanac(@Nullable android.location.GnssAlmanac);
+ method @NonNull public android.location.BeidouAssistance.Builder setAuxiliaryInformation(@Nullable android.location.AuxiliaryInformation);
method @NonNull public android.location.BeidouAssistance.Builder setIonosphericModel(@Nullable android.location.KlobucharIonosphericModel);
method @NonNull public android.location.BeidouAssistance.Builder setLeapSecondsModel(@Nullable android.location.LeapSecondsModel);
- method @NonNull public android.location.BeidouAssistance.Builder setRealTimeIntegrityModels(@Nullable java.util.List<android.location.RealTimeIntegrityModel>);
- method @NonNull public android.location.BeidouAssistance.Builder setSatelliteCorrections(@Nullable java.util.List<android.location.GnssAssistance.GnssSatelliteCorrections>);
- method @NonNull public android.location.BeidouAssistance.Builder setSatelliteEphemeris(@Nullable java.util.List<android.location.BeidouSatelliteEphemeris>);
- method @NonNull public android.location.BeidouAssistance.Builder setTimeModels(@Nullable java.util.List<android.location.TimeModel>);
+ method @NonNull public android.location.BeidouAssistance.Builder setRealTimeIntegrityModels(@NonNull java.util.List<android.location.RealTimeIntegrityModel>);
+ method @NonNull public android.location.BeidouAssistance.Builder setSatelliteCorrections(@NonNull java.util.List<android.location.GnssAssistance.GnssSatelliteCorrections>);
+ method @NonNull public android.location.BeidouAssistance.Builder setSatelliteEphemeris(@NonNull java.util.List<android.location.BeidouSatelliteEphemeris>);
+ method @NonNull public android.location.BeidouAssistance.Builder setTimeModels(@NonNull java.util.List<android.location.TimeModel>);
method @NonNull public android.location.BeidouAssistance.Builder setUtcModel(@Nullable android.location.UtcModel);
}
@@ -151,6 +176,7 @@ package android.location {
@FlaggedApi("android.location.flags.gnss_assistance_interface") public final class GalileoAssistance implements android.os.Parcelable {
method public int describeContents();
method @Nullable public android.location.GnssAlmanac getAlmanac();
+ method @Nullable public android.location.AuxiliaryInformation getAuxiliaryInformation();
method @Nullable public android.location.KlobucharIonosphericModel getIonosphericModel();
method @Nullable public android.location.LeapSecondsModel getLeapSecondsModel();
method @NonNull public java.util.List<android.location.RealTimeIntegrityModel> getRealTimeIntegrityModels();
@@ -166,12 +192,13 @@ package android.location {
ctor public GalileoAssistance.Builder();
method @NonNull public android.location.GalileoAssistance build();
method @NonNull public android.location.GalileoAssistance.Builder setAlmanac(@Nullable android.location.GnssAlmanac);
+ method @NonNull public android.location.GalileoAssistance.Builder setAuxiliaryInformation(@Nullable android.location.AuxiliaryInformation);
method @NonNull public android.location.GalileoAssistance.Builder setIonosphericModel(@Nullable android.location.KlobucharIonosphericModel);
method @NonNull public android.location.GalileoAssistance.Builder setLeapSecondsModel(@Nullable android.location.LeapSecondsModel);
- method @NonNull public android.location.GalileoAssistance.Builder setRealTimeIntegrityModels(@Nullable java.util.List<android.location.RealTimeIntegrityModel>);
- method @NonNull public android.location.GalileoAssistance.Builder setSatelliteCorrections(@Nullable java.util.List<android.location.GnssAssistance.GnssSatelliteCorrections>);
- method @NonNull public android.location.GalileoAssistance.Builder setSatelliteEphemeris(@Nullable java.util.List<android.location.GalileoSatelliteEphemeris>);
- method @NonNull public android.location.GalileoAssistance.Builder setTimeModels(@Nullable java.util.List<android.location.TimeModel>);
+ method @NonNull public android.location.GalileoAssistance.Builder setRealTimeIntegrityModels(@NonNull java.util.List<android.location.RealTimeIntegrityModel>);
+ method @NonNull public android.location.GalileoAssistance.Builder setSatelliteCorrections(@NonNull java.util.List<android.location.GnssAssistance.GnssSatelliteCorrections>);
+ method @NonNull public android.location.GalileoAssistance.Builder setSatelliteEphemeris(@NonNull java.util.List<android.location.GalileoSatelliteEphemeris>);
+ method @NonNull public android.location.GalileoAssistance.Builder setTimeModels(@NonNull java.util.List<android.location.TimeModel>);
method @NonNull public android.location.GalileoAssistance.Builder setUtcModel(@Nullable android.location.UtcModel);
}
@@ -319,6 +346,7 @@ package android.location {
@FlaggedApi("android.location.flags.gnss_assistance_interface") public final class GlonassAssistance implements android.os.Parcelable {
method public int describeContents();
method @Nullable public android.location.GlonassAlmanac getAlmanac();
+ method @Nullable public android.location.AuxiliaryInformation getAuxiliaryInformation();
method @NonNull public java.util.List<android.location.GnssAssistance.GnssSatelliteCorrections> getSatelliteCorrections();
method @NonNull public java.util.List<android.location.GlonassSatelliteEphemeris> getSatelliteEphemeris();
method @NonNull public java.util.List<android.location.TimeModel> getTimeModels();
@@ -331,9 +359,10 @@ package android.location {
ctor public GlonassAssistance.Builder();
method @NonNull public android.location.GlonassAssistance build();
method @NonNull public android.location.GlonassAssistance.Builder setAlmanac(@Nullable android.location.GlonassAlmanac);
- method @NonNull public android.location.GlonassAssistance.Builder setSatelliteCorrections(@Nullable java.util.List<android.location.GnssAssistance.GnssSatelliteCorrections>);
- method @NonNull public android.location.GlonassAssistance.Builder setSatelliteEphemeris(@Nullable java.util.List<android.location.GlonassSatelliteEphemeris>);
- method @NonNull public android.location.GlonassAssistance.Builder setTimeModels(@Nullable java.util.List<android.location.TimeModel>);
+ method @NonNull public android.location.GlonassAssistance.Builder setAuxiliaryInformation(@Nullable android.location.AuxiliaryInformation);
+ method @NonNull public android.location.GlonassAssistance.Builder setSatelliteCorrections(@NonNull java.util.List<android.location.GnssAssistance.GnssSatelliteCorrections>);
+ method @NonNull public android.location.GlonassAssistance.Builder setSatelliteEphemeris(@NonNull java.util.List<android.location.GlonassSatelliteEphemeris>);
+ method @NonNull public android.location.GlonassAssistance.Builder setTimeModels(@NonNull java.util.List<android.location.TimeModel>);
method @NonNull public android.location.GlonassAssistance.Builder setUtcModel(@Nullable android.location.UtcModel);
}
@@ -688,6 +717,7 @@ package android.location {
@FlaggedApi("android.location.flags.gnss_assistance_interface") public final class GpsAssistance implements android.os.Parcelable {
method public int describeContents();
method @Nullable public android.location.GnssAlmanac getAlmanac();
+ method @Nullable public android.location.AuxiliaryInformation getAuxiliaryInformation();
method @Nullable public android.location.KlobucharIonosphericModel getIonosphericModel();
method @Nullable public android.location.LeapSecondsModel getLeapSecondsModel();
method @NonNull public java.util.List<android.location.RealTimeIntegrityModel> getRealTimeIntegrityModels();
@@ -703,12 +733,13 @@ package android.location {
ctor public GpsAssistance.Builder();
method @NonNull public android.location.GpsAssistance build();
method @NonNull public android.location.GpsAssistance.Builder setAlmanac(@Nullable android.location.GnssAlmanac);
+ method @NonNull public android.location.GpsAssistance.Builder setAuxiliaryInformation(@Nullable android.location.AuxiliaryInformation);
method @NonNull public android.location.GpsAssistance.Builder setIonosphericModel(@Nullable android.location.KlobucharIonosphericModel);
method @NonNull public android.location.GpsAssistance.Builder setLeapSecondsModel(@Nullable android.location.LeapSecondsModel);
- method @NonNull public android.location.GpsAssistance.Builder setRealTimeIntegrityModels(@Nullable java.util.List<android.location.RealTimeIntegrityModel>);
- method @NonNull public android.location.GpsAssistance.Builder setSatelliteCorrections(@Nullable java.util.List<android.location.GnssAssistance.GnssSatelliteCorrections>);
- method @NonNull public android.location.GpsAssistance.Builder setSatelliteEphemeris(@Nullable java.util.List<android.location.GpsSatelliteEphemeris>);
- method @NonNull public android.location.GpsAssistance.Builder setTimeModels(@Nullable java.util.List<android.location.TimeModel>);
+ method @NonNull public android.location.GpsAssistance.Builder setRealTimeIntegrityModels(@NonNull java.util.List<android.location.RealTimeIntegrityModel>);
+ method @NonNull public android.location.GpsAssistance.Builder setSatelliteCorrections(@NonNull java.util.List<android.location.GnssAssistance.GnssSatelliteCorrections>);
+ method @NonNull public android.location.GpsAssistance.Builder setSatelliteEphemeris(@NonNull java.util.List<android.location.GpsSatelliteEphemeris>);
+ method @NonNull public android.location.GpsAssistance.Builder setTimeModels(@NonNull java.util.List<android.location.TimeModel>);
method @NonNull public android.location.GpsAssistance.Builder setUtcModel(@Nullable android.location.UtcModel);
}
@@ -1222,6 +1253,7 @@ package android.location {
@FlaggedApi("android.location.flags.gnss_assistance_interface") public final class QzssAssistance implements android.os.Parcelable {
method public int describeContents();
method @Nullable public android.location.GnssAlmanac getAlmanac();
+ method @Nullable public android.location.AuxiliaryInformation getAuxiliaryInformation();
method @Nullable public android.location.KlobucharIonosphericModel getIonosphericModel();
method @Nullable public android.location.LeapSecondsModel getLeapSecondsModel();
method @NonNull public java.util.List<android.location.RealTimeIntegrityModel> getRealTimeIntegrityModels();
@@ -1237,12 +1269,13 @@ package android.location {
ctor public QzssAssistance.Builder();
method @NonNull public android.location.QzssAssistance build();
method @NonNull public android.location.QzssAssistance.Builder setAlmanac(@Nullable android.location.GnssAlmanac);
+ method @NonNull public android.location.QzssAssistance.Builder setAuxiliaryInformation(@Nullable android.location.AuxiliaryInformation);
method @NonNull public android.location.QzssAssistance.Builder setIonosphericModel(@Nullable android.location.KlobucharIonosphericModel);
method @NonNull public android.location.QzssAssistance.Builder setLeapSecondsModel(@Nullable android.location.LeapSecondsModel);
- method @NonNull public android.location.QzssAssistance.Builder setRealTimeIntegrityModels(@Nullable java.util.List<android.location.RealTimeIntegrityModel>);
- method @NonNull public android.location.QzssAssistance.Builder setSatelliteCorrections(@Nullable java.util.List<android.location.GnssAssistance.GnssSatelliteCorrections>);
- method @NonNull public android.location.QzssAssistance.Builder setSatelliteEphemeris(@Nullable java.util.List<android.location.QzssSatelliteEphemeris>);
- method @NonNull public android.location.QzssAssistance.Builder setTimeModels(@Nullable java.util.List<android.location.TimeModel>);
+ method @NonNull public android.location.QzssAssistance.Builder setRealTimeIntegrityModels(@NonNull java.util.List<android.location.RealTimeIntegrityModel>);
+ method @NonNull public android.location.QzssAssistance.Builder setSatelliteCorrections(@NonNull java.util.List<android.location.GnssAssistance.GnssSatelliteCorrections>);
+ method @NonNull public android.location.QzssAssistance.Builder setSatelliteEphemeris(@NonNull java.util.List<android.location.QzssSatelliteEphemeris>);
+ method @NonNull public android.location.QzssAssistance.Builder setTimeModels(@NonNull java.util.List<android.location.TimeModel>);
method @NonNull public android.location.QzssAssistance.Builder setUtcModel(@Nullable android.location.UtcModel);
}
@@ -1273,11 +1306,11 @@ package android.location {
method public int describeContents();
method @NonNull public String getAdvisoryNumber();
method @NonNull public String getAdvisoryType();
+ method @NonNull public java.util.List<android.location.GnssSignalType> getBadSignalTypes();
+ method @IntRange(from=1, to=206) public int getBadSvid();
method @IntRange(from=0) public long getEndDateSeconds();
method @IntRange(from=0) public long getPublishDateSeconds();
method @IntRange(from=0) public long getStartDateSeconds();
- method @IntRange(from=1, to=206) public int getSvid();
- method public boolean isUsable();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.location.RealTimeIntegrityModel> CREATOR;
}
@@ -1287,11 +1320,11 @@ package android.location {
method @NonNull public android.location.RealTimeIntegrityModel build();
method @NonNull public android.location.RealTimeIntegrityModel.Builder setAdvisoryNumber(@NonNull String);
method @NonNull public android.location.RealTimeIntegrityModel.Builder setAdvisoryType(@NonNull String);
+ method @NonNull public android.location.RealTimeIntegrityModel.Builder setBadSignalTypes(@NonNull java.util.List<android.location.GnssSignalType>);
+ method @NonNull public android.location.RealTimeIntegrityModel.Builder setBadSvid(@IntRange(from=1, to=206) int);
method @NonNull public android.location.RealTimeIntegrityModel.Builder setEndDateSeconds(@IntRange(from=0) long);
method @NonNull public android.location.RealTimeIntegrityModel.Builder setPublishDateSeconds(@IntRange(from=0) long);
method @NonNull public android.location.RealTimeIntegrityModel.Builder setStartDateSeconds(@IntRange(from=0) long);
- method @NonNull public android.location.RealTimeIntegrityModel.Builder setSvid(@IntRange(from=1, to=206) int);
- method @NonNull public android.location.RealTimeIntegrityModel.Builder setUsable(boolean);
}
@FlaggedApi("android.location.flags.gnss_assistance_interface") public final class SatelliteEphemerisTime implements android.os.Parcelable {
diff --git a/location/java/android/location/AuxiliaryInformation.java b/location/java/android/location/AuxiliaryInformation.java
new file mode 100644
index 000000000000..601c87e69b70
--- /dev/null
+++ b/location/java/android/location/AuxiliaryInformation.java
@@ -0,0 +1,274 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.location;
+
+import android.annotation.FlaggedApi;
+import android.annotation.IntDef;
+import android.annotation.IntRange;
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.location.flags.Flags;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.android.internal.util.Preconditions;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * A class contains parameters to provide additional assistance information dependent on the GNSS
+ * constellation.
+ *
+ * @hide
+ */
+@FlaggedApi(Flags.FLAG_GNSS_ASSISTANCE_INTERFACE)
+@SystemApi
+public final class AuxiliaryInformation implements Parcelable {
+
+ /**
+ * BDS B1C Satellite orbit type.
+ *
+ * <p>This is defined in BDS-SIS-ICD-B1I-3.0, section 3.1.
+ *
+ * @hide
+ */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef({
+ BDS_B1C_ORBIT_TYPE_UNDEFINED,
+ BDS_B1C_ORBIT_TYPE_GEO,
+ BDS_B1C_ORBIT_TYPE_IGSO,
+ BDS_B1C_ORBIT_TYPE_MEO
+ })
+ public @interface BeidouB1CSatelliteOrbitType {}
+
+ /**
+ * The following enumerations must be in sync with the values declared in
+ * AuxiliaryInformation.aidl.
+ */
+
+ /** The orbit type is undefined. */
+ public static final int BDS_B1C_ORBIT_TYPE_UNDEFINED = 0;
+
+ /** The orbit type is GEO. */
+ public static final int BDS_B1C_ORBIT_TYPE_GEO = 1;
+
+ /** The orbit type is IGSO. */
+ public static final int BDS_B1C_ORBIT_TYPE_IGSO = 2;
+
+ /** The orbit type is MEO. */
+ public static final int BDS_B1C_ORBIT_TYPE_MEO = 3;
+
+ /**
+ * Pseudo-random or satellite ID number for the satellite, a.k.a. Space Vehicle (SV), or OSN
+ * number for Glonass.
+ *
+ * <p>The distinction is made by looking at the constellation field. Values must be in the range
+ * of:
+ *
+ * <p>- GPS: 1-32
+ *
+ * <p>- GLONASS: 1-25
+ *
+ * <p>- QZSS: 183-206
+ *
+ * <p>- Galileo: 1-36
+ *
+ * <p>- Beidou: 1-63
+ */
+ private final int mSvid;
+
+ /** The list of available signal types for the satellite. */
+ @NonNull private final List<GnssSignalType> mAvailableSignalTypes;
+
+ /**
+ * Glonass carrier frequency number of the satellite. This is required for Glonass.
+ *
+ * <p>This is defined in Glonass ICD v5.1 section 3.3.1.1.
+ */
+ private final int mFrequencyChannelNumber;
+
+ /** BDS B1C satellite orbit type. This is required for Beidou. */
+ private final @BeidouB1CSatelliteOrbitType int mSatType;
+
+ private AuxiliaryInformation(Builder builder) {
+ // Allow Svid beyond the range to support potential future extensibility.
+ Preconditions.checkArgument(builder.mSvid >= 1);
+ Preconditions.checkNotNull(
+ builder.mAvailableSignalTypes, "AvailableSignalTypes cannot be null");
+ Preconditions.checkArgument(builder.mAvailableSignalTypes.size() > 0);
+ Preconditions.checkArgumentInRange(
+ builder.mFrequencyChannelNumber, -7, 6, "FrequencyChannelNumber");
+ Preconditions.checkArgumentInRange(
+ builder.mSatType, BDS_B1C_ORBIT_TYPE_UNDEFINED, BDS_B1C_ORBIT_TYPE_MEO, "SatType");
+ mSvid = builder.mSvid;
+ mAvailableSignalTypes =
+ Collections.unmodifiableList(new ArrayList<>(builder.mAvailableSignalTypes));
+ mFrequencyChannelNumber = builder.mFrequencyChannelNumber;
+ mSatType = builder.mSatType;
+ }
+
+ /**
+ * Returns the Pseudo-random or satellite ID number for the satellite, a.k.a. Space Vehicle
+ * (SV), or OSN number for Glonass.
+ *
+ * <p>The distinction is made by looking at the constellation field. Values must be in the range
+ * of:
+ *
+ * <p>- GPS: 1-32
+ *
+ * <p>- GLONASS: 1-25
+ *
+ * <p>- QZSS: 183-206
+ *
+ * <p>- Galileo: 1-36
+ *
+ * <p>- Beidou: 1-63
+ */
+ @IntRange(from = 1)
+ public int getSvid() {
+ return mSvid;
+ }
+
+ /** Returns the list of available signal types for the satellite. */
+ @NonNull
+ public List<GnssSignalType> getAvailableSignalTypes() {
+ return mAvailableSignalTypes;
+ }
+
+ /** Returns the Glonass carrier frequency number of the satellite. */
+ @IntRange(from = -7, to = 6)
+ public int getFrequencyChannelNumber() {
+ return mFrequencyChannelNumber;
+ }
+
+ /** Returns the BDS B1C satellite orbit type. */
+ @BeidouB1CSatelliteOrbitType
+ public int getSatType() {
+ return mSatType;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeInt(mSvid);
+ dest.writeTypedList(mAvailableSignalTypes);
+ dest.writeInt(mFrequencyChannelNumber);
+ dest.writeInt(mSatType);
+ }
+
+ @Override
+ @NonNull
+ public String toString() {
+ StringBuilder builder = new StringBuilder("AuxiliaryInformation[");
+ builder.append("svid = ").append(mSvid);
+ builder.append(", availableSignalTypes = ").append(mAvailableSignalTypes);
+ builder.append(", frequencyChannelNumber = ").append(mFrequencyChannelNumber);
+ builder.append(", satType = ").append(mSatType);
+ builder.append("]");
+ return builder.toString();
+ }
+
+ public static final @NonNull Parcelable.Creator<AuxiliaryInformation> CREATOR =
+ new Parcelable.Creator<AuxiliaryInformation>() {
+ @Override
+ public AuxiliaryInformation createFromParcel(@NonNull Parcel in) {
+ return new AuxiliaryInformation.Builder()
+ .setSvid(in.readInt())
+ .setAvailableSignalTypes(
+ in.createTypedArrayList(GnssSignalType.CREATOR))
+ .setFrequencyChannelNumber(in.readInt())
+ .setSatType(in.readInt())
+ .build();
+ }
+
+ @Override
+ public AuxiliaryInformation[] newArray(int size) {
+ return new AuxiliaryInformation[size];
+ }
+ };
+
+ /** A builder class for {@link AuxiliaryInformation}. */
+ public static final class Builder {
+ private int mSvid;
+ private List<GnssSignalType> mAvailableSignalTypes;
+ private int mFrequencyChannelNumber;
+ private @BeidouB1CSatelliteOrbitType int mSatType;
+
+ /**
+ * Sets the Pseudo-random or satellite ID number for the satellite, a.k.a. Space Vehicle
+ * (SV), or OSN number for Glonass.
+ *
+ * <p>The distinction is made by looking at the constellation field. Values must be in the
+ * range of:
+ *
+ * <p>- GPS: 1-32
+ *
+ * <p>- GLONASS: 1-25
+ *
+ * <p>- QZSS: 183-206
+ *
+ * <p>- Galileo: 1-36
+ *
+ * <p>- Beidou: 1-63
+ */
+ @NonNull
+ public Builder setSvid(@IntRange(from = 1) int svid) {
+ mSvid = svid;
+ return this;
+ }
+
+ /**
+ * Sets the list of available signal types for the satellite.
+ *
+ * <p>The list must be set and cannot be an empty list.
+ */
+ @NonNull
+ public Builder setAvailableSignalTypes(@NonNull List<GnssSignalType> availableSignalTypes) {
+ mAvailableSignalTypes = availableSignalTypes;
+ return this;
+ }
+
+ /** Sets the Glonass carrier frequency number of the satellite. */
+ @NonNull
+ public Builder setFrequencyChannelNumber(
+ @IntRange(from = -7, to = 6) int frequencyChannelNumber) {
+ mFrequencyChannelNumber = frequencyChannelNumber;
+ return this;
+ }
+
+ /** Sets the BDS B1C satellite orbit type. */
+ @NonNull
+ public Builder setSatType(@BeidouB1CSatelliteOrbitType int satType) {
+ mSatType = satType;
+ return this;
+ }
+
+ /** Builds a {@link AuxiliaryInformation} instance as specified by this builder. */
+ @NonNull
+ public AuxiliaryInformation build() {
+ return new AuxiliaryInformation(this);
+ }
+ }
+}
diff --git a/location/java/android/location/BeidouAssistance.java b/location/java/android/location/BeidouAssistance.java
index f55249e605a0..e35493ed1007 100644
--- a/location/java/android/location/BeidouAssistance.java
+++ b/location/java/android/location/BeidouAssistance.java
@@ -19,7 +19,6 @@ package android.location;
import android.annotation.FlaggedApi;
import android.annotation.NonNull;
import android.annotation.Nullable;
-import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.location.GnssAssistance.GnssSatelliteCorrections;
import android.location.flags.Flags;
@@ -51,6 +50,9 @@ public final class BeidouAssistance implements Parcelable {
/** The leap seconds model. */
@Nullable private final LeapSecondsModel mLeapSecondsModel;
+ /** The auxiliary information. */
+ @Nullable private final AuxiliaryInformation mAuxiliaryInformation;
+
/** The list of time models. */
@NonNull private final List<TimeModel> mTimeModels;
@@ -68,6 +70,7 @@ public final class BeidouAssistance implements Parcelable {
mIonosphericModel = builder.mIonosphericModel;
mUtcModel = builder.mUtcModel;
mLeapSecondsModel = builder.mLeapSecondsModel;
+ mAuxiliaryInformation = builder.mAuxiliaryInformation;
if (builder.mTimeModels != null) {
mTimeModels = Collections.unmodifiableList(new ArrayList<>(builder.mTimeModels));
} else {
@@ -117,6 +120,12 @@ public final class BeidouAssistance implements Parcelable {
return mLeapSecondsModel;
}
+ /** Returns the auxiliary information. */
+ @Nullable
+ public AuxiliaryInformation getAuxiliaryInformation() {
+ return mAuxiliaryInformation;
+ }
+
/** Returns the list of time models. */
@NonNull
public List<TimeModel> getTimeModels() {
@@ -154,6 +163,7 @@ public final class BeidouAssistance implements Parcelable {
builder.append(", ionosphericModel = ").append(mIonosphericModel);
builder.append(", utcModel = ").append(mUtcModel);
builder.append(", leapSecondsModel = ").append(mLeapSecondsModel);
+ builder.append(", auxiliaryInformation = ").append(mAuxiliaryInformation);
builder.append(", timeModels = ").append(mTimeModels);
builder.append(", satelliteEphemeris = ").append(mSatelliteEphemeris);
builder.append(", realTimeIntegrityModels = ").append(mRealTimeIntegrityModels);
@@ -168,6 +178,7 @@ public final class BeidouAssistance implements Parcelable {
dest.writeTypedObject(mIonosphericModel, flags);
dest.writeTypedObject(mUtcModel, flags);
dest.writeTypedObject(mLeapSecondsModel, flags);
+ dest.writeTypedObject(mAuxiliaryInformation, flags);
dest.writeTypedList(mTimeModels);
dest.writeTypedList(mSatelliteEphemeris);
dest.writeTypedList(mRealTimeIntegrityModels);
@@ -184,6 +195,8 @@ public final class BeidouAssistance implements Parcelable {
in.readTypedObject(KlobucharIonosphericModel.CREATOR))
.setUtcModel(in.readTypedObject(UtcModel.CREATOR))
.setLeapSecondsModel(in.readTypedObject(LeapSecondsModel.CREATOR))
+ .setAuxiliaryInformation(
+ in.readTypedObject(AuxiliaryInformation.CREATOR))
.setTimeModels(in.createTypedArrayList(TimeModel.CREATOR))
.setSatelliteEphemeris(
in.createTypedArrayList(BeidouSatelliteEphemeris.CREATOR))
@@ -206,6 +219,7 @@ public final class BeidouAssistance implements Parcelable {
private KlobucharIonosphericModel mIonosphericModel;
private UtcModel mUtcModel;
private LeapSecondsModel mLeapSecondsModel;
+ private AuxiliaryInformation mAuxiliaryInformation;
private List<TimeModel> mTimeModels;
private List<BeidouSatelliteEphemeris> mSatelliteEphemeris;
private List<RealTimeIntegrityModel> mRealTimeIntegrityModels;
@@ -239,10 +253,17 @@ public final class BeidouAssistance implements Parcelable {
return this;
}
+ /** Sets the auxiliary information. */
+ @NonNull
+ public Builder setAuxiliaryInformation(
+ @Nullable AuxiliaryInformation auxiliaryInformation) {
+ mAuxiliaryInformation = auxiliaryInformation;
+ return this;
+ }
+
/** Sets the list of time models. */
@NonNull
- public Builder setTimeModels(
- @Nullable @SuppressLint("NullableCollection") List<TimeModel> timeModels) {
+ public Builder setTimeModels(@NonNull List<TimeModel> timeModels) {
mTimeModels = timeModels;
return this;
}
@@ -250,8 +271,7 @@ public final class BeidouAssistance implements Parcelable {
/** Sets the list of Beidou ephemeris. */
@NonNull
public Builder setSatelliteEphemeris(
- @Nullable @SuppressLint("NullableCollection")
- List<BeidouSatelliteEphemeris> satelliteEphemeris) {
+ @NonNull List<BeidouSatelliteEphemeris> satelliteEphemeris) {
mSatelliteEphemeris = satelliteEphemeris;
return this;
}
@@ -259,8 +279,7 @@ public final class BeidouAssistance implements Parcelable {
/** Sets the list of real time integrity models. */
@NonNull
public Builder setRealTimeIntegrityModels(
- @Nullable @SuppressLint("NullableCollection")
- List<RealTimeIntegrityModel> realTimeIntegrityModels) {
+ @NonNull List<RealTimeIntegrityModel> realTimeIntegrityModels) {
mRealTimeIntegrityModels = realTimeIntegrityModels;
return this;
}
@@ -268,8 +287,7 @@ public final class BeidouAssistance implements Parcelable {
/** Sets the list of Beidou satellite corrections. */
@NonNull
public Builder setSatelliteCorrections(
- @Nullable @SuppressLint("NullableCollection")
- List<GnssSatelliteCorrections> satelliteCorrections) {
+ @NonNull List<GnssSatelliteCorrections> satelliteCorrections) {
mSatelliteCorrections = satelliteCorrections;
return this;
}
diff --git a/location/java/android/location/GalileoAssistance.java b/location/java/android/location/GalileoAssistance.java
index 07c5bab856db..8a09e6634d09 100644
--- a/location/java/android/location/GalileoAssistance.java
+++ b/location/java/android/location/GalileoAssistance.java
@@ -19,7 +19,6 @@ package android.location;
import android.annotation.FlaggedApi;
import android.annotation.NonNull;
import android.annotation.Nullable;
-import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.location.GnssAssistance.GnssSatelliteCorrections;
import android.location.flags.Flags;
@@ -51,6 +50,9 @@ public final class GalileoAssistance implements Parcelable {
/** The leap seconds model. */
@Nullable private final LeapSecondsModel mLeapSecondsModel;
+ /** The auxiliary information. */
+ @Nullable private final AuxiliaryInformation mAuxiliaryInformation;
+
/** The list of time models. */
@NonNull private final List<TimeModel> mTimeModels;
@@ -68,6 +70,7 @@ public final class GalileoAssistance implements Parcelable {
mIonosphericModel = builder.mIonosphericModel;
mUtcModel = builder.mUtcModel;
mLeapSecondsModel = builder.mLeapSecondsModel;
+ mAuxiliaryInformation = builder.mAuxiliaryInformation;
if (builder.mTimeModels != null) {
mTimeModels = Collections.unmodifiableList(new ArrayList<>(builder.mTimeModels));
} else {
@@ -117,6 +120,12 @@ public final class GalileoAssistance implements Parcelable {
return mLeapSecondsModel;
}
+ /** Returns the auxiliary information. */
+ @Nullable
+ public AuxiliaryInformation getAuxiliaryInformation() {
+ return mAuxiliaryInformation;
+ }
+
/** Returns the list of time models. */
@NonNull
public List<TimeModel> getTimeModels() {
@@ -152,6 +161,7 @@ public final class GalileoAssistance implements Parcelable {
dest.writeTypedObject(mIonosphericModel, flags);
dest.writeTypedObject(mUtcModel, flags);
dest.writeTypedObject(mLeapSecondsModel, flags);
+ dest.writeTypedObject(mAuxiliaryInformation, flags);
dest.writeTypedList(mTimeModels);
dest.writeTypedList(mSatelliteEphemeris);
dest.writeTypedList(mRealTimeIntegrityModels);
@@ -166,6 +176,7 @@ public final class GalileoAssistance implements Parcelable {
builder.append(", ionosphericModel = ").append(mIonosphericModel);
builder.append(", utcModel = ").append(mUtcModel);
builder.append(", leapSecondsModel = ").append(mLeapSecondsModel);
+ builder.append(", auxiliaryInformation = ").append(mAuxiliaryInformation);
builder.append(", timeModels = ").append(mTimeModels);
builder.append(", satelliteEphemeris = ").append(mSatelliteEphemeris);
builder.append(", realTimeIntegrityModels = ").append(mRealTimeIntegrityModels);
@@ -184,6 +195,8 @@ public final class GalileoAssistance implements Parcelable {
in.readTypedObject(KlobucharIonosphericModel.CREATOR))
.setUtcModel(in.readTypedObject(UtcModel.CREATOR))
.setLeapSecondsModel(in.readTypedObject(LeapSecondsModel.CREATOR))
+ .setAuxiliaryInformation(
+ in.readTypedObject(AuxiliaryInformation.CREATOR))
.setTimeModels(in.createTypedArrayList(TimeModel.CREATOR))
.setSatelliteEphemeris(
in.createTypedArrayList(GalileoSatelliteEphemeris.CREATOR))
@@ -206,6 +219,7 @@ public final class GalileoAssistance implements Parcelable {
private KlobucharIonosphericModel mIonosphericModel;
private UtcModel mUtcModel;
private LeapSecondsModel mLeapSecondsModel;
+ private AuxiliaryInformation mAuxiliaryInformation;
private List<TimeModel> mTimeModels;
private List<GalileoSatelliteEphemeris> mSatelliteEphemeris;
private List<RealTimeIntegrityModel> mRealTimeIntegrityModels;
@@ -239,10 +253,17 @@ public final class GalileoAssistance implements Parcelable {
return this;
}
+ /** Sets the auxiliary information. */
+ @NonNull
+ public Builder setAuxiliaryInformation(
+ @Nullable AuxiliaryInformation auxiliaryInformation) {
+ mAuxiliaryInformation = auxiliaryInformation;
+ return this;
+ }
+
/** Sets the list of time models. */
@NonNull
- public Builder setTimeModels(
- @Nullable @SuppressLint("NullableCollection") List<TimeModel> timeModels) {
+ public Builder setTimeModels(@NonNull List<TimeModel> timeModels) {
mTimeModels = timeModels;
return this;
}
@@ -250,8 +271,7 @@ public final class GalileoAssistance implements Parcelable {
/** Sets the list of Galileo ephemeris. */
@NonNull
public Builder setSatelliteEphemeris(
- @Nullable @SuppressLint("NullableCollection")
- List<GalileoSatelliteEphemeris> satelliteEphemeris) {
+ @NonNull List<GalileoSatelliteEphemeris> satelliteEphemeris) {
mSatelliteEphemeris = satelliteEphemeris;
return this;
}
@@ -259,8 +279,7 @@ public final class GalileoAssistance implements Parcelable {
/** Sets the list of real time integrity models. */
@NonNull
public Builder setRealTimeIntegrityModels(
- @Nullable @SuppressLint("NullableCollection")
- List<RealTimeIntegrityModel> realTimeIntegrityModels) {
+ @NonNull List<RealTimeIntegrityModel> realTimeIntegrityModels) {
mRealTimeIntegrityModels = realTimeIntegrityModels;
return this;
}
@@ -268,8 +287,7 @@ public final class GalileoAssistance implements Parcelable {
/** Sets the list of Galileo satellite corrections. */
@NonNull
public Builder setSatelliteCorrections(
- @Nullable @SuppressLint("NullableCollection")
- List<GnssSatelliteCorrections> satelliteCorrections) {
+ @NonNull List<GnssSatelliteCorrections> satelliteCorrections) {
mSatelliteCorrections = satelliteCorrections;
return this;
}
diff --git a/location/java/android/location/GlonassAssistance.java b/location/java/android/location/GlonassAssistance.java
index cc0820197d8d..c7ed1c52b403 100644
--- a/location/java/android/location/GlonassAssistance.java
+++ b/location/java/android/location/GlonassAssistance.java
@@ -19,7 +19,6 @@ package android.location;
import android.annotation.FlaggedApi;
import android.annotation.NonNull;
import android.annotation.Nullable;
-import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.location.GnssAssistance.GnssSatelliteCorrections;
import android.location.flags.Flags;
@@ -45,6 +44,9 @@ public final class GlonassAssistance implements Parcelable {
/** The UTC model. */
@Nullable private final UtcModel mUtcModel;
+ /** The auxiliary information. */
+ @Nullable private final AuxiliaryInformation mAuxiliaryInformation;
+
/** The list of time models. */
@NonNull private final List<TimeModel> mTimeModels;
@@ -57,6 +59,7 @@ public final class GlonassAssistance implements Parcelable {
private GlonassAssistance(Builder builder) {
mAlmanac = builder.mAlmanac;
mUtcModel = builder.mUtcModel;
+ mAuxiliaryInformation = builder.mAuxiliaryInformation;
if (builder.mTimeModels != null) {
mTimeModels = Collections.unmodifiableList(new ArrayList<>(builder.mTimeModels));
} else {
@@ -106,6 +109,12 @@ public final class GlonassAssistance implements Parcelable {
return mSatelliteCorrections;
}
+ /** Returns the auxiliary information. */
+ @Nullable
+ public AuxiliaryInformation getAuxiliaryInformation() {
+ return mAuxiliaryInformation;
+ }
+
@Override
public int describeContents() {
return 0;
@@ -115,6 +124,7 @@ public final class GlonassAssistance implements Parcelable {
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeTypedObject(mAlmanac, flags);
dest.writeTypedObject(mUtcModel, flags);
+ dest.writeTypedObject(mAuxiliaryInformation, flags);
dest.writeTypedList(mTimeModels);
dest.writeTypedList(mSatelliteEphemeris);
dest.writeTypedList(mSatelliteCorrections);
@@ -126,6 +136,7 @@ public final class GlonassAssistance implements Parcelable {
StringBuilder builder = new StringBuilder("GlonassAssistance[");
builder.append("almanac = ").append(mAlmanac);
builder.append(", utcModel = ").append(mUtcModel);
+ builder.append(", auxiliaryInformation = ").append(mAuxiliaryInformation);
builder.append(", timeModels = ").append(mTimeModels);
builder.append(", satelliteEphemeris = ").append(mSatelliteEphemeris);
builder.append(", satelliteCorrections = ").append(mSatelliteCorrections);
@@ -140,6 +151,8 @@ public final class GlonassAssistance implements Parcelable {
return new GlonassAssistance.Builder()
.setAlmanac(in.readTypedObject(GlonassAlmanac.CREATOR))
.setUtcModel(in.readTypedObject(UtcModel.CREATOR))
+ .setAuxiliaryInformation(
+ in.readTypedObject(AuxiliaryInformation.CREATOR))
.setTimeModels(in.createTypedArrayList(TimeModel.CREATOR))
.setSatelliteEphemeris(
in.createTypedArrayList(GlonassSatelliteEphemeris.CREATOR))
@@ -158,30 +171,36 @@ public final class GlonassAssistance implements Parcelable {
public static final class Builder {
private GlonassAlmanac mAlmanac;
private UtcModel mUtcModel;
+ private AuxiliaryInformation mAuxiliaryInformation;
private List<TimeModel> mTimeModels;
private List<GlonassSatelliteEphemeris> mSatelliteEphemeris;
private List<GnssSatelliteCorrections> mSatelliteCorrections;
/** Sets the Glonass almanac. */
@NonNull
- public Builder setAlmanac(
- @Nullable @SuppressLint("NullableCollection") GlonassAlmanac almanac) {
+ public Builder setAlmanac(@Nullable GlonassAlmanac almanac) {
mAlmanac = almanac;
return this;
}
/** Sets the UTC model. */
@NonNull
- public Builder setUtcModel(
- @Nullable @SuppressLint("NullableCollection") UtcModel utcModel) {
+ public Builder setUtcModel(@Nullable UtcModel utcModel) {
mUtcModel = utcModel;
return this;
}
+ /** Sets the auxiliary information. */
+ @NonNull
+ public Builder setAuxiliaryInformation(
+ @Nullable AuxiliaryInformation auxiliaryInformation) {
+ mAuxiliaryInformation = auxiliaryInformation;
+ return this;
+ }
+
/** Sets the list of time models. */
@NonNull
- public Builder setTimeModels(
- @Nullable @SuppressLint("NullableCollection") List<TimeModel> timeModels) {
+ public Builder setTimeModels(@NonNull List<TimeModel> timeModels) {
mTimeModels = timeModels;
return this;
}
@@ -189,8 +208,7 @@ public final class GlonassAssistance implements Parcelable {
/** Sets the list of Glonass satellite ephemeris. */
@NonNull
public Builder setSatelliteEphemeris(
- @Nullable @SuppressLint("NullableCollection")
- List<GlonassSatelliteEphemeris> satelliteEphemeris) {
+ @NonNull List<GlonassSatelliteEphemeris> satelliteEphemeris) {
mSatelliteEphemeris = satelliteEphemeris;
return this;
}
@@ -198,8 +216,7 @@ public final class GlonassAssistance implements Parcelable {
/** Sets the list of Glonass satellite corrections. */
@NonNull
public Builder setSatelliteCorrections(
- @Nullable @SuppressLint("NullableCollection")
- List<GnssSatelliteCorrections> satelliteCorrections) {
+ @NonNull List<GnssSatelliteCorrections> satelliteCorrections) {
mSatelliteCorrections = satelliteCorrections;
return this;
}
diff --git a/location/java/android/location/GpsAssistance.java b/location/java/android/location/GpsAssistance.java
index 5202fc4cd851..5a8802f057e2 100644
--- a/location/java/android/location/GpsAssistance.java
+++ b/location/java/android/location/GpsAssistance.java
@@ -51,6 +51,9 @@ public final class GpsAssistance implements Parcelable {
/** The leap seconds model. */
@Nullable private final LeapSecondsModel mLeapSecondsModel;
+ /** The auxiliary information. */
+ @Nullable private final AuxiliaryInformation mAuxiliaryInformation;
+
/** The list of time models. */
@NonNull private final List<TimeModel> mTimeModels;
@@ -68,6 +71,7 @@ public final class GpsAssistance implements Parcelable {
mIonosphericModel = builder.mIonosphericModel;
mUtcModel = builder.mUtcModel;
mLeapSecondsModel = builder.mLeapSecondsModel;
+ mAuxiliaryInformation = builder.mAuxiliaryInformation;
if (builder.mTimeModels != null) {
mTimeModels = Collections.unmodifiableList(new ArrayList<>(builder.mTimeModels));
} else {
@@ -117,6 +121,12 @@ public final class GpsAssistance implements Parcelable {
return mLeapSecondsModel;
}
+ /** Returns the auxiliary information. */
+ @Nullable
+ public AuxiliaryInformation getAuxiliaryInformation() {
+ return mAuxiliaryInformation;
+ }
+
/** Returns the list of time models. */
@NonNull
public List<TimeModel> getTimeModels() {
@@ -152,6 +162,8 @@ public final class GpsAssistance implements Parcelable {
in.readTypedObject(KlobucharIonosphericModel.CREATOR))
.setUtcModel(in.readTypedObject(UtcModel.CREATOR))
.setLeapSecondsModel(in.readTypedObject(LeapSecondsModel.CREATOR))
+ .setAuxiliaryInformation(
+ in.readTypedObject(AuxiliaryInformation.CREATOR))
.setTimeModels(in.createTypedArrayList(TimeModel.CREATOR))
.setSatelliteEphemeris(
in.createTypedArrayList(GpsSatelliteEphemeris.CREATOR))
@@ -179,6 +191,7 @@ public final class GpsAssistance implements Parcelable {
dest.writeTypedObject(mIonosphericModel, flags);
dest.writeTypedObject(mUtcModel, flags);
dest.writeTypedObject(mLeapSecondsModel, flags);
+ dest.writeTypedObject(mAuxiliaryInformation, flags);
dest.writeTypedList(mTimeModels);
dest.writeTypedList(mSatelliteEphemeris);
dest.writeTypedList(mRealTimeIntegrityModels);
@@ -193,6 +206,7 @@ public final class GpsAssistance implements Parcelable {
builder.append(", ionosphericModel = ").append(mIonosphericModel);
builder.append(", utcModel = ").append(mUtcModel);
builder.append(", leapSecondsModel = ").append(mLeapSecondsModel);
+ builder.append(", auxiliaryInformation = ").append(mAuxiliaryInformation);
builder.append(", timeModels = ").append(mTimeModels);
builder.append(", satelliteEphemeris = ").append(mSatelliteEphemeris);
builder.append(", realTimeIntegrityModels = ").append(mRealTimeIntegrityModels);
@@ -207,6 +221,7 @@ public final class GpsAssistance implements Parcelable {
private KlobucharIonosphericModel mIonosphericModel;
private UtcModel mUtcModel;
private LeapSecondsModel mLeapSecondsModel;
+ private AuxiliaryInformation mAuxiliaryInformation;
private List<TimeModel> mTimeModels;
private List<GpsSatelliteEphemeris> mSatelliteEphemeris;
private List<RealTimeIntegrityModel> mRealTimeIntegrityModels;
@@ -222,33 +237,36 @@ public final class GpsAssistance implements Parcelable {
/** Sets the Klobuchar ionospheric model. */
@NonNull
- public Builder setIonosphericModel(
- @Nullable @SuppressLint("NullableCollection")
- KlobucharIonosphericModel ionosphericModel) {
+ public Builder setIonosphericModel(@Nullable KlobucharIonosphericModel ionosphericModel) {
mIonosphericModel = ionosphericModel;
return this;
}
/** Sets the UTC model. */
@NonNull
- public Builder setUtcModel(
- @Nullable @SuppressLint("NullableCollection") UtcModel utcModel) {
+ public Builder setUtcModel(@Nullable UtcModel utcModel) {
mUtcModel = utcModel;
return this;
}
/** Sets the leap seconds model. */
@NonNull
- public Builder setLeapSecondsModel(
- @Nullable @SuppressLint("NullableCollection") LeapSecondsModel leapSecondsModel) {
+ public Builder setLeapSecondsModel(@Nullable LeapSecondsModel leapSecondsModel) {
mLeapSecondsModel = leapSecondsModel;
return this;
}
+ /** Sets the auxiliary information. */
+ @NonNull
+ public Builder setAuxiliaryInformation(
+ @Nullable AuxiliaryInformation auxiliaryInformation) {
+ mAuxiliaryInformation = auxiliaryInformation;
+ return this;
+ }
+
/** Sets the list of time models. */
@NonNull
- public Builder setTimeModels(
- @Nullable @SuppressLint("NullableCollection") List<TimeModel> timeModels) {
+ public Builder setTimeModels(@NonNull List<TimeModel> timeModels) {
mTimeModels = timeModels;
return this;
}
@@ -256,8 +274,7 @@ public final class GpsAssistance implements Parcelable {
/** Sets the list of GPS ephemeris. */
@NonNull
public Builder setSatelliteEphemeris(
- @Nullable @SuppressLint("NullableCollection")
- List<GpsSatelliteEphemeris> satelliteEphemeris) {
+ @NonNull List<GpsSatelliteEphemeris> satelliteEphemeris) {
mSatelliteEphemeris = satelliteEphemeris;
return this;
}
@@ -265,8 +282,7 @@ public final class GpsAssistance implements Parcelable {
/** Sets the list of real time integrity models. */
@NonNull
public Builder setRealTimeIntegrityModels(
- @Nullable @SuppressLint("NullableCollection")
- List<RealTimeIntegrityModel> realTimeIntegrityModels) {
+ @NonNull List<RealTimeIntegrityModel> realTimeIntegrityModels) {
mRealTimeIntegrityModels = realTimeIntegrityModels;
return this;
}
@@ -274,8 +290,7 @@ public final class GpsAssistance implements Parcelable {
/** Sets the list of GPS satellite corrections. */
@NonNull
public Builder setSatelliteCorrections(
- @Nullable @SuppressLint("NullableCollection")
- List<GnssSatelliteCorrections> satelliteCorrections) {
+ @NonNull List<GnssSatelliteCorrections> satelliteCorrections) {
mSatelliteCorrections = satelliteCorrections;
return this;
}
diff --git a/location/java/android/location/QzssAssistance.java b/location/java/android/location/QzssAssistance.java
index 9383ce3c63b5..27c34370316e 100644
--- a/location/java/android/location/QzssAssistance.java
+++ b/location/java/android/location/QzssAssistance.java
@@ -19,7 +19,6 @@ package android.location;
import android.annotation.FlaggedApi;
import android.annotation.NonNull;
import android.annotation.Nullable;
-import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.location.GnssAssistance.GnssSatelliteCorrections;
import android.location.flags.Flags;
@@ -51,6 +50,9 @@ public final class QzssAssistance implements Parcelable {
/** The leap seconds model. */
@Nullable private final LeapSecondsModel mLeapSecondsModel;
+ /** The auxiliary information. */
+ @Nullable private final AuxiliaryInformation mAuxiliaryInformation;
+
/** The list of time models. */
@NonNull private final List<TimeModel> mTimeModels;
@@ -68,6 +70,7 @@ public final class QzssAssistance implements Parcelable {
mIonosphericModel = builder.mIonosphericModel;
mUtcModel = builder.mUtcModel;
mLeapSecondsModel = builder.mLeapSecondsModel;
+ mAuxiliaryInformation = builder.mAuxiliaryInformation;
if (builder.mTimeModels != null) {
mTimeModels = Collections.unmodifiableList(new ArrayList<>(builder.mTimeModels));
} else {
@@ -117,6 +120,12 @@ public final class QzssAssistance implements Parcelable {
return mLeapSecondsModel;
}
+ /** Returns the auxiliary information. */
+ @Nullable
+ public AuxiliaryInformation getAuxiliaryInformation() {
+ return mAuxiliaryInformation;
+ }
+
/** Returns the list of time models. */
@NonNull
public List<TimeModel> getTimeModels() {
@@ -147,19 +156,23 @@ public final class QzssAssistance implements Parcelable {
@NonNull
public QzssAssistance createFromParcel(Parcel in) {
return new QzssAssistance.Builder()
- .setAlmanac(in.readTypedObject(GnssAlmanac.CREATOR))
- .setIonosphericModel(in.readTypedObject(KlobucharIonosphericModel.CREATOR))
- .setUtcModel(in.readTypedObject(UtcModel.CREATOR))
- .setLeapSecondsModel(in.readTypedObject(LeapSecondsModel.CREATOR))
- .setTimeModels(in.createTypedArrayList(TimeModel.CREATOR))
- .setSatelliteEphemeris(
- in.createTypedArrayList(QzssSatelliteEphemeris.CREATOR))
- .setRealTimeIntegrityModels(
- in.createTypedArrayList(RealTimeIntegrityModel.CREATOR))
- .setSatelliteCorrections(
- in.createTypedArrayList(GnssSatelliteCorrections.CREATOR))
- .build();
+ .setAlmanac(in.readTypedObject(GnssAlmanac.CREATOR))
+ .setIonosphericModel(
+ in.readTypedObject(KlobucharIonosphericModel.CREATOR))
+ .setUtcModel(in.readTypedObject(UtcModel.CREATOR))
+ .setLeapSecondsModel(in.readTypedObject(LeapSecondsModel.CREATOR))
+ .setAuxiliaryInformation(
+ in.readTypedObject(AuxiliaryInformation.CREATOR))
+ .setTimeModels(in.createTypedArrayList(TimeModel.CREATOR))
+ .setSatelliteEphemeris(
+ in.createTypedArrayList(QzssSatelliteEphemeris.CREATOR))
+ .setRealTimeIntegrityModels(
+ in.createTypedArrayList(RealTimeIntegrityModel.CREATOR))
+ .setSatelliteCorrections(
+ in.createTypedArrayList(GnssSatelliteCorrections.CREATOR))
+ .build();
}
+
@Override
public QzssAssistance[] newArray(int size) {
return new QzssAssistance[size];
@@ -177,6 +190,7 @@ public final class QzssAssistance implements Parcelable {
dest.writeTypedObject(mIonosphericModel, flags);
dest.writeTypedObject(mUtcModel, flags);
dest.writeTypedObject(mLeapSecondsModel, flags);
+ dest.writeTypedObject(mAuxiliaryInformation, flags);
dest.writeTypedList(mTimeModels);
dest.writeTypedList(mSatelliteEphemeris);
dest.writeTypedList(mRealTimeIntegrityModels);
@@ -191,6 +205,7 @@ public final class QzssAssistance implements Parcelable {
builder.append(", ionosphericModel = ").append(mIonosphericModel);
builder.append(", utcModel = ").append(mUtcModel);
builder.append(", leapSecondsModel = ").append(mLeapSecondsModel);
+ builder.append(", auxiliaryInformation = ").append(mAuxiliaryInformation);
builder.append(", timeModels = ").append(mTimeModels);
builder.append(", satelliteEphemeris = ").append(mSatelliteEphemeris);
builder.append(", realTimeIntegrityModels = ").append(mRealTimeIntegrityModels);
@@ -205,6 +220,7 @@ public final class QzssAssistance implements Parcelable {
private KlobucharIonosphericModel mIonosphericModel;
private UtcModel mUtcModel;
private LeapSecondsModel mLeapSecondsModel;
+ private AuxiliaryInformation mAuxiliaryInformation;
private List<TimeModel> mTimeModels;
private List<QzssSatelliteEphemeris> mSatelliteEphemeris;
private List<RealTimeIntegrityModel> mRealTimeIntegrityModels;
@@ -238,10 +254,17 @@ public final class QzssAssistance implements Parcelable {
return this;
}
+ /** Sets the auxiliary information. */
+ @NonNull
+ public Builder setAuxiliaryInformation(
+ @Nullable AuxiliaryInformation auxiliaryInformation) {
+ mAuxiliaryInformation = auxiliaryInformation;
+ return this;
+ }
+
/** Sets the list of time models. */
@NonNull
- public Builder setTimeModels(
- @Nullable @SuppressLint("NullableCollection") List<TimeModel> timeModels) {
+ public Builder setTimeModels(@NonNull List<TimeModel> timeModels) {
mTimeModels = timeModels;
return this;
}
@@ -249,8 +272,7 @@ public final class QzssAssistance implements Parcelable {
/** Sets the list of QZSS ephemeris. */
@NonNull
public Builder setSatelliteEphemeris(
- @Nullable @SuppressLint("NullableCollection")
- List<QzssSatelliteEphemeris> satelliteEphemeris) {
+ @NonNull List<QzssSatelliteEphemeris> satelliteEphemeris) {
mSatelliteEphemeris = satelliteEphemeris;
return this;
}
@@ -258,8 +280,7 @@ public final class QzssAssistance implements Parcelable {
/** Sets the list of real time integrity model. */
@NonNull
public Builder setRealTimeIntegrityModels(
- @Nullable @SuppressLint("NullableCollection")
- List<RealTimeIntegrityModel> realTimeIntegrityModels) {
+ @NonNull List<RealTimeIntegrityModel> realTimeIntegrityModels) {
mRealTimeIntegrityModels = realTimeIntegrityModels;
return this;
}
@@ -267,8 +288,7 @@ public final class QzssAssistance implements Parcelable {
/** Sets the list of QZSS satellite correction. */
@NonNull
public Builder setSatelliteCorrections(
- @Nullable @SuppressLint("NullableCollection")
- List<GnssSatelliteCorrections> satelliteCorrections) {
+ @NonNull List<GnssSatelliteCorrections> satelliteCorrections) {
mSatelliteCorrections = satelliteCorrections;
return this;
}
diff --git a/location/java/android/location/RealTimeIntegrityModel.java b/location/java/android/location/RealTimeIntegrityModel.java
index d268926e56e2..f065def35f7a 100644
--- a/location/java/android/location/RealTimeIntegrityModel.java
+++ b/location/java/android/location/RealTimeIntegrityModel.java
@@ -26,6 +26,10 @@ import android.os.Parcelable;
import com.android.internal.util.Preconditions;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
/**
* A class contains the real time integrity status of a GNSS satellite based on notice advisory.
*
@@ -35,8 +39,7 @@ import com.android.internal.util.Preconditions;
@SystemApi
public final class RealTimeIntegrityModel implements Parcelable {
/**
- * Pseudo-random or satellite ID number for the satellite,
- * a.k.a. Space Vehicle (SV), or OSN number for Glonass.
+ * Bad satellite ID number or OSN number for Glonass.
*
* <p>The distinction is made by looking at the constellation field. Values
* must be in the range of:
@@ -47,10 +50,14 @@ public final class RealTimeIntegrityModel implements Parcelable {
* <p> - Galileo: 1-36
* <p> - Beidou: 1-63
*/
- private final int mSvid;
+ private final int mBadSvid;
- /** Indicates whether the satellite is currently usable for navigation. */
- private final boolean mUsable;
+ /**
+ * The type of the bad signal or signals.
+ *
+ * <p>An empty list means that all signals on the specific SV are not healthy.
+ */
+ @NonNull private final List<GnssSignalType> mBadSignalTypes;
/** UTC timestamp (in seconds) when the advisory was published. */
private final long mPublishDateSeconds;
@@ -81,14 +88,19 @@ public final class RealTimeIntegrityModel implements Parcelable {
private RealTimeIntegrityModel(Builder builder) {
// Allow SV ID beyond the range to support potential future extensibility.
- Preconditions.checkArgument(builder.mSvid >= 1);
+ Preconditions.checkArgument(builder.mBadSvid >= 1);
Preconditions.checkArgument(builder.mPublishDateSeconds > 0);
Preconditions.checkArgument(builder.mStartDateSeconds > 0);
Preconditions.checkArgument(builder.mEndDateSeconds > 0);
Preconditions.checkNotNull(builder.mAdvisoryType, "AdvisoryType cannot be null");
Preconditions.checkNotNull(builder.mAdvisoryNumber, "AdvisoryNumber cannot be null");
- mSvid = builder.mSvid;
- mUsable = builder.mUsable;
+ if (builder.mBadSignalTypes == null) {
+ mBadSignalTypes = new ArrayList<>();
+ } else {
+ mBadSignalTypes = Collections.unmodifiableList(
+ new ArrayList<>(builder.mBadSignalTypes));
+ }
+ mBadSvid = builder.mBadSvid;
mPublishDateSeconds = builder.mPublishDateSeconds;
mStartDateSeconds = builder.mStartDateSeconds;
mEndDateSeconds = builder.mEndDateSeconds;
@@ -110,13 +122,18 @@ public final class RealTimeIntegrityModel implements Parcelable {
* <p> - Beidou: 1-63
*/
@IntRange(from = 1, to = 206)
- public int getSvid() {
- return mSvid;
+ public int getBadSvid() {
+ return mBadSvid;
}
- /** Returns whether the satellite is usable or not. */
- public boolean isUsable() {
- return mUsable;
+ /**
+ * Returns the type of the bad signal or signals.
+ *
+ * <p>An empty list means that all signals on the specific SV are not healthy.
+ */
+ @NonNull
+ public List<GnssSignalType> getBadSignalTypes() {
+ return mBadSignalTypes;
}
/** Returns the UTC timestamp (in seconds) when the advisory was published */
@@ -156,8 +173,9 @@ public final class RealTimeIntegrityModel implements Parcelable {
public RealTimeIntegrityModel createFromParcel(Parcel in) {
RealTimeIntegrityModel realTimeIntegrityModel =
new RealTimeIntegrityModel.Builder()
- .setSvid(in.readInt())
- .setUsable(in.readBoolean())
+ .setBadSvid(in.readInt())
+ .setBadSignalTypes(
+ in.createTypedArrayList(GnssSignalType.CREATOR))
.setPublishDateSeconds(in.readLong())
.setStartDateSeconds(in.readLong())
.setEndDateSeconds(in.readLong())
@@ -180,8 +198,8 @@ public final class RealTimeIntegrityModel implements Parcelable {
@Override
public void writeToParcel(@NonNull Parcel parcel, int flags) {
- parcel.writeInt(mSvid);
- parcel.writeBoolean(mUsable);
+ parcel.writeInt(mBadSvid);
+ parcel.writeTypedList(mBadSignalTypes);
parcel.writeLong(mPublishDateSeconds);
parcel.writeLong(mStartDateSeconds);
parcel.writeLong(mEndDateSeconds);
@@ -193,8 +211,8 @@ public final class RealTimeIntegrityModel implements Parcelable {
@NonNull
public String toString() {
StringBuilder builder = new StringBuilder("RealTimeIntegrityModel[");
- builder.append("svid = ").append(mSvid);
- builder.append(", usable = ").append(mUsable);
+ builder.append("badSvid = ").append(mBadSvid);
+ builder.append(", badSignalTypes = ").append(mBadSignalTypes);
builder.append(", publishDateSeconds = ").append(mPublishDateSeconds);
builder.append(", startDateSeconds = ").append(mStartDateSeconds);
builder.append(", endDateSeconds = ").append(mEndDateSeconds);
@@ -206,8 +224,8 @@ public final class RealTimeIntegrityModel implements Parcelable {
/** Builder for {@link RealTimeIntegrityModel} */
public static final class Builder {
- private int mSvid;
- private boolean mUsable;
+ private int mBadSvid;
+ private List<GnssSignalType> mBadSignalTypes;
private long mPublishDateSeconds;
private long mStartDateSeconds;
private long mEndDateSeconds;
@@ -215,8 +233,7 @@ public final class RealTimeIntegrityModel implements Parcelable {
private String mAdvisoryNumber;
/**
- * Sets the Pseudo-random or satellite ID number for the satellite,
- * a.k.a. Space Vehicle (SV), or OSN number for Glonass.
+ * Sets the bad satellite ID number or OSN number for Glonass.
*
* <p>The distinction is made by looking at the constellation field. Values
* must be in the range of:
@@ -228,15 +245,19 @@ public final class RealTimeIntegrityModel implements Parcelable {
* <p> - Beidou: 1-63
*/
@NonNull
- public Builder setSvid(@IntRange(from = 1, to = 206) int svid) {
- mSvid = svid;
+ public Builder setBadSvid(@IntRange(from = 1, to = 206) int badSvid) {
+ mBadSvid = badSvid;
return this;
}
- /** Sets whether the satellite is usable or not. */
+ /**
+ * Sets the type of the bad signal or signals.
+ *
+ * <p>An empty list means that all signals on the specific SV are not healthy.
+ */
@NonNull
- public Builder setUsable(boolean usable) {
- mUsable = usable;
+ public Builder setBadSignalTypes(@NonNull List<GnssSignalType> badSignalTypes) {
+ mBadSignalTypes = badSignalTypes;
return this;
}