X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=src%2Frfid_proto_mifare_ul.c;h=d90ac63a84f466bf6e7f91eea44694261f2f8a04;hb=893a580c6f1c7f1cc50d9bd1acc51c9fd6307a17;hp=65347b1202e9f482ea2791cf5d3aa067282856c9;hpb=d3e3ea34d69ddd3d975b1efa1768442589bd911f;p=librfid diff --git a/src/rfid_proto_mifare_ul.c b/src/rfid_proto_mifare_ul.c index 65347b1..d90ac63 100644 --- a/src/rfid_proto_mifare_ul.c +++ b/src/rfid_proto_mifare_ul.c @@ -17,7 +17,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ #include #include @@ -99,27 +99,18 @@ mful_write(struct rfid_protocol_handle *ph, unsigned int page, return ret; } -static int -mful_transceive(struct rfid_protocol_handle *ph, - const unsigned char *tx_data, unsigned int tx_len, - unsigned char *rx_data, unsigned int *rx_len, - unsigned int timeout, unsigned int flags) -{ - return -EINVAL; -} - static int mful_getopt(struct rfid_protocol_handle *ph, int optname, void *optval, - unsigned int optlen) + unsigned int *optlen) { int ret = -EINVAL; - u_int16_t atqa; unsigned int *size = optval; switch (optname) { case RFID_OPT_PROTO_SIZE: ret = 0; - *size = 512; + /* we have to return the size in bytes, not bits */ + *size = 512/8; break; } @@ -131,7 +122,7 @@ static struct rfid_protocol_handle * mful_init(struct rfid_layer2_handle *l2h) { struct rfid_protocol_handle *ph; - u_int16_t atqa; + u_int8_t atqa[2]; unsigned int atqa_len = sizeof(atqa); if (l2h->l2->id != RFID_LAYER2_ISO14443A) @@ -139,8 +130,8 @@ mful_init(struct rfid_layer2_handle *l2h) /* According to "Type Identification Procedure Rev. 1.3" */ rfid_layer2_getopt(l2h, RFID_OPT_14443A_ATQA, - &atqa, atqa_len); - if (atqa != 0x0044) + atqa, &atqa_len); + if (atqa[0] != 0x44 || atqa[1] != 0x00) return NULL; /* according to "Functional Specification Rev. 3.0 */