Skip to content

Commit cfa6ce5

Browse files
committed
Rework cdc_write
1 parent b9768e1 commit cfa6ce5

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

cores/esp32/USBCDC.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,15 @@ static size_t tinyusb_cdc_write(uint8_t itf, const uint8_t *buffer, size_t size)
8585
while(tosend){
8686
uint32_t space = tud_cdc_n_write_available(itf);
8787
if(!space){
88-
delay(1);
89-
continue;
88+
//make sure that we do not get previous semaphore
89+
xSemaphoreTake(devices[itf]->tx_sem, 0);
90+
//wait for tx_complete
91+
if(xSemaphoreTake(devices[itf]->tx_sem, 200 / portTICK_PERIOD_MS) == pdTRUE){
92+
space = tud_cdc_n_write_available(itf);
93+
}
94+
if(!space){
95+
return sofar;
96+
}
9097
}
9198
if(tosend < space){
9299
space = tosend;
@@ -98,7 +105,7 @@ static size_t tinyusb_cdc_write(uint8_t itf, const uint8_t *buffer, size_t size)
98105
sofar += sent;
99106
tosend -= sent;
100107
tud_cdc_n_write_flush(itf);
101-
xSemaphoreTake(devices[itf]->tx_sem, portMAX_DELAY);
108+
//xSemaphoreTake(devices[itf]->tx_sem, portMAX_DELAY);
102109
}
103110
return sofar;
104111
}

0 commit comments

Comments
 (0)