if (!(uuid = htsmsg_field_get_str(f))) continue;
pthread_mutex_lock(&global_lock);
mn = mpegts_network_find(uuid);
- if (mn)
- mpegts_network_scan(mn);
+ if (mn && mn->mn_scan)
+ mn->mn_scan(mn);
pthread_mutex_unlock(&global_lock);
}
} else if ((uuid = htsmsg_field_get_str(f))) {
pthread_mutex_lock(&global_lock);
mn = mpegts_network_find(uuid);
- if (mn)
- mpegts_network_scan(mn);
+ if (mn && mn->mn_scan)
+ mn->mn_scan(mn);
pthread_mutex_unlock(&global_lock);
if (!mn)
return -ENOENT;
(mpegts_mux_t*, uint16_t sid, uint16_t pmt_pid);
const idclass_t* (*mn_mux_class) (mpegts_network_t*);
mpegts_mux_t * (*mn_mux_create2) (mpegts_network_t *mn, htsmsg_t *conf);
+ void (*mn_scan) (mpegts_network_t*);
/*
* Configuration
return (mpegts_mux_t*)iptv_mux_create0((iptv_network_t*)mn, NULL, conf);
}
+static void
+iptv_network_auto_scan ( mpegts_network_t *mn )
+{
+ iptv_auto_network_trigger((iptv_network_t *)mn);
+ mpegts_network_scan(mn);
+}
+
static mpegts_service_t *
iptv_network_create_service
( mpegts_mux_t *mm, uint16_t sid, uint16_t pmt_pid )
in->mn_mux_class = iptv_network_mux_class;
in->mn_mux_create2 = iptv_network_create_mux2;
in->mn_config_save = iptv_network_config_save;
+ if (idc == &iptv_auto_network_class)
+ in->mn_scan = iptv_network_auto_scan;
/* Defaults */
in->mn_autodiscovery = 0;
return NULL;
}
+void
+mpegts_network_scan ( mpegts_network_t *mn )
+{
+ mpegts_mux_t *mm;
+ LIST_FOREACH(mm, &mn->mn_muxes, mm_network_link)
+ mpegts_mux_scan_state_set(mm, MM_SCAN_STATE_PEND);
+}
+
static void
mpegts_network_link_delete ( mpegts_network_link_t *mnl )
{
mn->mn_create_service = mpegts_network_create_service;
mn->mn_mux_class = mpegts_network_mux_class;
mn->mn_mux_create2 = mpegts_network_mux_create2;
+ mn->mn_scan = mpegts_network_scan;
mn->mn_delete = mpegts_network_delete;
/* Add to global list */
return save;
}
-void
-mpegts_network_scan ( mpegts_network_t *mn )
-{
- mpegts_mux_t *mm;
- LIST_FOREACH(mm, &mn->mn_muxes, mm_network_link)
- mpegts_mux_scan_state_set(mm, MM_SCAN_STATE_PEND);
-}
-
void
mpegts_network_get_type_str( mpegts_network_t *mn, char *buf, size_t buflen )
{