Display SNR (in dB) in status tab
But only for adapters we know that support it
This commit is contained in:
parent
44dd4042a9
commit
e16707bef7
4 changed files with 34 additions and 8 deletions
|
@ -97,9 +97,10 @@ typedef struct th_dvb_mux_instance {
|
|||
|
||||
struct th_dvb_adapter *tdmi_adapter;
|
||||
|
||||
uint16_t tdmi_snr, tdmi_signal;
|
||||
uint16_t tdmi_signal;
|
||||
uint32_t tdmi_ber, tdmi_unc;
|
||||
float tdmi_unc_avg;
|
||||
float tdmi_snr;
|
||||
|
||||
#define TDMI_FEC_ERR_HISTOGRAM_SIZE 10
|
||||
uint32_t tdmi_fec_err_histogram[TDMI_FEC_ERR_HISTOGRAM_SIZE];
|
||||
|
@ -219,6 +220,7 @@ typedef struct th_dvb_adapter {
|
|||
char *tda_fe_path;
|
||||
int tda_fe_fd;
|
||||
int tda_type;
|
||||
int tda_snr_valid;
|
||||
struct dvb_frontend_info *tda_fe_info;
|
||||
|
||||
int tda_adapter_num;
|
||||
|
|
|
@ -510,9 +510,14 @@ tda_add(int adapter_num)
|
|||
|
||||
dvb_adapter_checkspeed(tda);
|
||||
|
||||
|
||||
if(!strcmp(tda->tda_fe_info->name, "Sony CXD2820R (DVB-T/T2)"))
|
||||
tda->tda_snr_valid = 1;
|
||||
|
||||
tvhlog(LOG_INFO, "dvb",
|
||||
"Found adapter %s (%s) via %s", path, tda->tda_fe_info->name,
|
||||
hostconnection2str(tda->tda_hostconnection));
|
||||
"Found adapter %s (%s) via %s%s", path, tda->tda_fe_info->name,
|
||||
hostconnection2str(tda->tda_hostconnection),
|
||||
tda->tda_snr_valid ? ", Reports valid SNR values" : "");
|
||||
|
||||
TAILQ_INSERT_TAIL(&dvb_adapters, tda, tda_global_link);
|
||||
|
||||
|
|
|
@ -182,9 +182,14 @@ dvb_fe_monitor(void *aux)
|
|||
}
|
||||
|
||||
/* signal/noise ratio */
|
||||
if(ioctl(tda->tda_fe_fd, FE_READ_SNR, &v) == -1 && v != tdmi->tdmi_snr) {
|
||||
tdmi->tdmi_snr = v;
|
||||
notify = 1;
|
||||
if(tda->tda_snr_valid) {
|
||||
if(ioctl(tda->tda_fe_fd, FE_READ_SNR, &v) != -1) {
|
||||
float snr = v / 10.0;
|
||||
if(tdmi->tdmi_snr != snr) {
|
||||
tdmi->tdmi_snr = snr;
|
||||
notify = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -218,7 +223,9 @@ dvb_fe_monitor(void *aux)
|
|||
htsmsg_add_str(m, "id", tdmi->tdmi_identifier);
|
||||
htsmsg_add_u32(m, "quality", tdmi->tdmi_quality);
|
||||
htsmsg_add_u32(m, "signal", tdmi->tdmi_signal);
|
||||
htsmsg_add_u32(m, "snr", tdmi->tdmi_snr);
|
||||
|
||||
if(tda->tda_snr_valid)
|
||||
htsmsg_add_dbl(m, "snr", tdmi->tdmi_snr);
|
||||
htsmsg_add_u32(m, "ber", tdmi->tdmi_ber);
|
||||
htsmsg_add_u32(m, "unc", tdmi->tdmi_unc);
|
||||
notify_by_msg("dvbMux", m);
|
||||
|
@ -226,7 +233,8 @@ dvb_fe_monitor(void *aux)
|
|||
m = htsmsg_create_map();
|
||||
htsmsg_add_str(m, "identifier", tda->tda_identifier);
|
||||
htsmsg_add_u32(m, "signal", MIN(tdmi->tdmi_signal * 100 / 65535, 100));
|
||||
htsmsg_add_u32(m, "snr", tdmi->tdmi_snr);
|
||||
if(tda->tda_snr_valid)
|
||||
htsmsg_add_dbl(m, "snr", tdmi->tdmi_snr);
|
||||
htsmsg_add_u32(m, "ber", tdmi->tdmi_ber);
|
||||
htsmsg_add_u32(m, "unc", tdmi->tdmi_unc);
|
||||
htsmsg_add_dbl(m, "uncavg", tdmi->tdmi_unc_avg);
|
||||
|
|
|
@ -168,6 +168,17 @@ tvheadend.status_adapters = function() {
|
|||
width : 50,
|
||||
header : "Uncorrected bit error rate",
|
||||
dataIndex : 'uncavg'
|
||||
},{
|
||||
width : 50,
|
||||
header : "SNR",
|
||||
dataIndex : 'snr',
|
||||
renderer: function(value) {
|
||||
if(value > 0) {
|
||||
return value.toFixed(1) + " dB";
|
||||
} else {
|
||||
return '<span class="tvh-grid-unset">Unknown</span>';
|
||||
}
|
||||
}
|
||||
}, signal]);
|
||||
|
||||
var panel = new Ext.grid.GridPanel({
|
||||
|
|
Loading…
Add table
Reference in a new issue