lock_assert(&global_lock);
+ htsmsg_add_u32(m, "enabled", tda->tda_enabled);
htsmsg_add_str(m, "type", dvb_adaptertype_to_str(tda->tda_type));
htsmsg_add_str(m, "displayname", tda->tda_displayname);
htsmsg_add_u32(m, "autodiscovery", tda->tda_autodiscovery);
}
+/**
+ *
+ */
+void
+dvb_adapter_set_enabled(th_dvb_adapter_t *tda, uint32_t enabled)
+{
+ if(tda->tda_enabled == enabled)
+ return;
+
+ lock_assert(&global_lock);
+
+ tvhlog(LOG_NOTICE, "dvb", "Adapter \"%s\" enabled set to \"%s\"",
+ tda->tda_displayname, enabled ? "Enabled" : "Disabled");
+
+ tda->tda_enabled = enabled;
+ tda_save(tda);
+}
+
+
/**
*
*/
tda->tda_fe_fd = -1;
tda->tda_dvr_pipe.rd = -1;
tda->tda_full_mux_rx = -1;
+ tda->tda_enabled = 0;
tda->tda_fe_info = malloc(sizeof(struct dvb_frontend_info));
free(tda);
return;
}
- tda->tda_fe_fd = fe;
+
+ close(fe);
+ fe = -1;
tda->tda_type = tda->tda_fe_info->type;
tda->tda_fe_fd = -1;
tda->tda_dvr_pipe.rd = -1;
+ tda->tda_enabled = 1;
+
tda->tda_type = -1;
snprintf(buf, sizeof(buf), "%s", filename);
void
dvb_adapter_start ( th_dvb_adapter_t *tda )
{
+ if(tda->tda_enabled == 0) {
+ tvhlog(LOG_INFO, "dvb", "Adapter \"%s\" cannot be started - it's disabled", tda->tda_displayname);
+ return;
+ }
+
/* Open front end */
if (tda->tda_fe_fd == -1) {
tda->tda_fe_fd = tvh_open(tda->tda_fe_path, O_RDWR | O_NONBLOCK, 0);
htsmsg_t *l, *c;
htsmsg_field_t *f;
const char *name, *s;
- int i, type;
+ int i, j, type;
uint32_t u32;
th_dvb_adapter_t *tda;
/* Initialise hardware */
for(i = 0; i < 32; i++)
if ((1 << i) & adapter_mask)
- tda_add(i, 0, 0);
+ for(j = 0; j < 32; j++)
+ tda_add(i, j, 0);
/* Initialise rawts test file */
if(rawfile)
tda = tda_alloc();
tda->tda_identifier = strdup(f->hmf_name);
tda->tda_type = type;
+ tda->tda_enabled = 0;
TAILQ_INSERT_TAIL(&dvb_adapters, tda, tda_global_link);
} else {
if(type != tda->tda_type)
free(tda->tda_displayname);
tda->tda_displayname = strdup(name);
+ htsmsg_get_u32(c, "enabled", &tda->tda_enabled);
htsmsg_get_u32(c, "autodiscovery", &tda->tda_autodiscovery);
htsmsg_get_u32(c, "idlescan", &tda->tda_idlescan);
htsmsg_get_u32(c, "idleclose", &tda->tda_idleclose);