jtag/drivers/cmsis_dap: fix usb bulk connection logic
[fw/openocd] / src / jtag / drivers / bitbang.c
index 4417e1258f03decb1bd6fc431dae2d6cc6e5b62f..df1d601b8e7f4abee0bdbdb4ce82f12864736676 100644 (file)
@@ -358,11 +358,10 @@ int bitbang_execute_queue(void)
                                        return ERROR_FAIL;
                                if (jtag_read_buffer(buffer, cmd->cmd.scan) != ERROR_OK)
                                        retval = ERROR_JTAG_QUEUE_FAILED;
-                               if (buffer)
-                                       free(buffer);
+                               free(buffer);
                                break;
                        case JTAG_SLEEP:
-                               LOG_DEBUG_IO("sleep %" PRIi32, cmd->cmd.sleep->us);
+                               LOG_DEBUG_IO("sleep %" PRIu32, cmd->cmd.sleep->us);
                                jtag_sleep(cmd->cmd.sleep->us);
                                break;
                        case JTAG_TMS:
@@ -394,6 +393,11 @@ static void bitbang_swd_exchange(bool rnw, uint8_t buf[], unsigned int offset, u
 {
        LOG_DEBUG("bitbang_swd_exchange");
 
+       if (bitbang_interface->blink) {
+               /* FIXME: we should manage errors */
+               bitbang_interface->blink(1);
+       }
+
        for (unsigned int i = offset; i < bit_cnt + offset; i++) {
                int bytec = i/8;
                int bcval = 1 << (i % 8);
@@ -410,6 +414,11 @@ static void bitbang_swd_exchange(bool rnw, uint8_t buf[], unsigned int offset, u
 
                bitbang_interface->swd_write(1, swdio);
        }
+
+       if (bitbang_interface->blink) {
+               /* FIXME: we should manage errors */
+               bitbang_interface->blink(0);
+       }
 }
 
 static int bitbang_swd_switch_seq(enum swd_special_seq seq)