blob: adacfe0ca3657fe0c6250b0d7c616178195be9e8 [file] [log] [blame]
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.hardware.sensors@1.0;
interface ISensors {
/**
* Enumerate all available (static) sensors.
*/
getSensorsList() generates (vec<SensorInfo> list);
/**
* Place the module in a specific mode. The following modes are defined
*
* SENSOR_HAL_NORMAL_MODE - Normal operation. Default state of the module.
*
* SENSOR_HAL_DATA_INJECTION_MODE - Loopback mode.
* Data is injected for the supported sensors by the sensor service in
* this mode.
*
* @return OK on success
* BAD_VALUE if requested mode is not supported
* PERMISSION_DENIED if operation is not allowed
*/
setOperationMode(OperationMode mode) generates (Result result);
/* Activate/de-activate one sensor.
*
* sensorHandle is the handle of the sensor to change.
* enabled set to true to enable, or false to disable the sensor.
*
* After sensor de-activation, existing sensor events that have not
* been picked up by poll() should be abandoned immediately so that
* subsequent activation will not get stale sensor events (events
* that are generated prior to the latter activation).
*
* Returns OK on success, BAD_VALUE if sensorHandle is invalid.
*/
activate(int32_t sensorHandle, bool enabled) generates (Result result);
/**
* Set the sampling period in nanoseconds for a given sensor.
* If samplingPeriodNs > maxDelay it will be truncated to
* maxDelay and if samplingPeriodNs < minDelay it will be
* replaced by minDelay.
*
* Returns OK on success, BAD_VALUE if sensorHandle is invalid.
*/
setDelay(int32_t sensorHandle, int64_t samplingPeriodNs)
generates (Result result);
/**
* Generate a vector of sensor events containing at most "maxCount"
* entries.
*
* Additionally a vector of SensorInfos is returned for any dynamic sensors
* connected as notified by returned events of type DYNAMIC_SENSOR_META.
*
* This function should block if there is no sensor event
* available when being called.
*
* Returns OK on success or BAD_VALUE if maxCount <= 0.
*/
poll(int32_t maxCount)
generates (
Result result,
vec<Event> data,
vec<SensorInfo> dynamicSensorsAdded);
/*
* Sets a sensor’s parameters, including sampling frequency and maximum
* report latency. This function can be called while the sensor is
* activated, in which case it must not cause any sensor measurements to
* be lost: transitioning from one sampling rate to the other cannot cause
* lost events, nor can transitioning from a high maximum report latency to
* a low maximum report latency.
* See the Batching sensor results page for details:
* http://source.android.com/devices/sensors/batching.html
*
* Returns OK on success, BAD_VALUE if any parameters are invalid.
*/
batch(int32_t sensorHandle,
int32_t flags,
int64_t samplingPeriodNs,
int64_t maxReportLatencyNs) generates (Result result);
/*
* Flush adds a FLUSH_COMPLETE metadata event to the end of the "batch mode"
* FIFO for the specified sensor and flushes the FIFO.
* If the FIFO is empty or if the sensor doesn't support batching
* (FIFO size zero), it should return SUCCESS along with a trivial
* FLUSH_COMPLETE event added to the event stream.
* This applies to all sensors other than one-shot sensors.
* If the sensor is a one-shot sensor, flush must return BAD_VALUE and not
* generate any flush complete metadata.
* If the sensor is not active at the time flush() is called, flush() should
* return BAD_VALUE.
* Returns OK on success and BAD_VALUE if sensorHandle is invalid.
*/
flush(int32_t sensorHandle) generates (Result result);
/*
* Inject a single sensor sample to this device.
* data points to the sensor event to be injected
* Returns OK on success
* PERMISSION_DENIED if operation is not allowed
* INVALID_OPERATION, if this functionality is unsupported
* BAD_VALUE if sensor event cannot be injected
*/
injectSensorData(Event event) generates (Result result);
};