]> cvs.zerfleddert.de Git - proxmark3-svn/commitdiff
ADD: @marshmellow42 's fixes to cmdlft55xx.c (save_restoreGB)
authoriceman1001 <iceman@iuse.se>
Thu, 10 Dec 2015 09:30:13 +0000 (10:30 +0100)
committericeman1001 <iceman@iuse.se>
Thu, 10 Dec 2015 09:30:13 +0000 (10:30 +0100)
ADD: started with a skeleton method for printing  hex and ascill.

client/cmdlft55xx.c
client/util.c
client/util.h

index 386ac608b178acabc3b9c596a3a572fc74470762..de0ade283813695a73ccaa99b55aad4cf3a5803d 100644 (file)
@@ -384,18 +384,22 @@ bool DecodeT55xxBlock(){
                        ans = ASKDemod(cmdStr, FALSE, FALSE, 1);\r
                        break;\r
                case DEMOD_PSK1:\r
                        ans = ASKDemod(cmdStr, FALSE, FALSE, 1);\r
                        break;\r
                case DEMOD_PSK1:\r
-                       // skip first 160 samples to allow antenna to settle in (psk gets inverted occasionally otherwise)\r
+                       // skip first 16 samples to allow antenna to settle in (psk gets inverted occasionally otherwise)\r
+                       save_restoreGB(1);\r
                        CmdLtrim("160");\r
                        snprintf(cmdStr, sizeof(buf),"%d %d 6", bitRate[config.bitrate], config.inverted );\r
                        ans = PSKDemod(cmdStr, FALSE);\r
                        CmdLtrim("160");\r
                        snprintf(cmdStr, sizeof(buf),"%d %d 6", bitRate[config.bitrate], config.inverted );\r
                        ans = PSKDemod(cmdStr, FALSE);\r
+                       save_restoreGB(0);\r
                        break;\r
                case DEMOD_PSK2: //inverted won't affect this\r
                case DEMOD_PSK3: //not fully implemented\r
                        // skip first 160 samples to allow antenna to settle in (psk gets inverted occasionally otherwise)\r
                        break;\r
                case DEMOD_PSK2: //inverted won't affect this\r
                case DEMOD_PSK3: //not fully implemented\r
                        // skip first 160 samples to allow antenna to settle in (psk gets inverted occasionally otherwise)\r
+                       save_restoreGB(1);\r
                        CmdLtrim("160");\r
                        snprintf(cmdStr, sizeof(buf),"%d 0 6", bitRate[config.bitrate] );\r
                        ans = PSKDemod(cmdStr, FALSE);\r
                        psk1TOpsk2(DemodBuffer, DemodBufferLen);\r
                        CmdLtrim("160");\r
                        snprintf(cmdStr, sizeof(buf),"%d 0 6", bitRate[config.bitrate] );\r
                        ans = PSKDemod(cmdStr, FALSE);\r
                        psk1TOpsk2(DemodBuffer, DemodBufferLen);\r
+                       save_restoreGB(1);\r
                        break;\r
                case DEMOD_NRZ:\r
                        snprintf(cmdStr, sizeof(buf),"%d %d 1", bitRate[config.bitrate], config.inverted );\r
                        break;\r
                case DEMOD_NRZ:\r
                        snprintf(cmdStr, sizeof(buf),"%d %d 1", bitRate[config.bitrate], config.inverted );\r
@@ -1011,8 +1015,14 @@ int CmdT55xxInfo(const char *Cmd){
 \r
        if (!DecodeT55xxBlock()) return 1;\r
 \r
 \r
        if (!DecodeT55xxBlock()) return 1;\r
 \r
+       // too little space to start with\r
        if ( DemodBufferLen < 32) return 1;\r
 \r
        if ( DemodBufferLen < 32) return 1;\r
 \r
+       // \r
+       PrintAndLog("Offset+32 ==%d\n DemodLen == %d", config.offset + 32,DemodBufferLen );\r
+               \r
+\r
+       \r
        uint8_t si = config.offset;\r
        uint32_t bl0      = PackBits(si, 32, DemodBuffer);\r
        \r
        uint8_t si = config.offset;\r
        uint32_t bl0      = PackBits(si, 32, DemodBuffer);\r
        \r
index 057be9ed6bab09664b349be0371d1ef40f18413d..29914667b23f6538ea92467be8d5011687ef4a2f 100644 (file)
@@ -124,7 +124,12 @@ char *sprint_hex(const uint8_t *data, const size_t len) {
 
 char *sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t breaks) {
        // make sure we don't go beyond our char array memory
 
 char *sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t breaks) {
        // make sure we don't go beyond our char array memory
-       int max_len = ( len+(len/breaks) > MAX_BIN_BREAK_LENGTH ) ? MAX_BIN_BREAK_LENGTH : len+(len/breaks);
+       int max_len;
+       if (breaks==0)
+               max_len = ( len > MAX_BIN_BREAK_LENGTH ) ? MAX_BIN_BREAK_LENGTH : len;
+       else
+               max_len = ( len+(len/breaks) > MAX_BIN_BREAK_LENGTH ) ? MAX_BIN_BREAK_LENGTH : len+(len/breaks);
+
        static char buf[MAX_BIN_BREAK_LENGTH]; // 3072 + end of line characters if broken at 8 bits
        //clear memory
        memset(buf, 0x00, sizeof(buf));
        static char buf[MAX_BIN_BREAK_LENGTH]; // 3072 + end of line characters if broken at 8 bits
        //clear memory
        memset(buf, 0x00, sizeof(buf));
@@ -150,6 +155,12 @@ char *sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t brea
 char *sprint_bin(const uint8_t *data, const size_t len) {
        return sprint_bin_break(data, len, 0);
 }
 char *sprint_bin(const uint8_t *data, const size_t len) {
        return sprint_bin_break(data, len, 0);
 }
+
+char *sprint_hex_ascii(const uint8_t *data, const size_t len) {
+       static char buf[1024];
+       memset(buf, 0x00, 1024);
+       return buf;
+}
 void num_to_bytes(uint64_t n, size_t len, uint8_t* dest)
 {
        while (len--) {
 void num_to_bytes(uint64_t n, size_t len, uint8_t* dest)
 {
        while (len--) {
index 5ba5eb6aa42a19f33ea0a802d1bf80899a47a749..c57df5c231897a614d9973a78d113c82c5f70170 100644 (file)
@@ -40,6 +40,7 @@ void print_hex(const uint8_t * data, const size_t len);
 char * sprint_hex(const uint8_t * data, const size_t len);
 char * sprint_bin(const uint8_t * data, const size_t len);
 char * sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t breaks);
 char * sprint_hex(const uint8_t * data, const size_t len);
 char * sprint_bin(const uint8_t * data, const size_t len);
 char * sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t breaks);
+char *sprint_hex_ascii(const uint8_t *data, const size_t len);
 
 void num_to_bytes(uint64_t n, size_t len, uint8_t* dest);
 uint64_t bytes_to_num(uint8_t* src, size_t len);
 
 void num_to_bytes(uint64_t n, size_t len, uint8_t* dest);
 uint64_t bytes_to_num(uint8_t* src, size_t len);
Impressum, Datenschutz