]> git.gag.com Git - fw/stlink/blobdiff - include/stlink/sg.h
Reorganize files:
[fw/stlink] / include / stlink / sg.h
diff --git a/include/stlink/sg.h b/include/stlink/sg.h
new file mode 100644 (file)
index 0000000..56780f4
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * File:   stlink/sg.h
+ * Author: karl
+ *
+ * Created on October 1, 2011, 11:29 PM
+ */
+
+#ifndef STLINK_SG_H
+#define        STLINK_SG_H
+
+#include <libusb.h>
+#include "stlink.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+    // device access
+#define RDWR           0
+#define RO             1
+#define SG_TIMEOUT_SEC 1 // actually 1 is about 2 sec
+#define SG_TIMEOUT_MSEC        3 * 1000
+    // Each CDB can be a total of 6, 10, 12, or 16 bytes, later version
+    // of the SCSI standard also allow for variable-length CDBs (min. CDB is 6).
+    // the stlink needs max. 10 bytes.
+#define CDB_6          6
+#define CDB_10         10
+#define CDB_12         12
+#define CDB_16         16
+
+#define CDB_SL         10
+
+    // Query data flow direction.
+#define Q_DATA_OUT     0
+#define Q_DATA_IN      1
+
+    // The SCSI Request Sense command is used to obtain sense data
+    // (error information) from a target device.
+    // http://en.wikipedia.org/wiki/SCSI_Request_Sense_Command
+#define SENSE_BUF_LEN          32
+
+
+
+    struct stlink_libsg {
+        libusb_context* libusb_ctx;
+        libusb_device_handle *usb_handle;
+        unsigned ep_rep;
+        unsigned ep_req;
+
+        int sg_fd;
+        int do_scsi_pt_err;
+
+        unsigned char cdb_cmd_blk[CDB_SL];
+
+        int q_data_dir; // Q_DATA_IN, Q_DATA_OUT
+        // the start of the query data in the device memory space
+        uint32_t q_addr;
+
+        // Sense (error information) data
+        // obsolete, this was fed to the scsi tools
+        unsigned char sense_buf[SENSE_BUF_LEN];
+
+        reg reg;
+    };
+
+    stlink_t* stlink_v1_open(const int verbose, int reset);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* STLINK_SG_H */
+