Fix USB descriptors in SCL3711, NXP_PN533 and ASK LoGO also when corrupted by received data
The problem occurs in the following succession of events: * Emit commands returning an answer larger than 16 bytes * Re-enumerate USB devices without power cycle, e.g. a warm reboot of the PC The bug can be reproduced for testing purposes with usbreset.c from https://askubuntu.com/questions/645/how-do-you-reset-a-usb-device-from-the-command-line#661 $ lsusb|grep NFC Bus 001 Device 010: ID 04e6:5591 SCM Microsystems, Inc. SCL3711-NFC&RW $ sudo ./usbreset /dev/bus/usb/001/010 Resetting USB device /dev/bus/usb/001/010 Reset successful $ echo -e "4a 01 00\n423000" |pn53x-tamashell $ sudo ./usbreset /dev/bus/usb/001/010 Resetting USB device /dev/bus/usb/001/010 Error in ioctl: No such device $ lsusb|grep NFC ... device disappeared In the example above, reading 4 pages of a MFUL corrupted one single byte. The entire buffer can be corrupted e.g. with fast-reading a MFUL EV1: $ echo -e "4a 01 00\n423a0013"|pn53x-tamashell
This commit is contained in:
parent
1bf542b9e2
commit
c9ac17c9f5
1 changed files with 1 additions and 0 deletions
|
@ -729,6 +729,7 @@ read:
|
|||
}
|
||||
// The PN53x command is done and we successfully received the reply
|
||||
pnd->last_error = 0;
|
||||
DRIVER_DATA(pnd)->possibly_corrupted_usbdesc |= len > 16;
|
||||
return len;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue