I have posted a new FrontPanel release in the Software Downloads forum but wanted to make a few comments here to elaborate on the release.
The XEM3001v2 was a new release of the XEM3001 PCB. The major change was the migration to a 16-bit host interface to provide faster PC-FPGA communication. Along with this hardware change came a few others:
Firmware: The XEM3001v2 requires different firmware to take advantage of the 16-bit host interface.
API: The FrontPanel API has been modified to handle 16-bit wires and triggers. These modifications mainly change the header files involved because the new methods have different arguments.
HDL Modules: Of course, new HDL modules are required to support the new 16-bit host interface and provide 16-bit wires, triggers, and pipes.
The API now has a main base class for FrontPanel support (okCUsbFrontPanel). From this class, okCUsbXEM3001v1 and okCUsbXEM3001v2 have been derived. These are the classes you should instantiate in your code. Two classes are necessary to handle the different host interface widths and also because the two devices have different USB Product IDs. All FrontPanel methods are the same, however.
Of course XEM3001v2 hardware can access the upper 8-bits of any Wire or Trigger while the XEM3001v1 hardware cannot.
16-bit Pipes are only 16-bit on the FPGA side. Since USB is an 8-bit protocol, all transfers from the PC side are still 8-bits. For any given Pipe transfer, the -first- byte transferred ends up on lines 7:0 and the -second- byte transferred ends up on lines 15:8. Therefore, with v2 hardware, you should always transfer an even number of bytes with the Pipe methods.