summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorDimitri Stolnikov <horiz0n@gmx.net>2012-04-08 23:02:42 +0200
committerDimitri Stolnikov <horiz0n@gmx.net>2012-04-08 23:02:42 +0200
commit1eb1c3e191b31bb1e7260042897ecf90bf214498 (patch)
tree23432fbe7988f19c3880e215cd3083765429de12 /src/main.c
parent554e1b62f2f45161de6d39ccad066f21e59962c8 (diff)
new api: rtlsdr_read_async function allows to specify buffer size
this commit deprecates rtlsdr_wait_async function various small fixes are included in this commit
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c30
1 files changed, 20 insertions, 10 deletions
diff --git a/src/main.c b/src/main.c
index 2ffb3a4..2ac196c 100644
--- a/src/main.c
+++ b/src/main.c
@@ -24,7 +24,7 @@
#include <math.h>
#include <unistd.h>
-#include <rtl-sdr.h>
+#include "rtl-sdr.h"
#define READLEN (16 * 16384)
@@ -33,7 +33,8 @@ static rtlsdr_dev_t *dev = NULL;
void usage(void)
{
- printf("rtl-sdr, an I/Q recorder for RTL2832 based DVB-T receivers\n\n"
+ fprintf(stderr,
+ "rtl-sdr, an I/Q recorder for RTL2832 based DVB-T receivers\n\n"
"Usage:\t -f frequency to tune to [Hz]\n"
"\t[-s samplerate (default: 2048000 Hz)]\n"
"\t[-d device index (default: 0)]\n"
@@ -48,9 +49,10 @@ static void sighandler(int signum)
rtlsdr_cancel_async(dev);
}
-void rtlsdr_callback(unsigned char *buf, uint32_t len, void *ctx)
+static void rtlsdr_callback(unsigned char *buf, uint32_t len, void *ctx)
{
- fwrite(buf, len, 1, (FILE*)ctx);
+ if (ctx)
+ fwrite(buf, len, 1, (FILE*)ctx);
}
int main(int argc, char **argv)
@@ -62,7 +64,8 @@ int main(int argc, char **argv)
uint8_t buffer[READLEN];
int n_read;
FILE *file;
- uint32_t dev_index = 0, gain = 0;
+ uint32_t dev_index = 0;
+ int i, gain = 0;
while ((opt = getopt(argc, argv, "d:f:g:s:")) != -1) {
switch (opt) {
@@ -96,8 +99,14 @@ int main(int argc, char **argv)
exit(1);
}
- printf("Found %d device(s).\n", device_count);
- printf("Using %s\n", rtlsdr_get_device_name(dev_index));
+ fprintf(stderr, "Found %d device(s):\n", device_count);
+ for (i = 0; i < device_count; i++)
+ fprintf(stderr, " %d: %s\n", i, rtlsdr_get_device_name(i));
+ fprintf(stderr, "\n");
+
+ fprintf(stderr, "Using device %d: %s\n",
+ dev_index,
+ rtlsdr_get_device_name(dev_index));
r = rtlsdr_open(&dev, dev_index);
if (r < 0) {
@@ -124,6 +133,7 @@ int main(int argc, char **argv)
else
fprintf(stderr, "Tuned to %u Hz.\n", frequency);
+ /* Set the tuner gain */
r = rtlsdr_set_tuner_gain(dev, gain);
if (r < 0)
fprintf(stderr, "WARNING: Failed to set tuner gain.\n");
@@ -142,7 +152,7 @@ int main(int argc, char **argv)
if (r < 0)
fprintf(stderr, "WARNING: Failed to reset buffers.\n");
- printf("Reading samples...\n");
+ fprintf(stderr, "Reading samples...\n");
#if 0
while (!do_exit) {
r = rtlsdr_read_sync(dev, buffer, READLEN, &n_read);
@@ -157,10 +167,10 @@ int main(int argc, char **argv)
}
}
#else
- rtlsdr_wait_async(dev, rtlsdr_callback, (void *)file);
+ rtlsdr_read_async(dev, rtlsdr_callback, (void *)file, 0, 0);
#endif
if (do_exit)
- printf("\nUser cancel, exiting...\n");
+ fprintf(stderr, "\nUser cancel, exiting...\n");
fclose(file);