4.10. 软件无线电接口 (SDR)

SDR 是软件无线电的缩写,指使用应用软件进行调制或解调的无线电设备。此接口旨在控制和数据流传输此类设备。

SDR 设备通过字符设备特殊文件访问,这些文件名为 /dev/swradio0/dev/swradio255,主设备号为 81,动态分配的次设备号为 0 到 255。

4.10.1. 查询功能

支持 SDR 接收器接口的设备在 ioctl VIDIOC_QUERYCAP ioctl 返回的 struct v4l2_capabilitycapabilities 字段中设置 V4L2_CAP_SDR_CAPTUREV4L2_CAP_TUNER 标志。该标志表示设备具有模数转换器 (ADC),这是 SDR 接收器的强制性元件。

支持 SDR 发射器接口的设备在 ioctl VIDIOC_QUERYCAP ioctl 返回的 struct v4l2_capabilitycapabilities 字段中设置 V4L2_CAP_SDR_OUTPUTV4L2_CAP_MODULATOR 标志。该标志表示设备具有数模转换器 (DAC),这是 SDR 发射器的强制性元件。

必须支持至少一种读/写或流 I/O 方法。

4.10.2. 补充功能

SDR 设备可以支持 控件,并且必须支持 调谐器和调制器 ioctl。调谐器 ioctl 用于设置 ADC/DAC 采样率(采样频率)和可能的射频 (RF)。

V4L2_TUNER_SDR 调谐器类型用于设置 SDR 设备 ADC/DAC 频率,V4L2_TUNER_RF 调谐器类型用于设置射频。射频调谐器(如果有)的调谐器索引必须始终位于 SDR 调谐器索引之后。通常,SDR 调谐器为 #0,射频调谐器为 #1。

不支持 ioctl VIDIOC_S_HW_FREQ_SEEK ioctl。

4.10.3. 数据格式协商

SDR 设备使用 数据格式 ioctl 来选择捕获和输出格式。采样分辨率和数据流格式都绑定到该可选格式。除了基本的 数据格式 ioctl 之外,还必须支持 ioctl VIDIOC_ENUM_FMT ioctl。

为了使用 数据格式 ioctl,应用程序将 struct v4l2_formattype 字段设置为 V4L2_BUF_TYPE_SDR_CAPTUREV4L2_BUF_TYPE_SDR_OUTPUT,并根据所需的运算使用 fmt 联合的 struct v4l2_sdr_format sdr 成员。目前,使用了 struct v4l2_sdr_format 的两个字段:pixelformatbuffersizepixelformat 的内容是数据格式的 V4L2 FourCC 代码。buffersize 字段是数据传输所需的最大缓冲区大小(以字节为单位),由驱动程序设置以通知应用程序。

type v4l2_sdr_format
struct v4l2_sdr_format

__u32

pixelformat

数据格式或压缩类型,由应用程序设置。这是一个小端 四字符代码。V4L2 在 SDR 格式 中定义了 SDR 格式。

__u32

buffersize

数据所需的最大大小(以字节为单位)。值由驱动程序设置。

__u8

reserved[24]

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

SDR 设备可以支持 读/写 和/或流(内存映射用户指针)I/O。