mirror of
https://github.com/rtlsdrblog/rtl-sdr-blog.git
synced 2025-03-27 05:55:30 +01:00
rtl_fm: fix auto/manual gain
Signed-off-by: Steve Markgraf <steve@steve-m.de>
This commit is contained in:
parent
c792c4aeac
commit
f4a8a570c4
25
src/rtl_fm.c
25
src/rtl_fm.c
@ -59,7 +59,8 @@
|
|||||||
#define DEFAULT_BUF_LENGTH (1 * 16384)
|
#define DEFAULT_BUF_LENGTH (1 * 16384)
|
||||||
#define MINIMAL_BUF_LENGTH 512
|
#define MINIMAL_BUF_LENGTH 512
|
||||||
#define MAXIMAL_BUF_LENGTH (256 * 16384)
|
#define MAXIMAL_BUF_LENGTH (256 * 16384)
|
||||||
#define CONSEQ_SQUELCH 4
|
#define CONSEQ_SQUELCH 4
|
||||||
|
#define AUTO_GAIN -100
|
||||||
|
|
||||||
static pthread_t demod_thread;
|
static pthread_t demod_thread;
|
||||||
static sem_t data_ready;
|
static sem_t data_ready;
|
||||||
@ -103,7 +104,7 @@ void usage(void)
|
|||||||
"\t (use multiple -f for scanning)\n"
|
"\t (use multiple -f for scanning)\n"
|
||||||
"\t[-s samplerate (default: 24000 Hz)]\n"
|
"\t[-s samplerate (default: 24000 Hz)]\n"
|
||||||
"\t[-d device_index (default: 0)]\n"
|
"\t[-d device_index (default: 0)]\n"
|
||||||
"\t[-g tuner_gain (default: -1dB)]\n"
|
"\t[-g tuner_gain (default: automatic)]\n"
|
||||||
"\t[-l squelch_level (default: 150)]\n"
|
"\t[-l squelch_level (default: 150)]\n"
|
||||||
"\t[-E freq sets lower edge (default: center)]\n"
|
"\t[-E freq sets lower edge (default: center)]\n"
|
||||||
"\tfilename (a '-' dumps samples to stdout)\n\n"
|
"\tfilename (a '-' dumps samples to stdout)\n\n"
|
||||||
@ -311,8 +312,8 @@ int mad(int *samples, int len, int step)
|
|||||||
/* mean average deviation */
|
/* mean average deviation */
|
||||||
{
|
{
|
||||||
int i=0, sum=0, ave=0;
|
int i=0, sum=0, ave=0;
|
||||||
if (len == 0)
|
if (len == 0)
|
||||||
{return 0;}
|
{return 0;}
|
||||||
for (i=0; i<len; i+=step) {
|
for (i=0; i<len; i+=step) {
|
||||||
sum += samples[i];
|
sum += samples[i];
|
||||||
}
|
}
|
||||||
@ -439,7 +440,7 @@ int main(int argc, char **argv)
|
|||||||
char *filename = NULL;
|
char *filename = NULL;
|
||||||
int n_read;
|
int n_read;
|
||||||
int r, opt;
|
int r, opt;
|
||||||
int i, gain = -10; // tenths of a dB
|
int i, gain = AUTO_GAIN; // tenths of a dB
|
||||||
uint8_t *buffer;
|
uint8_t *buffer;
|
||||||
uint32_t dev_index = 0;
|
uint32_t dev_index = 0;
|
||||||
int device_count;
|
int device_count;
|
||||||
@ -538,11 +539,19 @@ int main(int argc, char **argv)
|
|||||||
build_fir(&fm);
|
build_fir(&fm);
|
||||||
|
|
||||||
/* Set the tuner gain */
|
/* Set the tuner gain */
|
||||||
r = rtlsdr_set_tuner_gain(dev, gain);
|
if (gain == AUTO_GAIN) {
|
||||||
if (r < 0)
|
r = rtlsdr_set_tuner_gain_mode(dev, 0);
|
||||||
|
} else {
|
||||||
|
r = rtlsdr_set_tuner_gain_mode(dev, 1);
|
||||||
|
r = rtlsdr_set_tuner_gain(dev, gain);
|
||||||
|
}
|
||||||
|
if (r != 0) {
|
||||||
fprintf(stderr, "WARNING: Failed to set tuner gain.\n");
|
fprintf(stderr, "WARNING: Failed to set tuner gain.\n");
|
||||||
else
|
} else if (gain == AUTO_GAIN) {
|
||||||
|
fprintf(stderr, "Tuner gain set to automatic.\n");
|
||||||
|
} else {
|
||||||
fprintf(stderr, "Tuner gain set to %0.2f dB.\n", gain/10.0);
|
fprintf(stderr, "Tuner gain set to %0.2f dB.\n", gain/10.0);
|
||||||
|
}
|
||||||
|
|
||||||
if(strcmp(filename, "-") == 0) { /* Write samples to stdout */
|
if(strcmp(filename, "-") == 0) { /* Write samples to stdout */
|
||||||
fm.file = stdout;
|
fm.file = stdout;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user