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:
28 const char* control_interface_string = CDCBase::DEFAULT_CONTROL_INTERFACE_STRING,
29 const char* data_interface_string = CDCBase::DEFAULT_DATA_INTERFACE_STRING)
30 : CDCBase(data_in_ep_num, data_out_ep_num, comm_ep_num, control_interface_string,
31 data_interface_string)
32 {
33 }
34
35 void BindEndpoints(EndpointPool& endpoint_pool, uint8_t start_itf_num,
36 bool in_isr) override
37 {
38 CDCBase::BindEndpoints(endpoint_pool, start_itf_num, in_isr);
39 }
40
49 void OnDataOutComplete(bool in_isr, ConstRawData& data) override
50 {
51 UNUSED(in_isr);
52 UNUSED(data);
53 if (IsDtrSet())
54 {
55 auto ep_data_in = GetDataInEndpoint();
56 ep_data_in->Transfer(ep_data_in->MaxTransferSize());
57 }
58 }
59
67 void OnDataInComplete(bool in_isr, ConstRawData& data) override
68 {
69 UNUSED(in_isr);
70 UNUSED(data);
71
72 if (IsDtrSet())
73 {
74 auto ep_data_in = GetDataInEndpoint();
75 ep_data_in->Transfer(ep_data_in->MaxTransferSize());
76 }
77 }
78};
79
92class CDCReadTest : public CDCBase
93{
94 public:
99 const char* control_interface_string = CDCBase::DEFAULT_CONTROL_INTERFACE_STRING,
100 const char* data_interface_string = CDCBase::DEFAULT_DATA_INTERFACE_STRING)
101 : CDCBase(data_in_ep_num, data_out_ep_num, comm_ep_num, control_interface_string,
102 data_interface_string)
103 {
104 }
105
113 void BindEndpoints(EndpointPool& endpoint_pool, uint8_t start_itf_num,
114 bool in_isr) override
115 {
116 CDCBase::BindEndpoints(endpoint_pool, start_itf_num, in_isr);
117 auto ep_data_out = GetDataOutEndpoint();
118 ep_data_out->Transfer(ep_data_out->MaxTransferSize());
119 }
120
128 void OnDataOutComplete(bool in_isr, ConstRawData& data) override
129 {
130 UNUSED(in_isr);
131 UNUSED(data);
132
133 auto ep_data_out = GetDataOutEndpoint();
134 ep_data_out->Transfer(ep_data_out->MaxTransferSize());
135 }
136
144 void OnDataInComplete(bool in_isr, ConstRawData& data) override
145 {
146 UNUSED(in_isr);
147 UNUSED(data);
148 }
149};
150
151} // namespace LibXR::USB
常量原始数据封装类。 A class for encapsulating constant raw data.
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:255
CDCBase(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, 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:170
USB CDC ACM 读测试类 USB CDC ACM read test class.
Definition cdc_test.hpp:93
void OnDataOutComplete(bool in_isr, ConstRawData &data) override
OUT 端点完成回调(读测试:持续接收) Data OUT complete callback (read test: continuous receive)
Definition cdc_test.hpp:128
void OnDataInComplete(bool in_isr, ConstRawData &data) override
IN 端点完成回调(读测试:无操作) Data IN complete callback (read test: no-op)
Definition cdc_test.hpp:144
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:113
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:35
void OnDataInComplete(bool in_isr, ConstRawData &data) override
IN 端点完成回调(写测试:再次触发发送) Data IN complete callback (write test: trigger next send)
Definition cdc_test.hpp:67
void OnDataOutComplete(bool in_isr, ConstRawData &data) override
OUT 端点完成回调(写测试无实际消费) Data OUT complete callback (no-op for write test)
Definition cdc_test.hpp:49
EPNumber
端点号 Endpoint number
Definition ep.hpp:42
@ EP_AUTO
自动分配端点号 / Auto allocate
USB端点池类 / USB endpoint pool class.
Definition ep_pool.hpp:23