From 71d6adfed00f7d3d3693dded526883054500d942 Mon Sep 17 00:00:00 2001 From: Adam Sutton Date: Mon, 15 Oct 2012 10:35:11 +0100 Subject: [PATCH] Ensure ONID is updated at some point, this still may not work, but worth a shot. --- src/dvb/dvb.h | 2 ++ src/dvb/dvb_multiplex.c | 18 ++++++++++++++++++ src/dvb/dvb_tables.c | 4 +++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/dvb/dvb.h b/src/dvb/dvb.h index c29bef1a..60258e7c 100644 --- a/src/dvb/dvb.h +++ b/src/dvb/dvb.h @@ -364,6 +364,8 @@ 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_onid(th_dvb_mux_instance_t *tdmi, uint16_t onid); + void dvb_mux_set_enable(th_dvb_mux_instance_t *tdmi, int enabled); void dvb_mux_set_satconf(th_dvb_mux_instance_t *tdmi, const char *scid, diff --git a/src/dvb/dvb_multiplex.c b/src/dvb/dvb_multiplex.c index 357a2816..0c4c1273 100644 --- a/src/dvb/dvb_multiplex.c +++ b/src/dvb/dvb_multiplex.c @@ -865,6 +865,24 @@ dvb_mux_set_tsid(th_dvb_mux_instance_t *tdmi, uint16_t tsid) notify_by_msg("dvbMux", m); } +/** + * + */ +void +dvb_mux_set_onid(th_dvb_mux_instance_t *tdmi, uint16_t onid) +{ + htsmsg_t *m; + + tdmi->tdmi_network_id = onid; + + dvb_mux_save(tdmi); + + m = htsmsg_create_map(); + htsmsg_add_str(m, "id", tdmi->tdmi_identifier); + htsmsg_add_u32(m, "onid", tdmi->tdmi_network_id); + notify_by_msg("dvbMux", m); +} + /** * diff --git a/src/dvb/dvb_tables.c b/src/dvb/dvb_tables.c index dea5892e..7f4c2ebb 100644 --- a/src/dvb/dvb_tables.c +++ b/src/dvb/dvb_tables.c @@ -463,8 +463,10 @@ dvb_sdt_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, tsid = ptr[0] << 8 | ptr[1]; onid = ptr[5] << 8 | ptr[6]; if (tableid == 0x42) { - if(tdmi->tdmi_transport_stream_id != tsid || tdmi->tdmi_network_id != onid) + if(tdmi->tdmi_transport_stream_id != tsid) return -1; + if(!tdmi->tdmi_network_id) + dvb_mux_set_onid(tdmi, onid); } else { LIST_FOREACH(tdmi, &tda->tda_muxes, tdmi_adapter_link) if(tdmi->tdmi_transport_stream_id == tsid &&