• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2024 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.location;
18 
19 import android.annotation.FlaggedApi;
20 import android.annotation.NonNull;
21 import android.annotation.Nullable;
22 import android.annotation.SystemApi;
23 import android.location.GnssAssistance.GnssSatelliteCorrections;
24 import android.location.flags.Flags;
25 import android.os.Parcel;
26 import android.os.Parcelable;
27 
28 import java.util.ArrayList;
29 import java.util.Collections;
30 import java.util.List;
31 
32 /**
33  * A class contains Glonass assistance.
34  *
35  * @hide
36  */
37 @FlaggedApi(Flags.FLAG_GNSS_ASSISTANCE_INTERFACE)
38 @SystemApi
39 public final class GlonassAssistance implements Parcelable {
40 
41     /** The Glonass almanac. */
42     @Nullable private final GlonassAlmanac mAlmanac;
43 
44     /** The UTC model. */
45     @Nullable private final UtcModel mUtcModel;
46 
47     /** The list of auxiliary informations. */
48     @NonNull private final List<AuxiliaryInformation> mAuxiliaryInformation;
49 
50     /** The list of time models. */
51     @NonNull private final List<TimeModel> mTimeModels;
52 
53     /** The list of Glonass ephemeris. */
54     @NonNull private final List<GlonassSatelliteEphemeris> mSatelliteEphemeris;
55 
56     /** The list of Glonass satellite corrections. */
57     @NonNull private final List<GnssSatelliteCorrections> mSatelliteCorrections;
58 
59     /** The list of real time integrity models. */
60     @NonNull private final List<RealTimeIntegrityModel> mRealTimeIntegrityModels;
61 
GlonassAssistance(Builder builder)62     private GlonassAssistance(Builder builder) {
63         mAlmanac = builder.mAlmanac;
64         mUtcModel = builder.mUtcModel;
65         if (builder.mAuxiliaryInformation != null) {
66             mAuxiliaryInformation =
67                     Collections.unmodifiableList(new ArrayList<>(builder.mAuxiliaryInformation));
68         } else {
69             mAuxiliaryInformation = new ArrayList<>();
70         }
71         if (builder.mTimeModels != null) {
72             mTimeModels = Collections.unmodifiableList(new ArrayList<>(builder.mTimeModels));
73         } else {
74             mTimeModels = new ArrayList<>();
75         }
76         if (builder.mSatelliteEphemeris != null) {
77             mSatelliteEphemeris =
78                     Collections.unmodifiableList(new ArrayList<>(builder.mSatelliteEphemeris));
79         } else {
80             mSatelliteEphemeris = new ArrayList<>();
81         }
82         if (builder.mSatelliteCorrections != null) {
83             mSatelliteCorrections =
84                     Collections.unmodifiableList(new ArrayList<>(builder.mSatelliteCorrections));
85         } else {
86             mSatelliteCorrections = new ArrayList<>();
87         }
88         if (builder.mRealTimeIntegrityModels != null) {
89             mRealTimeIntegrityModels =
90                     Collections.unmodifiableList(new ArrayList<>(builder.mRealTimeIntegrityModels));
91         } else {
92             mRealTimeIntegrityModels = new ArrayList<>();
93         }
94     }
95 
96     /** Returns the Glonass almanac. */
97     @Nullable
getAlmanac()98     public GlonassAlmanac getAlmanac() {
99         return mAlmanac;
100     }
101 
102     /** Returns the UTC model. */
103     @Nullable
getUtcModel()104     public UtcModel getUtcModel() {
105         return mUtcModel;
106     }
107 
108     /** Returns the list of time models. */
109     @NonNull
getTimeModels()110     public List<TimeModel> getTimeModels() {
111         return mTimeModels;
112     }
113 
114     /** Returns the list of Glonass satellite ephemeris. */
115     @NonNull
getSatelliteEphemeris()116     public List<GlonassSatelliteEphemeris> getSatelliteEphemeris() {
117         return mSatelliteEphemeris;
118     }
119 
120     /** Returns the list of Glonass satellite corrections. */
121     @NonNull
getSatelliteCorrections()122     public List<GnssSatelliteCorrections> getSatelliteCorrections() {
123         return mSatelliteCorrections;
124     }
125 
126     /** Returns the list of real time integrity models. */
127     @NonNull
getRealTimeIntegrityModels()128     public List<RealTimeIntegrityModel> getRealTimeIntegrityModels() {
129         return mRealTimeIntegrityModels;
130     }
131 
132     /** Returns the list of auxiliary informations. */
133     @NonNull
getAuxiliaryInformation()134     public List<AuxiliaryInformation> getAuxiliaryInformation() {
135         return mAuxiliaryInformation;
136     }
137 
138     @Override
describeContents()139     public int describeContents() {
140         return 0;
141     }
142 
143     @Override
writeToParcel(@onNull Parcel dest, int flags)144     public void writeToParcel(@NonNull Parcel dest, int flags) {
145         dest.writeTypedObject(mAlmanac, flags);
146         dest.writeTypedObject(mUtcModel, flags);
147         dest.writeTypedList(mAuxiliaryInformation);
148         dest.writeTypedList(mTimeModels);
149         dest.writeTypedList(mSatelliteEphemeris);
150         dest.writeTypedList(mSatelliteCorrections);
151         dest.writeTypedList(mRealTimeIntegrityModels);
152     }
153 
154     @Override
155     @NonNull
toString()156     public String toString() {
157         StringBuilder builder = new StringBuilder("GlonassAssistance[");
158         builder.append("almanac = ").append(mAlmanac);
159         builder.append(", utcModel = ").append(mUtcModel);
160         builder.append(", auxiliaryInformation = ").append(mAuxiliaryInformation);
161         builder.append(", timeModels = ").append(mTimeModels);
162         builder.append(", satelliteEphemeris = ").append(mSatelliteEphemeris);
163         builder.append(", satelliteCorrections = ").append(mSatelliteCorrections);
164         builder.append(", realTimeIntegrityModels = ").append(mRealTimeIntegrityModels);
165         builder.append("]");
166         return builder.toString();
167     }
168 
169     public static final @NonNull Creator<GlonassAssistance> CREATOR =
170             new Creator<GlonassAssistance>() {
171                 @Override
172                 public GlonassAssistance createFromParcel(Parcel in) {
173                     return new GlonassAssistance.Builder()
174                             .setAlmanac(in.readTypedObject(GlonassAlmanac.CREATOR))
175                             .setUtcModel(in.readTypedObject(UtcModel.CREATOR))
176                             .setAuxiliaryInformation(
177                                     in.createTypedArrayList(AuxiliaryInformation.CREATOR))
178                             .setTimeModels(in.createTypedArrayList(TimeModel.CREATOR))
179                             .setSatelliteEphemeris(
180                                     in.createTypedArrayList(GlonassSatelliteEphemeris.CREATOR))
181                             .setSatelliteCorrections(
182                                     in.createTypedArrayList(GnssSatelliteCorrections.CREATOR))
183                             .setRealTimeIntegrityModels(
184                                     in.createTypedArrayList(RealTimeIntegrityModel.CREATOR))
185                             .build();
186                 }
187 
188                 @Override
189                 public GlonassAssistance[] newArray(int size) {
190                     return new GlonassAssistance[size];
191                 }
192             };
193 
194     /** Builder for {@link GlonassAssistance}. */
195     public static final class Builder {
196         private GlonassAlmanac mAlmanac;
197         private UtcModel mUtcModel;
198         private List<AuxiliaryInformation> mAuxiliaryInformation;
199         private List<TimeModel> mTimeModels;
200         private List<GlonassSatelliteEphemeris> mSatelliteEphemeris;
201         private List<GnssSatelliteCorrections> mSatelliteCorrections;
202         private List<RealTimeIntegrityModel> mRealTimeIntegrityModels;
203 
204         /** Sets the Glonass almanac. */
205         @NonNull
setAlmanac(@ullable GlonassAlmanac almanac)206         public Builder setAlmanac(@Nullable GlonassAlmanac almanac) {
207             mAlmanac = almanac;
208             return this;
209         }
210 
211         /** Sets the UTC model. */
212         @NonNull
setUtcModel(@ullable UtcModel utcModel)213         public Builder setUtcModel(@Nullable UtcModel utcModel) {
214             mUtcModel = utcModel;
215             return this;
216         }
217 
218         /** Sets the list of auxiliary informations. */
219         @NonNull
setAuxiliaryInformation( @onNull List<AuxiliaryInformation> auxiliaryInformation)220         public Builder setAuxiliaryInformation(
221                 @NonNull List<AuxiliaryInformation> auxiliaryInformation) {
222             mAuxiliaryInformation = auxiliaryInformation;
223             return this;
224         }
225 
226         /** Sets the list of time models. */
227         @NonNull
setTimeModels(@onNull List<TimeModel> timeModels)228         public Builder setTimeModels(@NonNull List<TimeModel> timeModels) {
229             mTimeModels = timeModels;
230             return this;
231         }
232 
233         /** Sets the list of Glonass satellite ephemeris. */
234         @NonNull
setSatelliteEphemeris( @onNull List<GlonassSatelliteEphemeris> satelliteEphemeris)235         public Builder setSatelliteEphemeris(
236                 @NonNull List<GlonassSatelliteEphemeris> satelliteEphemeris) {
237             mSatelliteEphemeris = satelliteEphemeris;
238             return this;
239         }
240 
241         /** Sets the list of Glonass satellite corrections. */
242         @NonNull
setSatelliteCorrections( @onNull List<GnssSatelliteCorrections> satelliteCorrections)243         public Builder setSatelliteCorrections(
244                 @NonNull List<GnssSatelliteCorrections> satelliteCorrections) {
245             mSatelliteCorrections = satelliteCorrections;
246             return this;
247         }
248 
249         /** Sets the list of real time integrity models. */
250         @NonNull
setRealTimeIntegrityModels( @onNull List<RealTimeIntegrityModel> realTimeIntegrityModels)251         public Builder setRealTimeIntegrityModels(
252                 @NonNull List<RealTimeIntegrityModel> realTimeIntegrityModels) {
253             mRealTimeIntegrityModels = realTimeIntegrityModels;
254             return this;
255         }
256 
257         /** Builds the {@link GlonassAssistance}. */
258         @NonNull
build()259         public GlonassAssistance build() {
260             return new GlonassAssistance(this);
261         }
262     }
263 }
264