- move some initialization of proto handle from _tcl to core
authorlaforge <laforge@e0336214-984f-0b4b-a45f-81c69e1f0ede>
Sat, 22 Oct 2005 17:20:47 +0000 (17:20 +0000)
committerlaforge <laforge@e0336214-984f-0b4b-a45f-81c69e1f0ede>
Sat, 22 Oct 2005 17:20:47 +0000 (17:20 +0000)
- read_len is actually a pointer to the value

git-svn-id: https://svn.gnumonks.org/trunk/librfid@1549 e0336214-984f-0b4b-a45f-81c69e1f0ede

rfid_proto_tcl.c
rfid_protocol.c

index da3ecf1..5b63607 100644 (file)
@@ -647,8 +647,6 @@ tcl_init(struct rfid_layer2_handle *l2h)
        th->priv.tcl.state = TCL_STATE_INITIAL;
        th->priv.tcl.ats_len = mru;
        th->priv.tcl.toggle = 1;
-       th->l2h = l2h;
-       th->proto = &rfid_protocol_tcl;
 
        th->priv.tcl.fsd = iso14443_fsd_approx(mru);
 
index 28da029..abbd04d 100644 (file)
@@ -30,12 +30,22 @@ struct rfid_protocol_handle *
 rfid_protocol_init(struct rfid_layer2_handle *l2h, unsigned int id)
 {
        struct rfid_protocol *p;
+       struct rfid_protocol_handle *ph = NULL;
 
-       for (p = rfid_protocol_list; p; p = p->next)
-               if (p->id == id)
-                       return p->fn.init(l2h);
+       for (p = rfid_protocol_list; p; p = p->next) {
+               if (p->id == id) {
+                       ph = p->fn.init(l2h);
+                       break;
+               }
+       }
 
-       return NULL;
+       if (!ph)
+               return NULL;
+
+       ph->proto = p;
+       ph->l2h = l2h;
+
+       return ph;
 }
 
 int
@@ -60,7 +70,7 @@ int
 rfid_protocol_read(struct rfid_protocol_handle *ph,
                   unsigned int page,
                   unsigned char *rx_data,
-                  unsigned int rx_len)
+                  unsigned int *rx_len)
 {
        if (ph->proto->fn.read)
                return ph->proto->fn.read(ph, page, rx_data, rx_len);