|
|
@ -29,7 +29,7 @@ |
|
|
|
#define DEFAULT_SAMPLE_RATE 2048000 |
|
|
|
#define DEFAULT_SAMPLE_RATE 2048000 |
|
|
|
#define DEFAULT_ASYNC_BUF_NUMBER 32 |
|
|
|
#define DEFAULT_ASYNC_BUF_NUMBER 32 |
|
|
|
#define DEFAULT_BUF_LENGTH (16 * 16384) |
|
|
|
#define DEFAULT_BUF_LENGTH (16 * 16384) |
|
|
|
#define MINIMAL_BUF_LENGTH 32 |
|
|
|
#define MINIMAL_BUF_LENGTH 512 |
|
|
|
#define MAXIMAL_BUF_LENGTH (256 * 16384) |
|
|
|
#define MAXIMAL_BUF_LENGTH (256 * 16384) |
|
|
|
|
|
|
|
|
|
|
|
static int do_exit = 0; |
|
|
|
static int do_exit = 0; |
|
|
@ -45,7 +45,7 @@ void usage(void) |
|
|
|
"\t[-g tuner_gain (default: 0 dB)]\n" |
|
|
|
"\t[-g tuner_gain (default: 0 dB)]\n" |
|
|
|
"\t[-b output_block_size (default: 16 * 16384)]\n" |
|
|
|
"\t[-b output_block_size (default: 16 * 16384)]\n" |
|
|
|
"\t[-S force sync output (default: async)]\n" |
|
|
|
"\t[-S force sync output (default: async)]\n" |
|
|
|
"\toutput filename\n"); |
|
|
|
"\toutput_filename (a '-' dumps samples to stdout)\n\n"); |
|
|
|
exit(1); |
|
|
|
exit(1); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -168,11 +168,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); |
|
|
|
|
|
|
|
|
|
|
|
file = fopen(filename, "wb"); |
|
|
|
if(strcmp(filename, "-") != 0) { |
|
|
|
|
|
|
|
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) */ |
|
|
@ -180,9 +183,8 @@ int main(int argc, char **argv) |
|
|
|
if (r < 0) |
|
|
|
if (r < 0) |
|
|
|
fprintf(stderr, "WARNING: Failed to reset buffers.\n"); |
|
|
|
fprintf(stderr, "WARNING: Failed to reset buffers.\n"); |
|
|
|
|
|
|
|
|
|
|
|
fprintf(stderr, "Reading samples...\n"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (sync_mode) { |
|
|
|
if (sync_mode) { |
|
|
|
|
|
|
|
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) |
|
|
@ -196,6 +198,7 @@ int main(int argc, char **argv) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
|
|
|
|
fprintf(stderr, "Reading samples...\n"); |
|
|
|
rtlsdr_read_async(dev, rtlsdr_callback, (void *)file, |
|
|
|
rtlsdr_read_async(dev, rtlsdr_callback, (void *)file, |
|
|
|
DEFAULT_ASYNC_BUF_NUMBER, out_block_size); |
|
|
|
DEFAULT_ASYNC_BUF_NUMBER, out_block_size); |
|
|
|
} |
|
|
|
} |
|
|
@ -205,7 +208,9 @@ int main(int argc, char **argv) |
|
|
|
else |
|
|
|
else |
|
|
|
fprintf(stderr, "\nSystem cancel, exiting...\n"); |
|
|
|
fprintf(stderr, "\nSystem cancel, exiting...\n"); |
|
|
|
|
|
|
|
|
|
|
|
fclose(file); |
|
|
|
if (file != stdout) |
|
|
|
|
|
|
|
fclose(file); |
|
|
|
|
|
|
|
|
|
|
|
rtlsdr_close(dev); |
|
|
|
rtlsdr_close(dev); |
|
|
|
free (buffer); |
|
|
|
free (buffer); |
|
|
|
out: |
|
|
|
out: |
|
|
|