34 enum class Ep0OutPhase : uint8_t
41 void ResetHardwareState();
42 void HandleInInterrupt(
bool in_isr);
43 void FinishPendingEp0InStatus(
bool in_isr);
44 void HandleOutInterrupt(
bool in_isr);
45 void HandleRxData(
size_t size);
46 void ObserveDmaRxStatus(uint8_t pktsts,
size_t size);
47 void ResetTransferState();
48 bool EnsureDmaShadow(
size_t size);
49 bool PrepareTransferBuffer(
size_t size);
50 bool FinishOutTransfer(
size_t actual_size);
51 size_t GetRemainingTransferSize()
const;
52 size_t GetCompletedTransferSize()
const;
53 void ActivateHardwareEndpoint();
54 void ProgramTransfer(
size_t size);
55 void WriteMoreTxData();
58 bool fifo_allocated_ =
false;
59 uint16_t fifo_words_ = 0U;
60 uint8_t* dma_shadow_buffer_ =
nullptr;
61 size_t dma_shadow_size_ = 0U;
62 uint8_t* transfer_buffer_ =
nullptr;
63 uint8_t* transfer_hw_buffer_ =
nullptr;
64 size_t transfer_request_size_ = 0U;
65 size_t transfer_actual_size_ = 0U;
66 size_t transfer_queued_size_ = 0U;
67 bool transfer_uses_shadow_ =
false;
68 size_t transfer_direct_sync_size_ = 0U;
69 size_t dma_rx_status_bytes_ = 0U;
70 bool dma_rx_status_seen_ =
false;
71 Ep0OutPhase ep0_out_phase_ = Ep0OutPhase::SETUP;