sitara_depot/components/free_rtos/ethernet_ip/eth_stack.hpp

71 lines
1.6 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* eth_stack.hpp
*
* Created on: 14 мар. 2023 г.
* Author: sychev
*/
#ifndef FREE_RTOS_ETHERNET_IP_ETH_STACK_HPP_
#define FREE_RTOS_ETHERNET_IP_ETH_STACK_HPP_
#include "free_rtos/ethernet_ip/eth_arp.hpp"
#include "free_rtos/ethernet_ip/eth_ip.hpp"
#include "free_rtos/ethernet_ip/eth_icmp.hpp"
#include "free_rtos/ethernet_ip/eth_udp_server.hpp"
#include "free_rtos/ethernet_ip/eth_stack_iface.hpp"
#include "free_rtos/handler_store/handler_store.hpp"
#include "free_rtos/ethernet/eth_types.h"
#include "free_rtos/ethernet/eth_tx_flow_iface.hpp"
namespace free_rtos {
class EthStack : public EthStackIface {
public:
struct Settings {
uint64_t mac_addr_be; /// big endian
uint32_t ip_addr_be; /// big endian
TEthMacPorts mac_port;
};
EthStack(EthTxFlowIface& tx_flow);
bool init(Settings& sett);
virtual void set_mac_address(uint64_t mac_be) override;
virtual void rx_handler(uint8_t * p_data, uint32_t len) override;
virtual bool send_pkt(TEthMacPorts port_id, uint64_t mac_dst, uint16_t prot_id, TEthPkt& pkt) override;
virtual bool send_pkt(EthStackHandlerArgs& handlerArgs) override;
EthUdpServerIface * getUdpServerPtr() {return &udp_;}
virtual bool Register(uint32_t prot_id, Handler * p_handler) override;
private:
struct EthData {
uint64_t self_mac_;
TEthMacPorts mac_port_;
uint32_t self_ip_;
};
EthTxFlowIface& tx_flow_;
HandlerStore rx_pkt_handler_;
EthData eth_;
EthArp arp_;
EthIp ip_;
EthIcmp icmp_;
EthUdpServer udp_;
};
}
#endif /* FREE_RTOS_ETHERNET_IP_ETH_STACK_HPP_ */