44 size_t tx_queue_size = 5,
48 :
CDCUart(rx_buffer_size, tx_buffer_size, tx_queue_size, data_in_ep_num,
49 data_out_ep_num, comm_ep_num),
50 rx_buffer_(new uint8_t[rx_buffer_size], rx_buffer_size),
51 tx_buffer_(new uint8_t[tx_buffer_size], tx_buffer_size),
61 [](
bool in_isr,
CDCToUart* cdc_to_uart, ErrorCode)
68 op_read_cdc_noblock, in_isr);
69 ASSERT(ans == ErrorCode::OK);
73 ASSERT(ans == ErrorCode::OK);
82 [](
bool in_isr,
CDCToUart* cdc_to_uart, ErrorCode)
84 auto ans = cdc_to_uart->Read({
nullptr, 0}, cdc_to_uart->
op_read_cdc_, in_isr);
85 ASSERT(ans == ErrorCode::OK);
94 [](
bool in_isr,
CDCToUart* cdc_to_uart, ErrorCode)
101 op_read_uart_noblock, in_isr);
102 ASSERT(ans == ErrorCode::OK);
106 ASSERT(ans == ErrorCode::OK);
115 [](
bool in_isr,
CDCToUart* cdc_to_uart, ErrorCode)
119 ASSERT(ans_uart_read == ErrorCode::OK);
通用回调包装,支持动态参数传递 / Generic callback wrapper supporting dynamic argument passing
static Callback Create(FunType fun, ArgType arg)
创建回调对象并绑定回调函数与参数 / Create a callback instance with bound function and argument
size_t MaxSize() const
获取队列的最大容量 / Returns the maximum capacity of the queue
原始数据封装类。 A class for encapsulating raw data.
size_t size_
数据大小(字节)。 The size of the data (in bytes).
void * addr_
数据存储地址。 The storage address of the data.
size_t Size()
获取当前队列的已使用大小。 Gets the currently used size of the queue.
通用异步收发传输(UART)基类 / Abstract base class for Universal Asynchronous Receiver-Transmitter (UART)
ReadPort * read_port_
读取端口 / Read port
virtual ErrorCode SetConfig(Configuration config)=0
设置 UART 配置 / Sets the UART configuration
WritePort * write_port_
写入端口 / Write port
void SetOnSetLineCodingCallback(LibXR::Callback< LibXR::UART::Configuration > cb)
设置线路编码变更回调 Set line coding change callback
CDC 与 UART 双向桥接器(CDC<->UART) / Bidirectional bridge between USB CDC and UART.
CDCToUart(LibXR::UART &uart, size_t rx_buffer_size=128, size_t tx_buffer_size=128, size_t tx_queue_size=5, Endpoint::EPNumber data_in_ep_num=Endpoint::EPNumber::EP_AUTO, Endpoint::EPNumber data_out_ep_num=Endpoint::EPNumber::EP_AUTO, Endpoint::EPNumber comm_ep_num=Endpoint::EPNumber::EP_AUTO)
构造函数 / Constructor
LibXR::Callback< ErrorCode > cb_uart_read_
UART 读完成回调 / UART read callback.
LibXR::WriteOperation op_write_uart_
UART 写操作句柄 / UART write operation.
LibXR::ReadOperation op_read_uart_
UART 读操作句柄 / UART read operation.
LibXR::ReadOperation op_read_cdc_
CDC 读操作句柄 / CDC read operation.
LibXR::Callback< ErrorCode > cb_cdc_write_
CDC 写完成回调 / CDC write-complete callback.
RawData tx_buffer_
UART->CDC 临时缓存 / Temp buffer for UART->CDC.
RawData rx_buffer_
CDC->UART 临时缓存 / Temp buffer for CDC->UART.
LibXR::Callback< LibXR::UART::Configuration > set_line_coding_cb_
LineCoding 同步回调 / Line coding sync callback.
LibXR::Callback< ErrorCode > cb_uart_write_
UART 写完成回调 / UART write-complete callback.
LibXR::Callback< ErrorCode > cb_read_cdc_
CDC 读完成回调 / CDC read callback.
LibXR::WriteOperation op_write_cdc_
CDC 写操作句柄 / CDC write operation.
LibXR::UART & uart_
被桥接的 UART 引用 / Bridged UART reference
USB CDC-ACM UART 适配器 USB CDC-ACM UART adapter.
EPNumber
端点号 Endpoint number
@ EP_AUTO
自动分配端点号 / Auto allocate
Operation< ErrorCode > ReadOperation
Read operation type.
constexpr auto min(T1 a, T2 b) -> typename std::common_type< T1, T2 >::type
计算两个数的最小值
Operation< ErrorCode > WriteOperation
Write operation type.
UART 配置结构体 / UART configuration structure.