📄 stv0299.h
字号:
#ifndef _stv0299_H_
#define _stv0299_H_
#define EINVAL 22
typedef enum fe_caps {
FE_IS_STUPID = 0,
FE_CAN_INVERSION_AUTO = 0x1,
FE_CAN_FEC_1_2 = 0x2,
FE_CAN_FEC_2_3 = 0x4,
FE_CAN_FEC_3_4 = 0x8,
FE_CAN_FEC_4_5 = 0x10,
FE_CAN_FEC_5_6 = 0x20,
FE_CAN_FEC_6_7 = 0x40,
FE_CAN_FEC_7_8 = 0x80,
FE_CAN_FEC_8_9 = 0x100,
FE_CAN_FEC_AUTO = 0x200,
FE_CAN_QPSK = 0x400,
FE_CAN_QAM_16 = 0x800,
FE_CAN_QAM_32 = 0x1000,
FE_CAN_QAM_64 = 0x2000,
FE_CAN_QAM_128 = 0x4000,
FE_CAN_QAM_256 = 0x8000,
FE_CAN_QAM_AUTO = 0x10000,
FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000,
FE_CAN_BANDWIDTH_AUTO = 0x40000,
FE_CAN_GUARD_INTERVAL_AUTO = 0x80000,
FE_CAN_HIERARCHY_AUTO = 0x100000,
FE_CAN_8VSB = 0x200000,
FE_CAN_16VSB = 0x400000,
FE_NEEDS_BENDING = 0x20000000, // not supported anymore, don't use (frontend requires frequency bending)
FE_CAN_RECOVER = 0x40000000, // frontend can recover from a cable unplug automatically
FE_CAN_MUTE_TS = 0x80000000 // frontend can stop spurious TS data output
} fe_caps_t;
typedef enum fe_type {
FE_QPSK,
FE_QAM,
FE_OFDM,
FE_ATSC
} fe_type_t;
struct dvb_frontend_info {
char name[128];
fe_type_t type;
UInt32 frequency_min;
UInt32 frequency_max;
UInt32 frequency_stepsize;
UInt32 frequency_tolerance;
UInt32 symbol_rate_min;
UInt32 symbol_rate_max;
UInt32 symbol_rate_tolerance; /* ppm */
UInt32 notifier_delay; /* DEPRECATED */
UInt32 caps;
};
typedef enum fe_spectral_inversion {
INVERSION_OFF,
INVERSION_ON,
INVERSION_AUTO
} fe_spectral_inversion_t;
typedef enum fe_code_rate {
FEC_NONE = 0,
FEC_1_2,
FEC_2_3,
FEC_3_4,
FEC_4_5,
FEC_5_6,
FEC_6_7,
FEC_7_8,
FEC_8_9,
FEC_AUTO
} fe_code_rate_t;
typedef enum fe_sec_mini_cmd {
SEC_MINI_A,
SEC_MINI_B
} fe_sec_mini_cmd_t;
/**
* Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for
* the meaning of this struct...
*/
struct dvb_diseqc_master_cmd {
UInt8 msg [6]; /* { framing, address, command, data [3] } */
UInt8 msg_len; /* valid values are 3...6 */
};
struct dvb_diseqc_slave_reply {
UInt8 msg [4]; /* { framing, data [3] } */
UInt8 msg_len; /* valid values are 0...4, 0 means no msg */
int timeout; /* return from ioctl after timeout ms with */
}; /* errorcode when no message was received */
typedef enum fe_sec_voltage {
SEC_VOLTAGE_13,
SEC_VOLTAGE_18,
SEC_VOLTAGE_OFF
} fe_sec_voltage_t;
typedef enum fe_sec_tone_mode {
SEC_TONE_ON,
SEC_TONE_OFF
} fe_sec_tone_mode_t;
typedef enum fe_status {
FE_HAS_BEGIN =0X00,
FE_HAS_SIGNAL = 0x01, /* found something above the noise level */
FE_HAS_CARRIER = 0x02, /* found a DVB signal */
FE_HAS_VITERBI = 0x04, /* FEC is stable */
FE_HAS_SYNC = 0x08, /* found sync bytes */
FE_HAS_LOCK = 0x10, /* everything's working... */
FE_TIMEDOUT = 0x20, /* no lock within the last ~2 seconds */
FE_REINIT = 0x40 /* frontend was reinitialized, */
} fe_status_t;
struct dvb_qpsk_parameters {
UInt32 symbol_rate; /* symbol rate in Symbols per second */
fe_code_rate_t fec_inner; /* forward error correction (see above) */
};
struct dvb_frontend_parameters {
UInt32 frequency; /* (absolute) frequency in Hz for QAM/OFDM/ATSC */
/* intermediate frequency in kHz for QPSK */
fe_spectral_inversion_t inversion;
UInt32 symbol_rate; /* symbol rate in Symbols per second */
fe_code_rate_t fec_inner; /* forward error correction (see above) */
fe_sec_voltage_t voltage;
};
struct stv0299_regs_val {
UInt8 id;
UInt8 rcr;
UInt8 mcr;
UInt8 acr;
UInt8 f22fr;
UInt8 crpt;
UInt8 dacr1;
UInt8 dacr2;
UInt8 diseqc;
UInt8 diseqcfifo;
UInt8 disceqcstatus;
UInt8 res1;
UInt8 iocfg;
UInt8 agc1c;
UInt8 rtc;
UInt8 agc1r;
UInt8 agc2o;
UInt8 tlsr;
UInt8 cfd;
UInt8 aclc;
UInt8 bclc;
UInt8 cldt;
UInt8 agc1l;
UInt8 tl1r;
UInt8 agc2i1;
UInt8 agc2i2;
UInt8 rtf;
UInt8 vstatus;
UInt8 cldi;
UInt8 ecnth;
UInt8 ecntl;
UInt8 sfrh;
UInt8 sfrm;
UInt8 sfrl;
UInt8 cfrm;
UInt8 cfrl;
UInt8 nirh;
UInt8 nirl;
UInt8 verror;
UInt8 res2;
UInt8 fecm;
UInt8 vth0;
UInt8 vth1;
UInt8 vth2;
UInt8 vth3;
UInt8 vth4;
UInt8 res3;
UInt8 res4;
UInt8 res5;
UInt8 pr;
UInt8 vsearch;
UInt8 rs;
UInt8 errcnt;
};
struct stv0299_regs_val_a {
// UInt8 id;
// UInt8 rcr;
// UInt8 mcr;
// UInt8 acr;
// UInt8 f22fr;
// UInt8 crpt;
// UInt8 dacr1;
// UInt8 dacr2;
// UInt8 diseqc;
// UInt8 diseqcfifo;
// UInt8 disceqcstatus;
// UInt8 res1;
// UInt8 iocfg;
// UInt8 agc1c;
// UInt8 rtc;
// UInt8 agc1r;
// UInt8 agc2o;
// UInt8 tlsr;
// UInt8 cfd;
// UInt8 aclc;
// UInt8 bclc;
// UInt8 cldt;
UInt8 agc1l;
UInt8 tl1r;
UInt8 agc2i1;
UInt8 agc2i2;
UInt8 rtf;
UInt8 vstatus;
UInt8 cldi;
UInt8 ecnth;
UInt8 ecntl;
UInt8 sfrh;
UInt8 sfrm;
UInt8 sfrl;
UInt8 cfrm;
UInt8 cfrl;
UInt8 nirh;
UInt8 nirl;
UInt8 verror;
// UInt8 res2;
// UInt8 fecm;
// UInt8 vth0;
// UInt8 vth1;
// UInt8 vth2;
// UInt8 vth3;
// UInt8 vth4;
// UInt8 res3;
// UInt8 res4;
// UInt8 res5;
// UInt8 pr;
// UInt8 vsearch;
// UInt8 rs;
// UInt8 errcnt;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -