1/*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef OHOS_HDI_INPUT_DDK_V1_0_HIDDDKTYPES_H
17#define OHOS_HDI_INPUT_DDK_V1_0_HIDDDKTYPES_H
18
19#include <cstdbool>
20#include <cstdint>
21#include <string>
22#include <vector>
23
24#ifndef HDI_BUFF_MAX_SIZE
25#define HDI_BUFF_MAX_SIZE (1024 * 200)
26#endif
27
28#ifndef HDI_CHECK_VALUE_RETURN
29#define HDI_CHECK_VALUE_RETURN(lv, compare, rv, ret) do { \
30    if ((lv) compare (rv)) { \
31        return ret; \
32    } \
33} while (false)
34#endif
35
36#ifndef HDI_CHECK_VALUE_RET_GOTO
37#define HDI_CHECK_VALUE_RET_GOTO(lv, compare, rv, ret, value, table) do { \
38    if ((lv) compare (rv)) { \
39        ret = value; \
40        goto table; \
41    } \
42} while (false)
43#endif
44
45namespace OHOS {
46class MessageParcel;
47}
48
49namespace OHOS {
50namespace HDI {
51namespace Input {
52namespace Ddk {
53namespace V1_0 {
54
55using namespace OHOS;
56
57struct Hid_EmitItem {
58    uint16_t type;
59    uint16_t code;
60    uint32_t value;
61} __attribute__ ((aligned(8)));
62
63enum Hid_DeviceProp : int32_t {
64    HID_PROP_POINTER = 0x00,
65    HID_PROP_DIRECT = 0x01,
66    HID_PROP_BUTTON_PAD = 0x02,
67    HID_PROP_SEMI_MT = 0x03,
68    HID_PROP_TOP_BUTTON_PAD = 0x04,
69    HID_PROP_POINTING_STICK = 0x05,
70    HID_PROP_ACCELEROMETER = 0x06,
71};
72
73struct Hid_Device {
74    std::string deviceName;
75    uint16_t vendorId;
76    uint16_t productId;
77    uint16_t version;
78    uint16_t bustype;
79    std::vector<OHOS::HDI::Input::Ddk::V1_0::Hid_DeviceProp> properties;
80};
81
82enum Hid_EventType : int32_t {
83    HID_EV_SYN = 0x00,
84    HID_EV_KEY = 0x01,
85    HID_EV_REL = 0x02,
86    HID_EV_ABS = 0x03,
87    HID_EV_MSC = 0x04,
88};
89
90enum Hid_SynEvent : int32_t {
91    HID_SYN_REPORT = 0,
92    HID_SYN_CONFIG = 1,
93    HID_SYN_MT_REPORT = 2,
94    HID_SYN_DROPPED = 3,
95};
96
97enum Hid_KeyCode : int32_t {
98    HID_KEY_A = 30,
99    HID_KEY_B = 48,
100    HID_KEY_C = 46,
101    HID_KEY_D = 32,
102    HID_KEY_E = 18,
103    HID_KEY_F = 33,
104    HID_KEY_G = 34,
105    HID_KEY_H = 35,
106    HID_KEY_I = 23,
107    HID_KEY_J = 36,
108    HID_KEY_K = 37,
109    HID_KEY_L = 38,
110    HID_KEY_M = 50,
111    HID_KEY_N = 49,
112    HID_KEY_O = 24,
113    HID_KEY_P = 25,
114    HID_KEY_Q = 16,
115    HID_KEY_R = 19,
116    HID_KEY_S = 31,
117    HID_KEY_T = 20,
118    HID_KEY_U = 22,
119    HID_KEY_V = 47,
120    HID_KEY_W = 17,
121    HID_KEY_X = 45,
122    HID_KEY_Y = 21,
123    HID_KEY_Z = 44,
124    HID_KEY_ESC = 1,
125    HID_KEY_0 = 11,
126    HID_KEY_1 = 2,
127    HID_KEY_2 = 3,
128    HID_KEY_3 = 4,
129    HID_KEY_4 = 5,
130    HID_KEY_5 = 6,
131    HID_KEY_6 = 7,
132    HID_KEY_7 = 8,
133    HID_KEY_8 = 9,
134    HID_KEY_9 = 10,
135    HID_KEY_GRAVE = 41,
136    HID_KEY_MINUS = 12,
137    HID_KEY_EQUALS = 13,
138    HID_KEY_BACKSPACE = 14,
139    HID_KEY_LEFT_BRACKET = 26,
140    HID_KEY_RIGHT_BRACKET = 27,
141    HID_KEY_ENTER = 28,
142    HID_KEY_LEFT_SHIFT = 42,
143    HID_KEY_BACKSLASH = 43,
144    HID_KEY_SEMICOLON = 39,
145    HID_KEY_APOSTROPHE = 40,
146    HID_KEY_SPACE = 57,
147    HID_KEY_SLASH = 53,
148    HID_KEY_COMMA = 51,
149    HID_KEY_PERIOD = 52,
150    HID_KEY_RIGHT_SHIFT = 54,
151    HID_KEY_NUMPAD_0 = 82,
152    HID_KEY_NUMPAD_1 = 79,
153    HID_KEY_NUMPAD_2 = 80,
154    HID_KEY_NUMPAD_3 = 81,
155    HID_KEY_NUMPAD_4 = 75,
156    HID_KEY_NUMPAD_5 = 76,
157    HID_KEY_NUMPAD_6 = 77,
158    HID_KEY_NUMPAD_7 = 71,
159    HID_KEY_NUMPAD_8 = 72,
160    HID_KEY_NUMPAD_9 = 73,
161    HID_KEY_NUMPAD_DIVIDE = 70,
162    HID_KEY_NUMPAD_MULTIPLY = 55,
163    HID_KEY_NUMPAD_SUBTRACT = 74,
164    HID_KEY_NUMPAD_ADD = 78,
165    HID_KEY_NUMPAD_DOT = 83,
166    HID_KEY_SYSRQ = 99,
167    HID_KEY_MUTE = 113,
168    HID_KEY_VOLUME_DOWN = 114,
169    HID_KEY_VOLUME_UP = 115,
170    HID_KEY_BRIGHTNESS_DOWN = 224,
171    HID_KEY_BRIGHTNESS_UP = 225,
172    HID_BTN_0 = 0x100,
173    HID_BTN_1 = 0x101,
174    HID_BTN_2 = 0x102,
175    HID_BTN_3 = 0x103,
176    HID_BTN_4 = 0x104,
177    HID_BTN_5 = 0x105,
178    HID_BTN_6 = 0x106,
179    HID_BTN_7 = 0x107,
180    HID_BTN_8 = 0x108,
181    HID_BTN_9 = 0x109,
182    HID_BTN_LEFT = 0x110,
183    HID_BTN_RIGHT = 0x111,
184    HID_BTN_MIDDLE = 0x112,
185    HID_BTN_SIDE = 0x113,
186    HID_BTN_EXTRA = 0x114,
187    HID_BTN_FORWARD = 0x115,
188    HID_BTN_BACKWARD = 0x116,
189    HID_BTN_TASK = 0x117,
190    HID_BTN_TOOL_PEN = 0x140,
191    HID_BTN_TOOL_RUBBER = 0x141,
192    HID_BTN_TOOL_BRUSH = 0x142,
193    HID_BTN_TOOL_PENCIL = 0x143,
194    HID_BTN_TOOL_AIRBRUSH = 0x144,
195    HID_BTN_TOOL_FINGER = 0x145,
196    HID_BTN_TOOL_MOUSE = 0x146,
197    HID_BTN_TOOL_LENS = 0x147,
198    HID_BTN_TOOL_QUINT_TAP = 0x148,
199    HID_BTN_STYLUS3 = 0x149,
200    HID_BTN_TOUCH = 0x14a,
201    HID_BTN_STYLUS = 0x14b,
202    HID_BTN_STYLUS2 = 0x14c,
203    HID_BTN_TOOL_DOUBLE_TAP = 0x14d,
204    HID_BTN_TOOL_TRIPLE_TAP = 0x14e,
205    HID_BTN_TOOL_QUAD_TAP = 0x14f,
206    HID_BTN_WHEEL = 0x150,
207};
208
209enum Hid_AbsAxes : int32_t {
210    HID_ABS_X = 0x00,
211    HID_ABS_Y = 0x01,
212    HID_ABS_Z = 0x02,
213    HID_ABS_RX = 0x03,
214    HID_ABS_RY = 0x04,
215    HID_ABS_RZ = 0x05,
216    HID_ABS_THROTTLE = 0x06,
217    HID_ABS_RUDDER = 0x07,
218    HID_ABS_WHEEL = 0x08,
219    HID_ABS_GAS = 0x09,
220    HID_ABS_BRAKE = 0x0a,
221    HID_ABS_HAT0X = 0x10,
222    HID_ABS_HAT0Y = 0x11,
223    HID_ABS_HAT1X = 0x12,
224    HID_ABS_HAT1Y = 0x13,
225    HID_ABS_HAT2X = 0x14,
226    HID_ABS_HAT2Y = 0x15,
227    HID_ABS_HAT3X = 0x16,
228    HID_ABS_HAT3Y = 0x17,
229    HID_ABS_PRESSURE = 0x18,
230    HID_ABS_DISTANCE = 0x19,
231    HID_ABS_TILT_X = 0x1a,
232    HID_ABS_TILT_Y = 0x1b,
233    HID_ABS_TOOL_WIDTH = 0x1c,
234    HID_ABS_VOLUME = 0x20,
235    HID_ABS_MISC = 0x28,
236};
237
238enum Hid_RelAxes : int32_t {
239    HID_REL_X = 0x00,
240    HID_REL_Y = 0x01,
241    HID_REL_Z = 0x02,
242    HID_REL_RX = 0x03,
243    HID_REL_RY = 0x04,
244    HID_REL_RZ = 0x05,
245    HID_REL_HWHEEL = 0x06,
246    HID_REL_DIAL = 0x07,
247    HID_REL_WHEEL = 0x08,
248    HID_REL_MISC = 0x09,
249    HID_REL_RESERVED = 0x0a,
250    HID_REL_WHEEL_HI_RES = 0x0b,
251    HID_REL_HWHEEL_HI_RES = 0x0c,
252};
253
254enum Hid_MscEvent : int32_t {
255    HID_MSC_SERIAL = 0x00,
256    HID_MSC_PULSE_LED = 0x01,
257    HID_MSC_GESTURE = 0x02,
258    HID_MSC_RAW = 0x03,
259    HID_MSC_SCAN = 0x04,
260    HID_MSC_TIMESTAMP = 0x05,
261};
262
263struct Hid_EventProperties {
264    std::vector<OHOS::HDI::Input::Ddk::V1_0::Hid_EventType> hidEventTypes;
265    std::vector<OHOS::HDI::Input::Ddk::V1_0::Hid_KeyCode> hidKeys;
266    std::vector<OHOS::HDI::Input::Ddk::V1_0::Hid_AbsAxes> hidAbs;
267    std::vector<OHOS::HDI::Input::Ddk::V1_0::Hid_RelAxes> hidRelBits;
268    std::vector<OHOS::HDI::Input::Ddk::V1_0::Hid_MscEvent> hidMiscellaneous;
269    std::vector<int32_t> hidAbsMax;
270    std::vector<int32_t> hidAbsMin;
271    std::vector<int32_t> hidAbsFuzz;
272    std::vector<int32_t> hidAbsFlat;
273};
274
275enum Hid_DdkErrCode : int32_t {
276    HID_DDK_SUCCESS = 0,
277    HID_DDK_FAILURE = -1,
278    HID_DDK_INVALID_PARAMETER = -2,
279    HID_DDK_INVALID_OPERATION = -3,
280    HID_DDK_NULL_PTR = -4,
281    HID_DDK_TIMEOUT = -5,
282    HID_DDK_NO_PERM = -6,
283};
284
285bool Hid_EmitItemBlockMarshalling(OHOS::MessageParcel &data, const OHOS::HDI::Input::Ddk::V1_0::Hid_EmitItem& dataBlock);
286
287bool Hid_EmitItemBlockUnmarshalling(OHOS::MessageParcel &data, OHOS::HDI::Input::Ddk::V1_0::Hid_EmitItem& dataBlock);
288
289bool Hid_DeviceBlockMarshalling(OHOS::MessageParcel &data, const OHOS::HDI::Input::Ddk::V1_0::Hid_Device& dataBlock);
290
291bool Hid_DeviceBlockUnmarshalling(OHOS::MessageParcel &data, OHOS::HDI::Input::Ddk::V1_0::Hid_Device& dataBlock);
292
293bool Hid_EventPropertiesBlockMarshalling(OHOS::MessageParcel &data, const OHOS::HDI::Input::Ddk::V1_0::Hid_EventProperties& dataBlock);
294
295bool Hid_EventPropertiesBlockUnmarshalling(OHOS::MessageParcel &data, OHOS::HDI::Input::Ddk::V1_0::Hid_EventProperties& dataBlock);
296
297
298} // V1_0
299} // Ddk
300} // Input
301} // HDI
302} // OHOS
303
304#endif // OHOS_HDI_INPUT_DDK_V1_0_HIDDDKTYPES_H
305
306