From 39482fee74034f722902916d36875df6927c568e Mon Sep 17 00:00:00 2001 From: Dimitri Stolnikov Date: Mon, 2 Apr 2012 23:09:14 +0200 Subject: introduce asynchronous streaming interface this is an experimental feature --- src/main.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index e412810..017ad6b 100644 --- a/src/main.c +++ b/src/main.c @@ -24,11 +24,12 @@ #include #include -#include "rtl-sdr.h" +#include #define READLEN (16 * 16384) static int do_exit = 0; +static rtlsdr_dev_t *dev = NULL; void usage(void) { @@ -44,6 +45,12 @@ void usage(void) static void sighandler(int signum) { do_exit = 1; + rtlsdr_cancel_async(dev); +} + +void rtlsdr_callback(const char *buf, uint32_t len, void *ctx) +{ + fwrite(buf, len, 1, (FILE*)ctx); } int main(int argc, char **argv) @@ -53,9 +60,8 @@ int main(int argc, char **argv) char *filename = NULL; uint32_t frequency = 0, samp_rate = 2048000; uint8_t buffer[READLEN]; - uint32_t n_read; + int n_read; FILE *file; - rtlsdr_dev_t *dev = NULL; uint32_t dev_index = 0, gain = 0; while ((opt = getopt(argc, argv, "d:f:g:s:")) != -1) { @@ -138,6 +144,7 @@ int main(int argc, char **argv) fprintf(stderr, "WARNING: Failed to reset buffers.\n"); printf("Reading samples...\n"); +#if 0 while (!do_exit) { r = rtlsdr_read_sync(dev, buffer, READLEN, &n_read); if (r < 0) @@ -150,7 +157,9 @@ int main(int argc, char **argv) break; } } - +#else + rtlsdr_wait_async(dev, rtlsdr_callback, (void *)file); +#endif if (do_exit) printf("\nUser cancel, exiting...\n"); -- cgit v1.3.1