diff --git a/src/dvb/dvb_tables.c b/src/dvb/dvb_tables.c index be9538dc..2e08ab14 100644 --- a/src/dvb/dvb_tables.c +++ b/src/dvb/dvb_tables.c @@ -673,6 +673,7 @@ dvb_sdt_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, pthread_mutex_unlock(&t->tht_stream_mutex); t->tht_config_save(t); + transport_refresh_channel(t); } } break; diff --git a/src/htsp.c b/src/htsp.c index f7abf6aa..358f2d46 100644 --- a/src/htsp.c +++ b/src/htsp.c @@ -299,7 +299,7 @@ htsp_build_channel(channel_t *ch, const char *method) htsmsg_t *out = htsmsg_create_map(); htsmsg_t *tags = htsmsg_create_list(); - htsmsg_t *servicetypes = htsmsg_create_list(); + htsmsg_t *services = htsmsg_create_list(); htsmsg_add_u32(out, "channelId", ch->ch_id); htsmsg_add_u32(out, "channelNumber", ch->ch_number); @@ -318,10 +318,13 @@ htsp_build_channel(channel_t *ch, const char *method) } LIST_FOREACH(t, &ch->ch_transports, tht_ch_link) { - htsmsg_add_u32(servicetypes, NULL, t->tht_servicetype); + htsmsg_t *svcmsg = htsmsg_create_map(); + htsmsg_add_str(svcmsg, "name", transport_nicename(t)); + htsmsg_add_str(svcmsg, "type", transport_servicetype_txt(t)); + htsmsg_add_msg(services, NULL, svcmsg); } - htsmsg_add_msg(out, "servicetypes", servicetypes); + htsmsg_add_msg(out, "services", services); htsmsg_add_msg(out, "tags", tags); htsmsg_add_str(out, "method", method); return out; diff --git a/src/transports.c b/src/transports.c index b21ffbd6..dd772b5b 100644 --- a/src/transports.c +++ b/src/transports.c @@ -720,8 +720,9 @@ transport_map_channel(th_transport_t *t, channel_t *ch, int save) lock_assert(&global_lock); if(t->tht_ch != NULL) { - t->tht_ch = NULL; LIST_REMOVE(t, tht_ch_link); + htsp_channel_update(t->tht_ch); + t->tht_ch = NULL; } @@ -732,6 +733,7 @@ transport_map_channel(th_transport_t *t, channel_t *ch, int save) t->tht_ch = ch; LIST_INSERT_HEAD(&ch->ch_transports, t, tht_ch_link); + htsp_channel_update(t->tht_ch); } if(save) @@ -1045,3 +1047,13 @@ transport_tss2text(int flags) return "No status"; } + +/** + * + */ +void +transport_refresh_channel(th_transport_t *t) +{ + if(t->tht_channel != NULL) + htsp_channel_update(t->tht_channel); +} diff --git a/src/transports.h b/src/transports.h index 0876d3fd..e2e89d59 100644 --- a/src/transports.h +++ b/src/transports.h @@ -112,4 +112,6 @@ static inline int transport_tss_is_error(int flags) return flags & TSS_ERRORS ? 1 : 0; } +void transport_refresh_channel(th_transport_t *t); + #endif /* TRANSPORTS_H */