kopia lustrzana https://github.com/keenerd/rtl-sdr
Make some more functions available in the API and add DO_NOT_REATTACH compile option
rodzic
0d825fe08e
commit
8a85973283
|
@ -122,6 +122,12 @@ else (DETACH_KERNEL_DRIVER)
|
|||
message (STATUS "Building with kernel driver detaching disabled, use -DDETACH_KERNEL_DRIVER=ON to enable")
|
||||
endif (DETACH_KERNEL_DRIVER)
|
||||
|
||||
option(DO_NOT_REATTACH "Do not reattach kernel driver" OFF)
|
||||
if (DO_NOT_REATTACH)
|
||||
message (STATUS "Disabled reattaching of kernel driver")
|
||||
add_definitions(-DDO_NOT_REATTACH=1)
|
||||
endif (DO_NOT_REATTACH)
|
||||
|
||||
########################################################################
|
||||
# Add subdirectories
|
||||
########################################################################
|
||||
|
|
|
@ -386,6 +386,10 @@ RTLSDR_API int rtlsdr_read_async(rtlsdr_dev_t *dev,
|
|||
*/
|
||||
RTLSDR_API int rtlsdr_cancel_async(rtlsdr_dev_t *dev);
|
||||
|
||||
RTLSDR_API int rtlsdr_demod_write_reg(rtlsdr_dev_t *dev, uint8_t page, uint16_t addr, uint16_t val, uint8_t len);
|
||||
RTLSDR_API void rtlsdr_set_i2c_repeater(rtlsdr_dev_t *dev, int on);
|
||||
RTLSDR_API int rtlsdr_set_sample_freq_correction_f(rtlsdr_dev_t *dev, float correction);
|
||||
RTLSDR_API int rtlsdr_set_sample_freq_correction(rtlsdr_dev_t *dev, int ppm);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -724,6 +724,26 @@ int rtlsdr_set_if_freq(rtlsdr_dev_t *dev, uint32_t freq)
|
|||
return r;
|
||||
}
|
||||
|
||||
int rtlsdr_set_sample_freq_correction_f(rtlsdr_dev_t *dev, float correction)
|
||||
{
|
||||
int r = 0;
|
||||
uint8_t tmp;
|
||||
int16_t offs;
|
||||
int32_t offs1 = (int16_t)(correction * -1 * TWO_POW(24));
|
||||
if(offs1 > 0x1FFF) offs = 0x1FFF;
|
||||
else if(offs1 < -0x1FFF) offs = -0x1FFF;
|
||||
else offs = offs1;
|
||||
rtlsdr_set_i2c_repeater(dev, 0);
|
||||
|
||||
tmp = offs & 0xff;
|
||||
r |= rtlsdr_demod_write_reg(dev, 1, 0x3f, tmp, 1);
|
||||
tmp = (offs >> 8) & 0x3f;
|
||||
r |= rtlsdr_demod_write_reg(dev, 1, 0x3e, tmp, 1);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
int rtlsdr_set_sample_freq_correction(rtlsdr_dev_t *dev, int ppm)
|
||||
{
|
||||
int r = 0;
|
||||
|
@ -1681,12 +1701,14 @@ int rtlsdr_close(rtlsdr_dev_t *dev)
|
|||
libusb_release_interface(dev->devh, 0);
|
||||
|
||||
#ifdef DETACH_KERNEL_DRIVER
|
||||
#ifndef DO_NOT_REATTACH
|
||||
if (dev->driver_active) {
|
||||
if (!libusb_attach_kernel_driver(dev->devh, 0))
|
||||
fprintf(stderr, "Reattached kernel driver\n");
|
||||
else
|
||||
fprintf(stderr, "Reattaching kernel driver failed!\n");
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
libusb_close(dev->devh);
|
||||
|
|
Ładowanie…
Reference in New Issue