📄 setshow.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 + -