I'm using the LPCXpresso54608 SDK for MCUXpresso. In particular, I'm running the generic HID device with FreeRTOS example code (link to my code/setup).
One of the settings is to enable the double buffer in usb_device_lpcip3511.h:
#define USB_DEVICE_IP3511_DOUBLE_BUFFER_ENABLE (1u)
The double buffer is enabled by default. It seems to add a layer of complexity that I'm not sure I need, and I'm not so sure it is even working correctly with the example!
Could someone enlighten me on the purpose/intended use of the double buffer?
Hi Nick:
Double buffering is used for more efficient transfers.
Data in one buffer are being processed while the next set of data is read into the other one.
I hope it helps.
Regards
Daniel
I should have been more clear in my question. I generally understand the purpose of double-buffering. I'm looking for more of a walk-through of this particular implementation. I can see the buffer index toggle, and see that every packet received goes into the alternate buffer, but within "USB_DeviceHidGenericCallback", the case "kUSB_DeviceHidEventRecvResponse" first calls "USB_DeviceHidSend" without toggling the buffer index, which echoes the data received the the IN-ENDPOINT (to the PC). Right after that, the buffer index is toggled which generally makes sense to me. THEN "USB_DeviceHidRecv" is called using the newly toggled buffer index. WHAT IS THIS DOING?!?!