support control json file
This commit is contained in:
@@ -232,7 +232,7 @@ netconn_prepare_delete(struct netconn *conn)
|
||||
err_t
|
||||
netconn_delete(struct netconn *conn)
|
||||
{
|
||||
err_t err;
|
||||
err_t err = ERR_OK;
|
||||
|
||||
/* No ASSERT here because possible to get a (conn == NULL) if we got an accept error */
|
||||
if (conn == NULL) {
|
||||
@@ -245,8 +245,9 @@ netconn_delete(struct netconn *conn)
|
||||
err = ERR_OK;
|
||||
} else
|
||||
#endif /* LWIP_NETCONN_FULLDUPLEX */
|
||||
//tst by wly
|
||||
{
|
||||
// err = netconn_prepare_delete(conn);
|
||||
err = netconn_prepare_delete(conn);
|
||||
}
|
||||
if (err == ERR_OK) {
|
||||
netconn_free(conn);
|
||||
|
||||
@@ -497,6 +497,18 @@ get_socket(int fd)
|
||||
return sock;
|
||||
}
|
||||
|
||||
void pr_socket_buf(void)
|
||||
{
|
||||
int i;
|
||||
lw_debug("socket:\n");
|
||||
for (i = 0; i < NUM_SOCKETS; ++i) {
|
||||
// if (!sockets[i].conn)
|
||||
lw_debug("%d: conn %p rcv %d send %d wait %d\n", i, sockets[i].conn, sockets[i].rcvevent, sockets[i].sendevent,
|
||||
sockets[i].select_waiting);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Allocate a new socket for a given netconn.
|
||||
*
|
||||
@@ -588,6 +600,7 @@ free_socket_free_elements(int is_tcp, struct netconn *conn, union lwip_sock_last
|
||||
}
|
||||
if (conn != NULL) {
|
||||
/* netconn_prepare_delete() has already been called, here we only free the conn */
|
||||
lw_debug("lw: [%s] tcp %d socket %d accept %d recv %d\n", __func__, is_tcp, conn->socket, conn->acceptmbox, conn->recvmbox);
|
||||
netconn_delete(conn);
|
||||
}
|
||||
}
|
||||
@@ -660,6 +673,8 @@ lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen)
|
||||
|
||||
newsock = alloc_socket(newconn, 1);
|
||||
if (newsock == -1) {
|
||||
lw_debug("lw: [%s] recv %d\n", __func__, newconn->recvmbox);
|
||||
pr_socket_buf();
|
||||
netconn_delete(newconn);
|
||||
sock_set_errno(sock, ENFILE);
|
||||
done_socket(sock);
|
||||
@@ -696,6 +711,8 @@ lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen)
|
||||
err = netconn_peer(newconn, &naddr, &port);
|
||||
if (err != ERR_OK) {
|
||||
LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_accept(%d): netconn_peer failed, err=%d\n", s, err));
|
||||
lw_debug("lw: [%s] recv %x\n", __func__, newconn->recvmbox);
|
||||
|
||||
netconn_delete(newconn);
|
||||
free_socket(nsock, 1);
|
||||
sock_set_errno(sock, err_to_errno(err));
|
||||
@@ -1739,6 +1756,8 @@ lwip_socket(int domain, int type, int protocol)
|
||||
i = alloc_socket(conn, 0);
|
||||
|
||||
if (i == -1) {
|
||||
lw_debug("lw: [%s] recv %d delete no socket\n", __func__, conn->recvmbox);
|
||||
pr_socket_buf();
|
||||
netconn_delete(conn);
|
||||
set_errno(ENFILE);
|
||||
return -1;
|
||||
@@ -1747,6 +1766,7 @@ lwip_socket(int domain, int type, int protocol)
|
||||
done_socket(&sockets[i - LWIP_SOCKET_OFFSET]);
|
||||
LWIP_DEBUGF(SOCKETS_DEBUG, ("%d\n", i));
|
||||
set_errno(0);
|
||||
lw_debug("lw: [%s] new socket %d %p\n", __func__, i, conn);
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ a lot of data that needs to be copied, this should be set high. */
|
||||
#define MEMP_NUM_TCP_PCB_LISTEN 2
|
||||
/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
|
||||
segments. */
|
||||
#define MEMP_NUM_TCP_SEG 120
|
||||
#define MEMP_NUM_TCP_SEG 20
|
||||
/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
|
||||
timeouts. */
|
||||
#define MEMP_NUM_SYS_TIMEOUT 6
|
||||
@@ -212,26 +212,19 @@ The STM32F4x7 allows computing and verifying the IP, UDP, TCP and ICMP checksums
|
||||
---------------------------------
|
||||
*/
|
||||
|
||||
#define DEFAULT_RAW_RECVMBOX_SIZE 10
|
||||
#define DEFAULT_UDP_RECVMBOX_SIZE 10
|
||||
#define DEFAULT_TCP_RECVMBOX_SIZE 10
|
||||
#define DEFAULT_ACCEPTMBOX_SIZE 10
|
||||
#define DEFAULT_RAW_RECVMBOX_SIZE 8
|
||||
#define DEFAULT_UDP_RECVMBOX_SIZE 8
|
||||
#define DEFAULT_TCP_RECVMBOX_SIZE 8
|
||||
#define DEFAULT_ACCEPTMBOX_SIZE 8
|
||||
|
||||
#define DEFAULT_THREAD_PRIO 20
|
||||
#define DEFAULT_THREAD_STACKSIZE 1024
|
||||
|
||||
#define TCPIP_THREAD_NAME "tcp"
|
||||
#define TCPIP_THREAD_STACKSIZE 8192
|
||||
#define TCPIP_MBOX_SIZE 10
|
||||
#define TCPIP_MBOX_SIZE 8
|
||||
#define TCPIP_THREAD_PRIO 15
|
||||
|
||||
//#define IPERF_SERVER_THREAD_NAME "iperf_server"
|
||||
//#define IPERF_SERVER_THREAD_STACKSIZE 1024
|
||||
//#define IPERF_SERVER_THREAD_PRIO 0
|
||||
|
||||
//#define BLOCK_TIME 250
|
||||
//#define BLOCK_TIME_WAITING_FOR_INPUT ( ( portTickType ) 100 )
|
||||
|
||||
/*
|
||||
----------------------------------------
|
||||
---------- Lwip Debug options ----------
|
||||
@@ -259,7 +252,8 @@ typedef unsigned int nfds_t;
|
||||
#define lw_print //KPrintf
|
||||
#define lw_trace() //KPrintf("lw: [%s][%d] passed!\n", __func__, __LINE__)
|
||||
#define lw_error() //KPrintf("lw: [%s][%d] failed!\n", __func__, __LINE__)
|
||||
#define lw_pr_info KPrintf
|
||||
#define lw_debug KPrintf
|
||||
#define lw_notice KPrintf
|
||||
#endif /* __LWIPOPTS_H__ */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
||||
@@ -513,16 +513,16 @@ void lwip_config_net(char *ip, char *mask, char *gw)
|
||||
|
||||
if(chk_lwip_bit(LWIP_PRINT_FLAG))
|
||||
{
|
||||
lw_pr_info("\r\n************************************************\r\n");
|
||||
lw_pr_info(" Network Configuration\r\n");
|
||||
lw_pr_info("************************************************\r\n");
|
||||
lw_pr_info(" IPv4 Address : %u.%u.%u.%u\r\n", ((u8_t *)&net_ipaddr)[0], ((u8_t *)&net_ipaddr)[1],
|
||||
lw_notice("\r\n************************************************\r\n");
|
||||
lw_notice(" Network Configuration\r\n");
|
||||
lw_notice("************************************************\r\n");
|
||||
lw_notice(" IPv4 Address : %u.%u.%u.%u\r\n", ((u8_t *)&net_ipaddr)[0], ((u8_t *)&net_ipaddr)[1],
|
||||
((u8_t *)&net_ipaddr)[2], ((u8_t *)&net_ipaddr)[3]);
|
||||
lw_pr_info(" IPv4 Subnet mask : %u.%u.%u.%u\r\n", ((u8_t *)&net_netmask)[0], ((u8_t *)&net_netmask)[1],
|
||||
lw_notice(" IPv4 Subnet mask : %u.%u.%u.%u\r\n", ((u8_t *)&net_netmask)[0], ((u8_t *)&net_netmask)[1],
|
||||
((u8_t *)&net_netmask)[2], ((u8_t *)&net_netmask)[3]);
|
||||
lw_pr_info(" IPv4 Gateway : %u.%u.%u.%u\r\n", ((u8_t *)&net_gw)[0], ((u8_t *)&net_gw)[1],
|
||||
lw_notice(" IPv4 Gateway : %u.%u.%u.%u\r\n", ((u8_t *)&net_gw)[0], ((u8_t *)&net_gw)[1],
|
||||
((u8_t *)&net_gw)[2], ((u8_t *)&net_gw)[3]);
|
||||
lw_pr_info("************************************************\r\n");
|
||||
lw_notice("************************************************\r\n");
|
||||
}
|
||||
lwip_config_input(&gnetif);
|
||||
}
|
||||
|
||||
@@ -355,7 +355,7 @@ tcp_write_checks(struct tcp_pcb *pcb, u16_t len)
|
||||
* it can send them more efficiently by combining them together).
|
||||
* To prompt the system to send data now, call tcp_output() after
|
||||
* calling tcp_write().
|
||||
*
|
||||
*
|
||||
* This function enqueues the data pointed to by the argument dataptr. The length of
|
||||
* the data is passed as the len parameter. The apiflags can be one or more of:
|
||||
* - TCP_WRITE_FLAG_COPY: indicates whether the new memory should be allocated
|
||||
@@ -1386,13 +1386,17 @@ tcp_output(struct tcp_pcb *pcb)
|
||||
/* In the case of fast retransmit, the packet should not go to the tail
|
||||
* of the unacked queue, but rather somewhere before it. We need to check for
|
||||
* this case. -STJ Jul 27, 2004 */
|
||||
lw_debug("check %s seg %p useg %p\n", __func__, seg, useg);
|
||||
if (TCP_SEQ_LT(lwip_ntohl(seg->tcphdr->seqno), lwip_ntohl(useg->tcphdr->seqno))) {
|
||||
/* add segment to before tail of unacked list, keeping the list sorted */
|
||||
struct tcp_seg **cur_seg = &(pcb->unacked);
|
||||
lw_debug("check %s ", __func__);
|
||||
while (*cur_seg &&
|
||||
TCP_SEQ_LT(lwip_ntohl((*cur_seg)->tcphdr->seqno), lwip_ntohl(seg->tcphdr->seqno))) {
|
||||
lw_debug("%p -> ", *cur_seg);
|
||||
cur_seg = &((*cur_seg)->next );
|
||||
}
|
||||
lw_debug("\n");
|
||||
seg->next = (*cur_seg);
|
||||
(*cur_seg) = seg;
|
||||
} else {
|
||||
|
||||
@@ -81,18 +81,18 @@ void LwipShowIPTask(int argc, char *argv[])
|
||||
{
|
||||
char mac_addr[] = configMAC_ADDR;
|
||||
|
||||
lw_pr_info("\r\n************************************************\r\n");
|
||||
lw_pr_info(" Network Configuration\r\n");
|
||||
lw_pr_info("************************************************\r\n");
|
||||
lw_pr_info(" IPv4 Address : %u.%u.%u.%u\r\n", ((u8_t *)&lwip_ipaddr)[0], ((u8_t *)&lwip_ipaddr)[1],
|
||||
lw_notice("\r\n************************************************\r\n");
|
||||
lw_notice(" Network Configuration\r\n");
|
||||
lw_notice("************************************************\r\n");
|
||||
lw_notice(" IPv4 Address : %u.%u.%u.%u\r\n", ((u8_t *)&lwip_ipaddr)[0], ((u8_t *)&lwip_ipaddr)[1],
|
||||
((u8_t *)&lwip_ipaddr)[2], ((u8_t *)&lwip_ipaddr)[3]);
|
||||
lw_pr_info(" IPv4 Subnet mask : %u.%u.%u.%u\r\n", ((u8_t *)&lwip_netmask)[0], ((u8_t *)&lwip_netmask)[1],
|
||||
lw_notice(" IPv4 Subnet mask : %u.%u.%u.%u\r\n", ((u8_t *)&lwip_netmask)[0], ((u8_t *)&lwip_netmask)[1],
|
||||
((u8_t *)&lwip_netmask)[2], ((u8_t *)&lwip_netmask)[3]);
|
||||
lw_pr_info(" IPv4 Gateway : %u.%u.%u.%u\r\n", ((u8_t *)&lwip_gwaddr)[0], ((u8_t *)&lwip_gwaddr)[1],
|
||||
lw_notice(" IPv4 Gateway : %u.%u.%u.%u\r\n", ((u8_t *)&lwip_gwaddr)[0], ((u8_t *)&lwip_gwaddr)[1],
|
||||
((u8_t *)&lwip_gwaddr)[2], ((u8_t *)&lwip_gwaddr)[3]);
|
||||
lw_pr_info(" MAC Address : %x:%x:%x:%x:%x:%x\r\n", mac_addr[0], mac_addr[1], mac_addr[2],
|
||||
lw_notice(" MAC Address : %x:%x:%x:%x:%x:%x\r\n", mac_addr[0], mac_addr[1], mac_addr[2],
|
||||
mac_addr[3], mac_addr[4], mac_addr[5]);
|
||||
lw_pr_info("************************************************\r\n");
|
||||
lw_notice("************************************************\r\n");
|
||||
}
|
||||
|
||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(0),
|
||||
|
||||
@@ -61,54 +61,54 @@ int LwipPrintDHCP(struct netif *netif)
|
||||
{
|
||||
dhcp_last_state = dhcp->state;
|
||||
|
||||
lw_pr_info(" DHCP state : ");
|
||||
lw_notice(" DHCP state : ");
|
||||
switch (dhcp_last_state)
|
||||
{
|
||||
case DHCP_STATE_OFF:
|
||||
lw_pr_info("OFF");
|
||||
lw_notice("OFF");
|
||||
break;
|
||||
case DHCP_STATE_REQUESTING:
|
||||
lw_pr_info("REQUESTING");
|
||||
lw_notice("REQUESTING");
|
||||
break;
|
||||
case DHCP_STATE_INIT:
|
||||
lw_pr_info("INIT");
|
||||
lw_notice("INIT");
|
||||
break;
|
||||
case DHCP_STATE_REBOOTING:
|
||||
lw_pr_info("REBOOTING");
|
||||
lw_notice("REBOOTING");
|
||||
break;
|
||||
case DHCP_STATE_REBINDING:
|
||||
lw_pr_info("REBINDING");
|
||||
lw_notice("REBINDING");
|
||||
break;
|
||||
case DHCP_STATE_RENEWING:
|
||||
lw_pr_info("RENEWING");
|
||||
lw_notice("RENEWING");
|
||||
break;
|
||||
case DHCP_STATE_SELECTING:
|
||||
lw_pr_info("SELECTING");
|
||||
lw_notice("SELECTING");
|
||||
break;
|
||||
case DHCP_STATE_INFORMING:
|
||||
lw_pr_info("INFORMING");
|
||||
lw_notice("INFORMING");
|
||||
break;
|
||||
case DHCP_STATE_CHECKING:
|
||||
lw_pr_info("CHECKING");
|
||||
lw_notice("CHECKING");
|
||||
break;
|
||||
case DHCP_STATE_BOUND:
|
||||
lw_pr_info("BOUND");
|
||||
lw_notice("BOUND");
|
||||
break;
|
||||
case DHCP_STATE_BACKING_OFF:
|
||||
lw_pr_info("BACKING_OFF");
|
||||
lw_notice("BACKING_OFF");
|
||||
break;
|
||||
default:
|
||||
lw_pr_info("%u", dhcp_last_state);
|
||||
lw_notice("%u", dhcp_last_state);
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
lw_pr_info("\r\n");
|
||||
lw_notice("\r\n");
|
||||
|
||||
if (dhcp_last_state == DHCP_STATE_BOUND)
|
||||
{
|
||||
lw_pr_info("\r\n IPv4 Address : %s\r\n", ipaddr_ntoa(&netif->ip_addr));
|
||||
lw_pr_info(" IPv4 Subnet mask : %s\r\n", ipaddr_ntoa(&netif->netmask));
|
||||
lw_pr_info(" IPv4 Gateway : %s\r\n\r\n", ipaddr_ntoa(&netif->gw));
|
||||
lw_notice("\r\n IPv4 Address : %s\r\n", ipaddr_ntoa(&netif->ip_addr));
|
||||
lw_notice(" IPv4 Subnet mask : %s\r\n", ipaddr_ntoa(&netif->netmask));
|
||||
lw_notice(" IPv4 Gateway : %s\r\n\r\n", ipaddr_ntoa(&netif->gw));
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ void LwipPingTest(int argc, char *argv[])
|
||||
{
|
||||
if(sscanf(argv[1], "%d.%d.%d.%d", &lwip_gwaddr[0], &lwip_gwaddr[1], &lwip_gwaddr[2], &lwip_gwaddr[3]) == EOF)
|
||||
{
|
||||
lw_pr_info("input wrong ip\n");
|
||||
lw_notice("input wrong ip\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,52 +27,61 @@
|
||||
|
||||
#define MSG_SIZE 128
|
||||
|
||||
typedef struct LwipTcpSocketStruct
|
||||
{
|
||||
char ip[6];
|
||||
uint16_t port;
|
||||
char *buf; // test buffer
|
||||
}LwipTcpSocketParamType;
|
||||
|
||||
// this is for test in shell, in fact, shell restrict the length of input string, which is less then 128
|
||||
char tcp_send_msg[MSG_SIZE] = {0};
|
||||
char tcp_target[] = {192, 168, 250, 252};
|
||||
uint16_t tcp_port = LWIP_TARGET_PORT;
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
static void LwipTcpSendTask(void *arg)
|
||||
{
|
||||
lw_print("LwipTcpSendTask start.\n");
|
||||
lw_notice("LwipTcpSendTask start.\n");
|
||||
|
||||
int fd = -1;
|
||||
fd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (fd < 0)
|
||||
{
|
||||
lw_print("Socket error\n");
|
||||
lw_notice("Socket error\n");
|
||||
return;
|
||||
}
|
||||
|
||||
LwipTcpSocketParamType *param = (LwipTcpSocketParamType *)arg;
|
||||
|
||||
struct sockaddr_in tcp_sock;
|
||||
tcp_sock.sin_family = AF_INET;
|
||||
tcp_sock.sin_port = htons(LWIP_TARGET_PORT);
|
||||
tcp_sock.sin_addr.s_addr = PP_HTONL(LWIP_MAKEU32(tcp_target[0], tcp_target[1], tcp_target[2], tcp_target[3]));
|
||||
tcp_sock.sin_port = htons(param->port);
|
||||
tcp_sock.sin_addr.s_addr = PP_HTONL(LWIP_MAKEU32(param->ip[0], param->ip[1], param->ip[2], param->ip[3]));
|
||||
memset(&(tcp_sock.sin_zero), 0, sizeof(tcp_sock.sin_zero));
|
||||
|
||||
if (connect(fd, (struct sockaddr *)&tcp_sock, sizeof(struct sockaddr)))
|
||||
{
|
||||
lw_print("Unable to connect\n");
|
||||
goto __exit;
|
||||
lw_notice("Unable to connect\n");
|
||||
closesocket(fd);
|
||||
return;
|
||||
}
|
||||
|
||||
lw_print("tcp connect success, start to send.\n");
|
||||
lw_print("\n\nTarget Port:%d\n\n", tcp_sock.sin_port);
|
||||
lw_notice("tcp connect success, start to send.\n");
|
||||
lw_notice("\n\nTarget Port:%d\n\n", tcp_sock.sin_port);
|
||||
|
||||
sendto(fd, tcp_send_msg, strlen(tcp_send_msg), 0, (struct sockaddr*)&tcp_sock, sizeof(struct sockaddr));
|
||||
|
||||
lw_print("Send tcp msg: %s ", tcp_send_msg);
|
||||
|
||||
__exit:
|
||||
if (fd >= 0)
|
||||
closesocket(fd);
|
||||
lw_notice("Send tcp msg: %s ", tcp_send_msg);
|
||||
|
||||
closesocket(fd);
|
||||
return;
|
||||
}
|
||||
|
||||
void LwipTcpSendTest(int argc, char *argv[])
|
||||
{
|
||||
LwipTcpSocketParamType param;
|
||||
memset(tcp_send_msg, 0, MSG_SIZE);
|
||||
if(argc >= 2)
|
||||
{
|
||||
@@ -86,11 +95,20 @@ void LwipTcpSendTest(int argc, char *argv[])
|
||||
|
||||
if(argc >= 3)
|
||||
{
|
||||
sscanf(argv[2], "%d.%d.%d.%d", &tcp_target[0], &tcp_target[1], &tcp_target[2], &tcp_target[3]);
|
||||
if(sscanf(argv[2], "%d.%d.%d.%d:%d", &tcp_target[0], &tcp_target[1], &tcp_target[2], &tcp_target[3], &tcp_port) == EOK)
|
||||
{
|
||||
sscanf(argv[2], "%d.%d.%d.%d", &tcp_target[0], &tcp_target[1], &tcp_target[2], &tcp_target[3]);
|
||||
}
|
||||
}
|
||||
lw_notice("get ipaddr %d.%d.%d.%d:%d\n", tcp_target[0], tcp_target[1], tcp_target[2], tcp_target[3], tcp_port);
|
||||
lwip_config_tcp(lwip_ipaddr, lwip_netmask, tcp_target);
|
||||
|
||||
lwip_config_tcp(lwip_ipaddr, lwip_netmask, lwip_gwaddr);
|
||||
sys_thread_new("tcp send", LwipTcpSendTask, NULL, LWIP_TASK_STACK_SIZE, LWIP_DEMO_TASK_PRIO);
|
||||
memcpy(param.ip, tcp_target, 4);
|
||||
param.port = tcp_port;
|
||||
param.buf = malloc(MSG_SIZE);
|
||||
memcpy(param.buf, tcp_send_msg, MSG_SIZE);
|
||||
|
||||
sys_thread_new("tcp send", LwipTcpSendTask, ¶m, 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),
|
||||
|
||||
@@ -30,7 +30,8 @@
|
||||
#define PBUF_SIZE 27
|
||||
|
||||
static struct udp_pcb *udpecho_raw_pcb;
|
||||
char udp_target[] = {192, 168, 250, 252};
|
||||
char udp_demo_ip[] = {192, 168, 250, 252};
|
||||
uint16_t udp_demo_port = LWIP_TARGET_PORT;
|
||||
char hello_str[] = {"hello world\r\n"};
|
||||
char udp_send_msg[] = "\n\nThis one is UDP pkg. Congratulations on you.\n\n";
|
||||
|
||||
@@ -52,28 +53,23 @@ static void LwipUDPSendTask(void *arg)
|
||||
|
||||
struct sockaddr_in udp_sock;
|
||||
udp_sock.sin_family = AF_INET;
|
||||
udp_sock.sin_port = htons(LWIP_TARGET_PORT);
|
||||
udp_sock.sin_addr.s_addr = PP_HTONL(LWIP_MAKEU32(udp_target[0],udp_target[1],udp_target[2],udp_target[3]));
|
||||
udp_sock.sin_port = htons(udp_demo_port);
|
||||
udp_sock.sin_addr.s_addr = PP_HTONL(LWIP_MAKEU32(udp_demo_ip[0], udp_demo_ip[1], udp_demo_ip[2], udp_demo_ip[3]));
|
||||
memset(&(udp_sock.sin_zero), 0, sizeof(udp_sock.sin_zero));
|
||||
|
||||
if (connect(socket_fd, (struct sockaddr *)&udp_sock, sizeof(struct sockaddr)))
|
||||
{
|
||||
lw_print("Unable to connect\n");
|
||||
goto __exit;
|
||||
closesocket(socket_fd);
|
||||
return;
|
||||
}
|
||||
|
||||
lw_print("UDP connect success, start to send.\n");
|
||||
lw_print("\n\nTarget Port:%d\n\n", udp_sock.sin_port);
|
||||
|
||||
sendto(socket_fd, udp_send_msg, strlen(udp_send_msg), 0, (struct sockaddr*)&udp_sock, sizeof(struct sockaddr));
|
||||
lw_pr_info("Send UDP msg: %s ", udp_send_msg);
|
||||
|
||||
__exit:
|
||||
if (socket_fd >= 0)
|
||||
{
|
||||
closesocket(socket_fd);
|
||||
}
|
||||
|
||||
lw_notice("Send UDP msg: %s ", udp_send_msg);
|
||||
closesocket(socket_fd);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -86,7 +82,7 @@ void *LwipUdpSendTest(int argc, char *argv[])
|
||||
|
||||
if(argc == 1)
|
||||
{
|
||||
lw_print("lw: [%s] gw %d.%d.%d.%d\n", __func__, udp_target[0], udp_target[1], udp_target[2], udp_target[3]);
|
||||
lw_print("lw: [%s] gw %d.%d.%d.%d\n", __func__, udp_demo_ip[0], udp_demo_ip[1], udp_demo_ip[2], udp_demo_ip[3]);
|
||||
strncpy(udp_send_msg, hello_str, strlen(hello_str));
|
||||
}
|
||||
else
|
||||
@@ -95,12 +91,12 @@ void *LwipUdpSendTest(int argc, char *argv[])
|
||||
strncat(udp_send_msg, "\r\n", 2);
|
||||
if(argc == 3)
|
||||
{
|
||||
sscanf(argv[2], "%d.%d.%d.%d", &udp_target[0], &udp_target[1], &udp_target[2], &udp_target[3]);
|
||||
sscanf(argv[2], "%d.%d.%d.%d", &udp_demo_ip[0], &udp_demo_ip[1], &udp_demo_ip[2], &udp_demo_ip[3]);
|
||||
}
|
||||
}
|
||||
lw_print("lw: [%s] gw %d.%d.%d.%d\n", __func__, udp_target[0], udp_target[1], udp_target[2], udp_target[3]);
|
||||
lw_print("lw: [%s] gw %d.%d.%d.%d\n", __func__, udp_demo_ip[0], udp_demo_ip[1], udp_demo_ip[2], udp_demo_ip[3]);
|
||||
|
||||
lwip_config_tcp(lwip_ipaddr, lwip_netmask, lwip_gwaddr);
|
||||
lwip_config_net(lwip_ipaddr, lwip_netmask, lwip_gwaddr);
|
||||
sys_thread_new("udp socket send", LwipUDPSendTask, NULL, LWIP_TASK_STACK_SIZE, LWIP_DEMO_TASK_PRIO);
|
||||
}
|
||||
|
||||
@@ -121,11 +117,11 @@ static void LwipUdpRecvTask(void *arg, struct udp_pcb *upcb, struct pbuf *p,
|
||||
return;
|
||||
}
|
||||
udp_len = p->tot_len;
|
||||
lw_pr_info("Receive data :%dB\r\n", udp_len);
|
||||
lw_notice("Receive data :%dB\r\n", udp_len);
|
||||
|
||||
if(udp_len <= 80)
|
||||
{
|
||||
lw_pr_info("%.*s\r\n", udp_len, (char *)(p->payload));
|
||||
lw_notice("%.*s\r\n", udp_len, (char *)(p->payload));
|
||||
}
|
||||
|
||||
udp_buf = pbuf_alloc(PBUF_TRANSPORT, PBUF_SIZE, PBUF_RAM);
|
||||
|
||||
@@ -492,7 +492,7 @@ int get_url_ip(char* url)
|
||||
/* convert URL to IP */
|
||||
if (lwip_getaddrinfo(url, NULL, &hint, &res) != 0)
|
||||
{
|
||||
lw_pr_info("ping: unknown host %s\n", url);
|
||||
lw_notice("ping: unknown host %s\n", url);
|
||||
return -1;
|
||||
}
|
||||
memcpy(&h, &res->ai_addr, sizeof(struct sockaddr_in *));
|
||||
@@ -500,13 +500,13 @@ int get_url_ip(char* url)
|
||||
lwip_freeaddrinfo(res);
|
||||
if (inet_aton(inet_ntoa(ina), &target_addr) == 0)
|
||||
{
|
||||
lw_pr_info("ping: unknown host %s\n", url);
|
||||
lw_notice("ping: unknown host %s\n", url);
|
||||
return -2;
|
||||
}
|
||||
/* new a socket */
|
||||
if ((s = lwip_socket(AF_INET, SOCK_RAW, IP_PROTO_ICMP)) < 0)
|
||||
{
|
||||
lw_pr_info("ping: create socket failed\n");
|
||||
lw_notice("ping: create socket failed\n");
|
||||
return -3;
|
||||
}
|
||||
|
||||
@@ -521,12 +521,12 @@ int get_url_ip(char* url)
|
||||
#endif /* LWIP_DEBUG */
|
||||
if ((recv_len = lwip_ping_recv(s, &ttl)) >= 0)
|
||||
{
|
||||
lw_pr_info("%d bytes from %s icmp_seq=%d ttl=%d time=%d ms\n", recv_len, inet_ntoa(ina), cnt,
|
||||
lw_notice("%d bytes from %s icmp_seq=%d ttl=%d time=%d ms\n", recv_len, inet_ntoa(ina), cnt,
|
||||
ttl, sys_now() - ping_time);
|
||||
}
|
||||
else
|
||||
{
|
||||
lw_pr_info("From %s icmp_seq=%d timeout\n", inet_ntoa(ina), cnt);
|
||||
lw_notice("From %s icmp_seq=%d timeout\n", inet_ntoa(ina), cnt);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -159,9 +159,9 @@ tcpecho_raw_ack(struct tcp_pcb *tpcb, struct tcpecho_raw_state* es){
|
||||
if((recv_len != TCP_MSS) || (recv_buf[recv_len - 1] == TCP_EOF_CH))
|
||||
{
|
||||
if(g_buf_size < MAX_TCP_SHOW_SIZE){
|
||||
lw_pr_info("Received: %s\n", g_buf);
|
||||
lw_notice("Received: %s\n", g_buf);
|
||||
}else{
|
||||
lw_pr_info("Received a string of length %d\n", g_buf_size);
|
||||
lw_notice("Received a string of length %d\n", g_buf_size);
|
||||
}
|
||||
|
||||
tcpecho_raw_ack_size(tpcb, g_buf_size);
|
||||
|
||||
Reference in New Issue
Block a user