mirror of https://github.com/drowe67/librtlsdr.git
bugfix and clarify API function rtlsdr_get_tuner_gain()
Signed-off-by: hayati ayguen <h_ayguen@web.de>development
parent
d1395e22ba
commit
3aa88a9885
|
@ -284,7 +284,7 @@ RTLSDR_API int rtlsdr_set_tuner_band_center(rtlsdr_dev_t *dev, int32_t if_band_c
|
|||
RTLSDR_API int rtlsdr_set_tuner_sideband(rtlsdr_dev_t *dev, int sideband);
|
||||
|
||||
/*!
|
||||
* Get actual gain the device is configured to.
|
||||
* Get actual (RF / HF) gain the device is configured to - excluding the IF gain.
|
||||
*
|
||||
* \param dev the device handle given by rtlsdr_open()
|
||||
* \return 0 on error, gain in tenths of a dB, 115 means 11.5 dB.
|
||||
|
|
|
@ -145,6 +145,9 @@ int r82xx_standby(struct r82xx_priv *priv);
|
|||
int r82xx_init(struct r82xx_priv *priv);
|
||||
int r82xx_set_freq(struct r82xx_priv *priv, uint32_t freq);
|
||||
int r82xx_set_gain(struct r82xx_priv *priv, int set_manual_gain, int gain, int extended_mode, int lna_gain, int mixer_gain, int vga_gain, int *rtl_vga_control);
|
||||
int r82xx_get_rf_gain(struct r82xx_priv *priv);
|
||||
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 r82xx_set_i2c_register(struct r82xx_priv *priv, unsigned i2c_register, unsigned data, unsigned mask);
|
||||
|
|
|
@ -212,7 +212,7 @@ struct rtlsdr_dev {
|
|||
int tuner_if_freq;
|
||||
int tuner_sideband;
|
||||
int corr; /* ppm */
|
||||
int gain; /* tenth dB */
|
||||
/* int gain; * tenth dB */
|
||||
enum rtlsdr_ds_mode direct_sampling_mode;
|
||||
uint32_t direct_sampling_threshold; /* Hz */
|
||||
struct e4k_state e4k_s;
|
||||
|
@ -1589,11 +1589,6 @@ int rtlsdr_set_tuner_gain(rtlsdr_dev_t *dev, int gain)
|
|||
rtlsdr_set_i2c_repeater(dev, 0);
|
||||
}
|
||||
|
||||
if (!r)
|
||||
dev->gain = gain;
|
||||
else
|
||||
dev->gain = 0;
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
|
@ -1610,11 +1605,6 @@ int rtlsdr_set_tuner_gain_ext(rtlsdr_dev_t *dev, int lna_gain, int mixer_gain, i
|
|||
rtlsdr_set_i2c_repeater(dev, 0);
|
||||
}
|
||||
|
||||
if (!r)
|
||||
dev->gain = lna_gain + mixer_gain + vga_gain;
|
||||
else
|
||||
dev->gain = 0;
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
|
@ -1637,6 +1627,8 @@ int rtlsdr_set_tuner_if_mode(rtlsdr_dev_t *dev, int if_mode)
|
|||
|
||||
int rtlsdr_get_tuner_gain(rtlsdr_dev_t *dev)
|
||||
{
|
||||
int rf_gain = 0;
|
||||
|
||||
#ifdef _ENABLE_RPC
|
||||
if (rtlsdr_rpc_is_enabled())
|
||||
{
|
||||
|
@ -1647,7 +1639,11 @@ int rtlsdr_get_tuner_gain(rtlsdr_dev_t *dev)
|
|||
if (!dev)
|
||||
return 0;
|
||||
|
||||
return dev->gain;
|
||||
|
||||
if (dev->tuner_type == RTLSDR_TUNER_R820T)
|
||||
rf_gain = r82xx_get_rf_gain(&dev->r82xx_p);
|
||||
|
||||
return rf_gain;
|
||||
}
|
||||
|
||||
int rtlsdr_set_tuner_if_gain(rtlsdr_dev_t *dev, int stage, int gain)
|
||||
|
|
|
@ -1083,6 +1083,37 @@ static int r82xx_get_if_gain_index(int gain)
|
|||
return vga_index;
|
||||
}
|
||||
|
||||
static int r82xx_get_lna_gain_from_index(int lna_index)
|
||||
{
|
||||
int i, total_gain = 0;
|
||||
if ( lna_index < 0 || lna_index > 15 )
|
||||
return 0;
|
||||
for ( i = 0; i <= lna_index; ++i )
|
||||
total_gain += r82xx_lna_gain_steps[i];
|
||||
return total_gain;
|
||||
}
|
||||
|
||||
static int r82xx_get_mixer_gain_from_index(int mixer_index)
|
||||
{
|
||||
int i, total_gain = 0;
|
||||
if ( mixer_index < 0 || mixer_index > 15 )
|
||||
return 0;
|
||||
for ( i = 0; i <= mixer_index; ++i )
|
||||
total_gain += r82xx_mixer_gain_steps[i];
|
||||
return total_gain;
|
||||
}
|
||||
|
||||
static int r82xx_get_vga_gain_from_index(int vga_index)
|
||||
{
|
||||
int i, total_gain = VGA_BASE_GAIN;
|
||||
if ( vga_index < 0 || vga_index > 15 )
|
||||
return 0;
|
||||
for ( i = 0; i <= vga_index; ++i )
|
||||
total_gain += r82xx_vga_gain_steps[i];
|
||||
return total_gain;
|
||||
}
|
||||
|
||||
|
||||
/* set HF gain (LNA/Mixer) and pass through for IF gain (VGA) */
|
||||
int r82xx_set_gain(struct r82xx_priv *priv, int set_manual_gain, int gain,
|
||||
int extended_mode, int lna_gain_idx, int mixer_gain_idx, int vga_gain_idx, int *rtl_vga_control)
|
||||
|
@ -1153,6 +1184,22 @@ int r82xx_set_gain(struct r82xx_priv *priv, int set_manual_gain, int gain,
|
|||
return rc;
|
||||
}
|
||||
|
||||
int r82xx_get_rf_gain(struct r82xx_priv *priv)
|
||||
{
|
||||
int lna_gain = r82xx_get_lna_gain_from_index(priv->last_LNA_value);
|
||||
int mix_gain = r82xx_get_mixer_gain_from_index(priv->last_Mixer_value);
|
||||
int gain = lna_gain + mix_gain;
|
||||
return gain;
|
||||
}
|
||||
|
||||
|
||||
int r82xx_get_if_gain(struct r82xx_priv *priv)
|
||||
{
|
||||
int vga_gain = r82xx_get_vga_gain_from_index(priv->last_VGA_value);
|
||||
return vga_gain;
|
||||
}
|
||||
|
||||
|
||||
/* set IF gain (VGA) */
|
||||
int r82xx_set_if_mode(struct r82xx_priv *priv, int if_mode, int *rtl_vga_control)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue