blob: 1c64dd25244ee20c2125d3a008cceff1b5c9f73e [file] [log] [blame]
// Copyright 2019 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.
library fuchsia.input.report;
/// This provides an easy, standardized way to specify units. New units can
/// be added as needed. Each UnitType should be named after a specific unit that
/// should be fully distinguished by the name (E.g: Use METERS instead of
/// DISTANCE). More complicated units that need to be differentiated should
/// begin with SI_ (for Internation System of Units) or ENGLISH_ (for English
/// System of Units).
enum UnitType : uint32 {
/// The device did not specify units.
NONE = 0;
/// The device specified units that are not convertible to any of the other units.
OTHER = 1;
/// A measurement of distance in meters.
METERS = 2;
/// A measurement of mass in grams.
GRAMS = 3;
/// A measurement of rotation in degrees.
DEGREES = 4;
/// A measurement of angular velocity in degrees per second.
ENGLISH_ANGULAR_VELOCITY = 5;
/// A measurement of linear velocity in meters per second.
SI_LINEAR_VELOCITY = 6;
/// A measurement of acceleration in meters per second squared.
SI_LINEAR_ACCELERATION = 7;
/// A measure of magnetic flux in webers.
WEBERS = 8;
/// A measurement of luminous intensity in candelas.
CANDELAS = 9;
/// A measurement of pressure in pascals.
PASCALS = 10;
// A measurement of luminous flux in lumens per meter squared.
LUX = 11;
// A measurement of seconds.
SECONDS = 12;
};
/// Describes a given unit by giving the unit and the unit's exponent.
/// E.g: Nanometers would have type METERS and exponent -9.
struct Unit {
UnitType type;
int32 exponent;
};
/// Describe a `Range` of values.
struct Range {
int64 min;
int64 max;
};
/// An `Axis` is defined as a `range` and a `unit`.
struct Axis {
Range range;
Unit unit;
};