summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/usbstack/usb_core.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/firmware/usbstack/usb_core.c b/firmware/usbstack/usb_core.c
index 738b92ed4d..8e32e3501f 100644
--- a/firmware/usbstack/usb_core.c
+++ b/firmware/usbstack/usb_core.c
@@ -950,12 +950,8 @@ void usb_core_transfer_complete(int endpoint, int dir, int status, int length)
950 struct usb_transfer_completion_event_data* completion_event = 950 struct usb_transfer_completion_event_data* completion_event =
951 &ep_data[endpoint].completion_event[EP_DIR(dir)]; 951 &ep_data[endpoint].completion_event[EP_DIR(dir)];
952 952
953 completion_event->endpoint = endpoint; 953 void* data0 = NULL;
954 completion_event->dir = dir; 954 void* data1 = NULL;
955 completion_event->data[0] = NULL;
956 completion_event->data[1] = NULL;
957 completion_event->status = status;
958 completion_event->length = length;
959 955
960#ifdef USB_LEGACY_CONTROL_API 956#ifdef USB_LEGACY_CONTROL_API
961 if(endpoint == EP_CONTROL) { 957 if(endpoint == EP_CONTROL) {
@@ -963,14 +959,21 @@ void usb_core_transfer_complete(int endpoint, int dir, int status, int length)
963 struct usb_ctrlrequest* req = active_request; 959 struct usb_ctrlrequest* req = active_request;
964 960
965 if(dir == USB_DIR_OUT && req && cwdd) { 961 if(dir == USB_DIR_OUT && req && cwdd) {
966 completion_event->data[0] = req; 962 data0 = req;
967 completion_event->data[1] = control_write_data; 963 data1 = control_write_data;
968 } else { 964 } else {
969 return; 965 return;
970 } 966 }
971 } 967 }
972#endif 968#endif
973 969
970 completion_event->endpoint = endpoint;
971 completion_event->dir = dir;
972 completion_event->data[0] = data0;
973 completion_event->data[1] = data1;
974 completion_event->status = status;
975 completion_event->length = length;
976
974 usb_signal_transfer_completion(completion_event); 977 usb_signal_transfer_completion(completion_event);
975} 978}
976 979