forked from xuos/xiuos
23/07/12 Add W5500 iperf; Add lwip http test.
This commit is contained in:
@@ -1,3 +1,3 @@
|
||||
SRC_FILES += lwiperf/lwiperf.c
|
||||
SRC_FILES += lwiperf/lwiperf.c http/http_client.c
|
||||
|
||||
include $(KERNEL_ROOT)/compiler.mk
|
||||
|
||||
@@ -64,7 +64,8 @@
|
||||
* HTTPC_DEBUG: Enable debugging for HTTP client.
|
||||
*/
|
||||
#ifndef HTTPC_DEBUG
|
||||
#define HTTPC_DEBUG LWIP_DBG_OFF
|
||||
#define HTTPC_DEBUG LWIP_DBG_ON
|
||||
// #define HTTPC_DEBUG LWIP_DBG_OFF
|
||||
#endif
|
||||
|
||||
/** Set this to 1 to keep server name and uri in request state */
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
/* ---------- Debug options ---------- */
|
||||
#ifndef LWIP_DEBUG
|
||||
#define LWIP_DEBUG
|
||||
#define LWIP_DEBUG 1
|
||||
#endif
|
||||
|
||||
#ifdef LWIP_DEBUG
|
||||
|
||||
@@ -142,19 +142,19 @@
|
||||
#endif
|
||||
|
||||
#ifdef LWIP_DEBUG
|
||||
#define LWIP_DEBUG_FLAG 1
|
||||
#define LWIP_DEBUGF(debug, message) do { \
|
||||
#define LWIP_DEBUGF(debug_flag, message) do { \
|
||||
if ( \
|
||||
((LWIP_DEBUG_FLAG) & LWIP_DBG_ON) && \
|
||||
((LWIP_DEBUG_FLAG) & LWIP_DBG_TYPES_ON) && \
|
||||
((s16_t)((LWIP_DEBUG_FLAG) & LWIP_DBG_MASK_LEVEL) >= LWIP_DBG_MIN_LEVEL)) { \
|
||||
((debug_flag) & LWIP_DBG_ON) && \
|
||||
((debug_flag) & LWIP_DBG_TYPES_ON) && \
|
||||
(debug_flag)) { \
|
||||
LWIP_PLATFORM_DIAG(message); \
|
||||
if ((LWIP_DEBUG_FLAG) & LWIP_DBG_HALT) { \
|
||||
if ((debug_flag) & LWIP_DBG_HALT) { \
|
||||
while(1); \
|
||||
} \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
// ((s16_t)((debug_flag) & LWIP_DBG_MASK_LEVEL) >= LWIP_DBG_MIN_LEVEL)) { \
|
||||
// #define LWIP_DEBUGF(debug, message) do { \
|
||||
// LWIP_PLATFORM_DIAG(message); \
|
||||
// } while(0)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
SRC_FILES := ping.c lwip_ping_demo.c lwip_tcp_demo.c tcpecho_raw.c lwip_config_demo.c lwip_dhcp_demo.c iperf.c
|
||||
SRC_FILES := ping.c lwip_ping_demo.c lwip_tcp_demo.c tcpecho_raw.c lwip_config_demo.c lwip_dhcp_demo.c iperf.c http_test.c
|
||||
# SRC_FILES := ping.c lwip_ping_demo.c lwip_tcp_demo.c lwip_udp_demo.c tcpecho_raw.c lwip_config_demo.c lwip_dhcp_demo.c iperf.c
|
||||
|
||||
include $(KERNEL_ROOT)/compiler.mk
|
||||
|
||||
68
Ubiquitous/XiZi_IIoT/resources/ethernet/cmd_lwip/http_test.c
Normal file
68
Ubiquitous/XiZi_IIoT/resources/ethernet/cmd_lwip/http_test.c
Normal file
@@ -0,0 +1,68 @@
|
||||
|
||||
#include <string.h>
|
||||
#include <shell.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include "lwip/apps/http_client.h"
|
||||
|
||||
void httpc_app_recv_end(void *arg, httpc_result_t httpc_result, u32_t rx_content_len, u32_t srv_res, err_t err) {
|
||||
httpc_state_t **req = (httpc_state_t**)arg;
|
||||
|
||||
LWIP_DEBUGF(LWIP_DEBUG, ("[HTTPC] Transfer finished. rx_content_len is %lu\r\n", rx_content_len));
|
||||
printf("[HTTPC] Transfer finished. rx_content_len is %lu\r\n", rx_content_len);
|
||||
*req = NULL;
|
||||
}
|
||||
|
||||
|
||||
err_t httpc_app_headers_done(httpc_state_t *connection, void *arg, struct pbuf *hdr, u16_t hdr_len, u32_t content_len) {
|
||||
LWIP_DEBUGF(LWIP_DEBUG, ("[%s] headers done call back.\n", __func__));
|
||||
printf("[%s] headers done call back, content len: %d.\n", __func__, content_len);
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
err_t httpc_app_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err) {
|
||||
printf("[%s] Get %d Data\n", __func__, p->len);
|
||||
|
||||
pbuf_free(p);
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
ip_addr_t *get_server_ip() {
|
||||
static ip_addr_t server_ip;
|
||||
return &server_ip;
|
||||
}
|
||||
|
||||
httpc_state_t **get_conn_state() {
|
||||
static httpc_state_t *conn_state;
|
||||
return &conn_state;
|
||||
}
|
||||
|
||||
httpc_connection_t *get_conn_setting() {
|
||||
static httpc_connection_t conn_setting;
|
||||
return &conn_setting;
|
||||
}
|
||||
|
||||
void httpc_get_file_app(int argc, char *argv[]) {
|
||||
// deal input ip
|
||||
|
||||
// get file from server
|
||||
const uint8_t server_ip_by_arr[4] = {39, 156, 66, 10};
|
||||
// const uint8_t server_ip_by_arr[4] = {114, 215, 151, 106};
|
||||
IP4_ADDR(get_server_ip(),
|
||||
server_ip_by_arr[0], server_ip_by_arr[1], server_ip_by_arr[2], server_ip_by_arr[3]);
|
||||
|
||||
get_conn_setting()->use_proxy = 0;
|
||||
get_conn_setting()->result_fn = httpc_app_recv_end;
|
||||
get_conn_setting()->headers_done_fn = httpc_app_headers_done;
|
||||
|
||||
LWIP_DEBUGF(HTTPC_DEBUG, ("[%s] Calling httpc_get_file\n", __func__));
|
||||
printf("[%s] Calling httpc_get_file\n", __func__);
|
||||
err_t errnum = httpc_get_file(get_server_ip(), 80, "/index.html", get_conn_setting(), httpc_app_recv, NULL, get_conn_state());
|
||||
// err_t errnum = httpc_get_file_dns("https://www.baidu.com", 80, "/index.html", get_conn_setting(), httpc_app_recv, NULL, get_conn_state());
|
||||
|
||||
if (errnum != ERR_OK) {
|
||||
printf("httpc_get_file failed (%d)\n", errnum);
|
||||
}
|
||||
}
|
||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(0),
|
||||
lwip_http_test, httpc_get_file_app, get file from net server);
|
||||
@@ -678,8 +678,6 @@ lwiperf_example_init(void)
|
||||
|
||||
}
|
||||
|
||||
// SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(8),
|
||||
// iperf, iperf, netutils iperf);
|
||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(8),
|
||||
iperf, iperf, netutils iperf);
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ static void LwipSetIPTask(void *param)
|
||||
{
|
||||
uint8_t enet_port = *(uint8_t *)param; ///< test enet port
|
||||
printf("lw: [%s] config netport id[%d]\n", __func__, enet_port);
|
||||
// lwip_config_net(enet_port, lwip_ipaddr, lwip_netmask, lwip_gwaddr);
|
||||
lwip_config_tcp(enet_port, lwip_ipaddr, lwip_netmask, lwip_gwaddr);
|
||||
}
|
||||
|
||||
|
||||
@@ -37,59 +37,17 @@
|
||||
ip4_addr_t ping_addr;
|
||||
|
||||
/******************************************************************************/
|
||||
char arg_ip[20] = {192, 168, 130, 50};
|
||||
|
||||
void LwipPingTest(int argc, char *argv[])
|
||||
{
|
||||
int result = 0;
|
||||
uint8_t enet_port = 0; ///< test enet port 0
|
||||
|
||||
if(argc >= 4)
|
||||
{
|
||||
printf("lw: [%s] ip %s mask %s gw %s for netport %s\n", __func__, argv[1], argv[2], argv[3], argv[4]);
|
||||
sscanf(argv[1], "%d.%d.%d.%d", &lwip_ipaddr[0], &lwip_ipaddr[1], &lwip_ipaddr[2], &lwip_ipaddr[3]);
|
||||
sscanf(argv[2], "%d.%d.%d.%d", &lwip_netmask[0], &lwip_netmask[1], &lwip_netmask[2], &lwip_netmask[3]);
|
||||
sscanf(argv[3], "%d.%d.%d.%d", &lwip_gwaddr[0], &lwip_gwaddr[1], &lwip_gwaddr[2], &lwip_gwaddr[3]);
|
||||
sscanf(argv[4], "%d", &enet_port);
|
||||
|
||||
if(0 == enet_port)
|
||||
{
|
||||
memcpy(lwip_eth0_ipaddr, lwip_ipaddr, strlen(lwip_ipaddr));
|
||||
memcpy(lwip_eth0_netmask, lwip_netmask, strlen(lwip_netmask));
|
||||
memcpy(lwip_eth0_gwaddr, lwip_gwaddr, strlen(lwip_gwaddr));
|
||||
}
|
||||
if(1 == enet_port)
|
||||
{
|
||||
memcpy(lwip_eth1_ipaddr, lwip_ipaddr, strlen(lwip_ipaddr));
|
||||
memcpy(lwip_eth1_netmask, lwip_netmask, strlen(lwip_netmask));
|
||||
memcpy(lwip_eth1_gwaddr, lwip_gwaddr, strlen(lwip_gwaddr));
|
||||
}
|
||||
}
|
||||
else if(argc == 3)
|
||||
{
|
||||
sscanf(argv[2], "%d", &enet_port);
|
||||
printf("lw: [%s] gw %s netport %d\n", __func__, argv[1], enet_port);
|
||||
if (argc == 2) {
|
||||
printf("lw: [%s] ping %s\n", __func__, argv[1]);
|
||||
if(isdigit(argv[1][0]))
|
||||
{
|
||||
if(sscanf(argv[1], "%d.%d.%d.%d", &lwip_gwaddr[0], &lwip_gwaddr[1], &lwip_gwaddr[2], &lwip_gwaddr[3]) == EOF)
|
||||
{
|
||||
lw_notice("input wrong ip\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
#if (LWIP_DHCP) && (PING_USE_SOCKETS)
|
||||
else
|
||||
{
|
||||
get_url_ip(argv[1]);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else if(argc == 2)
|
||||
{
|
||||
printf("lw: [%s] gw %s\n", __func__, argv[1]);
|
||||
if(isdigit(argv[1][0]))
|
||||
{
|
||||
if(sscanf(argv[1], "%d.%d.%d.%d", &lwip_gwaddr[0], &lwip_gwaddr[1], &lwip_gwaddr[2], &lwip_gwaddr[3]) == EOF)
|
||||
if(sscanf(argv[1], "%d.%d.%d.%d", &arg_ip[0], &arg_ip[1], &arg_ip[2], &arg_ip[3]) == EOF)
|
||||
{
|
||||
lw_notice("input wrong ip\n");
|
||||
return;
|
||||
@@ -106,12 +64,11 @@ void LwipPingTest(int argc, char *argv[])
|
||||
|
||||
printf("lw: [%s] argc %d\n", __func__, argc);
|
||||
|
||||
IP4_ADDR(&ping_addr, lwip_gwaddr[0], lwip_gwaddr[1], lwip_gwaddr[2], lwip_gwaddr[3]);
|
||||
lwip_config_net(enet_port, lwip_ipaddr, lwip_netmask, lwip_gwaddr);
|
||||
IP4_ADDR(&ping_addr, arg_ip[0], arg_ip[1], arg_ip[2], arg_ip[3]);
|
||||
ping_init(&ping_addr);
|
||||
}
|
||||
|
||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(5),
|
||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(2),
|
||||
ping, LwipPingTest, ping [IP] 10 times);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user