utils: rebase ppm in eeprom prototype

pull/6/head
Kyle Keen 2014-01-25 14:06:12 -05:00
rodzic 7d70b00792
commit 389de6d8ed
5 zmienionych plików z 52 dodań i 2 usunięć

Wyświetl plik

@ -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;

Wyświetl plik

@ -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
*

Wyświetl plik

@ -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 */

Wyświetl plik

@ -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 */

Wyświetl plik

@ -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 */