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;
}
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 )
{
.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,
}
}
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")) {
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)