limesdr: use --gain (in dB) if --limesdr-gain was not specified

This commit is contained in:
Oliver Jowett 2020-10-01 13:53:50 +08:00
parent 016cb8f9d2
commit c3cd1ec0de
1 changed files with 19 additions and 5 deletions

View File

@ -105,7 +105,7 @@ void limesdrInitConfig()
LimeSDR.is_stop = false; LimeSDR.is_stop = false;
LimeSDR.verbosity = LMS_LOG_INFO; LimeSDR.verbosity = LMS_LOG_INFO;
LimeSDR.oversample = 0; // default oversample LimeSDR.oversample = 0; // default oversample
LimeSDR.gain = 0.75; LimeSDR.gain = -1;
LimeSDR.lpfbw = 2400000.0; LimeSDR.lpfbw = 2400000.0;
LimeSDR.bw = 2.5e6; // the minimal supported value LimeSDR.bw = 2.5e6; // the minimal supported value
LimeSDR.serial[0] = '\0'; LimeSDR.serial[0] = '\0';
@ -122,7 +122,7 @@ void limesdrShowHelp()
printf("--limesdr-serial serial number of desired device\n"); printf("--limesdr-serial serial number of desired device\n");
printf("--limesdr-channel set number of an RX channel\n"); printf("--limesdr-channel set number of an RX channel\n");
printf("--limesdr-oversample set RF oversampling ratio\n"); printf("--limesdr-oversample set RF oversampling ratio\n");
printf("--limesdr-gain set normalized gain\n"); printf("--limesdr-gain set normalized gain (range: 0.0 to 1.0)\n");
printf("--limesdr-lpfbw set LPF bandwidth\n"); printf("--limesdr-lpfbw set LPF bandwidth\n");
printf("--limesdr-bw set bandwidth\n"); printf("--limesdr-bw set bandwidth\n");
printf("\n"); printf("\n");
@ -273,9 +273,23 @@ bool limesdrOpen(void)
goto error; goto error;
} }
if (LMS_SetNormalizedGain(LimeSDR.dev, LMS_CH_RX, LimeSDR.stream.channel, LimeSDR.gain)) { if (LimeSDR.gain >= 0) {
limesdrLogHandler(LMS_LOG_ERROR, "unable to set gain"); if (LMS_SetNormalizedGain(LimeSDR.dev, LMS_CH_RX, LimeSDR.stream.channel, LimeSDR.gain)) {
goto error; limesdrLogHandler(LMS_LOG_ERROR, "unable to set gain");
goto error;
}
} else {
if (Modes.gain == MODES_MAX_GAIN) {
if (LMS_SetNormalizedGain(LimeSDR.dev, LMS_CH_RX, LimeSDR.stream.channel, 1.0)) {
limesdrLogHandler(LMS_LOG_ERROR, "unable to set gain");
goto error;
}
} else {
if (LMS_SetGaindB(LimeSDR.dev, LMS_CH_RX, LimeSDR.stream.channel, Modes.gain / 10)) {
limesdrLogHandler(LMS_LOG_ERROR, "unable to set gain");
goto error;
}
}
} }
if (LMS_SetLPFBW(LimeSDR.dev, LMS_CH_RX, LimeSDR.stream.channel, LimeSDR.lpfbw)) { if (LMS_SetLPFBW(LimeSDR.dev, LMS_CH_RX, LimeSDR.stream.channel, LimeSDR.lpfbw)) {