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

📄 mylwip.c

📁 最新的lwip 1.3.0版本在ucos平台上的移植
💻 C
字号:
#include "lwip/sys.h"
#include "lwip/tcpip.h"

#include "lwip/debug.h"
#include "lwip/opt.h"
#include "lwip/def.h"
#include "lwip/mem.h"
#include "lwip/memp.h"
#include "lwip/pbuf.h"
#include "lwip/api.h"
#include "lwip/stats.h"
#include "netif/etharp.h"
#include "netif/loopif.h"
#include "arch/ne2kif.h"
#include "arch/sys_arch.h"
#include "tcpecho.h"
#include "udpecho.h"
//#include "netbios.h"

#include <sal_os.h>
#include <ssi/trace.h>

#include "lwip/sockets.h"

#define LOCAL_IP 192,168,1,200

struct netif *rtl8019_netif;
//struct netif *rtl8019_netif_udp;
//struct netif *rtl8019_netif_tcp;

struct netif *loop_netif;

void telnet_thread(void *arg);

void
tcpip_init_done(void *arg)
{
  sys_sem_t *sem;
  sem = arg;
  sys_sem_signal(*sem);
}

/*-----------------------------------------------------------------------------------*/
void
telnet_init(void)
{
  sys_thread_new("telnet", telnet_thread, NULL, 4096, 1);  
}
/*-----------------------------------------------------------------------------------*/

#if 0
int snd_sockfd = -1;
struct sockaddr_in des_addr;

void udp_test_init(void)
{
    if ((snd_sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)    
    {      
        func_trace(TRC_ERR, "init socket failed");
        return;
    }        
    des_addr.sin_family = AF_INET;    
    des_addr.sin_port = htons(9002);    
    des_addr.sin_addr.s_addr = inet_addr("192.168.1.3");

}

void udp_test_send(void)
{
    char buf[] = {1, 2, 3, 4};
    
    if (sendto(snd_sockfd, buf, 4, 0, (struct sockaddr*)&des_addr, sizeof(des_addr)) < 0)
    {
        func_trace(TRC_ERR, "udp send failed");
        return;
    }

}
#endif
void lwip_init_task(void * pParam)
{
	struct ip_addr ipaddr, netmask, gw;
	sys_sem_t sem;

#if 0
#if LWIP_STATS
  	stats_init();
#endif
	sys_init();
	mem_init();
	memp_init();
	pbuf_init();
	netif_init();
#endif
	sem = sys_sem_new(0);
	tcpip_init(tcpip_init_done, &sem);
	sys_sem_wait(sem);
	sys_sem_free(sem);
  
	//add loop interface
	loop_netif = mem_malloc(sizeof(struct netif));
	IP4_ADDR(&gw, 127,0,0,1);
	IP4_ADDR(&ipaddr, 127,0,0,1);
	IP4_ADDR(&netmask, 255,0,0,0);
	netif_add(loop_netif, &ipaddr, &netmask, &gw, NULL, loopif_init, tcpip_input);
	    
	//add rtl8019 interface
  	rtl8019_netif = mem_malloc(sizeof(struct netif));
  	//rtl8019_netif_tcp = mem_malloc(sizeof(struct netif));
  	//rtl8019_netif_tcp = mem_malloc(sizeof(struct netif));
	IP4_ADDR(&gw, 192,168,1,1);
	IP4_ADDR(&ipaddr, 192,168,1,200);
	IP4_ADDR(&netmask, 255,255,255,0);
	//netif_add(rtl8019_netif, &ipaddr, &netmask, &gw, NULL, ethernetif_init, udp_input);
	netif_set_default(netif_add(rtl8019_netif, &ipaddr, &netmask, &gw, NULL, ethernetif_init, tcpip_input));
    netif_set_up(rtl8019_netif);

	//netif_add(rtl8019_netif_udp, &ipaddr, &netmask, &gw, NULL, ethernetif_init, udp_input);
	//netif_add(rtl8019_netif_tcp, &ipaddr, &netmask, &gw, NULL, ethernetif_init, tcpip_input);
	//netif_set_up(rtl8019_netif_tcp);
	//netif_set_up(rtl8019_netif_udp);
	//netif_set_default(rtl8019_netif_tcp);
  	
	//netbios_init();
	//sio_printf(" netbios inited!\n");


	tcpecho_init();
	func_trace(TRC_INFO4, "tcp sever created!");

	telnet_init();
	func_trace(TRC_INFO4, "telnet sever created!");
	
#if 0
	//udpecho_init();
	//sio_printf(" udp sever created!\n");
	//udp_test_init();
	
	/* Block for ever. */
	sem = sys_sem_new(0);
	sys_sem_wait(sem);
	func_trace(TRC_ERR, "never goes here, should not appear!");
    #endif
}

⌨️ 快捷键说明

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