|
|
|
@ -80,6 +80,7 @@ static rtlsdr_dev_t *dev = NULL; |
|
|
|
|
|
|
|
|
|
int global_numq = 0; |
|
|
|
|
static struct llist *ll_buffers = 0; |
|
|
|
|
int llbuf_num=500; |
|
|
|
|
|
|
|
|
|
static int do_exit = 0; |
|
|
|
|
|
|
|
|
@ -92,6 +93,7 @@ void usage(void) |
|
|
|
|
"\t[-g gain (default: 0 for auto)]\n" |
|
|
|
|
"\t[-s samplerate in Hz (default: 2048000 Hz)]\n" |
|
|
|
|
"\t[-b number of buffers (default: 32, set by library)]\n" |
|
|
|
|
"\t[-n max number of linked list buffers to keep (default: 500)]\n" |
|
|
|
|
"\t[-d device index (default: 0)]\n"); |
|
|
|
|
exit(1); |
|
|
|
|
} |
|
|
|
@ -157,6 +159,16 @@ void rtlsdr_callback(unsigned char *buf, uint32_t len, void *ctx) |
|
|
|
|
cur = cur->next; |
|
|
|
|
num_queued++; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(llbuf_num && llbuf_num == num_queued-2){ |
|
|
|
|
struct llist *curelem; |
|
|
|
|
|
|
|
|
|
free(ll_buffers->data); |
|
|
|
|
curelem = ll_buffers->next; |
|
|
|
|
free(ll_buffers); |
|
|
|
|
ll_buffers = curelem; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
cur->next = rpt; |
|
|
|
|
|
|
|
|
|
if (num_queued > global_numq) |
|
|
|
@ -397,7 +409,7 @@ int main(int argc, char **argv) |
|
|
|
|
struct sigaction sigact, sigign; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
while ((opt = getopt(argc, argv, "a:p:f:g:s:b:d:")) != -1) { |
|
|
|
|
while ((opt = getopt(argc, argv, "a:p:f:g:s:b:n:d:")) != -1) { |
|
|
|
|
switch (opt) { |
|
|
|
|
case 'd': |
|
|
|
|
dev_index = atoi(optarg); |
|
|
|
@ -420,6 +432,9 @@ int main(int argc, char **argv) |
|
|
|
|
case 'b': |
|
|
|
|
buf_num = atoi(optarg); |
|
|
|
|
break; |
|
|
|
|
case 'n': |
|
|
|
|
llbuf_num = atoi(optarg); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
usage(); |
|
|
|
|
break; |
|
|
|
|