libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
cdc_test.hpp
1#pragma once
2#include <cstring>
3
4#include "cdc_base.hpp"
5
6namespace LibXR::USB
7{
8
21class CDCWriteTest : public CDCBase
22{
23 public:
25 Endpoint::EPNumber data_in_ep_num, Endpoint::EPNumber data_out_ep_num,
26 Endpoint::EPNumber comm_ep_num,
27 const char* control_interface_string = CDCBase::DEFAULT_CONTROL_INTERFACE_STRING,
28 const char* data_interface_string = CDCBase::DEFAULT_DATA_INTERFACE_STRING)
29 : CDCBase(data_in_ep_num, data_out_ep_num, comm_ep_num, control_interface_string,
30 data_interface_string)
31 {
32 }
33
34 void BindEndpoints(EndpointPool& endpoint_pool, uint8_t start_itf_num,
35 bool in_isr) override
36 {
37 CDCBase::BindEndpoints(endpoint_pool, start_itf_num, in_isr);
38 }
39
48 void OnDataOutComplete(bool in_isr, ConstRawData& data) override
49 {
50 UNUSED(in_isr);
51 UNUSED(data);
52 if (IsDtrSet())
53 {
54 auto ep_data_in = GetDataInEndpoint();
55 ep_data_in->Transfer(ep_data_in->MaxTransferSize());
56 }
57 }
58
66 void OnDataInComplete(bool in_isr, ConstRawData& data) override
67 {
68 UNUSED(in_isr);
69 UNUSED(data);
70
71 if (IsDtrSet())
72 {
73 auto ep_data_in = GetDataInEndpoint();
74 ep_data_in->Transfer(ep_data_in->MaxTransferSize());
75 }
76 }
77};
78
91class CDCReadTest : public CDCBase
92{
93 public:
95 Endpoint::EPNumber data_in_ep_num, Endpoint::EPNumber data_out_ep_num,
96 Endpoint::EPNumber comm_ep_num,
97 const char* control_interface_string = CDCBase::DEFAULT_CONTROL_INTERFACE_STRING,
98 const char* data_interface_string = CDCBase::DEFAULT_DATA_INTERFACE_STRING)
99 : CDCBase(data_in_ep_num, data_out_ep_num, comm_ep_num, control_interface_string,
100 data_interface_string)
101 {
102 }
103
111 void BindEndpoints(EndpointPool& endpoint_pool, uint8_t start_itf_num,
112 bool in_isr) override
113 {
114 CDCBase::BindEndpoints(endpoint_pool, start_itf_num, in_isr);
115 auto ep_data_out = GetDataOutEndpoint();
116 ep_data_out->Transfer(ep_data_out->MaxTransferSize());
117 }
118
126 void OnDataOutComplete(bool in_isr, ConstRawData& data) override
127 {
128 UNUSED(in_isr);
129 UNUSED(data);
130
131 auto ep_data_out = GetDataOutEndpoint();
132 ep_data_out->Transfer(ep_data_out->MaxTransferSize());
133 }
134
142 void OnDataInComplete(bool in_isr, ConstRawData& data) override
143 {
144 UNUSED(in_isr);
145 UNUSED(data);
146 }
147};
148
149} // namespace LibXR::USB
只读原始数据视图 / Immutable raw data view
USB CDC ACM (Abstract Control Model) 设备类实现 USB CDC ACM (Abstract Control Model) device class implemen...
Definition cdc_base.hpp:24
virtual void BindEndpoints(EndpointPool &endpoint_pool, uint8_t start_itf_num, bool) override
初始化CDC设备 Initialize CDC device
Definition cdc_base.hpp:256
CDCBase(Endpoint::EPNumber data_in_ep_num, Endpoint::EPNumber data_out_ep_num, Endpoint::EPNumber comm_ep_num, const char *control_interface_string=DEFAULT_CONTROL_INTERFACE_STRING, const char *data_interface_string=DEFAULT_DATA_INTERFACE_STRING)
CDC构造函数 CDC constructor.
Definition cdc_base.hpp:137
bool IsDtrSet() const
检查DTR状态 Check DTR state
Definition cdc_base.hpp:169
USB CDC ACM 读测试类 USB CDC ACM read test class.
Definition cdc_test.hpp:92
void OnDataOutComplete(bool in_isr, ConstRawData &data) override
OUT 端点完成回调(读测试:持续接收) Data OUT complete callback (read test: continuous receive)
Definition cdc_test.hpp:126
void OnDataInComplete(bool in_isr, ConstRawData &data) override
IN 端点完成回调(读测试:无操作) Data IN complete callback (read test: no-op)
Definition cdc_test.hpp:142
void BindEndpoints(EndpointPool &endpoint_pool, uint8_t start_itf_num, bool in_isr) override
初始化 CDC 读测试类:预装 OUT 端点接收 Initialize CDC read test: pre-arm OUT endpoint
Definition cdc_test.hpp:111
USB CDC ACM 写测试类 USB CDC ACM write test class.
Definition cdc_test.hpp:22
void BindEndpoints(EndpointPool &endpoint_pool, uint8_t start_itf_num, bool in_isr) override
初始化CDC设备 Initialize CDC device
Definition cdc_test.hpp:34
void OnDataInComplete(bool in_isr, ConstRawData &data) override
IN 端点完成回调(写测试:再次触发发送) Data IN complete callback (write test: trigger next send)
Definition cdc_test.hpp:66
void OnDataOutComplete(bool in_isr, ConstRawData &data) override
OUT 端点完成回调(写测试无实际消费) Data OUT complete callback (no-op for write test)
Definition cdc_test.hpp:48
EPNumber
端点号 Endpoint number
Definition ep.hpp:42
USB端点池类 / USB endpoint pool class.
Definition ep_pool.hpp:29