void dvb_mux_set_networkname(th_dvb_mux_instance_t *tdmi, const char *name);
-void dvb_mux_set_tsid(th_dvb_mux_instance_t *tdmi, uint16_t tsid);
+void dvb_mux_set_tsid(th_dvb_mux_instance_t *tdmi, uint16_t tsid, int force);
-void dvb_mux_set_onid(th_dvb_mux_instance_t *tdmi, uint16_t onid);
+void dvb_mux_set_onid(th_dvb_mux_instance_t *tdmi, uint16_t onid, int force);
void dvb_mux_set_enable(th_dvb_mux_instance_t *tdmi, int enabled);
}
if(tdmi != NULL) {
+
/* Update stuff ... */
int save = 0;
char buf2[1024];
buf2[0] = 0;
- if(tdmi_compare_conf(tda->tda_type, &tdmi->tdmi_conf, dmc)) {
+ if(tdmi->tdmi_adapter->tda_autodiscovery &&
+ tdmi_compare_conf(tda->tda_type, &tdmi->tdmi_conf, dmc)) {
#if DVB_API_VERSION >= 5
snprintf(buf2, sizeof(buf2), " (");
if (tdmi->tdmi_conf.dmc_fe_modulation != dmc->dmc_fe_modulation)
*
*/
void
-dvb_mux_set_tsid(th_dvb_mux_instance_t *tdmi, uint16_t tsid)
+dvb_mux_set_tsid(th_dvb_mux_instance_t *tdmi, uint16_t tsid, int force)
{
htsmsg_t *m;
+ if (!force)
+ if (tdmi->tdmi_transport_stream_id != 0xFFFF || tsid == 0xFFFF)
+ return;
+
tdmi->tdmi_transport_stream_id = tsid;
dvb_mux_save(tdmi);
*
*/
void
-dvb_mux_set_onid(th_dvb_mux_instance_t *tdmi, uint16_t onid)
+dvb_mux_set_onid(th_dvb_mux_instance_t *tdmi, uint16_t onid, int force)
{
htsmsg_t *m;
+ if (force)
+ if (tdmi->tdmi_network_id != 0 || onid == 0)
+ return;
+
tdmi->tdmi_network_id = onid;
dvb_mux_save(tdmi);
tsid = ptr[0] << 8 | ptr[1];
onid = ptr[5] << 8 | ptr[6];
if (tableid == 0x42) {
+ dvb_mux_set_tsid(tdmi, tsid, 0);
+ dvb_mux_set_onid(tdmi, onid, 0);
if(tdmi->tdmi_transport_stream_id != tsid || tdmi->tdmi_network_id != onid)
return -1;
} else {
}
tsid = (ptr[0] << 8) | ptr[1];
+ dvb_mux_set_tsid(tdmi, tsid, 0);
if (tdmi->tdmi_transport_stream_id != tsid)
return -1;
t = dvb_service_find(tdmi, sid, 0, NULL);
if(t != NULL) {
- if(t->s_channel_number != chan) {
- t->s_channel_number = chan;
- t->s_config_save(t);
- service_refresh_channel(t);
- }
+ if(t->s_channel_number != chan) {
+ t->s_channel_number = chan;
+ t->s_config_save(t);
+ service_refresh_channel(t);
+ }
}
}
ptr += 4;
/* Search all muxes on adapter */
LIST_FOREACH(tdmi, &tda->tda_muxes, tdmi_adapter_link)
- if(tdmi->tdmi_transport_stream_id == tsid && tdmi->tdmi_network_id == onid);
- break;
+ if(tdmi->tdmi_transport_stream_id == tsid &&
+ tdmi->tdmi_network_id == onid);
+ break;
if(tdmi == NULL)
continue;