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