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