revert to use pending_read_from_host (temp) since
This commit is contained in:
		| @@ -75,18 +75,23 @@ typedef struct | ||||
| //--------------------------------------------------------------------+ | ||||
| CFG_TUSB_MEM_SECTION static cdcd_interface_t _cdcd_itf[CFG_TUD_CDC] = { { 0 } }; | ||||
|  | ||||
| // TODO will be replaced by dcd_edpt_busy() | ||||
| bool pending_read_from_host; | ||||
| static void _prep_out_transaction (uint8_t itf) | ||||
| { | ||||
|   cdcd_interface_t* p_cdc = &_cdcd_itf[itf]; | ||||
|  | ||||
|   // skip if previous transfer not complete | ||||
|   if ( dcd_edpt_busy(TUD_OPT_RHPORT, p_cdc->ep_out) ) return; | ||||
|   // dcd_edpt_busy() doesn't work, probably transfer is complete but not properly handled by the stack | ||||
| //  if ( dcd_edpt_busy(TUD_OPT_RHPORT, p_cdc->ep_out) ) return; | ||||
|   if (pending_read_from_host) return; | ||||
|  | ||||
|   // Prepare for incoming data but only allow what we can store in the ring buffer. | ||||
|   uint16_t max_read = tu_fifo_remaining(&p_cdc->rx_ff); | ||||
|   if ( max_read >= CFG_TUD_CDC_EPSIZE ) | ||||
|   { | ||||
|     dcd_edpt_xfer(TUD_OPT_RHPORT, p_cdc->ep_out, p_cdc->epout_buf, CFG_TUD_CDC_EPSIZE); | ||||
|     pending_read_from_host = true; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -297,6 +302,7 @@ bool cdcd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t | ||||
|   } | ||||
|  | ||||
|   // Prepare for incoming data | ||||
|   pending_read_from_host = false; | ||||
|   _prep_out_transaction(cdc_id); | ||||
|  | ||||
|   return true; | ||||
| @@ -367,6 +373,7 @@ bool cdcd_control_request(uint8_t rhport, tusb_control_request_t const * request | ||||
|  | ||||
| bool cdcd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes) | ||||
| { | ||||
|   (void) rhport; | ||||
|   (void) result; | ||||
|  | ||||
|   // TODO Support multiple interfaces | ||||
| @@ -391,6 +398,7 @@ bool cdcd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_ | ||||
|     if (tud_cdc_rx_cb && tu_fifo_count(&p_cdc->rx_ff) ) tud_cdc_rx_cb(itf); | ||||
|  | ||||
|     // prepare for OUT transaction | ||||
|     pending_read_from_host = false; | ||||
|     _prep_out_transaction(itf); | ||||
|   } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 hathach
					hathach