uint32_t tda_autodiscovery;
uint32_t tda_idlescan;
uint32_t tda_qmon;
+ uint32_t tda_nitoid;
uint32_t tda_diseqc_version;
char *tda_displayname;
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);
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);
}
+/**
+ *
+ */
+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);
+
+}
+
+
/**
*
*/
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);
int ntl;
char networkname[256];
uint16_t tsid;
+ uint16_t network_id = (ptr[0] << 8) | ptr[1];
- if(tableid != 0x40)
- return -1;
+ if(tdmi->tdmi_adapter->tda_nitoid) {
+ if(tableid != 0x41)
+ return -1;
+
+ if(network_id != tdmi->tdmi_adapter->tda_nitoid)
+ return -1;
+
+ } else {
+ if(tableid != 0x40)
+ return -1;
+ }
if((ptr[2] & 1) == 0) {
/* current_next_indicator == next, skip this */
/* Network Information Table */
fp = dvb_fparams_alloc();
- fp->filter.filter[0] = 0x40;
+
+ if(tdmi->tdmi_adapter->tda_nitoid) {
+ fp->filter.filter[0] = 0x41;
+ } else {
+ fp->filter.filter[0] = 0x40;
+ }
fp->filter.mask[0] = 0xff;
tdt_add(tdmi, fp, dvb_nit_callback, NULL, "nit",
TDT_QUICKREQ | TDT_CRC, 0x10, NULL);
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"})
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);
var confreader = new Ext.data.JsonReader({
root: 'dvbadapters'
- }, ['name', 'automux', 'idlescan', 'diseqcversion', 'qmon']);
+ }, ['name', 'automux', 'idlescan', 'diseqcversion', 'qmon', 'nitoid']);
function saveConfForm () {
new Ext.form.Checkbox({
fieldLabel: 'Monitor signal quality',
name: 'qmon'
- })
+ }),
+ {
+ fieldLabel: 'NIT-o Network ID',
+ name: 'nitoid',
+ width: 50
+ },
+
];
if(satConfStore) {