Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
bouquet: prepare storage for tags
  • Loading branch information
perexg committed Nov 8, 2014
1 parent f2f3c9d commit abef913
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 13 deletions.
2 changes: 1 addition & 1 deletion docs/html/config_bouquet.html
Expand Up @@ -5,7 +5,7 @@
the mux scan period. Note that bouquets may use more muxes and only
services from scanned muxes are added. The mux with bouquets might
require another scan when all muxes are discovered (manually using
a stream for the mux or reset the mux scan state to pending).
the rescan checkbox).
</p>

<p>
Expand Down
33 changes: 26 additions & 7 deletions src/bouquet.c
Expand Up @@ -247,7 +247,7 @@ bouquet_map_channel(bouquet_t *bq, service_t *t)
*
*/
void
bouquet_add_service(bouquet_t *bq, service_t *s, uint64_t lcn)
bouquet_add_service(bouquet_t *bq, service_t *s, uint64_t lcn, uint32_t tag)
{
service_lcn_t *tl;
channel_service_mapping_t *csm;
Expand Down Expand Up @@ -465,6 +465,15 @@ bouquet_get_channel_number(bouquet_t *bq, service_t *t)
return 0;
}

/*
*
*/
static uint32_t
bouquet_get_tag_number(bouquet_t *bq, service_t *t)
{
return 0;
}

/**
*
*/
Expand Down Expand Up @@ -692,16 +701,22 @@ bouquet_class_chtag_ref_set ( void *obj, const void *p )
static const void *
bouquet_class_services_get ( void *obj )
{
htsmsg_t *m = htsmsg_create_map();
htsmsg_t *m = htsmsg_create_map(), *e;
bouquet_t *bq = obj;
service_t *t;
int64_t lcn;
uint32_t tag;
size_t z;

/* Add all */
for (z = 0; z < bq->bq_services->is_count; z++) {
t = (service_t *)bq->bq_services->is_array[z];
htsmsg_add_s64(m, idnode_uuid_as_str(&t->s_id),
bouquet_get_channel_number0(bq, t));
e = htsmsg_create_map();
if ((lcn = bouquet_get_channel_number0(bq, t)) != 0)
htsmsg_add_s64(e, "lcn", lcn);
if ((tag = bouquet_get_tag_number(bq, t)) != 0)
htsmsg_add_s64(e, "tag", lcn);
htsmsg_add_msg(m, idnode_uuid_as_str(&t->s_id), e);
}

return m;
Expand Down Expand Up @@ -888,9 +903,11 @@ void
bouquet_service_resolve(void)
{
bouquet_t *bq;
htsmsg_t *e;
htsmsg_field_t *f;
service_t *s;
uint32_t lcn;
int64_t lcn;
uint32_t tag;
int saveflag;

lock_assert(&global_lock);
Expand All @@ -901,10 +918,12 @@ bouquet_service_resolve(void)
saveflag = bq->bq_saveflag;
if (bq->bq_enabled) {
HTSMSG_FOREACH(f, bq->bq_services_waiting) {
if (htsmsg_field_get_u32(f, &lcn)) continue;
if ((e = htsmsg_field_get_map(f)) == NULL) continue;
lcn = htsmsg_get_s64_or_default(e, "lcn", 0);
tag = htsmsg_get_u32_or_default(e, "tag", 0);
s = service_find_by_identifier(f->hmf_name);
if (s)
bouquet_add_service(bq, s, lcn);
bouquet_add_service(bq, s, lcn, tag);
}
}
htsmsg_destroy(bq->bq_services_waiting);
Expand Down
2 changes: 1 addition & 1 deletion src/bouquet.h
Expand Up @@ -82,7 +82,7 @@ bouquet_t * bouquet_find_by_source(const char *name, const char *src, int create

void bouquet_map_to_channels(bouquet_t *bq);
void bouquet_notify_channels(bouquet_t *bq);
void bouquet_add_service(bouquet_t *bq, service_t *s, uint64_t lcn);
void bouquet_add_service(bouquet_t *bq, service_t *s, uint64_t lcn, uint32_t tag);
void bouquet_completed(bouquet_t *bq, uint32_t seen);

uint64_t bouquet_get_channel_number(bouquet_t *bq, service_t *t);
Expand Down
8 changes: 4 additions & 4 deletions src/input/mpegts/dvb_psi.c
Expand Up @@ -399,7 +399,7 @@ dvb_desc_service_list
bs->svc = s;
TAILQ_INSERT_TAIL(&bi->services, bs, link);
} else if (bq) {
bouquet_add_service(bq, (service_t *)s, 0);
bouquet_add_service(bq, (service_t *)s, 0, 0);
}
if (save)
s->s_config_save((service_t*)s);
Expand Down Expand Up @@ -527,7 +527,7 @@ dvb_freesat_add_service
snprintf(name, sizeof(name), "%s: %s", bi->name, fr->name);
fr->bouquet = bouquet_find_by_source(name, src, 1);
}
bouquet_add_service(fr->bouquet, (service_t *)s, (int64_t)lcn * CHANNEL_SPLIT);
bouquet_add_service(fr->bouquet, (service_t *)s, (int64_t)lcn * CHANNEL_SPLIT, 0);
}

static void
Expand Down Expand Up @@ -1178,7 +1178,7 @@ dvb_bat_completed
dvb_bouquet_comment(bq, bi->mm);

TAILQ_FOREACH(bs, &bi->services, link)
bouquet_add_service(bq, (service_t *)bs->svc, 0);
bouquet_add_service(bq, (service_t *)bs->svc, 0, 0);

bouquet_completed(bq, bi->services_count);

Expand Down Expand Up @@ -1747,7 +1747,7 @@ dvb_fs_sdt_callback
s = mpegts_service_find(mux, service_id, 0, 1, &save);
charset = dvb_charset_find(mn, mux, s);
if (bq && s) {
bouquet_add_service(bq, (service_t *)s, 0);
bouquet_add_service(bq, (service_t *)s, 0, 0);
} else {
tvhtrace(mt->mt_name, " service not found (bq %p, svc %p)", bq, s);
}
Expand Down

0 comments on commit abef913

Please sign in to comment.