123 lines
4.8 KiB
Plaintext
123 lines
4.8 KiB
Plaintext
/*
|
|
* 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);
|
|
};
|
|
|
|
|