-/*
+/*
* File: stlink-usb.h
* Author: karl
*
*/
#ifndef STLINK_USB_H
-#define STLINK_USB_H
+#define STLINK_USB_H
-#ifdef __cplusplus
+#include <stdbool.h>
+#include <libusb.h>
+
+#include "stlink-common.h"
+#include "uglylogging.h"
+
+#ifdef __cplusplus
extern "C" {
#endif
-#include <libusb.h>
-#include "stlink-common.h"
-
#define STLINK_SG_SIZE 31
#define STLINK_CMD_SIZE 16
struct stlink_libusb {
libusb_context* libusb_ctx;
libusb_device_handle* usb_handle;
- struct libusb_transfer* req_trans;
- struct libusb_transfer* rep_trans;
unsigned int ep_req;
unsigned int ep_rep;
int protocoll;
unsigned int sg_transfer_idx;
unsigned int cmd_len;
};
-
- stlink_t* stlink_open_usb(const int verbose);
-
-#ifdef __cplusplus
+ /**
+ * Open a stlink
+ * @param verbose Verbosity loglevel
+ * @param reset Reset stlink programmer
+ * @param serial Serial number to search for, when NULL the first stlink found is opened (binary format)
+ * @retval NULL Error while opening the stlink
+ * @retval !NULL Stlink found and ready to use
+ */
+ stlink_t *stlink_open_usb(enum ugly_loglevel verbose, bool reset, char serial[16]);
+ size_t stlink_probe_usb(stlink_t **stdevs[]);
+ void stlink_probe_usb_free(stlink_t **stdevs[], size_t size);
+
+#ifdef __cplusplus
}
#endif
-#endif /* STLINK_USB_H */
+#endif /* STLINK_USB_H */