Procházet zdrojové kódy

CMSIS-DAP: Update DAP VCOM implementation (improve data receive)

Robert Rostohar před 4 roky
rodič
revize
428d7a1a78

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 4071 - 4071
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/Objects/CMSIS_DAP.hex


+ 4 - 4
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/USBD_User_CDC_ACM_UART_0.c

@@ -243,10 +243,10 @@ __NO_RETURN static void CDC0_ACM_UART_to_USB_Thread (void *arg) {
       cnt  = uart_rx_cnt;
       cnt += (int32_t)ptrUART->GetRxCount();
       cnt -= usb_tx_cnt;
-      if (cnt >= UART_BUFFER_SIZE) {
-        // Dump data received on UART if USB is not consuming fast enough
-        usb_tx_cnt += cnt;
-        cnt = 0U;
+      if (cnt >= (UART_BUFFER_SIZE - 32)) {
+        // Dump old data in UART receive buffer if USB is not consuming fast enough
+        cnt = (UART_BUFFER_SIZE - 32);
+        usb_tx_cnt = uart_rx_cnt - (UART_BUFFER_SIZE - 32);
       }
       if (cnt > 0) {
         cnt_to_wrap = (int32_t)(UART_BUFFER_SIZE - ((uint32_t)usb_tx_cnt & (UART_BUFFER_SIZE - 1)));

+ 4 - 4
CMSIS/DAP/Firmware/Template/MDK5/USBD_User_CDC_ACM_UART_0.c

@@ -243,10 +243,10 @@ __NO_RETURN static void CDC0_ACM_UART_to_USB_Thread (void *arg) {
       cnt  = uart_rx_cnt;
       cnt += (int32_t)ptrUART->GetRxCount();
       cnt -= usb_tx_cnt;
-      if (cnt >= UART_BUFFER_SIZE) {
-        // Dump data received on UART if USB is not consuming fast enough
-        usb_tx_cnt += cnt;
-        cnt = 0U;
+      if (cnt >= (UART_BUFFER_SIZE - 32)) {
+        // Dump old data in UART receive buffer if USB is not consuming fast enough
+        cnt = (UART_BUFFER_SIZE - 32);
+        usb_tx_cnt = uart_rx_cnt - (UART_BUFFER_SIZE - 32);
       }
       if (cnt > 0) {
         cnt_to_wrap = (int32_t)(UART_BUFFER_SIZE - ((uint32_t)usb_tx_cnt & (UART_BUFFER_SIZE - 1)));

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů