Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
service: Add possibility to disable automatic service checking per se…
…rvice
  • Loading branch information
perexg committed Dec 5, 2014
1 parent a9d3e4a commit f20bab4
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 5 deletions.
5 changes: 3 additions & 2 deletions src/input/mpegts/dvb_psi.c
Expand Up @@ -1035,9 +1035,10 @@ dvb_pat_callback
last_seen = s->s_dvb_check_seen;
for (s = LIST_FIRST(&mm->mm_services); s; s = snext) {
snext = LIST_NEXT(s, s_dvb_mux_link);
if (s->s_enabled && s->s_dvb_check_seen + 24 * 3600 < last_seen) {
if (s->s_enabled && s->s_auto != SERVICE_AUTO_OFF &&
s->s_dvb_check_seen + 24 * 3600 < last_seen) {
tvhinfo("mpegts", "disabling service %s (missing in PAT)", s->s_nicename ?: "<unknown>");
service_set_enabled((service_t *)s, 0);
service_set_enabled((service_t *)s, 0, SERVICE_AUTO_PAT_MISSING);
}
}
mt->mt_opaque = mm;
Expand Down
26 changes: 24 additions & 2 deletions src/service.c
Expand Up @@ -57,7 +57,10 @@ struct service_queue service_all;
static void
service_class_notify_enabled ( void *obj )
{
bouquet_notify_service_enabled((service_t *)obj);
service_t *t = (service_t *)obj;
if (t->s_enabled && t->s_auto != SERVICE_AUTO_OFF)
t->s_auto = SERVICE_AUTO_NORMAL;
bouquet_notify_service_enabled(t);
}

static const void *
Expand Down Expand Up @@ -174,6 +177,17 @@ service_class_caid_get ( void *obj )
return &s;
}

static htsmsg_t *
service_class_auto_list ( void *o )
{
static const struct strtab tab[] = {
{ "", 0 },
{ "No Auto (Disabled)", 1 },
{ "Missing In PAT", 2 }
};
return strtab2htsmsg(tab);
}

const idclass_t service_class = {
.ic_class = "service",
.ic_caption = "Service",
Expand All @@ -190,6 +204,13 @@ const idclass_t service_class = {
.off = offsetof(service_t, s_enabled),
.notify = service_class_notify_enabled,
},
{
.type = PT_INT,
.id = "auto",
.name = "Automatic Checking",
.list = service_class_auto_list,
.off = offsetof(service_t, s_auto),
},
{
.type = PT_STR,
.islist = 1,
Expand Down Expand Up @@ -821,10 +842,11 @@ service_destroy(service_t *t, int delconf)
}

void
service_set_enabled(service_t *t, int enabled)
service_set_enabled(service_t *t, int enabled, int _auto)
{
if (t->s_enabled != !!enabled) {
t->s_enabled = !!enabled;
t->s_auto = _auto;
service_class_notify_enabled(t);
service_request_save(t, 0);
idnode_notify_simple(&t->s_id);
Expand Down
10 changes: 9 additions & 1 deletion src/service.h
Expand Up @@ -191,6 +191,13 @@ typedef struct service_lcn {
} service_lcn_t;


/**
*
*/
#define SERVICE_AUTO_NORMAL 0
#define SERVICE_AUTO_OFF 1
#define SERVICE_AUTO_PAT_MISSING 2

/**
*
*/
Expand Down Expand Up @@ -280,6 +287,7 @@ typedef struct service {
* subscription scheduling.
*/
int s_enabled;
int s_auto;

LIST_ENTRY(service) s_active_link;

Expand Down Expand Up @@ -521,7 +529,7 @@ int service_is_other(service_t *t);

int service_is_encrypted ( service_t *t );

void service_set_enabled ( service_t *t, int enabled );
void service_set_enabled ( service_t *t, int enabled, int _auto );

void service_destroy(service_t *t, int delconf);

Expand Down

0 comments on commit f20bab4

Please sign in to comment.