| Index: device/generic_sensor/public/interfaces/sensor.mojom
|
| diff --git a/device/generic_sensor/public/interfaces/sensor.mojom b/device/generic_sensor/public/interfaces/sensor.mojom
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..065c2b2839c38958d0da828d70c8b06a5f96bdc8
|
| --- /dev/null
|
| +++ b/device/generic_sensor/public/interfaces/sensor.mojom
|
| @@ -0,0 +1,78 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +module device.mojom;
|
| +
|
| +// Types of supported sensors
|
| +enum SensorType {
|
| + FIRST = 1,
|
| + AMBIENT_LIGHT = FIRST,
|
| + PROXIMITY,
|
| + ACCELEROMETER,
|
| + GYROSCOPE,
|
| + PRESSURE,
|
| + LAST = PRESSURE // Note: LAST is also equal to the types count.
|
| +};
|
| +
|
| +// Reporting mode supported by the Sensor.
|
| +// ON_CHANGE - client will be notified through OnSensorReadingChanged() signal
|
| +// whenever sensor reading is changed.
|
| +// CONTINUOUS - sensor will continuously update its reading with frequency
|
| +// specified in SensorConfiguration.frequency.
|
| +// OnSensorReadingChanged() signal is not sent to the client for
|
| +// sensors with CONTINUOUS reporting mode.
|
| +enum ReportingMode {
|
| + ON_CHANGE,
|
| + CONTINUOUS
|
| +};
|
| +
|
| +struct SensorConfiguration {
|
| + // Requested frequency in Hz (max is 60 Hz).
|
| + double frequency;
|
| + // TODO(shalamov): Add map<string, union> for sensor specific configuration.
|
| +};
|
| +
|
| +// Interface for controlling the Sensor.
|
| +interface Sensor {
|
| + // Requests sensor to start reading sensor data with specified
|
| + // SensorConfiguration.
|
| + // Sensor holds the list of added configurations and it always polls
|
| + // the platform (and updates the shared buffer) at the maxiumum frequency
|
| + // among the obtained from the stored configurations, so that all clients
|
| + // can have sensor data in time.
|
| + // Returns 'true' if |configuration| was successfully added.
|
| + // Returns 'false' if |configuration| could not be added (is invalid
|
| + // or not supported).
|
| + AddConfiguration(SensorConfiguration configuration) => (bool success);
|
| +
|
| + // Requests sensor to stop reading sensor data for specified
|
| + // SensorConfiguration.
|
| + // This call excludes |configuration| from the Sensor's list making it
|
| + // reconsider the the shared buffer udpate frequency. If there are no
|
| + // configurations left in the Sensor's configuration list it stops polling
|
| + // sensor data from the platform and update the shared buffer.
|
| + // Returns 'true' if |configuration| was successfully removed;
|
| + // returns 'false' if |configuration| could not be removed due to an error
|
| + // (e.g. |configuration| is not present in the Sensor's list).
|
| + RemoveConfiguration(SensorConfiguration configuration) => (bool success);
|
| +
|
| + // Temporary suppresses sensor reading changes notification and deactivates
|
| + // all the previously added configurations for current instance.
|
| + Suspend();
|
| +
|
| + // Resumes previously suspended sensor reading changes notification and
|
| + // activates all the previously added configurations for current instance.
|
| + Resume();
|
| +};
|
| +
|
| +// Interface that client of the Sensor interface must implement to observe
|
| +// sensor reading changes and error conditions.
|
| +interface SensorClient {
|
| + // Signals SensorClient when there is an error.
|
| + RaiseError();
|
| +
|
| + // Signals SensorClient when reading has been changed (only for sensors with
|
| + // ReportingMode::ON_CHANGE).
|
| + SensorReadingChanged();
|
| +};
|
|
|