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

硬體搜尋正在進行中。