]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Add ability to set the IPTV service type.
authorAdam Sutton <dev@adamsutton.me.uk>
Fri, 17 Aug 2012 16:25:48 +0000 (17:25 +0100)
committerAdam Sutton <dev@adamsutton.me.uk>
Fri, 17 Aug 2012 20:50:12 +0000 (21:50 +0100)
src/iptv_input.c
src/service.c
src/service.h
src/webui/extjs.c
src/webui/static/app/iptv.js

index 0bfc31124aaed20d2bccf73268b5bd318193f13c..218d6db0d42a3636af35d38d64674361d013955b 100644 (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);
index 1904530e5db6a7d411a616d55d0e0ac4e55eec61..562d4ac87938f1db29bc7394ebee9d845d7ff9ec 100644 (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;
+}
index 9d2931b9db2f217cb4a546ee6404aa5b42914788..d2c1e313c2efc24482be0c1e4dd1ff84af4b7541 100644 (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__
index 3bb5fde10d12df6bfcbd0c4376d7e5d185cdca77..68cb14b6b6110c28766a5acdf1a02e57d3914f75 100644 (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);
index acdbfc0fb6386d5c925e9b39050affd2182a4753..397df19afe66af8e45073245ca60d9686c860413 100644 (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({