From ea46e4435ba36065d510575cd2976e788f141a4d Mon Sep 17 00:00:00 2001 From: Chris Kuethe Date: Mon, 25 May 2015 17:31:53 -0700 Subject: [PATCH 1/5] explain which gain setting was wrong because sometimes you don't see your typos at 3am. --- host/hackrf-tools/src/hackrf_transfer.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/host/hackrf-tools/src/hackrf_transfer.c b/host/hackrf-tools/src/hackrf_transfer.c index 6c7b0441..36b53abc 100644 --- a/host/hackrf-tools/src/hackrf_transfer.c +++ b/host/hackrf-tools/src/hackrf_transfer.c @@ -582,6 +582,18 @@ int main(int argc, char** argv) { } } + if (lna_gain % 8) { + printf("argument error: lna_gain (-l) must be a multiple of 8\n"); + usage(); + return EXIT_FAILURE; + } + + if (vga_gain % 8) { + printf("argument error: vga_gain (-g) must be a multiple of 2\n"); + usage(); + return EXIT_FAILURE; + } + if (samples_to_xfer >= SAMPLES_TO_XFER_MAX) { printf("argument error: num_samples must be less than %s/%sMio\n", u64toa(SAMPLES_TO_XFER_MAX,&ascii_u64_data1), From 2570f35260e0351df56e271260797687b2c3b6d5 Mon Sep 17 00:00:00 2001 From: Chris Kuethe Date: Mon, 25 May 2015 17:38:24 -0700 Subject: [PATCH 2/5] vga gain must be a multiple of 2, not 8 allow both args to be checked before bailing out --- host/hackrf-tools/src/hackrf_transfer.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/host/hackrf-tools/src/hackrf_transfer.c b/host/hackrf-tools/src/hackrf_transfer.c index 36b53abc..61be1b2a 100644 --- a/host/hackrf-tools/src/hackrf_transfer.c +++ b/host/hackrf-tools/src/hackrf_transfer.c @@ -582,14 +582,12 @@ int main(int argc, char** argv) { } } - if (lna_gain % 8) { - printf("argument error: lna_gain (-l) must be a multiple of 8\n"); - usage(); - return EXIT_FAILURE; - } + if ((lna_gain % 8) || (vga_gain % 2)) { + if (lna_gain % 8) + printf("argument error: lna_gain (-l) must be a multiple of 8\n"); + if (vga_gain % 2) + printf("argument error: vga_gain (-g) must be a multiple of 2\n"); - if (vga_gain % 8) { - printf("argument error: vga_gain (-g) must be a multiple of 2\n"); usage(); return EXIT_FAILURE; } From faddb1b320d998b5c2cc452aed4b045f8e192973 Mon Sep 17 00:00:00 2001 From: Chris Kuethe Date: Fri, 29 May 2015 00:05:12 -0700 Subject: [PATCH 3/5] squish invalid gain values to acceptable levels --- host/libhackrf/src/hackrf.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/host/libhackrf/src/hackrf.c b/host/libhackrf/src/hackrf.c index 790c8431..4eb87ae5 100644 --- a/host/libhackrf/src/hackrf.c +++ b/host/libhackrf/src/hackrf.c @@ -958,6 +958,7 @@ int ADDCALL hackrf_set_lna_gain(hackrf_device* device, uint32_t value) return HACKRF_ERROR_INVALID_PARAM; } + value &= ~(1<<3); result = libusb_control_transfer( device->usb_device, LIBUSB_ENDPOINT_IN | LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE, @@ -987,6 +988,7 @@ int ADDCALL hackrf_set_vga_gain(hackrf_device* device, uint32_t value) return HACKRF_ERROR_INVALID_PARAM; } + value &= ~(1<<0); result = libusb_control_transfer( device->usb_device, LIBUSB_ENDPOINT_IN | LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE, From 94b37453b79d2aceba329cb61b44605efa717522 Mon Sep 17 00:00:00 2001 From: Chris Kuethe Date: Fri, 29 May 2015 00:32:20 -0700 Subject: [PATCH 4/5] these don't need to be errors any more --- host/hackrf-tools/src/hackrf_transfer.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/host/hackrf-tools/src/hackrf_transfer.c b/host/hackrf-tools/src/hackrf_transfer.c index 61be1b2a..bd9bdb78 100644 --- a/host/hackrf-tools/src/hackrf_transfer.c +++ b/host/hackrf-tools/src/hackrf_transfer.c @@ -582,15 +582,11 @@ int main(int argc, char** argv) { } } - if ((lna_gain % 8) || (vga_gain % 2)) { - if (lna_gain % 8) - printf("argument error: lna_gain (-l) must be a multiple of 8\n"); - if (vga_gain % 2) - printf("argument error: vga_gain (-g) must be a multiple of 2\n"); + if (lna_gain % 8) + printf("warning: lna_gain (-l) must be a multiple of 8\n"); - usage(); - return EXIT_FAILURE; - } + if (vga_gain % 2) + printf("warning: vga_gain (-g) must be a multiple of 2\n"); if (samples_to_xfer >= SAMPLES_TO_XFER_MAX) { printf("argument error: num_samples must be less than %s/%sMio\n", From edf8c23cfd7a76815d70a72a1143664fb9154015 Mon Sep 17 00:00:00 2001 From: Chris Kuethe Date: Fri, 29 May 2015 09:25:24 -0700 Subject: [PATCH 5/5] Derp. That's what I get for hacking after bedtime... --- host/libhackrf/src/hackrf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/host/libhackrf/src/hackrf.c b/host/libhackrf/src/hackrf.c index 4eb87ae5..85de4506 100644 --- a/host/libhackrf/src/hackrf.c +++ b/host/libhackrf/src/hackrf.c @@ -958,7 +958,7 @@ int ADDCALL hackrf_set_lna_gain(hackrf_device* device, uint32_t value) return HACKRF_ERROR_INVALID_PARAM; } - value &= ~(1<<3); + value &= ~0x07; result = libusb_control_transfer( device->usb_device, LIBUSB_ENDPOINT_IN | LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE, @@ -988,7 +988,7 @@ int ADDCALL hackrf_set_vga_gain(hackrf_device* device, uint32_t value) return HACKRF_ERROR_INVALID_PARAM; } - value &= ~(1<<0); + value &= ~0x01; result = libusb_control_transfer( device->usb_device, LIBUSB_ENDPOINT_IN | LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE,