Просмотр исходного кода

Merge pull request #434 from gh2o/master

Add TX callback to CDC device
Ha Thach 5 лет назад
Родитель
Сommit
e5d622b749
2 измененных файлов с 6 добавлено и 0 удалено
  1. 3 0
      src/class/cdc/cdc_device.c
  2. 3 0
      src/class/cdc/cdc_device.h

+ 3 - 0
src/class/cdc/cdc_device.c

@@ -416,6 +416,9 @@ bool cdcd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_
   //       Though maybe the baudrate is not really important !!!
   if ( ep_addr == p_cdc->ep_in )
   {
+    // invoke transmit callback to possibly refill tx fifo
+    if ( tud_cdc_tx_complete_cb ) tud_cdc_tx_complete_cb(itf);
+
     if ( 0 == tud_cdc_n_write_flush(itf) )
     {
       // There is no data left, a ZLP should be sent if

+ 3 - 0
src/class/cdc/cdc_device.h

@@ -133,6 +133,9 @@ TU_ATTR_WEAK void tud_cdc_rx_cb(uint8_t itf);
 // Invoked when received `wanted_char`
 TU_ATTR_WEAK void tud_cdc_rx_wanted_cb(uint8_t itf, char wanted_char);
 
+// Invoked when space becomes available in TX buffer
+TU_ATTR_WEAK void tud_cdc_tx_complete_cb(uint8_t itf);
+
 // Invoked when line state DTR & RTS are changed via SET_CONTROL_LINE_STATE
 TU_ATTR_WEAK void tud_cdc_line_state_cb(uint8_t itf, bool dtr, bool rts);