xref: /aosp_15_r20/hardware/invensense/65xx/libsensors_iio/InputEventReader.h (revision 02424279a734a0cb64681cf11d5208a917662433)
1*02424279STreehugger Robot /*
2*02424279STreehugger Robot * Copyright (C) 2012 Invensense, Inc.
3*02424279STreehugger Robot *
4*02424279STreehugger Robot * Licensed under the Apache License, Version 2.0 (the "License");
5*02424279STreehugger Robot * you may not use this file except in compliance with the License.
6*02424279STreehugger Robot * You may obtain a copy of the License at
7*02424279STreehugger Robot *
8*02424279STreehugger Robot *      http://www.apache.org/licenses/LICENSE-2.0
9*02424279STreehugger Robot *
10*02424279STreehugger Robot * Unless required by applicable law or agreed to in writing, software
11*02424279STreehugger Robot * distributed under the License is distributed on an "AS IS" BASIS,
12*02424279STreehugger Robot * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*02424279STreehugger Robot * See the License for the specific language governing permissions and
14*02424279STreehugger Robot * limitations under the License.
15*02424279STreehugger Robot */
16*02424279STreehugger Robot 
17*02424279STreehugger Robot #ifndef ANDROID_INPUT_EVENT_READER_H
18*02424279STreehugger Robot #define ANDROID_INPUT_EVENT_READER_H
19*02424279STreehugger Robot 
20*02424279STreehugger Robot #include <stdint.h>
21*02424279STreehugger Robot #include <errno.h>
22*02424279STreehugger Robot #include <sys/cdefs.h>
23*02424279STreehugger Robot #include <sys/types.h>
24*02424279STreehugger Robot 
25*02424279STreehugger Robot #include "SensorBase.h"
26*02424279STreehugger Robot 
27*02424279STreehugger Robot /*****************************************************************************/
28*02424279STreehugger Robot 
29*02424279STreehugger Robot struct input_event;
30*02424279STreehugger Robot 
31*02424279STreehugger Robot class InputEventCircularReader
32*02424279STreehugger Robot {
33*02424279STreehugger Robot     struct input_event* const mBuffer;
34*02424279STreehugger Robot     struct input_event* const mBufferEnd;
35*02424279STreehugger Robot     struct input_event* mHead;
36*02424279STreehugger Robot     struct input_event* mCurr;
37*02424279STreehugger Robot     ssize_t mFreeSpace;
38*02424279STreehugger Robot     int mLastFd;
39*02424279STreehugger Robot 
40*02424279STreehugger Robot public:
41*02424279STreehugger Robot     InputEventCircularReader(size_t numEvents);
42*02424279STreehugger Robot     ~InputEventCircularReader();
43*02424279STreehugger Robot     ssize_t fill(int fd);
44*02424279STreehugger Robot     ssize_t readEvent(input_event const** events);
45*02424279STreehugger Robot     void next();
46*02424279STreehugger Robot };
47*02424279STreehugger Robot 
48*02424279STreehugger Robot /*****************************************************************************/
49*02424279STreehugger Robot 
50*02424279STreehugger Robot #endif  // ANDROID_INPUT_EVENT_READER_H
51