Improve lpc2900.c command argument parsing.
authorZachary T Welch <zw@superlucidity.net>
Fri, 23 Oct 2009 09:17:17 +0000 (02:17 -0700)
committerZachary T Welch <zw@superlucidity.net>
Fri, 6 Nov 2009 02:19:18 +0000 (18:19 -0800)
src/flash/lpc2900.c

index 902180cbe3af8856bad226d9da31577e7af7968c..e15d93b25f13dfc9db04f709a1774705bd3fbb0b 100644 (file)
@@ -554,7 +554,6 @@ static uint32_t lpc2900_calc_tr( uint32_t clock, uint32_t time )
 static int lpc2900_handle_signature_command( struct command_context_s *cmd_ctx,
                                              char *cmd, char **args, int argc )
 {
-       flash_bank_t *bank;
        uint32_t status;
        uint32_t signature[4];
 
@@ -565,13 +564,10 @@ static int lpc2900_handle_signature_command( struct command_context_s *cmd_ctx,
                return ERROR_FLASH_BANK_INVALID;
        }
 
-       /* Get the bank descriptor */
-       bank = get_flash_bank_by_num( strtoul(args[0], NULL, 0) );
-       if( !bank )
-       {
-               command_print( cmd_ctx, "flash bank '#%s' is out of bounds", args[0] );
-               return ERROR_OK;
-       }
+       flash_bank_t *bank;
+       int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+       if (ERROR_OK != retval)
+               return retval;
 
        if( bank->target->state != TARGET_HALTED )
        {
@@ -614,21 +610,16 @@ static int lpc2900_handle_signature_command( struct command_context_s *cmd_ctx,
 static int lpc2900_handle_read_custom_command( struct command_context_s *cmd_ctx,
                                                char *cmd, char **args, int argc )
 {
-       flash_bank_t *bank;
-
-
        if( argc < 2 )
        {
                return ERROR_COMMAND_SYNTAX_ERROR;
        }
 
-       /* Get the bank descriptor */
-       bank = get_flash_bank_by_num( strtoul(args[0], NULL, 0) );
-       if( !bank )
-       {
-               command_print( cmd_ctx, "flash bank '#%s' is out of bounds", args[0] );
-               return ERROR_OK;
-       }
+       flash_bank_t *bank;
+       int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+       if (ERROR_OK != retval)
+               return retval;
+
        lpc2900_flash_bank_t *lpc2900_info = bank->driver_priv;
        lpc2900_info->risky = 0;
 
@@ -696,21 +687,16 @@ static int lpc2900_handle_read_custom_command( struct command_context_s *cmd_ctx
 static int lpc2900_handle_password_command(struct command_context_s *cmd_ctx,
                                            char *cmd, char **args, int argc)
 {
-       flash_bank_t *bank;
-
-
        if (argc < 2)
        {
                return ERROR_COMMAND_SYNTAX_ERROR;
        }
 
-       /* Get the bank descriptor */
-       bank = get_flash_bank_by_num(strtoul(args[0], NULL, 0));
-       if (!bank)
-       {
-               command_print(cmd_ctx, "flash bank '#%s' is out of bounds", args[0]);
-               return ERROR_OK;
-       }
+       flash_bank_t *bank;
+       int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+       if (ERROR_OK != retval)
+               return retval;
+
        lpc2900_flash_bank_t *lpc2900_info = bank->driver_priv;
 
 #define ISS_PASSWORD "I_know_what_I_am_doing"
@@ -747,13 +733,11 @@ static int lpc2900_handle_write_custom_command( struct command_context_s *cmd_ct
                return ERROR_COMMAND_SYNTAX_ERROR;
        }
 
-       /* Get the bank descriptor */
-       flash_bank_t *bank = get_flash_bank_by_num(strtoul(args[0], NULL, 0));
-       if (!bank)
-       {
-               command_print(cmd_ctx, "flash bank '#%s' is out of bounds", args[0]);
-               return ERROR_OK;
-       }
+       flash_bank_t *bank;
+       int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+       if (ERROR_OK != retval)
+               return retval;
+
        lpc2900_flash_bank_t *lpc2900_info = bank->driver_priv;
 
        /* Check if command execution is allowed. */
@@ -780,7 +764,7 @@ static int lpc2900_handle_write_custom_command( struct command_context_s *cmd_ct
 
        char *filename = args[1];
        char *type = (argc >= 3) ? args[2] : NULL;
-       int retval = image_open(&image, filename, type);
+       retval = image_open(&image, filename, type);
        if (retval != ERROR_OK)
        {
                return retval;
@@ -866,12 +850,11 @@ static int lpc2900_handle_secure_sector_command(struct command_context_s *cmd_ct
        }
 
        /* Get the bank descriptor */
-       flash_bank_t *bank = get_flash_bank_by_num(strtoul(args[0], NULL, 0));
-       if (!bank)
-       {
-               command_print(cmd_ctx, "flash bank '#%s' is out of bounds", args[0]);
-               return ERROR_OK;
-       }
+       flash_bank_t *bank;
+       int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+       if (ERROR_OK != retval)
+               return retval;
+
        lpc2900_flash_bank_t *lpc2900_info = bank->driver_priv;
 
        /* Check if command execution is allowed. */
@@ -884,8 +867,9 @@ static int lpc2900_handle_secure_sector_command(struct command_context_s *cmd_ct
        lpc2900_info->risky = 0;
 
        /* Read sector range, and do a sanity check. */
-       int first = strtoul(args[1], NULL, 0);
-       int last = strtoul(args[2], NULL, 0);
+       int first, last;
+       COMMAND_PARSE_NUMBER(int, args[1], first);
+       COMMAND_PARSE_NUMBER(int, args[2], last);
        if( (first >= bank->num_sectors) ||
            (last >= bank->num_sectors) ||
            (first > last) )
@@ -896,7 +880,6 @@ static int lpc2900_handle_secure_sector_command(struct command_context_s *cmd_ct
 
        uint8_t page[FLASH_PAGE_SIZE];
        int sector;
-       int retval;
 
        /* Sectors in page 6 */
        if( (first <= 4) || (last >= 8) )
@@ -972,12 +955,11 @@ static int lpc2900_handle_secure_jtag_command(struct command_context_s *cmd_ctx,
        }
 
        /* Get the bank descriptor */
-       flash_bank_t *bank = get_flash_bank_by_num(strtoul(args[0], NULL, 0));
-       if (!bank)
-       {
-               command_print(cmd_ctx, "flash bank '#%s' is out of bounds", args[0]);
-               return ERROR_OK;
-       }
+       flash_bank_t *bank;
+       int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank);
+       if (ERROR_OK != retval)
+               return retval;
+
        lpc2900_flash_bank_t *lpc2900_info = bank->driver_priv;
 
        /* Check if command execution is allowed. */
@@ -1001,7 +983,6 @@ static int lpc2900_handle_secure_jtag_command(struct command_context_s *cmd_ctx,
        page[0x30 +  3] = 0x7F;
 
        /* Write to page 5 */
-       int retval;
        if( (retval = lpc2900_write_index_page( bank, 5, &page ))
                        != ERROR_OK )
        {
@@ -1117,7 +1098,9 @@ static int lpc2900_flash_bank_command(struct command_context_s *cmd_ctx,
         * Reject it if we can't meet the requirements for program time
         * (if clock too slow), or for erase time (clock too fast).
         */
-       lpc2900_info->clk_sys_fmc = strtoul(args[6], NULL, 0) * 1000;
+       uint32_t clk_sys_fmc;
+       COMMAND_PARSE_NUMBER(u32, args[6], clk_sys_fmc);
+       lpc2900_info->clk_sys_fmc = clk_sys_fmc * 1000;
 
        uint32_t clock_limit;
        /* Check program time limit */

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)