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

📄 ethernet.c

📁 嵌入式tcp-ip协议栈 。。。。。。阿萨德
💻 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 + -