blob: f55bb7e26bc20ca57a06095aaeb81042118eb3fb [file] [log] [blame]
/*
* Copyright (C) 2017 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.frameworks.sensorservice@1.0;
import IDirectReportChannel;
import IEventQueue;
import IEventQueueCallback;
import android.hardware.sensors@1.0::SensorInfo;
import android.hardware.sensors@1.0::SensorType;
/**
* ISensorManager is an interface to manage sensors
*
* This file provides a set of functions that uses
* ISensorManager to access and list hardware sensors.
*/
interface ISensorManager {
/**
* Get the list of available sensors.
*
* @return list the list of available sensors, or empty on failure
* @return result OK on success or UNKNOWN_ERROR on failure
*/
getSensorList() generates (vec<SensorInfo> list, Result result);
/**
* Get the default sensor of the specified type.
*
* @return sensor the default sensor for the given type, or undetermined
* value on failure.
* @return result OK on success or
NOT_EXIST if no sensor of that type exists.
*/
getDefaultSensor(SensorType type)
generates (SensorInfo sensor, Result result);
/**
* Create direct channel based on shared memory
*
* Create a direct channel of DIRECT_CHANNEL_ASHMEM type to be used
* for configuring sensor direct report.
*
* The memory layout looks as follows. These offsets can be found in
* android.hardware.sensors@1.0::SensorsEventFormatOffset.
* offset type name
* -----------------------------------
* 0x0000 int32_t size (SensorsEventFormatOffset::TOTAL_LENGTH)
* 0x0004 int32_t sensor report token
* 0x0008 int32_t type (see android.hardware.sensors@1.0::SensorType)
* 0x000C uint32_t atomic counter
* 0x0010 int64_t timestamp (see android.hardware.sensors@1.0::Event)
* 0x0018 float[16]/ data
* int64_t[8]
* 0x0058 int32_t[4] reserved (set to zero)
*
* @param mem the shared memory to use, must be ashmem.
* @param size the intended size to be used. The following must be true:
* SensorsEventFormatOffset::TOTAL_LENGTH <= size <= mem.size
*
* @return chan The created channel, or NULL if failure.
* @return result OK if successful;
* BAD_VALUE if size > mem.size();
* BAD_VALUE if size < TOTAL_LENGTH;
* NO_MEMORY, NO_INIT, BAD_VALUE for underlying errors;
* UNKNOWN_ERROR if the underlying error is not recognized;
* UNKNOWN_ERROR if the underlying call returns channelId = 0
*/
createAshmemDirectChannel(memory mem, uint64_t size)
generates (IDirectReportChannel chan, Result result);
/**
* Create direct channel based on hardware buffer
*
* Create a direct channel of DIRECT_CHANNEL_GRALLOC type to be used
* for configuring sensor direct report.
*
* @param buffer file descriptor describing the gralloc buffer.
* @param size the intended size to be used, must be less than or equal
* to the size of the buffer.
*
* @return chan The created channel, or NULL if failure.
* @return result OK if successful;
* NO_MEMORY, NO_INIT, BAD_VALUE for underlying errors;
* UNKNOWN_ERROR if the underlying error is not recognized;
* UNKNOWN_ERROR if the underlying call returns channelId = 0
*/
createGrallocDirectChannel(handle buffer, uint64_t size)
generates (IDirectReportChannel chan, Result result);
/**
* Create a sensor event queue.
*
* Create a sensor event queue with an IEventQueueCallback object.
* Subsequently, one can enable sensors on the event queue so that sensor
* events are passed via the specified callback.
*
* @param callback the callback to call on events. Must not be null.
* @return queue the event queue created. null on failure.
* @return result OK if successful, BAD_VALUE if callback is null,
* or other Result values for any underlying errors.
*/
createEventQueue(IEventQueueCallback callback)
generates (IEventQueue queue, Result result);
};