/* * eth_tx_flow.hpp * * Created on: 7 ���. 2023 �. * Author: sychev */ #ifndef FREE_RTOS_ETHERNET_ETH_TX_FLOW_HPP_ #define FREE_RTOS_ETHERNET_ETH_TX_FLOW_HPP_ #include #include #include "free_rtos/ethernet/eth_tx_flow_iface.hpp" #include "free_rtos/handler_store/handler_store.hpp" namespace free_rtos { class EthTxFlow : public EthTxFlowIface { public: EthTxFlow(); bool open(uint32_t id, int32_t enetDmaTxChId); bool is_open() {return open_;} void enable(TEthMacPorts port_id); void disable(TEthMacPorts port_id); virtual bool send(TEthMacPorts port_id, uint8_t * p_data, uint32_t len) override; virtual bool send(TEthMacPorts port_id, Handler * handler, uint32_t numScatterSegments) override; private: struct PortData { bool tx_enable; uint32_t tx_pkt_counter; }; uint32_t id_; bool open_; //------------------------------------------------- uint32_t tx_ch_num_; EnetDma_TxChHandle dma_handle_; /// ���������� ����� DMA EnetDma_PktQ tx_free_pktq_; /// ������� ��������� ������� PortData port_data_[e_ethMacTotal]; }; } #endif /* FREE_RTOS_ETHERNET_ETH_TX_FLOW_HPP_ */