IceCube display
LED display to show IceCube event data
Frame data transfer over USB

The default USB device configuration (configuration 1) provides a bulk OUT endpoint to transmit frame buffer data from the controlling PC to the display. After selecting configuration 1 with SET_CONFIGURATION the internal state of the endpoint is reset. The frame data can then be written to EP1 without any header or associated control request.

Since the endpoint size is smaller than the frame buffer size, multiple USB transfers have to performed to complete a single frame buffer transfer. A USB transfer with a size smaller than the endpoint size is always considered to indicate the last transfer of the series. If not enough data has been received to entirely fill a frame buffer, the frame transfer is considered invalid, the frame buffer is discarded, and the endpoint is stalled to notify the host of the transfer failure.

If the display frame buffer size is an exact multiple of the endpoint size, the transfer is considered complete when enough data has been received to fill the frame buffer. Note that it is not required to transmit an extra zero-length USB frame to complete the transfer.

If the endpoint was stalled due to a transmission error, the stall should be clear using a CLEAR_FEATURE control request.