• Daniel Scheller's avatar
    media: dvb-frontends/stv0367: improve QAM fe_status · d105d083
    Daniel Scheller authored
    While cab_state->state gives a quite accurate indication of the demod
    signal status, it might be incorrect if cab_algo() wasn't able to
    determine the exact status, with cab_algo() being the only place where
    this status was updated from, and it is only called upon tuning to new
    parameters passed to set_frontend(). Thus, the status will be wrong
    until the demod is retuned. With the cab_signal_type parsing in
    read_status(), this results in unusual fe_states like FE_HAS_SIGNAL |
    FE_HAS_CARRIER | FE_HAS_LOCK, which, while userspace applications check
    for FE_HAS_LOCK and work fine, leads to missing CNR or UCB stats.
    
    Fix this by re-reading CAB_FSM_STATUS and updating cab_state->state() in
    read_status(). While at it, refactor the fsm/qamfeclock and the
    fsm->signaltype parsing into separate functions to make things cleaner
    and deduplicate code. Also, assume full QAM FEC lock equals full
    FE_STATUS.
    Signed-off-by: default avatarDaniel Scheller <d.scheller@gmx.net>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
    d105d083
stv0367.c 88.9 KB