diff --git a/src/librtlsdr.c b/src/librtlsdr.c
index f9cdedb..8c27006 100755
--- a/src/librtlsdr.c
+++ b/src/librtlsdr.c
@@ -10,11 +10,11 @@
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ * along with this program. If not, see .
*/
#include
@@ -60,7 +60,7 @@ typedef struct rtlsdr_tuner_iface {
int (*init)(void *);
int (*exit)(void *);
int (*set_freq)(void *, uint32_t freq /* Hz */);
- int (*set_bw)(void *, int bw /* Hz */, uint32_t *applied_bw /* configured bw in Hz */, int apply /* 1 == configure it!, 0 == deliver applied_bw */);
+ int (*set_bw)(void *, int bw /* Hz */, uint32_t *applied_bw /* configured bw in Hz */, int apply /* 1 == configure it!, 0 == deliver applied_bw */);
int (*set_gain)(void *, int gain /* tenth dB */);
int (*set_if_gain)(void *, int stage, int gain /* tenth dB */);
int (*set_gain_mode)(void *, int manual);
@@ -149,8 +149,8 @@ int e4000_set_freq(void *dev, uint32_t freq) {
int e4000_set_bw(void *dev, int bw, uint32_t *applied_bw, int apply) {
int r = 0;
rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev;
- if(!apply)
- return 0;
+ if(!apply)
+ return 0;
r |= e4k_if_filter_bw_set(&devt->e4k_s, E4K_IF_FILTER_MIX, bw);
r |= e4k_if_filter_bw_set(&devt->e4k_s, E4K_IF_FILTER_RC, bw);
@@ -210,9 +210,9 @@ int _fc2580_set_freq(void *dev, uint32_t freq) {
return fc2580_SetRfFreqHz(dev, freq);
}
int fc2580_set_bw(void *dev, int bw, uint32_t *applied_bw, int apply) {
- if(!apply)
- return 0;
- return fc2580_SetBandwidthMode(dev, 1);
+ if(!apply)
+ return 0;
+ return fc2580_SetBandwidthMode(dev, 1);
}
int fc2580_set_gain(void *dev, int gain) { return 0; }
int fc2580_set_gain_mode(void *dev, int manual) { return 0; }
@@ -251,11 +251,12 @@ int r820t_set_bw(void *dev, int bw, uint32_t *applied_bw, int apply) {
int r;
rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev;
- r = r82xx_set_bandwidth(&devt->r82xx_p, bw, devt->rate, applied_bw, apply);
- if(!apply)
- return 0;
- if(r < 0)
- return r;
+ r = r82xx_set_bandwidth(&devt->r82xx_p, bw, devt->rate, applied_bw, apply);
+ if(!apply)
+ return 0;
+ if(r < 0)
+ return r;
+
r = rtlsdr_set_if_freq(devt, r);
if (r)
return r;
@@ -263,18 +264,18 @@ int r820t_set_bw(void *dev, int bw, uint32_t *applied_bw, int apply) {
}
int r820t_set_gain(void *dev, int gain) {
- rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev;
- return r82xx_set_gain(&devt->r82xx_p, 1, gain, 0, 0, 0, 0);
+ rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev;
+ return r82xx_set_gain(&devt->r82xx_p, 1, gain, 0, 0, 0, 0);
}
int r820t_set_gain_ext(void *dev, int lna_gain, int mixer_gain, int vga_gain) {
- rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev;
- return r82xx_set_gain(&devt->r82xx_p, 0, 0, 1, lna_gain, mixer_gain, vga_gain);
+ rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev;
+ return r82xx_set_gain(&devt->r82xx_p, 0, 0, 1, lna_gain, mixer_gain, vga_gain);
}
int r820t_set_gain_mode(void *dev, int manual) {
rtlsdr_dev_t* devt = (rtlsdr_dev_t*)dev;
- return r82xx_set_gain(&devt->r82xx_p, manual, 0, 0, 0, 0, 0);
+ return r82xx_set_gain(&devt->r82xx_p, manual, 0, 0, 0, 0, 0);
}
/* definition order must match enum rtlsdr_tuner */
@@ -647,7 +648,7 @@ void rtlsdr_init_baseband(rtlsdr_dev_t *dev)
rtlsdr_demod_write_reg(dev, 1, 0x15, 0x00, 1);
rtlsdr_demod_write_reg(dev, 1, 0x16, 0x0000, 2);
- /* clear both DDC shift and IF frequency registers */
+ /* clear both DDC shift and IF frequency registers */
for (i = 0; i < 6; i++)
rtlsdr_demod_write_reg(dev, 1, 0x16 + i, 0x00, 1);
@@ -766,7 +767,7 @@ int rtlsdr_set_xtal_freq(rtlsdr_dev_t *dev, uint32_t rtl_freq, uint32_t tuner_fr
/* read corrected clock value into e4k and r82xx structure */
if (rtlsdr_get_xtal_freq(dev, NULL, &dev->e4k_s.vco.fosc) ||
- rtlsdr_get_xtal_freq(dev, NULL, &dev->r82xx_c.xtal))
+ rtlsdr_get_xtal_freq(dev, NULL, &dev->r82xx_c.xtal))
return -3;
/* update xtal-dependent settings */
@@ -794,7 +795,7 @@ int rtlsdr_get_xtal_freq(rtlsdr_dev_t *dev, uint32_t *rtl_freq, uint32_t *tuner_
}
int rtlsdr_get_usb_strings(rtlsdr_dev_t *dev, char *manufact, char *product,
- char *serial)
+ char *serial)
{
struct libusb_device_descriptor dd;
libusb_device *device = NULL;
@@ -813,22 +814,22 @@ int rtlsdr_get_usb_strings(rtlsdr_dev_t *dev, char *manufact, char *product,
if (manufact) {
memset(manufact, 0, buf_max);
libusb_get_string_descriptor_ascii(dev->devh, dd.iManufacturer,
- (unsigned char *)manufact,
- buf_max);
+ (unsigned char *)manufact,
+ buf_max);
}
if (product) {
memset(product, 0, buf_max);
libusb_get_string_descriptor_ascii(dev->devh, dd.iProduct,
- (unsigned char *)product,
- buf_max);
+ (unsigned char *)product,
+ buf_max);
}
if (serial) {
memset(serial, 0, buf_max);
libusb_get_string_descriptor_ascii(dev->devh, dd.iSerialNumber,
- (unsigned char *)serial,
- buf_max);
+ (unsigned char *)serial,
+ buf_max);
}
return 0;
@@ -944,7 +945,7 @@ int rtlsdr_set_freq_correction(rtlsdr_dev_t *dev, int ppm)
/* read corrected clock value into e4k and r82xx structure */
if (rtlsdr_get_xtal_freq(dev, NULL, &dev->e4k_s.vco.fosc) ||
- rtlsdr_get_xtal_freq(dev, NULL, &dev->r82xx_c.xtal))
+ rtlsdr_get_xtal_freq(dev, NULL, &dev->r82xx_c.xtal))
return -3;
if (dev->freq) /* retune to apply new correction value */
@@ -973,16 +974,16 @@ int rtlsdr_get_tuner_gains(rtlsdr_dev_t *dev, int *gains)
{
/* all gain values are expressed in tenths of a dB */
const int e4k_gains[] = { -10, 15, 40, 65, 90, 115, 140, 165, 190, 215,
- 240, 290, 340, 420 };
+ 240, 290, 340, 420 };
const int fc0012_gains[] = { -99, -40, 71, 179, 192 };
const int fc0013_gains[] = { -99, -73, -65, -63, -60, -58, -54, 58, 61,
- 63, 65, 67, 68, 70, 71, 179, 181, 182,
- 184, 186, 188, 191, 197 };
+ 63, 65, 67, 68, 70, 71, 179, 181, 182,
+ 184, 186, 188, 191, 197 };
const int fc2580_gains[] = { 0 /* no gain values */ };
const int r82xx_gains[] = { 0, 9, 14, 27, 37, 77, 87, 125, 144, 157,
- 166, 197, 207, 229, 254, 280, 297, 328,
- 338, 364, 372, 386, 402, 421, 434, 439,
- 445, 480, 496 };
+ 166, 197, 207, 229, 254, 280, 297, 328,
+ 338, 364, 372, 386, 402, 421, 434, 439,
+ 445, 480, 496 };
const int unknown_gains[] = { 0 /* no gain values */ };
const int *ptr = NULL;
@@ -1027,22 +1028,22 @@ int rtlsdr_set_and_get_tuner_bandwidth(rtlsdr_dev_t *dev, uint32_t bw, uint32_t
{
int r = 0;
- *applied_bw = 0; /* unknown */
+ *applied_bw = 0; /* unknown */
if (!dev || !dev->tuner)
return -1;
- if(!apply_bw)
- {
- if (dev->tuner->set_bw) {
- r = dev->tuner->set_bw(dev, bw > 0 ? bw : dev->rate, applied_bw, apply_bw);
- }
- return r;
- }
+ if(!apply_bw)
+ {
+ if (dev->tuner->set_bw) {
+ r = dev->tuner->set_bw(dev, bw > 0 ? bw : dev->rate, applied_bw, apply_bw);
+ }
+ return r;
+ }
if (dev->tuner->set_bw) {
rtlsdr_set_i2c_repeater(dev, 1);
- r = dev->tuner->set_bw(dev, bw > 0 ? bw : dev->rate, applied_bw, apply_bw);
+ r = dev->tuner->set_bw(dev, bw > 0 ? bw : dev->rate, applied_bw, apply_bw);
rtlsdr_set_i2c_repeater(dev, 0);
if (r)
return r;
@@ -1053,8 +1054,8 @@ int rtlsdr_set_and_get_tuner_bandwidth(rtlsdr_dev_t *dev, uint32_t bw, uint32_t
int rtlsdr_set_tuner_bandwidth(rtlsdr_dev_t *dev, uint32_t bw )
{
- uint32_t applied_bw = 0;
- return rtlsdr_set_and_get_tuner_bandwidth(dev, bw, &applied_bw, 1 /* =apply_bw */ );
+ uint32_t applied_bw = 0;
+ return rtlsdr_set_and_get_tuner_bandwidth(dev, bw, &applied_bw, 1 /* =apply_bw */ );
}
@@ -1153,7 +1154,7 @@ int rtlsdr_set_sample_rate(rtlsdr_dev_t *dev, uint32_t samp_rate)
/* check if the rate is supported by the resampler */
if ((samp_rate <= 225000) || (samp_rate > 3200000) ||
- ((samp_rate > 300000) && (samp_rate <= 900000))) {
+ ((samp_rate > 300000) && (samp_rate <= 900000))) {
fprintf(stderr, "Invalid sample rate: %u Hz\n", samp_rate);
return -EINVAL;
}
@@ -1170,9 +1171,9 @@ int rtlsdr_set_sample_rate(rtlsdr_dev_t *dev, uint32_t samp_rate)
dev->rate = (uint32_t)real_rate;
if (dev->tuner && dev->tuner->set_bw) {
- uint32_t applied_bw = 0;
+ uint32_t applied_bw = 0;
rtlsdr_set_i2c_repeater(dev, 1);
- dev->tuner->set_bw(dev, dev->bw > 0 ? dev->bw : dev->rate, &applied_bw, 1);
+ dev->tuner->set_bw(dev, dev->bw > 0 ? dev->bw : dev->rate, &applied_bw, 1);
rtlsdr_set_i2c_repeater(dev, 0);
}
@@ -1254,7 +1255,7 @@ int rtlsdr_set_direct_sampling(rtlsdr_dev_t *dev, int on)
}
if ((dev->tuner_type == RTLSDR_TUNER_R820T) ||
- (dev->tuner_type == RTLSDR_TUNER_R828D)) {
+ (dev->tuner_type == RTLSDR_TUNER_R828D)) {
r |= rtlsdr_set_if_freq(dev, R82XX_IF_FREQ);
/* enable spectrum inversion */
@@ -1298,7 +1299,7 @@ int rtlsdr_set_offset_tuning(rtlsdr_dev_t *dev, int on)
return -1;
if ((dev->tuner_type == RTLSDR_TUNER_R820T) ||
- (dev->tuner_type == RTLSDR_TUNER_R828D))
+ (dev->tuner_type == RTLSDR_TUNER_R828D))
return -2;
if (dev->direct_sampling)
@@ -1309,7 +1310,7 @@ int rtlsdr_set_offset_tuning(rtlsdr_dev_t *dev, int on)
r |= rtlsdr_set_if_freq(dev, dev->offs_freq);
if (dev->tuner && dev->tuner->set_bw) {
- uint32_t applied_bw = 0;
+ uint32_t applied_bw = 0;
rtlsdr_set_i2c_repeater(dev, 1);
if (on) {
bw = 2 * dev->offs_freq;
@@ -1318,7 +1319,7 @@ int rtlsdr_set_offset_tuning(rtlsdr_dev_t *dev, int on)
} else {
bw = dev->rate;
}
- dev->tuner->set_bw(dev, bw, &applied_bw, 1);
+ dev->tuner->set_bw(dev, bw, &applied_bw, 1);
rtlsdr_set_i2c_repeater(dev, 0);
}
@@ -1420,7 +1421,7 @@ const char *rtlsdr_get_device_name(uint32_t index)
}
int rtlsdr_get_device_usb_strings(uint32_t index, char *manufact,
- char *product, char *serial)
+ char *product, char *serial)
{
int r = -2;
int i;
@@ -1450,9 +1451,9 @@ int rtlsdr_get_device_usb_strings(uint32_t index, char *manufact,
r = libusb_open(list[i], &devt.devh);
if (!r) {
r = rtlsdr_get_usb_strings(&devt,
- manufact,
- product,
- serial);
+ manufact,
+ product,
+ serial);
libusb_close(devt.devh);
}
break;
@@ -1762,7 +1763,7 @@ static void LIBUSB_CALL _libusb_callback(struct libusb_transfer *xfer)
dev->xfer_errors++;
if (dev->xfer_errors >= dev->xfer_buf_num ||
- LIBUSB_TRANSFER_NO_DEVICE == xfer->status) {
+ LIBUSB_TRANSFER_NO_DEVICE == xfer->status) {
#endif
dev->dev_lost = 1;
rtlsdr_cancel_async(dev);
@@ -1788,7 +1789,7 @@ static int _rtlsdr_alloc_async_buffers(rtlsdr_dev_t *dev)
if (!dev->xfer) {
dev->xfer = malloc(dev->xfer_buf_num *
- sizeof(struct libusb_transfer *));
+ sizeof(struct libusb_transfer *));
for(i = 0; i < dev->xfer_buf_num; ++i)
dev->xfer[i] = libusb_alloc_transfer(0);
@@ -1796,7 +1797,7 @@ static int _rtlsdr_alloc_async_buffers(rtlsdr_dev_t *dev)
if (!dev->xfer_buf) {
dev->xfer_buf = malloc(dev->xfer_buf_num *
- sizeof(unsigned char *));
+ sizeof(unsigned char *));
for(i = 0; i < dev->xfer_buf_num; ++i)
dev->xfer_buf[i] = malloc(dev->xfer_buf_len);
@@ -1837,7 +1838,7 @@ static int _rtlsdr_free_async_buffers(rtlsdr_dev_t *dev)
}
int rtlsdr_read_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx,
- uint32_t buf_num, uint32_t buf_len)
+ uint32_t buf_num, uint32_t buf_len)
{
unsigned int i;
int r = 0;
@@ -1871,13 +1872,13 @@ int rtlsdr_read_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx,
for(i = 0; i < dev->xfer_buf_num; ++i) {
libusb_fill_bulk_transfer(dev->xfer[i],
- dev->devh,
- 0x81,
- dev->xfer_buf[i],
- dev->xfer_buf_len,
- _libusb_callback,
- (void *)dev,
- BULK_TIMEOUT);
+ dev->devh,
+ 0x81,
+ dev->xfer_buf[i],
+ dev->xfer_buf_len,
+ _libusb_callback,
+ (void *)dev,
+ BULK_TIMEOUT);
r = libusb_submit_transfer(dev->xfer[i]);
if (r < 0) {
@@ -1889,7 +1890,7 @@ int rtlsdr_read_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx,
while (RTLSDR_INACTIVE != dev->async_status) {
r = libusb_handle_events_timeout_completed(dev->ctx, &tv,
- &dev->async_cancel);
+ &dev->async_cancel);
if (r < 0) {
/*fprintf(stderr, "handle_events returned: %d\n", r);*/
if (r == LIBUSB_ERROR_INTERRUPTED) /* stray signal */
@@ -1914,7 +1915,7 @@ int rtlsdr_read_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx,
* to allow transfer status to
* propagate */
libusb_handle_events_timeout_completed(dev->ctx,
- &zerotv, NULL);
+ &zerotv, NULL);
if (r < 0)
continue;
@@ -1927,7 +1928,7 @@ int rtlsdr_read_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx,
* be handled before exiting after we
* just cancelled all transfers */
libusb_handle_events_timeout_completed(dev->ctx,
- &zerotv, NULL);
+ &zerotv, NULL);
break;
}
}
diff --git a/src/rtl_fm.c b/src/rtl_fm.c
index 1091555..baf8bb9 100755
--- a/src/rtl_fm.c
+++ b/src/rtl_fm.c
@@ -30,23 +30,23 @@
* (no many-to-many locks)
*
* todo:
- * sanity checks
- * scale squelch to other input parameters
- * test all the demodulations
- * pad output on hop
- * frequency ranges could be stored better
- * scaled AM demod amplification
- * auto-hop after time limit
- * peak detector to tune onto stronger signals
- * fifo for active hop frequency
- * clips
- * noise squelch
- * merge stereo patch
- * merge soft agc patch
- * merge udp patch
- * testmode to detect overruns
- * watchdog to reset bad dongle
- * fix oversampling
+ * sanity checks
+ * scale squelch to other input parameters
+ * test all the demodulations
+ * pad output on hop
+ * frequency ranges could be stored better
+ * scaled AM demod amplification
+ * auto-hop after time limit
+ * peak detector to tune onto stronger signals
+ * fifo for active hop frequency
+ * clips
+ * noise squelch
+ * merge stereo patch
+ * merge soft agc patch
+ * merge udp patch
+ * testmode to detect overruns
+ * watchdog to reset bad dongle
+ * fix oversampling
*/
#include
@@ -102,54 +102,54 @@ static double levelSum = 0.0;
struct dongle_state
{
- int exit_flag;
+ int exit_flag;
pthread_t thread;
rtlsdr_dev_t *dev;
- int dev_index;
+ int dev_index;
uint32_t freq;
uint32_t rate;
uint32_t bandwidth;
- int gain;
+ int gain;
int16_t buf16[MAXIMUM_BUF_LENGTH];
uint32_t buf_len;
- int ppm_error;
- int offset_tuning;
- int direct_sampling;
- int mute;
+ int ppm_error;
+ int offset_tuning;
+ int direct_sampling;
+ int mute;
struct demod_state *demod_target;
};
struct demod_state
{
- int exit_flag;
+ int exit_flag;
pthread_t thread;
int16_t lowpassed[MAXIMUM_BUF_LENGTH];
- int lp_len;
+ int lp_len;
int16_t lp_i_hist[10][6];
int16_t lp_q_hist[10][6];
int16_t result[MAXIMUM_BUF_LENGTH];
int16_t droop_i_hist[9];
int16_t droop_q_hist[9];
- int result_len;
- int rate_in;
- int rate_out;
- int rate_out2;
- int now_r, now_j;
- int pre_r, pre_j;
- int prev_index;
- int downsample; /* min 1, max 256 */
- int post_downsample;
- int output_scale;
- int squelch_level, conseq_squelch, squelch_hits, terminate_on_squelch;
- int downsample_passes;
- int comp_fir_size;
- int custom_atan;
- int deemph, deemph_a;
- int now_lpr;
- int prev_lpr_index;
- int dc_block_audio, dc_avg, adc_block_const;
- int dc_block_raw, dc_avgI, dc_avgQ, rdc_block_const;
- void (*mode_demod)(struct demod_state*);
+ int result_len;
+ int rate_in;
+ int rate_out;
+ int rate_out2;
+ int now_r, now_j;
+ int pre_r, pre_j;
+ int prev_index;
+ int downsample; /* min 1, max 256 */
+ int post_downsample;
+ int output_scale;
+ int squelch_level, conseq_squelch, squelch_hits, terminate_on_squelch;
+ int downsample_passes;
+ int comp_fir_size;
+ int custom_atan;
+ int deemph, deemph_a;
+ int now_lpr;
+ int prev_lpr_index;
+ int dc_block_audio, dc_avg, adc_block_const;
+ int dc_block_raw, dc_avgI, dc_avgQ, rdc_block_const;
+ void (*mode_demod)(struct demod_state*);
pthread_rwlock_t rw;
pthread_cond_t ready;
pthread_mutex_t ready_m;
@@ -158,13 +158,13 @@ struct demod_state
struct output_state
{
- int exit_flag;
+ int exit_flag;
pthread_t thread;
- FILE *file;
- char *filename;
+ FILE *file;
+ char *filename;
int16_t result[MAXIMUM_BUF_LENGTH];
- int result_len;
- int rate;
+ int result_len;
+ int rate;
pthread_rwlock_t rw;
pthread_cond_t ready;
pthread_mutex_t ready_m;
@@ -172,13 +172,13 @@ struct output_state
struct controller_state
{
- int exit_flag;
+ int exit_flag;
pthread_t thread;
uint32_t freqs[FREQUENCIES_LIMIT];
- int freq_len;
- int freq_now;
- int edge;
- int wb_mode;
+ int freq_len;
+ int freq_now;
+ int edge;
+ int wb_mode;
pthread_cond_t hop;
pthread_mutex_t hop_m;
};
@@ -195,44 +195,44 @@ void usage(void)
"rtl_fm, a simple narrow band FM demodulator for RTL2832 based DVB-T receivers\n\n"
"Use:\trtl_fm -f freq [-options] [filename]\n"
"\t-f frequency_to_tune_to [Hz]\n"
- "\t use multiple -f for scanning (requires squelch)\n"
- "\t ranges supported, -f 118M:137M:25k\n"
+ "\t use multiple -f for scanning (requires squelch)\n"
+ "\t ranges supported, -f 118M:137M:25k\n"
"\t[-v verbosity (default: 0)]\n"
"\t[-M modulation (default: fm)]\n"
- "\t fm or nbfm or nfm, wbfm or wfm, raw or iq, am, usb, lsb\n"
- "\t wbfm == -M fm -s 170k -o 4 -A fast -r 32k -l 0 -E deemp\n"
- "\t raw mode outputs 2x16 bit IQ pairs\n"
+ "\t fm or nbfm or nfm, wbfm or wfm, raw or iq, am, usb, lsb\n"
+ "\t wbfm == -M fm -s 170k -o 4 -A fast -r 32k -l 0 -E deemp\n"
+ "\t raw mode outputs 2x16 bit IQ pairs\n"
"\t[-s sample_rate (default: 24k)]\n"
"\t[-d device_index (default: 0)]\n"
- "\t[-g tuner_gain (default: automatic)]\n"
- "\t[-w tuner_bandwidth (default: automatic)]\n"
+ "\t[-g tuner_gain (default: automatic)]\n"
+ "\t[-w tuner_bandwidth (default: automatic)]\n"
"\t[-l squelch_level (default: 0/off)]\n"
"\t[-L N prints levels every N calculations]\n"
- "\t output are comma separated values (csv):\n"
- "\t mean since last output, max since last output, overall max, squelch\n"
+ "\t output are comma separated values (csv):\n"
+ "\t mean since last output, max since last output, overall max, squelch\n"
"\t[-c de-emphasis_time_constant in us for wbfm. 'us' or 'eu' for 75/50 us (default: us)]\n"
- //"\t for fm squelch is inverted\n"
+ //"\t for fm squelch is inverted\n"
"\t[-o oversampling (default: 1, 4 recommended)]\n"
"\t[-p ppm_error (default: 0)]\n"
"\t[-E enable_option (default: none)]\n"
- "\t use multiple -E to enable multiple options\n"
- "\t edge: enable lower edge tuning\n"
- "\t rdc: enable dc blocking filter on raw I/Q data at capture rate\n"
- "\t adc: enable dc blocking filter on demodulated audio\n"
- "\t dc: same as adc\n"
- "\t deemp: enable de-emphasis filter\n"
- "\t direct: enable direct sampling\n"
- "\t offset: enable offset tuning\n"
+ "\t use multiple -E to enable multiple options\n"
+ "\t edge: enable lower edge tuning\n"
+ "\t rdc: enable dc blocking filter on raw I/Q data at capture rate\n"
+ "\t adc: enable dc blocking filter on demodulated audio\n"
+ "\t dc: same as adc\n"
+ "\t deemp: enable de-emphasis filter\n"
+ "\t direct: enable direct sampling\n"
+ "\t offset: enable offset tuning\n"
"\t[-q dc_avg_factor for option rdc (default: 9)]\n"
"\tfilename ('-' means stdout)\n"
- "\t omitting the filename also uses stdout\n\n"
+ "\t omitting the filename also uses stdout\n\n"
"Experimental options:\n"
"\t[-r resample_rate (default: none / same as -s)]\n"
"\t[-t squelch_delay (default: 10)]\n"
- "\t +values will mute/scan, -values will exit\n"
+ "\t +values will mute/scan, -values will exit\n"
"\t[-F fir_size (default: off)]\n"
- "\t enables low-leakage downsample filter\n"
- "\t size can be 0 or 9. 0 has bad roll off\n"
+ "\t enables low-leakage downsample filter\n"
+ "\t size can be 0 or 9. 0 has bad roll off\n"
"\t[-A std/fast/lut choose atan math (default: std)]\n"
//"\t[-C clip_path (default: off)\n"
//"\t (create time stamped raw clips, requires squelch)\n"
@@ -242,7 +242,7 @@ void usage(void)
"\n"
"Produces signed 16 bit ints, use Sox or aplay to hear them.\n"
"\trtl_fm ... | play -t raw -r 24k -es -b 16 -c 1 -V1 -\n"
- "\t | aplay -r 24k -f S16_LE -t raw -c 1\n"
+ "\t | aplay -r 24k -f S16_LE -t raw -c 1\n"
"\t -M wbfm | play -r 32k ... \n"
"\t -s 22050 | multimon -t raw /dev/stdin\n\n");
exit(1);
@@ -441,7 +441,7 @@ void generic_fir(int16_t *data, int length, int *fir, int16_t *hist)
sum += (hist[1] + hist[7]) * fir[2];
sum += (hist[2] + hist[6]) * fir[3];
sum += (hist[3] + hist[5]) * fir[4];
- sum += hist[4] * fir[5];
+ sum += hist[4] * fir[5];
data[d] = sum >> 15 ;
hist[0] = hist[1];
hist[1] = hist[2];
@@ -1056,7 +1056,7 @@ void dongle_init(struct dongle_state *s)
s->direct_sampling = 0;
s->offset_tuning = 0;
s->demod_target = &demod;
- s->bandwidth = 0;
+ s->bandwidth = 0;
}
void demod_init(struct demod_state *s)
@@ -1070,10 +1070,10 @@ void demod_init(struct demod_state *s)
s->downsample_passes = 0;
s->comp_fir_size = 0;
s->prev_index = 0;
- s->post_downsample = 1; // once this works, default = 4
+ s->post_downsample = 1; // once this works, default = 4
s->custom_atan = 0;
s->deemph = 0;
- s->rate_out2 = -1; // flag for disabled
+ s->rate_out2 = -1; // flag for disabled
s->mode_demod = &fm_demod;
s->pre_j = s->pre_r = s->now_r = s->now_j = 0;
s->prev_lpr_index = 0;
@@ -1277,9 +1277,9 @@ int main(int argc, char **argv)
case 'v':
verbosity = (int)atof(optarg);
break;
- case 'w':
- dongle.bandwidth = (uint32_t)atofs(optarg);
- break;
+ case 'w':
+ dongle.bandwidth = (uint32_t)atofs(optarg);
+ break;
case 'h':
default:
usage();
@@ -1348,21 +1348,23 @@ int main(int argc, char **argv)
verbose_ppm_set(dongle.dev, dongle.ppm_error);
- verbose_set_bandwidth(dongle.dev, dongle.bandwidth);
+ verbose_set_bandwidth(dongle.dev, dongle.bandwidth);
- if (verbosity && dongle.bandwidth)
- {
- int r;
- uint32_t in_bw, out_bw, last_bw = 0;
- for ( in_bw = 1; in_bw < 3200; ++in_bw )
- {
- r = rtlsdr_set_and_get_tuner_bandwidth(dongle.dev, in_bw*1000, &out_bw, 0 /* =apply_bw */);
- if ( r == 0 && ( out_bw != last_bw || in_bw == 1 ) )
- fprintf(stderr, "device sets bandwidth %u Hz for bw para >= %u kHz\n", out_bw, in_bw );
- last_bw = out_bw;
- }
- fprintf(stderr,"\n");
- }
+ verbose_set_bandwidth(dongle.dev, dongle.bandwidth);
+
+ if (verbosity && dongle.bandwidth)
+ {
+ int r;
+ uint32_t in_bw, out_bw, last_bw = 0;
+ for ( in_bw = 1; in_bw < 3200; ++in_bw )
+ {
+ r = rtlsdr_set_and_get_tuner_bandwidth(dongle.dev, in_bw*1000, &out_bw, 0 /* =apply_bw */);
+ if ( r == 0 && ( out_bw != last_bw || in_bw == 1 ) )
+ fprintf(stderr, "device sets bandwidth %u Hz for bw para >= %u kHz\n", out_bw, in_bw );
+ last_bw = out_bw;
+ }
+ fprintf(stderr,"\n");
+ }
if (strcmp(output.filename, "-") == 0) { /* Write samples to stdout */
output.file = stdout;
diff --git a/src/tuner_r82xx.c b/src/tuner_r82xx.c
index f6c1694..ad54b55 100755
--- a/src/tuner_r82xx.c
+++ b/src/tuner_r82xx.c
@@ -250,7 +250,7 @@ static void shadow_store(struct r82xx_priv *priv, uint8_t reg, const uint8_t *va
}
static int r82xx_write(struct r82xx_priv *priv, uint8_t reg, const uint8_t *val,
- unsigned int len)
+ unsigned int len)
{
int rc, size, pos = 0;
@@ -561,8 +561,8 @@ static int r82xx_set_pll(struct r82xx_priv *priv, uint32_t freq)
}
static int r82xx_sysfreq_sel(struct r82xx_priv *priv, uint32_t freq,
- enum r82xx_tuner_type type,
- uint32_t delsys)
+ enum r82xx_tuner_type type,
+ uint32_t delsys)
{
int rc;
uint8_t mixer_top, lna_top, cp_cur, div_buf_cur, lna_vth_l, mixer_vth_l;
@@ -1083,97 +1083,97 @@ int r82xx_set_gain(struct r82xx_priv *priv, int set_manual_gain, int gain,
uint8_t data[4];
if (extended_mode) {
- /*
- // LNA auto off
- rc = r82xx_write_reg_mask(priv, 0x05, 0x10, 0x10);
- if (rc < 0)
- return rc;
+ /*
+ // LNA auto off
+ rc = r82xx_write_reg_mask(priv, 0x05, 0x10, 0x10);
+ if (rc < 0)
+ return rc;
- // Mixer auto off
- rc = r82xx_write_reg_mask(priv, 0x07, 0, 0x10);
- if (rc < 0)
- return rc;
+ // Mixer auto off
+ rc = r82xx_write_reg_mask(priv, 0x07, 0, 0x10);
+ if (rc < 0)
+ return rc;
- rc = r82xx_read(priv, 0x00, data, sizeof(data));
- if (rc < 0)
- return rc;
- */
+ rc = r82xx_read(priv, 0x00, data, sizeof(data));
+ if (rc < 0)
+ return rc;
+ */
- /* Set LNA */
- rc = r82xx_write_reg_mask(priv, 0x05, lna_gain, 0x0f);
- if (rc < 0)
- return rc;
+ /* Set LNA */
+ rc = r82xx_write_reg_mask(priv, 0x05, lna_gain, 0x0f);
+ if (rc < 0)
+ return rc;
- /* Set Mixer */
- rc = r82xx_write_reg_mask(priv, 0x07, mixer_gain, 0x0f);
- if (rc < 0)
- return rc;
+ /* Set Mixer */
+ rc = r82xx_write_reg_mask(priv, 0x07, mixer_gain, 0x0f);
+ if (rc < 0)
+ return rc;
- /* Set VGA */
- rc = r82xx_write_reg_mask(priv, 0x0c, vga_gain, 0x9f);
- if (rc < 0)
- return rc;
+ /* Set VGA */
+ rc = r82xx_write_reg_mask(priv, 0x0c, vga_gain, 0x9f);
+ if (rc < 0)
+ return rc;
- return 0;
+ return 0;
}
if (set_manual_gain) {
- /* LNA auto off */
- rc = r82xx_write_reg_mask(priv, 0x05, 0x10, 0x10);
- if (rc < 0)
- return rc;
+ /* LNA auto off */
+ rc = r82xx_write_reg_mask(priv, 0x05, 0x10, 0x10);
+ if (rc < 0)
+ return rc;
- /* Mixer auto off */
- rc = r82xx_write_reg_mask(priv, 0x07, 0, 0x10);
- if (rc < 0)
- return rc;
+ /* Mixer auto off */
+ rc = r82xx_write_reg_mask(priv, 0x07, 0, 0x10);
+ if (rc < 0)
+ return rc;
- rc = r82xx_read(priv, 0x00, data, sizeof(data));
- if (rc < 0)
- return rc;
+ rc = r82xx_read(priv, 0x00, data, sizeof(data));
+ if (rc < 0)
+ return rc;
- /* set fixed VGA gain for now (16.3 dB) */
- rc = r82xx_write_reg_mask(priv, 0x0c, 0x08, 0x9f);
- if (rc < 0)
- return rc;
+ /* set fixed VGA gain for now (16.3 dB) */
+ rc = r82xx_write_reg_mask(priv, 0x0c, 0x08, 0x9f);
+ if (rc < 0)
+ return rc;
- for (i = 0; i < 15; i++) {
- if (total_gain >= gain)
- break;
+ for (i = 0; i < 15; i++) {
+ if (total_gain >= gain)
+ break;
- total_gain += r82xx_lna_gain_steps[++lna_index];
+ total_gain += r82xx_lna_gain_steps[++lna_index];
- if (total_gain >= gain)
- break;
+ if (total_gain >= gain)
+ break;
- total_gain += r82xx_mixer_gain_steps[++mix_index];
- }
+ total_gain += r82xx_mixer_gain_steps[++mix_index];
+ }
- /* set LNA gain */
- rc = r82xx_write_reg_mask(priv, 0x05, lna_index, 0x0f);
- if (rc < 0)
- return rc;
+ /* set LNA gain */
+ rc = r82xx_write_reg_mask(priv, 0x05, lna_index, 0x0f);
+ if (rc < 0)
+ return rc;
- /* set Mixer gain */
- rc = r82xx_write_reg_mask(priv, 0x07, mix_index, 0x0f);
- if (rc < 0)
- return rc;
+ /* set Mixer gain */
+ rc = r82xx_write_reg_mask(priv, 0x07, mix_index, 0x0f);
+ if (rc < 0)
+ return rc;
} else {
- /* LNA */
- rc = r82xx_write_reg_mask(priv, 0x05, 0, 0x10);
- if (rc < 0)
- return rc;
+ /* LNA */
+ rc = r82xx_write_reg_mask(priv, 0x05, 0, 0x10);
+ if (rc < 0)
+ return rc;
- /* Mixer */
- rc = r82xx_write_reg_mask(priv, 0x07, 0x10, 0x10);
- if (rc < 0)
- return rc;
+ /* Mixer */
+ rc = r82xx_write_reg_mask(priv, 0x07, 0x10, 0x10);
+ if (rc < 0)
+ return rc;
- /* set fixed VGA gain for now (26.5 dB) */
- rc = r82xx_write_reg_mask(priv, 0x0c, 0x0b, 0x9f);
- if (rc < 0)
- return rc;
+ /* set fixed VGA gain for now (26.5 dB) */
+ rc = r82xx_write_reg_mask(priv, 0x0c, 0x0b, 0x9f);
+ if (rc < 0)
+ return rc;
}
return 0;
@@ -1197,35 +1197,35 @@ int r82xx_set_bandwidth(struct r82xx_priv *priv, int bw, uint32_t rate, uint32_t
if (bw > 7000000) {
// BW: 8 MHz
- *applied_bw = 8000000;
+ *applied_bw = 8000000;
reg_0a = 0x10;
reg_0b = 0x0b;
- if (apply)
- priv->int_freq = 4570000;
+ if (apply)
+ priv->int_freq = 4570000;
} else if (bw > 6000000) {
// BW: 7 MHz
- *applied_bw = 7000000;
- reg_0a = 0x10;
+ *applied_bw = 7000000;
+ reg_0a = 0x10;
reg_0b = 0x2a;
- if (apply)
- priv->int_freq = 4570000;
+ if (apply)
+ priv->int_freq = 4570000;
} else if (bw > r82xx_if_low_pass_bw_table[0] + FILT_HP_BW1 + FILT_HP_BW2) {
// BW: 6 MHz
- *applied_bw = 6000000;
- reg_0a = 0x10;
+ *applied_bw = 6000000;
+ reg_0a = 0x10;
reg_0b = 0x6b;
- if (apply)
- priv->int_freq = 3570000;
+ if (apply)
+ priv->int_freq = 3570000;
} else {
reg_0a = 0x00;
reg_0b = 0x80;
- if (apply)
- priv->int_freq = 2300000;
+ if (apply)
+ priv->int_freq = 2300000;
if (bw > r82xx_if_low_pass_bw_table[0] + FILT_HP_BW1) {
bw -= FILT_HP_BW2;
- if (apply)
- priv->int_freq += FILT_HP_BW2;
+ if (apply)
+ priv->int_freq += FILT_HP_BW2;
real_bw += FILT_HP_BW2;
} else {
reg_0b |= 0x20;
@@ -1233,8 +1233,8 @@ int r82xx_set_bandwidth(struct r82xx_priv *priv, int bw, uint32_t rate, uint32_t
if (bw > r82xx_if_low_pass_bw_table[0]) {
bw -= FILT_HP_BW1;
- if (apply)
- priv->int_freq += FILT_HP_BW1;
+ if (apply)
+ priv->int_freq += FILT_HP_BW1;
real_bw += FILT_HP_BW1;
} else {
reg_0b |= 0x40;
@@ -1249,14 +1249,14 @@ int r82xx_set_bandwidth(struct r82xx_priv *priv, int bw, uint32_t rate, uint32_t
reg_0b |= 15 - i;
real_bw += r82xx_if_low_pass_bw_table[i];
- *applied_bw = real_bw;
+ *applied_bw = real_bw;
- if (apply)
- priv->int_freq -= real_bw / 2;
+ if (apply)
+ priv->int_freq -= real_bw / 2;
}
- if (!apply)
- return 0;
+ if (!apply)
+ return 0;
rc = r82xx_write_reg_mask(priv, 0x0a, reg_0a, 0x10);
if (rc < 0)
@@ -1292,7 +1292,7 @@ int r82xx_set_freq(struct r82xx_priv *priv, uint32_t freq)
air_cable1_in = (freq > MHZ(345)) ? 0x00 : 0x60;
if ((priv->cfg->rafael_chip == CHIP_R828D) &&
- (air_cable1_in != priv->input)) {
+ (air_cable1_in != priv->input)) {
priv->input = air_cable1_in;
rc = r82xx_write_reg_mask(priv, 0x05, air_cable1_in, 0x60);
}