In the example Fx3BootAppGcc/usb_boot.c, line 705:
CyFx3BootUsbAckSetup (); <-------<---------
status = CyFx3BootUsbDmaXferData (0x80, (uint32_t)gEP0.pData, gEP0.wLen, 1000);
if (status != CY_FX3_BOOT_SUCCESS)
CyFx3BootUsbStall (0, CyTrue, CyFalse);
Why AckSetup is needed here since there are already data to be transferred in. The manual also said "This function is used to complete the status handshake of a USB control request that does NOT involve any data transfer."
I tried deleting this statement. Then get descriptor command will fail. Could any one can explain this?