From: Mauro Carvalho Chehab Date: Sat, 2 Mar 2013 19:07:58 +0000 (-0300) Subject: dvb-fe: Supress statistics if signal lock vanishes X-Git-Tag: v4l-utils-0.9.4~50 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1510884815f9aad4d167eafd91cd480cbeb596d5;p=platform%2Fupstream%2Fv4l-utils.git dvb-fe: Supress statistics if signal lock vanishes If for some reason the signal unlocks, the DVB driver should be marking the stats as unavailable. Make the dvbv5 library to honourg it. Signed-off-by: Mauro Carvalho Chehab --- diff --git a/lib/libdvbv5/dvb-fe.c b/lib/libdvbv5/dvb-fe.c index f20e748..550b6e2 100644 --- a/lib/libdvbv5/dvb-fe.c +++ b/lib/libdvbv5/dvb-fe.c @@ -1074,9 +1074,9 @@ static void dvb_fe_update_counters(struct dvb_v5_fe_parms *parms) for (i = 0; i < MAX_DTV_STATS; i++) { count = dvb_fe_retrieve_stats_layer(parms, DTV_STAT_POST_TOTAL_BIT_COUNT, i); - if (count) { + if (count && count->scale != FE_SCALE_NOT_AVAILABLE) { error = dvb_fe_retrieve_stats_layer(parms, DTV_STAT_POST_ERROR_BIT_COUNT, i); - if (!error) { + if (!error || error->scale == FE_SCALE_NOT_AVAILABLE) { parms->stats.has_post_ber[i] = 0; } else if(count->uvalue != parms->stats.cur[i].post_bit_count) { parms->stats.prev[i].post_bit_count = parms->stats.cur[i].post_bit_count; @@ -1090,9 +1090,9 @@ static void dvb_fe_update_counters(struct dvb_v5_fe_parms *parms) } else parms->stats.has_post_ber[i] = 0; count = dvb_fe_retrieve_stats_layer(parms, DTV_STAT_PRE_TOTAL_BIT_COUNT, i); - if (count) { + if (count && count->scale != FE_SCALE_NOT_AVAILABLE) { error = dvb_fe_retrieve_stats_layer(parms, DTV_STAT_PRE_ERROR_BIT_COUNT, i); - if (!error) { + if (!error || error->scale == FE_SCALE_NOT_AVAILABLE) { parms->stats.has_pre_ber[i] = 0; } else if(count->uvalue != parms->stats.cur[i].pre_bit_count) { parms->stats.prev[i].pre_bit_count = parms->stats.cur[i].pre_bit_count; @@ -1106,9 +1106,9 @@ static void dvb_fe_update_counters(struct dvb_v5_fe_parms *parms) } else parms->stats.has_pre_ber[i] = 0; count = dvb_fe_retrieve_stats_layer(parms, DTV_STAT_TOTAL_BLOCK_COUNT, i); - if (count) { + if (count && count->scale != FE_SCALE_NOT_AVAILABLE) { error = dvb_fe_retrieve_stats_layer(parms, DTV_STAT_ERROR_BLOCK_COUNT, i); - if (!error) { + if (!error || error->scale == FE_SCALE_NOT_AVAILABLE) { parms->stats.has_per[i] = 0; } else if (count->uvalue != parms->stats.cur[i].block_count) { parms->stats.prev[i].block_count = parms->stats.cur[i].block_count;