| /* |
| * 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); |
| }; |
| |
| |