blob: 3865727e41ae211b26250f6757683ce75b9cae69 [file] [log] [blame]
/*
* 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<ElapsedRealtimeFlags> 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,
};