X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=src%2Frfid_layer2_iso14443a.c;h=98722f5a0041bc4fe89f9609af876e6946af2af7;hb=893a580c6f1c7f1cc50d9bd1acc51c9fd6307a17;hp=281f709790b0d62c87c06e4f9d0fc29b9911be9a;hpb=da4aa962e17978a70bf1cf4fc3d1b46b620bc3bf;p=librfid diff --git a/src/rfid_layer2_iso14443a.c b/src/rfid_layer2_iso14443a.c index 281f709..98722f5 100644 --- a/src/rfid_layer2_iso14443a.c +++ b/src/rfid_layer2_iso14443a.c @@ -170,6 +170,7 @@ cascade: iso14443a_code_nvb_bits(&acf.nvb, 16); ret = iso14443a_transceive_acf(handle, &acf, &bit_of_col); + DEBUGP("tran_acf->%d boc: %d\n",ret,bit_of_col); if (ret < 0) return ret; @@ -198,6 +199,7 @@ cascade: switch (acf.sel_code) { case ISO14443A_AC_SEL_CODE_CL1: /* cascading from CL1 to CL2 */ + DEBUGP("cascading from CL1 to CL2\n"); if (acf.uid_bits[0] != 0x88) { DEBUGP("Cascade bit set, but UID0 != 0x88\n"); return -1; @@ -208,6 +210,7 @@ cascade: break; case ISO14443A_AC_SEL_CODE_CL2: /* cascading from CL2 to CL3 */ + DEBUGP("cascading from CL2 to CL3\n"); memcpy(&handle->uid[3], &acf.uid_bits[1], 3); acf.sel_code = ISO14443A_AC_SEL_CODE_CL3; h->level = ISO14443A_LEVEL_CL3; @@ -250,6 +253,7 @@ cascade: h->level = ISO14443A_LEVEL_NONE; h->state = ISO14443A_STATE_SELECTED; + h->sak = sak[0]; if (sak[0] & 0x20) { DEBUGP("we have a T=CL compliant PICC\n"); @@ -323,15 +327,22 @@ iso14443a_getopt(struct rfid_layer2_handle *handle, int optname, int ret = -EINVAL; struct iso14443a_handle *h = &handle->priv.iso14443a; struct iso14443a_atqa *atqa = optval; + u_int8_t *opt_u8 = optval; int *wupa = optval; switch (optname) { + case RFID_OPT_14443A_SAK: + *opt_u8 = h->sak; + *optlen = sizeof(*opt_u8); + break; case RFID_OPT_14443A_ATQA: *atqa = h->atqa; + *optlen = sizeof(*atqa); ret = 0; break; case RFID_OPT_14443A_WUPA: *wupa = ((handle->flags & RFID_OPT_LAYER2_WUP) != 0); + *optlen = sizeof(*wupa); ret = 0; break; };