⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eth.c

📁 ARM2410+DM9000的驱动与寄存器配置代码
💻 C
字号:
#include "eth.h"
#include "arp.h"
#include "icmp.h"

static u32_t _p_ipaddr = IPADDR(192, 168, 0, 118);
static struct eth_addr _p_ethaddr = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66};

u16_t DM9000DBG_SendFrame(u8_t *pbData, u8_t slen);

u16_t eth_send(u8_t *buf, u16_t len)
{
	return DM9000DBG_SendFrame(buf, len);
}

u16_t eth_input(u8_t *buf, u16_t len)
{
	struct eth_hdr *ethhdr = (struct eth_hdr*)buf;
	if(arp_in(buf, len))
	{
		struct ip_hdr *iphdr;
		ip_input(buf+sizeof(struct eth_hdr), len-sizeof(struct eth_hdr));
		if((len = ip_getout_packet((u8_t **)&iphdr)) > 0)
		{
			arp_getethaddr(iphdr->destipaddr, &ethhdr->dest);
			ethhdr->src = getethaddr();
			ethhdr->type = HTONS(ETHTYPE_IP);
			eth_send(buf, len+sizeof(struct eth_hdr));
		}
	}
	return 0;
}

/********************************/

u32_t getipaddr(void)
{
	return _p_ipaddr;
}
//static struct eth_addr _p_ethaddr = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66};
struct eth_addr getethaddr(void)
{
	return _p_ethaddr;
}

/*******************************/
/*
u32_t eth_fillhdr(struct eth_hdr *hdr)
{
	hdr->
}*/

/*******************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -