I am developing a USB3.0 camera with CX3. I have designed two general purpose buttons and attached them to two GPIO pins on CX3 (GPIO 24 and 21). Currently, these two buttons are used for brightness + and -.
On the firmware side, I have managed to create a GPIO interrupt call back function and in which use CyU3PDmaChannelSetupSendBuffer to send the status interrupt packet to PC.
My question is on the PC side how I can capture the status interrupt? I use V4L2 on Ubuntu 16.04 to develope the PC software. I googled the question but I haven't found any answers. In the V4L2 specs I noticed there is VIDIOC_SUBSCRIBE_EVENT, but I am not sure if this can capture the interrupt from the device.
As defined by the USB Spec the USB Slave (CX3) cannot notify the master (PC) of its own. The PC must ping the CX3 of its own if it wants to know any interrupt status.
This can be done by sending a vendor command by the PC (with direction IN, meaning PC is expecting data from the CX3), to which the CX3 replies in the Data phase.
Hi Madhu Sudhan,
Thank you very much for your clear answer.
Does Cypress has a complete example supporting hardware triggered still image capture? I went through V4L2 documentation, but couldn't find anything that related to monitoring/scanning the status interrupt from the UVC device.
I found that libusb has a function for interrupt transfer. I wonder if I could mix V4L2 with libusb function calls. I read somewhere that an interface can only be opened by one lib.
We do not have a complete working example for hardware trigger method of still image capture. But we can provide some guideliens on this.
Please refer to the attached document which gives an overview on the methods used to obtain still image.
I assume you are going to use the method 1 ( hardware trigger) which requires only minimal changes in the firmware and descriptor file.
- Madhu Sudhan