Merge tag '1.2.0' into debian
[fw/stlink] / src / stlink-usb.h
index 58b60e430694e146ae7827c70e01bfe31aeb38a3..747d54c7480bdfb1d815c13657099d833b0299fa 100644 (file)
@@ -6,14 +6,17 @@
  */
 
 #ifndef STLINK_USB_H
-#define        STLINK_USB_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
+#define STLINK_USB_H
 
+#include <stdbool.h>
 #include <libusb.h>
+
 #include "stlink-common.h"
+#include "uglylogging.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 #define STLINK_SG_SIZE 31
 #define STLINK_CMD_SIZE 16
@@ -21,8 +24,6 @@ extern "C" {
     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;
@@ -30,12 +31,21 @@ extern "C" {
         unsigned int cmd_len;
     };
 
-    stlink_t* stlink_open_usb(const int verbose, int reset);
-
-
-#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 */