⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ui_ping.c

📁 某个ARM9板子的实际bootloader 对裁剪
💻 C
字号:
/****************************************************************************
* Copyright  Storlink Corp 2005.  All rights reserved.                
*--------------------------------------------------------------------------
* Name			: ui_ping.c
* Description	: 
*		Handle Ping function for UI
*
* History
*
*	Date		Writer		Description
*	-----------	-----------	-------------------------------------------------
*	04/28/2005	Gary Chen	Create
*
****************************************************************************/
#include <define.h>
#include <net.h>
#include "ui_cli.h"

static const char * const ping_syntax_msg[]=
{
    "Usage: ping host [-t] [-n count] [-l size] [-w timeout]\n",
    "host      : IP address\n",
    "-t        : Ping forever until pressing <CTRL-C> key.\n",
    "-n count  : Total request number.\n",
    "-l size   : Send size (32 ~ 1472 bytes).\n",
    "-w        : Timeout Interval (milliseconds).\n",
    ""
};

/*----------------------------------------------------------------------
* 	ping_show_syntax
*----------------------------------------------------------------------*/
static void ping_show_syntax(void)
{
	int i = 0;
	
	while(*ping_syntax_msg[i]) 
	{
		printf(ping_syntax_msg[i]);
		i++;
	}
}

/*----------------------------------------------------------------------
* cli_ping_cmd
* 	Usage: ping host [-t] [-n count] [-l size] [-w timeout]
*          	-t        : Ping forever until pressing <CTRL-C> key.
*			host      : IP address
*          	-n count  : Total request number (> 0).
*          	-l size   : Send size (32 ~ 1472 bytes).
*			-w        : Timeout Interval (milliseconds).
*
*			argv[0]   : ping
*			argv[1]   : host
*			argv[2...]: -t, -n ...
*----------------------------------------------------------------------*/
void cli_ping_cmd(char argc, char *argv[])
{
    int			err;
    char		*cp;
    UINT32		host;
    UINT32      count;
    UINT32      size;
    UINT32		timeout;
    
    host	= 0;
    timeout	= 1000;
    size	= ICMP_MIN_DATA_SIZE;
    count 	= 4;
     
    if (argc < 2)
    {
    	ping_show_syntax();
    	return;
    }

	host = str2ip(argv[1]);
	if (host == 0 || host == 0xffffffff)
	{
		printf("Illegal IP address of host!\n");
    	ping_show_syntax();
    	return;
	}
    
	argc -= 2;
	argv += 2;
	err = 0;
    while(argc > 0 && !err)
    {
        cp = argv[0];
        if (cp[0] != '-' || cp[2] != '\0')
		{
			err = 1;
    		break;
		}
		switch(toupper(cp[1]))
		{
			case 'T':
				count = 0;
				argc--;
				argv++;
				break;
			case 'N':
				if (argc < 2 || ((count = str2decimal(argv[1])) == 0))
				{
					printf("Syntax error for \"-n\" argument!\n");
					err = 1;
					break;
				}
				argc -= 2;        
				argv += 2;             
				break;
			case 'L':
				size = 0;
				if (argc >= 2)
					size = str2decimal(argv[1]);
				if (size < ICMP_MIN_DATA_SIZE || size > ICMP_MAX_DATA_SIZE)
				{
					printf("Syntax error for \"-l\" argument!\n");
					err=1;
					break;
				}
				argc -= 2;        
				argv += 2;             
				break;
			case 'W':
				timeout = 0;
				if (argc >= 2)
					timeout = str2decimal(argv[1]);
				if (timeout < 10 || timeout > 10000)
				{
					printf("Syntax error for \"-w\" argument!\n");
					err=1;
					break;
				}
				argc -= 2;        
				argv += 2;             
				break;
			default:
				printf("Syntax error for unknown argument!\n");
				err=1;
				break;
                    
		} // switch                    
    } // while        
    
	if (err)
		ping_show_syntax();
	else
        icmp_ping(host, count, size, timeout);
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -