diff options
| author | Dimitri Stolnikov <horiz0n@gmx.net> | 2012-04-02 23:09:14 +0200 |
|---|---|---|
| committer | Dimitri Stolnikov <horiz0n@gmx.net> | 2012-04-02 23:09:14 +0200 |
| commit | 39482fee74034f722902916d36875df6927c568e (patch) | |
| tree | 3dbf5a9792c669ab5ba99869f251c85ec16cc7a3 /src/main.c | |
| parent | 030c787cfa1693dcc849aaec940c687fe0e96665 (diff) | |
introduce asynchronous streaming interface
this is an experimental feature
Diffstat (limited to 'src/main.c')
| -rw-r--r-- | src/main.c | 17 |
1 files changed, 13 insertions, 4 deletions
@@ -24,11 +24,12 @@ #include <math.h> #include <unistd.h> -#include "rtl-sdr.h" +#include <rtl-sdr.h> #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"); |
