hello:
I have a application scenarios in use Sequential Trigger Mode sensor mode,need waiting for signals of uncertain time to trigger capture. Select configuration below:
int OrinCam::dq_buffer(struct v4l2_buffer &v4l2_buf, enum v4l2_buf_type buf_type, enum v4l2_memory memory_type, uint32_t num_retries)
{
int ret = 0;
fd_set fds;
struct timeval tv;
FD_ZERO(&fds);
FD_SET(this->video_fd, &fds);
tv.tv_sec = 1;
tv.tv_usec = 20000;
// ret = select(this->video_fd + 1, &fds, NULL, NULL, &tv);
ret = select(this->video_fd + 1, &fds, NULL, NULL, NULL);//修改为无限等待模式
if (ret <= 0)
{
DEBUG_LOG(SENSOR, ERROR, "select error ret:%d \n", ret);
return ret;
}
v4l2_buf.type = buf_type;
v4l2_buf.memory = memory_type;
do
{
ret = ioctl(this->video_fd, VIDIOC_DQBUF, &v4l2_buf);
DEBUG_LOG(SENSOR, INFO, "ret:%d index:%d\n", ret, v4l2_buf.index);
if (ret == 0)
{
this->sensor_capture_plane_callback(v4l2_buf.index);
return ret;
}
else if (num_retries-- == 0)
{
DEBUG_LOG(SENSOR, ERROR, "VIDIOC_DQBUF error ret:%d num_retries:%d\n", ret, num_retries);
break;
}
} while (ret);
return ret;
}
but not effective. Kernel error as below:
[ 3016.991624] imx566 0-001a: [nv_imx566_operations.c:1520 sensor_s_stream]:sensor_s_stream sensor_s_stream 1
[ 3016.993069] (NULL device *): [iomanager.c:175 gpio_irq_handler]:irq:268 triggerPin:7
[ 3019.665256] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 3019.665273] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 3019.666023] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 3019.666033] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=2, csi_port=2
[ 3019.666042] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 3019.666046] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 2 vc- 0
[ 3019.666300] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[ 3022.225230] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 3022.225249] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 3022.225798] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 3022.225806] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=2, csi_port=2
[ 3022.225811] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 3022.225813] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 2 vc- 0
[ 3022.225986] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[ 3022.226013] imx566 0-001a: [nv_imx566_operations.c:1520 sensor_s_stream]:sensor_s_stream sensor_s_stream 0
Do I need to add any missing areas? Thank you.