130f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang/* 230f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * Copyright (C) 2016 The Android Open Source Project 330f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * 430f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * Licensed under the Apache License, Version 2.0 (the "License"); 530f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * you may not use this file except in compliance with the License. 630f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * You may obtain a copy of the License at 730f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * 830f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * http://www.apache.org/licenses/LICENSE-2.0 930f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * 1030f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * Unless required by applicable law or agreed to in writing, software 1130f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * distributed under the License is distributed on an "AS IS" BASIS, 1230f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1330f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * See the License for the specific language governing permissions and 1430f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * limitations under the License. 1530f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang */ 1630f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang 1730f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tangpackage android.location; 1830f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang 199363b949a104786c87cd2cd18f206ff3c1957e5eLifu Tangimport android.annotation.IntDef; 209363b949a104786c87cd2cd18f206ff3c1957e5eLifu Tang 219363b949a104786c87cd2cd18f206ff3c1957e5eLifu Tangimport java.lang.annotation.Retention; 229363b949a104786c87cd2cd18f206ff3c1957e5eLifu Tangimport java.lang.annotation.RetentionPolicy; 239363b949a104786c87cd2cd18f206ff3c1957e5eLifu Tang 2430f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang/** 2530f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * This class represents the current state of the GNSS engine. 26e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * This class is used in conjunction with the {@link GnssStatus.Callback}. 2730f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang */ 2830f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tangpublic final class GnssStatus { 29e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang // these must match the definitions in gps.h 30e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang 3130f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** Unknown constellation type. */ 3276a620f0482ba54a4921c7c7e7eeb8ea87c12d3eLifu Tang public static final int CONSTELLATION_UNKNOWN = 0; 3330f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** Constellation type constant for GPS. */ 3476a620f0482ba54a4921c7c7e7eeb8ea87c12d3eLifu Tang public static final int CONSTELLATION_GPS = 1; 3530f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** Constellation type constant for SBAS. */ 3676a620f0482ba54a4921c7c7e7eeb8ea87c12d3eLifu Tang public static final int CONSTELLATION_SBAS = 2; 3730f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** Constellation type constant for Glonass. */ 3876a620f0482ba54a4921c7c7e7eeb8ea87c12d3eLifu Tang public static final int CONSTELLATION_GLONASS = 3; 3930f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** Constellation type constant for QZSS. */ 4076a620f0482ba54a4921c7c7e7eeb8ea87c12d3eLifu Tang public static final int CONSTELLATION_QZSS = 4; 4130f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** Constellation type constant for Beidou. */ 4276a620f0482ba54a4921c7c7e7eeb8ea87c12d3eLifu Tang public static final int CONSTELLATION_BEIDOU = 5; 4330f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** Constellation type constant for Galileo. */ 4476a620f0482ba54a4921c7c7e7eeb8ea87c12d3eLifu Tang public static final int CONSTELLATION_GALILEO = 6; 459363b949a104786c87cd2cd18f206ff3c1957e5eLifu Tang 4630f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** @hide */ 4730f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang public static final int GNSS_SV_FLAGS_NONE = 0; 4830f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** @hide */ 4930f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang public static final int GNSS_SV_FLAGS_HAS_EPHEMERIS_DATA = (1 << 0); 5030f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** @hide */ 5130f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang public static final int GNSS_SV_FLAGS_HAS_ALMANAC_DATA = (1 << 1); 5230f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** @hide */ 5330f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang public static final int GNSS_SV_FLAGS_USED_IN_FIX = (1 << 2); 5430f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang 5530f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** @hide */ 56120480f17ae18bbe8c6fa7ec4854281fdf349b59Lifu Tang public static final int SVID_SHIFT_WIDTH = 7; 57120480f17ae18bbe8c6fa7ec4854281fdf349b59Lifu Tang /** @hide */ 58120480f17ae18bbe8c6fa7ec4854281fdf349b59Lifu Tang public static final int CONSTELLATION_TYPE_SHIFT_WIDTH = 3; 59120480f17ae18bbe8c6fa7ec4854281fdf349b59Lifu Tang /** @hide */ 60120480f17ae18bbe8c6fa7ec4854281fdf349b59Lifu Tang public static final int CONSTELLATION_TYPE_MASK = 0xf; 6130f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang 62e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang /** 63e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * Used for receiving notifications when GNSS events happen. 64e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang */ 65e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang public static abstract class Callback { 66e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang /** 67e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * Called when GNSS system has started. 68e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang */ 69e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang public void onStarted() {} 70e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang 71e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang /** 72e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * Called when GNSS system has stopped. 73e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang */ 74e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang public void onStopped() {} 75e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang 76e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang /** 77e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * Called when the GNSS system has received its first fix since starting. 78e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * @param ttffMillis the time from start to first fix in milliseconds. 79e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang */ 80e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang public void onFirstFix(int ttffMillis) {} 81e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang 82e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang /** 83e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * Called periodically to report GNSS satellite status. 84e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * @param status the current status of all satellites. 85e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang */ 86e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang public void onSatelliteStatusChanged(GnssStatus status) {} 87e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang } 88e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang 89e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang /** 90e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * Constellation type. 91e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * @hide 92e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang */ 93e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang @Retention(RetentionPolicy.SOURCE) 94e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang @IntDef({CONSTELLATION_UNKNOWN, CONSTELLATION_GPS, CONSTELLATION_SBAS, CONSTELLATION_GLONASS, 95e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang CONSTELLATION_QZSS, CONSTELLATION_BEIDOU, CONSTELLATION_GALILEO}) 96e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang public @interface ConstellationType {} 97e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang 9830f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /* These package private values are modified by the LocationManager class */ 99120480f17ae18bbe8c6fa7ec4854281fdf349b59Lifu Tang /* package */ int[] mSvidWithFlags; 10076a620f0482ba54a4921c7c7e7eeb8ea87c12d3eLifu Tang /* package */ float[] mCn0DbHz; 10130f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /* package */ float[] mElevations; 10230f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /* package */ float[] mAzimuths; 10330f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /* package */ int mSvCount; 10430f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang 10576a620f0482ba54a4921c7c7e7eeb8ea87c12d3eLifu Tang GnssStatus(int svCount, int[] svidWithFlags, float[] cn0s, float[] elevations, 106120480f17ae18bbe8c6fa7ec4854281fdf349b59Lifu Tang float[] azimuths) { 10730f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang mSvCount = svCount; 108120480f17ae18bbe8c6fa7ec4854281fdf349b59Lifu Tang mSvidWithFlags = svidWithFlags; 10976a620f0482ba54a4921c7c7e7eeb8ea87c12d3eLifu Tang mCn0DbHz = cn0s; 11030f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang mElevations = elevations; 11130f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang mAzimuths = azimuths; 11230f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang } 11330f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang 114e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang /** @removed */ 115e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang public int getNumSatellites() { 116e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang return getSatelliteCount(); 117e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang } 118e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang 11930f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** 12030f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * Gets the total number of satellites in satellite list. 12130f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang */ 122e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang public int getSatelliteCount() { 12330f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang return mSvCount; 12430f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang } 12530f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang 12630f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** 127e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * Retrieves the constellation type of the satellite at the specified index. 128e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * 12930f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * @param satIndex the index of the satellite in the list. 13030f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang */ 1319363b949a104786c87cd2cd18f206ff3c1957e5eLifu Tang @ConstellationType 13276a620f0482ba54a4921c7c7e7eeb8ea87c12d3eLifu Tang public int getConstellationType(int satIndex) { 13376a620f0482ba54a4921c7c7e7eeb8ea87c12d3eLifu Tang return ((mSvidWithFlags[satIndex] >> CONSTELLATION_TYPE_SHIFT_WIDTH) 1349363b949a104786c87cd2cd18f206ff3c1957e5eLifu Tang & CONSTELLATION_TYPE_MASK); 13530f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang } 13630f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang 13730f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** 138e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * Gets the identification number for the satellite at the specific index. 139e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * 140e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * <p>This svid is pseudo-random number for most constellations. It is FCN & OSN number for 141e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * Glonass. 142e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * 143e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * <p>The distinction is made by looking at constellation field 144e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * {@link #getConstellationType(int)} Expected values are in the range of: 145e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * 146e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * <ul> 147e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * <li>GPS: 1-32</li> 148e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * <li>SBAS: 120-151, 183-192</li> 14949d9891c573f8c4994841b24f8d90690c342e8aeWyatt Riley * <li>GLONASS: One of: OSN, or FCN+100 150e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * <ul> 15149d9891c573f8c4994841b24f8d90690c342e8aeWyatt Riley * <li>1-24 as the orbital slot number (OSN) (preferred, if known)</li> 15249d9891c573f8c4994841b24f8d90690c342e8aeWyatt Riley * <li>93-106 as the frequency channel number (FCN) (-7 to +6) plus 100. 15349d9891c573f8c4994841b24f8d90690c342e8aeWyatt Riley * i.e. encode FCN of -7 as 93, 0 as 100, and +6 as 106</li> 154e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * </ul></li> 155e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * <li>QZSS: 193-200</li> 156e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * <li>Galileo: 1-36</li> 157e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * <li>Beidou: 1-37</li> 158e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * </ul> 159e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * 16030f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * @param satIndex the index of the satellite in the list. 16130f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang */ 162120480f17ae18bbe8c6fa7ec4854281fdf349b59Lifu Tang public int getSvid(int satIndex) { 163120480f17ae18bbe8c6fa7ec4854281fdf349b59Lifu Tang return mSvidWithFlags[satIndex] >> SVID_SHIFT_WIDTH; 16430f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang } 16530f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang 16630f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** 167e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * Retrieves the carrier-to-noise density at the antenna of the satellite at the specified index 168e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * in dB-Hz. 169e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * 17030f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * @param satIndex the index of the satellite in the list. 17130f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang */ 17276a620f0482ba54a4921c7c7e7eeb8ea87c12d3eLifu Tang public float getCn0DbHz(int satIndex) { 17376a620f0482ba54a4921c7c7e7eeb8ea87c12d3eLifu Tang return mCn0DbHz[satIndex]; 17430f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang } 17530f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang 17630f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** 177e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * Retrieves the elevation of the satellite at the specified index. 178e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * 17930f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * @param satIndex the index of the satellite in the list. 18030f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang */ 18176a620f0482ba54a4921c7c7e7eeb8ea87c12d3eLifu Tang public float getElevationDegrees(int satIndex) { 1824fb5dc1e4aad0d7df0f6af03560a340e81bf1f7cLifu Tang return mElevations[satIndex]; 18330f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang } 18430f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang 18530f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** 186e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * Retrieves the azimuth the satellite at the specified index. 187e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * 18830f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * @param satIndex the index of the satellite in the list. 18930f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang */ 19076a620f0482ba54a4921c7c7e7eeb8ea87c12d3eLifu Tang public float getAzimuthDegrees(int satIndex) { 19130f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang return mAzimuths[satIndex]; 19230f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang } 19330f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang 194e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang /** @removed */ 195e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang public boolean hasEphemeris(int satIndex) { 196e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang return hasEphemerisData(satIndex); 197e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang } 198e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang 19930f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** 200e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * Reports whether the satellite at the specified index has ephemeris data. 201e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * 20230f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * @param satIndex the index of the satellite in the list. 20330f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang */ 204e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang public boolean hasEphemerisData(int satIndex) { 205120480f17ae18bbe8c6fa7ec4854281fdf349b59Lifu Tang return (mSvidWithFlags[satIndex] & GNSS_SV_FLAGS_HAS_EPHEMERIS_DATA) != 0; 20630f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang } 20730f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang 208e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang /** @removed */ 209e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang public boolean hasAlmanac(int satIndex) { 210e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang return hasAlmanacData(satIndex); 211e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang } 212e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang 21330f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** 214e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * Reports whether the satellite at the specified index has almanac data. 215e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * 21630f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * @param satIndex the index of the satellite in the list. 21730f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang */ 218e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang public boolean hasAlmanacData(int satIndex) { 219120480f17ae18bbe8c6fa7ec4854281fdf349b59Lifu Tang return (mSvidWithFlags[satIndex] & GNSS_SV_FLAGS_HAS_ALMANAC_DATA) != 0; 22030f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang } 22130f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang 22230f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang /** 223e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * Reports whether the satellite at the specified index was used in the calculation of the most 224e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * recent position fix. 225e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * 22630f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang * @param satIndex the index of the satellite in the list. 22730f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang */ 22830f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang public boolean usedInFix(int satIndex) { 229120480f17ae18bbe8c6fa7ec4854281fdf349b59Lifu Tang return (mSvidWithFlags[satIndex] & GNSS_SV_FLAGS_USED_IN_FIX) != 0; 23030f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang } 23130f95a7d67870c28d2aaa88ee989c099f5670225Lifu Tang} 232