diff --git a/src/dvb/dvb_fe.c b/src/dvb/dvb_fe.c index e122b1c3..bb7d2249 100644 --- a/src/dvb/dvb_fe.c +++ b/src/dvb/dvb_fe.c @@ -40,6 +40,8 @@ #include "notify.h" #include "dvr/dvr.h" +#include "epggrab.h" + /** * Return uncorrected block (since last read) * @@ -515,7 +517,9 @@ dvb_fe_tune(th_dvb_mux_instance_t *tdmi, const char *reason) gtimer_arm(&tda->tda_fe_monitor_timer, dvb_fe_monitor, tda, 1); + dvb_table_add_default(tdmi); + epggrab_tune(tdmi); dvb_adapter_notify(tda); return 0; diff --git a/src/epggrab.c b/src/epggrab.c index e276cae5..38ae580e 100644 --- a/src/epggrab.c +++ b/src/epggrab.c @@ -858,6 +858,14 @@ void epggrab_channel_mod ( channel_t *ch ) } } +void epggrab_tune ( th_dvb_mux_instance_t *tdmi ) +{ + epggrab_module_t *m; + LIST_FOREACH(m, &epggrab_modules, link) { + if (m->tune) m->tune(m, tdmi); + } +} + epggrab_module_t* epggrab_module_find_by_id ( const char *id ) { epggrab_module_t *m; diff --git a/src/epggrab.h b/src/epggrab.h index 7a6aba19..36e5d87a 100644 --- a/src/epggrab.h +++ b/src/epggrab.h @@ -3,6 +3,7 @@ #include #include "channels.h" +#include "dvb/dvb.h" typedef struct epggrab_module epggrab_module_t; @@ -117,6 +118,9 @@ struct epggrab_module void (*ch_add) ( epggrab_module_t *m, channel_t *ch ); void (*ch_rem) ( epggrab_module_t *m, channel_t *ch ); void (*ch_mod) ( epggrab_module_t *m, channel_t *ch ); + + /* Transponder tuning */ + void (*tune) ( epggrab_module_t *m, th_dvb_mux_instance_t *tdmi ); }; /* @@ -187,4 +191,9 @@ void epggrab_channel_add ( struct channel *ch ); void epggrab_channel_rem ( struct channel *ch ); void epggrab_channel_mod ( struct channel *ch ); +/* + * Transport handling + */ +void epggrab_tune ( th_dvb_mux_instance_t *tdmi ); + #endif /* __EPGGRAB_H__ */