Can you make the boot mode as USB and then try the same API.
You can also try with BulkSrcSink project by issuing 0xE0 vendor command - and making boot mode as USB.
Note: Calling CyU3PDeviceReset(CyFalse) will cause device to boot again. (And the booting depends on PMODE setting)
In fact, when my cx3 camera was doing ESD or EFT testing, video link may be broken , and "DMA reset” occurs, so My firm code has to call CyU3PDeviceReset(CyFalse) to reboot. then the firmware is restarted again.
But it seems the CyU3PDeviceReset(CyFalse) doesn't work well, the USB connection can not be set up. I have to press RESET button on my board to reset the hardware. then the UVC camera works.
So, how to warm reset the camera by calling API just like POR reset or Hardware reset(trigger reset pin)?
The API CyU3PDeviceReset(CyFalse) is the one which is used to cold reset the device. So you are calling the right API.
But can you confirm the below:
1. In a normal working case (not during ESD test), is the API working as expected?
2. During ESD test, can you confirm that the API CyU3PDeviceReset() is actually being executed in the firmware(do you have any debug prints to know if this is actually called)? Please let me know at which point in the firmware is this API called after ESD strike happens.