OSDN Git Service

Enlarge buffer size for direct report testing
[android-x86/hardware-interfaces.git] / sensors / 1.0 / ISensors.hal
1 /*
2  * Copyright (C) 2016 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package android.hardware.sensors@1.0;
18
19 interface ISensors {
20     /**
21      * Enumerate all available (static) sensors.
22      */
23     getSensorsList() generates (vec<SensorInfo> list);
24
25     /**
26      * Place the module in a specific mode. The following modes are defined
27      *
28      *  SENSOR_HAL_NORMAL_MODE - Normal operation. Default state of the module.
29      *
30      *  SENSOR_HAL_DATA_INJECTION_MODE - Loopback mode.
31      *    Data is injected for the supported sensors by the sensor service in
32      *    this mode.
33      *
34      * @return OK on success
35      *         BAD_VALUE if requested mode is not supported
36      *         PERMISSION_DENIED if operation is not allowed
37      */
38     setOperationMode(OperationMode mode) generates (Result result);
39
40     /**
41      * Activate/de-activate one sensor.
42      *
43      * After sensor de-activation, existing sensor events that have not
44      * been picked up by poll() must be abandoned immediately so that
45      * subsequent activation will not get stale sensor events (events
46      * that are generated prior to the latter activation).
47      *
48      * @param  sensorHandle is the handle of the sensor to change.
49      * @param  enabled set to true to enable, or false to disable the sensor.
50      *
51      * @return result OK on success, BAD_VALUE if sensorHandle is invalid.
52      */
53     activate(int32_t sensorHandle, bool enabled) generates (Result result);
54
55     /**
56      * Generate a vector of sensor events containing at most "maxCount"
57      * entries.
58      *
59      * Additionally a vector of SensorInfos is returned for any dynamic sensors
60      * connected as notified by returned events of type DYNAMIC_SENSOR_META.
61      *
62      * If there is no sensor event when this function is being called, block
63      * until there are sensor events available.
64      *
65      * @param  maxCount max number of samples can be returned, must be > 0.
66      *         Actual number of events returned in data must be <= maxCount
67      *         and > 0.
68      * @return result OK on success or BAD_VALUE if maxCount <= 0.
69      * @return data vector of Event contains sensor events.
70      * @return dynamicSensorsAdded vector of SensorInfo contains dynamic sensor
71      *         added. Each element corresponds to a dynamic sensor meta events
72      *         in data.
73      */
74     poll(int32_t maxCount)
75         generates (
76                 Result result,
77                 vec<Event> data,
78                 vec<SensorInfo> dynamicSensorsAdded);
79
80     /**
81      * Sets a sensor’s parameters, including sampling frequency and maximum
82      * report latency. This function can be called while the sensor is
83      * activated, in which case it must not cause any sensor measurements to
84      * be lost: transitioning from one sampling rate to the other cannot cause
85      * lost events, nor can transitioning from a high maximum report latency to
86      * a low maximum report latency.
87      * See the Batching sensor results page for details:
88      * http://source.android.com/devices/sensors/batching.html
89      *
90      * @param  sensorHandle handle of sensor to be changed.
91      * @param  samplingPeriodNs specifies sensor sample period in nanoseconds.
92      * @param  maxReportLatencyNs allowed delay time before an event is sampled
93      *         to time of report.
94      * @return result OK on success, BAD_VALUE if any parameters are invalid.
95      */
96     batch(int32_t sensorHandle,
97           int64_t samplingPeriodNs,
98           int64_t maxReportLatencyNs) generates (Result result);
99
100     /**
101      * Trigger a flush of internal FIFO.
102      *
103      * Flush adds a FLUSH_COMPLETE metadata event to the end of the "batch mode"
104      * FIFO for the specified sensor and flushes the FIFO.  If the FIFO is empty
105      * or if the sensor doesn't support batching (FIFO size zero), return
106      * SUCCESS and add a trivial FLUSH_COMPLETE event added to the event stream.
107      * This applies to all sensors other than one-shot sensors. If the sensor
108      * is a one-shot sensor, flush must return BAD_VALUE and not generate any
109      * flush complete metadata.  If the sensor is not active at the time flush()
110      * is called, flush() return BAD_VALUE.
111      *
112      * @param   sensorHandle handle of sensor to be flushed.
113      * @return  result OK on success and BAD_VALUE if sensorHandle is invalid.
114      */
115     flush(int32_t sensorHandle) generates (Result result);
116
117     /**
118      * Inject a single sensor event or push operation environment parameters to
119      * device.
120      *
121      * When device is in NORMAL mode, this function is called to push operation
122      * environment data to device. In this operation, Event is always of
123      * SensorType::AdditionalInfo type. See operation evironment parameters
124      * section in AdditionalInfoType.
125      *
126      * When device is in DATA_INJECTION mode, this function is also used for
127      * injecting sensor events.
128      *
129      * Regardless of OperationMode, injected SensorType::ADDITIONAL_INFO
130      * type events should not be routed back to poll() function.
131      *
132      * @see AdditionalInfoType
133      * @see OperationMode
134      * @param   event sensor event to be injected
135      * @return  result OK on success; PERMISSION_DENIED if operation is not
136      *          allowed; INVALID_OPERATION, if this functionality is
137      *          unsupported; BAD_VALUE if sensor event cannot be injected.
138      */
139     injectSensorData(Event event) generates (Result result);
140
141     /**
142      * Register direct report channel.
143      *
144      * Register a direct channel with supplied shared memory information. Upon
145      * return, the sensor hardware is responsible for resetting the memory
146      * content to initial value (depending on memory format settings).
147      *
148      * @param   mem shared memory info data structure.
149      * @return  result OK on success; BAD_VALUE if shared memory information is
150      *          not consistent; NO_MEMORY if shared memory cannot be used by
151      *          sensor system; INVALID_OPERATION if functionality is not
152      *          supported.
153      * @return  channelHandle a positive integer used for referencing registered
154      *          direct channel (>0) in configureDirectReport and
155      *          unregisterDirectChannel if result is OK, -1 otherwise.
156      */
157     registerDirectChannel(SharedMemInfo mem)
158             generates (Result result, int32_t channelHandle);
159
160     /**
161      * Unregister direct report channel.
162      *
163      * Unregister a direct channel previously registered using
164      * registerDirectChannel, and remove all active sensor report configured in
165      * still active sensor report configured in the direct channel.
166      *
167      * @param   channelHandle handle of direct channel to be unregistered.
168      * @return  result OK if direct report is supported; INVALID_OPERATION
169      *          otherwise.
170      */
171     unregisterDirectChannel(int32_t channelHandle) generates (Result result);
172
173     /**
174      * Configure direct sensor event report in direct channel.
175      *
176      * This function start, modify rate or stop direct report of a sensor in a
177      * certain direct channel.
178      *
179      * @param   sensorHandle handle of sensor to be configured. When combined
180      *          with STOP rate, sensorHandle can be -1 to denote all active
181      *          sensors in the direct channel specified by channel Handle.
182      * @param   channelHandle handle of direct channel to be configured.
183      * @param   rate rate level, see RateLevel enum.
184      *
185      * @return  result OK on success; BAD_VALUE if parameter is invalid (such as
186      *          rate level is not supported by sensor, channelHandle does not
187      *          exist, etc); INVALID_OPERATION if functionality is not
188      *          supported.
189      * @return  reportToken positive integer to identify multiple sensors of
190      *          the same type in a single direct channel. Ignored if rate is
191      *          STOP. See SharedMemFormat.
192      */
193     configDirectReport(
194             int32_t sensorHandle, int32_t channelHandle, RateLevel rate)
195             generates (Result result, int32_t reportToken);
196 };