htsmsg_add_u32(m, "pmt", t->s_pmt_pid);
+ if(t->s_servicetype)
+ htsmsg_add_u32(m, "stype", t->s_servicetype);
+
if(t->s_iptv_port)
htsmsg_add_u32(m, "port", t->s_iptv_port);
if(!htsmsg_get_u32(c, "port", &u32))
t->s_iptv_port = u32;
+ if(!htsmsg_get_u32(c, "stype", &u32))
+ t->s_servicetype = u32;
+
pthread_mutex_lock(&t->s_stream_mutex);
service_make_nicename(t);
psi_load_service_settings(c, t);
}
return !ret ? 0 : (ret->s_dvb_service_id == svc->s_dvb_service_id);
}
+
+/*
+ * list of known service types
+ */
+htsmsg_t *servicetype_list ( void )
+{
+ htsmsg_t *ret, *e;
+ int i;
+ ret = htsmsg_create_list();
+ for (i = 0; i < sizeof(stypetab) / sizeof(stypetab[0]); i++ ) {
+ e = htsmsg_create_map();
+ htsmsg_add_u32(e, "val", stypetab[i].val);
+ htsmsg_add_str(e, "str", stypetab[i].str);
+ htsmsg_add_msg(ret, NULL, e);
+ }
+ return ret;
+}
int service_is_primary_epg (service_t *t);
+htsmsg_t *servicetype_list (void);
+
#endif // SERVICE_H__
save = 1;
}
+ if (!htsmsg_get_u32(c, "stype", &u32)) {
+ t->s_servicetype = u32;
+ save = 1;
+ }
+
if((s = htsmsg_get_str(c, "group")) != NULL) {
if(!inet_pton(AF_INET, s, &t->s_iptv_group.s_addr)){
inet_pton(AF_INET6, s, &t->s_iptv_group6.s6_addr);
}
htsmsg_add_u32(r, "port", t->s_iptv_port);
+ htsmsg_add_u32(r, "stype", t->s_servicetype);
htsmsg_add_u32(r, "enabled", t->s_enabled);
return r;
}
out = htsmsg_create_map();
+ } else if (!strcmp(op, "servicetypeList")) {
+ out = htsmsg_create_map();
+ array = servicetype_list();
+ htsmsg_add_msg(out, "entries", array);
+
} else {
pthread_mutex_unlock(&global_lock);
htsmsg_destroy(in);
+tvheadend.servicetypeStore = new Ext.data.JsonStore({
+ root : 'entries',
+ id : 'val',
+ url : '/iptv/services',
+ baseParams : { op : 'servicetypeList' },
+ fields : [ 'val', 'str' ],
+ autoLoad : true,
+});
+
/**
* IPTV service grid
*/
width: 50,
hidden: true
},
- {
+ {
+ header : 'Service Type',
+ width : 100,
+ dataIndex : 'stype',
+ hidden : true,
+ editor : new fm.ComboBox({
+ valueField : 'val',
+ displayField : 'str',
+ forceSelection : false,
+ editable : false,
+ mode : 'local',
+ triggerAction : 'all',
+ store : tvheadend.servicetypeStore,
+ }),
+ renderer: function(value, metadata, record, row, col, store) {
+ var val = value ? tvheadend.servicetypeStore.getById(value) : null;
+ return val ? val.get('str') :
+ '<span class="tvh-grid-unset">Unset</span>';
+ },
+ },
+ {
header: "PMT PID",
dataIndex: 'pmt',
width: 50,
var rec = Ext.data.Record.create([
'id', 'enabled', 'channelname', 'interface', 'group', 'port',
- 'sid', 'pmt', 'pcr'
+ 'sid', 'pmt', 'pcr', 'stype'
]);
var store = new Ext.data.JsonStore({