Corrections List for USB Complete by Jan Axelson Last update: 7/31/01 Thanks to alert and helpful readers for pointing these out. The First Edition of USB Complete is out of print, so I'm no longer adding to this corrections list. The corrections list for the Second Edition of USB Complete is available online at www.janaxelson.com. Check the USB page (www.janaxelson.com/usb.htm) for code fixes, additiona, enhancements, and updates. The code currently available includes HID code for various Cypress chips and host code in Visual Basic and Visual C++. Page 14 (from McKay) Change so you don't have write a driver from scratch. to so you don't have to write a driver from scratch. (Add "to.") Page 21. (From Angelo) Under Bus Topology Change Figure 2-2 to Figure 2-1 Page 59 (from Adam) In Figure 4-1, in the third diagram, change CONTROL WRITE TRANSFER, HANDSHAKE TRANSACTION to CONTROL WRITE TRANSFER, STATUS TRANSACTION (from Adam) Page 70 (from Adam) In Figure 4-4's caption, change status packets to handshake packets p. 79 (from Mike Davis) In the second paragraph of item 11, change Drivers for the interfaces in compound devices may be assigned now. to Drivers for the interfaces in composite devices may be assigned now. p. 83 (from SeokYeon) In Table 5-2's caption, change has 14 fields in 17 bytes. to has 14 fields in 18 bytes. Page 89 (from Darko Zbodulja) In Table 5-5, under wMaxPacketSize, Size should be 2. Page 94. (From Ana Luiza de Almeida) Under Data Stage, paragraph 2, change An example is Set_Report, where a HID-class device sends a report to the host. to An example is Set_Report, where the host sends a report to a HID-class device. p. 99 (from SeokYeon) In the last line, change The exceptions are Set_Address and Synch_Frame. to The exceptions are Set_Address, Synch_Frame and Get_Status. Pages 100-111 (from Adam) To clarify, "Source of Data," "Data Length," and "Contents of Data field" all refer to the Data stage of the transfer. Page 104 (from Adam) Change Data Length from none to 0 and change Contents of Data Field from 0 to none Page 105 (from Adam) Change Data Length from Configuration value to 1 and change Contents of Data Field from 1 to Configuration value Page 108 (from Adam) Change Data Length from none to 0 and change Contents of Data Field from 0 to none Page 109 (from Adam) Change Data Length from none to 0 p. 124 (from Paul Berg) In Table 7-2, under Features, Change "High Speed" to "Full Speed". p. 147 (from Charlie Gill) In the example interrupt-vector table, change: org 04h ; 1024-millisecond interrupt to: org 04h ; 1.024-millisecond interrupt (Add a decimal point.) P. 236 (from Bob Nathan) Change A single report can contain up to 255 bytes. to A single report can contain up to 65536 bytes. p. 251. Change Request Number: 02h to Request Number: 09h p. 252. Change Request Number: 03h to Request Number: 02h p. 253. Change Request Number: 09h to Request Number: 0Ah p. 254. Change Request Number: 0Ah to Request Number: 03h p. 277. (from Noel Fegan) Table 13-4 For temperature, Kelvin is the SI unit and Fahrenheit is the Celsisu unit, so change Fahrenheit to Kelvin and change Celsius to Fahrenheit p. 278. (From Noel Fegan) Line 23 Change 1 to select degrees Fahrenheit to 3 to select degress Fahrenheit p, 303. (from Brian Fraser) Line 4 Change DevicePath as String to DevicePath as Byte p. 315. It is possible to use overlapped I/O with ReadFile or ReadFileEx to prevent a ReadFile that doesn't return from blocking the application's thread forever. www.janaxelson.com has example code. p. 372 (from SeokYeon) The differential 0s and 1s are reversed. The table should look like this: bus voltage data state, low speed device data state, full speed device differential 0 J K differential 1 K J And in the third paragraph, change the two "differential 0"s to "differential 1" and change the two "differential 1"'s to "differential 0." p. 378 (from SeokYeon) In Table 19-1, under Packet Types: Change Packet Types for Data from In, Out, Setup to Data0, Data1 and change Packet Types for CRC from In, Out, Setup to In, Out, Setup, Data0, Data1 p. 378 (from SeokYeon) In Table 19-1, change 0 to 1023 to 0 to 8184 (1023 bytes)