2.3.6. 前端 uAPI 数据类型

enum fe_caps

前端功能

常量

FE_IS_STUPID

前端存在问题,无法报告其功能。

FE_CAN_INVERSION_AUTO

可以自动检测频谱反转

FE_CAN_FEC_1_2

支持 FEC 1/2

FE_CAN_FEC_2_3

支持 FEC 2/3

FE_CAN_FEC_3_4

支持 FEC 3/4

FE_CAN_FEC_4_5

支持 FEC 4/5

FE_CAN_FEC_5_6

支持 FEC 5/6

FE_CAN_FEC_6_7

支持 FEC 6/7

FE_CAN_FEC_7_8

支持 FEC 7/8

FE_CAN_FEC_8_9

支持 FEC 8/9

FE_CAN_FEC_AUTO

可以自动检测 FEC

FE_CAN_QPSK

支持 QPSK 调制

FE_CAN_QAM_16

支持 16-QAM 调制

FE_CAN_QAM_32

支持 32-QAM 调制

FE_CAN_QAM_64

支持 64-QAM 调制

FE_CAN_QAM_128

支持 128-QAM 调制

FE_CAN_QAM_256

支持 256-QAM 调制

FE_CAN_QAM_AUTO

可以自动检测 QAM 调制

FE_CAN_TRANSMISSION_MODE_AUTO

可以自动检测传输模式

FE_CAN_BANDWIDTH_AUTO

可以自动检测带宽

FE_CAN_GUARD_INTERVAL_AUTO

可以自动检测保护间隔

FE_CAN_HIERARCHY_AUTO

可以自动检测层次

FE_CAN_8VSB

支持 8-VSB 调制

FE_CAN_16VSB

支持 16-VSB 调制

FE_HAS_EXTENDED_CAPS

未使用

FE_CAN_MULTISTREAM

支持多流过滤

FE_CAN_TURBO_FEC

支持“turbo FEC”调制

FE_CAN_2G_MODULATION

支持“第二代”调制,例如 DVB-S2、DVB-T2、DVB-C2

FE_NEEDS_BENDING

未使用

FE_CAN_RECOVER

可以自动从电缆断开中恢复

FE_CAN_MUTE_TS

可以停止伪 TS 数据输出

struct dvb_frontend_info

前端属性和功能

定义:

struct dvb_frontend_info {
    char name[128];
    enum fe_type type;
    __u32 frequency_min;
    __u32 frequency_max;
    __u32 frequency_stepsize;
    __u32 frequency_tolerance;
    __u32 symbol_rate_min;
    __u32 symbol_rate_max;
    __u32 symbol_rate_tolerance;
    __u32 notifier_delay;
    enum fe_caps caps;
};

成员

name

前端的名称

type

已弃用。不应在现代程序中使用,因为一个前端可能有多个类型。为了获得给定前端的支持类型,请使用 DTV_ENUM_DELSYS

frequency_min

前端支持的最小频率。

frequency_max

前端支持的最小频率。

frequency_stepsize

所有频率都是此值的倍数。

frequency_tolerance

频率容差。

symbol_rate_min

最小符号率,以波特为单位(用于有线/卫星系统)。

symbol_rate_max

最大符号率,以波特为单位(用于有线/卫星系统)。

symbol_rate_tolerance

最大符号率容差,以 ppm 为单位(用于有线/卫星系统)。

notifier_delay

已弃用。任何驱动程序都未使用。

caps

前端支持的功能,如 enum fe_caps 中指定的那样。

描述

struct dvb_diseqc_master_cmd

DiSEqC 主命令

定义:

struct dvb_diseqc_master_cmd {
    __u8 msg[6];
    __u8 msg_len;
};

成员

msg

要发送的 DiSEqC 消息。它包含一个 3 字节的标头,包括:帧 + 地址 + 命令,以及一个可选的最多 3 字节的数据参数。

msg_len

DiSEqC 消息的长度。有效值为 3 到 6。

描述

请查看 http://www.eutelsat.org/ 上提供的 DiSEqC 总线规范,以了解可以使用的消息。

struct dvb_diseqc_slave_reply

DiSEqC 接收到的数据

定义:

struct dvb_diseqc_slave_reply {
    __u8 msg[4];
    __u8 msg_len;
    int timeout;
};

成员

msg

用于存储通过 DiSEqC 接收的消息的 DiSEqC 消息缓冲区。它包含一个字节的标头,包括:帧,以及一个可选的最多 3 字节的数据参数。

msg_len

DiSEqC 消息的长度。有效值为 0 到 4,其中 0 表示没有消息。

timeout

如果在超时毫秒后没有收到消息,则从 ioctl 返回错误代码。

描述

请查看 http://www.eutelsat.org/ 上提供的 DiSEqC 总线规范,以了解可以使用的消息。

enum fe_sec_voltage

用于馈送 LNBf 的直流电压

常量

SEC_VOLTAGE_13

向 LNBf 输出 13V

SEC_VOLTAGE_18

向 LNBf 输出 18V

SEC_VOLTAGE_OFF

不要用直流电压馈送 LNBf

enum fe_sec_tone_mode

要发送到 LNBf 的音频类型。

常量

SEC_TONE_ON

向天线发送 22kHz 音频突发。

SEC_TONE_OFF

不要向天线发送 22kHz 音频(除非调用 FE_DISEQC_* ioctl)。

enum fe_sec_mini_cmd

要发送的迷你突发类型

常量

SEC_MINI_A

发送迷你 DiSEqC 22kHz '0' 音频突发以选择卫星 A

SEC_MINI_B

发送迷你 DiSEqC 22kHz '1' 数据突发以选择卫星 B

enum fe_status

枚举可能的前端状态。

常量

FE_NONE

前端没有任何类型的锁定。这是初始前端状态

FE_HAS_SIGNAL

已找到高于噪声水平的信号。

FE_HAS_CARRIER

已找到信号。

FE_HAS_VITERBI

FEC 内码(Viterbi、LDPC 或其他内码)是稳定的。

FE_HAS_SYNC

已找到同步字节。

FE_HAS_LOCK

数字电视已锁定,一切正常。

FE_TIMEDOUT

在大约 2 秒内锁定。

FE_REINIT

前端已重新初始化,建议应用程序重置 DiSEqC、音频和参数。

enum fe_spectral_inversion

反转频带类型

常量

INVERSION_OFF

不要进行频谱反转。

INVERSION_ON

进行频谱反转。

INVERSION_AUTO

自动检测频谱反转。

描述

此参数指示是否应假设频谱反转。在自动设置 (INVERSION_AUTO) 中,硬件将尝试自行找出正确的设置。如果硬件不支持,dvb_frontend 将首先尝试在关闭反转的情况下锁定载波。如果失败,它将尝试启用反转。

enum fe_code_rate

前向纠错 (FEC) 类型

常量

FEC_NONE

无前向纠错码

FEC_1_2

前向纠错码 1/2

FEC_2_3

前向纠错码 2/3

FEC_3_4

前向纠错码 3/4

FEC_4_5

前向纠错码 4/5

FEC_5_6

前向纠错码 5/6

FEC_6_7

前向纠错码 6/7

FEC_7_8

前向纠错码 7/8

FEC_8_9

前向纠错码 8/9

FEC_AUTO

自动检测纠错码

FEC_3_5

前向纠错码 3/5

FEC_9_10

前向纠错码 9/10

FEC_2_5

前向纠错码 2/5

FEC_1_3

前向纠错码 1/3

FEC_1_4

前向纠错码 1/4

FEC_5_9

前向纠错码 5/9

FEC_7_9

前向纠错码 7/9

FEC_8_15

前向纠错码 8/15

FEC_11_15

前向纠错码 11/15

FEC_13_18

前向纠错码 13/18

FEC_9_20

前向纠错码 9/20

FEC_11_20

前向纠错码 11/20

FEC_23_36

前向纠错码 23/36

FEC_25_36

前向纠错码 25/36

FEC_13_45

前向纠错码 13/45

FEC_26_45

前向纠错码 26/45

FEC_28_45

前向纠错码 28/45

FEC_32_45

前向纠错码 32/45

FEC_77_90

前向纠错码 77/90

FEC_11_45

前向纠错码 11/45

FEC_4_15

前向纠错码 4/15

FEC_14_45

前向纠错码 14/45

FEC_7_15

前向纠错码 7/15

描述

请注意,并非所有 FEC 类型都受给定标准支持。

enum fe_modulation

调制/星座类型

常量

QPSK

QPSK 调制

QAM_16

16-QAM 调制

QAM_32

32-QAM 调制

QAM_64

64-QAM 调制

QAM_128

128-QAM 调制

QAM_256

256-QAM 调制

QAM_AUTO

自动检测 QAM 调制

VSB_8

8-VSB 调制

VSB_16

16-VSB 调制

PSK_8

8-PSK 调制

APSK_16

16-APSK 调制

APSK_32

32-APSK 调制

DQPSK

DQPSK 调制

QAM_4_NR

4-QAM-NR 调制

QAM_1024

1024-QAM 调制

QAM_4096

4096-QAM 调制

APSK_8_L

8APSK-L 调制

APSK_16_L

16APSK-L 调制

APSK_32_L

32APSK-L 调制

APSK_64

64APSK 调制

APSK_64_L

64APSK-L 调制

描述

请注意,并非所有调制方式都受给定标准支持。

enum fe_transmit_mode

传输模式

常量

TRANSMISSION_MODE_2K

传输模式 2K

TRANSMISSION_MODE_8K

传输模式 8K

TRANSMISSION_MODE_AUTO

自动检测传输模式。硬件将尝试找到正确的 FFT 大小(如果支持),以填充缺失的参数。

TRANSMISSION_MODE_4K

传输模式 4K

TRANSMISSION_MODE_1K

传输模式 1K

TRANSMISSION_MODE_16K

传输模式 16K

TRANSMISSION_MODE_32K

传输模式 32K

TRANSMISSION_MODE_C1

单载波 (C=1) 传输模式(仅限 DTMB)

TRANSMISSION_MODE_C3780

多载波 (C=3780) 传输模式(仅限 DTMB)

描述

请注意,并非所有传输模式都受给定标准支持。

enum fe_guard_interval

保护间隔

常量

GUARD_INTERVAL_1_32

保护间隔 1/32

GUARD_INTERVAL_1_16

保护间隔 1/16

GUARD_INTERVAL_1_8

保护间隔 1/8

GUARD_INTERVAL_1_4

保护间隔 1/4

GUARD_INTERVAL_AUTO

自动检测保护间隔

GUARD_INTERVAL_1_128

保护间隔 1/128

GUARD_INTERVAL_19_128

保护间隔 19/128

GUARD_INTERVAL_19_256

保护间隔 19/256

GUARD_INTERVAL_PN420

PN 长度 420 (1/4)

GUARD_INTERVAL_PN595

PN 长度 595 (1/6)

GUARD_INTERVAL_PN945

PN 长度 945 (1/9)

GUARD_INTERVAL_1_64

保护间隔 1/64

描述

请注意,并非所有保护间隔都受给定标准支持。

enum fe_hierarchy

层级

常量

HIERARCHY_NONE

无层级

HIERARCHY_1

层级 1

HIERARCHY_2

层级 2

HIERARCHY_4

层级 4

HIERARCHY_AUTO

自动检测层级(如果支持)

描述

请注意,并非所有层级类型都受给定标准支持。

enum fe_interleaving

交织

常量

INTERLEAVING_NONE

无交织。

INTERLEAVING_AUTO

自动检测交织。

INTERLEAVING_240

240 个符号的交织。

INTERLEAVING_720

720 个符号的交织。

描述

请注意,目前只有 DTMB 使用它。

enum fe_pilot

导频音类型

常量

PILOT_ON

启用导频音

PILOT_OFF

禁用导频音

PILOT_AUTO

自动检测导频音

enum fe_rolloff

滚降因子

常量

ROLLOFF_35

滚降因子:α=35%

ROLLOFF_20

滚降因子:α=20%

ROLLOFF_25

滚降因子:α=25%

ROLLOFF_AUTO

自动检测滚降因子。

ROLLOFF_15

滚降因子:α=15%

ROLLOFF_10

滚降因子:α=10%

ROLLOFF_5

滚降因子:α=5%

描述

enum fe_delivery_system

传输系统类型

常量

SYS_UNDEFINED

未定义的标准。通常表示错误

SYS_DVBC_ANNEX_A

有线电视:符合 ITU-T J.83 Annex A 规范的 DVB-C

SYS_DVBC_ANNEX_B

有线电视:符合 ITU-T J.83 Annex B 规范的 DVB-C (ClearQAM)

SYS_DVBT

地面电视:DVB-T

SYS_DSS

卫星电视:DSS(未完全支持)

SYS_DVBS

卫星电视:DVB-S

SYS_DVBS2

卫星电视:DVB-S2 和 DVB-S2X

SYS_DVBH

地面电视(移动):DVB-H(标准已弃用)

SYS_ISDBT

地面电视:ISDB-T

SYS_ISDBS

卫星电视:ISDB-S

SYS_ISDBC

有线电视:ISDB-C(尚无驱动程序)

SYS_ATSC

地面电视:ATSC

SYS_ATSCMH

地面电视(移动):ATSC-M/H

SYS_DTMB

地面电视:DTMB

SYS_CMMB

地面电视(移动):CMMB(未完全支持)

SYS_DAB

数字音频:DAB(未完全支持)

SYS_DVBT2

地面电视:DVB-T2

SYS_TURBO

卫星电视:DVB-S Turbo

SYS_DVBC_ANNEX_C

有线电视:符合 ITU-T J.83 Annex C 规范的 DVB-C

SYS_DVBC2

有线电视:DVB-C2

enum atscmh_sccc_block_mode

串联卷积码块模式类型。

常量

ATSCMH_SCCC_BLK_SEP

独立 SCCC:SCCC 外码模式应针对每个组区域(A、B、C、D)独立设置

ATSCMH_SCCC_BLK_COMB

组合 SCCC:所有四个区域应具有相同的 SCCC 外码模式。

ATSCMH_SCCC_BLK_RES

保留。不应使用。

enum atscmh_sccc_code_mode

串联卷积码率类型。

常量

ATSCMH_SCCC_CODE_HLF

SCCC 块的外码率为 1/2。

ATSCMH_SCCC_CODE_QTR

SCCC 块的外码率为 1/4。

ATSCMH_SCCC_CODE_RES

保留。不应使用。

enum atscmh_rs_frame_ensemble

里德-所罗门 (RS) 帧集成。

常量

ATSCMH_RSFRAME_ENS_PRI

主集成。

ATSCMH_RSFRAME_ENS_SEC

辅助集成。

enum atscmh_rs_frame_mode

里德-所罗门 (RS) 帧模式。

常量

ATSCMH_RSFRAME_PRI_ONLY

单帧:所有组区域只有一个主 RS 帧。

ATSCMH_RSFRAME_PRI_SEC

双帧:有两个独立的 RS 帧:组区域 A 和 B 的主 RS 帧,以及组区域 C 和 D 的辅助 RS 帧。

ATSCMH_RSFRAME_RES

保留。不应使用。

enum atscmh_rs_code_mode

ATSC-M/H 里德-所罗门模式

常量

ATSCMH_RSCODE_211_187

里德-所罗门码 (211,187)。

ATSCMH_RSCODE_223_187

里德-所罗门码 (223,187)。

ATSCMH_RSCODE_235_187

里德-所罗门码 (235,187)。

ATSCMH_RSCODE_RES

保留。不应使用。

enum fecap_scale_params

质量参数的比例类型。

常量

FE_SCALE_NOT_AVAILABLE

该 QoS 度量不可用。这可能表示临时或永久情况。

FE_SCALE_DECIBEL

该比例以 0.001 dB 为步长进行测量,通常用于信号测量。

FE_SCALE_RELATIVE

该比例为相对百分比度量,范围从 0 (0%) 到 0xffff (100%)。

FE_SCALE_COUNTER

该比例计算事件的发生次数,例如位错误、块错误、流逝时间。

struct dtv_stats

用于读取 DTV 状态属性

定义:

struct dtv_stats {
    __u8 scale;
    union {
        __u64 uvalue;
        __s64 svalue;
    };
};

成员

scale

填充 enum fecap_scale_params - 该参数使用的比例

{unnamed_union}

匿名

uvalue

该度量的无符号整数值,当 scaleFE_SCALE_RELATIVEFE_SCALE_COUNTER 时使用。

svalue

该度量的整数值,对于 FE_SCALE_DECIBEL,用于 dB 测量。单位为 0.001 dB。

描述

对于大多数传输系统,这将为每个参数返回一个值。

但是,应该注意的是,像 ISDB 这样的新型 OFDM 传输系统可以为每组载波使用不同的调制类型。在这样的标准中,最多可以提供 8 组统计信息,每组载波(在 ISDB 中称为“层”)一组。

为了与其他传输系统保持一致,第一个值是指整组载波(“全局”)。

当硬件未提供整组载波或来自特定层的值时,scale 应使用值 FE_SCALE_NOT_AVAILABLE

len 应填充为最新填充的状态 + 1。

换句话说,对于 ISDB,这些值应像这样填充

u.st.stat.svalue[0] = global statistics;
u.st.stat.scale[0] = FE_SCALE_DECIBEL;
u.st.stat.value[1] = layer A statistics;
u.st.stat.scale[1] = FE_SCALE_NOT_AVAILABLE (if not available);
u.st.stat.svalue[2] = layer B statistics;
u.st.stat.scale[2] = FE_SCALE_DECIBEL;
u.st.stat.svalue[3] = layer C statistics;
u.st.stat.scale[3] = FE_SCALE_DECIBEL;
u.st.len = 4;
struct dtv_fe_stats

存储数字电视前端统计信息

定义:

struct dtv_fe_stats {
    __u8 len;
    struct dtv_stats stat[MAX_DTV_STATS];
};

成员

len

统计信息的长度 - 如果为零,则禁用统计信息。

stat

包含数字电视统计信息的数组。

描述

在大多数标准中,len 可以是 0 或 1。但是,对于 ISDB,每一层都是独立调制的。因此,每一层可能有其自己的一组统计信息。如果是这样,stat[0] 携带该属性的全局值。索引 1 到 3 表示层 A 到 B。

struct dtv_property

存储一个前端命令及其值

定义:

struct dtv_property {
    __u32 cmd;
    __u32 reserved[3];
    union {
        __u32 data;
        struct dtv_fe_stats st;
        struct {
            __u8 data[32];
            __u32 len;
            __u32 reserved1[3];
            void *reserved2;
        } buffer;
    } u;
    int result;
};

成员

cmd

数字电视命令。

reserved

未使用。

u

包含命令值的联合体。

u.data

一个包含命令值的无符号 32 位整数。

u.st

一个 struct dtv_fe_stats 统计信息数组。

u.buffer

用于存储较大属性的结构体。当前未使用。

u.buffer.data

一个无符号 32 位整数数组。

u.buffer.len

缓冲区中的元素数量。

u.buffer.reserved1

保留。

u.buffer.reserved2

保留。

结果

当前未使用。

struct dtv_properties

一组命令/值对。

定义:

struct dtv_properties {
    __u32 num;
    struct dtv_property *props;
};

成员

num

结构体中存储的命令数量。

props

指向 struct dtv_property 的指针。