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

📄 dnsetshow.c

📁 Coldfire MCF5282 DBug bootloader
💻 C
字号:
/*
 * File:		dnsetshow.c
 * Purpose:     Set/show commands related to network downloads
 *
 * Notes:
 *
 * Author:		Eric DeVolder
 * Date:
 *
 * Modifications:
 *
 */

#include "src/include/dbug.h"
#include "src/uif/net/net.h"

/********************************************************************/

static const char IPFMT[] = "%d.%d.%d.%d\n";
static const char SETERR3[] = "Error: Invalid IP address: %s\n";

/********************************************************************/

static int
ip_convert_address (char *ipstring, uint8 ipaddr[])
{
	int i,j,k,l;

	l = strlen(ipstring);

	for (i = 0; i < l; i++)
	{
		if ((ipstring[i] != '.') && ((ipstring[i] < '0') ||
			(ipstring[i] > '9')))
		{
			return 0;
		}
	}
	/* the characters in the string are at least valid */
	j = 0;
	k = 0;
	for (i = 0; i < l; i++)
	{
		if (ipstring[i] != '.')
		{
			if  (++j > 3)	/* number of digits in portion */
				return 0;
		}
		else
		{
			if (++k > 3)	/* number of periods */
				return 0;

			if (j == 0)		/* number of digits in portion */
				return 0;
			else
				j = 0;
		}
	}

	/* at this point, all the pieces are good, form ip_address */
	k = 0; j = 0;
	for (i = 0; i < l; i++)
	{
		if (ipstring[i] != '.')
		{
			k = (k * 10) + ipstring[i] - '0';
		}
		else
		{
			ipaddr[j++] = (unsigned char)k;
			k = 0;
		}
	}
	ipaddr[j] = (uint8)k;
	return 1;
}

/********************************************************************/
void
uif_setcmd_server (int argc, char **argv)
{
	uint8 netaddr[4];	/* IP address */

	(void)argc;

	if (argv[2] == NULL)
	{
		board_get_server(netaddr);
		printf(IPFMT,
			netaddr[0],
			netaddr[1],
			netaddr[2],
			netaddr[3]);
		return;
	}
	if (!ip_convert_address(argv[2],netaddr))
	{
		printf(SETERR3,argv[2]);
		return;
	}
	board_set_server(netaddr);
}

/********************************************************************/
void
uif_setcmd_client (int argc, char **argv)
{
	uint8 netaddr[4];	/* IP address */

	(void)argc;

	if (argv[2] == NULL)
	{
		board_get_client(netaddr);
		printf(IPFMT,
			netaddr[0],
			netaddr[1],
			netaddr[2],
			netaddr[3]);
		return;
	}
	if (!ip_convert_address(argv[2],netaddr))
	{
		printf(SETERR3,argv[2]);
		return;
	}
	board_set_client(netaddr);
}

/********************************************************************/
void
uif_setcmd_gateway (int argc, char **argv)
{
	uint8 netaddr[4];	/* IP address */

	(void)argc;

	if (argv[2] == NULL)
	{
		board_get_gateway(netaddr);
		printf(IPFMT,
			netaddr[0],
			netaddr[1],
			netaddr[2],
			netaddr[3]);
		return;
	}
	if (!ip_convert_address(argv[2],netaddr))
	{
		printf(SETERR3,argv[2]);
		return;
	}
	board_set_gateway(netaddr);
}

/********************************************************************/
void
uif_setcmd_netmask (int argc, char **argv)
{
	uint8 netaddr[4];	/* IP address */

	(void)argc;

	if (argv[2] == NULL)
	{
		board_get_netmask(netaddr);
		printf(IPFMT,
			netaddr[0],
			netaddr[1],
			netaddr[2],
			netaddr[3]);
		return;
	}
	if (!ip_convert_address(argv[2],netaddr))
	{
		printf(SETERR3,argv[2]);
		return;
	}
	board_set_netmask(netaddr);
}

/********************************************************************/
void
uif_setcmd_filename (int argc, char **argv)
{
	char fn[128];

	(void)argc;

	if (argv[2] == NULL)
	{
		board_get_filename(fn);
		printf("%s\n",fn);
		return;
	}
	board_set_filename(argv[2]);
}

/********************************************************************/
void
uif_setcmd_filetype (int argc, char **argv)
{
	(void)argc;

	if (argv[2] == NULL)
	{
		switch (board_get_filetype())
		{
			case UIF_DLIO_COFF:
				printf("COFF\n");
				break;
			case UIF_DLIO_SREC:
				printf("S-Record\n");
				break;
			case UIF_DLIO_ELF:
				printf("ELF\n");
				break;
			case UIF_DLIO_IMAGE:
				printf("Image\n");
				break;
			default:
/*				board_set_filetype(DOWNLOAD_SREC); */
				printf("Unknown\n");
				break;
		}
		return;
	}

	if (strncasecmp(argv[2],"image",1) == 0)
	{
		board_set_filetype(UIF_DLIO_IMAGE);
		return;
	}
	if (strncasecmp(argv[2],"srecord",1) == 0)
	{
		board_set_filetype(UIF_DLIO_SREC);
		return;
	}
	if (strncasecmp(argv[2],"coff",1) == 0)
	{
		board_set_filetype(UIF_DLIO_COFF);
		return;
	}
	if (strncasecmp(argv[2],"elf",1) == 0)
	{
		board_set_filetype(UIF_DLIO_ELF);
		return;
	}
	printf("Error: Invalid Filetype: %s\n",argv[2]);
}

/********************************************************************/
#if 0
void
uif_setcmd_autoboot (int argc, char **argv)
{
	(void)argc;

	if (argv[2] == NULL)
	{
		if (board_get_autoboot())
		{
			printf("On\n");
		}
		else
		{
			printf("Off\n");
		}
		return;
	}

	if (strncasecmp(argv[2],"on",2) == 0)
	{
		board_set_autoboot(1);
	}
	else
	{
		board_set_autoboot(0);
	}
}
#endif
/********************************************************************/

⌨️ 快捷键说明

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