From 1e004bec789f1647523198435608eef97bbbbd81 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Thu, 19 May 2016 17:34:38 +0900 Subject: [PATCH] Fix reGNUal upgrade --- ChangeLog | 4 ++++ src/usb-ccid.c | 8 ++++++++ src/usb_ctrl.c | 3 ++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 27ae6c3..0119aea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,10 @@ 2016-05-19 Niibe Yutaka + * src/usb_ctrl.c (usb_cb_ctrl_write_finish): Set bDeviceState. + * src/usb-ccid.c: Rename from usb-icc.c. + (ccid_thread): Handle reGNUal upgrade. + * src/Makefile.in (CSRC): Follow the change. * chopstx: Update to 0.11. diff --git a/src/usb-ccid.c b/src/usb-ccid.c index 11c091e..16e2849 100644 --- a/src/usb-ccid.c +++ b/src/usb-ccid.c @@ -1370,6 +1370,7 @@ ccid_usb_reset (void) void * ccid_thread (void *arg) { + extern uint32_t bDeviceState; chopstx_intr_t interrupt; uint32_t timeout; @@ -1511,6 +1512,13 @@ ccid_thread (void *arg) c->application = 0; } + /* Loading reGNUal. */ + while (bDeviceState != UNCONNECTED) + { + chopstx_poll (NULL, 1, &interrupt); + usb_interrupt_handler (); + } + return NULL; } diff --git a/src/usb_ctrl.c b/src/usb_ctrl.c index e558d3a..42f6529 100644 --- a/src/usb_ctrl.c +++ b/src/usb_ctrl.c @@ -391,6 +391,7 @@ usb_cb_ctrl_write_finish (uint8_t req, uint8_t req_no, struct req_args *arg) { uint8_t type_rcp = req & (REQUEST_TYPE|RECIPIENT); + (void)arg; if (type_rcp == (VENDOR_REQUEST | DEVICE_RECIPIENT)) { if (USB_SETUP_SET (req) && req_no == USB_FSIJ_GNUK_EXEC) @@ -398,7 +399,7 @@ usb_cb_ctrl_write_finish (uint8_t req, uint8_t req_no, struct req_args *arg) if (*icc_state_p != ICC_STATE_EXITED) return; - (void)arg; + bDeviceState = UNCONNECTED; usb_lld_prepare_shutdown (); /* No further USB communication */ led_blink (LED_GNUK_EXEC); /* Notify the main. */ }