1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-07-31 05:02:24 -04:00

Linux 4.0

This commit is contained in:
John Greb 2015-03-29 21:56:21 +01:00
parent 6534d1dd4d
commit 6ac25f7bad

View File

@ -140,6 +140,7 @@ V4LThread::CloseSource()
v4l2_munmap(buffers[i].start, buffers[i].length); v4l2_munmap(buffers[i].start, buffers[i].length);
v4l2_close(fd); v4l2_close(fd);
fd = -1;
} }
void void
@ -152,24 +153,25 @@ V4LThread::set_sample_rate(double samp_rate)
frequency.type = V4L2_TUNER_ADC; frequency.type = V4L2_TUNER_ADC;
frequency.frequency = samp_rate / 1; frequency.frequency = samp_rate / 1;
if (v4l2_ioctl(fd, VIDIOC_S_FREQUENCY, &frequency) == -1) xioctl(fd, VIDIOC_S_FREQUENCY, &frequency);
perror("VIDIOC_S_FREQUENCY");
return; return;
} }
// Cannot change freq while streaming in Linux 4.0
void void
V4LThread::set_center_freq(double freq) V4LThread::set_center_freq(double freq)
{ {
struct v4l2_frequency frequency; struct v4l2_frequency frequency;
if (fd <= 0)
return;
memset (&frequency, 0, sizeof(frequency)); memset (&frequency, 0, sizeof(frequency));
frequency.tuner = 1; frequency.tuner = 1;
frequency.type = V4L2_TUNER_RF; frequency.type = V4L2_TUNER_RF;
frequency.frequency = freq; frequency.frequency = freq;
if (v4l2_ioctl(fd, VIDIOC_S_FREQUENCY, &frequency) == -1) xioctl(fd, VIDIOC_S_FREQUENCY, &frequency);
perror("VIDIOC_S_FREQUENCY");
return; return;
} }
@ -189,8 +191,7 @@ V4LThread::set_bandwidth(double bandwidth)
ext_ctrls.count = 1; ext_ctrls.count = 1;
ext_ctrls.controls = &ext_ctrl; ext_ctrls.controls = &ext_ctrl;
if (v4l2_ioctl(fd, VIDIOC_S_EXT_CTRLS, &ext_ctrls) == -1) xioctl(fd, VIDIOC_S_EXT_CTRLS, &ext_ctrls);
perror("VIDIOC_S_EXT_CTRLS");
return; return;
} }
@ -201,6 +202,8 @@ V4LThread::set_tuner_gain(double gain)
struct v4l2_ext_controls ext_ctrls; struct v4l2_ext_controls ext_ctrls;
struct v4l2_ext_control ext_ctrl; struct v4l2_ext_control ext_ctrl;
if (fd <= 0)
return;
memset (&ext_ctrl, 0, sizeof(ext_ctrl)); memset (&ext_ctrl, 0, sizeof(ext_ctrl));
ext_ctrl.id = CID_TUNER_GAIN; ext_ctrl.id = CID_TUNER_GAIN;
ext_ctrl.value = gain; ext_ctrl.value = gain;
@ -210,8 +213,7 @@ V4LThread::set_tuner_gain(double gain)
ext_ctrls.count = 1; ext_ctrls.count = 1;
ext_ctrls.controls = &ext_ctrl; ext_ctrls.controls = &ext_ctrl;
if (v4l2_ioctl(fd, VIDIOC_S_EXT_CTRLS, &ext_ctrls) == -1) xioctl(fd, VIDIOC_S_EXT_CTRLS, &ext_ctrls);
perror("VIDIOC_S_EXT_CTRLS");
return; return;
} }