Add ability to set the IPTV service type.

This commit is contained in:
Adam Sutton 2012-08-17 17:25:48 +01:00
parent b709427f3e
commit ce862f85fc
5 changed files with 67 additions and 2 deletions

View file

@ -414,6 +414,9 @@ iptv_service_save(service_t *t)
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);
@ -591,6 +594,9 @@ iptv_service_load(void)
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);

View file

@ -1153,3 +1153,20 @@ service_is_primary_epg(service_t *svc)
}
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;
}

View file

@ -578,4 +578,6 @@ void service_set_dvb_eit_enable(service_t *t, int dvb_eit_enable);
int service_is_primary_epg (service_t *t);
htsmsg_t *servicetype_list (void);
#endif // SERVICE_H__

View file

@ -1502,6 +1502,11 @@ service_update_iptv(htsmsg_t *in)
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);
@ -1542,6 +1547,7 @@ build_record_iptv(service_t *t)
}
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;
}
@ -1613,6 +1619,11 @@ extjs_iptvservices(http_connection_t *hc, const char *remain, void *opaque)
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);

View file

@ -1,3 +1,12 @@
tvheadend.servicetypeStore = new Ext.data.JsonStore({
root : 'entries',
id : 'val',
url : '/iptv/services',
baseParams : { op : 'servicetypeList' },
fields : [ 'val', 'str' ],
autoLoad : true,
});
/**
* IPTV service grid
*/
@ -88,7 +97,27 @@ tvheadend.iptv = function(adapterId) {
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,
@ -106,7 +135,7 @@ tvheadend.iptv = function(adapterId) {
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({