mirror of https://github.com/drowe67/librtlsdr.git
rtlsdr_set_tuner_if_mode() further simplified
* modified API mode values/ranges Signed-off-by: hayati ayguen <h_ayguen@web.de>development
parent
bc15b17dd0
commit
a500314933
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 ) {
|
||||
|
|
Loading…
Reference in New Issue