Merge remote-tracking branch 'origin/pr/206'
This commit is contained in:
commit
f1e4c480ec
4 changed files with 52 additions and 7 deletions
|
@ -200,6 +200,8 @@ typedef struct th_dvb_adapter {
|
|||
|
||||
int tda_table_epollfd;
|
||||
|
||||
uint32_t tda_enabled;
|
||||
|
||||
const char *tda_rootpath;
|
||||
char *tda_identifier;
|
||||
uint32_t tda_autodiscovery;
|
||||
|
@ -342,6 +344,8 @@ void dvb_adapter_stop (th_dvb_adapter_t *tda);
|
|||
|
||||
void dvb_adapter_set_displayname(th_dvb_adapter_t *tda, const char *s);
|
||||
|
||||
void dvb_adapter_set_enabled(th_dvb_adapter_t *tda, uint32_t enabled);
|
||||
|
||||
void dvb_adapter_set_auto_discovery(th_dvb_adapter_t *tda, int on);
|
||||
|
||||
void dvb_adapter_set_skip_initialscan(th_dvb_adapter_t *tda, int on);
|
||||
|
|
|
@ -80,6 +80,7 @@ tda_save(th_dvb_adapter_t *tda)
|
|||
|
||||
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);
|
||||
|
@ -124,6 +125,25 @@ dvb_adapter_set_displayname(th_dvb_adapter_t *tda, const char *s)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
@ -445,7 +465,7 @@ check_full_stream(th_dvb_adapter_t *tda)
|
|||
*
|
||||
*/
|
||||
static void
|
||||
tda_add(int adapter_num)
|
||||
tda_add(int adapter_num, int frontend_num, int demux_num)
|
||||
{
|
||||
char path[200], fname[256];
|
||||
int fe, i, r;
|
||||
|
@ -453,7 +473,7 @@ tda_add(int adapter_num)
|
|||
char buf[400];
|
||||
|
||||
snprintf(path, sizeof(path), "/dev/dvb/adapter%d", adapter_num);
|
||||
snprintf(fname, sizeof(fname), "%s/frontend0", path);
|
||||
snprintf(fname, sizeof(fname), "%s/frontend%d", path, frontend_num);
|
||||
|
||||
fe = tvh_open(fname, O_RDWR | O_NONBLOCK, 0);
|
||||
if(fe == -1) {
|
||||
|
@ -468,11 +488,12 @@ tda_add(int adapter_num)
|
|||
tda->tda_adapter_num = adapter_num;
|
||||
tda->tda_rootpath = strdup(path);
|
||||
tda->tda_demux_path = malloc(256);
|
||||
snprintf(tda->tda_demux_path, 256, "%s/demux0", path);
|
||||
snprintf(tda->tda_demux_path, 256, "%s/demux%d", path, demux_num);
|
||||
tda->tda_fe_path = strdup(fname);
|
||||
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));
|
||||
|
||||
|
@ -482,7 +503,9 @@ tda_add(int adapter_num)
|
|||
free(tda);
|
||||
return;
|
||||
}
|
||||
tda->tda_fe_fd = fe;
|
||||
|
||||
close(fe);
|
||||
fe = -1;
|
||||
|
||||
tda->tda_type = tda->tda_fe_info->type;
|
||||
|
||||
|
@ -540,6 +563,8 @@ tda_add_from_file(const char *filename)
|
|||
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);
|
||||
|
@ -588,6 +613,11 @@ static void tda_init_input (th_dvb_adapter_t *tda)
|
|||
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);
|
||||
|
@ -642,7 +672,7 @@ dvb_adapter_init(uint32_t adapter_mask, const char *rawfile)
|
|||
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;
|
||||
|
||||
|
@ -651,7 +681,8 @@ dvb_adapter_init(uint32_t adapter_mask, const char *rawfile)
|
|||
/* Initialise hardware */
|
||||
for(i = 0; i < 32; i++)
|
||||
if ((1 << i) & adapter_mask)
|
||||
tda_add(i);
|
||||
for(j = 0; j < 32; j++)
|
||||
tda_add(i, j, 0);
|
||||
|
||||
/* Initialise rawts test file */
|
||||
if(rawfile)
|
||||
|
@ -675,6 +706,7 @@ dvb_adapter_init(uint32_t adapter_mask, const char *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)
|
||||
|
@ -684,6 +716,7 @@ dvb_adapter_init(uint32_t adapter_mask, const char *rawfile)
|
|||
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);
|
||||
|
|
|
@ -145,6 +145,7 @@ extjs_dvbadapter(http_connection_t *hc, const char *remain, void *opaque)
|
|||
if(!strcmp(op, "load")) {
|
||||
r = htsmsg_create_map();
|
||||
htsmsg_add_str(r, "id", tda->tda_identifier);
|
||||
htsmsg_add_u32(r, "enabled", tda->tda_enabled);
|
||||
htsmsg_add_str(r, "device", tda->tda_rootpath ?: "No hardware attached");
|
||||
htsmsg_add_str(r, "name", tda->tda_displayname);
|
||||
htsmsg_add_u32(r, "automux", tda->tda_autodiscovery);
|
||||
|
@ -173,6 +174,9 @@ extjs_dvbadapter(http_connection_t *hc, const char *remain, void *opaque)
|
|||
if((s = http_arg_get(&hc->hc_req_args, "name")) != NULL)
|
||||
dvb_adapter_set_displayname(tda, s);
|
||||
|
||||
s = http_arg_get(&hc->hc_req_args, "enabled");
|
||||
dvb_adapter_set_enabled(tda, !!s);
|
||||
|
||||
s = http_arg_get(&hc->hc_req_args, "automux");
|
||||
dvb_adapter_set_auto_discovery(tda, !!s);
|
||||
|
||||
|
|
|
@ -1095,7 +1095,7 @@ tvheadend.dvb_adapter_general = function(adapterData, satConfStore) {
|
|||
|
||||
var confreader = new Ext.data.JsonReader({
|
||||
root : 'dvbadapters'
|
||||
}, [ 'name', 'automux', 'skip_initialscan', 'idlescan', 'diseqcversion',
|
||||
}, [ 'name', 'enabled', 'automux', 'skip_initialscan', 'idlescan', 'diseqcversion',
|
||||
'diseqcrepeats', 'qmon', 'skip_checksubscr',
|
||||
'poweroff', 'sidtochan', 'nitoid', 'extrapriority',
|
||||
,'disable_pmt_monitor', 'full_mux_rx', 'idleclose' ]);
|
||||
|
@ -1116,6 +1116,10 @@ tvheadend.dvb_adapter_general = function(adapterData, satConfStore) {
|
|||
name : 'name',
|
||||
width : 250
|
||||
},
|
||||
new Ext.form.Checkbox({
|
||||
fieldLabel : 'Enabled',
|
||||
name : 'enabled'
|
||||
}),
|
||||
new Ext.form.Checkbox({
|
||||
fieldLabel : 'Autodetect muxes',
|
||||
name : 'automux'
|
||||
|
|
Loading…
Add table
Reference in a new issue