mirror of
https://github.com/espressif/esp-idf.git
synced 2025-09-23 01:05:14 +00:00
refactor(usb): Update USBH event callback arguments
This commit does the following: - Updates the USBH event callback arguments to now pass a usbh_event_data_t which can contain different data for each event - Updated event names
This commit is contained in:
@@ -275,33 +275,28 @@ static void ctrl_xfer_callback(usb_device_handle_t dev_hdl, urb_t *urb, void *ar
|
||||
HOST_EXIT_CRITICAL();
|
||||
}
|
||||
|
||||
static void dev_event_callback(usb_device_handle_t dev_hdl, usbh_event_t usbh_event, void *arg)
|
||||
static void usbh_event_callback(usbh_event_data_t *event_data, void *arg)
|
||||
{
|
||||
// Check usbh_event. The data type of event_arg depends on the type of event
|
||||
switch (usbh_event) {
|
||||
case USBH_EVENT_DEV_NEW: {
|
||||
switch (event_data->event) {
|
||||
case USBH_EVENT_NEW_DEV: {
|
||||
// Prepare a NEW_DEV client event message, the send it to all clients
|
||||
uint8_t dev_addr;
|
||||
ESP_ERROR_CHECK(usbh_dev_get_addr(dev_hdl, &dev_addr));
|
||||
usb_host_client_event_msg_t event_msg = {
|
||||
.event = USB_HOST_CLIENT_EVENT_NEW_DEV,
|
||||
.new_dev.address = dev_addr,
|
||||
.new_dev.address = event_data->new_dev_data.dev_addr,
|
||||
};
|
||||
send_event_msg_to_clients(&event_msg, true, 0);
|
||||
break;
|
||||
}
|
||||
case USBH_EVENT_DEV_GONE: {
|
||||
// Prepare event msg, send only to clients that have opened the device
|
||||
uint8_t dev_addr;
|
||||
ESP_ERROR_CHECK(usbh_dev_get_addr(dev_hdl, &dev_addr));
|
||||
usb_host_client_event_msg_t event_msg = {
|
||||
.event = USB_HOST_CLIENT_EVENT_DEV_GONE,
|
||||
.dev_gone.dev_hdl = dev_hdl,
|
||||
.dev_gone.dev_hdl = event_data->dev_gone_data.dev_hdl,
|
||||
};
|
||||
send_event_msg_to_clients(&event_msg, false, dev_addr);
|
||||
send_event_msg_to_clients(&event_msg, false, event_data->dev_gone_data.dev_addr);
|
||||
break;
|
||||
}
|
||||
case USBH_EVENT_DEV_ALL_FREE: {
|
||||
case USBH_EVENT_ALL_FREE: {
|
||||
// Notify the lib handler that all devices are free
|
||||
HOST_ENTER_CRITICAL();
|
||||
p_host_lib_obj->dynamic.lib_event_flags |= USB_HOST_LIB_EVENT_FLAGS_ALL_FREE;
|
||||
@@ -401,7 +396,7 @@ esp_err_t usb_host_install(const usb_host_config_t *config)
|
||||
.proc_req_cb_arg = NULL,
|
||||
.ctrl_xfer_cb = ctrl_xfer_callback,
|
||||
.ctrl_xfer_cb_arg = NULL,
|
||||
.event_cb = dev_event_callback,
|
||||
.event_cb = usbh_event_callback,
|
||||
.event_cb_arg = NULL,
|
||||
};
|
||||
ret = usbh_install(&usbh_config);
|
||||
|
Reference in New Issue
Block a user