/* * 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 "ethernet/eth_tx_flow_iface.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; 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_ */