ulao wrote:Either way its interesting. Any idea if the packets are sent in the normal interrupt pipe or would they be considered bulk. If bulk if may serve as a faster means to get data.
We use the HID Interrupt Output Pipe for SET_REPORT, and receive responses (async) via GET_REPORT over the HID Interrupt Input Pipe. It gets a little trickier when we talk about the SHIELD Controller vs other accessories, since it was first generation and the architecture of the backdoor commands was a mess. Since then, we've moved exclusively to GET_REPORT/SET_REPORT methods, even for flashing the firmware. Using a fixed size array, we'd write byte 0 as the SET command (4) and whenever a HID report comes back with the GET command(3), we know it's a response. The following byte is the "command" we actually wish to execute. So it may be a firmware OTA command, it may be a request for battery level, etc... We can send the same formatted packets over bluetooth and BLE via the HID interface as well.