📄 ethernet.c
字号:
/*
+FHDR------------------------------------------------------------------
Copyright (c),
Tony Yang –51,AVR,ARM firmware developer
Contact:qq 292942278 e-mail:tony_yang123@sina.com.cn
Abstract:
$Id: ethernet.c,v 1.3 2006/12/31 16:08:28 tony Exp $
-FHDR-------------------------------------------------------------------
*/
#include "config.h"
#include "tcp_ip_cfg.h"
#include "hardware.h"
#include "uart0\uart0.h"
#include "arp.h"
#include "ip.h"
ETHERNET_EXT NetP NetPort[MAX_NET_PORT];
const u8 MY_MAC_1ID[6] = My_Mac_1ID;//将RTL8019的物理地址存储在程序空间
const u8 MY_IP_MAKE1ID[4] = IP_MARK_1ID; //255.255.255.0,子网掩码
const u8 MY_IP_ADD[4] = MY_IP_1ID;
const u8 MY_GATEWAY_1ADD[4] = MY_GATEWAY_1ID;
/****************************************************************************
* 名称:Rec_Ethernet_Packed(void)
* 功能:发送以太网数据包
* 入口:struct _pkst *TxdData--以太网数据包的首地址
* *dest_mac_add-目的端的以太网地址,PROTOCOL--帧类型-包括arp,rarp,ip
* 出口: 无
****************************************************************************/
void Send_ethernet_frame(struct _pkst *TxdData,
u8 *dest_mac_add,u16 PROTOCOL)
{
u8 i;
ipethernet IPETHERNET;
struct _pkst PACKET_ST;
//UART0_SendByte(0x55);UART0_SendByte(0x55);
for(i = 0;i < 6;i++)
{
IPETHERNET.DestMacId[i] = dest_mac_add[i];
IPETHERNET.SourceMacId[i] = MY_MAC_1ID[i];
}
IPETHERNET.NextProtocal = PROTOCOL;
PACKET_ST.STPTR = TxdData;
PACKET_ST.length = 14;
PACKET_ST.DAPTR = (u8*)(&IPETHERNET);
Send_Packet(&PACKET_ST);
}
/****************************************************************************
* 名称:Rec_Ethernet_Packed(void)
* 功能:接收以太网ARP/IP包,向上传递
* 入口:pkt--以太网数据包的首地址,num:以太网帧长
* 出口: 无
****************************************************************************/
void Rec_Ethernet_Packed(u8 * pkt,u8 num)
{
// u16 i;
//for(i = 0;i < 1500;i++)
// SendByte(pkt[i]);
//RevByte();
switch(((ipethernet*)pkt)->NextProtocal)
{
case ARP_PACKET: {
Rec_ARP_Packed(pkt+14);
break;}
case IP_PACKET: {
Rec_IP_Packed(pkt+14);
break;}
}
}
/****************************************************************************
* 名称:SET_NET_PORT(void)
* 功能:网络端口初始化
* 入口:无
* 出口: 无
****************************************************************************/
void SET_NET_PORT(void)
{
u8 i;
for(i = 0;i < 4;i++)
{
NetPort[0].My_Ip[i] = MY_IP_ADD[i];
NetPort[0].My_Gateway[i] = MY_GATEWAY_1ADD[i];
NetPort[0].My_Ip_Mark[i] = MY_IP_MAKE1ID[i];
}
for(i = 0;i < 6;i++)
{
NetPort[0].My_Mac[i] = MY_MAC_1ID[i];
}
}
/*
+FFTR--------------------------------------------------------------------
$Log: ethernet.c,v $
Revision 1.3 2006/12/31 16:08:28 tony
由于write_file慢(1KB/S)导致FTP服务器put file失序,不写file时序正常
Revision 1.2 2006/12/31 16:05:26 tony
增加FTP代码,SOCKET_status字段
-FFTR--------------------------------------------------------------------
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -