Reject IF sample rates 900kS/s or lower because RTL chip does not support it.
This commit is contained in:
		
							parent
							
								
									7948164205
								
							
						
					
					
						commit
						d1593544a4
					
				
							
								
								
									
										16
									
								
								main.cc
								
								
								
								
							
							
						
						
									
										16
									
								
								main.cc
								
								
								
								
							|  | @ -215,7 +215,7 @@ void usage() | |||
|             "Usage: softfm -f freq [options]\n" | ||||
|             "  -f freq       Frequency of radio station in Hz\n" | ||||
|             "  -d devidx     RTL-SDR device index, 'list' to show device list (default 0)\n" | ||||
|             "  -s ifrate     IF sample rate in Hz (default 1000000)\n" | ||||
|             "  -s ifrate     IF sample rate in Hz (default 1000000, min 900001)\n" | ||||
|             "  -r pcmrate    Audio sample rate in Hz (default 48000 Hz)\n" | ||||
|             "  -M            Disable stereo decoding\n" | ||||
|             "  -R filename   Write audio data as raw S16_LE samples\n" | ||||
|  | @ -297,7 +297,8 @@ int main(int argc, char **argv) | |||
|                     devidx = -1; | ||||
|                 break; | ||||
|             case 's': | ||||
|                 if (!parse_opt(optarg, ifrate) || ifrate <= 0) { | ||||
|                 // NOTE: RTL does not suppor sample rate 900 kS/s or lower
 | ||||
|                 if (!parse_opt(optarg, ifrate) || ifrate <= 900000) { | ||||
|                     badarg("-s"); | ||||
|                 } | ||||
|                 break; | ||||
|  | @ -351,12 +352,6 @@ int main(int argc, char **argv) | |||
|         exit(1); | ||||
|     } | ||||
| 
 | ||||
|     if (3 * FmDecoder::default_bandwidth_if > ifrate) { | ||||
|         fprintf(stderr, "ERROR: IF sample rate must be at least %.0f Hz\n", | ||||
|                         3 * FmDecoder::default_bandwidth_if); | ||||
|         exit(1); | ||||
|     } | ||||
| 
 | ||||
|     // Catch Ctrl-C and SIGTERM
 | ||||
|     struct sigaction sigact; | ||||
|     sigact.sa_handler = handle_sigterm; | ||||
|  | @ -372,10 +367,7 @@ int main(int argc, char **argv) | |||
|     } | ||||
| 
 | ||||
|     // Intentionally tune at a higher frequency to avoid DC offset.
 | ||||
|     double tuner_freq = freq; | ||||
|     if (ifrate >= 5 * FmDecoder::default_bandwidth_if) { | ||||
|         tuner_freq += 0.25 * ifrate; | ||||
|     } | ||||
|     double tuner_freq = freq + 0.25 * ifrate; | ||||
| 
 | ||||
|     // Open RTL-SDR device.
 | ||||
|     RtlSdrSource rtlsdr(devidx); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue