| int usb_serial_write_buffer_free(void) | int usb_serial_write_buffer_free(void) | ||||
| { | { | ||||
| #if 0 | |||||
| uint32_t len; | |||||
| uint32_t sum = 0; | |||||
| tx_noautoflush = 1; | tx_noautoflush = 1; | ||||
| if (!tx_packet) { | |||||
| if (!usb_configuration || | |||||
| usb_tx_packet_count(CDC_TX_ENDPOINT) >= TX_PACKET_LIMIT || | |||||
| (tx_packet = usb_malloc()) == NULL) { | |||||
| tx_noautoflush = 0; | |||||
| return 0; | |||||
| } | |||||
| for (uint32_t i=0; i < TX_NUM; i++) { | |||||
| if (i == tx_head) continue; | |||||
| if (!(usb_transfer_status(tx_transfer + i) & 0x80)) sum += TX_SIZE; | |||||
| } | } | ||||
| len = CDC_TX_SIZE - tx_packet->index; | |||||
| // TODO: Perhaps we need "usb_cdc_transmit_flush_timer = TRANSMIT_FLUSH_TIMEOUT" | |||||
| // added here, so the SOF interrupt can't take away the available buffer | |||||
| // space we just promised the user could write without blocking? | |||||
| // But does this come with other performance downsides? Could it lead to | |||||
| // buffer data never actually transmitting in some usage cases? More | |||||
| // investigation is needed. | |||||
| // https://github.com/PaulStoffregen/cores/issues/10#issuecomment-61514955 | |||||
| tx_noautoflush = 0; | tx_noautoflush = 0; | ||||
| return len; | |||||
| #endif | |||||
| return 0; | |||||
| return sum; | |||||
| } | } | ||||
| void usb_serial_flush_output(void) | void usb_serial_flush_output(void) |