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

📄 eth.c

📁 DSP2407控制8019芯片实现的网页服务器
💻 C
字号:
/*********************************************************************************
*  eth.c	v1.00       接口程序	                                             *
*  版权(c) 	2004-		北京百科融创科技有限公司		                         *
*  设计者:	赵治心																 *
*  邮箱:   ourui.wl@263.net								                     *
**********************************************************************************/
#include "stdio.h"
#include "tcp_ip.h" 
#include "global.h"
#include "8019head.h"

void eth_send(UCHAR * outbuf, UCHAR * hwaddr, UINT ptype, UINT len)
{
	int i;
	ETH_HEADER * eth;
   
   eth = (ETH_HEADER *)outbuf;
	  
	// Add 14 byte Ethernet header
	for(i=0;i<6;i++)
	{
   		eth->source_hwaddr[i]=sed_lclEthAddr[i];
   		eth->dest_hwaddr[i]=*(hwaddr+i);
	}
   eth->frame_type[0] = (ptype & 0xFF00)>>8;
   eth->frame_type[1] = ptype & 0x00FF;

   // We just added 14 bytes to length
   SendPacket((UINT *)outbuf, len + 14);
}

UINT cksum(UCHAR *check,UINT length) //计算校验和
{
	unsigned long sum=0;
	UINT i;
	UINT *ptr; 
    ptr=(UINT *)check;
	for (i=0;i<(length)/2;i++)
	{
		sum+=(*ptr++)<<8;
		sum+=*ptr++;
	}
	if (length&0x01)//表示长度为单数
	{
		sum=sum+((*ptr++)<<8);
	}
	sum=(sum&0xffff)+((sum>>16)&0xffff);//高16位和低16位相加
	if(sum&0xffff0000)
	{//表示有进位
		sum++;
	}
	i=(UINT)((sum)&0xffff);
	return i;
}

⌨️ 快捷键说明

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