]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - include/proxmark3.h
change usb_cmd struct to be more sane
[proxmark3-svn] / include / proxmark3.h
index a94435e81af6a5c6e8fe4a52a99654240fca5ee7..afed17a47110bd0039759bcb7c1b3220825c5e70 100644 (file)
@@ -7,11 +7,60 @@
 #define __PROXMARK3_H\r
 \r
 // Might as well have the hardware-specific defines everywhere.\r
-#include <at91sam7s128.h>\r
-\r
+#include <at91sam7s512.h>\r
 #include <config_gpio.h>\r
-#define LOW(x) PIO_OUTPUT_DATA_CLEAR = (1 << (x))\r
-#define HIGH(x)        PIO_OUTPUT_DATA_SET = (1 << (x))\r
+\r
+#define WDT_HIT()                                                              AT91C_BASE_WDTC->WDTC_WDCR = 0xa5000001\r
+\r
+#define PWM_CH_MODE_PRESCALER(x)                               ((x)<<0)\r
+#define PWM_CHANNEL(x)                                                 (1<<(x))\r
+\r
+#define TC_CMR_TCCLKS_TIMER_CLOCK1                             (0<<0)\r
+#define TC_CMR_TCCLKS_TIMER_CLOCK2                             (1<<0)\r
+#define TC_CMR_TCCLKS_TIMER_CLOCK3                             (2<<0)\r
+#define TC_CMR_TCCLKS_TIMER_CLOCK4                             (3<<0)\r
+#define TC_CMR_TCCLKS_TIMER_CLOCK5                             (4<<0)\r
+\r
+#define ADC_CHAN_LF                                                            4\r
+#define ADC_CHAN_HF                                                            5\r
+#define ADC_MODE_PRESCALE(x)                                   ((x)<<8)\r
+#define ADC_MODE_STARTUP_TIME(x)                               ((x)<<16)\r
+#define ADC_MODE_SAMPLE_HOLD_TIME(x)                   ((x)<<24)\r
+#define ADC_CHANNEL(x)                                                 (1<<(x))\r
+#define ADC_END_OF_CONVERSION(x)                               (1<<(x))\r
+\r
+#define SSC_CLOCK_MODE_START(x)                                        ((x)<<8)\r
+#define SSC_FRAME_MODE_WORDS_PER_TRANSFER(x)   ((x)<<8)\r
+#define SSC_CLOCK_MODE_SELECT(x)                               ((x)<<0)\r
+#define SSC_FRAME_MODE_BITS_IN_WORD(x)                 (((x)-1)<<0)\r
+\r
+#define MC_FLASH_COMMAND_KEY                                   ((0x5a)<<24)\r
+#define MC_FLASH_STATUS_READY                                  (1<<0)\r
+#define MC_FLASH_MODE_FLASH_WAIT_STATES(x)             ((x)<<8)\r
+#define MC_FLASH_MODE_MASTER_CLK_IN_MHZ(x)             ((x)<<16)\r
+#define MC_FLASH_COMMAND_PAGEN(x)                              ((x)<<8)\r
+\r
+#define RST_CONTROL_KEY                                                        (0xa5<<24)\r
+\r
+#define PMC_MAIN_OSC_ENABLE                                            (1<<0)\r
+#define PMC_MAIN_OSC_STABILIZED                                        (1<<0)\r
+#define PMC_MAIN_OSC_PLL_LOCK                                  (1<<2)\r
+#define PMC_MAIN_OSC_MCK_READY                                 (1<<3)\r
+\r
+#define PMC_MAIN_OSC_STARTUP_DELAY(x)                  ((x)<<8)\r
+#define PMC_PLL_DIVISOR(x)                                             (x)\r
+#define PMC_CLK_PRESCALE_DIV_2                                 (1<<2)\r
+#define PMC_PLL_MULTIPLIER(x)                                  (((x)-1)<<16)\r
+#define PMC_PLL_COUNT_BEFORE_LOCK(x)                   ((x)<<8)\r
+#define PMC_PLL_FREQUENCY_RANGE(x)                             ((x)<<14)\r
+#define PMC_PLL_USB_DIVISOR(x)                                 ((x)<<28)\r
+\r
+#define UDP_INTERRUPT_ENDPOINT(x)                              (1<<(x))\r
+#define UDP_CSR_BYTES_RECEIVED(x)                              (((x) >> 16) & 0x7ff)\r
+//**************************************************************\r
+\r
+#define LOW(x) AT91C_BASE_PIOA->PIO_CODR = (x)\r
+#define HIGH(x)        AT91C_BASE_PIOA->PIO_SODR = (x)\r
 \r
 #define SPI_FPGA_MODE  0\r
 #define SPI_LCD_MODE   1\r
@@ -32,26 +81,27 @@ typedef signed short SWORD;
 #define PACKED __attribute__((__packed__))\r
 \r
 #define USB_D_PLUS_PULLUP_ON() { \\r
-               PIO_OUTPUT_DATA_SET = (1<<GPIO_USB_PU); \\r
-               PIO_OUTPUT_ENABLE = (1<<GPIO_USB_PU); \\r
+               HIGH(GPIO_USB_PU); \\r
+               AT91C_BASE_PIOA->PIO_OER = GPIO_USB_PU; \\r
        }\r
-#define USB_D_PLUS_PULLUP_OFF() PIO_OUTPUT_DISABLE = (1<<GPIO_USB_PU)\r
-\r
-#define LED_A_ON()             PIO_OUTPUT_DATA_SET = (1<<GPIO_LED_A)\r
-#define LED_A_OFF()            PIO_OUTPUT_DATA_CLEAR = (1<<GPIO_LED_A)\r
-#define LED_B_ON()             PIO_OUTPUT_DATA_SET = (1<<GPIO_LED_B)\r
-#define LED_B_OFF()            PIO_OUTPUT_DATA_CLEAR = (1<<GPIO_LED_B)\r
-#define LED_C_ON()             PIO_OUTPUT_DATA_SET = (1<<GPIO_LED_C)\r
-#define LED_C_OFF()            PIO_OUTPUT_DATA_CLEAR = (1<<GPIO_LED_C)\r
-#define LED_D_ON()             PIO_OUTPUT_DATA_SET = (1<<GPIO_LED_D)\r
-#define LED_D_OFF()            PIO_OUTPUT_DATA_CLEAR = (1<<GPIO_LED_D)\r
-#define RELAY_ON()             PIO_OUTPUT_DATA_SET = (1<<GPIO_RELAY)\r
-#define RELAY_OFF()            PIO_OUTPUT_DATA_CLEAR = (1<<GPIO_RELAY)\r
-#define BUTTON_PRESS() !(PIO_PIN_DATA_STATUS & (1<<GPIO_BUTTON))\r
+#define USB_D_PLUS_PULLUP_OFF() AT91C_BASE_PIOA->PIO_ODR = GPIO_USB_PU\r
+\r
+#define LED_A_ON()             HIGH(GPIO_LED_A)\r
+#define LED_A_OFF()            LOW(GPIO_LED_A)\r
+#define LED_B_ON()             HIGH(GPIO_LED_B)\r
+#define LED_B_OFF()            LOW(GPIO_LED_B)\r
+#define LED_C_ON()             HIGH(GPIO_LED_C)\r
+#define LED_C_OFF()            LOW(GPIO_LED_C)\r
+#define LED_D_ON()             HIGH(GPIO_LED_D)\r
+#define LED_D_OFF()            LOW(GPIO_LED_D)\r
+#define RELAY_ON()             HIGH(GPIO_RELAY)\r
+#define RELAY_OFF()            LOW(GPIO_RELAY)\r
+#define BUTTON_PRESS() !(AT91C_BASE_PIOA->PIO_PDSR & GPIO_BUTTON)\r
 //--------------------------------\r
 // USB declarations\r
 \r
 void UsbSendPacket(BYTE *packet, int len);\r
+BOOL UsbConnected();\r
 BOOL UsbPoll(BOOL blinkLeds);\r
 void UsbStart(void);\r
 \r
@@ -59,4 +109,28 @@ void UsbStart(void);
 // if data are available.\r
 void UsbPacketReceived(BYTE *packet, int len);\r
 \r
+#define VERSION_INFORMATION_MAGIC 0x56334d50\r
+struct version_information {\r
+       int magic; /* Magic sequence to identify this as a correct version information structure. Must be VERSION_INFORMATION_MAGIC */\r
+       char versionversion; /* Must be 1 */\r
+       char present; /* 1 if the version information could be created at compile time, otherwise 0 and the remaining fields (except for magic) are empty */\r
+       char clean; /* 1: Tree was clean, no local changes. 0: Tree was unclean. 2: Couldn't be determined */\r
+       char svnversion[9]; /* String with the SVN revision */\r
+       char buildtime[30]; /* string with the build time */\r
+} __attribute__((packed));\r
+\r
+#define COMMON_AREA_MAGIC 0x43334d50\r
+#define COMMON_AREA_COMMAND_NONE 0\r
+#define COMMON_AREA_COMMAND_ENTER_FLASH_MODE 1\r
+struct common_area {\r
+       int magic; /* Magic sequence, to distinguish against random uninitialized memory */\r
+       char version; /* Must be 1 */\r
+       char command;\r
+       struct {\r
+               unsigned int bootrom_present:1; /* Set when a bootrom that is capable of parsing the common area is present */\r
+               unsigned int osimage_present:1; /* Set when a osimage that is capable of parsing the common area is present */\r
+       } __attribute__((packed)) flags;\r
+       int arg1, arg2;\r
+} __attribute__((packed));\r
+\r
 #endif\r
Impressum, Datenschutz