new enhanced patch:
Index: src/webui/static/app/dvb.js
===================================================================
--- src/webui/static/app/dvb.js (revision 4067)
+++ src/webui/static/app/dvb.js (working copy)
@@ -1008,7 +1008,7 @@
var confreader = new Ext.data.JsonReader({
root: 'dvbadapters'
- }, ['name', 'automux', 'idlescan', 'diseqcversion', 'qmon']);
+ }, ['name', 'automux', 'idlescan', 'diseqcversion', 'qmon', 'nitoid']);
function saveConfForm () {
@@ -1036,7 +1036,13 @@
new Ext.form.Checkbox({
fieldLabel: 'Monitor signal quality',
name: 'qmon'
- })
+ }),
+ {
+ fieldLabel: 'NIT-o Network ID',
+ name: 'nitoid',
+ width: 50
+ },
+
];
if(satConfStore) {
Index: src/webui/extjs.c
===================================================================
--- src/webui/extjs.c (revision 4067)
+++ src/webui/extjs.c (working copy)
@@ -1049,6 +1049,7 @@
htsmsg_add_u32(r, "automux", tda->tda_autodiscovery);
htsmsg_add_u32(r, "idlescan", tda->tda_idlescan);
htsmsg_add_u32(r, "qmon", tda->tda_qmon);
+ htsmsg_add_u32(r, "nitoid", tda->tda_nitoid);
htsmsg_add_str(r, "diseqcversion",
((const char *[]){"DiSEqC 1.0 / 2.0",
"DiSEqC 1.1 / 2.1"})
@@ -1069,6 +1070,9 @@
s = http_arg_get(&hc->hc_req_args, "qmon");
dvb_adapter_set_qmon(tda, !!s);
+ if((s = http_arg_get(&hc->hc_req_args, "nitoid")) != NULL)
+ dvb_adapter_set_nitoid(tda, atoi(s));
+
if((s = http_arg_get(&hc->hc_req_args, "diseqcversion")) != NULL) {
if(!strcmp(s, "DiSEqC 1.0 / 2.0"))
dvb_adapter_set_diseqc_version(tda, 0);
Index: src/dvb/dvb.h
===================================================================
--- src/dvb/dvb.h (revision 4067)
+++ src/dvb/dvb.h (working copy)
@@ -168,6 +168,7 @@
uint32_t tda_autodiscovery;
uint32_t tda_idlescan;
uint32_t tda_qmon;
+ uint32_t tda_nitoid;
uint32_t tda_diseqc_version;
char *tda_displayname;
@@ -222,6 +223,8 @@
void dvb_adapter_set_qmon(th_dvb_adapter_t *tda, int on);
+void dvb_adapter_set_nitoid(th_dvb_adapter_t *tda, int nitoid);
+
void dvb_adapter_set_diseqc_version(th_dvb_adapter_t *tda, unsigned int v);
void dvb_adapter_clone(th_dvb_adapter_t *dst, th_dvb_adapter_t *src);
Index: src/dvb/dvb_tables.c
===================================================================
--- src/dvb/dvb_tables.c (revision 4067)
+++ src/dvb/dvb_tables.c (working copy)
@@ -977,10 +977,16 @@
int ntl;
char networknamer256;
uint16_t tsid;
+ uint16_t network_id;
- if(tableid != 0x40)
+ if(tableid != 0x40 && tableid != 0x41)
return -1;
+ network_id = (ptrr0 << 8) | ptrr1 ;
+
+ if (tdmi->tdmi_adapter->tda_nitoid && network_id != tdmi->tdmi_adapter->tda_nitoid)
+ return -1;
+
if((ptrr2 & 1) == 0) {
/* current_next_indicator == next, skip this */
return -1;
@@ -1169,7 +1175,13 @@
/* Network Information Table */
fp = dvb_fparams_alloc();
- fp->filter.filterr0 = 0x40;
+
+ if( tdmi->tdmi_adapter->tda_nitoid) {
+ fp->filter.filterr0 = 0x41;
+ }
+ else {
+ fp->filter.filterr0 = 0x40;
+ }
fp->filter.maskr0 = 0xff;
tdt_add(tdmi, fp, dvb_nit_callback, NULL, "nit",
TDT_QUICKREQ | TDT_CRC, 0x10, NULL);
Index: src/dvb/dvb_adapter.c
===================================================================
--- src/dvb/dvb_adapter.c (revision 4067)
+++ src/dvb/dvb_adapter.c (working copy)
@@ -79,6 +79,7 @@
htsmsg_add_u32(m, "autodiscovery", tda->tda_autodiscovery);
htsmsg_add_u32(m, "idlescan", tda->tda_idlescan);
htsmsg_add_u32(m, "qmon", tda->tda_qmon);
+ htsmsg_add_u32(m, "nitoid", tda->tda_nitoid);
htsmsg_add_u32(m, "diseqc_version", tda->tda_diseqc_version);
hts_settings_save(m, "dvbadapters/%s", tda->tda_identifier);
htsmsg_destroy(m);
@@ -169,6 +170,27 @@
*
*/
void
+dvb_adapter_set_nitoid(th_dvb_adapter_t *tda, int nitoid)
+{
+ lock_assert(&global_lock);
+
+ if(tda->tda_nitoid == nitoid)
+ return;
+
+ tvhlog(LOG_NOTICE, "dvb", "NIT-o network id \"%d\" changed to \"%d\"",
+ tda->tda_nitoid, nitoid);
+
+ tda->tda_nitoid = nitoid;
+
+ tda_save(tda);
+
+}
+
+
+/**
+ *
+ */
+void
dvb_adapter_set_diseqc_version(th_dvb_adapter_t *tda, unsigned int v)
{
if(v > 1)
@@ -334,6 +356,7 @@
htsmsg_get_u32(c, "autodiscovery", &tda->tda_autodiscovery);
htsmsg_get_u32(c, "idlescan", &tda->tda_idlescan);
htsmsg_get_u32(c, "qmon", &tda->tda_qmon);
+ htsmsg_get_u32(c, "nitoid", &tda->tda_nitoid);
htsmsg_get_u32(c, "diseqc_version", &tda->tda_diseqc_version);
}
htsmsg_destroy(l);