]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
Attempt at getting the windows client to at least compile without bombing out with...
authord18c7db <d18c7db@ef4ab9da-24cd-11de-8aaa-f3a34680c41f>
Thu, 18 Feb 2010 08:24:26 +0000 (08:24 +0000)
committerd18c7db <d18c7db@ef4ab9da-24cd-11de-8aaa-f3a34680c41f>
Thu, 18 Feb 2010 08:24:26 +0000 (08:24 +0000)
client/Makefile
client/cmdlf.c
client/cmdmain.c
client/cmdparser.h
client/flash.c
client/prox.c
client/proxusb.h
client/wingui.c
include/usb.h [new file with mode: 0644]

index b7a529fce68281e50e8a43d6a244f16e3f9baa3e..65788beb040190d1e0e430ae5a7fb2cf36792a87 100644 (file)
@@ -12,8 +12,8 @@ CXXFLAGS = $(shell pkg-config --cflags QtCore QtGui 2>/dev/null) -Wall
 QTLDLIBS = $(shell pkg-config --libs QtCore QtGui 2>/dev/null)
 
 CMDSRCS = \
-                       crc16.c \
-                       iso14443crc.c \
+                       $(VPATH)\crc16.c \
+                       $(VPATH)\iso14443crc.c \
                        data.c \
                        graph.c \
                        ui.c \
index 97cd2c93aa5ea675e6f33ecc0531a2773a45a378..ceb84e3ebec4ee608920de04b867863ba5eb39db 100644 (file)
@@ -1,6 +1,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <limits.h>
 #include "proxusb.h"
 #include "data.h"
 #include "graph.h"
index 3732146a417af352f1423797c60f562e750203e8..c6d59e2e1daf421a418848d91ba6b109c72200e8 100644 (file)
@@ -2,6 +2,9 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <string.h>
+#ifdef WIN32
+#include <windows.h>
+#endif
 #include "cmdparser.h"
 #include "data.h"
 #include "usb_cmd.h"
@@ -11,6 +14,7 @@
 #include "cmdhw.h"
 #include "cmdlf.h"
 #include "cmdmain.h"
+#include "proxusb.h"
 
 unsigned int current_command = CMD_UNKNOWN;
 unsigned int received_command = CMD_UNKNOWN;
index 706ee988fffc137a5182efd364891f99a3bcb3ac..7d8788900037595dc1cdf639277c7db8dcf50dcb 100644 (file)
@@ -16,4 +16,4 @@ void CmdsHelp(const command_t Commands[]);
 // Parse a command line
 void CmdsParse(const command_t Commands[], const char *Cmd);
 
-#endif
\ No newline at end of file
+#endif
index 2d843e1835b70e15058660f30031d3efc673dc25..dc0366369e6a8f81266b1858067d9342a67c1bbf 100644 (file)
@@ -7,15 +7,18 @@ BOOL UsbConnect(void);
 #include <proxusb.h>
 #endif
 
+#include <usb_cmd.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
+#include <stdint.h>
 #include "flash.h"
 #include "elf.h"
+#include "proxusb.h"
 
 static uint32_t ExpectedAddr;
 static uint8_t QueuedToSend[256];
-static bool AllWritten;
+static BOOL AllWritten;
 #define PHYSICAL_FLASH_START 0x100000
 #define PHYSICAL_FLASH_END   0x200000
 
index 7add19769f5120f74fb627f83cbd28799eb4117f..190cfd70999bba0ec0afedd665c70e32aabaadbf 100644 (file)
@@ -3,14 +3,16 @@
 #include <stdio.h>\r
 #include <ctype.h>\r
 #include <stdlib.h>\r
+#include <stdint.h>\r
 //extern "C" {\r
 #include "include/hidusage.h"\r
 #include "include/hidpi.h"\r
 #include "include/hidsdi.h"\r
 //}\r
 \r
-#include "prox.h"\r
+#include "ui.h"\r
 #include "flash.h"\r
+#include "proxusb.h"\r
 \r
 #define OUR_VID 0x9ac4\r
 #define OUR_PID 0x4b8f\r
index a6e27ddfa081fda603240ae23d258b25926eea15..e12c9334f059fff11d18ab2db38cfb1bbd2e7417 100644 (file)
@@ -10,7 +10,7 @@ typedef WORD uint16_t;
 #include <stdint.h>
 #include <stdbool.h>
 #endif
-#include <usb.h>
+#include "usb.h"
 #include "usb_cmd.h"
 
 extern unsigned char return_on_error;
index 3753a86e99a4a47aeb2f948ce2a65a10c1598de6..6c7ef52906c90b19aef7728c34aab923f93ffb32 100644 (file)
 #include <stdlib.h>\r
 #include <stdio.h>\r
 #include <math.h>\r
-\r
-#include "prox.h"\r
+#include "graph.h"\r
+#include "proxusb.h"\r
+#include "cmdmain.h"\r
+#include "ui.h"\r
 \r
 #define oops() do { \\r
        char line[100]; \\r
diff --git a/include/usb.h b/include/usb.h
new file mode 100644 (file)
index 0000000..04f5afa
--- /dev/null
@@ -0,0 +1,374 @@
+#ifndef __USB_H__\r
+#define __USB_H__\r
+\r
+#include <stdlib.h>\r
+\r
+/* \r
+ * 'interface' is defined somewhere in the Windows header files. This macro \r
+ * is deleted here to avoid conflicts and compile errors.\r
+ */\r
+\r
+#ifdef interface\r
+#undef interface\r
+#endif\r
+\r
+/*\r
+ * PATH_MAX from limits.h can't be used on Windows if the dll and\r
+ * import libraries are build/used by different compilers \r
+ */\r
+\r
+#define LIBUSB_PATH_MAX 512\r
+\r
+\r
+/*\r
+ * USB spec information\r
+ *\r
+ * This is all stuff grabbed from various USB specs and is pretty much\r
+ * not subject to change\r
+ */\r
+\r
+/*\r
+ * Device and/or Interface Class codes\r
+ */\r
+#define USB_CLASS_PER_INTERFACE                0       /* for DeviceClass */\r
+#define USB_CLASS_AUDIO                              1\r
+#define USB_CLASS_COMM                       2\r
+#define USB_CLASS_HID                          3\r
+#define USB_CLASS_PRINTER                    7\r
+#define USB_CLASS_MASS_STORAGE         8\r
+#define USB_CLASS_HUB                          9\r
+#define USB_CLASS_DATA                       10\r
+#define USB_CLASS_VENDOR_SPEC            0xff\r
+\r
+/*\r
+ * Descriptor types\r
+ */\r
+#define USB_DT_DEVICE                  0x01\r
+#define USB_DT_CONFIG                  0x02\r
+#define USB_DT_STRING                  0x03\r
+#define USB_DT_INTERFACE       0x04\r
+#define USB_DT_ENDPOINT                0x05\r
+\r
+#define USB_DT_HID                     0x21\r
+#define USB_DT_REPORT          0x22\r
+#define USB_DT_PHYSICAL        0x23\r
+#define USB_DT_HUB                     0x29\r
+\r
+/*\r
+ * Descriptor sizes per descriptor type\r
+ */\r
+#define USB_DT_DEVICE_SIZE             18\r
+#define USB_DT_CONFIG_SIZE             9\r
+#define USB_DT_INTERFACE_SIZE          9\r
+#define USB_DT_ENDPOINT_SIZE           7\r
+#define USB_DT_ENDPOINT_AUDIO_SIZE     9       /* Audio extension */\r
+#define USB_DT_HUB_NONVAR_SIZE         7\r
+\r
+\r
+/* ensure byte-packed structures */\r
+#include <pshpack1.h> \r
+\r
+\r
+/* All standard descriptors have these 2 fields in common */\r
+struct usb_descriptor_header {\r
+  unsigned char  bLength;\r
+  unsigned char  bDescriptorType;\r
+};\r
+\r
+/* String descriptor */\r
+struct usb_string_descriptor {\r
+  unsigned char  bLength;\r
+  unsigned char  bDescriptorType;\r
+  unsigned short wData[1];\r
+};\r
+\r
+/* HID descriptor */\r
+struct usb_hid_descriptor {\r
+  unsigned char  bLength;\r
+  unsigned char  bDescriptorType;\r
+  unsigned short bcdHID;\r
+  unsigned char  bCountryCode;\r
+  unsigned char  bNumDescriptors;\r
+};\r
+\r
+/* Endpoint descriptor */\r
+#define USB_MAXENDPOINTS       32\r
+struct usb_endpoint_descriptor {\r
+  unsigned char  bLength;\r
+  unsigned char  bDescriptorType;\r
+  unsigned char  bEndpointAddress;\r
+  unsigned char  bmAttributes;\r
+  unsigned short wMaxPacketSize;\r
+  unsigned char  bInterval;\r
+  unsigned char  bRefresh;\r
+  unsigned char  bSynchAddress;\r
+\r
+  unsigned char *extra;        /* Extra descriptors */\r
+  int extralen;\r
+};\r
+\r
+#define USB_ENDPOINT_ADDRESS_MASK      0x0f    /* in bEndpointAddress */\r
+#define USB_ENDPOINT_DIR_MASK            0x80\r
+\r
+#define USB_ENDPOINT_TYPE_MASK         0x03    /* in bmAttributes */\r
+#define USB_ENDPOINT_TYPE_CONTROL          0\r
+#define USB_ENDPOINT_TYPE_ISOCHRONOUS  1\r
+#define USB_ENDPOINT_TYPE_BULK             2\r
+#define USB_ENDPOINT_TYPE_INTERRUPT      3\r
+\r
+/* Interface descriptor */\r
+#define USB_MAXINTERFACES      32\r
+struct usb_interface_descriptor {\r
+  unsigned char  bLength;\r
+  unsigned char  bDescriptorType;\r
+  unsigned char  bInterfaceNumber;\r
+  unsigned char  bAlternateSetting;\r
+  unsigned char  bNumEndpoints;\r
+  unsigned char  bInterfaceClass;\r
+  unsigned char  bInterfaceSubClass;\r
+  unsigned char  bInterfaceProtocol;\r
+  unsigned char  iInterface;\r
+\r
+  struct usb_endpoint_descriptor *endpoint;\r
+\r
+  unsigned char *extra;        /* Extra descriptors */\r
+  int extralen;\r
+};\r
+\r
+#define USB_MAXALTSETTING      128     /* Hard limit */\r
+\r
+struct usb_interface {\r
+  struct usb_interface_descriptor *altsetting;\r
+\r
+  int num_altsetting;\r
+};\r
+\r
+/* Configuration descriptor information.. */\r
+#define USB_MAXCONFIG          8\r
+struct usb_config_descriptor {\r
+  unsigned char  bLength;\r
+  unsigned char  bDescriptorType;\r
+  unsigned short wTotalLength;\r
+  unsigned char  bNumInterfaces;\r
+  unsigned char  bConfigurationValue;\r
+  unsigned char  iConfiguration;\r
+  unsigned char  bmAttributes;\r
+  unsigned char  MaxPower;\r
+\r
+  struct usb_interface *interface;\r
+\r
+  unsigned char *extra;        /* Extra descriptors */\r
+  int extralen;\r
+};\r
+\r
+/* Device descriptor */\r
+struct usb_device_descriptor {\r
+  unsigned char  bLength;\r
+  unsigned char  bDescriptorType;\r
+  unsigned short bcdUSB;\r
+  unsigned char  bDeviceClass;\r
+  unsigned char  bDeviceSubClass;\r
+  unsigned char  bDeviceProtocol;\r
+  unsigned char  bMaxPacketSize0;\r
+  unsigned short idVendor;\r
+  unsigned short idProduct;\r
+  unsigned short bcdDevice;\r
+  unsigned char  iManufacturer;\r
+  unsigned char  iProduct;\r
+  unsigned char  iSerialNumber;\r
+  unsigned char  bNumConfigurations;\r
+};\r
+\r
+struct usb_ctrl_setup {\r
+  unsigned char  bRequestType;\r
+  unsigned char  bRequest;\r
+  unsigned short wValue;\r
+  unsigned short wIndex;\r
+  unsigned short wLength;\r
+};\r
+\r
+/*\r
+ * Standard requests\r
+ */\r
+#define USB_REQ_GET_STATUS                 0x00\r
+#define USB_REQ_CLEAR_FEATURE      0x01\r
+/* 0x02 is reserved */\r
+#define USB_REQ_SET_FEATURE                0x03\r
+/* 0x04 is reserved */\r
+#define USB_REQ_SET_ADDRESS                0x05\r
+#define USB_REQ_GET_DESCRIPTOR         0x06\r
+#define USB_REQ_SET_DESCRIPTOR         0x07\r
+#define USB_REQ_GET_CONFIGURATION      0x08\r
+#define USB_REQ_SET_CONFIGURATION      0x09\r
+#define USB_REQ_GET_INTERFACE            0x0A\r
+#define USB_REQ_SET_INTERFACE            0x0B\r
+#define USB_REQ_SYNCH_FRAME                0x0C\r
+\r
+#define USB_TYPE_STANDARD              (0x00 << 5)\r
+#define USB_TYPE_CLASS                 (0x01 << 5)\r
+#define USB_TYPE_VENDOR                        (0x02 << 5)\r
+#define USB_TYPE_RESERVED              (0x03 << 5)\r
+\r
+#define USB_RECIP_DEVICE               0x00\r
+#define USB_RECIP_INTERFACE    0x01\r
+#define USB_RECIP_ENDPOINT     0x02\r
+#define USB_RECIP_OTHER                        0x03\r
+\r
+/*\r
+ * Various libusb API related stuff\r
+ */\r
+\r
+#define USB_ENDPOINT_IN                        0x80\r
+#define USB_ENDPOINT_OUT               0x00\r
+\r
+/* Error codes */\r
+#define USB_ERROR_BEGIN                        500000\r
+\r
+/*\r
+ * This is supposed to look weird. This file is generated from autoconf\r
+ * and I didn't want to make this too complicated.\r
+ */\r
+#define USB_LE16_TO_CPU(x)\r
+\r
+/* Data types */\r
+/* struct usb_device; */\r
+/* struct usb_bus; */\r
+\r
+struct usb_device {\r
+  struct usb_device *next, *prev;\r
+\r
+  char filename[LIBUSB_PATH_MAX];\r
+\r
+  struct usb_bus *bus;\r
+\r
+  struct usb_device_descriptor descriptor;\r
+  struct usb_config_descriptor *config;\r
+\r
+  void *dev;           /* Darwin support */\r
+\r
+  unsigned char devnum;\r
+\r
+  unsigned char num_children;\r
+  struct usb_device **children;\r
+};\r
+\r
+struct usb_bus {\r
+  struct usb_bus *next, *prev;\r
+\r
+  char dirname[LIBUSB_PATH_MAX];\r
+\r
+  struct usb_device *devices;\r
+  unsigned long location;\r
+\r
+  struct usb_device *root_dev;\r
+};\r
+\r
+/* Version information, Windows specific */\r
+struct usb_version {\r
+  struct {\r
+    int major;\r
+    int minor;\r
+    int micro;\r
+    int nano;\r
+  } dll;\r
+  struct {\r
+    int major;\r
+    int minor;\r
+    int micro;\r
+    int nano;\r
+  } driver;\r
+};\r
+\r
+\r
+struct usb_dev_handle;\r
+typedef struct usb_dev_handle usb_dev_handle;\r
+\r
+/* Variables */\r
+extern struct usb_bus *usb_busses;\r
+\r
+\r
+#include <poppack.h>\r
+\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+  /* Function prototypes */\r
+\r
+  /* usb.c */\r
+  usb_dev_handle *usb_open(struct usb_device *dev);\r
+  int usb_close(usb_dev_handle *dev);\r
+  int usb_get_string(usb_dev_handle *dev, int index, int langid, char *buf,\r
+                     size_t buflen);\r
+  int usb_get_string_simple(usb_dev_handle *dev, int index, char *buf,\r
+                            size_t buflen);\r
+\r
+  /* descriptors.c */\r
+  int usb_get_descriptor_by_endpoint(usb_dev_handle *udev, int ep,\r
+                                     unsigned char type, unsigned char index,\r
+                                     void *buf, int size);\r
+  int usb_get_descriptor(usb_dev_handle *udev, unsigned char type,\r
+                         unsigned char index, void *buf, int size);\r
+\r
+  /* <arch>.c */\r
+  int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size,\r
+                     int timeout);\r
+  int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size,\r
+                    int timeout);\r
+  int usb_interrupt_write(usb_dev_handle *dev, int ep, char *bytes, int size,\r
+                          int timeout);\r
+  int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int size,\r
+                         int timeout);\r
+  int usb_control_msg(usb_dev_handle *dev, int requesttype, int request,\r
+                      int value, int index, char *bytes, int size, \r
+                      int timeout);\r
+  int usb_set_configuration(usb_dev_handle *dev, int configuration);\r
+  int usb_claim_interface(usb_dev_handle *dev, int interface);\r
+  int usb_release_interface(usb_dev_handle *dev, int interface);\r
+  int usb_set_altinterface(usb_dev_handle *dev, int alternate);\r
+  int usb_resetep(usb_dev_handle *dev, unsigned int ep);\r
+  int usb_clear_halt(usb_dev_handle *dev, unsigned int ep);\r
+  int usb_reset(usb_dev_handle *dev);\r
+\r
+  char *usb_strerror(void);\r
+\r
+  void usb_init(void);\r
+  void usb_set_debug(int level);\r
+  int usb_find_busses(void);\r
+  int usb_find_devices(void);\r
+  struct usb_device *usb_device(usb_dev_handle *dev);\r
+  struct usb_bus *usb_get_busses(void);\r
+\r
+\r
+  /* Windows specific functions */\r
+\r
+  #define LIBUSB_HAS_INSTALL_SERVICE_NP 1\r
+  int usb_install_service_np(void);\r
+\r
+  #define LIBUSB_HAS_UNINSTALL_SERVICE_NP 1\r
+  int usb_uninstall_service_np(void);\r
+\r
+  #define LIBUSB_HAS_INSTALL_DRIVER_NP 1\r
+  int usb_install_driver_np(const char *inf_file);\r
+  \r
+  const struct usb_version *usb_get_version(void);\r
+\r
+  int usb_isochronous_setup_async(usb_dev_handle *dev, void **context,\r
+                                  unsigned char ep, int pktsize);\r
+  int usb_bulk_setup_async(usb_dev_handle *dev, void **context,\r
+                           unsigned char ep);\r
+  int usb_interrupt_setup_async(usb_dev_handle *dev, void **context,\r
+                                unsigned char ep);\r
+\r
+  int usb_submit_async(void *context, char *bytes, int size);\r
+  int usb_reap_async(void *context, int timeout);\r
+  int usb_free_async(void **context);\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* __USB_H__ */\r
+\r
Impressum, Datenschutz