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(); |
+}; |