Skip to content

Commit d9c507f

Browse files
committed
dap_edpt_driver: handle deinit properly
Zap pending buffers if the interface went away. Also fix -Wformat warnings. Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
1 parent 6d2f83e commit d9c507f

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

src/tusb_edpt_handler.c

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,15 @@ void dap_edpt_init(void) {
4141

4242
}
4343

44+
bool dap_edpt_deinit(void)
45+
{
46+
memset(DAPRequestBuffer, 0, sizeof(DAPRequestBuffer));
47+
memset(DAPResponseBuffer, 0, sizeof(DAPResponseBuffer));
48+
USBRequestBuffer.wptr = USBRequestBuffer.rptr = 0;
49+
USBResponseBuffer.wptr = USBResponseBuffer.rptr = 0;
50+
return true;
51+
}
52+
4453
void dap_edpt_reset(uint8_t __unused rhport)
4554
{
4655
itf_num = 0;
@@ -198,7 +207,7 @@ void dap_thread(void *ptr)
198207
*/
199208
n = USBRequestBuffer.rptr;
200209
while (USBRequestBuffer.data[n % DAP_PACKET_COUNT][0] == ID_DAP_QueueCommands) {
201-
probe_info("%u %u DAP queued cmd %s len %02x\n",
210+
probe_info("%lu %lu DAP queued cmd %s len %02x\n",
202211
USBRequestBuffer.wptr, USBRequestBuffer.rptr,
203212
dap_cmd_string[USBRequestBuffer.data[n % DAP_PACKET_COUNT][0]], USBRequestBuffer.data[n % DAP_PACKET_COUNT][1]);
204213
USBRequestBuffer.data[n % DAP_PACKET_COUNT][0] = ID_DAP_ExecuteCommands;
@@ -211,7 +220,7 @@ void dap_thread(void *ptr)
211220
}
212221
// Read a single packet from the USB buffer into the DAP Request buffer
213222
memcpy(DAPRequestBuffer, RD_SLOT_PTR(USBRequestBuffer), DAP_PACKET_SIZE);
214-
probe_info("%u %u DAP cmd %s len %02x\n",
223+
probe_info("%lu %lu DAP cmd %s len %02x\n",
215224
USBRequestBuffer.wptr, USBRequestBuffer.rptr,
216225
dap_cmd_string[DAPRequestBuffer[0]], DAPRequestBuffer[1]);
217226
USBRequestBuffer.rptr++;
@@ -227,7 +236,7 @@ void dap_thread(void *ptr)
227236
}
228237

229238
_resp_len = DAP_ExecuteCommand(DAPRequestBuffer, DAPResponseBuffer);
230-
probe_info("%u %u DAP resp %s\n",
239+
probe_info("%lu %lu DAP resp %s\n",
231240
USBResponseBuffer.wptr, USBResponseBuffer.rptr,
232241
dap_cmd_string[DAPResponseBuffer[0]]);
233242

@@ -262,6 +271,7 @@ void dap_thread(void *ptr)
262271
usbd_class_driver_t const _dap_edpt_driver =
263272
{
264273
.init = dap_edpt_init,
274+
.deinit = dap_edpt_deinit,
265275
.reset = dap_edpt_reset,
266276
.open = dap_edpt_open,
267277
.control_xfer_cb = dap_edpt_control_xfer_cb,

0 commit comments

Comments
 (0)