mirror of
https://github.com/rtlsdrblog/rtl-sdr-blog.git
synced 2024-12-26 02:48:31 +01:00
disable DAGC by default, add control function
This adds rtlsdr_set_agc_mode() to enable/disable it. Thanks to Leif Asbrink for finding this setting. Signed-off-by: Steve Markgraf <steve@steve-m.de>
This commit is contained in:
parent
98d1b864b6
commit
f3cf83e3d7
@ -206,6 +206,15 @@ RTLSDR_API uint32_t rtlsdr_get_sample_rate(rtlsdr_dev_t *dev);
|
||||
*/
|
||||
RTLSDR_API int rtlsdr_set_testmode(rtlsdr_dev_t *dev, int on);
|
||||
|
||||
/*!
|
||||
* Enable or disable the internal digital AGC of the RTL2832.
|
||||
*
|
||||
* \param dev the device handle given by rtlsdr_open()
|
||||
* \param digital AGC mode, 1 means enabled, 0 disabled
|
||||
* \return 0 on success
|
||||
*/
|
||||
RTLSDR_API int rtlsdr_set_agc_mode(rtlsdr_dev_t *dev, int on);
|
||||
|
||||
/* streaming functions */
|
||||
|
||||
RTLSDR_API int rtlsdr_reset_buffer(rtlsdr_dev_t *dev);
|
||||
|
@ -485,12 +485,13 @@ void rtlsdr_init_baseband(rtlsdr_dev_t *dev)
|
||||
for (i = 0; i < sizeof (fir_coeff); i++)
|
||||
rtlsdr_demod_write_reg(dev, 1, 0x1c + i, fir_coeff[i], 1);
|
||||
|
||||
rtlsdr_demod_write_reg(dev, 0, 0x19, 0x25, 1);
|
||||
/* enable SDR mode, disable DAGC (bit 5) */
|
||||
rtlsdr_demod_write_reg(dev, 0, 0x19, 0x05, 1);
|
||||
|
||||
/* init FSM state-holding register */
|
||||
rtlsdr_demod_write_reg(dev, 1, 0x93, 0xf0, 1);
|
||||
|
||||
/* disable AGC (en_dagc, bit 0) */
|
||||
/* disable AGC (en_dagc, bit 0) (this seems to have no effect) */
|
||||
rtlsdr_demod_write_reg(dev, 1, 0x11, 0x00, 1);
|
||||
|
||||
/* disable PID filter (enable_PID = 0) */
|
||||
@ -842,7 +843,15 @@ int rtlsdr_set_testmode(rtlsdr_dev_t *dev, int on)
|
||||
if (!dev)
|
||||
return -1;
|
||||
|
||||
return rtlsdr_demod_write_reg(dev, 0, 0x19, on ? 0x23 : 0x25 , 1);
|
||||
return rtlsdr_demod_write_reg(dev, 0, 0x19, on ? 0x03 : 0x05, 1);
|
||||
}
|
||||
|
||||
int rtlsdr_set_agc_mode(rtlsdr_dev_t *dev, int on)
|
||||
{
|
||||
if (!dev)
|
||||
return -1;
|
||||
|
||||
return rtlsdr_demod_write_reg(dev, 0, 0x19, on ? 0x25 : 0x05, 1);
|
||||
}
|
||||
|
||||
static rtlsdr_dongle_t *find_known_device(uint16_t vid, uint16_t pid)
|
||||
|
Loading…
Reference in New Issue
Block a user