1
2 #if AOS_COMP_CLI
3 #include <string.h>
4 #include <stdbool.h>
5 #include "lwip/opt.h"
6 #include "lwip/netif.h"
7 #include "lwip/debug.h"
8 #include "lwip/err.h"
9 #include "aos/cli.h"
10 #include "aos/kernel.h"
11 #include "uservice/uservice.h"
12 #include "uservice/eventid.h"
13 /******************************************************
14 * Macros
15 ******************************************************/
16 /******************************************************
17 * Constants
18 ******************************************************/
19
20 /******************************************************
21 * Enumerations
22 ******************************************************/
23
24 /******************************************************
25 * Type Definitions
26 ******************************************************/
27
28 /******************************************************
29 * Structures
30 ******************************************************/
31
32 /******************************************************
33 * Function Declarations
34 ******************************************************/
35 static void _cli_ping_cmd( int argc, char **argv );
36 void _cli_ping_help_command( int argc, char **argv );
37 extern void ping_run( int argc, char **argv );
38
39 /******************************************************
40 * Variables Definitions
41 ******************************************************/
42
43 /******************************************************
44 * Function Definitions
45 ******************************************************/
_cli_ping_cmd(int argc,char ** argv)46 static void _cli_ping_cmd( int argc, char **argv )
47 {
48 return ping_run(argc, argv);
49 }
_cli_ping_help_cmd(int argc,char ** argv)50 void _cli_ping_help_cmd( int argc, char **argv )
51 {
52 aos_cli_printf("Usage: ping [-c count] [-i interval] [-s packetsize] [-w timeout] destination\n");
53 aos_cli_printf(" ping [-h]\n");
54 aos_cli_printf(" ping [-e]\n");
55 aos_cli_printf(" -c, Stop after sending count ECHO_REQUEST packets\n");
56 aos_cli_printf(" -i, Wait milliseconds between sending each packet\n");
57 aos_cli_printf(" -s, Specifies the number of data bytes to be sent\n");
58 aos_cli_printf(" -w, Time to wait for a response, in millisecond\n");
59 aos_cli_printf(" -h, Show help\n");
60 aos_cli_printf(" -e, Exit ping\n");
61 aos_cli_printf("Example:\n");
62 aos_cli_printf("ping www.aliyun.com\n");
63 aos_cli_printf("ping -c 3 -i 100 -s 1300 -w 1000 www.aliyun.com\n");
64 }
65
ping_cmd(int argc,char ** argv)66 static int ping_cmd(int argc, char **argv )
67 {
68 struct netif *net_if = NULL;
69
70 NETIF_FOREACH(net_if) {
71 if (netif_is_up(net_if) && netif_is_link_up(net_if)
72 && !ip_addr_isany(&net_if->ip_addr)
73 && !ip_addr_isloopback(&net_if->ip_addr)) {
74 break;
75 }
76 }
77
78 if(net_if == NULL) {
79 aos_cli_printf("Connect network first!\n");
80 return -1;
81 }
82
83 if ( argc < 2 ) {
84 aos_cli_printf("Invalid command\n");
85 _cli_ping_help_cmd( 0, NULL );
86 return -1;
87 }
88
89 if ( strcmp( argv[1], "-h" ) == 0 ) {
90 _cli_ping_help_cmd( argc - 2, &argv[2] );
91 }
92 else {
93 _cli_ping_cmd( argc - 1, &argv[1] );
94 }
95 return 0;
96 }
97
98 /* reg args: fun, cmd, description*/
99 ALIOS_CLI_CMD_REGISTER(ping_cmd, ping, Ping command)
100 #endif /* AOS_COMP_CLI */
101