From d3d9038697d26ca17429b48bfd14313eab9ff6fa Mon Sep 17 00:00:00 2001 From: Hoernchen Date: Fri, 7 Jun 2013 18:17:55 +0200 Subject: [PATCH] lib: actually handle the value returned by the fw when setting the gains --- host/libhackrf/src/hackrf.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/host/libhackrf/src/hackrf.c b/host/libhackrf/src/hackrf.c index ccf70e07..e31fb714 100644 --- a/host/libhackrf/src/hackrf.c +++ b/host/libhackrf/src/hackrf.c @@ -856,6 +856,7 @@ int ADDCALL hackrf_board_partid_serialno_read(hackrf_device* device, read_partid int ADDCALL hackrf_set_lna_gain(hackrf_device* device, uint32_t value) { int result; + uint8_t retval; if( value > 40 ) { @@ -864,16 +865,16 @@ int ADDCALL hackrf_set_lna_gain(hackrf_device* device, uint32_t value) result = libusb_control_transfer( device->usb_device, - LIBUSB_ENDPOINT_OUT | LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE, + LIBUSB_ENDPOINT_IN | LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE, HACKRF_VENDOR_REQUEST_SET_LNA_GAIN, 0, value, - NULL, - 0, + &retval, + 1, 0 ); - if( result != 0 ) + if( result != 1 || !retval ) { return HACKRF_ERROR_INVALID_PARAM; } else { @@ -884,6 +885,7 @@ int ADDCALL hackrf_set_lna_gain(hackrf_device* device, uint32_t value) int ADDCALL hackrf_set_vga_gain(hackrf_device* device, uint32_t value) { int result; + uint8_t retval; if( value > 62 ) { @@ -892,16 +894,16 @@ int ADDCALL hackrf_set_vga_gain(hackrf_device* device, uint32_t value) result = libusb_control_transfer( device->usb_device, - LIBUSB_ENDPOINT_OUT | LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE, + LIBUSB_ENDPOINT_IN | LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE, HACKRF_VENDOR_REQUEST_SET_VGA_GAIN, 0, value, - NULL, - 0, + &retval, + 1, 0 ); - if( result != 0 ) + if( result != 1 || !retval ) { return HACKRF_ERROR_INVALID_PARAM; } else { @@ -912,6 +914,7 @@ int ADDCALL hackrf_set_vga_gain(hackrf_device* device, uint32_t value) int ADDCALL hackrf_set_txvga_gain(hackrf_device* device, uint32_t value) { int result; + uint8_t retval; if( value > 47 ) { @@ -920,16 +923,16 @@ int ADDCALL hackrf_set_txvga_gain(hackrf_device* device, uint32_t value) result = libusb_control_transfer( device->usb_device, - LIBUSB_ENDPOINT_OUT | LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE, + LIBUSB_ENDPOINT_IN | LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE, HACKRF_VENDOR_REQUEST_SET_TXVGA_GAIN, 0, value, - NULL, - 0, + &retval, + 1, 0 ); - if( result != 0 ) + if( result != 1 || !retval ) { return HACKRF_ERROR_INVALID_PARAM; } else {