7.32. ioctl VIDIOC_G_FREQUENCY, VIDIOC_S_FREQUENCY

7.32.1. 名称

VIDIOC_G_FREQUENCY - VIDIOC_S_FREQUENCY - 获取或设置调谐器或调制器的无线电频率

7.32.2. 概要

VIDIOC_G_FREQUENCY

int ioctl(int fd, VIDIOC_G_FREQUENCY, struct v4l2_frequency *argp)

VIDIOC_S_FREQUENCY

int ioctl(int fd, VIDIOC_S_FREQUENCY, const struct v4l2_frequency *argp)

7.32.3. 参数

fd

open() 返回的文件描述符。

argp

指向 struct v4l2_frequency 的指针。

7.32.4. 描述

要获取当前的调谐器或调制器无线电频率,应用程序需要将 struct v4l2_frequencytuner 字段设置为相应的调谐器或调制器编号(只有输入设备有调谐器,只有输出设备有调制器),将 reserved 数组清零,并使用指向此结构的指针调用 VIDIOC_G_FREQUENCY ioctl。驱动程序将当前频率存储在 frequency 字段中。

要更改当前的调谐器或调制器无线电频率,应用程序需要初始化 struct v4l2_frequencytunertypefrequency 字段以及 reserved 数组,并使用指向此结构的指针调用 VIDIOC_S_FREQUENCY ioctl。当请求的频率不可行时,驱动程序将采用最接近的可能值。但是 VIDIOC_S_FREQUENCY 是一个只写 ioctl,它不返回实际的新频率。

type v4l2_frequency
struct v4l2_frequency

__u32

tuner

调谐器或调制器索引号。该值与 struct v4l2_input tuner 字段和 struct v4l2_tuner index 字段,或 struct v4l2_output modulator 字段和 struct v4l2_modulator index 字段中的值相同。

__u32

type

调谐器类型。该值与 struct v4l2_tuner type 字段中的值相同。对于 /dev/radioX 设备节点,该类型必须设置为 V4L2_TUNER_RADIO,对于所有其他设备,该类型必须设置为 V4L2_TUNER_ANALOG_TV。对于调制器,将此字段设置为 V4L2_TUNER_RADIO(目前仅支持无线电调制器)。请参阅 v4l2_tuner_type

__u32

frequency

调谐频率,以 62.5 kHz 为单位,或者如果设置了 struct v4l2_tuner 或 struct v4l2_modulator capability 标志 V4L2_TUNER_CAP_LOW,则以 62.5 Hz 为单位。当设置了 capability 标志 V4L2_TUNER_CAP_1HZ 时,使用 1 Hz 单位。

__u32

reserved[8]

保留供将来扩展使用。驱动程序和应用程序必须将该数组设置为零。

7.32.5. 返回值

成功时返回 0,出错时返回 -1,并适当设置 errno 变量。通用错误代码在 通用错误代码 章节中描述。

EINVAL

tuner 索引超出范围或 type 字段中的值错误。

EBUSY

硬件搜索正在进行中。