1e41f4b71Sopenharmony_ci# Input
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci## 概述
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ciInput模块驱动接口声明。
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci本模块为Input服务提供相关驱动接口,包括Input设备的打开和关闭、Input事件获取、设备信息查询、回调函数注册、特性状态控制等接口。
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci**起始版本:** 1.0
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci## 汇总
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci
16e41f4b71Sopenharmony_ci### 文件
17e41f4b71Sopenharmony_ci
18e41f4b71Sopenharmony_ci| 名称 | 描述 | 
19e41f4b71Sopenharmony_ci| -------- | -------- |
20e41f4b71Sopenharmony_ci| [input_controller.h](input__controller_8h.md) | 描述Input设备业务控制相关的接口声明。 | 
21e41f4b71Sopenharmony_ci| [input_manager.h](input__manager_8h.md) | 描述Input设备管理相关的接口声明。 | 
22e41f4b71Sopenharmony_ci| [input_reporter.h](input__reporter_8h.md) | 描述Input设备数据上报相关的接口声明。 | 
23e41f4b71Sopenharmony_ci| [input_type.h](input__type_8h.md) | Input设备相关的类型定义,定义了Input设备驱动接口所使用的结构体及枚举类型。 | 
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci
26e41f4b71Sopenharmony_ci### 类
27e41f4b71Sopenharmony_ci
28e41f4b71Sopenharmony_ci| 名称 | 描述 | 
29e41f4b71Sopenharmony_ci| -------- | -------- |
30e41f4b71Sopenharmony_ci| struct  [InputController](_input_controller.md) | 提供Input设备业务控制相关的接口。 | 
31e41f4b71Sopenharmony_ci| struct  [InputManager](_input_manager.md) | 提供Input设备管理相关的接口。 | 
32e41f4b71Sopenharmony_ci| struct  [IInputInterface](_i_input_interface.md) | 定义用于提供Input设备驱动程序功能的接口。 | 
33e41f4b71Sopenharmony_ci| struct  [InputReporter](_input_reporter.md) | 提供Input设备数据上报相关的接口。 | 
34e41f4b71Sopenharmony_ci| struct  [InputEventPackage](_input_event_package.md) | Input事件数据包结构。 | 
35e41f4b71Sopenharmony_ci| struct  [InputHotPlugEvent](_input_hot_plug_event.md) | 热插拔事件数据包结构。 | 
36e41f4b71Sopenharmony_ci| struct  [InputDevDesc](_input_dev_desc.md) | Input设备描述信息。 | 
37e41f4b71Sopenharmony_ci| struct  [InputEventCb](_input_event_cb.md) | 此结构体定义了输入事件回调函数并提供给Input服务使用。 | 
38e41f4b71Sopenharmony_ci| struct  [InputHostCb](_input_host_cb.md) | 此结构体定义了热插拔事件上报回调函数并提供给Input服务使用。 | 
39e41f4b71Sopenharmony_ci| struct  [InputDevAbility](_input_dev_ability.md) | Input设备的能力属性,存储支持事件的位图。 | 
40e41f4b71Sopenharmony_ci| struct  [InputDimensionInfo](_input_dimension_info.md) | Input设备的维度信息。 | 
41e41f4b71Sopenharmony_ci| struct  [InputDevIdentify](_input_dev_identify.md) | Input设备的识别信息。 | 
42e41f4b71Sopenharmony_ci| struct  [InputDevAttr](_input_dev_attr.md) | Input设备属性。 | 
43e41f4b71Sopenharmony_ci| struct  [InputDeviceInfo](_input_device_info.md) | Input设备基础设备信息。 | 
44e41f4b71Sopenharmony_ci| struct  [InputExtraCmd](_input_extra_cmd.md) | 扩展指令的数据结构。 | 
45e41f4b71Sopenharmony_ci
46e41f4b71Sopenharmony_ci
47e41f4b71Sopenharmony_ci### 宏定义
48e41f4b71Sopenharmony_ci
49e41f4b71Sopenharmony_ci| 名称 | 描述 | 
50e41f4b71Sopenharmony_ci| -------- | -------- |
51e41f4b71Sopenharmony_ci| [MAX_INPUT_DEV_NUM](#max_input_dev_num)   32 | Input设备数量的最大值。 | 
52e41f4b71Sopenharmony_ci| [CHIP_INFO_LEN](#chip_info_len)   10 | 芯片信息长度。 | 
53e41f4b71Sopenharmony_ci| [CHIP_NAME_LEN](#chip_name_len)   10 | 芯片名称长度。 | 
54e41f4b71Sopenharmony_ci| [VENDOR_NAME_LEN](#vendor_name_len)   10 | 厂商名称长度。 | 
55e41f4b71Sopenharmony_ci| [DEV_NAME_LEN](#dev_name_len)   64 | Input设备名称长度。 | 
56e41f4b71Sopenharmony_ci| [SELF_TEST_RESULT_LEN](#self_test_result_len)   20 | 自测结果长度。 | 
57e41f4b71Sopenharmony_ci| [DEV_MANAGER_SERVICE_NAME](#dev_manager_service_name)   "hdf_input_host" | Input设备节点服务名称。 | 
58e41f4b71Sopenharmony_ci| [DIV_ROUND_UP](#div_round_up)(nr, d)   (((nr) + (d) - 1) / (d)) | 向上取整计算公式。 | 
59e41f4b71Sopenharmony_ci| [BYTE_HAS_BITS](#byte_has_bits)   8 | 一个字节所包含的比特数。 | 
60e41f4b71Sopenharmony_ci| [BITS_TO_UINT64](#bits_to_uint64)(count)   [DIV_ROUND_UP](#div_round_up)(count, [BYTE_HAS_BITS](#byte_has_bits) \* sizeof(uint64_t)) | 比特与64位无符号整数的转换公式。 | 
61e41f4b71Sopenharmony_ci| [HDF_FF_CNT](#hdf_ff_cnt)   (0x7f + 1) | Input设备发送力反馈命令的数量最大值。 | 
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ci
64e41f4b71Sopenharmony_ci### 枚举
65e41f4b71Sopenharmony_ci
66e41f4b71Sopenharmony_ci| 名称 | 描述 | 
67e41f4b71Sopenharmony_ci| -------- | -------- |
68e41f4b71Sopenharmony_ci| [RetStatus](#retstatus) { INPUT_SUCCESS = 0, INPUT_FAILURE = -1, INPUT_INVALID_PARAM = -2, INPUT_NOMEM = -3,   INPUT_NULL_PTR = -4, INPUT_TIMEOUT = -5, INPUT_UNSUPPORTED = -6 } | 定义返回值类型。 | 
69e41f4b71Sopenharmony_ci| [InputDevType](#inputdevtype) { INDEV_TYPE_TOUCH, INDEV_TYPE_KEY, INDEV_TYPE_KEYBOARD, INDEV_TYPE_MOUSE,   INDEV_TYPE_BUTTON, INDEV_TYPE_CROWN, INDEV_TYPE_ENCODER, INDEV_TYPE_UNKNOWN } | 定义Input设备类型。 | 
70e41f4b71Sopenharmony_ci| [PowerStatus](#powerstatus) { INPUT_RESUME, INPUT_SUSPEND, INPUT_LOW_POWER, INPUT_POWER_STATUS_UNKNOWN } | 定义电源状态。 | 
71e41f4b71Sopenharmony_ci| [CapacitanceTest](#capacitancetest) { BASE_TEST, FULL_TEST, MMI_TEST, RUNNING_TEST,   TEST_TYPE_UNKNOWN } | 定义容值测试类型。 | 
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci
74e41f4b71Sopenharmony_ci### 函数
75e41f4b71Sopenharmony_ci
76e41f4b71Sopenharmony_ci| 名称 | 描述 | 
77e41f4b71Sopenharmony_ci| -------- | -------- |
78e41f4b71Sopenharmony_ci| int32_t [GetInputInterface](#getinputinterface) ([IInputInterface](_i_input_interface.md) \*\*interface) | Input服务通过调用此接口获取操作Input设备的所有接口。 | 
79e41f4b71Sopenharmony_ci
80e41f4b71Sopenharmony_ci
81e41f4b71Sopenharmony_ci## 宏定义说明
82e41f4b71Sopenharmony_ci
83e41f4b71Sopenharmony_ci
84e41f4b71Sopenharmony_ci### BITS_TO_UINT64
85e41f4b71Sopenharmony_ci
86e41f4b71Sopenharmony_ci```
87e41f4b71Sopenharmony_ci#define BITS_TO_UINT64( count)   DIV_ROUND_UP(count, BYTE_HAS_BITS * sizeof(uint64_t))
88e41f4b71Sopenharmony_ci```
89e41f4b71Sopenharmony_ci
90e41f4b71Sopenharmony_ci**描述**
91e41f4b71Sopenharmony_ci
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ci比特与64位无符号整数的转换公式
94e41f4b71Sopenharmony_ci
95e41f4b71Sopenharmony_ci
96e41f4b71Sopenharmony_ci### BYTE_HAS_BITS
97e41f4b71Sopenharmony_ci
98e41f4b71Sopenharmony_ci```
99e41f4b71Sopenharmony_ci#define BYTE_HAS_BITS   8
100e41f4b71Sopenharmony_ci```
101e41f4b71Sopenharmony_ci
102e41f4b71Sopenharmony_ci**描述**
103e41f4b71Sopenharmony_ci
104e41f4b71Sopenharmony_ci
105e41f4b71Sopenharmony_ci一个字节所包含的比特数
106e41f4b71Sopenharmony_ci
107e41f4b71Sopenharmony_ci
108e41f4b71Sopenharmony_ci### CHIP_INFO_LEN
109e41f4b71Sopenharmony_ci
110e41f4b71Sopenharmony_ci```
111e41f4b71Sopenharmony_ci#define CHIP_INFO_LEN   10
112e41f4b71Sopenharmony_ci```
113e41f4b71Sopenharmony_ci
114e41f4b71Sopenharmony_ci**描述**
115e41f4b71Sopenharmony_ci
116e41f4b71Sopenharmony_ci
117e41f4b71Sopenharmony_ci芯片信息长度
118e41f4b71Sopenharmony_ci
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_ci### CHIP_NAME_LEN
121e41f4b71Sopenharmony_ci
122e41f4b71Sopenharmony_ci```
123e41f4b71Sopenharmony_ci#define CHIP_NAME_LEN   10
124e41f4b71Sopenharmony_ci```
125e41f4b71Sopenharmony_ci
126e41f4b71Sopenharmony_ci**描述**
127e41f4b71Sopenharmony_ci
128e41f4b71Sopenharmony_ci
129e41f4b71Sopenharmony_ci芯片名称长度
130e41f4b71Sopenharmony_ci
131e41f4b71Sopenharmony_ci
132e41f4b71Sopenharmony_ci### DEV_MANAGER_SERVICE_NAME
133e41f4b71Sopenharmony_ci
134e41f4b71Sopenharmony_ci```
135e41f4b71Sopenharmony_ci#define DEV_MANAGER_SERVICE_NAME   "hdf_input_host"
136e41f4b71Sopenharmony_ci```
137e41f4b71Sopenharmony_ci
138e41f4b71Sopenharmony_ci**描述**
139e41f4b71Sopenharmony_ci
140e41f4b71Sopenharmony_ci
141e41f4b71Sopenharmony_ciInput设备节点服务名称
142e41f4b71Sopenharmony_ci
143e41f4b71Sopenharmony_ci
144e41f4b71Sopenharmony_ci### DEV_NAME_LEN
145e41f4b71Sopenharmony_ci
146e41f4b71Sopenharmony_ci```
147e41f4b71Sopenharmony_ci#define DEV_NAME_LEN   64
148e41f4b71Sopenharmony_ci```
149e41f4b71Sopenharmony_ci
150e41f4b71Sopenharmony_ci**描述**
151e41f4b71Sopenharmony_ci
152e41f4b71Sopenharmony_ci
153e41f4b71Sopenharmony_ciInput设备名称长度
154e41f4b71Sopenharmony_ci
155e41f4b71Sopenharmony_ci
156e41f4b71Sopenharmony_ci### DIV_ROUND_UP
157e41f4b71Sopenharmony_ci
158e41f4b71Sopenharmony_ci```
159e41f4b71Sopenharmony_ci#define DIV_ROUND_UP( nr,  d )   (((nr) + (d) - 1) / (d))
160e41f4b71Sopenharmony_ci```
161e41f4b71Sopenharmony_ci
162e41f4b71Sopenharmony_ci**描述**
163e41f4b71Sopenharmony_ci
164e41f4b71Sopenharmony_ci
165e41f4b71Sopenharmony_ci向上取整计算公式
166e41f4b71Sopenharmony_ci
167e41f4b71Sopenharmony_ci
168e41f4b71Sopenharmony_ci### HDF_FF_CNT
169e41f4b71Sopenharmony_ci
170e41f4b71Sopenharmony_ci```
171e41f4b71Sopenharmony_ci#define HDF_FF_CNT   (0x7f + 1)
172e41f4b71Sopenharmony_ci```
173e41f4b71Sopenharmony_ci
174e41f4b71Sopenharmony_ci**描述**
175e41f4b71Sopenharmony_ci
176e41f4b71Sopenharmony_ci
177e41f4b71Sopenharmony_ciInput设备发送力反馈命令的数量最大值
178e41f4b71Sopenharmony_ci
179e41f4b71Sopenharmony_ci
180e41f4b71Sopenharmony_ci### MAX_INPUT_DEV_NUM
181e41f4b71Sopenharmony_ci
182e41f4b71Sopenharmony_ci```
183e41f4b71Sopenharmony_ci#define MAX_INPUT_DEV_NUM   32
184e41f4b71Sopenharmony_ci```
185e41f4b71Sopenharmony_ci
186e41f4b71Sopenharmony_ci**描述**
187e41f4b71Sopenharmony_ci
188e41f4b71Sopenharmony_ci
189e41f4b71Sopenharmony_ciInput设备数量的最大值
190e41f4b71Sopenharmony_ci
191e41f4b71Sopenharmony_ci
192e41f4b71Sopenharmony_ci### SELF_TEST_RESULT_LEN
193e41f4b71Sopenharmony_ci
194e41f4b71Sopenharmony_ci```
195e41f4b71Sopenharmony_ci#define SELF_TEST_RESULT_LEN   20
196e41f4b71Sopenharmony_ci```
197e41f4b71Sopenharmony_ci
198e41f4b71Sopenharmony_ci**描述**
199e41f4b71Sopenharmony_ci
200e41f4b71Sopenharmony_ci
201e41f4b71Sopenharmony_ci自测试结果长度
202e41f4b71Sopenharmony_ci
203e41f4b71Sopenharmony_ci
204e41f4b71Sopenharmony_ci### VENDOR_NAME_LEN
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci```
207e41f4b71Sopenharmony_ci#define VENDOR_NAME_LEN   10
208e41f4b71Sopenharmony_ci```
209e41f4b71Sopenharmony_ci
210e41f4b71Sopenharmony_ci**描述**
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci
213e41f4b71Sopenharmony_ci厂商名称长度
214e41f4b71Sopenharmony_ci
215e41f4b71Sopenharmony_ci
216e41f4b71Sopenharmony_ci## 枚举类型说明
217e41f4b71Sopenharmony_ci
218e41f4b71Sopenharmony_ci
219e41f4b71Sopenharmony_ci### CapacitanceTest
220e41f4b71Sopenharmony_ci
221e41f4b71Sopenharmony_ci```
222e41f4b71Sopenharmony_cienum CapacitanceTest
223e41f4b71Sopenharmony_ci```
224e41f4b71Sopenharmony_ci
225e41f4b71Sopenharmony_ci**描述**
226e41f4b71Sopenharmony_ci
227e41f4b71Sopenharmony_ci
228e41f4b71Sopenharmony_ci定义容值测试类型。
229e41f4b71Sopenharmony_ci
230e41f4b71Sopenharmony_ci**起始版本:** 1.0
231e41f4b71Sopenharmony_ci
232e41f4b71Sopenharmony_ci| 枚举值 | 描述 | 
233e41f4b71Sopenharmony_ci| -------- | -------- |
234e41f4b71Sopenharmony_ci| BASE_TEST | 基础容值测试 | 
235e41f4b71Sopenharmony_ci| FULL_TEST | 全量容值自检测试 | 
236e41f4b71Sopenharmony_ci| MMI_TEST | MMI容值测试 | 
237e41f4b71Sopenharmony_ci| RUNNING_TEST | 老化容值测试 | 
238e41f4b71Sopenharmony_ci| TEST_TYPE_UNKNOWN | 未知的测试类型 | 
239e41f4b71Sopenharmony_ci
240e41f4b71Sopenharmony_ci
241e41f4b71Sopenharmony_ci### InputDevType
242e41f4b71Sopenharmony_ci
243e41f4b71Sopenharmony_ci```
244e41f4b71Sopenharmony_cienum InputDevType
245e41f4b71Sopenharmony_ci```
246e41f4b71Sopenharmony_ci
247e41f4b71Sopenharmony_ci**描述**
248e41f4b71Sopenharmony_ci
249e41f4b71Sopenharmony_ci
250e41f4b71Sopenharmony_ci定义Input设备类型。
251e41f4b71Sopenharmony_ci
252e41f4b71Sopenharmony_ci**起始版本:** 1.0
253e41f4b71Sopenharmony_ci
254e41f4b71Sopenharmony_ci| 枚举值 | 描述 | 
255e41f4b71Sopenharmony_ci| -------- | -------- |
256e41f4b71Sopenharmony_ci| INDEV_TYPE_TOUCH | 触摸屏 | 
257e41f4b71Sopenharmony_ci| INDEV_TYPE_KEY | 物理按键 | 
258e41f4b71Sopenharmony_ci| INDEV_TYPE_KEYBOARD | 键盘 | 
259e41f4b71Sopenharmony_ci| INDEV_TYPE_MOUSE | 鼠标 | 
260e41f4b71Sopenharmony_ci| INDEV_TYPE_BUTTON | 虚拟按键 | 
261e41f4b71Sopenharmony_ci| INDEV_TYPE_CROWN | 表冠 | 
262e41f4b71Sopenharmony_ci| INDEV_TYPE_ENCODER | 自定义编码的特定功能或者事件 | 
263e41f4b71Sopenharmony_ci| INDEV_TYPE_UNKNOWN | 未知输入设备类型 | 
264e41f4b71Sopenharmony_ci
265e41f4b71Sopenharmony_ci
266e41f4b71Sopenharmony_ci### PowerStatus
267e41f4b71Sopenharmony_ci
268e41f4b71Sopenharmony_ci```
269e41f4b71Sopenharmony_cienum PowerStatus
270e41f4b71Sopenharmony_ci```
271e41f4b71Sopenharmony_ci
272e41f4b71Sopenharmony_ci**描述**
273e41f4b71Sopenharmony_ci
274e41f4b71Sopenharmony_ci
275e41f4b71Sopenharmony_ci定义电源状态。
276e41f4b71Sopenharmony_ci
277e41f4b71Sopenharmony_ci**起始版本:** 1.0
278e41f4b71Sopenharmony_ci
279e41f4b71Sopenharmony_ci| 枚举值 | 描述 | 
280e41f4b71Sopenharmony_ci| -------- | -------- |
281e41f4b71Sopenharmony_ci| INPUT_RESUME | 正常唤醒 | 
282e41f4b71Sopenharmony_ci| INPUT_SUSPEND | 休眠下电模式 | 
283e41f4b71Sopenharmony_ci| INPUT_LOW_POWER | 休眠低功耗模式 | 
284e41f4b71Sopenharmony_ci| INPUT_POWER_STATUS_UNKNOWN | 未知电源状态 | 
285e41f4b71Sopenharmony_ci
286e41f4b71Sopenharmony_ci
287e41f4b71Sopenharmony_ci### RetStatus
288e41f4b71Sopenharmony_ci
289e41f4b71Sopenharmony_ci```
290e41f4b71Sopenharmony_cienum RetStatus
291e41f4b71Sopenharmony_ci```
292e41f4b71Sopenharmony_ci
293e41f4b71Sopenharmony_ci**描述**
294e41f4b71Sopenharmony_ci
295e41f4b71Sopenharmony_ci
296e41f4b71Sopenharmony_ci定义返回值类型。
297e41f4b71Sopenharmony_ci
298e41f4b71Sopenharmony_ci**起始版本:** 1.0
299e41f4b71Sopenharmony_ci
300e41f4b71Sopenharmony_ci| 枚举值 | 描述 | 
301e41f4b71Sopenharmony_ci| -------- | -------- |
302e41f4b71Sopenharmony_ci| INPUT_SUCCESS | 成功 | 
303e41f4b71Sopenharmony_ci| INPUT_FAILURE | 失败 | 
304e41f4b71Sopenharmony_ci| INPUT_INVALID_PARAM | 无效参数 | 
305e41f4b71Sopenharmony_ci| INPUT_NOMEM | 内存不足 | 
306e41f4b71Sopenharmony_ci| INPUT_NULL_PTR | 空指针 | 
307e41f4b71Sopenharmony_ci| INPUT_TIMEOUT | 执行超时 | 
308e41f4b71Sopenharmony_ci| INPUT_UNSUPPORTED | 特性不支持 | 
309e41f4b71Sopenharmony_ci
310e41f4b71Sopenharmony_ci
311e41f4b71Sopenharmony_ci## 函数说明
312e41f4b71Sopenharmony_ci
313e41f4b71Sopenharmony_ci
314e41f4b71Sopenharmony_ci### GetInputInterface()
315e41f4b71Sopenharmony_ci
316e41f4b71Sopenharmony_ci```
317e41f4b71Sopenharmony_ciint32_t GetInputInterface (IInputInterface ** interface)
318e41f4b71Sopenharmony_ci```
319e41f4b71Sopenharmony_ci
320e41f4b71Sopenharmony_ci**描述**
321e41f4b71Sopenharmony_ci
322e41f4b71Sopenharmony_ci
323e41f4b71Sopenharmony_ciInput服务通过调用此接口获取操作Input设备的所有接口。
324e41f4b71Sopenharmony_ci
325e41f4b71Sopenharmony_ci**起始版本:** 1.0
326e41f4b71Sopenharmony_ci
327e41f4b71Sopenharmony_ci**参数:**
328e41f4b71Sopenharmony_ci
329e41f4b71Sopenharmony_ci| 名称 | 描述 | 
330e41f4b71Sopenharmony_ci| -------- | -------- |
331e41f4b71Sopenharmony_ci| interface | 对Input设备进行接口操作的指针,通常在Input服务启动后,通过调用此函数获取Input设备操作接口。 | 
332e41f4b71Sopenharmony_ci
333e41f4b71Sopenharmony_ci**返回:**
334e41f4b71Sopenharmony_ci
335e41f4b71Sopenharmony_ciINPUT_SUCCESS 表示执行成功。
336e41f4b71Sopenharmony_ci
337e41f4b71Sopenharmony_ci其他值表示执行失败,具体错误码查看[RetStatus](#retstatus)。
338