📄 test2.c
字号:
#include "true_false.h"
#include "stdlib.h"
#include "typedef.h"
#include "mem_man.h"
#include "rtl8019.h"
#include "netif.h"
#include "etherif.h"
#include "ip.h"
#include "arp.h"
#include "utilities.h"
#include "tcp.h"
#define DATA_SIZE 1024*10\
BYTE DataBlock[DATA_SIZE];
BYTE str[]="hello";
socket * ExConn;
socket * ExAccept;
socket * ExListen;
void OnReceive(void * buf,WORD size)
{
/* send back data */
TCPSend(ExConn,buf,size);
}
void OnAcceptRecv(void *buf,WORD size)
{
/* printf received data */
#ifdef DEBUG
while(size--)
printf("%c",*((BYTE *)buf)++);
#endif
/* send back data */
TCPSend(ExAccept,buf,size);
}
void OnClose(socket * pSocket)
{
TCPClose(pSocket); /* we close too */
}
void OnAccept(socket *pNewSocket)
{
ExAccept = pNewSocket;
pNewSocket->recv = OnAcceptRecv;
pNewSocket->close = OnClose;
}
void Timer(void) //interrupt 1
{
}
void InterruptInit()
{
}
void test(void)
{
struct SMemHead *MemHead;
struct SEtherDevice DevRTL;
BYTE EtherAddr[ETHER_ADDR_LEN] = {0x52,0x54,0x4c,0x30,0x2e,0x2f};
IP_ADDR IPAddr = 0xc0a8020d; /* 192.168.2.13 *//* ca71e590:202.113.229.144 *//* ca711075:202.113.16.117 */
IP_ADDR NetMask = 0xffffff00; /* 255.255.255.0 */
IP_ADDR GateWay = 0xc0a80201; /* 192.138.2.1 */
// rNCACHBE0 = ((Non_Cache_End>>12)<<16)|(Non_Cache_Start>>12);
//在上面的数据区域不使用高速缓存
// rSYSCFG = CACHECFG; //8K字节cache,写缓冲使能,data abort使能
Port_Init(); //IO口初始化
Uart_Select( 0 ) ; //选择串口0
Uart_Init( 32000000, 115200 );
/*
* init
*/
Timer_Init();
//while(1);
printf("\nHELLO THIS IS ZLIP_ARM7\n");
printf("\nNetIfInit();\n");
NetIfInit();
printf("\nARPInit();\n");
ARPInit();
printf("\nTCPInit();\n");
TCPInit();
printf("\nMemInit()\n");
MemInit();
printf("\nRTLInit(EtherAddr); \n");
RTLInit(EtherAddr);
/* init Devcie struct and init this device */
printf("\nEtherDevInit();\n");
EtherDevInit(
&DevRTL,
EtherAddr,
RTLSendPacket,//问题出在这里!
RTLReceivePacket);
/*
MemCopy(DevRTL.Addr,EtherAddr,ETHER_ADDR_LEN);
DevRTL.send=RTLSendPacket ;
DevRTL.recv= RTLReceivePacket;
//这里是因为rtl发送函数和函数指针的类型的不匹配引起的修改!
//发送的数据都用void就ok了
*/ /* add this device to NetIf */
printf("\nNetIfAdd();\n");
NetIfAdd(IPAddr,NetMask,GateWay,EtherInput,EtherOutput,&DevRTL);
/*
* start use socket
*/
//InterruptInit();
printf("\nInterruptInit();\nnow waiting for flash led...");
Timer_Init();
//while(1);
/* Illustrate how to listen as a server */
ExListen = TCPSocket(IPAddr);
ExAccept = NULL;
TCPListen(ExListen,TCP_DEFAULT_PORT,OnAccept);
/* Illustrate how to connect to a server */
ExConn = TCPSocket(IPAddr);
//#if 0
if(TCPConnect(ExConn,0xc0a8020e,1001,OnReceive,OnClose) == TRUE)
{
/* Illustrate how to Use TCPSend() */
TCPSend(ExConn,str,6);
/* Illustrate how to Use TCPSendEx() */
while(1)
{
if((MemHead = TCPAllocate(DATA_SIZE)) == NULL)
break;
MemCopy(MemHead->pStart,DataBlock,DATA_SIZE);
if(TCPSendEx(ExConn,MemHead) == FALSE)
break;
}
}
TCPAbort(ExConn);
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -