diff --git a/APP_Framework/Applications/connection_app/socket_demo/lwip_tcp_socket_demo.c b/APP_Framework/Applications/connection_app/socket_demo/lwip_tcp_socket_demo.c index ec31187a9..2675b0964 100755 --- a/APP_Framework/Applications/connection_app/socket_demo/lwip_tcp_socket_demo.c +++ b/APP_Framework/Applications/connection_app/socket_demo/lwip_tcp_socket_demo.c @@ -43,21 +43,47 @@ char tcp_socket_ip[] = {192, 168, 250, 252}; #define lw_error printf #define LWIP_DEMO_TIMES 3 - -/** 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 +#define LWIP_TARGET_PORT 4840 #endif 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) { int fd = -1, clientfd; @@ -97,7 +123,7 @@ static void TCPSocketRecvTask(void *arg) } 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 if (listen(fd, 5) != 0 ) @@ -115,7 +141,8 @@ static void TCPSocketRecvTask(void *arg) while(1) { 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) { 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) { 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) - { - sscanf(argv[1], "%d.%d.%d.%d", &tcp_socket_ip[0], &tcp_socket_ip[1], &tcp_socket_ip[2], &tcp_socket_ip[3]); - } + tcp_set_ip(argv[1]); } 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); #endif - static void TCPSocketSendTask(void *arg) { int cnt = LWIP_DEMO_TIMES; int fd = -1; + int ret; char send_msg[128]; lw_print("%s start\n", __func__); @@ -171,23 +195,25 @@ static void TCPSocketSendTask(void *arg) struct sockaddr_in tcp_sock; tcp_sock.sin_family = AF_INET; 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)); - 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); 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 --) { lw_print("Lwip client is running.\n"); 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); PrivTaskDelay(1000); } @@ -196,47 +222,34 @@ static void TCPSocketSendTask(void *arg) return; } - #ifdef ADD_XIZI_FETURES void TCPSocketSendTest(int argc, char *argv[]) { if(argc >= 2) { 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) - { - sscanf(argv[1], "%d.%d.%d.%d", &tcp_socket_ip[0], &tcp_socket_ip[1], &tcp_socket_ip[2], &tcp_socket_ip[3]); - } + tcp_set_ip(argv[1]); } 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); } -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); #endif #ifdef ADD_NUTTX_FETURES - -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) +void tcp_recv_demo(char *ip_str) { + tcp_set_ip(ip_str); TCPSocketRecvTask(NULL); } -void tcp_send_demo(void) +void tcp_send_demo(char *ip_str) { + tcp_set_ip(ip_str); TCPSocketSendTask(NULL); } #endif diff --git a/APP_Framework/Applications/connection_app/socket_demo/lwip_udp_socket_demo.c b/APP_Framework/Applications/connection_app/socket_demo/lwip_udp_socket_demo.c index 0b0211cab..ef2c06d53 100755 --- a/APP_Framework/Applications/connection_app/socket_demo/lwip_udp_socket_demo.c +++ b/APP_Framework/Applications/connection_app/socket_demo/lwip_udp_socket_demo.c @@ -31,36 +31,60 @@ #include #define LWIP_DEMO_TIMES 3 -#define LWIP_LOCAL_PORT 6000 +#define LWIP_LOCAL_PORT 4840 #define lw_error printf #define lw_notice 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 #define UDP_BUF_SIZE 65536 char udp_socket_ip[] = {192, 168, 250, 252}; +char udp_ip_str[128] = {0}; 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) { int fd = -1; char *recv_buf; struct sockaddr_in udp_addr, server_addr; int recv_len; - socklen_t addr_len; while(1) { @@ -98,13 +122,13 @@ static void UdpSocketRecvTask(void *arg) while(1) { 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) { lw_notice("Receive from : %s\n", inet_ntoa(server_addr.sin_addr)); 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); @@ -118,14 +142,12 @@ void UdpSocketRecvTest(int argc, char *argv[]) if(argc >= 2) { 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) - { - sscanf(argv[1], "%d.%d.%d.%d", &udp_socket_ip[0], &udp_socket_ip[1], &udp_socket_ip[2], &udp_socket_ip[3]); - } + udp_set_ip(argv[1]); } 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), @@ -150,7 +172,7 @@ static void UdpSocketSendTask(void *arg) struct sockaddr_in udp_sock; udp_sock.sin_family = AF_INET; 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)); if(connect(fd, (struct sockaddr *)&udp_sock, sizeof(struct sockaddr))) @@ -160,13 +182,14 @@ static void UdpSocketSendTask(void *arg) return; } - lw_print("UDP connect success, start to send.\n"); - lw_notice("\n\nTarget Port:%d\n\n", udp_sock.sin_port); + lw_print("UDP connect %s:%d success, start to send.\n", + udp_ip_str, + udp_socket_port); - while (cnt --) + while(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); PrivTaskDelay(1000); } @@ -181,14 +204,12 @@ void UdpSocketSendTest(int argc, char *argv[]) if(argc >= 2) { 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) - { - sscanf(argv[1], "%d.%d.%d.%d", &udp_socket_ip[0], &udp_socket_ip[1], &udp_socket_ip[2], &udp_socket_ip[3]); - } + udp_set_ip(argv[1]); } 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), @@ -196,23 +217,15 @@ SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | #endif #ifdef ADD_NUTTX_FETURES -void udp_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(udp_socket_ip, ip, 4); - } -} - -void udp_recv_demo(void) +void udp_recv_demo(char *ip_str) { + udp_set_ip(ip_str); UdpSocketRecvTask(NULL); } -void udp_send_demo(void) +void udp_send_demo(char *ip_str) { + udp_set_ip(ip_str); UdpSocketSendTask(NULL); } #endif diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/xidatong-arm32/configs/netnsh/defconfig b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/xidatong-arm32/configs/netnsh/defconfig index 9c4f04b90..a218aecc8 100644 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/xidatong-arm32/configs/netnsh/defconfig +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/xidatong-arm32/configs/netnsh/defconfig @@ -23,6 +23,7 @@ CONFIG_BOARD_LOOPSPERMSEC=104926 CONFIG_BUILTIN=y CONFIG_CLOCK_MONOTONIC=y CONFIG_ETH0_PHY_LAN8720=y +CONFIG_FS_PROCFS=y CONFIG_IMXRT_ENET_PHYINIT=y CONFIG_IMXRT_GPIO_IRQ=y CONFIG_IMXRT_GPIO3_0_15_IRQ=y @@ -77,3 +78,5 @@ CONFIG_NSH_ROMFSETC=y CONFIG_NSH_ARCHROMFS=y CONFIG_BOARDCTL_RESET=y CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_APPLICATION_CONNECTION=y +CONFIG_SOCKET_DEMO=y