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:
27 : CDCBase(data_in_ep_num, data_out_ep_num, comm_ep_num)
28 {
29 }
30
31 void Init(EndpointPool& endpoint_pool, uint8_t start_itf_num) override
32 {
33 CDCBase::Init(endpoint_pool, start_itf_num);
34 }
35
44 void OnDataOutComplete(bool in_isr, ConstRawData& data) override
45 {
46 UNUSED(in_isr);
47 UNUSED(data);
48 if (IsDtrSet())
49 {
50 auto ep_data_in = GetDataInEndpoint();
51 ep_data_in->Transfer(ep_data_in->MaxTransferSize());
52 }
53 }
54
62 void OnDataInComplete(bool in_isr, ConstRawData& data) override
63 {
64 UNUSED(in_isr);
65 UNUSED(data);
66
67 if (IsDtrSet())
68 {
69 auto ep_data_in = GetDataInEndpoint();
70 ep_data_in->Transfer(ep_data_in->MaxTransferSize());
71 }
72 }
73};
74
87class CDCReadTest : public CDCBase
88{
89 public:
93 : CDCBase(data_in_ep_num, data_out_ep_num, comm_ep_num)
94 {
95 }
96
104 void Init(EndpointPool& endpoint_pool, uint8_t start_itf_num) override
105 {
106 CDCBase::Init(endpoint_pool, start_itf_num);
107 auto ep_data_out = GetDataOutEndpoint();
108 ep_data_out->Transfer(ep_data_out->MaxTransferSize());
109 }
110
118 void OnDataOutComplete(bool in_isr, ConstRawData& data) override
119 {
120 UNUSED(in_isr);
121 UNUSED(data);
122
123 auto ep_data_out = GetDataOutEndpoint();
124 ep_data_out->Transfer(ep_data_out->MaxTransferSize());
125 }
126
134 void OnDataInComplete(bool in_isr, ConstRawData& data) override
135 {
136 UNUSED(in_isr);
137 UNUSED(data);
138 }
139};
140
141} // 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:23
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)
CDC构造函数 CDC constructor.
Definition cdc_base.hpp:130
virtual void Init(EndpointPool &endpoint_pool, uint8_t start_itf_num) override
初始化CDC设备 Initialize CDC device
Definition cdc_base.hpp:227
bool IsDtrSet() const
检查DTR状态 Check DTR state
Definition cdc_base.hpp:146
USB CDC ACM 读测试类 USB CDC ACM read test class.
Definition cdc_test.hpp:88
void OnDataOutComplete(bool in_isr, ConstRawData &data) override
OUT 端点完成回调(读测试:持续接收) Data OUT complete callback (read test: continuous receive)
Definition cdc_test.hpp:118
void OnDataInComplete(bool in_isr, ConstRawData &data) override
IN 端点完成回调(读测试:无操作) Data IN complete callback (read test: no-op)
Definition cdc_test.hpp:134
void Init(EndpointPool &endpoint_pool, uint8_t start_itf_num) override
初始化 CDC 读测试类:预装 OUT 端点接收 Initialize CDC read test: pre-arm OUT endpoint
Definition cdc_test.hpp:104
USB CDC ACM 写测试类 USB CDC ACM write test class.
Definition cdc_test.hpp:22
void Init(EndpointPool &endpoint_pool, uint8_t start_itf_num) override
初始化CDC设备 Initialize CDC device
Definition cdc_test.hpp:31
void OnDataInComplete(bool in_isr, ConstRawData &data) override
IN 端点完成回调(写测试:再次触发发送) Data IN complete callback (write test: trigger next send)
Definition cdc_test.hpp:62
void OnDataOutComplete(bool in_isr, ConstRawData &data) override
OUT 端点完成回调(写测试无实际消费) Data OUT complete callback (no-op for write test)
Definition cdc_test.hpp:44
EPNumber
端点号 / Endpoint number
Definition ep.hpp:39
@ EP_AUTO
自动分配端点号 / Auto allocate
USB端点池类 / USB endpoint pool class.
Definition ep_pool.hpp:23