X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/1157e75889d3d6d23d1e2514f401cd5b354bd149..6c7c9c2dd4350e2de9a9054cedcdc0a005175fcd:/avr/cmd_sd.c diff --git a/avr/cmd_sd.c b/avr/cmd_sd.c index 6b75d6e..10b5bb5 100644 --- a/avr/cmd_sd.c +++ b/avr/cmd_sd.c @@ -1,17 +1,18 @@ /* * (C) Copyright 2014 Leo C. * - * SPDX-License-Identifier: GPL-2.0+ + * SPDX-License-Identifier: GPL-2.0 */ #include "common.h" -#include +//#include #include "command.h" #include "diskio.h" #include "ff.h" -#include "z80-if.h" +#include "eval_arg.h" #include "print-utils.h" +#include "z80-if.h" /* @@ -19,7 +20,7 @@ * */ 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; @@ -29,7 +30,7 @@ command_ret_t do_status(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[ if (argc < 2) return CMD_RET_USAGE; - dev = (BYTE) strtoul(argv[1], 0, 10); + dev = (BYTE) eval_arg(argv[1], NULL); res = disk_status(dev); printf_P(PSTR("Socket status: %02x\n"), res); @@ -41,7 +42,7 @@ command_ret_t do_status(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[ * */ 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; @@ -51,7 +52,7 @@ command_ret_t do_init(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if (argc < 2) return CMD_RET_USAGE; - dev = (BYTE) strtoul(argv[1], 0, 10); + dev = (BYTE) eval_arg(argv[1], NULL); if (disk_status(dev) & STA_NODISK) { printf_P(PSTR("No Disk\n")); @@ -72,7 +73,7 @@ command_ret_t do_init(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) * */ 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; @@ -88,7 +89,7 @@ command_ret_t do_info(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if (argc < 2) return CMD_RET_USAGE; - dev = (BYTE) strtoul(argv[1], 0, 10); + dev = (BYTE) eval_arg(argv[1], NULL); res = disk_status(dev); if (res & (STA_NODISK | STA_NOINIT)) { @@ -121,7 +122,7 @@ command_ret_t do_info(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) * */ 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; @@ -138,7 +139,7 @@ command_ret_t do_dump(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if (argc < 2) return CMD_RET_USAGE; - dev = (BYTE) strtoul(argv[1], NULL, 10); + dev = (BYTE) eval_arg(argv[1], NULL); if (dev != dev_last) sec_last = 0; sec = sec_last; @@ -147,9 +148,9 @@ command_ret_t do_dump(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if ((flag & CMD_FLAG_REPEAT) == 0) { /* If another parameter, it is the sector to dump. */ if (argc > 2) - sec = strtoul(argv[2], 0, 10); + sec = eval_arg(argv[2], NULL); if (argc > 3) - count = (UINT) strtoul(argv[3], 0, 10); + count = (UINT) eval_arg(argv[3], NULL); } for ( ; count; count--, sec++) { @@ -174,7 +175,7 @@ command_ret_t do_dump(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) * */ 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; @@ -191,7 +192,7 @@ command_ret_t do_read(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if (argc < 2) return CMD_RET_USAGE; - dev = (BYTE) strtoul(argv[1], NULL, 10); + dev = (BYTE) eval_arg(argv[1], NULL); sec = sec_last; count = 1; addr = addr_last; @@ -199,11 +200,11 @@ command_ret_t do_read(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if ((flag & CMD_FLAG_REPEAT) == 0) { /* If another parameter, it is the sector to dump. */ if (argc > 2) - sec = strtoul(argv[2], 0, 10); + sec = eval_arg(argv[2], NULL); if (argc > 3) - count = strtoul(argv[3], 0, 10); + count = eval_arg(argv[3], NULL); if (argc > 4) - addr = strtoul(argv[4], 0, 16); + addr = eval_arg(argv[4], NULL); } for (nr = 0; nr < count;) { @@ -236,7 +237,7 @@ command_ret_t do_read(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) * */ 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; @@ -253,7 +254,7 @@ command_ret_t do_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[] if (argc < 2) return CMD_RET_USAGE; - dev = (BYTE) strtoul(argv[1], NULL, 10); + dev = (BYTE) eval_arg(argv[1], NULL); sec = sec_last; addr = addr_last; count = 1; @@ -261,11 +262,11 @@ command_ret_t do_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[] if ((flag & CMD_FLAG_REPEAT) == 0) { /* If another parameter, it is the sector to dump. */ if (argc > 2) - sec = strtoul(argv[2], 0, 10); + sec = eval_arg(argv[2], NULL); if (argc > 3) - count = strtoul(argv[3], 0, 10); + count = eval_arg(argv[3], NULL); if (argc > 4) - addr = strtoul(argv[4], 0, 16); + addr = eval_arg(argv[4], NULL); } for (nr = 0; nr < count;) { @@ -299,7 +300,7 @@ command_ret_t do_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[] * */ 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; @@ -308,55 +309,52 @@ command_ret_t do_ioctl_sync(cmd_tbl_t *cmdtp, int flag, int argc, char * const a if (argc < 2) return CMD_RET_USAGE; - dev = (BYTE) strtoul(argv[1], 0, 10); + dev = (BYTE) eval_arg(argv[1], NULL); printf_P(PSTR("rc=%.2x\n"), disk_ioctl(dev, CTRL_SYNC, 0)); return CMD_RET_SUCCESS; } -static -command_ret_t do_help(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); - -cmd_tbl_t cmd_sd_sub[] = { +cmd_tbl_t cmd_tbl_sd[] = { 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)", - " [sector [count ]]" + "drive [sector [count ]]" ), CMD_TBL_ITEM( - read, 2, 1, do_read, + read, 2, CTBL_REPEAT, do_read, "Read disk sector(s) into meomory", - " [sector [count [memaddr]]]" + "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", - " [sector [count [memaddr]]]" + "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" @@ -370,34 +368,18 @@ CMD_TBL_ITEM( #ifdef CONFIG_SYS_LONGHELP FSTR(""), #endif /* CONFIG_SYS_LONGHELP */ + NULL, #ifdef CONFIG_AUTO_COMPLETE - 0, + NULL, #endif }, +/* Mark end of table */ +CMD_TBL_END(cmd_tbl_sd) }; -static -command_ret_t do_help(cmd_tbl_t *cmdtp, int 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; - - if (argc < 2) - return CMD_RET_USAGE; - - /* drop initial "sd" arg */ - argc--; - argv++; - - cp = find_cmd_tbl(argv[0], cmd_sd_sub, ARRAY_SIZE(cmd_sd_sub)); - - if (cp) - return cp->cmd(cmdtp, flag, argc, argv); - + puts_P("Huch?"); return CMD_RET_USAGE; }