uint32_t tda_diseqc_version;
uint32_t tda_diseqc_repeats;
uint32_t tda_disable_pmt_monitor;
- uint32_t tda_disable_full_mux_rx;
+ int32_t tda_full_mux_rx;
char *tda_displayname;
char *tda_fe_path;
void dvb_adapter_set_disable_pmt_monitor(th_dvb_adapter_t *tda, int on);
-void dvb_adapter_set_disable_full_mux_rx(th_dvb_adapter_t *tda, int on);
+void dvb_adapter_set_full_mux_rx(th_dvb_adapter_t *tda, int r);
void dvb_adapter_clone(th_dvb_adapter_t *dst, th_dvb_adapter_t *src);
htsmsg_add_u32(m, "extrapriority", tda->tda_extrapriority);
htsmsg_add_u32(m, "skip_initialscan", tda->tda_skip_initialscan);
htsmsg_add_u32(m, "disable_pmt_monitor", tda->tda_disable_pmt_monitor);
- htsmsg_add_u32(m, "disable_full_mux_rx", tda->tda_disable_full_mux_rx);
+ htsmsg_add_s32(m, "full_mux_rx", tda->tda_full_mux_rx);
hts_settings_save(m, "dvbadapters/%s", tda->tda_identifier);
htsmsg_destroy(m);
}
*
*/
void
-dvb_adapter_set_disable_full_mux_rx(th_dvb_adapter_t *tda, int on)
+dvb_adapter_set_full_mux_rx(th_dvb_adapter_t *tda, int on)
{
- if(tda->tda_disable_full_mux_rx == on)
+ const char* label[] = { "Auto", "Off", "On" };
+
+ if (on < -1) on = -1;
+ if (on > 1) on = 1;
+
+ if(tda->tda_full_mux_rx == on)
return;
lock_assert(&global_lock);
- tvhlog(LOG_NOTICE, "dvb", "Adapter \"%s\" disabled full MUX receive set to: %s",
- tda->tda_displayname, on ? "On" : "Off");
+ tvhlog(LOG_NOTICE, "dvb",
+ "Adapter \"%s\" disabled full MUX receive set to: %s",
+ tda->tda_displayname, label[on+1]);
- tda->tda_disable_full_mux_rx = on;
+ tda->tda_full_mux_rx = on;
tda_save(tda);
}
struct dmx_pes_filter_params dmx_param;
int r;
- if(tda->tda_disable_full_mux_rx)
- return 0;
+ if(tda->tda_full_mux_rx != -1)
+ return tda->tda_full_mux_rx;
if(tda->tda_hostconnection == HOSTCONNECTION_USB12)
return 0; // Don't even bother, device <-> host interface is too slow
+ if(tda->tda_hostconnection == HOSTCONNECTION_USB480)
+ return 0; // USB in general appears to have CPU loading issues?
+
int fd = tvh_open(tda->tda_demux_path, O_RDWR, 0);
if(fd == -1)
return 0;
tda->tda_fe_path = strdup(fname);
tda->tda_fe_fd = -1;
tda->tda_dvr_pipe[0] = -1;
+ tda->tda_full_mux_rx = -1;
tda->tda_fe_info = malloc(sizeof(struct dvb_frontend_info));
tda->tda_idlescan = 0;
tda->tda_sat = 0;
+
+ tda->tda_full_mux_rx = 1;
/* Come up with an initial displayname, user can change it and it will
be overridden by any stored settings later on */
htsmsg_field_t *f;
const char *name, *s;
int i, type;
+ uint32_t u32;
th_dvb_adapter_t *tda;
TAILQ_INIT(&dvb_adapters);
htsmsg_get_u32(c, "extrapriority", &tda->tda_extrapriority);
htsmsg_get_u32(c, "skip_initialscan", &tda->tda_skip_initialscan);
htsmsg_get_u32(c, "disable_pmt_monitor", &tda->tda_disable_pmt_monitor);
- htsmsg_get_u32(c, "disable_full_mux_rx", &tda->tda_disable_full_mux_rx);
+ if (htsmsg_get_s32(c, "full_mux_rx", &tda->tda_full_mux_rx))
+ if (!htsmsg_get_u32(c, "disable_full_mux_rx", &u32) && u32)
+ tda->tda_full_mux_rx = 0;
}
htsmsg_destroy(l);
}
htsmsg_add_u32(r, "sidtochan", tda->tda_sidtochan);
htsmsg_add_u32(r, "nitoid", tda->tda_nitoid);
htsmsg_add_u32(r, "disable_pmt_monitor", tda->tda_disable_pmt_monitor);
- htsmsg_add_u32(r, "disable_full_mux_rx", tda->tda_disable_full_mux_rx);
+ htsmsg_add_u32(r, "full_mux_rx", tda->tda_full_mux_rx+1);
htsmsg_add_str(r, "diseqcversion",
((const char *[]){"DiSEqC 1.0 / 2.0",
"DiSEqC 1.1 / 2.1"})
s = http_arg_get(&hc->hc_req_args, "disable_pmt_monitor");
dvb_adapter_set_disable_pmt_monitor(tda, !!s);
- s = http_arg_get(&hc->hc_req_args, "disable_full_mux_rx");
- dvb_adapter_set_disable_full_mux_rx(tda, !!s);
+ s = http_arg_get(&hc->hc_req_args, "full_mux_rx");
+ dvb_adapter_set_full_mux_rx(tda, atoi(s)-1);
if((s = http_arg_get(&hc->hc_req_args, "nitoid")) != NULL)
dvb_adapter_set_nitoid(tda, atoi(s));
}, [ 'name', 'automux', 'skip_initialscan', 'idlescan', 'diseqcversion',
'diseqcrepeats', 'qmon', 'skip_checksubscr',
'poweroff', 'sidtochan', 'nitoid', 'extrapriority',
- ,'disable_pmt_monitor', 'disable_full_mux_rx', 'idleclose' ]);
+ ,'disable_pmt_monitor', 'full_mux_rx', 'idleclose' ]);
function saveConfForm() {
confform.getForm().submit({
fieldLabel : 'Monitor signal quality',
name : 'qmon'
}),
- new Ext.form.Checkbox({
- fieldLabel : 'Disable full MUX reception',
- name : 'disable_full_mux_rx'
+ new Ext.form.ComboBox({
+ fieldLabel : 'Full mux reception',
+ name : 'full_mux_rx',
+ hiddenName: 'full_mux_rx',
+ displayField: 'num',
+ valueField: 'str',
+ editable : false,
+ allowBlank : false,
+ mode : 'remote',
+ triggerAction : 'all',
+ fields: [ 'num', 'str' ],
+ store : [ [0, 'Auto'], [1, 'Off'], [2, 'On'] ]
}),
new Ext.form.Checkbox({
fieldLabel : 'Disable PMT monitoring',