107 lines
3.5 KiB
C
107 lines
3.5 KiB
C
|
|
#include "uip.h"
|
|
#include "uip_arp.h"
|
|
#include "os/os_api.h"
|
|
#include "uip_timer.h"
|
|
#include "dhcpc.h"
|
|
#include "tcp_demo.h"
|
|
#include "udp_demo.h"
|
|
|
|
|
|
|
|
static void uip_task(void *prive)
|
|
{
|
|
static u8 init_flog = 0;
|
|
u8_t tcp_server_tsta = 0xff;
|
|
u8_t tcp_client_tsta = 0xff;
|
|
u8_t udp_server_tsta = 0xff;
|
|
u8_t udp_client_tsta = 0xff;
|
|
static struct timer arp_timer;
|
|
DEBUG_PRINTF(">>>>>>>>>>>>uip_test");
|
|
|
|
while (1) {
|
|
|
|
|
|
if (DHCP_ok_flog) { //DHCP已经获取到了动态分配的IP
|
|
if (!init_flog) { //初始化配置进行一次
|
|
init_flog = 1;
|
|
tcp_server_connect();
|
|
/*tcp_client_connect();*/
|
|
/*udp_server_connect();*/ //需要开关宏定义USE_UDP_CLIENT USE_UDP_SERVER
|
|
/*udp_client_connect();*/
|
|
}
|
|
}
|
|
|
|
if (tcp_server_tsta != tcp_server_sta) { //TCP Server状态改变
|
|
if (tcp_server_sta & (1 << 7)) {
|
|
printf("TCP Server Connected\r\n");
|
|
} else {
|
|
printf("TCP Server Disconnected\r\n");
|
|
}
|
|
if (tcp_server_sta & (1 << 6)) { //收到新数据
|
|
printf("TCP Server RX:%s\r\n", tcp_server_rx_databuf); //打印数据
|
|
tcp_send_data(" TCP Server TX Successfully!\r\n");
|
|
tcp_server_sta &= ~(1 << 6); //标记数据已经被处理
|
|
}
|
|
tcp_server_tsta = tcp_server_sta;
|
|
}
|
|
|
|
if (tcp_client_tsta != tcp_client_sta) { //TCP Client状态改变
|
|
if (tcp_client_sta & (1 << 7)) {
|
|
printf("TCP Client Connected\r\n");
|
|
} else {
|
|
printf("TCP Client Disconnected\r\n");
|
|
}
|
|
if (tcp_client_sta & (1 << 6)) { //收到新数据
|
|
printf("TCP Client RX:%s\r\n", tcp_client_rx_databuf); //打印数据
|
|
tcp_send_data("TCP Client TX Successfully!\r\n");
|
|
tcp_client_sta &= ~(1 << 6); //标记数据已经被处理
|
|
}
|
|
tcp_client_tsta = tcp_client_sta;
|
|
}
|
|
|
|
if (udp_server_tsta != udp_server_sta) { //UDP Server状态改变
|
|
if (udp_server_sta & (1 << 7)) {
|
|
printf("UDP Server Connected\r\n");
|
|
} else {
|
|
printf("UDP Server Disconnected\r\n");
|
|
}
|
|
if (udp_server_sta & (1 << 6)) { //收到新数据
|
|
printf("UDP Server RX:%s\r\n", udp_server_rx_databuf); //打印数据
|
|
udp_send_data(" UDP Server TX Successfully!\r\n");
|
|
udp_server_sta &= ~(1 << 6); //标记数据已经被处理
|
|
}
|
|
udp_server_tsta = udp_server_sta;
|
|
}
|
|
|
|
if (udp_client_tsta != udp_client_sta) { //UDP Client状态改变
|
|
if (udp_client_sta & (1 << 7)) {
|
|
printf("UDP Client Connected\r\n");
|
|
} else {
|
|
printf("UDP Client Disconnected\r\n");
|
|
}
|
|
if (udp_client_sta & (1 << 6)) { //收到新数据
|
|
printf("UDP Client RX:%s\r\n", udp_client_rx_databuf); //打印数据
|
|
udp_send_data(" UDP Client TX Successfully!\r\n");
|
|
udp_client_sta &= ~(1 << 6); //标记数据已经被处理
|
|
}
|
|
udp_client_tsta = udp_client_sta;
|
|
}
|
|
|
|
os_time_dly(50);
|
|
}
|
|
}
|
|
|
|
/*测试程序入口*/
|
|
void uip_test(void)
|
|
{
|
|
thread_fork("uip_task", 20, 512, 0, NULL, uip_task, NULL);
|
|
}
|
|
/*调用该函数进行测试*/
|
|
int uip_test_main()
|
|
{
|
|
uip_test();
|
|
return 0 ;
|
|
}
|
|
|