]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - armsrc/util.c
Andreas fix for LEGIC MIM1024
[proxmark3-svn] / armsrc / util.c
index 650ba22bacb31914c142ffeee9a0a882c940fb3b..e6332a7b57615224a547792f6082e694aed6046e 100644 (file)
@@ -64,6 +64,24 @@ char* strncat(char *dest, const char *src, unsigned int n)
        return dest;\r
 }\r
 \r
        return dest;\r
 }\r
 \r
+void num_to_bytes(uint64_t n, size_t len, byte_t* dest)\r
+{\r
+       while (len--) {\r
+               dest[len] = (byte_t) n;\r
+               n >>= 8;\r
+       }\r
+}\r
+\r
+uint64_t bytes_to_num(byte_t* src, size_t len)\r
+{\r
+       uint64_t num = 0;\r
+       while (len--)\r
+       {\r
+               num = (num << 8) | (*src);\r
+               src++;\r
+       }\r
+       return num;\r
+}\r
 \r
 void LEDsoff()\r
 {\r
 \r
 void LEDsoff()\r
 {\r
@@ -115,18 +133,18 @@ int BUTTON_CLICKED(int ms)
                return BUTTON_NO_CLICK;\r
 \r
        // Borrow a PWM unit for my real-time clock\r
                return BUTTON_NO_CLICK;\r
 \r
        // Borrow a PWM unit for my real-time clock\r
-       PWM_ENABLE = PWM_CHANNEL(0);\r
+       AT91C_BASE_PWMC->PWMC_ENA = PWM_CHANNEL(0);\r
        // 48 MHz / 1024 gives 46.875 kHz\r
        // 48 MHz / 1024 gives 46.875 kHz\r
-       PWM_CH_MODE(0) = PWM_CH_MODE_PRESCALER(10);\r
-       PWM_CH_DUTY_CYCLE(0) = 0;\r
-       PWM_CH_PERIOD(0) = 0xffff;\r
+       AT91C_BASE_PWMC_CH0->PWMC_CMR = PWM_CH_MODE_PRESCALER(10);\r
+       AT91C_BASE_PWMC_CH0->PWMC_CDTYR = 0;\r
+       AT91C_BASE_PWMC_CH0->PWMC_CPRDR = 0xffff;\r
 \r
 \r
-       WORD start = (WORD)PWM_CH_COUNTER(0);\r
+       WORD start = AT91C_BASE_PWMC_CH0->PWMC_CCNTR;\r
 \r
        int letoff = 0;\r
        for(;;)\r
        {\r
 \r
        int letoff = 0;\r
        for(;;)\r
        {\r
-               WORD now = (WORD)PWM_CH_COUNTER(0);\r
+               WORD now = AT91C_BASE_PWMC_CH0->PWMC_CCNTR;\r
 \r
                // We haven't let off the button yet\r
                if (!letoff)\r
 \r
                // We haven't let off the button yet\r
                if (!letoff)\r
@@ -137,7 +155,7 @@ int BUTTON_CLICKED(int ms)
                                letoff = 1;\r
 \r
                                // reset our timer for 500ms\r
                                letoff = 1;\r
 \r
                                // reset our timer for 500ms\r
-                               start = (WORD)PWM_CH_COUNTER(0);\r
+                               start = AT91C_BASE_PWMC_CH0->PWMC_CCNTR;\r
                                ticks = (48000 * (500)) >> 10;\r
                        }\r
 \r
                                ticks = (48000 * (500)) >> 10;\r
                        }\r
 \r
@@ -178,17 +196,17 @@ int BUTTON_HELD(int ms)
                return BUTTON_NO_CLICK;\r
 \r
        // Borrow a PWM unit for my real-time clock\r
                return BUTTON_NO_CLICK;\r
 \r
        // Borrow a PWM unit for my real-time clock\r
-       PWM_ENABLE = PWM_CHANNEL(0);\r
+       AT91C_BASE_PWMC->PWMC_ENA = PWM_CHANNEL(0);\r
        // 48 MHz / 1024 gives 46.875 kHz\r
        // 48 MHz / 1024 gives 46.875 kHz\r
-       PWM_CH_MODE(0) = PWM_CH_MODE_PRESCALER(10);\r
-       PWM_CH_DUTY_CYCLE(0) = 0;\r
-       PWM_CH_PERIOD(0) = 0xffff;\r
+       AT91C_BASE_PWMC_CH0->PWMC_CMR = PWM_CH_MODE_PRESCALER(10);\r
+       AT91C_BASE_PWMC_CH0->PWMC_CDTYR = 0;\r
+       AT91C_BASE_PWMC_CH0->PWMC_CPRDR = 0xffff;\r
 \r
 \r
-       WORD start = (WORD)PWM_CH_COUNTER(0);\r
+       WORD start = AT91C_BASE_PWMC_CH0->PWMC_CCNTR;\r
 \r
        for(;;)\r
        {\r
 \r
        for(;;)\r
        {\r
-               WORD now = (WORD)PWM_CH_COUNTER(0);\r
+               WORD now = AT91C_BASE_PWMC_CH0->PWMC_CCNTR;\r
 \r
                // As soon as our button let go, we didn't hold long enough\r
                if (!BUTTON_PRESS())\r
 \r
                // As soon as our button let go, we didn't hold long enough\r
                if (!BUTTON_PRESS())\r
@@ -213,16 +231,16 @@ void SpinDelayUs(int us)
        int ticks = (48*us) >> 10;\r
 \r
        // Borrow a PWM unit for my real-time clock\r
        int ticks = (48*us) >> 10;\r
 \r
        // Borrow a PWM unit for my real-time clock\r
-       PWM_ENABLE = PWM_CHANNEL(0);\r
+       AT91C_BASE_PWMC->PWMC_ENA = PWM_CHANNEL(0);\r
        // 48 MHz / 1024 gives 46.875 kHz\r
        // 48 MHz / 1024 gives 46.875 kHz\r
-       PWM_CH_MODE(0) = PWM_CH_MODE_PRESCALER(10);\r
-       PWM_CH_DUTY_CYCLE(0) = 0;\r
-       PWM_CH_PERIOD(0) = 0xffff;\r
+       AT91C_BASE_PWMC_CH0->PWMC_CMR = PWM_CH_MODE_PRESCALER(10);\r
+       AT91C_BASE_PWMC_CH0->PWMC_CDTYR = 0;\r
+       AT91C_BASE_PWMC_CH0->PWMC_CPRDR = 0xffff;\r
 \r
 \r
-       WORD start = (WORD)PWM_CH_COUNTER(0);\r
+       WORD start = AT91C_BASE_PWMC_CH0->PWMC_CCNTR;\r
 \r
        for(;;) {\r
 \r
        for(;;) {\r
-               WORD now = (WORD)PWM_CH_COUNTER(0);\r
+               WORD now = AT91C_BASE_PWMC_CH0->PWMC_CCNTR;\r
                if (now == (WORD)(start + ticks))\r
                        return;\r
 \r
                if (now == (WORD)(start + ticks))\r
                        return;\r
 \r
@@ -239,7 +257,7 @@ void SpinDelay(int ms)
 /* Similar to FpgaGatherVersion this formats stored version information\r
  * into a string representation. It takes a pointer to the struct version_information,\r
  * verifies the magic properties, then stores a formatted string, prefixed by\r
 /* Similar to FpgaGatherVersion this formats stored version information\r
  * into a string representation. It takes a pointer to the struct version_information,\r
  * verifies the magic properties, then stores a formatted string, prefixed by\r
- * prefix in dst.
+ * prefix in dst.\r
  */\r
 void FormatVersionInformation(char *dst, int len, const char *prefix, void *version_information)\r
 {\r
  */\r
 void FormatVersionInformation(char *dst, int len, const char *prefix, void *version_information)\r
 {\r
Impressum, Datenschutz