idclass_register(&mpegts_mux_class);
idclass_register(&mpegts_service_class);
+ /* Network scanner */
+#if ENABLE_MPEGTS
+ mpegts_network_scan_init();
+#endif
+
/* Setup DVB networks */
#if ENABLE_MPEGTS_DVB
dvb_network_init();
void
mpegts_done ( void )
{
+ tvhftrace("main", mpegts_network_scan_done);
tvhftrace("main", mpegts_mux_sched_done);
#if ENABLE_MPEGTS_DVB
tvhftrace("main", dvb_network_done);
/* Stop */
mm->mm_stop(mm, 1);
+ /* Remove from network */
+ LIST_REMOVE(mm, mm_network_link);
+
/* Cancel scan */
mpegts_network_scan_mux_cancel(mm, 0);
mpegts_network_scan_mux_fail ( mpegts_mux_t *mm )
{
mm->mm_scan_ok = 0;
+ mpegts_mux_unsubscribe_by_name(mm, "scan");
mpegts_network_scan_queue_del(mm);
}
mpegts_network_scan_mux_done ( mpegts_mux_t *mm )
{
mm->mm_scan_ok = 1;
+ mpegts_mux_unsubscribe_by_name(mm, "scan");
mpegts_network_scan_queue_del(mm);
}
void
mpegts_network_scan_mux_cancel ( mpegts_mux_t *mm, int reinsert )
{
- assert(mm->mm_scan_state == MM_SCAN_STATE_ACTIVE);
-
/* Remove */
+ mpegts_mux_unsubscribe_by_name(mm, "scan");
mpegts_network_scan_queue_del(mm);
/* Re-insert */
TAILQ_REMOVE(&mpegts_network_scan_active, mm, mm_scan_link);
mm->mm_scan_state = MM_SCAN_STATE_IDLE;
gtimer_disarm(&mm->mm_scan_timeout);
+ mpegts_network_scan_timer_arm(0);
}
void