]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
mpegts: consolidate dvb network class lookup
authorSven Wegener <sven.wegener@stealer.net>
Mon, 9 Nov 2015 19:45:04 +0000 (20:45 +0100)
committerJaroslav Kysela <perex@perex.cz>
Mon, 9 Nov 2015 21:11:16 +0000 (22:11 +0100)
Signed-off-by: Sven Wegener <sven.wegener@stealer.net>
src/input/mpegts/mpegts_dvb.h
src/input/mpegts/mpegts_network_dvb.c
src/input/mpegts/satip/satip_frontend.c
src/input/mpegts/tvhdhomerun/tvhdhomerun_frontend.c

index 3362fe9b2716dd4571f8df74888b6953fcdaf987..dfb4ac6eff63de33057509c2a6e77ef06454f74c 100644 (file)
@@ -56,6 +56,9 @@ void dvb_network_done ( void );
 static inline dvb_network_t *dvb_network_find_by_uuid(const char *uuid)
   { return idnode_find(uuid, &dvb_network_class, NULL); }
 
+const idclass_t *dvb_network_class_by_fe_type(dvb_fe_type_t type);
+dvb_fe_type_t dvb_fe_type_by_network_class(const idclass_t *idc);
+
 dvb_network_t *dvb_network_create0
   ( const char *uuid, const idclass_t *idc, htsmsg_t *conf );
 
index 0902c9c4c7aa4030ba3030440616d9bde5adbd7f..2dc86863a95cf815fbf59a2e40da0ce4cf2e016c 100644 (file)
@@ -604,14 +604,7 @@ dvb_network_create0
   const char *s;
 
   ln = calloc(1, sizeof(dvb_network_t));
-  if (idc == &dvb_network_dvbt_class)
-    ln->ln_type = DVB_TYPE_T;
-  else if (idc == &dvb_network_dvbc_class)
-    ln->ln_type = DVB_TYPE_C;
-  else if (idc == &dvb_network_dvbs_class)
-    ln->ln_type = DVB_TYPE_S;
-  else
-    ln->ln_type = DVB_TYPE_ATSC;
+  ln->ln_type = dvb_fe_type_by_network_class(idc);
 
   /* Create */
   if (!(ln = (dvb_network_t*)mpegts_network_create0((void*)ln,
@@ -717,6 +710,34 @@ void dvb_network_done ( void )
  * Search
  * ***************************************************************************/
 
+const idclass_t *dvb_network_class_by_fe_type(dvb_fe_type_t type)
+{
+  if (type == DVB_TYPE_T)
+    return &dvb_network_dvbt_class;
+  else if (type == DVB_TYPE_C)
+    return &dvb_network_dvbc_class;
+  else if (type == DVB_TYPE_S)
+    return &dvb_network_dvbs_class;
+  else if (type == DVB_TYPE_ATSC)
+    return &dvb_network_atsc_class;
+
+  return NULL;
+}
+
+dvb_fe_type_t dvb_fe_type_by_network_class(const idclass_t *idc)
+{
+  if (idc == &dvb_network_dvbt_class)
+    return DVB_TYPE_T;
+  else if (idc == &dvb_network_dvbc_class)
+    return DVB_TYPE_C;
+  else if (idc == &dvb_network_dvbs_class)
+    return DVB_TYPE_S;
+  else if (idc == &dvb_network_atsc_class)
+    return DVB_TYPE_ATSC;
+
+  return DVB_TYPE_NONE;
+}
+
 int dvb_network_get_orbital_pos(mpegts_network_t *mn)
 {
   dvb_network_t *ln = (dvb_network_t *)mn;
index a7454606c1f37d8865054a5e0f5f27a56fb0c3b9..d3166c403f583fb2644c3c783b339edee2d39f0c 100644 (file)
@@ -1717,13 +1717,7 @@ satip_frontend_create
   if (type == DVB_TYPE_S)
     idc = master ? &satip_frontend_dvbs_slave_class :
                    &satip_frontend_dvbs_class;
-  else if (type == DVB_TYPE_T)
-    idc = &satip_frontend_dvbt_class;
-  else if (type == DVB_TYPE_C)
-    idc = &satip_frontend_dvbc_class;
-  else if (type == DVB_TYPE_ATSC)
-    idc = &satip_frontend_atsc_class;
-  else {
+  else if (!(idc = dvb_network_class_by_fe_type(type))) {
     tvherror("satip", "unknown FE type %d", type);
     return NULL;
   }
index 6ebab7efba783496b4a7b41f23a90f7e392fd848..b32ab80309fd440205b633ba5d6b813a5d1e7cde 100644 (file)
@@ -632,13 +632,7 @@ tvhdhomerun_frontend_create(tvhdhomerun_device_t *hd, struct hdhomerun_discover_
     uuid = htsmsg_get_str(conf, "uuid");
 
   /* Class */
-  if (type == DVB_TYPE_T)
-    idc = &tvhdhomerun_frontend_dvbt_class;
-  else if (type == DVB_TYPE_C)
-    idc = &tvhdhomerun_frontend_dvbc_class;
-  else if (type == DVB_TYPE_ATSC) {
-    idc = &tvhdhomerun_frontend_atsc_class;
-  } else {
+  if (!(idc = dvb_network_class_by_fe_type(type))) {
     tvherror("stvhdhomerun", "unknown FE type %d", type);
     return NULL;
   }