rtlsdr_set_tuner_if_mode() further simplified

* modified API mode values/ranges

Signed-off-by: hayati ayguen <h_ayguen@web.de>
development
hayati ayguen 2019-08-20 20:45:46 +00:00
parent bc15b17dd0
commit a500314933
3 changed files with 26 additions and 28 deletions

View File

@ -308,14 +308,15 @@ RTLSDR_API int rtlsdr_set_tuner_gain_mode(rtlsdr_dev_t *dev, int manual);
* *
* \param dev the device handle given by rtlsdr_open() * \param dev the device handle given by rtlsdr_open()
* \param if_mode: * \param if_mode:
* 0 for fixed VGA (=default) * 0 for automatic VGA
* 1 for automatic VGA * -5000 .. +5000 value range - except 0 - for fixed IF gain in tenths of a dB, 115 means 11.5 dB.
* 5000 .. 15000: IF gain := if_mode -10000 (in 1/10th dB) == VGA gain for R820T/2 * use -1 or +1 in case you neither want attenuation nor gain.
* examples: * this equals the VGA gain for R820T/2 tuner.
* 10000: if gain == vga gain == 0 dB * accepted values are in range -47 .. 408 in tenth of a dB == -4.7 .. +40.8 dB.
* 10450: if gain == vga gain == 45.0 dB for R820T/2 * the exact values may slightly change with better measured values.
* 20000 .. 20015: IF gain == VGA index from parameter if_mode * 10008 for fixed VGA (=default)
* set if_mode := VGA_idx +20000 * 10000 .. 10015: IF gain == VGA index from parameter if_mode
* set if_mode by index: index := VGA_idx +10000
* *
* \return 0 on success * \return 0 on success
*/ */

View File

@ -2421,7 +2421,7 @@ static int parse(char *message, rtlsdr_dev_t *dev)
/* commands: /* commands:
* g <register> # get tuner i2c register * g <register> # get tuner i2c register
* s <register> <value> [<mask>] # set tuner i2c register once * s <register> <value> [<mask>] # set tuner i2c register once
* S <register> <value> [<mask>] # set tuner i2c register permanent * S <register> <value> [<mask>] # set tuner i2c register permanent
* *
* i <IFfrequency> # set tuner IF frequency once. value in [ 0 .. 28 800 000 ] or < 0 for reset * i <IFfrequency> # set tuner IF frequency once. value in [ 0 .. 28 800 000 ] or < 0 for reset
* I <IFfrequency> # set tuner IF frequency permanent * I <IFfrequency> # set tuner IF frequency permanent
@ -2431,10 +2431,9 @@ static int parse(char *message, rtlsdr_dev_t *dev)
* c <frequency> # set tuner bandwidth center in output. value in [ -1 600 000 .. 1 600 000 ] * c <frequency> # set tuner bandwidth center in output. value in [ -1 600 000 .. 1 600 000 ]
* v <sideband> # set tuner sideband inversion * v <sideband> # set tuner sideband inversion
* *
* a <tunerAgcVariant> # 0: LNA/Mixer = auto; VGA = fixed 26.5 dB (=default) * a <tunerIFmode> # 0: VGA = auto
* # -2: LNA/Mixer = auto; VGA = auto * # g in -5000 .. +5000: VGA = g / 10 dB
* # -1: LNA/Mixer = last value from prev rtlsdr_set_tuner_gain; VGA = auto * # 10000+x: VGA idx = x
* # >0: LNA/Mixer = from rtlsdr_set_tuner_gain(tunerAgcMode); VGA = auto
* m <gain> # set tuner gain * m <gain> # set tuner gain
* *
* M <gainMode> # 0 : tuner agc off; digital rtl agc off * M <gainMode> # 0 : tuner agc off; digital rtl agc off
@ -2676,7 +2675,7 @@ static int parse(char *message, rtlsdr_dev_t *dev)
"b <bandwidth>\n" "b <bandwidth>\n"
"c <frequency>\n" "c <frequency>\n"
"v <sideband>\n" "v <sideband>\n"
"a <tunerAgcVariant>\n" "a <tunerIFmode>\n"
"m <tuner gain>\n" "m <tuner gain>\n"
"M <gainMode>\n" ); "M <gainMode>\n" );
sendto(dev->udpS, response, strlen(response), 0, (struct sockaddr*) &dev->si_other, dev->slen); sendto(dev->udpS, response, strlen(response), 0, (struct sockaddr*) &dev->si_other, dev->slen);
@ -3812,7 +3811,7 @@ const char * rtlsdr_get_opt_help(int longInfo)
return return
"\t[-O\tset RTL options string seperated with ':' ]\n" "\t[-O\tset RTL options string seperated with ':' ]\n"
"\t\tverbose:f=<freqHz>:bw=<bw_in_kHz>:bc=<if_in_Hz>:sb=<sideband>\n" "\t\tverbose:f=<freqHz>:bw=<bw_in_kHz>:bc=<if_in_Hz>:sb=<sideband>\n"
"\t\tagc=<tuner_gain_mode>:agcv=<>:gain=<tenth_dB>:dagc=<rtl_agc>\n" "\t\tagc=<tuner_gain_mode>:gain=<tenth_dB>:ifm=<tuner_if_mode>:dagc=<rtl_agc>\n"
"\t\tds=<direct_sampling_mode>:T=<bias_tee>\n" "\t\tds=<direct_sampling_mode>:T=<bias_tee>\n"
#ifdef WITH_UDP_SERVER #ifdef WITH_UDP_SERVER
"\t\tport=<udp_port default with 1>\n" "\t\tport=<udp_port default with 1>\n"
@ -3894,13 +3893,15 @@ int rtlsdr_set_opt_string(rtlsdr_dev_t *dev, const char *opts, int verbose)
int agcv = atoi(optPart +5); int agcv = atoi(optPart +5);
if (verbose) if (verbose)
fprintf(stderr, "\nrtlsdr_set_opt_string(): parsed tuner if_mode = %d\n", agcv); fprintf(stderr, "\nrtlsdr_set_opt_string(): parsed tuner if_mode = %d\n", agcv);
if (agcv < 0)
agcv = 0;
ret = rtlsdr_set_tuner_if_mode(dev, agcv); ret = rtlsdr_set_tuner_if_mode(dev, agcv);
} }
else if (!strncmp(optPart, "ifm=", 4)) { /* new option name */ else if (!strncmp(optPart, "ifm=", 4)) { /* new option name */
int agcv = atoi(optPart +4); int ifmode = atoi(optPart +4);
if (verbose) if (verbose)
fprintf(stderr, "\nrtlsdr_set_opt_string(): parsed tuner if_mode = %d\n", agcv); fprintf(stderr, "\nrtlsdr_set_opt_string(): parsed tuner if_mode = %d\n", ifmode);
ret = rtlsdr_set_tuner_if_mode(dev, agcv); ret = rtlsdr_set_tuner_if_mode(dev, ifmode);
} }
else if (!strncmp(optPart, "dagc=", 5)) { else if (!strncmp(optPart, "dagc=", 5)) {
int on = atoi(optPart +5); int on = atoi(optPart +5);

View File

@ -1114,7 +1114,7 @@ int r82xx_set_gain(struct r82xx_priv *priv, int set_manual_gain, int gain,
/* prepare VGA */ /* prepare VGA */
if (extended_mode) { if (extended_mode) {
priv->last_if_mode = vga_gain_idx +20000; priv->last_if_mode = vga_gain_idx +10000;
} }
} else { } else {
@ -1145,21 +1145,17 @@ int r82xx_set_if_mode(struct r82xx_priv *priv, int if_mode, int *rtl_vga_control
int rc = 0, vga_gain_idx = 0; int rc = 0, vga_gain_idx = 0;
int old_mode = priv->last_if_mode; int old_mode = priv->last_if_mode;
if (if_mode < 0) {
if_mode = 1;
}
if (rtl_vga_control) if (rtl_vga_control)
*rtl_vga_control = 0; *rtl_vga_control = 0;
if ( 1 == if_mode || 20016 == if_mode ) { if ( 0 == if_mode || 10016 == if_mode ) {
vga_gain_idx = 0x10; vga_gain_idx = 0x10;
} }
else if ( 5000 <= if_mode && if_mode < 15000 ) { else if ( -5000 <= if_mode && if_mode < 5000 ) {
vga_gain_idx = r82xx_get_if_gain_index(if_mode -10000); vga_gain_idx = r82xx_get_if_gain_index(if_mode);
} }
else if ( 20000 <= if_mode && if_mode < 20016 ) { else if ( 10000 <= if_mode && if_mode < 10016 ) {
vga_gain_idx = if_mode -20000; vga_gain_idx = if_mode -10000;
} }
else { /* assume 0 == default */ else { /* assume 0 == default */
if ( 0 != if_mode ) { if ( 0 != if_mode ) {