Chromium Code Reviews| 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). |
|
timvolodine
2016/08/19 16:02:30
nit: |configuration| not present in the list seems
Mikhail
2016/08/19 19:10:02
Agree, but returning extra status will make it saf
|
| + 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(); |
| +}; |