From 3716d28ff1fd71987073ace59b6b7cc0bdadb038 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 10 Sep 2014 15:05:05 +0200 Subject: [PATCH] epggrab: ota - improve and fix the logic and defines for the EPG control, add documentation --- docs/html/config_muxes.html | 35 +++++++++++++++++++++++++++- src/epggrab/otamux.c | 43 +++++++++++++++++------------------ src/input/mpegts.h | 16 ++++++------- src/input/mpegts/mpegts_mux.c | 14 ++++++------ 4 files changed, 70 insertions(+), 38 deletions(-) diff --git a/docs/html/config_muxes.html b/docs/html/config_muxes.html index e54a22c2..209e2213 100644 --- a/docs/html/config_muxes.html +++ b/docs/html/config_muxes.html @@ -17,7 +17,40 @@
Whether or not the mux is enabled and thus available.
EPG -
Whether or not to retrieve EPG information from the mux. +
EPG scan setup + +
+
Disable +
Disable the EPG scan + +
Enable (auto) +
Enable the EPG scan (when some services from this mux are assigned to channels) + +
Force (auto) +
Force the EPG scan (everytime when the EPG scan is triggered) + +
Only EIT +
Do only EIT EPG scan (when some services from this mux are assigned to channels) + +
Only UK Freesat +
Do only UK Freesat EPG scan (when some services from this mux are assigned to channels) + +
Only UK Freeview +
Do only UK Freeview EPG scan (when some services from this mux are assigned to channels) + +
Only Viasat Baltic +
Do only Viasat Baltic EPG scan (when some services from this mux are assigned to channels) + +
Only OpenTV Sky UK +
Do only OpenTV Sky UK EPG scan (the TSID must match in the skyuk configuration file) + +
Only OpenTV Sky Italia +
Do only OpenTV Sky Italia EPG scan (the TSID must match in the skyit configuration file) + +
Only OpenTV Sky Ausat +
Do only OpenTV Sky Ausat EPG scan (the TSID must match in the ausat configuration file) + +
Network
The name of the network to which the mux belongs. Networks are defined in Configuration -> DVB Inputs -> Networks - DVB-S or ATSC, for example. diff --git a/src/epggrab/otamux.c b/src/epggrab/otamux.c index 5c815242..9c6e0886 100644 --- a/src/epggrab/otamux.c +++ b/src/epggrab/otamux.c @@ -416,13 +416,13 @@ epggrab_ota_kick_cb ( void *p ) [MM_EPG_DISABLE] = NULL, [MM_EPG_ENABLE] = NULL, [MM_EPG_FORCE] = NULL, - [MM_EPG_FORCE_EIT] = "eit", - [MM_EPG_FORCE_UK_FREESAT] = "uk_freesat", - [MM_EPG_FORCE_UK_FREEVIEW] = "uk_freeview", - [MM_EPG_FORCE_VIASAT_BALTIC] = "viasat_baltic", - [MM_EPG_FORCE_OPENTV_SKY_UK] = "opentv-skyuk", - [MM_EPG_FORCE_OPENTV_SKY_ITALIA] = "opentv-skyit", - [MM_EPG_FORCE_OPENTV_SKY_AUSAT] = "opentv-ausat", + [MM_EPG_ONLY_EIT] = "eit", + [MM_EPG_ONLY_UK_FREESAT] = "uk_freesat", + [MM_EPG_ONLY_UK_FREEVIEW] = "uk_freeview", + [MM_EPG_ONLY_VIASAT_BALTIC] = "viasat_baltic", + [MM_EPG_ONLY_OPENTV_SKY_UK] = "opentv-skyuk", + [MM_EPG_ONLY_OPENTV_SKY_ITALIA] = "opentv-skyit", + [MM_EPG_ONLY_OPENTV_SKY_AUSAT] = "opentv-ausat", }; lock_assert(&global_lock); @@ -476,26 +476,25 @@ next_one: goto done; } - if (epg_flag != MM_EPG_FORCE) { - /* Check we have modules attached and enabled */ - LIST_FOREACH(map, &om->om_modules, om_link) { - if (map->om_module->tune(map, om, mm)) - break; - } - if (!map) { - char name[256]; - mpegts_mux_nice_name(mm, name, sizeof(name)); - tvhdebug("epggrab", "no OTA modules active for %s, check again next time", name); - goto done; + /* Check we have modules attached and enabled */ + i = r = 0; + LIST_FOREACH(map, &om->om_modules, om_link) { + if (map->om_module->tune(map, om, mm)) { + i++; + if (modname && !strcmp(modname, map->om_module->id)) + r = 1; } } + if ((i == 0 || (r == 0 && modname)) && epg_flag != MM_EPG_FORCE) { + char name[256]; + mpegts_mux_nice_name(mm, name, sizeof(name)); + tvhdebug("epggrab", "no OTA modules active for %s, check again next time", name); + goto done; + } /* Some init stuff */ free(om->om_force_modname); - if (modname) - om->om_force_modname = strdup(modname); - else - om->om_force_modname = NULL; + om->om_force_modname = modname ? strdup(modname) : NULL; /* Subscribe to the mux */ if ((r = mpegts_mux_subscribe(mm, "epggrab", SUBSCRIPTION_PRIO_EPG))) { diff --git a/src/input/mpegts.h b/src/input/mpegts.h index ba92210f..20e78058 100644 --- a/src/input/mpegts.h +++ b/src/input/mpegts.h @@ -312,15 +312,15 @@ enum mpegts_mux_epg_flag MM_EPG_DISABLE, MM_EPG_ENABLE, MM_EPG_FORCE, - MM_EPG_FORCE_EIT, - MM_EPG_FORCE_UK_FREESAT, - MM_EPG_FORCE_UK_FREEVIEW, - MM_EPG_FORCE_VIASAT_BALTIC, - MM_EPG_FORCE_OPENTV_SKY_UK, - MM_EPG_FORCE_OPENTV_SKY_ITALIA, - MM_EPG_FORCE_OPENTV_SKY_AUSAT, + MM_EPG_ONLY_EIT, + MM_EPG_ONLY_UK_FREESAT, + MM_EPG_ONLY_UK_FREEVIEW, + MM_EPG_ONLY_VIASAT_BALTIC, + MM_EPG_ONLY_OPENTV_SKY_UK, + MM_EPG_ONLY_OPENTV_SKY_ITALIA, + MM_EPG_ONLY_OPENTV_SKY_AUSAT, }; -#define MM_EPG_LAST MM_EPG_FORCE_OPENTV_SKY_AUSAT +#define MM_EPG_LAST MM_EPG_ONLY_OPENTV_SKY_AUSAT /* Multiplex */ struct mpegts_mux diff --git a/src/input/mpegts/mpegts_mux.c b/src/input/mpegts/mpegts_mux.c index d3959271..2add0bfd 100644 --- a/src/input/mpegts/mpegts_mux.c +++ b/src/input/mpegts/mpegts_mux.c @@ -303,13 +303,13 @@ mpegts_mux_epg_list ( void *o ) { "Disable", MM_EPG_DISABLE }, { "Enable (auto)", MM_EPG_ENABLE }, { "Force (auto)", MM_EPG_FORCE }, - { "Force EIT", MM_EPG_FORCE_EIT }, - { "Force UK Freesat", MM_EPG_FORCE_UK_FREESAT }, - { "Force UK Freeview", MM_EPG_FORCE_UK_FREEVIEW }, - { "Force Viasat Baltic", MM_EPG_FORCE_VIASAT_BALTIC }, - { "Force OpenTV Sky UK", MM_EPG_FORCE_OPENTV_SKY_UK }, - { "Force OpenTV Sky Italia", MM_EPG_FORCE_OPENTV_SKY_ITALIA }, - { "Force OpenTV Sky Ausat", MM_EPG_FORCE_OPENTV_SKY_AUSAT }, + { "Only EIT", MM_EPG_ONLY_EIT }, + { "Only UK Freesat", MM_EPG_ONLY_UK_FREESAT }, + { "Only UK Freeview", MM_EPG_ONLY_UK_FREEVIEW }, + { "Only Viasat Baltic", MM_EPG_ONLY_VIASAT_BALTIC }, + { "Only OpenTV Sky UK", MM_EPG_ONLY_OPENTV_SKY_UK }, + { "Only OpenTV Sky Italia", MM_EPG_ONLY_OPENTV_SKY_ITALIA }, + { "Only OpenTV Sky Ausat", MM_EPG_ONLY_OPENTV_SKY_AUSAT }, }; return strtab2htsmsg(tab); }