12d4d9a4dSopenharmony_ci/*
22d4d9a4dSopenharmony_ci * Copyright (c) 2021-2024 Huawei Device Co., Ltd.
32d4d9a4dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
42d4d9a4dSopenharmony_ci * you may not use this file except in compliance with the License.
52d4d9a4dSopenharmony_ci * You may obtain a copy of the License at
62d4d9a4dSopenharmony_ci *
72d4d9a4dSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
82d4d9a4dSopenharmony_ci *
92d4d9a4dSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
102d4d9a4dSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
112d4d9a4dSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
122d4d9a4dSopenharmony_ci * See the License for the specific language governing permissions and
132d4d9a4dSopenharmony_ci * limitations under the License.
142d4d9a4dSopenharmony_ci */
152d4d9a4dSopenharmony_ci
162d4d9a4dSopenharmony_ci#ifndef OHOS_DISTRIBUTED_INPUT_CONSTANTS_H
172d4d9a4dSopenharmony_ci#define OHOS_DISTRIBUTED_INPUT_CONSTANTS_H
182d4d9a4dSopenharmony_ci
192d4d9a4dSopenharmony_ci#include <map>
202d4d9a4dSopenharmony_ci#include <string>
212d4d9a4dSopenharmony_ci#include <vector>
222d4d9a4dSopenharmony_ci
232d4d9a4dSopenharmony_ci#include <linux/uinput.h>
242d4d9a4dSopenharmony_ci
252d4d9a4dSopenharmony_cinamespace OHOS {
262d4d9a4dSopenharmony_cinamespace DistributedHardware {
272d4d9a4dSopenharmony_cinamespace DistributedInput {
282d4d9a4dSopenharmony_ci#define INPUT_KEY_WHEN  "when"
292d4d9a4dSopenharmony_ci#define INPUT_KEY_TYPE  "type"
302d4d9a4dSopenharmony_ci#define INPUT_KEY_CODE  "code"
312d4d9a4dSopenharmony_ci#define INPUT_KEY_VALUE "value"
322d4d9a4dSopenharmony_ci#define INPUT_KEY_DESCRIPTOR  "descriptor"
332d4d9a4dSopenharmony_ci#define INPUT_KEY_PATH "path"
342d4d9a4dSopenharmony_ci
352d4d9a4dSopenharmony_ci#define VIRTUAL_DEVICE_NAME "DistributedInput "
362d4d9a4dSopenharmony_ci#define LONG_BITS (sizeof(long) * 8)
372d4d9a4dSopenharmony_ci#define NLONGS(x) (((x) + LONG_BITS - 1) / LONG_BITS)
382d4d9a4dSopenharmony_ci
392d4d9a4dSopenharmony_ci    const char INPUT_STRING_SPLIT_POINT = '.';
402d4d9a4dSopenharmony_ci    const uint32_t KEY_DOWN_STATE = 1;
412d4d9a4dSopenharmony_ci    const uint32_t KEY_UP_STATE = 0;
422d4d9a4dSopenharmony_ci    const uint32_t KEY_REPEAT = 2;
432d4d9a4dSopenharmony_ci    const uint32_t READ_SLEEP_TIME_MS = 50;
442d4d9a4dSopenharmony_ci    const uint32_t READ_RETRY_MAX = 5;
452d4d9a4dSopenharmony_ci    const uint32_t DH_ID_LENGTH_MAX = 256;
462d4d9a4dSopenharmony_ci    const uint32_t DEV_ID_LENGTH_MAX = 256;
472d4d9a4dSopenharmony_ci    const uint32_t STRING_MAX_SIZE = 40 * 1024 * 1024;
482d4d9a4dSopenharmony_ci    const uint32_t SCREEN_MSG_MAX = 40 * 1024 * 1024;
492d4d9a4dSopenharmony_ci    const uint32_t AUTH_SESSION_SIDE_SERVER = 0;
502d4d9a4dSopenharmony_ci    const uint32_t IPC_VECTOR_MAX_SIZE = 32;
512d4d9a4dSopenharmony_ci    const uint32_t EVENT_BUFFER_MAX = 512;
522d4d9a4dSopenharmony_ci
532d4d9a4dSopenharmony_ci    /*
542d4d9a4dSopenharmony_ci     * Device Type definitions
552d4d9a4dSopenharmony_ci     */
562d4d9a4dSopenharmony_ci    enum class DInputDeviceType : uint32_t {
572d4d9a4dSopenharmony_ci        NONE = 0x0000,
582d4d9a4dSopenharmony_ci        MOUSE = 0x0001,
592d4d9a4dSopenharmony_ci        KEYBOARD = 0x0002,
602d4d9a4dSopenharmony_ci        TOUCHSCREEN = 0x0004,
612d4d9a4dSopenharmony_ci        TOUCHPAD = MOUSE,
622d4d9a4dSopenharmony_ci        ALL = MOUSE | KEYBOARD | TOUCHSCREEN,
632d4d9a4dSopenharmony_ci    };
642d4d9a4dSopenharmony_ci
652d4d9a4dSopenharmony_ci    const char * const DEVICE_PATH = "/dev/input";
662d4d9a4dSopenharmony_ci
672d4d9a4dSopenharmony_ci    /*
682d4d9a4dSopenharmony_ci     * Maximum number of signalled FDs to handle at a time.
692d4d9a4dSopenharmony_ci     */
702d4d9a4dSopenharmony_ci    constexpr uint32_t EPOLL_MAX_EVENTS = 16;
712d4d9a4dSopenharmony_ci
722d4d9a4dSopenharmony_ci    /*
732d4d9a4dSopenharmony_ci     * Maximum number of event buffer size.
742d4d9a4dSopenharmony_ci     */
752d4d9a4dSopenharmony_ci    constexpr uint32_t INPUT_EVENT_BUFFER_SIZE = 256;
762d4d9a4dSopenharmony_ci
772d4d9a4dSopenharmony_ci    constexpr int32_t INPUT_LOAD_SA_TIMEOUT_MS = 10000;
782d4d9a4dSopenharmony_ci
792d4d9a4dSopenharmony_ci    constexpr int32_t INPUT_LATENCY_DELAYTIME_US = 50 * 1000;
802d4d9a4dSopenharmony_ci
812d4d9a4dSopenharmony_ci    constexpr uint32_t INPUT_LATENCY_DELAY_TIMES = 60;
822d4d9a4dSopenharmony_ci
832d4d9a4dSopenharmony_ci    constexpr int32_t SESSION_WAIT_TIMEOUT_SECOND = 5;
842d4d9a4dSopenharmony_ci
852d4d9a4dSopenharmony_ci    constexpr int32_t EPOLL_WAITTIME = 100;
862d4d9a4dSopenharmony_ci
872d4d9a4dSopenharmony_ci    constexpr uint64_t WATCHDOG_INTERVAL_TIME_MS = 20 * 1000;
882d4d9a4dSopenharmony_ci
892d4d9a4dSopenharmony_ci    /* The input device is a keyboard or has buttons. */
902d4d9a4dSopenharmony_ci    constexpr uint32_t INPUT_DEVICE_CLASS_KEYBOARD      = 0x00000001;
912d4d9a4dSopenharmony_ci
922d4d9a4dSopenharmony_ci    /* The input device is an alpha-numeric keyboard (not just a dial pad). */
932d4d9a4dSopenharmony_ci    constexpr uint32_t INPUT_DEVICE_CLASS_ALPHAKEY      = 0x00000002;
942d4d9a4dSopenharmony_ci
952d4d9a4dSopenharmony_ci    /* The input device is a touchscreen or a touchpad (either single-touch or multi-touch). */
962d4d9a4dSopenharmony_ci    constexpr uint32_t INPUT_DEVICE_CLASS_TOUCH         = 0x00000004;
972d4d9a4dSopenharmony_ci
982d4d9a4dSopenharmony_ci    /* The input device is a cursor device such as a trackball or mouse. */
992d4d9a4dSopenharmony_ci    constexpr uint32_t INPUT_DEVICE_CLASS_CURSOR        = 0x00000008;
1002d4d9a4dSopenharmony_ci
1012d4d9a4dSopenharmony_ci    /* The input device is a multi-touch touchscreen. */
1022d4d9a4dSopenharmony_ci    constexpr uint32_t INPUT_DEVICE_CLASS_TOUCH_MT      = 0x00000010;
1032d4d9a4dSopenharmony_ci
1042d4d9a4dSopenharmony_ci    /* The input device is a directional pad (implies keyboard, has DPAD keys). */
1052d4d9a4dSopenharmony_ci    constexpr uint32_t INPUT_DEVICE_CLASS_DPAD          = 0x00000020;
1062d4d9a4dSopenharmony_ci
1072d4d9a4dSopenharmony_ci    /* The input device is a gamepad (implies keyboard, has BUTTON keys). */
1082d4d9a4dSopenharmony_ci    constexpr uint32_t INPUT_DEVICE_CLASS_GAMEPAD       = 0x00000040;
1092d4d9a4dSopenharmony_ci
1102d4d9a4dSopenharmony_ci    /* The input device has switches. */
1112d4d9a4dSopenharmony_ci    constexpr uint32_t INPUT_DEVICE_CLASS_SWITCH        = 0x00000080;
1122d4d9a4dSopenharmony_ci
1132d4d9a4dSopenharmony_ci    /* The input device is a joystick (implies gamepad, has joystick absolute axes). */
1142d4d9a4dSopenharmony_ci    constexpr uint32_t INPUT_DEVICE_CLASS_JOYSTICK      = 0x00000100;
1152d4d9a4dSopenharmony_ci
1162d4d9a4dSopenharmony_ci    /* The input device has a vibrator (supports FF_RUMBLE). */
1172d4d9a4dSopenharmony_ci    constexpr uint32_t INPUT_DEVICE_CLASS_VIBRATOR      = 0x00000200;
1182d4d9a4dSopenharmony_ci
1192d4d9a4dSopenharmony_ci    /* The input device has a microphone. */
1202d4d9a4dSopenharmony_ci    constexpr uint32_t INPUT_DEVICE_CLASS_MIC           = 0x00000400;
1212d4d9a4dSopenharmony_ci
1222d4d9a4dSopenharmony_ci    /* The input device is an external stylus (has data we want to fuse with touch data). */
1232d4d9a4dSopenharmony_ci    constexpr uint32_t INPUT_DEVICE_CLASS_EXTERNAL_STYLUS = 0x00000800;
1242d4d9a4dSopenharmony_ci
1252d4d9a4dSopenharmony_ci    /* The input device has a rotary encoder. */
1262d4d9a4dSopenharmony_ci    constexpr uint32_t INPUT_DEVICE_CLASS_ROTARY_ENCODER = 0x00001000;
1272d4d9a4dSopenharmony_ci
1282d4d9a4dSopenharmony_ci    /* The input device is virtual (not a real device, not part of UI configuration). */
1292d4d9a4dSopenharmony_ci    constexpr uint32_t INPUT_DEVICE_CLASS_VIRTUAL       = 0x40000000;
1302d4d9a4dSopenharmony_ci
1312d4d9a4dSopenharmony_ci    /* The input device is external (not built-in). */
1322d4d9a4dSopenharmony_ci    constexpr uint32_t INPUT_DEVICE_CLASS_EXTERNAL      = 0x80000000;
1332d4d9a4dSopenharmony_ci
1342d4d9a4dSopenharmony_ci    constexpr uint32_t MAX_SIZE_OF_DEVICE_NAME = UINPUT_MAX_NAME_SIZE - 1;
1352d4d9a4dSopenharmony_ci
1362d4d9a4dSopenharmony_ci    const std::string DH_ID_PREFIX = "Input_";
1372d4d9a4dSopenharmony_ci
1382d4d9a4dSopenharmony_ci    const std::string DINPUT_SPLIT_COMMA = ", ";
1392d4d9a4dSopenharmony_ci
1402d4d9a4dSopenharmony_ci    const char VIR_NODE_SPLIT_CHAR = '|';
1412d4d9a4dSopenharmony_ci    const std::string VIR_NODE_SPLIT = "|";
1422d4d9a4dSopenharmony_ci    const std::string VIR_NODE_PID_SPLIT = "/";
1432d4d9a4dSopenharmony_ci    const uint32_t VIR_NODE_PHY_LEN = 3;
1442d4d9a4dSopenharmony_ci    const uint32_t VIR_NODE_PHY_DEVID_IDX = 1;
1452d4d9a4dSopenharmony_ci    const uint32_t VIR_NODE_PHY_DHID_IDX = 2;
1462d4d9a4dSopenharmony_ci
1472d4d9a4dSopenharmony_ci    const std::string SOURCE_DEVICE_ID = "sourceDevId";
1482d4d9a4dSopenharmony_ci
1492d4d9a4dSopenharmony_ci    const std::string SINK_DEVICE_ID = "sinkDevId";
1502d4d9a4dSopenharmony_ci
1512d4d9a4dSopenharmony_ci    const std::string SOURCE_WINDOW_ID = "sourceWinId";
1522d4d9a4dSopenharmony_ci
1532d4d9a4dSopenharmony_ci    const std::string SINK_SHOW_WINDOW_ID = "sinkShowWinId";
1542d4d9a4dSopenharmony_ci
1552d4d9a4dSopenharmony_ci    const std::string SOURCE_WINDOW_WIDTH = "sourceWinWidth";
1562d4d9a4dSopenharmony_ci
1572d4d9a4dSopenharmony_ci    const std::string SOURCE_WINDOW_HEIGHT = "sourceWinHeight";
1582d4d9a4dSopenharmony_ci
1592d4d9a4dSopenharmony_ci    const std::string SINK_PROJECT_SHOW_WIDTH = "sinkProjShowWidth";
1602d4d9a4dSopenharmony_ci
1612d4d9a4dSopenharmony_ci    const std::string SINK_PROJECT_SHOW_HEIGHT = "sinkProjShowHeight";
1622d4d9a4dSopenharmony_ci
1632d4d9a4dSopenharmony_ci    const std::string SINK_WINDOW_SHOW_X = "sinkWinShowX";
1642d4d9a4dSopenharmony_ci
1652d4d9a4dSopenharmony_ci    const std::string SINK_WINDOW_SHOW_Y = "sinkWinShowY";
1662d4d9a4dSopenharmony_ci
1672d4d9a4dSopenharmony_ci    const std::string DEVICE_NAME = "name";
1682d4d9a4dSopenharmony_ci
1692d4d9a4dSopenharmony_ci    const std::string PHYSICAL_PATH = "physicalPath";
1702d4d9a4dSopenharmony_ci
1712d4d9a4dSopenharmony_ci    const std::string UNIQUE_ID = "uniqueId";
1722d4d9a4dSopenharmony_ci
1732d4d9a4dSopenharmony_ci    const std::string BUS = "bus";
1742d4d9a4dSopenharmony_ci
1752d4d9a4dSopenharmony_ci    const std::string VENDOR = "vendor";
1762d4d9a4dSopenharmony_ci
1772d4d9a4dSopenharmony_ci    const std::string PRODUCT = "product";
1782d4d9a4dSopenharmony_ci
1792d4d9a4dSopenharmony_ci    const std::string VERSION = "version";
1802d4d9a4dSopenharmony_ci
1812d4d9a4dSopenharmony_ci    const std::string DESCRIPTOR = "descriptor";
1822d4d9a4dSopenharmony_ci
1832d4d9a4dSopenharmony_ci    const std::string CLASSES = "classes";
1842d4d9a4dSopenharmony_ci
1852d4d9a4dSopenharmony_ci    const std::string EVENT_TYPES = "eventTypes";
1862d4d9a4dSopenharmony_ci
1872d4d9a4dSopenharmony_ci    const std::string EVENT_KEYS = "eventKeys";
1882d4d9a4dSopenharmony_ci
1892d4d9a4dSopenharmony_ci    const std::string ABS_TYPES = "absTypes";
1902d4d9a4dSopenharmony_ci
1912d4d9a4dSopenharmony_ci    const std::string ABS_INFOS = "absInfos";
1922d4d9a4dSopenharmony_ci
1932d4d9a4dSopenharmony_ci    const std::string REL_TYPES = "relTypes";
1942d4d9a4dSopenharmony_ci
1952d4d9a4dSopenharmony_ci    const std::string PROPERTIES = "properties";
1962d4d9a4dSopenharmony_ci
1972d4d9a4dSopenharmony_ci    const std::string MISCELLANEOUS = "miscellaneous";
1982d4d9a4dSopenharmony_ci
1992d4d9a4dSopenharmony_ci    const std::string LEDS = "leds";
2002d4d9a4dSopenharmony_ci
2012d4d9a4dSopenharmony_ci    const std::string REPEATS = "repeats";
2022d4d9a4dSopenharmony_ci
2032d4d9a4dSopenharmony_ci    const std::string SWITCHS = "switchs";
2042d4d9a4dSopenharmony_ci
2052d4d9a4dSopenharmony_ci    const std::string DH_TOUCH_PAD = "touchpad";
2062d4d9a4dSopenharmony_ci
2072d4d9a4dSopenharmony_ci    const std::string DINPUT_LOG_TITLE_TAG = "DINPUT";
2082d4d9a4dSopenharmony_ci
2092d4d9a4dSopenharmony_ci    constexpr const char* LATENCY_COUNT_THREAD_NAME = "latencyCount";
2102d4d9a4dSopenharmony_ci
2112d4d9a4dSopenharmony_ci    constexpr const char* EVENT_INJECT_THREAD_NAME = "eventInject";
2122d4d9a4dSopenharmony_ci
2132d4d9a4dSopenharmony_ci    constexpr const char* COLLECT_EVENT_THREAD_NAME = "collectEvents";
2142d4d9a4dSopenharmony_ci
2152d4d9a4dSopenharmony_ci    constexpr const char* CHECK_KEY_STATUS_THREAD_NAME = "checkKeyStatus";
2162d4d9a4dSopenharmony_ci
2172d4d9a4dSopenharmony_ci    constexpr int32_t LOG_MAX_LEN = 4096;
2182d4d9a4dSopenharmony_ci
2192d4d9a4dSopenharmony_ci    constexpr uint32_t SCREEN_ID_DEFAULT = 0;
2202d4d9a4dSopenharmony_ci
2212d4d9a4dSopenharmony_ci    constexpr uint32_t DEFAULT_VALUE = 0;
2222d4d9a4dSopenharmony_ci
2232d4d9a4dSopenharmony_ci    constexpr int32_t UN_INIT_FD_VALUE = -1;
2242d4d9a4dSopenharmony_ci
2252d4d9a4dSopenharmony_ci    constexpr int32_t SINK_SCREEN_INFO_SIZE = 4;
2262d4d9a4dSopenharmony_ci
2272d4d9a4dSopenharmony_ci    constexpr int32_t MAX_LOG_TIMES = 20;
2282d4d9a4dSopenharmony_ci
2292d4d9a4dSopenharmony_ci    enum class EHandlerMsgType {
2302d4d9a4dSopenharmony_ci        DINPUT_SINK_EVENT_HANDLER_MSG = 1,
2312d4d9a4dSopenharmony_ci        DINPUT_SOURCE_EVENT_HANDLER_MSG = 2
2322d4d9a4dSopenharmony_ci    };
2332d4d9a4dSopenharmony_ci
2342d4d9a4dSopenharmony_ci    struct BusinessEvent {
2352d4d9a4dSopenharmony_ci        std::vector<int32_t> pressedKeys;
2362d4d9a4dSopenharmony_ci        int32_t keyCode;
2372d4d9a4dSopenharmony_ci        int32_t keyAction;
2382d4d9a4dSopenharmony_ci    };
2392d4d9a4dSopenharmony_ci
2402d4d9a4dSopenharmony_ci    struct TouchScreenEvent {
2412d4d9a4dSopenharmony_ci        uint32_t absX;
2422d4d9a4dSopenharmony_ci        uint32_t absY;
2432d4d9a4dSopenharmony_ci    };
2442d4d9a4dSopenharmony_ci
2452d4d9a4dSopenharmony_ci    /*
2462d4d9a4dSopenharmony_ci     * A raw event as retrieved from the input_event.
2472d4d9a4dSopenharmony_ci     */
2482d4d9a4dSopenharmony_ci    struct RawEvent {
2492d4d9a4dSopenharmony_ci        int64_t when;
2502d4d9a4dSopenharmony_ci        uint32_t type;
2512d4d9a4dSopenharmony_ci        uint32_t code;
2522d4d9a4dSopenharmony_ci        int32_t value;
2532d4d9a4dSopenharmony_ci        std::string descriptor;
2542d4d9a4dSopenharmony_ci        std::string path;
2552d4d9a4dSopenharmony_ci
2562d4d9a4dSopenharmony_ci        bool operator == (const RawEvent &e)
2572d4d9a4dSopenharmony_ci        {
2582d4d9a4dSopenharmony_ci            return this->type == e.type && this->code == e.code &&
2592d4d9a4dSopenharmony_ci                this->descriptor == e.descriptor && this->path == e.path;
2602d4d9a4dSopenharmony_ci        }
2612d4d9a4dSopenharmony_ci    };
2622d4d9a4dSopenharmony_ci
2632d4d9a4dSopenharmony_ci    /*
2642d4d9a4dSopenharmony_ci     * Input device Info retrieved from the kernel.
2652d4d9a4dSopenharmony_ci     */
2662d4d9a4dSopenharmony_ci    struct InputDevice {
2672d4d9a4dSopenharmony_ci        inline InputDevice() : name(""), physicalPath(""), uniqueId(""), bus(0), vendor(0), product(0),
2682d4d9a4dSopenharmony_ci            version(0), descriptor(""), classes(0) {}
2692d4d9a4dSopenharmony_ci        std::string name;
2702d4d9a4dSopenharmony_ci        std::string physicalPath;
2712d4d9a4dSopenharmony_ci        std::string uniqueId;
2722d4d9a4dSopenharmony_ci        uint16_t bus;
2732d4d9a4dSopenharmony_ci        uint16_t vendor;
2742d4d9a4dSopenharmony_ci        uint16_t product;
2752d4d9a4dSopenharmony_ci        uint16_t version;
2762d4d9a4dSopenharmony_ci        std::string descriptor;
2772d4d9a4dSopenharmony_ci        uint32_t classes;
2782d4d9a4dSopenharmony_ci        std::vector<uint32_t> eventTypes;
2792d4d9a4dSopenharmony_ci        std::vector<uint32_t> eventKeys;
2802d4d9a4dSopenharmony_ci        std::vector<uint32_t> absTypes;
2812d4d9a4dSopenharmony_ci        std::map<uint32_t, std::vector<int32_t>> absInfos;
2822d4d9a4dSopenharmony_ci        std::vector<uint32_t> relTypes;
2832d4d9a4dSopenharmony_ci        std::vector<uint32_t> properties;
2842d4d9a4dSopenharmony_ci
2852d4d9a4dSopenharmony_ci        std::vector<uint32_t> miscellaneous;
2862d4d9a4dSopenharmony_ci        std::vector<uint32_t> leds;
2872d4d9a4dSopenharmony_ci        std::vector<uint32_t> switchs;
2882d4d9a4dSopenharmony_ci        std::vector<uint32_t> repeats;
2892d4d9a4dSopenharmony_ci    };
2902d4d9a4dSopenharmony_ci
2912d4d9a4dSopenharmony_ci    /*
2922d4d9a4dSopenharmony_ci     * Distributed Hardware Handle
2932d4d9a4dSopenharmony_ci     */
2942d4d9a4dSopenharmony_ci    struct HardwareHandle {
2952d4d9a4dSopenharmony_ci        // equipment ID
2962d4d9a4dSopenharmony_ci        std::string eqId;
2972d4d9a4dSopenharmony_ci
2982d4d9a4dSopenharmony_ci        // Hardware ID
2992d4d9a4dSopenharmony_ci        std::string hhId;
3002d4d9a4dSopenharmony_ci
3012d4d9a4dSopenharmony_ci        // Hardware detailed information
3022d4d9a4dSopenharmony_ci        std::string hdInfo;
3032d4d9a4dSopenharmony_ci    };
3042d4d9a4dSopenharmony_ci
3052d4d9a4dSopenharmony_ci    // Synthetic raw event type codes produced when devices are added or removed.
3062d4d9a4dSopenharmony_ci    enum class DeviceType {
3072d4d9a4dSopenharmony_ci        // Sent when a device is added.
3082d4d9a4dSopenharmony_ci        DEVICE_ADDED = 0x10000000,
3092d4d9a4dSopenharmony_ci
3102d4d9a4dSopenharmony_ci        // Sent when a device is removed.
3112d4d9a4dSopenharmony_ci        DEVICE_REMOVED = 0x20000000,
3122d4d9a4dSopenharmony_ci
3132d4d9a4dSopenharmony_ci        // Sent when all added/removed devices from the most recent scan have been reported.
3142d4d9a4dSopenharmony_ci        // This event is always sent at least once.
3152d4d9a4dSopenharmony_ci        FINISHED_DEVICE_SCAN = 0x30000000,
3162d4d9a4dSopenharmony_ci
3172d4d9a4dSopenharmony_ci        FIRST_SYNTHETIC_EVENT = DEVICE_ADDED,
3182d4d9a4dSopenharmony_ci    };
3192d4d9a4dSopenharmony_ci
3202d4d9a4dSopenharmony_ci    /*
3212d4d9a4dSopenharmony_ci     * Input device connection status
3222d4d9a4dSopenharmony_ci     */
3232d4d9a4dSopenharmony_ci    struct InputDeviceEvent {
3242d4d9a4dSopenharmony_ci        DeviceType type;
3252d4d9a4dSopenharmony_ci        InputDevice deviceInfo;
3262d4d9a4dSopenharmony_ci    };
3272d4d9a4dSopenharmony_ci
3282d4d9a4dSopenharmony_ci    /*
3292d4d9a4dSopenharmony_ci     * Device Type definitions
3302d4d9a4dSopenharmony_ci     */
3312d4d9a4dSopenharmony_ci    enum class DInputServerType {
3322d4d9a4dSopenharmony_ci        /*
3332d4d9a4dSopenharmony_ci         * null server
3342d4d9a4dSopenharmony_ci         */
3352d4d9a4dSopenharmony_ci        NULL_SERVER_TYPE = 0,
3362d4d9a4dSopenharmony_ci
3372d4d9a4dSopenharmony_ci        /*
3382d4d9a4dSopenharmony_ci         * source server
3392d4d9a4dSopenharmony_ci         */
3402d4d9a4dSopenharmony_ci        SOURCE_SERVER_TYPE = 1,
3412d4d9a4dSopenharmony_ci
3422d4d9a4dSopenharmony_ci        /*
3432d4d9a4dSopenharmony_ci         * sink server.
3442d4d9a4dSopenharmony_ci         */
3452d4d9a4dSopenharmony_ci        SINK_SERVER_TYPE = 2,
3462d4d9a4dSopenharmony_ci    };
3472d4d9a4dSopenharmony_ci
3482d4d9a4dSopenharmony_ci    // Current Input Session Status
3492d4d9a4dSopenharmony_ci    enum class SessionStatus : uint32_t {
3502d4d9a4dSopenharmony_ci        CLOSED = 0x00,
3512d4d9a4dSopenharmony_ci        OPENING = 0x01,
3522d4d9a4dSopenharmony_ci        OPENED = 0x02,
3532d4d9a4dSopenharmony_ci        CLOSING = 0x03,
3542d4d9a4dSopenharmony_ci    };
3552d4d9a4dSopenharmony_ci} // namespace DistributedInput
3562d4d9a4dSopenharmony_ci} // namespace DistributedHardware
3572d4d9a4dSopenharmony_ci} // namespace OHOS
3582d4d9a4dSopenharmony_ci
3592d4d9a4dSopenharmony_ci#endif // OHOS_DISTRIBUTED_INPUT_CONSTANTS_H
360