sitara_depot/components/free_rtos/ethernet_ip/eth_ip.hpp

60 lines
1.5 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_ip.hpp
*
* Created on: 13 мар. 2023 г.
* Author: sychev
*/
#ifndef FREE_RTOS_ETHERNET_IP_ETH_IP_HPP_
#define FREE_RTOS_ETHERNET_IP_ETH_IP_HPP_
#include <networking/enet/utils/include/enet_apputils.h>
#include "free_rtos/handler_store/handler_store.hpp"
#include "free_rtos/ethernet_ip/eth_stack_iface.hpp"
#include "free_rtos/ethernet/eth_frame.h"
#include "free_rtos/ethernet_ip/eth_arp_iface.hpp"
#include "free_rtos/ethernet_ip/eth_ip_iface.hpp"
#include <cstdint>
namespace free_rtos {
class EthIp : public Handler, public EthIpIface {
public:
EthIp(EthStackIface& eth_stack, EthArpIface& arp);
void setSelfIpAddr(uint32_t ip) {self_ip_ = ip;};
void setSelfMac(uint64_t mac) {self_mac_ = mac;};
virtual uint32_t getSelfIpAddr() override {return self_ip_;};
virtual bool send(TEthMacPorts port_id, uint32_t dest_ip, uint8_t prot_id, TEthPkt& pkt) override;
virtual bool send(IpHandlerArgs& handlerArgs) override;
virtual int32_t Process(uint8_t * p_data, uint32_t len) override;
virtual uint16_t Sender(HandlerArgs& handlerArgs, size_t scatter_segment) override;
bool Register(uint8_t prot_id, Handler * p_handler);
private:
HandlerStore handlers_;
EthStackIface& eth_stack_;
EthArpIface& arp_;
uint32_t self_ip_;
uint64_t self_mac_;
uint16_t ip_indet_;
inline uint16_t fillIpHeader(IpHandlerArgs& ipHandlerArgs);
inline uint16_t fillEthFrameHeader(IpHandlerArgs& ipHandlerArgs);
};
}
#endif /* FREE_RTOS_ETHERNET_IP_ETH_IP_HPP_ */