cygwin 1.7 build fixes
[openocd.git] / src / svf / svf.c
index 9c597bf7d68e1711cfc2149be61a563bfe109557..dfdecbcd83c6c082c563d74f9853db66944deeaa 100644 (file)
@@ -31,9 +31,9 @@
 #include "config.h"
 #endif
 
-#include "jtag.h"
+#include <jtag/jtag.h>
 #include "svf.h"
-#include "time_support.h"
+#include <helper/time_support.h>
 
 
 // SVF command
@@ -89,13 +89,13 @@ static const char *svf_trst_mode_name[4] =
        "ABSENT"
 };
 
-typedef struct
+struct svf_statemove
 {
        tap_state_t from;
        tap_state_t to;
        uint32_t num_of_moves;
        tap_state_t paths[8];
-}svf_statemove_t;
+};
 
 /*
  * These paths are from the SVF specification for the STATE command, to be
@@ -112,7 +112,7 @@ typedef struct
  * and many SVF implementations, we don't want to risk missing that state.
  * To get to RESET, always we ignore the current state.
  */
-static const svf_statemove_t svf_statemoves[] =
+static const struct svf_statemove svf_statemoves[] =
 {
        // from                 to                              num_of_moves,   paths[8]
 //     {TAP_RESET,             TAP_RESET,              1,                              {TAP_RESET}},
@@ -141,7 +141,7 @@ static const svf_statemove_t svf_statemoves[] =
 #define XXR_TDO                                                (1 << 1)
 #define XXR_MASK                                       (1 << 2)
 #define XXR_SMASK                                      (1 << 3)
-typedef struct
+struct svf_xxr_para
 {
        int len;
        int data_mask;
@@ -149,9 +149,9 @@ typedef struct
        uint8_t *tdo;
        uint8_t *mask;
        uint8_t *smask;
-}svf_xxr_para_t;
+};
 
-typedef struct
+struct svf_para
 {
        float frequency;
        tap_state_t ir_end_state;
@@ -160,16 +160,16 @@ typedef struct
        tap_state_t runtest_end_state;
        trst_mode_t trst_mode;
 
-       svf_xxr_para_t hir_para;
-       svf_xxr_para_t hdr_para;
-       svf_xxr_para_t tir_para;
-       svf_xxr_para_t tdr_para;
-       svf_xxr_para_t sir_para;
-       svf_xxr_para_t sdr_para;
-}svf_para_t;
+       struct svf_xxr_para hir_para;
+       struct svf_xxr_para hdr_para;
+       struct svf_xxr_para tir_para;
+       struct svf_xxr_para tdr_para;
+       struct svf_xxr_para sir_para;
+       struct svf_xxr_para sdr_para;
+};
 
-static svf_para_t svf_para;
-static const svf_para_t svf_para_init =
+static struct svf_para svf_para;
+static const struct svf_para svf_para_init =
 {
 //     frequency,      ir_end_state,   dr_end_state,   runtest_run_state,      runtest_end_state,      trst_mode
        0,                      TAP_IDLE,               TAP_IDLE,               TAP_IDLE,                       TAP_IDLE,                       TRST_Z,
@@ -193,31 +193,30 @@ static const svf_para_t svf_para_init =
        {0,             0,                      NULL,   NULL,   NULL,   NULL},
 };
 
-typedef struct
+struct svf_check_tdo_para
 {
        int line_num;           // used to record line number of the check operation
                                                // so more information could be printed
        int enabled;            // check is enabled or not
        int buffer_offset;      // buffer_offset to buffers
        int bit_len;            // bit length to check
-}svf_check_tdo_para_t;
+};
 
 #define SVF_CHECK_TDO_PARA_SIZE        1024
-static svf_check_tdo_para_t *svf_check_tdo_para = NULL;
+static struct svf_check_tdo_para *svf_check_tdo_para = NULL;
 static int svf_check_tdo_para_index = 0;
 
 static int svf_read_command_from_file(int fd);
 static int svf_check_tdo(void);
 static int svf_add_check_para(uint8_t enabled, int buffer_offset, int bit_len);
-static int svf_run_command(struct command_context_s *cmd_ctx, char *cmd_str);
-static int handle_svf_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
+static int svf_run_command(struct command_context *cmd_ctx, char *cmd_str);
 
 static int svf_fd = 0;
 static char *svf_command_buffer = NULL;
 static int svf_command_buffer_size = 0;
 static int svf_line_number = 1;
 
-static jtag_tap_t *tap = NULL;
+static struct jtag_tap *tap = NULL;
 
 #define SVF_MAX_BUFFER_SIZE_TO_COMMIT  (4 * 1024)
 static uint8_t *svf_tdi_buffer = NULL, *svf_tdo_buffer = NULL, *svf_mask_buffer = NULL;
@@ -225,15 +224,7 @@ static int svf_buffer_index = 0, svf_buffer_size = 0;
 static int svf_quiet = 0;
 
 
-int svf_register_commands(struct command_context_s *cmd_ctx)
-{
-       register_command(cmd_ctx, NULL, "svf", handle_svf_command,
-               COMMAND_EXEC, "run svf <file>");
-
-       return ERROR_OK;
-}
-
-static void svf_free_xxd_para(svf_xxr_para_t *para)
+static void svf_free_xxd_para(struct svf_xxr_para *para)
 {
        if (NULL != para)
        {
@@ -291,7 +282,7 @@ int svf_add_statemove(tap_state_t state_to)
                return ERROR_OK;
        }
 
-       for (index = 0; index < DIM(svf_statemoves); index++)
+       for (index = 0; index < ARRAY_SIZE(svf_statemoves); index++)
        {
                if ((svf_statemoves[index].from == state_from)
                        && (svf_statemoves[index].to == state_to))
@@ -310,45 +301,45 @@ int svf_add_statemove(tap_state_t state_to)
        return ERROR_FAIL;
 }
 
-static int handle_svf_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_svf_command)
 {
 #define SVF_NUM_OF_OPTIONS                     1
-       int command_num = 0, i;
+       int command_num = 0;
        int ret = ERROR_OK;
        long long time_ago;
 
-       if ((argc < 1) || (argc > (1 + SVF_NUM_OF_OPTIONS)))
+       if ((CMD_ARGC < 1) || (CMD_ARGC > (1 + SVF_NUM_OF_OPTIONS)))
        {
-               command_print(cmd_ctx, "usage: svf <file> [quiet]");
+               command_print(CMD_CTX, "usage: svf <file> [quiet]");
                return ERROR_FAIL;
        }
 
        // parse variant
        svf_quiet = 0;
-       for (i = 1; i < argc; i++)
+       for (unsigned i = 1; i < CMD_ARGC; i++)
        {
-               if (!strcmp(args[i], "quiet"))
+               if (!strcmp(CMD_ARGV[i], "quiet"))
                {
                        svf_quiet = 1;
                }
                else
                {
-                       LOG_ERROR("unknown variant for svf: %s", args[i]);
+                       LOG_ERROR("unknown variant for svf: %s", CMD_ARGV[i]);
 
                        // no need to free anything now
                        return ERROR_FAIL;
                }
        }
 
-       if ((svf_fd = open(args[0], O_RDONLY)) < 0)
+       if ((svf_fd = open(CMD_ARGV[0], O_RDONLY)) < 0)
        {
-               command_print(cmd_ctx, "file \"%s\" not found", args[0]);
+               command_print(CMD_CTX, "file \"%s\" not found", CMD_ARGV[0]);
 
                // no need to free anything now
                return ERROR_FAIL;
        }
 
-       LOG_USER("svf processing file: \"%s\"", args[0]);
+       LOG_USER("svf processing file: \"%s\"", CMD_ARGV[0]);
 
        // get time
        time_ago = timeval_ms();
@@ -358,7 +349,7 @@ static int handle_svf_command(struct command_context_s *cmd_ctx, char *cmd, char
        svf_command_buffer_size = 0;
 
        svf_check_tdo_para_index = 0;
-       svf_check_tdo_para = malloc(sizeof(svf_check_tdo_para_t) * SVF_CHECK_TDO_PARA_SIZE);
+       svf_check_tdo_para = malloc(sizeof(struct svf_check_tdo_para) * SVF_CHECK_TDO_PARA_SIZE);
        if (NULL == svf_check_tdo_para)
        {
                LOG_ERROR("not enough memory");
@@ -401,7 +392,7 @@ static int handle_svf_command(struct command_context_s *cmd_ctx, char *cmd, char
 
        while (ERROR_OK == svf_read_command_from_file(svf_fd))
        {
-               if (ERROR_OK != svf_run_command(cmd_ctx, svf_command_buffer))
+               if (ERROR_OK != svf_run_command(CMD_CTX, svf_command_buffer))
                {
                        LOG_ERROR("fail to run command at line %d", svf_line_number);
                        ret = ERROR_FAIL;
@@ -419,7 +410,7 @@ static int handle_svf_command(struct command_context_s *cmd_ctx, char *cmd, char
        }
 
        // print time
-       command_print(cmd_ctx, "%lld ms used", timeval_ms() - time_ago);
+       command_print(CMD_CTX, "%lld ms used", timeval_ms() - time_ago);
 
 free_all:
 
@@ -466,11 +457,11 @@ free_all:
 
        if (ERROR_OK == ret)
        {
-               command_print(cmd_ctx, "svf file programmed successfully for %d commands", command_num);
+               command_print(CMD_CTX, "svf file programmed successfully for %d commands", command_num);
        }
        else
        {
-               command_print(cmd_ctx, "svf file programmed failed");
+               command_print(CMD_CTX, "svf file programmed failed");
        }
 
        return ret;
@@ -479,7 +470,8 @@ free_all:
 #define SVFP_CMD_INC_CNT                       1024
 static int svf_read_command_from_file(int fd)
 {
-       char ch, *tmp_buffer = NULL;
+       unsigned char ch;
+       char *tmp_buffer = NULL;
        int cmd_pos = 0, cmd_ok = 0, slash = 0, comment = 0;
 
        while (!cmd_ok && (read(fd, &ch, 1) > 0))
@@ -759,7 +751,7 @@ static int svf_execute_tap(void)
        return ERROR_OK;
 }
 
-static int svf_run_command(struct command_context_s *cmd_ctx, char *cmd_str)
+static int svf_run_command(struct command_context *cmd_ctx, char *cmd_str)
 {
        char *argus[256], command;
        int num_of_argu = 0, i;
@@ -771,9 +763,9 @@ static int svf_run_command(struct command_context_s *cmd_ctx, char *cmd_str)
        int run_count;
        float min_time, max_time;
        // for XXR
-       svf_xxr_para_t *xxr_para_tmp;
+       struct svf_xxr_para *xxr_para_tmp;
        uint8_t **pbuffer_tmp;
-       scan_field_t field;
+       struct scan_field field;
        // for STATE
        tap_state_t *path = NULL, state;
 
@@ -792,7 +784,7 @@ static int svf_run_command(struct command_context_s *cmd_ctx, char *cmd_str)
         */
 
        command = svf_find_string_in_array(argus[0],
-                       (char **)svf_command_name, DIM(svf_command_name));
+                       (char **)svf_command_name, ARRAY_SIZE(svf_command_name));
        switch (command)
        {
        case ENDDR:
@@ -1359,12 +1351,9 @@ static int svf_run_command(struct command_context_s *cmd_ctx, char *cmd_str)
                                        return ERROR_FAIL;
                                }
                        }
-                       // no need to keep this memory, in jtag_add_pathmove, path will be duplicated
-                       if (NULL != path)
-                       {
-                               free(path);
-                               path = NULL;
-                       }
+
+                       free(path);
+                       path = NULL;
                }
                else
                {
@@ -1400,7 +1389,7 @@ static int svf_run_command(struct command_context_s *cmd_ctx, char *cmd_str)
                        }
                        i_tmp = svf_find_string_in_array(argus[1],
                                        (char **)svf_trst_mode_name,
-                                       DIM(svf_trst_mode_name));
+                                       ARRAY_SIZE(svf_trst_mode_name));
                        switch (i_tmp)
                        {
                        case TRST_ON:
@@ -1468,3 +1457,19 @@ static int svf_run_command(struct command_context_s *cmd_ctx, char *cmd_str)
 
        return ERROR_OK;
 }
+
+static const struct command_registration svf_command_handlers[] = {
+       {
+               .name = "svf",
+               .handler = &handle_svf_command,
+               .mode = COMMAND_EXEC,
+               .help = "Runs a SVF file.",
+               .usage = "<file>",
+       },
+       COMMAND_REGISTRATION_DONE
+};
+
+int svf_register_commands(struct command_context *cmd_ctx)
+{
+       return register_commands(cmd_ctx, NULL, svf_command_handlers);
+}

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)