I am trying to synchronise a separate piece of hardware with frame capture on an IMX219 CSI camera. I am using the Leopard imaging LI-JXAV-MIPI-ADPT-4CAM along with the IMX219 camera (+ adapter) on an AGX Xavier with 32.3.1 kernel. I have a function which interacts with my external hardware that I want to trigger between frame captures on the IMX219. I’ve tried using the libargus capture(request) function, and then running my external hardware function in between capture(request) calls, but this is too slow, as the capture(request) call does an entire MIPI stream initialization, (capture,) and shut down cycle, taking about 200-400 ms.
Unfortunately the IMX219 doesn’t have a hardware trigger, which would probably solve my problem.
To try and get the fastest response from the IMX219 the only viable option is to use the repeat(request) function. One solution that I could see working with this is to call my function between EOF and SOF flags of the CSI-2 transfer of the image. I am wondering if there is a flag or function in libargus that that would either let me call my function after EOF of the CSI-2 transfer, or a flag that lets me know when this occurs?
Alternatively, is there any way I can modify the request object to have a function trigger anytime a request is executed, or finished? To me it doesn’t seem like there’s a way to do this using the request object as the requests are handled in the background of the libargus library. Is there any function or flag that I could use in libargus to do this?
If this cant be done using libargus, can this functionality be added at the driver level for the camera?
If it’s a driver level change would this be something that I’d need to talk to Leopard Imaging about or is there general documentation I could use
to do this?
Thanks for any help.