• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #pragma once
2 /*
3  * Copyright (C) 2017 The Android Open Source Project
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #include <memory>
19 
20 #include "common/vsoc/lib/typed_region_view.h"
21 #include "common/vsoc/shm/input_events_layout.h"
22 #include "uapi/vsoc_shm.h"
23 
24 namespace vsoc {
25 namespace input_events {
26 
27 struct InputEvent {
28   uint16_t type;
29   uint16_t code;
30   uint32_t value;
31 };
32 
33 class InputEventsRegionView
34     : public vsoc::TypedRegionView<
35           InputEventsRegionView,
36           vsoc::layout::input_events::InputEventsLayout> {
37  public:
38   static const int kMaxEventsPerPacket;
39   // Generates a touch event, may returns true if successful, false if there was
40   // an error, most likely that the queue is full.
41   bool HandleSingleTouchEvent(bool down, int x, int y);
42   bool HandlePowerButtonEvent(bool down);
43   bool HandleKeyboardEvent(bool down, uint16_t key_code);
44 
45   // TODO(jemoreira): HandleMultiTouchEvent()...
46 
47   // Read input events from the queue, waits if there are none available.
48   // Returns the number of events read or a negative value in case of an error
49   // (most likely the next packet in the queue is larger than the buffer
50   // provided).
51   intptr_t GetScreenEventsOrWait(InputEvent* buffer, int max_event_count);
52   intptr_t GetKeyboardEventsOrWait(InputEvent* buffer, int max_event_count);
53   intptr_t GetPowerButtonEventsOrWait(InputEvent* buffer, int max_event_count);
54 
55 };
56 }  // namespace input_events
57 }  // namespace vsoc
58