I have finally managed to get my PC to talk to the Microchip PIC18F4550. I have opted to code entirely in Assembler so that I fully understand what is going on under to hood.
My question relates to the enumeration process, and specifically with regards to retrieving the Configuration Descriptor.
In the book USB Complete - 2nd Edition, the process is described as retrieving the first 9 bytes of the configuration descriptor, then retrieving up to FFh bytes.
In the 4th edition extract on the website it describes the second grab as only retrieving the number of bytes designated in the descriptor.
In my case, I have found the following:
9 bytes requested, 9 bytes returned by my firmware
255 bytes requested, 34 bytes returned (as this is the size of all my relevant descriptors)
The it starts again:
9 bytes requested, 9 bytes returned by my firmware
34 bytes requested, 34 bytes returned by my firmware.
It would appear that my PC has read both of the editions of your book and is now confused as to which to implement, and opted to implement both.
Is this normal?