/* * Copyright (C) 2018 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.hardware.gnss@2.0; import @1.0::GnssLocation; /** Network handle type. */ typedef uint64_t net_handle_t; /** * Flags indicating the validity of the fields in ElapsedRealtime. */ @export(name="", value_prefix="ELAPSED_REALTIME_") enum ElapsedRealtimeFlags : uint16_t { /** A valid timestampNs is stored in the data structure. */ HAS_TIMESTAMP_NS = 1 << 0, /** A valid timeUncertaintyNs is stored in the data structure. */ HAS_TIME_UNCERTAINTY_NS = 1 << 1, }; /** * Represents an estimate of elapsed time since boot of Android for a given event. * * This timestamp MUST represent the time the event happened and MUST be synchronized * with the SystemClock.elapsedRealtimeNanos() clock. */ struct ElapsedRealtime { /** * A set of flags indicating the validity of each field in this data structure. * * Fields may have invalid information in them, if not marked as valid by the * corresponding bit in flags. */ bitfield flags; /** * Estimate of the elapsed time since boot value for the corresponding event in nanoseconds. */ uint64_t timestampNs; /** * Estimate of the relative precision of the alignment of this SystemClock * timestamp, with the reported measurements in nanoseconds (68% confidence). */ uint64_t timeUncertaintyNs; }; /** Represents a location. */ struct GnssLocation { @1.0::GnssLocation v1_0; /** * Timing information of the GNSS location synchronized with SystemClock.elapsedRealtimeNanos() * clock. * * This clock information can be obtained from SystemClock.elapsedRealtimeNanos(), when the GNSS * is attached straight to the AP/SOC. When it is attached to a separate module the timestamp * needs to be estimated by syncing the notion of time via PTP or some other mechanism. */ ElapsedRealtime elapsedRealtime; }; /** * GNSS constellation type * * This is to specify the navigation satellite system, for example, as listed in Section 3.5 in * RINEX Version 3.04. */ enum GnssConstellationType : uint8_t { UNKNOWN = 0, /** Global Positioning System. */ GPS = 1, /** Satellite-Based Augmentation System. */ SBAS = 2, /** Global Navigation Satellite System. */ GLONASS = 3, /** Quasi-Zenith Satellite System. */ QZSS = 4, /** BeiDou Navigation Satellite System. */ BEIDOU = 5, /** Galileo Navigation Satellite System. */ GALILEO = 6, /** Indian Regional Navigation Satellite System. */ IRNSS = 7, };