forked from xuos/xiuos
fixed udp tcp failed to receive and send bug on nuttx
This commit is contained in:
parent
6603f121c6
commit
51f346e935
|
@ -43,21 +43,47 @@ char tcp_socket_ip[] = {192, 168, 250, 252};
|
||||||
#define lw_error printf
|
#define lw_error printf
|
||||||
|
|
||||||
#define LWIP_DEMO_TIMES 3
|
#define LWIP_DEMO_TIMES 3
|
||||||
|
#define LWIP_TARGET_PORT 4840
|
||||||
/** Create u32_t value from bytes */
|
|
||||||
#define LWIP_MAKEU32(a,b,c,d) (((uint32_t)((a) & 0xff) << 24) | \
|
|
||||||
((uint32_t)((b) & 0xff) << 16) | \
|
|
||||||
((uint32_t)((c) & 0xff) << 8) | \
|
|
||||||
(uint32_t)((d) & 0xff))
|
|
||||||
|
|
||||||
#define PP_HTONL(x) ((uint32_t)(x))
|
|
||||||
#define LWIP_TARGET_PORT 6000
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint16_t tcp_socket_port = LWIP_TARGET_PORT;
|
uint16_t tcp_socket_port = LWIP_TARGET_PORT;
|
||||||
|
char tcp_ip_str[128] = {0};
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
|
void tcp_set_ip(char *ip_str)
|
||||||
|
{
|
||||||
|
int ip1, ip2, ip3, ip4, port = 0;
|
||||||
|
|
||||||
|
if(ip_str == NULL)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(sscanf(ip_str, "%d.%d.%d.%d:%d", &ip1, &ip2, &ip3, &ip4, &port))
|
||||||
|
{
|
||||||
|
printf("config ip %s port %d\n", ip_str, port);
|
||||||
|
strcpy(tcp_ip_str, ip_str);
|
||||||
|
tcp_socket_ip[0] = ip1;
|
||||||
|
tcp_socket_ip[1] = ip2;
|
||||||
|
tcp_socket_ip[2] = ip3;
|
||||||
|
tcp_socket_ip[3] = ip4;
|
||||||
|
if(port)
|
||||||
|
tcp_socket_port = port;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(sscanf(ip_str, "%d.%d.%d.%d", &ip1, &ip2, &ip3, &ip4))
|
||||||
|
{
|
||||||
|
printf("config ip %s\n", ip_str);
|
||||||
|
tcp_socket_ip[0] = ip1;
|
||||||
|
tcp_socket_ip[1] = ip2;
|
||||||
|
tcp_socket_ip[2] = ip3;
|
||||||
|
tcp_socket_ip[3] = ip4;
|
||||||
|
strcpy(tcp_ip_str, ip_str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void TCPSocketRecvTask(void *arg)
|
static void TCPSocketRecvTask(void *arg)
|
||||||
{
|
{
|
||||||
int fd = -1, clientfd;
|
int fd = -1, clientfd;
|
||||||
|
@ -97,7 +123,7 @@ static void TCPSocketRecvTask(void *arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
lw_print("tcp bind success, start to receive.\n");
|
lw_print("tcp bind success, start to receive.\n");
|
||||||
lw_notice("\n\nLocal Port:%d\n\n", tcp_socket_port);
|
lw_notice("\nLocal Port:%d\n", tcp_socket_port);
|
||||||
|
|
||||||
// setup socket fd as listening mode
|
// setup socket fd as listening mode
|
||||||
if (listen(fd, 5) != 0 )
|
if (listen(fd, 5) != 0 )
|
||||||
|
@ -115,7 +141,8 @@ static void TCPSocketRecvTask(void *arg)
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
memset(recv_buf, 0, TCP_DEMO_BUF_SIZE);
|
memset(recv_buf, 0, TCP_DEMO_BUF_SIZE);
|
||||||
recv_len = recvfrom(clientfd, recv_buf, TCP_DEMO_BUF_SIZE, 0, (struct sockaddr *)&tcp_addr, &addr_len);
|
recv_len = recvfrom(clientfd, recv_buf, TCP_DEMO_BUF_SIZE, 0,
|
||||||
|
(struct sockaddr *)&tcp_addr, &addr_len);
|
||||||
if(recv_len > 0)
|
if(recv_len > 0)
|
||||||
{
|
{
|
||||||
lw_notice("Receive from : %s\n", inet_ntoa(tcp_addr.sin_addr));
|
lw_notice("Receive from : %s\n", inet_ntoa(tcp_addr.sin_addr));
|
||||||
|
@ -137,10 +164,7 @@ void TCPSocketRecvTest(int argc, char *argv[])
|
||||||
if(argc >= 2)
|
if(argc >= 2)
|
||||||
{
|
{
|
||||||
lw_print("lw: [%s] target ip %s\n", __func__, argv[1]);
|
lw_print("lw: [%s] target ip %s\n", __func__, argv[1]);
|
||||||
if(sscanf(argv[1], "%d.%d.%d.%d:%d", &tcp_socket_ip[0], &tcp_socket_ip[1], &tcp_socket_ip[2], &tcp_socket_ip[3], &tcp_socket_port) == EOK)
|
tcp_set_ip(argv[1]);
|
||||||
{
|
|
||||||
sscanf(argv[1], "%d.%d.%d.%d", &tcp_socket_ip[0], &tcp_socket_ip[1], &tcp_socket_ip[2], &tcp_socket_ip[3]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lwip_config_tcp(lwip_ipaddr, lwip_netmask, tcp_socket_ip);
|
lwip_config_tcp(lwip_ipaddr, lwip_netmask, tcp_socket_ip);
|
||||||
|
@ -151,11 +175,11 @@ SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) |
|
||||||
TCPSocketRecv, TCPSocketRecvTest, TCP recv echo);
|
TCPSocketRecv, TCPSocketRecvTest, TCP recv echo);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static void TCPSocketSendTask(void *arg)
|
static void TCPSocketSendTask(void *arg)
|
||||||
{
|
{
|
||||||
int cnt = LWIP_DEMO_TIMES;
|
int cnt = LWIP_DEMO_TIMES;
|
||||||
int fd = -1;
|
int fd = -1;
|
||||||
|
int ret;
|
||||||
char send_msg[128];
|
char send_msg[128];
|
||||||
|
|
||||||
lw_print("%s start\n", __func__);
|
lw_print("%s start\n", __func__);
|
||||||
|
@ -171,23 +195,25 @@ static void TCPSocketSendTask(void *arg)
|
||||||
struct sockaddr_in tcp_sock;
|
struct sockaddr_in tcp_sock;
|
||||||
tcp_sock.sin_family = AF_INET;
|
tcp_sock.sin_family = AF_INET;
|
||||||
tcp_sock.sin_port = htons(tcp_socket_port);
|
tcp_sock.sin_port = htons(tcp_socket_port);
|
||||||
tcp_sock.sin_addr.s_addr = PP_HTONL(LWIP_MAKEU32(tcp_socket_ip[0], tcp_socket_ip[1], tcp_socket_ip[2], tcp_socket_ip[3]));
|
tcp_sock.sin_addr.s_addr = inet_addr(tcp_ip_str);
|
||||||
|
|
||||||
memset(&(tcp_sock.sin_zero), 0, sizeof(tcp_sock.sin_zero));
|
memset(&(tcp_sock.sin_zero), 0, sizeof(tcp_sock.sin_zero));
|
||||||
|
|
||||||
if (connect(fd, (struct sockaddr *)&tcp_sock, sizeof(struct sockaddr)))
|
ret = connect(fd, (struct sockaddr *)&tcp_sock, sizeof(struct sockaddr));
|
||||||
|
if (ret)
|
||||||
{
|
{
|
||||||
lw_print("Unable to connect\n");
|
lw_print("Unable to connect %s = %d\n", tcp_ip_str, ret);
|
||||||
close(fd);
|
close(fd);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
lw_notice("\n\nTarget Port:%d\n\n", tcp_socket_port);
|
lw_print("TCP connect %s:%d success, start to send.\n", tcp_ip_str, tcp_socket_port);
|
||||||
|
|
||||||
while (cnt --)
|
while (cnt --)
|
||||||
{
|
{
|
||||||
lw_print("Lwip client is running.\n");
|
lw_print("Lwip client is running.\n");
|
||||||
snprintf(send_msg, sizeof(send_msg), "TCP test package times %d\r\n", cnt);
|
snprintf(send_msg, sizeof(send_msg), "TCP test package times %d\r\n", cnt);
|
||||||
sendto(fd, send_msg, strlen(send_msg), 0, (struct sockaddr*)&tcp_sock, sizeof(struct sockaddr));
|
send(fd, send_msg, strlen(send_msg), 0);
|
||||||
lw_notice("Send tcp msg: %s ", send_msg);
|
lw_notice("Send tcp msg: %s ", send_msg);
|
||||||
PrivTaskDelay(1000);
|
PrivTaskDelay(1000);
|
||||||
}
|
}
|
||||||
|
@ -196,47 +222,34 @@ static void TCPSocketSendTask(void *arg)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef ADD_XIZI_FETURES
|
#ifdef ADD_XIZI_FETURES
|
||||||
void TCPSocketSendTest(int argc, char *argv[])
|
void TCPSocketSendTest(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
if(argc >= 2)
|
if(argc >= 2)
|
||||||
{
|
{
|
||||||
lw_print("lw: [%s] target ip %s\n", __func__, argv[1]);
|
lw_print("lw: [%s] target ip %s\n", __func__, argv[1]);
|
||||||
if(sscanf(argv[1], "%d.%d.%d.%d:%d", &tcp_socket_ip[0], &tcp_socket_ip[1], &tcp_socket_ip[2], &tcp_socket_ip[3], &tcp_socket_port) == EOK)
|
tcp_set_ip(argv[1]);
|
||||||
{
|
|
||||||
sscanf(argv[1], "%d.%d.%d.%d", &tcp_socket_ip[0], &tcp_socket_ip[1], &tcp_socket_ip[2], &tcp_socket_ip[3]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lwip_config_tcp(lwip_ipaddr, lwip_netmask, tcp_socket_ip);
|
lwip_config_tcp(lwip_ipaddr, lwip_netmask, tcp_socket_ip);
|
||||||
sys_thread_new("TCP Socket Send", TCPSocketSendTask, NULL, LWIP_TASK_STACK_SIZE, LWIP_DEMO_TASK_PRIO);
|
sys_thread_new("TCP Socket Send", TCPSocketSendTask, NULL, LWIP_TASK_STACK_SIZE, LWIP_DEMO_TASK_PRIO);
|
||||||
}
|
}
|
||||||
|
|
||||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(0),
|
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(3),
|
||||||
TCPSocketSend, TCPSocketSendTest, TCP send demo);
|
TCPSocketSend, TCPSocketSendTest, TCP send demo);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef ADD_NUTTX_FETURES
|
#ifdef ADD_NUTTX_FETURES
|
||||||
|
void tcp_recv_demo(char *ip_str)
|
||||||
void tcp_set_ip(char *ip_str)
|
|
||||||
{
|
|
||||||
char ip[4] = {0};
|
|
||||||
if(sscanf(ip_str, "%d.%d.%d.%d", &ip[0], &ip[1], &ip[2], &ip[3]))
|
|
||||||
{
|
|
||||||
printf("config ip %s\n", ip_str);
|
|
||||||
memcpy(tcp_socket_ip, ip, 4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void tcp_recv_demo(void)
|
|
||||||
{
|
{
|
||||||
|
tcp_set_ip(ip_str);
|
||||||
TCPSocketRecvTask(NULL);
|
TCPSocketRecvTask(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void tcp_send_demo(void)
|
void tcp_send_demo(char *ip_str)
|
||||||
{
|
{
|
||||||
|
tcp_set_ip(ip_str);
|
||||||
TCPSocketSendTask(NULL);
|
TCPSocketSendTask(NULL);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -31,36 +31,60 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#define LWIP_DEMO_TIMES 3
|
#define LWIP_DEMO_TIMES 3
|
||||||
#define LWIP_LOCAL_PORT 6000
|
#define LWIP_LOCAL_PORT 4840
|
||||||
|
|
||||||
#define lw_error printf
|
#define lw_error printf
|
||||||
#define lw_notice printf
|
#define lw_notice printf
|
||||||
#define lw_print printf
|
#define lw_print printf
|
||||||
|
|
||||||
/** Create u32_t value from bytes */
|
|
||||||
#define LWIP_MAKEU32(a,b,c,d) (((uint32_t)((a) & 0xff) << 24) | \
|
|
||||||
((uint32_t)((b) & 0xff) << 16) | \
|
|
||||||
((uint32_t)((c) & 0xff) << 8) | \
|
|
||||||
(uint32_t)((d) & 0xff))
|
|
||||||
|
|
||||||
#define PP_HTONL(x) ((uint32_t)(x))
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define UDP_BUF_SIZE 65536
|
#define UDP_BUF_SIZE 65536
|
||||||
|
|
||||||
char udp_socket_ip[] = {192, 168, 250, 252};
|
char udp_socket_ip[] = {192, 168, 250, 252};
|
||||||
|
char udp_ip_str[128] = {0};
|
||||||
uint16_t udp_socket_port = LWIP_LOCAL_PORT;
|
uint16_t udp_socket_port = LWIP_LOCAL_PORT;
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void udp_set_ip(char *ip_str)
|
||||||
|
{
|
||||||
|
int ip1, ip2, ip3, ip4, port = 0;
|
||||||
|
|
||||||
|
if(ip_str == NULL)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(sscanf(ip_str, "%d.%d.%d.%d:%d", &ip1, &ip2, &ip3, &ip4, &port))
|
||||||
|
{
|
||||||
|
printf("config ip %s port %d\n", ip_str, port);
|
||||||
|
strcpy(udp_ip_str, ip_str);
|
||||||
|
udp_socket_ip[0] = ip1;
|
||||||
|
udp_socket_ip[1] = ip2;
|
||||||
|
udp_socket_ip[2] = ip3;
|
||||||
|
udp_socket_ip[3] = ip4;
|
||||||
|
if(port)
|
||||||
|
udp_socket_port = port;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(sscanf(ip_str, "%d.%d.%d.%d", &ip1, &ip2, &ip3, &ip4))
|
||||||
|
{
|
||||||
|
printf("config ip %s\n", ip_str);
|
||||||
|
udp_socket_ip[0] = ip1;
|
||||||
|
udp_socket_ip[1] = ip2;
|
||||||
|
udp_socket_ip[2] = ip3;
|
||||||
|
udp_socket_ip[3] = ip4;
|
||||||
|
strcpy(udp_ip_str, ip_str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void UdpSocketRecvTask(void *arg)
|
static void UdpSocketRecvTask(void *arg)
|
||||||
{
|
{
|
||||||
int fd = -1;
|
int fd = -1;
|
||||||
char *recv_buf;
|
char *recv_buf;
|
||||||
struct sockaddr_in udp_addr, server_addr;
|
struct sockaddr_in udp_addr, server_addr;
|
||||||
int recv_len;
|
int recv_len;
|
||||||
socklen_t addr_len;
|
|
||||||
|
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
|
@ -98,13 +122,13 @@ static void UdpSocketRecvTask(void *arg)
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
memset(recv_buf, 0, UDP_BUF_SIZE);
|
memset(recv_buf, 0, UDP_BUF_SIZE);
|
||||||
recv_len = recvfrom(fd, recv_buf, UDP_BUF_SIZE, 0, (struct sockaddr *)&server_addr, &addr_len);
|
recv_len = recv(fd, recv_buf, UDP_BUF_SIZE, 0);
|
||||||
if(recv_len > 0)
|
if(recv_len > 0)
|
||||||
{
|
{
|
||||||
lw_notice("Receive from : %s\n", inet_ntoa(server_addr.sin_addr));
|
lw_notice("Receive from : %s\n", inet_ntoa(server_addr.sin_addr));
|
||||||
lw_notice("Receive data : %s\n\n", recv_buf);
|
lw_notice("Receive data : %s\n\n", recv_buf);
|
||||||
}
|
}
|
||||||
sendto(fd, recv_buf, recv_len, 0, (struct sockaddr*)&server_addr, addr_len);
|
send(fd, recv_buf, recv_len, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
close(fd);
|
close(fd);
|
||||||
|
@ -118,14 +142,12 @@ void UdpSocketRecvTest(int argc, char *argv[])
|
||||||
if(argc >= 2)
|
if(argc >= 2)
|
||||||
{
|
{
|
||||||
lw_notice("lw: [%s] target ip %s\n", __func__, argv[1]);
|
lw_notice("lw: [%s] target ip %s\n", __func__, argv[1]);
|
||||||
if(sscanf(argv[1], "%d.%d.%d.%d:%d", &udp_socket_ip[0], &udp_socket_ip[1], &udp_socket_ip[2], &udp_socket_ip[3], &udp_socket_port) == EOK)
|
udp_set_ip(argv[1]);
|
||||||
{
|
|
||||||
sscanf(argv[1], "%d.%d.%d.%d", &udp_socket_ip[0], &udp_socket_ip[1], &udp_socket_ip[2], &udp_socket_ip[3]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lwip_config_tcp(lwip_ipaddr, lwip_netmask, udp_socket_ip);
|
lwip_config_tcp(lwip_ipaddr, lwip_netmask, udp_socket_ip);
|
||||||
sys_thread_new("UdpSocketRecvTask", UdpSocketRecvTask, NULL, LWIP_TASK_STACK_SIZE, LWIP_DEMO_TASK_PRIO);
|
sys_thread_new("UdpSocketRecvTask", UdpSocketRecvTask, NULL,
|
||||||
|
LWIP_TASK_STACK_SIZE, LWIP_DEMO_TASK_PRIO);
|
||||||
}
|
}
|
||||||
|
|
||||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(3),
|
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(3),
|
||||||
|
@ -150,7 +172,7 @@ static void UdpSocketSendTask(void *arg)
|
||||||
struct sockaddr_in udp_sock;
|
struct sockaddr_in udp_sock;
|
||||||
udp_sock.sin_family = AF_INET;
|
udp_sock.sin_family = AF_INET;
|
||||||
udp_sock.sin_port = htons(udp_socket_port);
|
udp_sock.sin_port = htons(udp_socket_port);
|
||||||
udp_sock.sin_addr.s_addr = PP_HTONL(LWIP_MAKEU32(udp_socket_ip[0], udp_socket_ip[1], udp_socket_ip[2], udp_socket_ip[3]));
|
udp_sock.sin_addr.s_addr = inet_addr(udp_ip_str);
|
||||||
memset(&(udp_sock.sin_zero), 0, sizeof(udp_sock.sin_zero));
|
memset(&(udp_sock.sin_zero), 0, sizeof(udp_sock.sin_zero));
|
||||||
|
|
||||||
if(connect(fd, (struct sockaddr *)&udp_sock, sizeof(struct sockaddr)))
|
if(connect(fd, (struct sockaddr *)&udp_sock, sizeof(struct sockaddr)))
|
||||||
|
@ -160,13 +182,14 @@ static void UdpSocketSendTask(void *arg)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
lw_print("UDP connect success, start to send.\n");
|
lw_print("UDP connect %s:%d success, start to send.\n",
|
||||||
lw_notice("\n\nTarget Port:%d\n\n", udp_sock.sin_port);
|
udp_ip_str,
|
||||||
|
udp_socket_port);
|
||||||
|
|
||||||
while (cnt --)
|
while(cnt --)
|
||||||
{
|
{
|
||||||
snprintf(send_str, sizeof(send_str), "UDP test package times %d\r\n", cnt);
|
snprintf(send_str, sizeof(send_str), "UDP test package times %d\r\n", cnt);
|
||||||
sendto(fd, send_str, strlen(send_str), 0, (struct sockaddr*)&udp_sock, sizeof(struct sockaddr));
|
send(fd, send_str, strlen(send_str), 0);
|
||||||
lw_notice("Send UDP msg: %s ", send_str);
|
lw_notice("Send UDP msg: %s ", send_str);
|
||||||
PrivTaskDelay(1000);
|
PrivTaskDelay(1000);
|
||||||
}
|
}
|
||||||
|
@ -181,14 +204,12 @@ void UdpSocketSendTest(int argc, char *argv[])
|
||||||
if(argc >= 2)
|
if(argc >= 2)
|
||||||
{
|
{
|
||||||
lw_notice("lw: [%s] target ip %s\n", __func__, argv[1]);
|
lw_notice("lw: [%s] target ip %s\n", __func__, argv[1]);
|
||||||
if(sscanf(argv[1], "%d.%d.%d.%d:%d", &udp_socket_ip[0], &udp_socket_ip[1], &udp_socket_ip[2], &udp_socket_ip[3], &udp_socket_port) == EOK)
|
udp_set_ip(argv[1]);
|
||||||
{
|
|
||||||
sscanf(argv[1], "%d.%d.%d.%d", &udp_socket_ip[0], &udp_socket_ip[1], &udp_socket_ip[2], &udp_socket_ip[3]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lwip_config_tcp(lwip_ipaddr, lwip_netmask, udp_socket_ip);
|
lwip_config_tcp(lwip_ipaddr, lwip_netmask, udp_socket_ip);
|
||||||
sys_thread_new("UdpSocketSendTask", UdpSocketSendTask, NULL, LWIP_TASK_STACK_SIZE, LWIP_DEMO_TASK_PRIO);
|
sys_thread_new("UdpSocketSendTask", UdpSocketSendTask, NULL, LWIP_TASK_STACK_SIZE,
|
||||||
|
sLWIP_DEMO_TASK_PRIO);
|
||||||
}
|
}
|
||||||
|
|
||||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(3),
|
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(3),
|
||||||
|
@ -196,23 +217,15 @@ SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) |
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ADD_NUTTX_FETURES
|
#ifdef ADD_NUTTX_FETURES
|
||||||
void udp_set_ip(char *ip_str)
|
void udp_recv_demo(char *ip_str)
|
||||||
{
|
|
||||||
char ip[4] = {0};
|
|
||||||
if(sscanf(ip_str, "%d.%d.%d.%d", &ip[0], &ip[1], &ip[2], &ip[3]))
|
|
||||||
{
|
|
||||||
printf("config ip %s\n", ip_str);
|
|
||||||
memcpy(udp_socket_ip, ip, 4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void udp_recv_demo(void)
|
|
||||||
{
|
{
|
||||||
|
udp_set_ip(ip_str);
|
||||||
UdpSocketRecvTask(NULL);
|
UdpSocketRecvTask(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void udp_send_demo(void)
|
void udp_send_demo(char *ip_str)
|
||||||
{
|
{
|
||||||
|
udp_set_ip(ip_str);
|
||||||
UdpSocketSendTask(NULL);
|
UdpSocketSendTask(NULL);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -23,6 +23,7 @@ CONFIG_BOARD_LOOPSPERMSEC=104926
|
||||||
CONFIG_BUILTIN=y
|
CONFIG_BUILTIN=y
|
||||||
CONFIG_CLOCK_MONOTONIC=y
|
CONFIG_CLOCK_MONOTONIC=y
|
||||||
CONFIG_ETH0_PHY_LAN8720=y
|
CONFIG_ETH0_PHY_LAN8720=y
|
||||||
|
CONFIG_FS_PROCFS=y
|
||||||
CONFIG_IMXRT_ENET_PHYINIT=y
|
CONFIG_IMXRT_ENET_PHYINIT=y
|
||||||
CONFIG_IMXRT_GPIO_IRQ=y
|
CONFIG_IMXRT_GPIO_IRQ=y
|
||||||
CONFIG_IMXRT_GPIO3_0_15_IRQ=y
|
CONFIG_IMXRT_GPIO3_0_15_IRQ=y
|
||||||
|
@ -77,3 +78,5 @@ CONFIG_NSH_ROMFSETC=y
|
||||||
CONFIG_NSH_ARCHROMFS=y
|
CONFIG_NSH_ARCHROMFS=y
|
||||||
CONFIG_BOARDCTL_RESET=y
|
CONFIG_BOARDCTL_RESET=y
|
||||||
CONFIG_INIT_ENTRYPOINT="nsh_main"
|
CONFIG_INIT_ENTRYPOINT="nsh_main"
|
||||||
|
CONFIG_APPLICATION_CONNECTION=y
|
||||||
|
CONFIG_SOCKET_DEMO=y
|
||||||
|
|
Loading…
Reference in New Issue