2014-03-26, 01:33
@negge I'm happy to do that, but as the TVHeadEnd DVB stuff has (or is) been all be rewritten this is a bit of a dead end ... I had a quick look at the later sources and it did appear to be considering the sat position before updating muxes. A new user should start from that.
But, if anyone really wants this change, here is (the short) list of diffs against version 3.5.247
But, if anyone really wants this change, here is (the short) list of diffs against version 3.5.247
Code:
diff -urBN tvheadend/src/dvb/dvb.h mytvheadend/src/dvb/dvb.h
--- tvheadend/src/dvb/dvb.h 2014-03-25 13:42:13.061401084 +1300
+++ mytvheadend/src/dvb/dvb.h 2014-03-25 13:39:52.101395736 +1300
@@ -59,6 +59,7 @@
char *sc_name;
char *sc_comment;
char *sc_lnb;
+ int sc_position;
struct th_dvb_mux_instance_list sc_tdmis;
@@ -83,6 +84,7 @@
typedef struct dvb_mux_conf {
dvb_frontend_parameters_t dmc_fe_params;
int dmc_polarisation;
+ int dmc_position;
dvb_satconf_t *dmc_satconf;
#if DVB_API_VERSION >= 5
fe_modulation_t dmc_fe_modulation;
diff -urBN tvheadend/src/dvb/dvb_multiplex.c mytvheadend/src/dvb/dvb_multiplex.c
--- tvheadend/src/dvb/dvb_multiplex.c 2014-03-25 13:42:13.061401084 +1300
+++ mytvheadend/src/dvb/dvb_multiplex.c 2014-03-25 13:47:54.369414033 +1300
@@ -109,7 +109,8 @@
fd = labs(fd);
return fd < 2000 &&
a->dmc_polarisation == b->dmc_polarisation &&
- a->dmc_satconf == satconf;
+ a->dmc_satconf == satconf &&
+ a->dmc_satconf->sc_position == b->dmc_position;
}
diff -urBN tvheadend/src/dvb/dvb_satconf.c mytvheadend/src/dvb/dvb_satconf.c
--- tvheadend/src/dvb/dvb_satconf.c 2014-03-25 13:42:13.061401084 +1300
+++ mytvheadend/src/dvb/dvb_satconf.c 2014-03-24 15:37:25.126385215 +1300
@@ -75,6 +75,7 @@
sc = calloc(1, sizeof(dvb_satconf_t));
sc->sc_id = strdup(id);
sc->sc_lnb = strdup("Universal");
+ sc->sc_position = 1600;
TAILQ_INSERT_TAIL(&tda->tda_satconfs, sc, sc_adapter_link);
return sc;
@@ -115,6 +116,7 @@
htsmsg_add_str(m, "name", sc->sc_name ?: "");
htsmsg_add_str(m, "comment", sc->sc_comment ?: "");
htsmsg_add_str(m, "lnb", sc->sc_lnb);
+ htsmsg_add_u32(m, "position", sc->sc_position);
return m;
}
@@ -139,5 +141,8 @@
tvh_str_update(&sc->sc_comment, htsmsg_get_str(values, "comment"));
tvh_str_update(&sc->sc_lnb, htsmsg_get_str(values, "lnb"));
+ if(!htsmsg_get_u32(values, "position", &u32))
+ sc->sc_position = u32;
+
if(!htsmsg_get_u32(values, "port", &u32))
sc->sc_port = u32;
diff -urBN tvheadend/src/dvb/dvb_tables.c mytvheadend/src/dvb/dvb_tables.c
--- tvheadend/src/dvb/dvb_tables.c 2014-03-25 13:42:13.065401084 +1300
+++ mytvheadend/src/dvb/dvb_tables.c 2014-03-25 13:53:37.033427034 +1300
@@ -712,9 +712,7 @@
{
int freq, symrate;
struct dvb_mux_conf dmc;
-#if ENABLE_TRACE
uint16_t orbital_pos;
-#endif
if(len < 11)
return -1;
@@ -733,11 +731,11 @@
return -1;
}
-#if ENABLE_TRACE
orbital_pos = bcdtoint(ptr[4]) * 100 + bcdtoint(ptr[5]);
-#endif
+#if ENABLE_TRACE
tvhtrace("nit", " orbital pos %d", orbital_pos);
-
+#endif
+ dmc.dmc_position = orbital_pos;
symrate =
bcdtoint(ptr[7]) * 100000 + bcdtoint(ptr[8]) * 1000 +
bcdtoint(ptr[9]) * 10 + (ptr[10] >> 4);
diff -urBN tvheadend/src/webui/static/app/dvb.js mytvheadend/src/webui/static/app/dvb.js
--- tvheadend/src/webui/static/app/dvb.js 2014-03-25 13:42:13.089401085 +1300
+++ mytvheadend/src/webui/static/app/dvb.js 2014-03-24 15:08:44.242319922 +1300
@@ -1429,6 +1429,13 @@
maxValue : 63
})
}, {
+ header : "Orbital Position",
+ dataIndex : 'position',
+ editor : new fm.NumberField({
+ minValue : 0,
+ maxValue : 1800
+ })
+ }, {
header : "LNB type",
dataIndex : 'lnb',
width : 200,
@@ -1449,7 +1456,7 @@
editor : new fm.TextField()
} ]});
- var rec = Ext.data.Record.create([ 'name', 'port', 'comment', 'lnb' ]);
+ var rec = Ext.data.Record.create([ 'name', 'port', 'comment', 'lnb', 'position' ]);
return new tvheadend.tableEditor('Satellite config', 'dvbsatconf/'
+ adapterId, cm, rec, null, null, null);