aboutsummaryrefslogtreecommitdiff
path: root/src/platforms/stm32
diff options
context:
space:
mode:
Diffstat (limited to 'src/platforms/stm32')
-rw-r--r--src/platforms/stm32/gdb_if.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/platforms/stm32/gdb_if.c b/src/platforms/stm32/gdb_if.c
index 030205a..3ea7d14 100644
--- a/src/platforms/stm32/gdb_if.c
+++ b/src/platforms/stm32/gdb_if.c
@@ -54,8 +54,12 @@ void gdb_if_putchar(unsigned char c, int flush)
void gdb_usb_out_cb(usbd_device *dev, uint8_t ep)
{
(void)ep;
+ usbd_ep_nak_set(dev, CDCACM_GDB_ENDPOINT, 1);
count_new = usbd_ep_read_packet(dev, CDCACM_GDB_ENDPOINT,
double_buffer_out, CDCACM_PACKET_SIZE);
+ if(!count_new) {
+ usbd_ep_nak_set(dev, CDCACM_GDB_ENDPOINT, 0);
+ }
}
unsigned char gdb_if_getchar(void)
@@ -72,6 +76,7 @@ unsigned char gdb_if_getchar(void)
count_out = count_new;
count_new = 0;
out_ptr = 0;
+ usbd_ep_nak_set(usbdev, CDCACM_GDB_ENDPOINT, 0);
}
}
@@ -93,6 +98,7 @@ unsigned char gdb_if_getchar_to(int timeout)
count_out = count_new;
count_new = 0;
out_ptr = 0;
+ usbd_ep_nak_set(usbdev, CDCACM_GDB_ENDPOINT, 0);
}
} while(timeout_counter && !(out_ptr < count_out));