// SPDX-License-Identifier: GPL-2.0 /* * The Virtual DTV test driver serves as a reference DVB driver and helps * validate the existing APIs in the media subsystem. It can also aid * developers working on userspace applications. * * When this module is loaded, it will attempt to modprobe 'dvb_vidtv_tuner' * and 'dvb_vidtv_demod'. * * Copyright (C) 2020 Daniel W. S. Almeida
*/
/* * The LNBf fake parameters here are the ranges used by an * Universal (extended) European LNBf, which is likely the most common LNBf * found on Satellite digital TV system nowadays.
*/ #define LNB_CUT_FREQUENCY 11700000 /* high IF frequency */ #define LNB_LOW_FREQ 9750000 /* low IF frequency */ #define LNB_HIGH_FREQ 10600000 /* transition frequency */
staticunsignedint drop_tslock_prob_on_low_snr;
module_param(drop_tslock_prob_on_low_snr, uint, 0444);
MODULE_PARM_DESC(drop_tslock_prob_on_low_snr, "Probability of losing the TS lock if the signal quality is bad");
staticunsignedint recover_tslock_prob_on_good_snr;
module_param(recover_tslock_prob_on_good_snr, uint, 0444);
MODULE_PARM_DESC(recover_tslock_prob_on_good_snr, "Probability recovering the TS lock when the signal improves");
staticunsignedint mock_power_up_delay_msec;
module_param(mock_power_up_delay_msec, uint, 0444);
MODULE_PARM_DESC(mock_power_up_delay_msec, "Simulate a power up delay");
staticunsignedint mock_tune_delay_msec;
module_param(mock_tune_delay_msec, uint, 0444);
MODULE_PARM_DESC(mock_tune_delay_msec, "Simulate a tune delay");
module_param_array(vidtv_valid_dvb_c_freqs, uint, NULL, 0444);
MODULE_PARM_DESC(vidtv_valid_dvb_c_freqs, "Valid DVB-C frequencies to simulate, in Hz");
staticunsignedint vidtv_valid_dvb_s_freqs[NUM_VALID_TUNER_FREQS] = {
11362000
};
module_param_array(vidtv_valid_dvb_s_freqs, uint, NULL, 0444);
MODULE_PARM_DESC(vidtv_valid_dvb_s_freqs, "Valid DVB-S/S2 frequencies to simulate at Ku-Band, in kHz");
staticunsignedint max_frequency_shift_hz;
module_param(max_frequency_shift_hz, uint, 0444);
MODULE_PARM_DESC(max_frequency_shift_hz, "Maximum shift in HZ allowed when tuning in a channel");
DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nums);
/* * Influences the signal acquisition time. See ISO/IEC 13818-1 : 2000. p. 113.
*/ staticunsignedint si_period_msec = 40;
module_param(si_period_msec, uint, 0444);
MODULE_PARM_DESC(si_period_msec, "How often to send SI packets. Default: 40ms");
staticunsignedint pcr_period_msec = 40;
module_param(pcr_period_msec, uint, 0444);
MODULE_PARM_DESC(pcr_period_msec, "How often to send PCR packets. Default: 40ms");
staticunsignedint mux_rate_kbytes_sec = 4096;
module_param(mux_rate_kbytes_sec, uint, 0444);
MODULE_PARM_DESC(mux_rate_kbytes_sec, "Mux rate: will pad stream if below");
staticunsignedint pcr_pid = 0x200;
module_param(pcr_pid, uint, 0444);
MODULE_PARM_DESC(pcr_pid, "PCR PID for all channels: defaults to 0x200");
staticunsignedint mux_buf_sz_pkts;
module_param(mux_buf_sz_pkts, uint, 0444);
MODULE_PARM_DESC(mux_buf_sz_pkts, "Size for the internal mux buffer in multiples of 188 bytes");
/* * called on a separate thread by the mux when new packets become available
*/ staticvoid vidtv_bridge_on_new_pkts_avail(void *priv, u8 *buf, u32 npkts)
{ struct vidtv_dvb *dvb = priv;
/* drop packets if we lose the lock */ if (vidtv_bridge_check_demod_lock(dvb, 0))
dvb_dmx_swfilter_packets(&dvb->demux, buf, npkts);
}
/* the demod will set this when its probe function runs */ return &state->frontend;
}
staticint vidtv_master_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg msgs[], int num)
{ /* * Right now, this virtual driver doesn't really send or receive * messages from I2C. A real driver will require an implementation * here.
*/ return 0;
}
for (i = 0; i < NUM_FE; ++i) {
dvb_unregister_frontend(dvb->fe[i]);
dvb_module_release(dvb->i2c_client_tuner[i]);
dvb_module_release(dvb->i2c_client_demod[i]);
}
MODULE_DESCRIPTION("Virtual Digital TV Test Driver");
MODULE_AUTHOR("Daniel W. S. Almeida");
MODULE_LICENSE("GPL");
MODULE_ALIAS("vidtv");
MODULE_ALIAS("dvb_vidtv");
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.