libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
esp_usb_ep.hpp
1#pragma once
2
3#include "usb/core/ep.hpp"
4
5#if SOC_USB_OTG_SUPPORTED && defined(CONFIG_IDF_TARGET_ESP32S3) && CONFIG_IDF_TARGET_ESP32S3
6
7namespace LibXR
8{
9
10class ESP32USBDevice;
11
15class ESP32USBEndpoint : public USB::Endpoint
16{
17 public:
18 ESP32USBEndpoint(ESP32USBDevice& device, EPNumber number, Direction direction, RawData buffer);
19
20 friend class ESP32USBDevice;
21
22 void Configure(const Config& cfg) override;
23 void Close() override;
24 ErrorCode Stall() override;
25 ErrorCode ClearStall() override;
26 ErrorCode Transfer(size_t size) override;
27
28 size_t MaxTransferSize() const override;
29
30 private:
31 enum class Ep0OutPhase : uint8_t
32 {
33 SETUP = 0U,
34 DATA = 1U,
35 STATUS = 2U,
36 };
37
38 void ResetHardwareState();
39 void HandleInInterrupt(bool in_isr);
40 void FinishPendingEp0InStatus(bool in_isr);
41 void HandleOutInterrupt(bool in_isr);
42 void HandleRxData(size_t size);
43 void ObserveDmaRxStatus(uint8_t pktsts, size_t size);
44 void ResetTransferState();
45 bool EnsureDmaShadow(size_t size);
46 bool PrepareTransferBuffer(size_t size);
47 bool FinishOutTransfer(size_t actual_size);
48 size_t GetRemainingTransferSize() const;
49 size_t GetCompletedTransferSize() const;
50 void ActivateHardwareEndpoint();
51 void ProgramTransfer(size_t size);
52 void WriteMoreTxData();
53
54 ESP32USBDevice& device_;
55 bool fifo_allocated_ = false;
56 uint16_t fifo_words_ = 0U;
57 uint8_t* dma_shadow_buffer_ = nullptr;
58 size_t dma_shadow_size_ = 0U;
59 uint8_t* transfer_buffer_ = nullptr;
60 uint8_t* transfer_hw_buffer_ = nullptr;
61 size_t transfer_request_size_ = 0U;
62 size_t transfer_actual_size_ = 0U;
63 size_t transfer_queued_size_ = 0U;
64 bool transfer_uses_shadow_ = false;
65 size_t transfer_direct_sync_size_ = 0U;
66 size_t dma_rx_status_bytes_ = 0U;
67 bool dma_rx_status_seen_ = false;
68 Ep0OutPhase ep0_out_phase_ = Ep0OutPhase::SETUP;
69};
70
71} // namespace LibXR
72
73#endif
LibXR 命名空间
Definition ch32_can.hpp:14
ErrorCode
定义错误码枚举
Definition libxr_def.hpp:64