#define CMD_DAP_RESET_TARGET 0x0A
/* CMD_INFO */
-#define INFO_ID_VID 0x00 /* string */
-#define INFO_ID_PID 0x02 /* string */
+#define INFO_ID_VENDOR 0x01 /* string */
+#define INFO_ID_PRODUCT 0x02 /* string */
#define INFO_ID_SERNUM 0x03 /* string */
#define INFO_ID_FW_VER 0x04 /* string */
#define INFO_ID_TD_VEND 0x05 /* string */
if (jtag_reset_config & RESET_CNCT_UNDER_SRST) {
if (jtag_reset_config & RESET_SRST_NO_GATING) {
- retval = cmsis_dap_cmd_DAP_SWJ_Pins(0, (1 << 7), 0, NULL);
+ retval = cmsis_dap_cmd_DAP_SWJ_Pins(0, SWJ_PIN_SRST, 0, NULL);
if (retval != ERROR_OK)
return ERROR_FAIL;
LOG_INFO("Connecting under reset");
return ERROR_OK;
}
+COMMAND_HANDLER(cmsis_dap_handle_cmd_command)
+{
+ int retval;
+ unsigned i;
+ uint8_t *buffer = cmsis_dap_handle->packet_buffer;
+
+ buffer[0] = 0; /* report number */
+
+ for (i = 0; i < CMD_ARGC; i++)
+ buffer[i + 1] = strtoul(CMD_ARGV[i], NULL, 16);
+
+ retval = cmsis_dap_usb_xfer(cmsis_dap_handle, CMD_ARGC + 1);
+
+ if (retval != ERROR_OK) {
+ LOG_ERROR("CMSIS-DAP command failed.");
+ return ERROR_JTAG_DEVICE_ERROR;
+ }
+
+ LOG_INFO("Returned data %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8,
+ buffer[1], buffer[2], buffer[3], buffer[4]);
+
+ return ERROR_OK;
+}
+
COMMAND_HANDLER(cmsis_dap_handle_vid_pid_command)
{
if (CMD_ARGC > MAX_USB_IDS * 2) {
.usage = "",
.help = "show cmsis-dap info",
},
+ {
+ .name = "cmd",
+ .handler = &cmsis_dap_handle_cmd_command,
+ .mode = COMMAND_EXEC,
+ .usage = "",
+ .help = "issue cmsis-dap command",
+ },
COMMAND_REGISTRATION_DONE
};