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 BindEndpoints(EndpointPool& endpoint_pool, uint8_t start_itf_num,
32 bool in_isr) override
33 {
34 CDCBase::BindEndpoints(endpoint_pool, start_itf_num, in_isr);
35 }
36
45 void OnDataOutComplete(bool in_isr, ConstRawData& data) override
46 {
47 UNUSED(in_isr);
48 UNUSED(data);
49 if (IsDtrSet())
50 {
51 auto ep_data_in = GetDataInEndpoint();
52 ep_data_in->Transfer(ep_data_in->MaxTransferSize());
53 }
54 }
55
63 void OnDataInComplete(bool in_isr, ConstRawData& data) override
64 {
65 UNUSED(in_isr);
66 UNUSED(data);
67
68 if (IsDtrSet())
69 {
70 auto ep_data_in = GetDataInEndpoint();
71 ep_data_in->Transfer(ep_data_in->MaxTransferSize());
72 }
73 }
74};
75
88class CDCReadTest : public CDCBase
89{
90 public:
94 : CDCBase(data_in_ep_num, data_out_ep_num, comm_ep_num)
95 {
96 }
97
105 void BindEndpoints(EndpointPool& endpoint_pool, uint8_t start_itf_num,
106 bool in_isr) override
107 {
108 CDCBase::BindEndpoints(endpoint_pool, start_itf_num, in_isr);
109 auto ep_data_out = GetDataOutEndpoint();
110 ep_data_out->Transfer(ep_data_out->MaxTransferSize());
111 }
112
120 void OnDataOutComplete(bool in_isr, ConstRawData& data) override
121 {
122 UNUSED(in_isr);
123 UNUSED(data);
124
125 auto ep_data_out = GetDataOutEndpoint();
126 ep_data_out->Transfer(ep_data_out->MaxTransferSize());
127 }
128
136 void OnDataInComplete(bool in_isr, ConstRawData& data) override
137 {
138 UNUSED(in_isr);
139 UNUSED(data);
140 }
141};
142
143} // 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:229
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:131
bool IsDtrSet() const
检查DTR状态 Check DTR state
Definition cdc_base.hpp:147
USB CDC ACM 读测试类 USB CDC ACM read test class.
Definition cdc_test.hpp:89
void OnDataOutComplete(bool in_isr, ConstRawData &data) override
OUT 端点完成回调(读测试:持续接收) Data OUT complete callback (read test: continuous receive)
Definition cdc_test.hpp:120
void OnDataInComplete(bool in_isr, ConstRawData &data) override
IN 端点完成回调(读测试:无操作) Data IN complete callback (read test: no-op)
Definition cdc_test.hpp:136
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:105
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:31
void OnDataInComplete(bool in_isr, ConstRawData &data) override
IN 端点完成回调(写测试:再次触发发送) Data IN complete callback (write test: trigger next send)
Definition cdc_test.hpp:63
void OnDataOutComplete(bool in_isr, ConstRawData &data) override
OUT 端点完成回调(写测试无实际消费) Data OUT complete callback (no-op for write test)
Definition cdc_test.hpp:45
EPNumber
端点号 Endpoint number
Definition ep.hpp:41
@ EP_AUTO
自动分配端点号 / Auto allocate
USB端点池类 / USB endpoint pool class.
Definition ep_pool.hpp:23