* implement rfid_reader_{get,set}opt()
[librfid] / src / rfid_layer2_iso14443a.c
index 9bdd25a..281f709 100644 (file)
@@ -237,13 +237,10 @@ cascade:
                }
        }
 
-       h->level = ISO14443A_LEVEL_NONE;
-       h->state = ISO14443A_STATE_SELECTED;
-
        {
-               if (uid_size == 1)
+               if (h->level == ISO14443A_LEVEL_CL1)
                        handle->uid_len = 4;
-               else if (uid_size == 2)
+               else if (h->level == ISO14443A_LEVEL_CL2)
                        handle->uid_len = 7;
                else 
                        handle->uid_len = 10;
@@ -251,6 +248,9 @@ cascade:
                DEBUGP("UID %s\n", rfid_hexdump(handle->uid, handle->uid_len));
        }
 
+       h->level = ISO14443A_LEVEL_NONE;
+       h->state = ISO14443A_STATE_SELECTED;
+
        if (sak[0] & 0x20) {
                DEBUGP("we have a T=CL compliant PICC\n");
                handle->proto_supported = 1 << RFID_PROTOCOL_TCL;
@@ -361,7 +361,7 @@ iso14443a_init(struct rfid_reader_handle *rh)
        h->priv.iso14443a.state = ISO14443A_STATE_NONE;
        h->priv.iso14443a.level = ISO14443A_LEVEL_NONE;
 
-       ret = h->rh->reader->iso14443a.init(h->rh);
+       ret = h->rh->reader->init(h->rh, RFID_LAYER2_ISO14443A);
        if (ret < 0) {
                free_layer2_handle(h);
                return NULL;