/* * Copyright (C) 2016 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@1.0; @export(name="", value_prefix="GNSS_MAX_") enum GnssMax : uint32_t { /** Maximum number of SVs for gnssSvStatusCb(). */ SVS_COUNT = 64, }; /** Milliseconds since January 1, 1970 */ typedef int64_t GnssUtcTime; /** * Constellation type of GnssSvInfo */ @export(name="", value_prefix="GNSS_CONSTELLATION_") enum GnssConstellationType : uint8_t { UNKNOWN = 0, GPS = 1, SBAS = 2, GLONASS = 3, QZSS = 4, BEIDOU = 5, GALILEO = 6, }; /** Bit mask to indicate which values are valid in a GnssLocation object. */ @export(name="", value_prefix="GPS_LOCATION_") enum GnssLocationFlags : uint16_t { /** GnssLocation has valid latitude and longitude. */ HAS_LAT_LONG = 0x0001, /** GnssLocation has valid altitude. */ HAS_ALTITUDE = 0x0002, /** GnssLocation has valid speed. */ HAS_SPEED = 0x0004, /** GnssLocation has valid bearing. */ HAS_BEARING = 0x0008, /** GpsLocation has valid horizontal accuracy. */ HAS_HORIZONTAL_ACCURACY = 0x0010, /** GpsLocation has valid vertical accuracy. */ HAS_VERTICAL_ACCURACY = 0x0020, /** GpsLocation has valid speed accuracy. */ HAS_SPEED_ACCURACY = 0x0040, /** GpsLocation has valid bearing accuracy. */ HAS_BEARING_ACCURACY = 0x0080 }; /** Represents a location. */ struct GnssLocation { /** Contains GnssLocationFlags bits. */ bitfield gnssLocationFlags; /** Represents latitude in degrees. */ double latitudeDegrees; /** Represents longitude in degrees. */ double longitudeDegrees; /** * Represents altitude in meters above the WGS 84 reference ellipsoid. */ double altitudeMeters; /** Represents speed in meters per second. */ float speedMetersPerSec; /** Represents heading in degrees. */ float bearingDegrees; /** * Represents expected horizontal position accuracy, radial, in meters * (68% confidence). */ float horizontalAccuracyMeters; /** * Represents expected vertical position accuracy in meters * (68% confidence). */ float verticalAccuracyMeters; /** * Represents expected speed accuracy in meter per seconds * (68% confidence). */ float speedAccuracyMetersPerSecond; /** * Represents expected bearing accuracy in degrees * (68% confidence). */ float bearingAccuracyDegrees; /** Timestamp for the location fix. */ GnssUtcTime timestamp; };