// SPDX-License-Identifier: GPL-2.0-only /* * vivid-radio-common.c - common radio rx/tx support functions. * * Copyright 2014 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
*/
/* * Initialize the RDS generator. If we can loop, then the RDS generator * is set up with the values from the RDS TX controls, otherwise it * will fill in standard values using one of two alternates.
*/ void vivid_radio_rds_init(struct vivid_dev *dev)
{ struct vivid_rds_gen *rds = &dev->rds_gen; bool alt = dev->radio_rx_rds_use_alternates;
/* Do nothing, blocks will be filled by the transmitter */ if (dev->radio_rds_loop && !dev->radio_tx_rds_controls) return;
/* * Calculate the emulated signal quality taking into account the frequency * the transmitter is using.
*/ staticvoid vivid_radio_calc_sig_qual(struct vivid_dev *dev)
{ int mod = 16000; int delta = 800; int sig_qual, sig_qual_tx = mod;
/* * For SW and FM there is a channel every 1000 kHz, for AM there is one * every 100 kHz.
*/ if (dev->radio_rx_freq <= AM_FREQ_RANGE_HIGH) {
mod /= 10;
delta /= 10;
}
sig_qual = (dev->radio_rx_freq + delta) % mod - delta; if (dev->has_radio_tx)
sig_qual_tx = dev->radio_rx_freq - dev->radio_tx_freq; if (abs(sig_qual_tx) <= abs(sig_qual)) {
sig_qual = sig_qual_tx; /* * Zero the internal rds buffer if we are going to loop * rds blocks.
*/ if (!dev->radio_rds_loop && !dev->radio_tx_rds_controls)
memset(dev->rds_gen.data, 0, sizeof(dev->rds_gen.data));
dev->radio_rds_loop = dev->radio_rx_freq >= FM_FREQ_RANGE_LOW;
} else {
dev->radio_rds_loop = false;
} if (dev->radio_rx_freq <= AM_FREQ_RANGE_HIGH)
sig_qual *= 10;
dev->radio_rx_sig_qual = sig_qual;
}
/* * For both receiver and transmitter recalculate the signal quality * (since that depends on both frequencies) and re-init the rds * generator.
*/
vivid_radio_calc_sig_qual(dev);
vivid_radio_rds_init(dev); return 0;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.