|  | // 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; | 
|  | }; |