blob: 7bb7cba773c9b8772f6c158283461875701b0981 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/// Protocols and types related to positions.
library fuchsia.location.position;
using fuchsia.location;
/// Describes a position on Earth.
///
/// A fully-specified position includes latitude and longitude,
/// as well a radius of accuracy of the current position in
/// the horizontal plane, and the current altitude.
///
/// Note that only the latitude and longitude are guaranteed
/// to be present. The remaining fields, if present, are contained
/// within `extras`.
struct Position {
float64 latitude; // In WGS84 datum
float64 longitude; // In WGS84 datum
PositionExtras extras;
};
/// Extra information about a position on Earth.
///
/// The radius of accuracy may incorporate any sources of
/// uncertainty available to the positioning system. This may include,
/// for example, radio propagation models, triangulation error, and
/// motion compensation.
///
/// Note that all extras are optional.
table PositionExtras {
1: float64 accuracy_meters;
2: float64 altitude_meters; // Above WGS84 ellipsoid
};
/// Provides access to position data for emergency purposes. Implementations
/// of this service are expected to be subject to different power and privacy
/// controls than more general location services.
[Discoverable]
protocol EmergencyProvider {
/// Returns the current position, if available.
GetCurrent() -> (Position position) error fuchsia.location.Error;
};