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 if_mode:
* 0 for fixed VGA (=default)
* 1 for automatic VGA
* 5000 .. 15000: IF gain := if_mode -10000 (in 1/10th dB) == VGA gain for R820T/2
* examples:
* 10000: if gain == vga gain == 0 dB
* 10450: if gain == vga gain == 45.0 dB for R820T/2
* 20000 .. 20015: IF gain == VGA index from parameter if_mode
* set if_mode := VGA_idx +20000
* 0 for automatic VGA
* -5000 .. +5000 value range - except 0 - for fixed IF gain in tenths of a dB, 115 means 11.5 dB.
* use -1 or +1 in case you neither want attenuation nor gain.
* this equals the VGA gain for R820T/2 tuner.
* accepted values are in range -47 .. 408 in tenth of a dB == -4.7 .. +40.8 dB.
* the exact values may slightly change with better measured values.
* 10008 for fixed VGA (=default)
* 10000 .. 10015: IF gain == VGA index from parameter if_mode
* set if_mode by index: index := VGA_idx +10000
*
* \return 0 on success
*/

View File

@ -2421,7 +2421,7 @@ static int parse(char *message, rtlsdr_dev_t *dev)
/* commands:
* g <register> # get tuner i2c register
* 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 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 ]
* v <sideband> # set tuner sideband inversion
*
* a <tunerAgcVariant> # 0: LNA/Mixer = auto; VGA = fixed 26.5 dB (=default)
* # -2: LNA/Mixer = auto; VGA = auto
* # -1: LNA/Mixer = last value from prev rtlsdr_set_tuner_gain; VGA = auto
* # >0: LNA/Mixer = from rtlsdr_set_tuner_gain(tunerAgcMode); VGA = auto
* a <tunerIFmode> # 0: VGA = auto
* # g in -5000 .. +5000: VGA = g / 10 dB
* # 10000+x: VGA idx = x
* m <gain> # set tuner gain
*
* 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"
"c <frequency>\n"
"v <sideband>\n"
"a <tunerAgcVariant>\n"
"a <tunerIFmode>\n"
"m <tuner gain>\n"
"M <gainMode>\n" );
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
"\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\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"
#ifdef WITH_UDP_SERVER
"\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);
if (verbose)
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);
}
else if (!strncmp(optPart, "ifm=", 4)) { /* new option name */
int agcv = atoi(optPart +4);
int ifmode = atoi(optPart +4);
if (verbose)
fprintf(stderr, "\nrtlsdr_set_opt_string(): parsed tuner if_mode = %d\n", agcv);
ret = rtlsdr_set_tuner_if_mode(dev, agcv);
fprintf(stderr, "\nrtlsdr_set_opt_string(): parsed tuner if_mode = %d\n", ifmode);
ret = rtlsdr_set_tuner_if_mode(dev, ifmode);
}
else if (!strncmp(optPart, "dagc=", 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 */
if (extended_mode) {
priv->last_if_mode = vga_gain_idx +20000;
priv->last_if_mode = vga_gain_idx +10000;
}
} 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 old_mode = priv->last_if_mode;
if (if_mode < 0) {
if_mode = 1;
}
if (rtl_vga_control)
*rtl_vga_control = 0;
if ( 1 == if_mode || 20016 == if_mode ) {
if ( 0 == if_mode || 10016 == if_mode ) {
vga_gain_idx = 0x10;
}
else if ( 5000 <= if_mode && if_mode < 15000 ) {
vga_gain_idx = r82xx_get_if_gain_index(if_mode -10000);
else if ( -5000 <= if_mode && if_mode < 5000 ) {
vga_gain_idx = r82xx_get_if_gain_index(if_mode);
}
else if ( 20000 <= if_mode && if_mode < 20016 ) {
vga_gain_idx = if_mode -20000;
else if ( 10000 <= if_mode && if_mode < 10016 ) {
vga_gain_idx = if_mode -10000;
}
else { /* assume 0 == default */
if ( 0 != if_mode ) {