Display metadata can be requested over USB as a type-length-value list by sending a DISPLAY_PROPERTIES request to the default control endpoint. This is an easily extensible interface that can provide additional information if future firmwares may require so. An application like Steamshovel can use these metadata reports to automatically configure which data to send to which display, using the correct buffer format. With these reports different displays types can be supported without having to hard-code the specific configuration of each existing device in the application.
A typical IceTop display TLV list looks as follows:
This implies that LED display consist of APA102 LEDs, which means 4 bytes of information should be provided per LED. The information that is displayed corresponds to IceTop stations, so the pulses from DOMs 61-64 should be merged to determine the LED's color and brightness. The (inclusive) range of supported IceTop stations is 1-78, so a full display frame consists of \(4 \times 78=312\) bytes.
The \((2m)^3\) IceCube display consists of three modules. A report of the center module may look as follows:
This report describes the central part of the display/detector. A frame for this display contains \( 3 \times 60 \times (20+8)=5040 \) bytes. This is a lot more data than the IceTop display, but a 12Mbps USB port should stil be able to deliver 25FPS.
The following example reads the display information from all connected devices using pyusb: