4.10. 软件定义无线电接口 (SDR)¶
SDR 是软件定义无线电的缩写,指使用应用程序软件进行调制或解调的无线电设备。此接口旨在控制此类设备并进行数据流传输。
SDR 设备通过名为 /dev/swradio0
到 /dev/swradio255
的字符设备特殊文件进行访问,主设备号为 81,动态分配的次设备号为 0 到 255。
4.10.1. 查询功能¶
支持 SDR 接收器接口的设备会在 v4l2_capability
结构的 capabilities
字段中设置 V4L2_CAP_SDR_CAPTURE
和 V4L2_CAP_TUNER
标志,该结构由 ioctl VIDIOC_QUERYCAP ioctl 返回。该标志表示设备具有模数转换器 (ADC),这是 SDR 接收器的强制性元件。
支持 SDR 发射器接口的设备会在 v4l2_capability
结构的 capabilities
字段中设置 V4L2_CAP_SDR_OUTPUT
和 V4L2_CAP_MODULATOR
标志,该结构由 ioctl VIDIOC_QUERYCAP ioctl 返回。该标志表示设备具有数模转换器 (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,应用程序会将 v4l2_format
结构的 type
字段设置为 V4L2_BUF_TYPE_SDR_CAPTURE
或 V4L2_BUF_TYPE_SDR_OUTPUT
,并根据所需的操作使用 fmt
联合的 v4l2_sdr_format
sdr
成员。目前使用了 v4l2_sdr_format
结构的两个字段,pixelformat
和 buffersize
。pixelformat
的内容是数据格式的 V4L2 FourCC 代码。buffersize
字段是数据传输所需的最大缓冲区大小(以字节为单位),由驱动程序设置以通知应用程序。
-
type v4l2_sdr_format¶
__u32 |
|
|
__u32 |
|
数据所需的最大大小(以字节为单位)。该值由驱动程序设置。 |
__u8 |
|
此数组保留用于将来的扩展。驱动程序和应用程序必须将其设置为零。 |