// TODO - this should be done as just a simple flag to the st-util command line...
+#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define DEBUG_LOG_LEVEL 100
#define STND_LOG_LEVEL 50
+stlink_t *connected_stlink = NULL;
+
+static void cleanup(int signal __attribute__((unused))) {
+ if (connected_stlink) {
+ /* Switch back to mass storage mode before closing. */
+ stlink_run(connected_stlink);
+ stlink_exit_debug_mode(connected_stlink);
+ stlink_close(connected_stlink);
+ }
+
+ exit(1);
+}
+
enum st_cmds {DO_WRITE = 0, DO_READ = 1, DO_ERASE = 2};
struct opts
{
sl->verbose = o.log_level;
}
+ connected_stlink = sl;
+ signal(SIGINT, &cleanup);
+ signal(SIGTERM, &cleanup);
+ signal(SIGSEGV, &cleanup);
+
if (stlink_current_mode(sl) == STLINK_DEV_DFU_MODE)
stlink_exit_dfu_mode(sl);
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
-#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#ifdef __MINGW32__
connected_stlink = sl;
signal(SIGINT, &cleanup);
signal(SIGTERM, &cleanup);
+ signal(SIGSEGV, &cleanup);
if (state.reset) {
stlink_reset(sl);