Align loader to 32-bit boundary
[fw/stlink] / src / stlink-usb.h
index f433193c81eae6ce95c20dbaa189f8f281c81c98..747d54c7480bdfb1d815c13657099d833b0299fa 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
  * File:   stlink-usb.h
  * Author: karl
  *
@@ -6,36 +6,46 @@
  */
 
 #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, 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 */