soem debug fprintfs's plus manual gain option for rtl_sdr.c

development
David 2020-09-19 08:24:12 +09:30
parent 6fc09b8915
commit 0299f5fc2d
2 changed files with 34 additions and 11 deletions

View File

@ -62,6 +62,7 @@ void usage(void)
"\t[-s samplerate (default: 2048000 Hz)]\n"
"\t[-w tuner_bandwidth (default: automatic)]\n"
"\t[-d device_index or serial (default: 0)]\n"
"\t[-e extended gain -e 0xlmi (l,m,i single hex digits 0-f)\n"
"\t[-g gain (default: 0 for auto)]\n"
"\t[-p ppm_error (default: 0)]\n"
"%s"
@ -158,13 +159,21 @@ int main(int argc, char **argv)
uint32_t samp_rate = DEFAULT_SAMPLE_RATE;
uint32_t out_block_size = DEFAULT_BUF_LENGTH;
int verbosity = 0;
while ((opt = getopt(argc, argv, "d:f:g:s:w:b:n:p:O:SNHv")) != -1) {
int ext_gain = 0;
int gains_hex, lna_gain, mixer_gain, vga_gain;
while ((opt = getopt(argc, argv, "d:e:f:g:s:w:b:n:p:O:SNHv")) != -1) {
switch (opt) {
case 'd':
dev_index = verbose_device_search(optarg);
dev_given = 1;
break;
case 'e':
ext_gain = 1;
gains_hex = (int)strtol(optarg, NULL, 16);
lna_gain = gains_hex >> 8; mixer_gain = (gains_hex >> 4) & 0xf; vga_gain = gains_hex & 0xf;
fprintf(stderr, "lna_gain: %d mixer_gain: %d vga_gain: %d\n", lna_gain, mixer_gain, vga_gain);
break;
case 'f':
frequency = (uint32_t)atofs(optarg);
break;
@ -270,15 +279,20 @@ int main(int argc, char **argv)
/* Set the frequency */
verbose_set_frequency(dev, frequency);
if (0 == gain) {
/* Enable automatic gain */
if (ext_gain == 0) {
if (0 == gain) {
/* Enable automatic gain */
verbose_auto_gain(dev);
} else {
} else {
/* Enable manual gain */
gain = nearest_gain(dev, gain);
verbose_gain_set(dev, gain);
}
}
} else {
fprintf(stderr, "setting extended gain....\n");
rtlsdr_set_tuner_gain_ext(dev, lna_gain, mixer_gain, vga_gain);
}
if (rtlOpts) {
rtlsdr_set_opt_string(dev, rtlOpts, verbosity);
}

View File

@ -784,8 +784,8 @@ static int r82xx_set_pll_yc(struct r82xx_priv *priv, uint32_t freq)
/* Disable frac pll */
rc = r82xx_write_reg_mask(priv, 0x12, 0x08, 0x08);
if(rc < 0) {
if (priv->cfg->verbose)
fprintf(stderr, "r82xx_set_pll_yc(): error writing 'disable frac pll' into i2c reg 0x12\n");
if (priv->cfg->verbose)
fprintf(stderr, "r82xx_set_pll_yc(): error writing 'disable frac pll' into i2c reg 0x12\n");
return rc;
}
}
@ -1373,10 +1373,16 @@ int r82xx_set_gain(struct r82xx_priv *priv, int set_manual_gain, int gain,
int new_if_mode = priv->last_if_mode;
uint8_t data[4];
fprintf(stderr, "r82xx_set_gain() set_manual_gain: %d gain: %d extended_mode: %d lna: %d mixer: %d vga_%d\n",
set_manual_gain, gain, extended_mode, lna_gain_idx, mixer_gain_idx, vga_gain_idx);
if (extended_mode || set_manual_gain) {
if (set_manual_gain) {
r82xx_get_rf_gain_index(gain, &lna_gain_idx, &mixer_gain_idx);
fprintf(stderr, "after r82xx_get_rf_gain_index()\n");
fprintf(stderr, " lna_gain: %d rf_gain: %d\n", lna_gain_idx, mixer_gain_idx);
new_if_mode = 10000 + 8;
}
/* LNA auto off == manual */
@ -1436,7 +1442,7 @@ int r82xx_set_gain(struct r82xx_priv *priv, int set_manual_gain, int gain,
/* Set VGA */
rc = r82xx_set_if_mode(priv, new_if_mode, rtl_vga_control);
return rc;
}
@ -1460,7 +1466,8 @@ int r82xx_get_if_gain(struct r82xx_priv *priv)
int r82xx_set_if_mode(struct r82xx_priv *priv, int if_mode, int *rtl_vga_control)
{
int rc = 0, vga_gain_idx = 0;
fprintf(stderr, " r82xx_set_if_mode() ifmode: %d\n", vga_gain_idx);
if (rtl_vga_control)
*rtl_vga_control = 0;
@ -1493,6 +1500,8 @@ int r82xx_set_if_mode(struct r82xx_priv *priv, int if_mode, int *rtl_vga_control
(vga_gain_idx & 0x0f), (-12.0 + 3.5 * (vga_gain_idx & 0x0f)),
( (vga_gain_idx & 0x10) && rtl_vga_control ) ? "" : "de" );
#endif
fprintf(stderr, " vga_gain_idx: %d\n", vga_gain_idx);
rc = r82xx_write_reg_mask(priv, 0x0c, vga_gain_idx, 0x1f);
if (rc < 0)
return rc;