COMMAND_REGISTRATION_DONE
};
-static int arm_tpiu_swo_create(Jim_Interp *interp, struct arm_tpiu_swo_object *obj)
+COMMAND_HANDLER(handle_arm_tpiu_swo_create)
{
- struct command_context *cmd_ctx;
- Jim_Cmd *cmd;
- int e;
+ int retval = ERROR_FAIL;
- cmd_ctx = current_command_context(interp);
- assert(cmd_ctx);
+ if (!CMD_ARGC)
+ return ERROR_COMMAND_SYNTAX_ERROR;
/* does this command exist? */
- cmd = Jim_GetCommand(interp, Jim_NewStringObj(interp, obj->name, -1), JIM_NONE);
- if (cmd) {
- Jim_SetResultFormatted(interp, "cannot create TPIU object because a command with name '%s' already exists",
- obj->name);
- return JIM_ERR;
- }
-
- /* now - create the new tpiu/swo name command */
- const struct command_registration obj_commands[] = {
- {
- .name = obj->name,
- .mode = COMMAND_ANY,
- .help = "tpiu/swo instance command group",
- .usage = "",
- .chain = arm_tpiu_swo_instance_command_handlers,
- },
- COMMAND_REGISTRATION_DONE
- };
- e = register_commands_with_data(cmd_ctx, NULL, obj_commands, obj);
- if (e != ERROR_OK)
- return JIM_ERR;
-
- list_add_tail(&obj->lh, &all_tpiu_swo);
-
- return JIM_OK;
-}
-
-static int jim_arm_tpiu_swo_create(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
-{
- struct jim_getopt_info goi;
- jim_getopt_setup(&goi, interp, argc - 1, argv + 1);
- if (goi.argc < 1) {
- Jim_WrongNumArgs(interp, 1, argv, "name ?option option ...?");
- return JIM_ERR;
+ Jim_Cmd *jimcmd = Jim_GetCommand(CMD_CTX->interp, CMD_JIMTCL_ARGV[0], JIM_NONE);
+ if (jimcmd) {
+ command_print(CMD, "cannot create TPIU object because a command with name '%s' already exists",
+ CMD_ARGV[0]);
+ return ERROR_FAIL;
}
struct arm_tpiu_swo_object *obj = calloc(1, sizeof(struct arm_tpiu_swo_object));
if (!obj) {
LOG_ERROR("Out of memory");
- return JIM_ERR;
+ return ERROR_FAIL;
}
INIT_LIST_HEAD(&obj->connections);
adiv5_mem_ap_spot_init(&obj->spot);
goto err_exit;
}
- Jim_Obj *n;
- jim_getopt_obj(&goi, &n);
- obj->name = strdup(Jim_GetString(n, NULL));
+ obj->name = strdup(CMD_ARGV[0]);
if (!obj->name) {
LOG_ERROR("Out of memory");
goto err_exit;
}
/* Do the rest as "configure" options */
- goi.is_configure = true;
+ struct jim_getopt_info goi;
+ jim_getopt_setup(&goi, CMD_CTX->interp, CMD_ARGC - 1, CMD_JIMTCL_ARGV + 1);
+ goi.is_configure = 1;
int e = arm_tpiu_swo_configure(&goi, obj);
+
+ int reslen;
+ const char *result = Jim_GetString(Jim_GetResult(CMD_CTX->interp), &reslen);
+ if (reslen > 0)
+ command_print(CMD, "%s", result);
+
if (e != JIM_OK)
goto err_exit;
if (!obj->spot.dap || obj->spot.ap_num == DP_APSEL_INVALID) {
- Jim_SetResultString(goi.interp, "-dap and -ap-num required when creating TPIU", -1);
+ command_print(CMD, "-dap and -ap-num required when creating TPIU");
goto err_exit;
}
- e = arm_tpiu_swo_create(goi.interp, obj);
- if (e != JIM_OK)
+ /* now - create the new tpiu/swo name command */
+ const struct command_registration obj_commands[] = {
+ {
+ .name = obj->name,
+ .mode = COMMAND_ANY,
+ .help = "tpiu/swo instance command group",
+ .usage = "",
+ .chain = arm_tpiu_swo_instance_command_handlers,
+ },
+ COMMAND_REGISTRATION_DONE
+ };
+ retval = register_commands_with_data(CMD_CTX, NULL, obj_commands, obj);
+ if (retval != ERROR_OK)
goto err_exit;
- return JIM_OK;
+ list_add_tail(&obj->lh, &all_tpiu_swo);
+
+ return ERROR_OK;
err_exit:
free(obj->name);
free(obj->out_filename);
free(obj);
- return JIM_ERR;
+ return retval;
}
COMMAND_HANDLER(handle_arm_tpiu_swo_names)
{
.name = "create",
.mode = COMMAND_ANY,
- .jim_handler = jim_arm_tpiu_swo_create,
+ .handler = handle_arm_tpiu_swo_create,
.usage = "name [-dap dap] [-ap-num num] [-baseaddr baseaddr]",
.help = "Creates a new TPIU or SWO object",
},