9 Commits

Author SHA1 Message Date
Martin Ling
7057235a14 Increment a sequence number when transceiver mode changes.
This fixes bug #1042, which occured when an RX->OFF->RX sequence
happened quickly enough that the loop in rx_mode() did not see the
change. As a result, the enable_baseband_streaming() call at the start
of that function was not repeated for the new RX operation, so RX
progress stalled.

To solve this, the vendor request handler now increments a sequence
number when it changes the transceiver mode. Instead of the RX loop
checking whether the transceiver mode is still RX, it now checks whether
the current sequence number is the same as when it was started. If not,
there must have been at least one mode change, so the loop exits, and
the main loop starts the necessary loop for the new mode. The same
behaviour is implemented for the TX and sweep loops.

For this approach to be reliable, we must ensure that when deciding
which mode and sequence number to use, we take both values from the same
set_transceiver_mode request.

To achieve this, we briefly disable the USB0 interrupt to stop the
vendor request handler from running whilst reading the mode and sequence
number together. Then the loop dispatch proceeds using those pre-read
values.
2022-02-03 07:36:34 +00:00
Michael Ossmann
7d900268de fix compiler warnings 2020-02-11 16:59:59 +00:00
Michael Ossmann
3474ad50c0 Merge branch 'multi-device-hardware-sync' of https://github.com/dodgymike/hackrf into dodgymike-multi-device-hardware-sync 2017-01-24 16:18:33 -07:00
Mike Davis
ddb19a86fe Add vendor request for enabling/disabling gpio-based sync 2017-01-22 22:28:11 +02:00
Dominic Spill
1b8e1d18c5 Add scan mode function separate to main loop 2016-12-27 21:08:12 +00:00
Michael Ossmann
d4a5c2290b replaced set_freq_if() with set_freq_explicit() and implemented explicit tuning option in hackrf_transfer 2014-03-13 16:06:51 -06:00
Michael Ossmann
7c3f6340ed HackRF One antenna port power control in firmware, libhackrf, and hackrf_transfer 2014-03-12 17:21:49 -06:00
Jared Boone
61a8d0f1d6 Move set_transceiver stuff back hackrf_usb.c, since it seems to fit better there. 2013-09-20 14:24:05 -07:00
Jared Boone
7b50dfa12c Factor out USB API for transceiver control into separate files.
Pull out streaming control functions into common/streaming.[ch].
Remove excess #includes in hackrf_usb.c.
2013-09-20 12:54:56 -07:00