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

📄 setshow.c

📁 motorola自己开发的针对coldfire 5272的Dbug bootloader程序
💻 C
字号:
/*
 * File:		setshow.c
 * Purpose:		dBUG set/show routines
 *
 * Notes:
 *
 * Author:		Eric DeVolder
 * Date:
 *
 * Modifications:
 *
 */

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

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

/*
 * Default base for numbers entered by the user.
 */
int BASE;

static const char INVOPT[] = "Error:  Invalid set/show option: %s\n";
static const char OPTFMT[] = "%12s: ";

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

typedef struct
{
	char *rname;
	int unique;
	char *rstrsize;
	int	rsize;
} radixentry;

static const radixentry radixtab[] =
{
	{ "hexadecimal",	3,	"16",	16 },
	{ "decimal",		3,	"10",	10 },
	{ "octal",			3,	"8",	8 },
	{ "binary",			3,	"2",	2 },
} ;
#define RADIXTAB_SIZE	(int)(sizeof(radixtab)/sizeof(radixentry))

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

	(void)argc;

	if (argv[2] == NULL)
	{
		printf("%d\n",BASE);
		return;
	}

	for (index = 0; index < RADIXTAB_SIZE; index++)
	{
		if ((strncasecmp(radixtab[index].rname,argv[2], 
				radixtab[index].unique) == 0)
			|| (strcasecmp(radixtab[index].rstrsize,argv[2]) == 0))
		{
			BASE = radixtab[index].rsize;
			return;
		}
	}
	printf(INVARG,argv[1]);
}

/********************************************************************/
void
uif_setcmd_baud (int argc, char **argv)
{
	int success, baud;

	if (argc != 3)
	{
		printf("%d\n",board_get_baud());
		return;
	}

	baud =  get_value(argv[2], &success, 10);
	switch (baud)
	{
		case 300:
		case 600:
		case 1200:
		case 2400:
		case 4800:
		case 9600:
		case 19200:
		case 38400:
		case 57600:
		case 115200:
			board_set_baud(baud);
			break;
		default:
			printf(INVARG,argv[2]);
			break;
	}
}

/********************************************************************/
void
uif_cmd_set (int argc, char **argv)
{
	int index, displayed = 0;

	if (argc == 1)
	{
		printf("Valid 'set' options:\n");
		pause (&displayed);
		for (index = 0; index < UIF_NUM_SETCMD; ++index)
		{
			if (!(UIF_SETCMDTAB[index].flags & UIF_SETCMD_FLAG_HIDDEN))
			{
				printf(OPTFMT,UIF_SETCMDTAB[index].option);
				printf("%s\n",UIF_SETCMDTAB[index].syntax);
				pause (&displayed);
			}
		}
		return;
	}

	if (argc != 3)
	{
		printf("Error: Invalid argument list\n");
		return;
	}

	for (index = 0; index < UIF_NUM_SETCMD; index++)
	{
		if (strncasecmp(UIF_SETCMDTAB[index].option,argv[1],
			UIF_SETCMDTAB[index].unique) == 0)
		{
			if (((argc-1-1) >= UIF_SETCMDTAB[index].min_args) &&
				((argc-1-1) <= UIF_SETCMDTAB[index].max_args))
			{
				UIF_SETCMDTAB[index].func(argc,argv);
				return;
			}
			else
			{
				printf(INVARG,argv[1]);
				return;
			}
		}
	}
	printf(INVOPT,argv[1]);
}

/********************************************************************/
void
uif_cmd_show (int argc, char **argv)
{
	int index, displayed = 0;

	if (argc == 1)
	{
		/*
		 * Show all Option settings
		 */
		/* fool subfunctions into displaying */
		argc = 2;
		argv[2] = NULL;
		for (index = 0; index < UIF_NUM_SETCMD; index++)
		{
			if (!(UIF_SETCMDTAB[index].flags & UIF_SETCMD_FLAG_HIDDEN))
			{
				printf(OPTFMT,UIF_SETCMDTAB[index].option);
				UIF_SETCMDTAB[index].func(argc,argv);
				pause(&displayed);
			}
		}
		return;
	}

	for (index = 0; index < UIF_NUM_SETCMD; index++)
	{
		if (strncasecmp(UIF_SETCMDTAB[index].option,argv[1],
			UIF_SETCMDTAB[index].unique) == 0)
		{
			if (((argc-1-1) >= UIF_SETCMDTAB[index].min_args) &&
				((argc-1-1) <= UIF_SETCMDTAB[index].max_args))
			{
				printf(OPTFMT,UIF_SETCMDTAB[index].option);
				UIF_SETCMDTAB[index].func(argc,argv);
				return;
			}
			else
			{
				printf(INVARG,argv[1]);
				return;
			}
		}
	}
	printf(INVOPT,argv[1]);
}

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

⌨️ 快捷键说明

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