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