CFLAGS = -g -Os
CFLAGS += -mmcu=$(MCU_TARGET)
-CFLAGS += -std=gnu99
+CFLAGS += -std=gnu11
CFLAGS += -Wall -Wextra
CFLAGS += -Wredundant-decls
CFLAGS += -mrelax
* @returns
*
*/
-static int cli_run_command(const char *cmd, int flag)
+static int cli_run_command(const char *cmd, uint_fast8_t flag)
{
char cmdbuf[strlen(cmd) + 1]; /* working copy of cmd */
char *token; /* start of token in cmdbuf */
* @param flag Execution flags (CMD_FLAG_...)
* @return 0 on success, or != 0 on error.
*/
-int run_command(const char *cmd, int flag)
+int run_command(const char *cmd, uint_fast8_t flag)
{
/*
* cli_run_command can return 0 or 1 for success, so clean up
* @param flag Execution flags (CMD_FLAG_...)
* @return 0 (not repeatable) or 1 (repeatable) on success, -1 on error.
*/
-static int run_command_repeatable(const char *cmd, int flag)
+static int run_command_repeatable(const char *cmd, uint_fast8_t flag)
{
return cli_run_command(cmd, flag);
}
{
char *lastcommand = NULL;
int len;
- int flag;
+ uint_fast8_t flag;
int rc = 1;
for (;;) {
*
*/
-command_ret_t do_attach(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_attach(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
uint8_t unit;
char *filename = NULL;
}
}
-command_ret_t do_loadf(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_loadf(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
(void) cmdtp; (void) flag; (void) argc; (void) argv;
* -v verbose
*/
-command_ret_t do_bootcf(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_bootcf(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
struct {
uint8_t jr[2];
return CMD_RET_SUCCESS;
}
-command_ret_t do_busreq_pulse(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_busreq_pulse(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
uint16_t count=1;
}
-command_ret_t do_go(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_go(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
uint32_t addr;
}
-command_ret_t do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_reset(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
(void) cmdtp; (void) flag; (void) argc; (void) argv;
return CMD_RET_SUCCESS;
}
-command_ret_t do_restart(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_restart(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
(void) cmdtp; (void) flag; (void) argc; (void) argv;
), esc + 0x40);
}
-command_ret_t do_console(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_console(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
int ch;
uint8_t pending;
* (C) Copyright 2001
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
- * SPDX-License-Identifier: GPL-2.0+
+ * SPDX-License-Identifier: GPL-2.0
*/
/*
return (-1);
}
-command_ret_t do_date(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_date(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
struct tm t;
char buf[30];
* fatstat path - Show logical drive status
*
*/
-command_ret_t do_stat(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_stat(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
FATFS *fs;
DWORD nfreeclst;
* pwd - Print current directory of the current drive.
*
*/
-command_ret_t do_pwd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_pwd(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
FRESULT res;
char *buf;
* cd - Change the current/working directory.
*
*/
-command_ret_t do_cd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_cd(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
char *arg;
FRESULT res = 0;
* fatls path - Directory listing
*
*/
-command_ret_t do_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_ls(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
FATFS *fs;
DIR Dir; /* Directory object */
* read <d:/path/filename> <addr> [bytes [pos]]
* write <d:/path/filename> <addr> <bytes>
*/
-command_ret_t do_rw(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_rw(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
FIL File;
uint32_t addr;
unsigned long pos;
unsigned long bytes_rw;
- bool dowrite = (argv[0][3] == 'w');
+ bool dowrite = (argv[0][0] == 'w');
FRESULT res = FR_OK;
bool buserr = 0;
uint32_t timer;
static
-command_ret_t do_help(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
+command_ret_t do_help(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[]);
cmd_tbl_t cmd_fat_sub[] = {
CMD_TBL_ITEM(
- stat, 2, 1, do_stat,
+ stat, 2, CTBL_REPEAT, do_stat,
"Show logical drive status",
"dev"
),
CMD_TBL_ITEM(
- pwd, 2, 1, do_pwd,
+ pwd, 2, CTBL_REPEAT, do_pwd,
"Print name of current/working directory",
""
),
CMD_TBL_ITEM(
- cd, 2, 1, do_cd,
+ cd, 2, CTBL_REPEAT, do_cd,
"Change the current/working directory.",
"path"
),
CMD_TBL_ITEM(
- ls, 2, 1, do_ls,
+ ls, 2, CTBL_REPEAT, do_ls,
"Directory listing",
"path"
),
),
CMD_TBL_ITEM(
- help, CONFIG_SYS_MAXARGS, 1, do_help,
+ help, CONFIG_SYS_MAXARGS, CTBL_REPEAT, do_help,
"Print sub command description/usage",
"\n"
" - print brief description of all sub commands\n"
};
static
-command_ret_t do_help(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_help(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
return _do_help(cmd_fat_sub, ARRAY_SIZE(cmd_fat_sub), cmdtp, flag, argc, argv);
}
-command_ret_t do_fat(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_fat(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
cmd_tbl_t *cp;
/*
* (C) Copyright 2014 Leo C. <erbl259-lmu@yahoo.de>
*
- * SPDX-License-Identifier: GPL-2.0+
+ * SPDX-License-Identifier: GPL-2.0
*/
#include "common.h"
}
-command_ret_t do_gpio(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
+command_ret_t do_gpio(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char *const argv[])
{
char printheader = 1;
uint_fast8_t pinarg[GPIO_MAX];
* Copyright 2000-2009
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
- * SPDX-License-Identifier: GPL-2.0+
+ * SPDX-License-Identifier: GPL-2.0
*/
#include "common.h"
#include "command.h"
-command_ret_t do_help(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_help(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
const int len = cmd_tbl_item_count();
return _do_help(cmd_tbl, len, cmdtp, flag, argc, argv);
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
-command_ret_t do_loadcpm3(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_loadcpm3(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
uint16_t mem_top;
uint8_t res_len;
/*
* (C) Copyright 2015 Leo C. <erbl259-lmu@yahoo.de>
*
- * SPDX-License-Identifier: GPL-2.0+
+ * SPDX-License-Identifier: GPL-2.0
*/
#include "common.h"
}
-command_ret_t do_loadihex(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_loadihex(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
long offset = 0;
uint32_t base_address = 0;
* Syntax:
* md {addr} {len}
*/
-command_ret_t do_mem_md(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_mem_md(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
uint32_t addr, length;
* nm {addr}
*/
static command_ret_t
-mod_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char * const argv[])
+mod_mem(cmd_tbl_t *cmdtp, int incrflag, uint_fast8_t flag, int argc, char * const argv[])
{
uint32_t addr;
uint8_t data;
}
-command_ret_t do_mem_mm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_mem_mm(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
return mod_mem (cmdtp, 1, flag, argc, argv);
}
-command_ret_t do_mem_nm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_mem_nm(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
return mod_mem (cmdtp, 0, flag, argc, argv);
}
-command_ret_t do_mem_mw(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_mem_mw(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
uint32_t writeval;
uint32_t addr;
}
#ifdef CONFIG_MX_CYCLIC
-command_ret_t do_mem_mdc ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_mem_mdc ( cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
uint32_t count;
uint32_t ts;
}
#endif /* CONFIG_MX_CYCLIC */
-command_ret_t do_mem_cmp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_mem_cmp(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
uint32_t addr1, addr2, count, ngood;
command_ret_t rcode = CMD_RET_SUCCESS;
return rcode;
}
-command_ret_t do_mem_cp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_mem_cp(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
uint32_t src, dest, count;
int_fast8_t step;
return CMD_RET_SUCCESS;
}
-command_ret_t do_mem_base(cmd_tbl_t *cmdtp, int flag, int argc,
+command_ret_t do_mem_base(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc,
char * const argv[])
{
(void) cmdtp;
return CMD_RET_SUCCESS;
}
-command_ret_t do_mem_loop(cmd_tbl_t *cmdtp, int flag, int argc,
+command_ret_t do_mem_loop(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc,
char * const argv[])
{
uint32_t addr, length;
return CMD_RET_SUCCESS;
}
-command_ret_t do_mem_loopw (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_mem_loopw (cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
uint32_t addr, length;
uint8_t data;
* configured using CONFIG_SYS_ALT_MEMTEST. The complete test loops until
* interrupted by ctrl-c or by a failure of one of the sub-tests.
*/
-command_ret_t do_mem_mtest(cmd_tbl_t *cmdtp, int flag, int argc,
+command_ret_t do_mem_mtest(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc,
char * const argv[])
{
uint32_t start = 0;
#include "getopt-min.h"
-command_ret_t do_echo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_echo(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
bool put_newline = true;
}
-command_ret_t do_sleep(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_sleep(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
unsigned long start = get_timer(0);
unsigned long delay;
#include "env.h"
-command_ret_t do_run(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_run(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
int i;
(void) cmdtp;
return CMD_RET_SUCCESS;
}
-static int source(FIL *fp, int flag, int argc, char * const argv[])
+static int source(FIL *fp, uint_fast8_t flag, int argc, char * const argv[])
{
int lineno = 0;
int res = 0;
return !f_eof(fp) || res;
}
-command_ret_t do_source(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_source(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
FIL File;
int res;
*
*/
static
-command_ret_t do_status(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_status(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
DSTATUS res;
BYTE dev;
*
*/
static
-command_ret_t do_init(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_init(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
DSTATUS res;
BYTE dev;
*
*/
static
-command_ret_t do_info(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_info(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
DSTATUS res;
BYTE dev;
*
*/
static
-command_ret_t do_dump(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_dump(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
static BYTE dev_last;
static DWORD sec_last;
*
*/
static
-command_ret_t do_read(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_read(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
DRESULT res;
BYTE dev;
*
*/
static
-command_ret_t do_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_write(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
DRESULT res;
BYTE dev;
*
*/
static
-command_ret_t do_ioctl_sync(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_ioctl_sync(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
BYTE dev;
static
-command_ret_t do_help(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
+command_ret_t do_help(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[]);
cmd_tbl_t cmd_sd_sub[] = {
CMD_TBL_ITEM(
- status, 2, 1, do_status,
+ status, 2, CTBL_REPEAT, do_status,
"Socket staus",
"drive"
),
CMD_TBL_ITEM(
- init, 2, 1, do_init,
+ init, 2, CTBL_REPEAT, do_init,
"Initialize disk",
"drive"
),
CMD_TBL_ITEM(
- info, 2, 1, do_info,
+ info, 2, CTBL_REPEAT, do_info,
"Disk info",
"drive"
),
CMD_TBL_ITEM(
- dump, CONFIG_SYS_MAXARGS, 1, do_dump,
+ dump, CONFIG_SYS_MAXARGS, CTBL_REPEAT, do_dump,
"Dump sector(s)",
"drive [sector [count ]]"
),
CMD_TBL_ITEM(
- read, 2, 1, do_read,
+ read, 2, CTBL_REPEAT, do_read,
"Read disk sector(s) into meomory",
"drive [sector [count [memaddr]]]"
),
CMD_TBL_ITEM(
- write, 2, 1, do_write,
+ write, 2, CTBL_REPEAT, do_write,
"Write sector(s) from meomory to disk",
"drive [sector [count [memaddr]]]"
),
CMD_TBL_ITEM(
- sync, 2, 1, do_ioctl_sync,
+ sync, 2, CTBL_REPEAT, do_ioctl_sync,
"Device control: SYNC",
"drive"
),
CMD_TBL_ITEM(
- help, CONFIG_SYS_MAXARGS, 1, do_help,
+ help, CONFIG_SYS_MAXARGS, CTBL_REPEAT, do_help,
"Print sub command description/usage",
"\n"
" - print brief description of all sub commands\n"
};
static
-command_ret_t do_help(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_help(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
return _do_help(cmd_sd_sub, ARRAY_SIZE(cmd_sd_sub), cmdtp, flag, argc, argv);
}
-command_ret_t do_sd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_sd(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
cmd_tbl_t *cp;
*/
command_ret_t _do_help(cmd_tbl_t *cmd_start, int cmd_items, cmd_tbl_t * cmdtp,
- int flag, int argc, char * const argv[])
+ uint_fast8_t flag, int argc, char * const argv[])
{
uint_fast8_t i, max_len = 0;
command_ret_t rcode = CMD_RET_SUCCESS;
* @param argv Arguments
* @return 0 if command succeeded, else non-zero (CMD_RET_...)
*/
-command_ret_t cmd_call(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t cmd_call(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
command_ret_t result;
return result;
}
-command_ret_t cmd_process(int flag, int argc, char * const argv[],
+command_ret_t cmd_process(uint_fast8_t flag, int argc, char * const argv[],
uint_fast8_t *repeatable)
{
command_ret_t rc = CMD_RET_SUCCESS;
/* If OK so far, then do the command */
if (!rc) {
rc = cmd_call(cmdtp, flag, argc, argv);
- *repeatable &= cmdtp->repeatable;
+ *repeatable &= (cmdtp->flags & CTBL_REPEAT) != 0;
}
if (rc == CMD_RET_USAGE)
rc = cmd_usage(cmdtp);
#include "command.h"
#include "cmd_mem.h"
-extern command_ret_t do_help(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_echo(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_sleep(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_env_print(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_env_default(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_env_set(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_env_save(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_loadf(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_bootcf(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_loadcpm3(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_loadihex(cmd_tbl_t *, int, int, char * const []);
+extern command_ret_t do_help(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_echo(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_sleep(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_env_print(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_env_default(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_env_set(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_env_save(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_loadf(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_bootcf(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_loadcpm3(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_loadihex(cmd_tbl_t *, uint_fast8_t, int, char * const []);
#if defined(CONFIG_CMD_LOADB)
-extern command_ret_t do_load_serial_bin(cmd_tbl_t *, int, int, char * const []);
+extern command_ret_t do_load_serial_bin(cmd_tbl_t *, uint_fast8_t, int, char * const []);
#endif
-extern command_ret_t do_go(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_restart(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_console(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_dump_mem(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_mem_mm_avr(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_mem_nm_avr(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_eep_cp(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_busreq_pulse(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_date(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_gpio(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_sd(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_fat(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_run(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_source(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_attach(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_pr_free_avr(cmd_tbl_t *, int, int, char * const []);
+extern command_ret_t do_go(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_restart(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_console(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_dump_mem(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_mem_mm_avr(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_mem_nm_avr(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_eep_cp(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_busreq_pulse(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_date(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_gpio(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_sd(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_fat(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_run(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_source(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_attach(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_pr_free_avr(cmd_tbl_t *, uint_fast8_t, int, char * const []);
#ifdef CONFIG_SYS_LONGHELP
const FLASH char sd_help_text[] =
),
CMD_TBL_ITEM(
- md, 3, 1, do_mem_md,
+ md, 3, CTBL_REPEAT, do_mem_md,
"memory display",
"address [# of objects]"
),
CMD_TBL_ITEM(
- mm, 2, 1, do_mem_mm,
+ mm, 2, CTBL_REPEAT, do_mem_mm,
"memory modify (auto-incrementing address)",
"address"
),
CMD_TBL_ITEM(
- nm, 2, 1, do_mem_nm,
+ nm, 2, CTBL_REPEAT, do_mem_nm,
"memory modify (constant address)",
"address"
),
CMD_TBL_ITEM(
- mw, CONFIG_SYS_MAXARGS, 1, do_mem_mw,
+ mw, CONFIG_SYS_MAXARGS, CTBL_REPEAT, do_mem_mw,
"memory write (fill)",
"[-bwl] address value [count]\n"
" -b write value as byte (8 bit, default)\n"
" -l write value as long (32 bit)"
),
CMD_TBL_ITEM(
- cp, 4, 1, do_mem_cp,
+ cp, 4, CTBL_REPEAT, do_mem_cp,
"memory copy",
"source target count"
),
CMD_TBL_ITEM(
- cmp, 4, 1, do_mem_cmp,
+ cmp, 4, CTBL_REPEAT, do_mem_cmp,
"memory compare",
"addr1 addr2 count"
),
" - set address offset for memory commands to 'offset'"
),
CMD_TBL_ITEM(
- mloop, 3, 1, do_mem_loop,
+ mloop, 3, CTBL_REPEAT, do_mem_loop,
"infinite loop on address range",
"address number_of_bytes"
),
CMD_TBL_ITEM(
- mloopw, 4, 1, do_mem_loopw,
+ mloopw, 4, CTBL_REPEAT, do_mem_loopw,
"infinite write loop on address range",
"address number_of_bytes data_to_write"
),
#ifdef CONFIG_CMD_MEMTEST
CMD_TBL_ITEM(
- mtest, 4, 1, do_mem_mtest,
+ mtest, 4, CTBL_REPEAT, do_mem_mtest,
"simple RAM read/write test",
"[start [end [iterations]]]"
),
#ifdef CONFIG_MX_CYCLIC
CMD_TBL_ITEM(
- mdc, 4, 1, do_mem_mdc,
+ mdc, 4, CTBL_REPEAT, do_mem_mdc,
"memory display cyclic",
"address count delay(ms)"
),
CMD_TBL_ITEM(
- mwc, CONFIG_SYS_MAXARGS, 1, do_mem_mdc,
+ mwc, CONFIG_SYS_MAXARGS, CTBL_REPEAT, do_mem_mdc,
"memory write cyclic",
"[-bwl] address value delay(ms)\n"
" -b write value as byte (8 bit, default)\n"
),
CMD_TBL_ITEM(
- attach, CONFIG_SYS_MAXARGS, 1, do_attach,
+ attach, CONFIG_SYS_MAXARGS, CTBL_REPEAT, do_attach,
"attach filesystem image file to CP/M drive",
"[-rw] [-o options] dsk<n> diskfile\n"
" Attach diskfile to dsk<n>, where n in 0..7\n"
" Without arguments, list current assignments\n"
),
CMD_TBL_ITEM(
- detach, 2, 1, do_attach,
+ detach, 2, CTBL_REPEAT, do_attach,
"detach file from CP/M drive",
"dsk<n>]\n"
" - alias for 'attach -d dsk<n>'"
),
CMD_TBL_ITEM(
- help, CONFIG_SYS_MAXARGS, 1, do_help,
+ help, CONFIG_SYS_MAXARGS, CTBL_REPEAT, do_help,
"print command description/usage",
"\n"
" - print brief description of all commands\n"
* Memory Display
* md addr {len}
*/
-command_ret_t do_dump_mem(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_dump_mem(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
int (*readwhat)(uint8_t *buf, uint32_t addr, uint8_t count);
return CMD_RET_SUCCESS;
}
-command_ret_t do_eep_cp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_eep_cp(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
uint16_t src, dest, count;
int_fast8_t step;
static uint8_t *mm_last_addr;
static command_ret_t
-mod_mem_avr(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char * const argv[])
+mod_mem_avr(cmd_tbl_t *cmdtp, int incrflag, uint_fast8_t flag, int argc, char * const argv[])
{
uint8_t *addr;
int nbytes;
}
-command_ret_t do_mem_mm_avr(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_mem_mm_avr(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
return mod_mem_avr (cmdtp, 1, flag, argc, argv);
}
-command_ret_t do_mem_nm_avr(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_mem_nm_avr(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
return mod_mem_avr (cmdtp, 0, flag, argc, argv);
}
(size_t) STACK_POINTER(), (size_t) __brkval, freesum);
}
-command_ret_t do_pr_free_avr(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_pr_free_avr(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc UNUSED, char * const argv[] UNUSED)
{
printfreelist(NULL);
* @return 0 if ok, 1 on error
*/
static
-command_ret_t _do_env_set(int flag, int argc, char * const argv[])
+command_ret_t _do_env_set(uint_fast8_t flag, int argc, char * const argv[])
{
int i, len;
char *name, *value, *valp, *p;
*/
}
-command_ret_t do_env_print(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_env_print(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
(void) cmdtp; (void) flag;
}
-command_ret_t do_env_set(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_env_set(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
(void) cmdtp;
}
-command_ret_t do_env_default(cmd_tbl_t *cmdtp, int flag,
+command_ret_t do_env_default(cmd_tbl_t *cmdtp, uint_fast8_t flag,
int argc, char * const argv[])
{
(void) cmdtp; (void) flag; (void) argc; (void) argv;
}
-command_ret_t do_env_save(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_env_save(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
(void) cmdtp; (void) flag; (void) argc; (void) argv;
#ifndef CLI_H
#define CLI_H
+#include "common.h"
+
/**
* Go into the command loop
*
* (If cmd is NULL or "" or longer than CONFIG_SYS_CBSIZE-1 it is
* considered unrecognized)
*/
-//int cli_simple_run_command(const char *cmd, int flag);
+//int cli_simple_run_command(const char *cmd, uint_fast8_t flag);
/**
* cli_simple_run_command_list() - Execute a list of command
* @param flag Execution flags (CMD_FLAG_...)
* @return 0 on success, or != 0 on error.
*/
-//int cli_simple_run_command_list(char *cmd, int flag);
+//int cli_simple_run_command_list(char *cmd, uint_fast8_t flag);
/**
* parse_line() - split a command line down into separate arguments
* @param flag Execution flags (CMD_FLAG_...)
* @return 0 on success, or != 0 on error.
*/
-int run_command(const char *cmd, int flag);
+int run_command(const char *cmd, uint_fast8_t flag);
int run_command_list(const char *cmd, int len);
/*
* (C) Copyright 2014 Leo C. <erbl259-lmu@yahoo.de>
*
- * SPDX-License-Identifier: GPL-2.0+
+ * SPDX-License-Identifier: GPL-2.0
*/
#ifndef CMD_MEM_H
#include "cmd_mem.h"
-extern command_ret_t do_mem_md(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_mem_mm(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_mem_nm(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_mem_mw(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_mem_cp(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_mem_cmp(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_mem_base(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_mem_loop(cmd_tbl_t *, int, int, char * const []);
-extern command_ret_t do_mem_loopw(cmd_tbl_t *, int, int, char * const []);
+extern command_ret_t do_mem_md(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_mem_mm(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_mem_nm(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_mem_mw(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_mem_cp(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_mem_cmp(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_mem_base(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_mem_loop(cmd_tbl_t *, uint_fast8_t, int, char * const []);
+extern command_ret_t do_mem_loopw(cmd_tbl_t *, uint_fast8_t, int, char * const []);
#ifdef CONFIG_CMD_MEMTEST
-extern command_ret_t do_mem_mtest(cmd_tbl_t *, int, int, char * const []);
+extern command_ret_t do_mem_mtest(cmd_tbl_t *, uint_fast8_t, int, char * const []);
#endif
#ifdef CONFIG_MX_CYCLIC
-extern command_ret_t do_mem_mdc(cmd_tbl_t *, int, int, char * const []);
+extern command_ret_t do_mem_mdc(cmd_tbl_t *, uint_fast8_t, int, char * const []);
#endif /* CONFIG_MX_CYCLIC */
#endif /* CMD_MEM_H */
struct cmd_tbl_s {
const FLASH char *name; /* Command Name */
- int maxargs; /* maximum number of arguments */
- int repeatable; /* autorepeat allowed? */
+ uint8_t maxargs; /* maximum number of arguments */
+ uint8_t flags; /* autorepeat allowed? */
/* Implementation function */
- command_ret_t (*cmd)(const FLASH struct cmd_tbl_s *, int, int, char * const []);
+ command_ret_t (*cmd)(const FLASH struct cmd_tbl_s *, uint_fast8_t, int, char * const []);
const FLASH char *usage; /* Usage message (short) */
#ifdef CONFIG_SYS_LONGHELP
const FLASH char *help; /* Help message (long) */
* @return 0 if the command succeeded, 1 if it failed
*/
command_ret_t
-cmd_process(int flag, int argc, char * const argv[], uint_fast8_t *repeatable);
+cmd_process(uint_fast8_t flag, int argc, char * const argv[], uint_fast8_t *repeatable);
/* command.c */
-command_ret_t _do_help (cmd_tbl_t *cmd_start, int cmd_items, cmd_tbl_t * cmdtp, int
- flag, int argc, char * const argv[]);
+command_ret_t _do_help (cmd_tbl_t *cmd_start, int cmd_items, cmd_tbl_t * cmdtp, uint_fast8_t flag, int argc, char * const argv[]);
cmd_tbl_t *find_cmd(const char *cmd);
cmd_tbl_t *find_cmd_tbl (const char *cmd, cmd_tbl_t *table, int table_len);
*
* All commands use a common argument format:
*
- * void function (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
+ * void function (cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[]);
*/
#ifdef CONFIG_CMD_BOOTD
-extern command_ret_t do_bootd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
+extern command_ret_t do_bootd(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[]);
#endif
#ifdef CONFIG_CMD_BOOTM
-extern command_ret_t do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
+extern command_ret_t do_bootm(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[]);
extern int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd);
#else
-static inline int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd)
+static inline int bootm_maybe_autostart(cmd_tbl_t *cmdtp UNUSED, const char *cmd UNUSED)
{
- (void) cmdtp; (void) cmd;
-
return 0;
}
#endif
extern int common_diskboot(cmd_tbl_t *cmdtp, const char *intf, int argc,
char *const argv[]);
-extern command_ret_t do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
+extern command_ret_t do_reset(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[]);
/*
* Command Flags:
*/
-#define CMD_FLAG_REPEAT 0x0001 /* repeat last command */
-#define CMD_FLAG_BOOTD 0x0002 /* command is from bootd */
+#define CMD_FLAG_REPEAT 0x01 /* repeat last command */
+#define CMD_FLAG_BOOTD 0x02 /* command is from bootd */
+
+/*
+ * Flags for command table:
+ */
+#define CTBL_REPEAT 0x01 /* command is repeatable */
+#define CTBL_SUBCMD 0x02 /* command has subcommands */
#ifdef CONFIG_AUTO_COMPLETE
# define _CMD_COMPLETE(x) x,
CMD_TBL_ITEM_COMPLETE(_name, _maxargs, _rep, _cmd, \
_usage, _help, NULL)
-typedef command_ret_t (*do_cmd_t)(cmd_tbl_t *, int, int, char * const []);
+typedef command_ret_t (*do_cmd_t)(cmd_tbl_t *, uint_fast8_t, int, char * const []);
extern cmd_tbl_t cmd_tbl[];
#define GCC_VERSION (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)
+#define USED __attribute__((used))
+#define UNUSED __attribute__((unused))
+
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>