mpegts linuxdvb: use new class lookup for satconf network lookup

This commit is contained in:
Adam Sutton 2013-08-07 21:54:13 +01:00
parent 2e13f5db01
commit b96c432f69
4 changed files with 46 additions and 17 deletions

View file

@ -73,21 +73,16 @@ linuxdvb_satconf_class_network_set(void *o, const void *v)
static htsmsg_t *
linuxdvb_satconf_class_network_enum(void *o)
{
extern const idclass_t linuxdvb_network_class;
int i;
linuxdvb_network_t *ln;
htsmsg_t *m = htsmsg_create_list();
idnode_set_t *is = idnode_find_all(&linuxdvb_network_class);
for (i = 0; i < is->is_count; i++) {
ln = (linuxdvb_network_t*)is->is_array[i];
if (ln->ln_type == FE_QPSK) {
htsmsg_t *e = htsmsg_create_map();
htsmsg_add_str(e, "key", idnode_uuid_as_str(&ln->mn_id));
htsmsg_add_str(e, "val", ln->mn_network_name);
htsmsg_add_msg(m, NULL, e);
}
}
idnode_set_free(is);
extern const idclass_t linuxdvb_network_dvbs_class;
htsmsg_t *m = htsmsg_create_map();
htsmsg_t *p = htsmsg_create_map();
htsmsg_add_str(m, "type", "api");
htsmsg_add_str(m, "uri", "idnode");
htsmsg_add_str(m, "event", "mpegts_network");
htsmsg_add_str(p, "op", "list");
htsmsg_add_str(p, "class", linuxdvb_network_dvbs_class.ic_class);
htsmsg_add_msg(m, "params", p);
return m;
}

View file

@ -33,6 +33,17 @@ mpegts_network_class_save
mn->mn_config_save(mn);
}
static const char *
mpegts_network_class_get_title ( idnode_t *in )
{
static char buf[256];
mpegts_network_t *mn = (mpegts_network_t*)in;
*buf = 0;
if (mn->mn_display_name)
mn->mn_display_name(mn, buf, sizeof(buf));
return buf;
}
static const void *
mpegts_network_class_get_num_mux ( void *ptr )
{
@ -85,6 +96,7 @@ const idclass_t mpegts_network_class =
.ic_caption = "MPEGTS Network",
.ic_save = mpegts_network_class_save,
.ic_event = "mpegts_network",
.ic_get_title = mpegts_network_class_get_title,
.ic_properties = (const property_t[]){
{
.type = PT_STR,

View file

@ -1981,6 +1981,28 @@ extjs_idnode0
}
}
out = htsmsg_create_map();
/* List by class */
} else if (!strcmp(op, "list")) {
int i;
const char *cls = http_arg_get(&hc->hc_req_args, "class");
pthread_mutex_lock(&global_lock);
const idclass_t *idc = idclass_find(cls);
idnode_set_t *is = idnode_find_all(idc);
out = htsmsg_create_map();
if (is) {
htsmsg_t *l = htsmsg_create_list();
for (i = 0; i < is->is_count; i++) {
idnode_t *in = is->is_array[i];
htsmsg_t *e = htsmsg_create_map();
htsmsg_add_str(e, "key", idnode_uuid_as_str(in));
htsmsg_add_str(e, "val", idnode_get_title(in));
htsmsg_add_msg(l, NULL, e);
}
idnode_set_free(is);
htsmsg_add_msg(out, "entries", l);
}
pthread_mutex_unlock(&global_lock);
/* Children */
} else if (!strcmp(op, "childs")) {

View file

@ -6,11 +6,11 @@ tvheadend.idnode_enum_stores = {}
tvheadend.idnode_get_enum = function ( conf )
{
/* Build key */
key = conf.url;
var key = conf.url;
if (conf.event)
key += conf.event;
if (conf.params)
key += Ext.util.JSON.encode(conf.params);
key += '?' + Ext.util.JSON.encode(conf.params);
/* Use cached */
if (key in tvheadend.idnode_enum_stores)