]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - armsrc/iso14443a.c
Generic trace pt2: made iso14443b use standard trace format
[proxmark3-svn] / armsrc / iso14443a.c
index c2f809fee19ad706e54ee27043b6cd8c27adac56..d91b24d768795a135ae837600f36c91a2b42d045 100644 (file)
@@ -148,14 +148,6 @@ void iso14a_set_trigger(bool enable) {
        trigger = enable;
 }
 
-void iso14a_clear_trace() {
-       memset(trace, 0x44, TRACE_SIZE);
-       traceLen = 0;
-}
-
-void iso14a_set_tracing(bool enable) {
-       tracing = enable;
-}
 
 void iso14a_set_timeout(uint32_t timeout) {
        iso14a_timeout = timeout;
@@ -199,60 +191,6 @@ void AppendCrc14443a(uint8_t* data, int len)
        ComputeCrc14443(CRC_14443_A,data,len,data+len,data+len+1);
 }
 
-// The function LogTrace() is also used by the iClass implementation in iClass.c
-bool RAMFUNC LogTrace(const uint8_t *btBytes, uint16_t iLen, uint32_t timestamp_start, uint32_t timestamp_end, uint8_t *parity, bool readerToTag)
-{
-       if (!tracing) return FALSE;
-       
-       uint16_t num_paritybytes = (iLen-1)/8 + 1;      // number of valid paritybytes in *parity
-       uint16_t duration = timestamp_end - timestamp_start;
-
-       // Return when trace is full
-       if (traceLen + sizeof(iLen) + sizeof(timestamp_start) + sizeof(duration) + num_paritybytes + iLen >= TRACE_SIZE) {
-               tracing = FALSE;        // don't trace any more
-               return FALSE;
-       }
-       
-       // Traceformat:
-       // 32 bits timestamp (little endian)
-       // 16 bits duration (little endian)
-       // 16 bits data length (little endian, Highest Bit used as readerToTag flag)
-       // y Bytes data
-       // x Bytes parity (one byte per 8 bytes data)
-       
-       // timestamp (start)
-       trace[traceLen++] = ((timestamp_start >> 0) & 0xff);
-       trace[traceLen++] = ((timestamp_start >> 8) & 0xff);
-       trace[traceLen++] = ((timestamp_start >> 16) & 0xff);
-       trace[traceLen++] = ((timestamp_start >> 24) & 0xff);
-       
-       // duration
-       trace[traceLen++] = ((duration >> 0) & 0xff);
-       trace[traceLen++] = ((duration >> 8) & 0xff);
-
-       // data length
-       trace[traceLen++] = ((iLen >> 0) & 0xff);
-       trace[traceLen++] = ((iLen >> 8) & 0xff);
-
-       // readerToTag flag
-       if (!readerToTag) {
-               trace[traceLen - 1] |= 0x80;
-       }
-
-       // data bytes
-       if (btBytes != NULL && iLen != 0) {
-               memcpy(trace + traceLen, btBytes, iLen);
-       }
-       traceLen += iLen;
-
-       // parity bytes
-       if (parity != NULL && iLen != 0) {
-               memcpy(trace + traceLen, parity, num_paritybytes);
-       }
-       traceLen += num_paritybytes;
-
-       return TRUE;
-}
 
 //=============================================================================
 // ISO 14443 Type A - Miller decoder
@@ -1772,7 +1710,7 @@ int iso14443a_select_card(byte_t *uid_ptr, iso14a_card_select_t *p_hi14a_card, u
                                Dbprintf("Multiple tags detected. Collision after Bit %d", Demod.collisionPos);
                                for (uint16_t i = collision_answer_offset; i < Demod.collisionPos; i++, uid_resp_bits++) {      // add valid UID bits before collision point
                                        uint16_t UIDbit = (resp[i/8] >> (i % 8)) & 0x01;
-                                       uid_resp[uid_resp_bits & 0xf8] |= UIDbit << (uid_resp_bits % 8);
+                                       uid_resp[uid_resp_bits 8] |= UIDbit << (uid_resp_bits % 8);
                                }
                                uid_resp[uid_resp_bits/8] |= 1 << (uid_resp_bits % 8);                                  // next time select the card(s) with a 1 in the collision position
                                uid_resp_bits++;
@@ -1812,7 +1750,7 @@ int iso14443a_select_card(byte_t *uid_ptr, iso14a_card_select_t *p_hi14a_card, u
                if (!ReaderReceive(resp, resp_par)) return 0;
                sak = resp[0];
 
-               // Test if more parts of the uid are comming
+    // Test if more parts of the uid are coming
                if ((sak & 0x04) /* && uid_resp[0] == 0x88 */) {
                        // Remove first byte, 0x88 is not an UID byte, it CT, see page 3 of:
                        // http://www.nxp.com/documents/application_note/AN10927.pdf
Impressum, Datenschutz