📄 uip_task.c
字号:
#include <CORE\includes.h>
#include "serial.h"
#include <LCD\LCD.h>
#include <global_para.h>
#include "uip\uip_arp.h"
#include "uip\uip.h"
#include "uip\myapp\myapp.h"
#include <RTL8019\rtl8019dev.h>
#include <serial.h>
#define BUF ((struct uip_eth_hdr *)&uip_buf[0])
void TcpIp_Init()
{
uip_init();
myapp_init();
uip_arp_init();
RTL8019dev_init();
}
/*---------------------------------------------------------------
Receive (Ethernet)ip package to uip_buf[UIP_BUFSIZE], uip_len
----------------------------------------------------------------*/
void TASK_UipRec(void *ppdata) reentrant//receive slip package;
{
INT8U err;
err=err;
ppdata=ppdata;
// LCD_print("task recieve\n");
while(1)
{ // Uart0_print("RecT\n");
//OSSemPend(Sem_RecPackage, 0, &err);
uip_len = RTL8019dev_poll();
if(uip_len)
{//Uart0_print("0nep\n");
OSSemPost(Sem_ProcessPackage);
}
}//while(1);
}
//-------------------------------------------------------------------
void TASK_UipProcess(void *ppdata) reentrant//send slip package;
{
INT8U err;
ppdata=ppdata;
while(1)
{
OSSemPend(Sem_ProcessPackage, 0, &err);
// Uart0_print("ProT\n");
if(BUF->type == htons(UIP_ETHTYPE_IP))
{
// add the source to the ARP cache
// also correctly set the ethernet packet length before processing
uip_arp_ipin();
uip_process(UIP_DATA);
// transmit a packet, if one is ready
if(uip_len > 0)
{
uip_arp_out();
RTL8019dev_send();
}
}
// process an ARP packet
else if(BUF->type == htons(UIP_ETHTYPE_ARP))
{
uip_arp_arpin();
// transmit a packet, if one is ready
if(uip_len > 0)
RTL8019dev_send();
}
}//while(1)
}
void TASK_UipTimeOut(void *ppdata) reentrant//send slip package;
{
INT8U i;
ppdata=ppdata;
while(1)
{
// Uart0_print("RecT\n");
OSTimeDly(100); //DELAY 1 S; 50*0.02
// Uart0_print("TimT\n");
for(i = 0; i < UIP_CONNS; ++i)
{
uip_periodic(i);
if(uip_len > 0)
{
uip_arp_out();
RTL8019dev_send();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -