libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
tinyusb_virtual_uart.hpp
1#pragma once
2
3#include "libxr_def.hpp"
4#include "libxr_rw.hpp"
5#include "tusb.h"
6#include "uart.hpp"
7
8namespace LibXR
9{
10
11class TinyUSBVirtualUART;
12
13// Read端口
15{
16 public:
17 TinyUSBUARTReadPort(TinyUSBVirtualUART *uart) : ReadPort(0), uart_(uart) {}
18
19 size_t EmptySize();
20 size_t Size();
21 void ProcessPendingReads(bool in_isr = true);
22 void Reset() { read_size_ = 0; }
23
24 using ReadPort::operator=;
25
26 private:
27 TinyUSBVirtualUART *uart_;
28};
29
30// Write端口
32{
33 public:
34 TinyUSBUARTWritePort(TinyUSBVirtualUART *uart) : WritePort(1, 0), uart_(uart) {}
35
36 size_t EmptySize();
37 size_t Size();
38 void Reset() { write_size_ = 0; }
39
40 using WritePort::operator=;
41
42 private:
43 TinyUSBVirtualUART *uart_;
44};
45
46// 主类
48{
49 public:
51
52 static ErrorCode WriteFun(WritePort &port);
53 static ErrorCode ReadFun(ReadPort &port);
54 ErrorCode SetConfig(UART::Configuration config) override;
55
56 void Poll() { tud_task(); }
57 size_t Available() const { return tud_cdc_available(); }
58 bool Connected() const { return tud_cdc_connected(); }
59
60 TinyUSBUARTReadPort _read_port;
61 TinyUSBUARTWritePort _write_port;
62
65 friend void tud_cdc_rx_cb(uint8_t itf);
66
67 static inline TinyUSBVirtualUART *self;
68
69 private:
70 size_t packet_size_;
71 bool reading_;
72};
73
74} // namespace LibXR
ReadPort class for handling read operations.
Definition libxr_rw.hpp:270
ReadPort(size_t buffer_size=128)
Constructs a ReadPort with queue sizes.
Definition libxr_rw.hpp:292
size_t Size()
获取当前已用空间(接收数据量)
void Reset()
Resets the ReadPort.
size_t EmptySize()
返回FIFO可用空间(空余字节数)
void ProcessPendingReads(bool in_isr=true)
处理等待中的读操作
size_t Size()
获取已写入空间(写入但未发送的字节数)
void Reset()
Resets the WritePort.
size_t EmptySize()
返回FIFO可写空间(空余字节数)
ErrorCode SetConfig(UART::Configuration config) override
配置CDC,无实际动作
TinyUSBVirtualUART()
TinyUSB虚拟串口构造
friend void tud_cdc_rx_cb(uint8_t itf)
CDC 接收回调(由TinyUSB调用)
通用异步收发传输(UART)基类 / Abstract base class for Universal Asynchronous Receiver-Transmitter (UART)
Definition uart.hpp:19
WritePort class for handling write operations.
Definition libxr_rw.hpp:564
WritePort(size_t queue_size=3, size_t buffer_size=128)
构造一个新的 WritePort 对象。 Constructs a new WritePort object.
Definition libxr_rw.hpp:585
LibXR 命名空间
Definition ch32_gpio.hpp:9
ErrorCode(* ReadFun)(ReadPort &port)
Function pointer type for read operations.
Definition libxr_rw.hpp:247
ErrorCode(* WriteFun)(WritePort &port)
Function pointer type for write operations.
Definition libxr_rw.hpp:243
UART 配置结构体 / UART configuration structure.
Definition uart.hpp:44