| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -57,8 +57,12 @@ static void sighandler(int signum) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static void rtlsdr_callback(unsigned char *buf, uint32_t len, void *ctx) | 
					 | 
					 | 
					 | 
					static void rtlsdr_callback(unsigned char *buf, uint32_t len, void *ctx) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{ | 
					 | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (ctx) | 
					 | 
					 | 
					 | 
						if (ctx) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fwrite(buf, len, 1, (FILE*)ctx); | 
					 | 
					 | 
					 | 
							if (fwrite(buf, 1, len, (FILE*)ctx) != len) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								fprintf(stderr, "Short write, samples lost, exiting!\n"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								rtlsdr_cancel_async(dev); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					int main(int argc, char **argv) | 
					 | 
					 | 
					 | 
					int main(int argc, char **argv) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -148,6 +152,7 @@ int main(int argc, char **argv) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						sigaction(SIGINT, &sigact, NULL); | 
					 | 
					 | 
					 | 
						sigaction(SIGINT, &sigact, NULL); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						sigaction(SIGTERM, &sigact, NULL); | 
					 | 
					 | 
					 | 
						sigaction(SIGTERM, &sigact, NULL); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						sigaction(SIGQUIT, &sigact, NULL); | 
					 | 
					 | 
					 | 
						sigaction(SIGQUIT, &sigact, NULL); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						sigaction(SIGPIPE, &sigact, NULL); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						/* Set the sample rate */ | 
					 | 
					 | 
					 | 
						/* Set the sample rate */ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						r = rtlsdr_set_sample_rate(dev, samp_rate); | 
					 | 
					 | 
					 | 
						r = rtlsdr_set_sample_rate(dev, samp_rate); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -168,14 +173,14 @@ int main(int argc, char **argv) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						else | 
					 | 
					 | 
					 | 
						else | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fprintf(stderr, "Tuner gain set to %i dB.\n", gain); | 
					 | 
					 | 
					 | 
							fprintf(stderr, "Tuner gain set to %i dB.\n", gain); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if(strcmp(filename, "-") != 0) { | 
					 | 
					 | 
					 | 
						if(strcmp(filename, "-") == 0) { /* Write samples to stdout */ | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							file = stdout; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						} else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							file = fopen(filename, "wb"); | 
					 | 
					 | 
					 | 
							file = fopen(filename, "wb"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (!file) { | 
					 | 
					 | 
					 | 
							if (!file) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								fprintf(stderr, "Failed to open %s\n", filename); | 
					 | 
					 | 
					 | 
								fprintf(stderr, "Failed to open %s\n", filename); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								goto out; | 
					 | 
					 | 
					 | 
								goto out; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							} | 
					 | 
					 | 
					 | 
							} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} else { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							file = stdout; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						/* Reset endpoint before we start reading from it (mandatory) */ | 
					 | 
					 | 
					 | 
						/* Reset endpoint before we start reading from it (mandatory) */ | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -187,10 +192,15 @@ int main(int argc, char **argv) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fprintf(stderr, "Reading samples in sync mode...\n"); | 
					 | 
					 | 
					 | 
							fprintf(stderr, "Reading samples in sync mode...\n"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							while (!do_exit) { | 
					 | 
					 | 
					 | 
							while (!do_exit) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								r = rtlsdr_read_sync(dev, buffer, out_block_size, &n_read); | 
					 | 
					 | 
					 | 
								r = rtlsdr_read_sync(dev, buffer, out_block_size, &n_read); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if (r < 0) | 
					 | 
					 | 
					 | 
								if (r < 0) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									fprintf(stderr, "WARNING: sync read failed.\n"); | 
					 | 
					 | 
					 | 
									fprintf(stderr, "WARNING: sync read failed.\n"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									break; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								fwrite(buffer, n_read, 1, file); | 
					 | 
					 | 
					 | 
								if (fwrite(buffer, 1, n_read, file) != n_read) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									fprintf(stderr, "Short write, samples lost, exiting!\n"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									break; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if (n_read < out_block_size) { | 
					 | 
					 | 
					 | 
								if (n_read < out_block_size) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									fprintf(stderr, "Short read, samples lost, exiting!\n"); | 
					 | 
					 | 
					 | 
									fprintf(stderr, "Short read, samples lost, exiting!\n"); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -198,15 +208,15 @@ int main(int argc, char **argv) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								} | 
					 | 
					 | 
					 | 
								} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							} | 
					 | 
					 | 
					 | 
							} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} else { | 
					 | 
					 | 
					 | 
						} else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fprintf(stderr, "Reading samples...\n"); | 
					 | 
					 | 
					 | 
							fprintf(stderr, "Reading samples in async mode...\n"); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							rtlsdr_read_async(dev, rtlsdr_callback, (void *)file, | 
					 | 
					 | 
					 | 
							r = rtlsdr_read_async(dev, rtlsdr_callback, (void *)file, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									  DEFAULT_ASYNC_BUF_NUMBER, out_block_size); | 
					 | 
					 | 
					 | 
									      DEFAULT_ASYNC_BUF_NUMBER, out_block_size); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (do_exit) | 
					 | 
					 | 
					 | 
						if (do_exit) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fprintf(stderr, "\nUser cancel, exiting...\n"); | 
					 | 
					 | 
					 | 
							fprintf(stderr, "\nUser cancel, exiting...\n"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						else | 
					 | 
					 | 
					 | 
						else | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fprintf(stderr, "\nSystem cancel, exiting...\n"); | 
					 | 
					 | 
					 | 
							fprintf(stderr, "\nLibrary error %d, exiting...\n", r); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (file != stdout) | 
					 | 
					 | 
					 | 
						if (file != stdout) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fclose(file); | 
					 | 
					 | 
					 | 
							fclose(file); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |