Zephyr API Documentation  3.5.0
A Scalable Open Source RTOS
3.5.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
usb_hid.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2018 Intel Corporation
3 * Copyright (c) 2018,2021 Nordic Semiconductor ASA
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
13#ifndef ZEPHYR_INCLUDE_USB_HID_CLASS_DEVICE_H_
14#define ZEPHYR_INCLUDE_USB_HID_CLASS_DEVICE_H_
15
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
34typedef int (*hid_cb_t)(const struct device *dev,
35 struct usb_setup_packet *setup, int32_t *len,
36 uint8_t **data);
37typedef void (*hid_int_ready_callback)(const struct device *dev);
38typedef void (*hid_protocol_cb_t)(const struct device *dev, uint8_t protocol);
39typedef void (*hid_idle_cb_t)(const struct device *dev, uint16_t report_id);
40
44struct hid_ops {
49 /*
50 * int_in_ready is an optional callback that is called when
51 * the current interrupt IN transfer has completed. This can
52 * be used to wait for the endpoint to go idle or to trigger
53 * the next transfer.
54 */
56#ifdef CONFIG_ENABLE_HID_INT_OUT_EP
57 hid_int_ready_callback int_out_ready;
58#endif
59};
60
69void usb_hid_register_device(const struct device *dev,
70 const uint8_t *desc,
71 size_t size,
72 const struct hid_ops *op);
73
84int hid_int_ep_write(const struct device *dev,
85 const uint8_t *data,
86 uint32_t data_len,
87 uint32_t *bytes_ret);
88
101int hid_int_ep_read(const struct device *dev,
102 uint8_t *data,
103 uint32_t max_data_len,
104 uint32_t *ret_bytes);
105
116int usb_hid_set_proto_code(const struct device *dev, uint8_t proto_code);
117
125int usb_hid_init(const struct device *dev);
126
135#ifdef __cplusplus
136}
137#endif
138
139#endif /* ZEPHYR_INCLUDE_USB_HID_CLASS_DEVICE_H_ */
int(* hid_cb_t)(const struct device *dev, struct usb_setup_packet *setup, int32_t *len, uint8_t **data)
Definition: usb_hid.h:34
void(* hid_idle_cb_t)(const struct device *dev, uint16_t report_id)
Definition: usb_hid.h:39
int hid_int_ep_read(const struct device *dev, uint8_t *data, uint32_t max_data_len, uint32_t *ret_bytes)
Read from USB HID interrupt endpoint buffer.
int usb_hid_init(const struct device *dev)
Initialize USB HID class support.
void usb_hid_register_device(const struct device *dev, const uint8_t *desc, size_t size, const struct hid_ops *op)
Register HID device.
int hid_int_ep_write(const struct device *dev, const uint8_t *data, uint32_t data_len, uint32_t *bytes_ret)
Write to USB HID interrupt endpoint buffer.
void(* hid_protocol_cb_t)(const struct device *dev, uint8_t protocol)
Definition: usb_hid.h:38
void(* hid_int_ready_callback)(const struct device *dev)
Definition: usb_hid.h:37
int usb_hid_set_proto_code(const struct device *dev, uint8_t proto_code)
Set USB HID class Protocol Code.
USB Human Interface Device (HID) common definitions header.
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__INT32_TYPE__ int32_t
Definition: stdint.h:74
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
Runtime device structure (in ROM) per driver instance.
Definition: device.h:381
USB HID device interface.
Definition: usb_hid.h:44
hid_idle_cb_t on_idle
Definition: usb_hid.h:48
hid_cb_t get_report
Definition: usb_hid.h:45
hid_cb_t set_report
Definition: usb_hid.h:46
hid_protocol_cb_t protocol_change
Definition: usb_hid.h:47
hid_int_ready_callback int_in_ready
Definition: usb_hid.h:55
USB Setup Data packet defined in spec.
Definition: usb_ch9.h:39