diff --git a/dvb/dvb.h b/dvb/dvb.h index 7b35c188..dfb22da1 100644 --- a/dvb/dvb.h +++ b/dvb/dvb.h @@ -67,6 +67,8 @@ th_dvb_mux_instance_t *dvb_mux_create(th_dvb_adapter_t *tda, uint16_t tsid, const char *network, const char *logprefix); +void dvb_mux_set_networkname(th_dvb_mux_instance_t *tdmi, const char *name); + void dvb_tune_tdmi(th_dvb_mux_instance_t *tdmi, int maylog, tdmi_state_t state); diff --git a/dvb/dvb_multiplex.c b/dvb/dvb_multiplex.c index 15eabd1f..90cd2399 100644 --- a/dvb/dvb_multiplex.c +++ b/dvb/dvb_multiplex.c @@ -525,3 +525,22 @@ dvb_mux_load(th_dvb_adapter_t *tda) htsmsg_destroy(l); } +/** + * + */ +void +dvb_mux_set_networkname(th_dvb_mux_instance_t *tdmi, const char *networkname) +{ + htsmsg_t *m = htsmsg_create(); + char buf[100]; + + htsmsg_add_str(m, "id", tdmi->tdmi_identifier); + + free((void *)tdmi->tdmi_network); + tdmi->tdmi_network = strdup(networkname); + dvb_mux_save(tdmi); + + dvb_mux_nicename(buf, sizeof(buf), tdmi); + htsmsg_add_str(m, "name", buf); + notify_by_msg("dvbmux", m); +} diff --git a/dvb/dvb_support.c b/dvb/dvb_support.c index a9ed16a6..199403a9 100644 --- a/dvb/dvb_support.c +++ b/dvb/dvb_support.c @@ -337,16 +337,17 @@ void dvb_mux_nicename(char *buf, size_t size, th_dvb_mux_instance_t *tdmi) { char freq[50]; - + const char *n = tdmi->tdmi_network; if(tdmi->tdmi_adapter->tda_type == FE_QPSK) { nicenum(freq, sizeof(freq), tdmi->tdmi_fe_params.frequency); - snprintf(buf, size, "%s kHz %s port %d", freq, + snprintf(buf, size, "%s%s%s kHz %s port %d", + n?:"", n ? ": ":"", freq, dvb_polarisation_to_str_long(tdmi->tdmi_polarisation), tdmi->tdmi_switchport); } else { nicenum(freq, sizeof(freq), tdmi->tdmi_fe_params.frequency / 1000); - snprintf(buf, size, "%s kHz", freq); + snprintf(buf, size, "%s%s%s kHz", n?:"", n ? ": ":"", freq); } } diff --git a/dvb/dvb_tables.c b/dvb/dvb_tables.c index 8887fa54..f0efafb0 100644 --- a/dvb/dvb_tables.c +++ b/dvb/dvb_tables.c @@ -640,12 +640,8 @@ dvb_nit_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, if(dvb_get_string(networkname, sizeof(networkname), ptr, tlen, "UTF8")) return; - if(strcmp(tdmi->tdmi_network ?: "", networkname)) { - free((void *)tdmi->tdmi_network); - tdmi->tdmi_network = strdup(networkname); - //notify_tdmi_name_change(tdmi); - dvb_mux_save(tdmi); - } + if(strcmp(tdmi->tdmi_network ?: "", networkname)) + dvb_mux_set_networkname(tdmi, networkname); break; }