#define VERSION 0x910
#define LICENSE 0x952
#define TRANSFER 0x98c
+#define MULTI_TRANSFER 0x98d
#define USB_TRANSFER 0x983
#define EVENT_UNREGISTER 0x987
#define INT_DISABLE 0x91f
#define INT_ENABLE 0x98e
#define EVENT_PULL 0x988
#define USB_SET_INTERFACE 0x981
+#define CARD_REGISTER_OLD 0x97d
+#define INT_ENABLE_OLD 0x91e
+#define USB_GET_DEVICE_DATA_OLD 0x980
+#define EVENT_REGISTER_OLD 0x986
+#define TRANSFER_OLD 0x903
+#define MULTI_TRANSFER_OLD 0x904
#define MAGIC 0xa410b413UL
+#define PP_DATA 0
+#define PP_STATUS 1
+#define PP_CONTROL 2
+#define PP_ECP_CFGA 0
+#define PP_ECP_CFGB 1
+#define PP_ECP_ECR 2
+#define PP_READ 10
+#define PP_WRITE 13
+
+#define PP_TDI 0x01
+#define PP_TDO 0x10
+#define PP_PROG 0x10
+#define PP_TCK 0x02
+#define PP_TMS 0x04
+#define PP_CTRL 0x08
+
+#ifdef DEBUG
+#define DPRINTF(format, args...) fprintf(stderr, format, ##args)
+#else
+#define DPRINTF(format, args...)
+#endif
+
+void hexdump(unsigned char *buf, int len);
+
+#define WDU_GET_MAX_PACKET_SIZE(x) ((unsigned short) (((x) & 0x7ff) * (1 + (((x) & 0x1800) >> 11))))
+
/* http://www.jungo.com/support/documentation/windriver/811/wdusb_man_mhtml/node78.html#SECTION001734000000000000000 */
struct header_struct {
{
unsigned char Byte; // Use for 8 bit transfer.
unsigned short Word; // Use for 16 bit transfer.
- unsigned int Dword; // Use for 32 bit transfer.
- unsigned long long Qword; // Use for 64 bit transfer.
+ uint32_t Dword; // Use for 32 bit transfer.
+ uint64_t Qword; // Use for 64 bit transfer.
void* pBuffer; // Use for string transfer.
} Data;
} WD_TRANSFER, WD_TRANSFER_V61;
WDU_INTERFACE *pActiveInterface[WD_USB_MAX_INTERFACES];
};
-struct usb_device_info_get {
- WDU_DEVICE_DESCRIPTOR Descriptor;
- WDU_PIPE_INFO Pipe0;
- unsigned char dummy[128];
- WDU_CONFIGURATION cfg;
-
-};
+typedef enum {
+ WDU_DIR_IN = 1,
+ WDU_DIR_OUT = 2,
+ WDU_DIR_IN_OUT = 3
+} WDU_DIR;
+
+typedef enum {
+ PIPE_TYPE_CONTROL = 0,
+ PIPE_TYPE_ISOCHRONOUS = 1,
+ PIPE_TYPE_BULK = 2,
+ PIPE_TYPE_INTERRUPT = 3
+} USB_PIPE_TYPE;