kopia lustrzana https://github.com/keenerd/rtl-sdr
utils: rebase ppm in eeprom prototype
rodzic
7d70b00792
commit
389de6d8ed
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2014 by Kyle Keen <keenerd@gmail.com>
|
||||
* Copyright (C) 2013-2014 by Kyle Keen <keenerd@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -234,6 +234,34 @@ int verbose_ppm_set(rtlsdr_dev_t *dev, int ppm_error)
|
|||
return r;
|
||||
}
|
||||
|
||||
int verbose_ppm_eeprom(rtlsdr_dev_t *dev, int *ppm_error)
|
||||
{
|
||||
#define start_char ' '
|
||||
#define stop_char 'p'
|
||||
int i, r, len, status = -1;
|
||||
char vendor[256], product[256], serial[256];
|
||||
r = rtlsdr_get_usb_strings(dev, vendor, product, serial);
|
||||
if (r) {
|
||||
return r;
|
||||
}
|
||||
len = strlen(serial);
|
||||
if (len <= 3) {
|
||||
return -1;}
|
||||
if (serial[len-1] != stop_char) {
|
||||
return -1;}
|
||||
serial[len-1] = '\0';
|
||||
for (i=len-3; i>=0; i--) {
|
||||
if (serial[i] != start_char) {
|
||||
continue;}
|
||||
fprintf(stderr, "PPM calibration found in eeprom.\n");
|
||||
status = 0;
|
||||
*ppm_error = atoi(serial + i + 1);
|
||||
break;
|
||||
}
|
||||
serial[len-1] = stop_char;
|
||||
return status;
|
||||
}
|
||||
|
||||
int verbose_reset_buffer(rtlsdr_dev_t *dev)
|
||||
{
|
||||
int r;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2014 by Kyle Keen <keenerd@gmail.com>
|
||||
* Copyright (C) 2013-2014 by Kyle Keen <keenerd@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -122,6 +122,15 @@ int verbose_gain_set(rtlsdr_dev_t *dev, int gain);
|
|||
|
||||
int verbose_ppm_set(rtlsdr_dev_t *dev, int ppm_error);
|
||||
|
||||
/*!
|
||||
* Attempts to extract a correction value from eeprom and store it to an int.
|
||||
*
|
||||
* \param dev the device handle given by rtlsdr_open()
|
||||
* \param ppm_error correction value in parts per million (ppm)
|
||||
* \return 0 on success
|
||||
*/
|
||||
int verbose_ppm_eeprom(rtlsdr_dev_t *dev, int *ppm_error);
|
||||
|
||||
/*!
|
||||
* Reset buffer
|
||||
*
|
||||
|
|
|
@ -1208,6 +1208,9 @@ int main(int argc, char **argv)
|
|||
verbose_gain_set(dongle.dev, dongle.gain);
|
||||
}
|
||||
|
||||
if (!custom_ppm) {
|
||||
verbose_ppm_eeprom(dongle.dev, &(dongle.ppm_error));
|
||||
}
|
||||
verbose_ppm_set(dongle.dev, dongle.ppm_error);
|
||||
|
||||
if (strcmp(output.filename, "-") == 0) { /* Write samples to stdout */
|
||||
|
|
|
@ -765,6 +765,7 @@ int main(int argc, char **argv)
|
|||
int dev_index = 0;
|
||||
int dev_given = 0;
|
||||
int ppm_error = 0;
|
||||
int custom_ppm = 0;
|
||||
int interval = 10;
|
||||
int fft_threads = 1;
|
||||
int smoothing = 0;
|
||||
|
@ -832,6 +833,7 @@ int main(int argc, char **argv)
|
|||
break;
|
||||
case 'p':
|
||||
ppm_error = atoi(optarg);
|
||||
custom_ppm = 1;
|
||||
break;
|
||||
case '1':
|
||||
single = 1;
|
||||
|
@ -923,6 +925,9 @@ int main(int argc, char **argv)
|
|||
verbose_gain_set(dev, gain);
|
||||
}
|
||||
|
||||
if (!custom_ppm) {
|
||||
verbose_ppm_eeprom(dev, &ppm_error);
|
||||
}
|
||||
verbose_ppm_set(dev, ppm_error);
|
||||
|
||||
if (strcmp(filename, "-") == 0) { /* Write log to stdout */
|
||||
|
|
|
@ -374,6 +374,7 @@ int main(int argc, char **argv)
|
|||
int dev_given = 0;
|
||||
int gain = 0;
|
||||
int ppm_error = 0;
|
||||
int custom_ppm = 0;
|
||||
struct llist *curelem,*prev;
|
||||
pthread_attr_t attr;
|
||||
void *status;
|
||||
|
@ -420,6 +421,7 @@ int main(int argc, char **argv)
|
|||
break;
|
||||
case 'P':
|
||||
ppm_error = atoi(optarg);
|
||||
custom_ppm = 1;
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
|
@ -458,6 +460,9 @@ int main(int argc, char **argv)
|
|||
#endif
|
||||
|
||||
/* Set the tuner error */
|
||||
if (!custom_ppm) {
|
||||
verbose_ppm_eeprom(dev, &ppm_error);
|
||||
}
|
||||
verbose_ppm_set(dev, ppm_error);
|
||||
|
||||
/* Set the sample rate */
|
||||
|
|
Ładowanie…
Reference in New Issue