Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
DVB network grid: add 'Force Scan' functionality
  • Loading branch information
perexg committed Jan 14, 2015
1 parent d9f4230 commit f48e390
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 1 deletion.
39 changes: 39 additions & 0 deletions src/api/api_mpegts.c
Expand Up @@ -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 )
Expand Down Expand Up @@ -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 },
Expand Down
1 change: 1 addition & 0 deletions src/input/mpegts.h
Expand Up @@ -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,
Expand Down
8 changes: 8 additions & 0 deletions src/input/mpegts/mpegts_network.c
Expand Up @@ -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
*****************************************************************************/
Expand Down
37 changes: 36 additions & 1 deletion src/webui/static/app/mpegts.js
Expand Up @@ -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',
Expand All @@ -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: {
Expand All @@ -50,6 +84,7 @@ tvheadend.networks = function(panel, index)
}
},
del: true,
selected: selected,
sort: {
field: 'networkname',
direction: 'ASC'
Expand Down

0 comments on commit f48e390

Please sign in to comment.