|
@@ -1053,6 +1053,16 @@ static struct dtv_cmds_h dtv_cmds[DTV_MAX_COMMAND + 1] = {
|
|
|
_DTV_CMD(DTV_ATSCMH_SCCC_CODE_MODE_B, 0, 0),
|
|
|
_DTV_CMD(DTV_ATSCMH_SCCC_CODE_MODE_C, 0, 0),
|
|
|
_DTV_CMD(DTV_ATSCMH_SCCC_CODE_MODE_D, 0, 0),
|
|
|
+
|
|
|
+ /* Statistics API */
|
|
|
+ _DTV_CMD(DTV_STAT_SIGNAL_STRENGTH, 0, 0),
|
|
|
+ _DTV_CMD(DTV_STAT_CNR, 0, 0),
|
|
|
+ _DTV_CMD(DTV_STAT_PRE_ERROR_BIT_COUNT, 0, 0),
|
|
|
+ _DTV_CMD(DTV_STAT_PRE_TOTAL_BIT_COUNT, 0, 0),
|
|
|
+ _DTV_CMD(DTV_STAT_POST_ERROR_BIT_COUNT, 0, 0),
|
|
|
+ _DTV_CMD(DTV_STAT_POST_TOTAL_BIT_COUNT, 0, 0),
|
|
|
+ _DTV_CMD(DTV_STAT_ERROR_BLOCK_COUNT, 0, 0),
|
|
|
+ _DTV_CMD(DTV_STAT_TOTAL_BLOCK_COUNT, 0, 0),
|
|
|
};
|
|
|
|
|
|
static void dtv_property_dump(struct dvb_frontend *fe, struct dtv_property *tvp)
|
|
@@ -1443,6 +1453,31 @@ static int dtv_property_process_get(struct dvb_frontend *fe,
|
|
|
tvp->u.data = c->lna;
|
|
|
break;
|
|
|
|
|
|
+ /* Fill quality measures */
|
|
|
+ case DTV_STAT_SIGNAL_STRENGTH:
|
|
|
+ tvp->u.st = c->strength;
|
|
|
+ break;
|
|
|
+ case DTV_STAT_CNR:
|
|
|
+ tvp->u.st = c->cnr;
|
|
|
+ break;
|
|
|
+ case DTV_STAT_PRE_ERROR_BIT_COUNT:
|
|
|
+ tvp->u.st = c->pre_bit_error;
|
|
|
+ break;
|
|
|
+ case DTV_STAT_PRE_TOTAL_BIT_COUNT:
|
|
|
+ tvp->u.st = c->pre_bit_count;
|
|
|
+ break;
|
|
|
+ case DTV_STAT_POST_ERROR_BIT_COUNT:
|
|
|
+ tvp->u.st = c->post_bit_error;
|
|
|
+ break;
|
|
|
+ case DTV_STAT_POST_TOTAL_BIT_COUNT:
|
|
|
+ tvp->u.st = c->post_bit_count;
|
|
|
+ break;
|
|
|
+ case DTV_STAT_ERROR_BLOCK_COUNT:
|
|
|
+ tvp->u.st = c->block_error;
|
|
|
+ break;
|
|
|
+ case DTV_STAT_TOTAL_BLOCK_COUNT:
|
|
|
+ tvp->u.st = c->block_count;
|
|
|
+ break;
|
|
|
default:
|
|
|
return -EINVAL;
|
|
|
}
|