18 uint32_t tx_stack_depth = 2048,
int rx_task_prio = 10,
19 uint32_t rx_stack_depth = 2048)
20 :
UART(&_read_port, &_write_port),
21 _read_port(BUFFER_SIZE),
22 _write_port(tx_queue_size, BUFFER_SIZE)
24 usb_serial_jtag_driver_config_t cfg = {
25 .tx_buffer_size = BUFFER_SIZE,
26 .rx_buffer_size = BUFFER_SIZE,
28 ESP_ERROR_CHECK(usb_serial_jtag_driver_install(&cfg));
33 xTaskCreate(TxTaskWrapper,
"esp32_vuart_tx", tx_stack_depth,
this, tx_task_prio,
35 xTaskCreate(RxTaskWrapper,
"esp32_vuart_rx", rx_stack_depth,
this, rx_task_prio,
39 static void TxTaskWrapper(
void *arg)
45 static void RxTaskWrapper(
void *arg)
57 if (uart->write_sem_.
Wait() != ErrorCode::OK)
61 if (uart->
write_port_->queue_info_->Pop(info) != ErrorCode::OK)
74 usb_serial_jtag_write_bytes(uart->tx_buffer_, info.data.
size_, portMAX_DELAY);
75 if (sent == info.data.
size_)
94 auto avail = usb_serial_jtag_read_ready();
98 len = usb_serial_jtag_read_bytes(uart->rx_buffer_, 1, portMAX_DELAY);
102 len = usb_serial_jtag_read_bytes(uart->rx_buffer_, BUFFER_SIZE, 0);
115 uart->write_sem_.
Post();
117 return ErrorCode::FAILED;
124 return ErrorCode::EMPTY;
130 uint8_t tx_buffer_[BUFFER_SIZE];
131 uint8_t rx_buffer_[BUFFER_SIZE];
void Finish(bool in_isr, ErrorCode ans, WriteInfoBlock &info, uint32_t size)
更新写入操作的状态。 Updates the status of the write operation.