DVB network grid: add 'Force Scan' functionality
This commit is contained in:
parent
d9f4230881
commit
f48e390437
4 changed files with 84 additions and 1 deletions
|
@ -136,6 +136,44 @@ api_mpegts_network_create
|
|||
return err;
|
||||
}
|
||||
|
||||
static int
|
||||
api_mpegts_network_scan
|
||||
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
|
||||
{
|
||||
htsmsg_field_t *f;
|
||||
htsmsg_t *uuids;
|
||||
mpegts_network_t *mn;
|
||||
const char *uuid;
|
||||
|
||||
if (!(f = htsmsg_field_find(args, "uuid")))
|
||||
return -EINVAL;
|
||||
if ((uuids = htsmsg_field_get_list(f))) {
|
||||
HTSMSG_FOREACH(f, uuids) {
|
||||
if (!(uuid = htsmsg_field_get_str(f))) continue;
|
||||
mn = mpegts_network_find(uuid);
|
||||
if (mn) {
|
||||
pthread_mutex_lock(&global_lock);
|
||||
mpegts_network_scan(mn);
|
||||
pthread_mutex_unlock(&global_lock);
|
||||
}
|
||||
}
|
||||
} else if ((uuid = htsmsg_field_get_str(f))) {
|
||||
printf("STR: '%s'\n", uuid);
|
||||
mn = mpegts_network_find(uuid);
|
||||
if (mn) {
|
||||
pthread_mutex_lock(&global_lock);
|
||||
mpegts_network_scan(mn);
|
||||
pthread_mutex_unlock(&global_lock);
|
||||
}
|
||||
else
|
||||
return -ENOENT;
|
||||
} else {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
api_mpegts_network_muxclass
|
||||
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
|
||||
|
@ -356,6 +394,7 @@ api_mpegts_init ( void )
|
|||
{ "mpegts/network/create", ACCESS_ADMIN, api_mpegts_network_create, NULL },
|
||||
{ "mpegts/network/mux_class", ACCESS_ADMIN, api_mpegts_network_muxclass, NULL },
|
||||
{ "mpegts/network/mux_create", ACCESS_ADMIN, api_mpegts_network_muxcreate, NULL },
|
||||
{ "mpegts/network/scan", ACCESS_ADMIN, api_mpegts_network_scan, NULL },
|
||||
{ "mpegts/mux/grid", ACCESS_ADMIN, api_idnode_grid, api_mpegts_mux_grid },
|
||||
{ "mpegts/mux/class", ACCESS_ADMIN, api_idnode_class, (void*)&mpegts_mux_class },
|
||||
{ "mpegts/service/grid", ACCESS_ADMIN, api_idnode_grid, api_mpegts_service_grid },
|
||||
|
|
|
@ -726,6 +726,7 @@ void mpegts_network_delete ( mpegts_network_t *mn, int delconf );
|
|||
|
||||
int mpegts_network_set_nid ( mpegts_network_t *mn, uint16_t nid );
|
||||
int mpegts_network_set_network_name ( mpegts_network_t *mn, const char *name );
|
||||
void mpegts_network_scan ( mpegts_network_t *mn );
|
||||
|
||||
mpegts_mux_t *mpegts_mux_create0
|
||||
( mpegts_mux_t *mm, const idclass_t *class, const char *uuid,
|
||||
|
|
|
@ -401,6 +401,14 @@ mpegts_network_set_network_name
|
|||
return 1;
|
||||
}
|
||||
|
||||
void
|
||||
mpegts_network_scan ( mpegts_network_t *mn )
|
||||
{
|
||||
mpegts_mux_t *mm;
|
||||
LIST_FOREACH(mm, &mn->mn_muxes, mm_network_link)
|
||||
mpegts_mux_scan_state_set(mm, MM_SCAN_STATE_PEND);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* Network classes/creation
|
||||
*****************************************************************************/
|
||||
|
|
|
@ -27,6 +27,39 @@ tvheadend.networks = function(panel, index)
|
|||
});
|
||||
}
|
||||
|
||||
var scanButton = {
|
||||
name: 'scan',
|
||||
builder: function() {
|
||||
return new Ext.Toolbar.Button({
|
||||
tooltip: 'Force new scan (all muxes) for selected networks',
|
||||
iconCls: 'find',
|
||||
text: 'Force Scan',
|
||||
disabled: true
|
||||
});
|
||||
},
|
||||
callback: function(conf, e, store, select) {
|
||||
var r = select.getSelections();
|
||||
if (r && r.length > 0) {
|
||||
var uuids = [];
|
||||
for (var i = 0; i < r.length; i++)
|
||||
uuids.push(r[i].id);
|
||||
tvheadend.Ajax({
|
||||
url: 'api/mpegts/network/scan',
|
||||
params: {
|
||||
uuid: Ext.encode(uuids)
|
||||
},
|
||||
success: function(d) {
|
||||
store.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function selected(s, abuttons) {
|
||||
abuttons.scan.setDisabled(!s || s.length <= 0);
|
||||
}
|
||||
|
||||
tvheadend.idnode_grid(panel, {
|
||||
url: 'api/mpegts/network',
|
||||
titleS: 'Network',
|
||||
|
@ -35,7 +68,8 @@ tvheadend.networks = function(panel, index)
|
|||
tabIndex: index,
|
||||
help: function() {
|
||||
new tvheadend.help('Networks', 'config_networks.html');
|
||||
},
|
||||
},
|
||||
tbar: [scanButton],
|
||||
add: {
|
||||
titleS: 'Network',
|
||||
select: {
|
||||
|
@ -50,6 +84,7 @@ tvheadend.networks = function(panel, index)
|
|||
}
|
||||
},
|
||||
del: true,
|
||||
selected: selected,
|
||||
sort: {
|
||||
field: 'networkname',
|
||||
direction: 'ASC'
|
||||
|
|
Loading…
Add table
Reference in a new issue