blob: 065c2b2839c38958d0da828d70c8b06a5f96bdc8 [file] [log] [blame]
// 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();
};