Fixed firmware dwell time bug in sweep mode. Two buffers of sample data are now thrown away at the start of each step in order to allow time for tuning.
Fixes #317.
This commit is contained in:
@ -34,6 +34,7 @@
|
||||
#define MIN_FREQ 1
|
||||
#define MAX_FREQ 6000
|
||||
#define MAX_FREQ_COUNT 1000
|
||||
#define THROWAWAY_BUFFERS 2
|
||||
|
||||
volatile bool start_sweep_mode = false;
|
||||
static uint64_t sweep_freq;
|
||||
@ -89,16 +90,18 @@ void sweep_mode(void) {
|
||||
if (transfer) {
|
||||
*(uint16_t*)buffer = 0x7F7F;
|
||||
*(uint16_t*)(buffer+2) = sweep_freq;
|
||||
usb_transfer_schedule_block(
|
||||
&usb_endpoint_bulk_in,
|
||||
buffer,
|
||||
0x4000,
|
||||
NULL, NULL
|
||||
);
|
||||
if (blocks_queued > THROWAWAY_BUFFERS) {
|
||||
usb_transfer_schedule_block(
|
||||
&usb_endpoint_bulk_in,
|
||||
buffer,
|
||||
0x4000,
|
||||
NULL, NULL
|
||||
);
|
||||
}
|
||||
transfer = false;
|
||||
}
|
||||
|
||||
if (blocks_queued >= dwell_blocks) {
|
||||
if ((dwell_blocks + THROWAWAY_BUFFERS) <= blocks_queued) {
|
||||
if(++ifreq >= frequency_count)
|
||||
ifreq = 0;
|
||||
sweep_freq = frequencies[ifreq];
|
||||
|
@ -243,7 +243,7 @@ static void usage() {
|
||||
fprintf(stderr, "\t[-l gain_db] # RX LNA (IF) gain, 0-40dB, 8dB steps\n");
|
||||
fprintf(stderr, "\t[-g gain_db] # RX VGA (baseband) gain, 0-62dB, 2dB steps\n");
|
||||
fprintf(stderr, "\t[-x gain_db] # TX VGA (IF) gain, 0-47dB, 1dB steps\n");
|
||||
fprintf(stderr, "\t[-n num_samples] # Number of samples per frequency, 0-4294967296\n");
|
||||
fprintf(stderr, "\t[-n num_samples] # Number of samples per frequency, 16384-4294967296\n");
|
||||
}
|
||||
|
||||
static hackrf_device* device = NULL;
|
||||
@ -355,6 +355,11 @@ int main(int argc, char** argv) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (num_samples < 0x4000) {
|
||||
fprintf(stderr, "warning: num_samples (-n) must be at least 16384\n");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if( amp ) {
|
||||
if( amp_enable > 1 ) {
|
||||
fprintf(stderr, "argument error: amp_enable shall be 0 or 1.\n");
|
||||
|
Reference in New Issue
Block a user