From 56582ab2b2128b5be4024ff5915f0cab52f82fdb Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 26 Apr 2017 16:35:05 +0200 Subject: [PATCH] HackRF: rationalize start/stop device. Needs latest version of libhackrf (2017/03/01) and 2017.02.1 firmware --- .../hackrfoutput/hackrfoutputthread.cpp | 66 +++++++++--------- .../hackrfinput/hackrfinputthread.cpp | 67 ++++++++++--------- 2 files changed, 70 insertions(+), 63 deletions(-) diff --git a/plugins/samplesink/hackrfoutput/hackrfoutputthread.cpp b/plugins/samplesink/hackrfoutput/hackrfoutputthread.cpp index 8c53f8e55..a6c1fe4f7 100644 --- a/plugins/samplesink/hackrfoutput/hackrfoutputthread.cpp +++ b/plugins/samplesink/hackrfoutput/hackrfoutputthread.cpp @@ -67,44 +67,48 @@ void HackRFOutputThread::run() { hackrf_error rc; - rc = (hackrf_error) hackrf_start_tx(m_dev, tx_callback, this); - - if (rc == HACKRF_SUCCESS) - { - qDebug("HackRFOutputThread::run: started HackRF Tx"); - } - else - { - qDebug("HackRFOutputThread::run: failed to start HackRF Tx: %s", hackrf_error_name(rc)); - } - m_running = true; m_startWaiter.wakeAll(); - if (rc == HACKRF_SUCCESS) - { - if (hackrf_is_streaming(m_dev) == HACKRF_TRUE) { - qDebug("HackRFThread::run: HackRF is streaming"); - } else { - qDebug("HackRFThread::run: HackRF is not streaming"); + + if (hackrf_is_streaming(m_dev) == HACKRF_TRUE) + { + qDebug("HackRFInputThread::run: HackRF is streaming already"); + } + else + { + qDebug("HackRFInputThread::run: HackRF is not streaming"); + + rc = (hackrf_error) hackrf_start_tx(m_dev, tx_callback, this); + + if (rc == HACKRF_SUCCESS) + { + qDebug("HackRFOutputThread::run: started HackRF Tx"); } + else + { + qDebug("HackRFOutputThread::run: failed to start HackRF Tx: %s", hackrf_error_name(rc)); + } + } - while ((m_running) && (hackrf_is_streaming(m_dev) == HACKRF_TRUE)) - { - usleep(200000); - } - } + while ((m_running) && (hackrf_is_streaming(m_dev) == HACKRF_TRUE)) + { + usleep(200000); + } - rc = (hackrf_error) hackrf_stop_tx(m_dev); + if (hackrf_is_streaming(m_dev) == HACKRF_TRUE) + { + rc = (hackrf_error) hackrf_stop_tx(m_dev); - if (rc == HACKRF_SUCCESS) - { - qDebug("HackRFOutputThread::run: stopped HackRF Tx"); - } - else - { - qDebug("HackRFOutputThread::run: failed to stop HackRF Tx: %s", hackrf_error_name(rc)); - } + if (rc == HACKRF_SUCCESS) + { + qDebug("HackRFOutputThread::run: stopped HackRF Tx"); + } + else + { + qDebug("HackRFOutputThread::run: failed to stop HackRF Tx: %s", hackrf_error_name(rc)); + } + } m_running = false; } diff --git a/plugins/samplesource/hackrfinput/hackrfinputthread.cpp b/plugins/samplesource/hackrfinput/hackrfinputthread.cpp index 6c57c812c..db002490a 100644 --- a/plugins/samplesource/hackrfinput/hackrfinputthread.cpp +++ b/plugins/samplesource/hackrfinput/hackrfinputthread.cpp @@ -74,44 +74,47 @@ void HackRFInputThread::run() { hackrf_error rc; - rc = (hackrf_error) hackrf_start_rx(m_dev, rx_callback, this); - - if (rc == HACKRF_SUCCESS) - { - qDebug("HackRFThread::run: started HackRF Rx"); - } - else - { - qDebug("HackRFThread::run: failed to start HackRF Rx: %s", hackrf_error_name(rc)); - } - m_running = true; m_startWaiter.wakeAll(); - if (rc == HACKRF_SUCCESS) - { - if (hackrf_is_streaming(m_dev) == HACKRF_TRUE) { - qDebug("HackRFThread::run: HackRF is streaming"); - } else { - qDebug("HackRFThread::run: HackRF is not streaming"); - } + if (hackrf_is_streaming(m_dev) == HACKRF_TRUE) + { + qDebug("HackRFInputThread::run: HackRF is streaming already"); + } + else + { + qDebug("HackRFInputThread::run: HackRF is not streaming"); - while ((m_running) && (hackrf_is_streaming(m_dev) == HACKRF_TRUE)) - { - usleep(200000); - } - } + rc = (hackrf_error) hackrf_start_rx(m_dev, rx_callback, this); - rc = (hackrf_error) hackrf_stop_rx(m_dev); + if (rc == HACKRF_SUCCESS) + { + qDebug("HackRFInputThread::run: started HackRF Rx"); + } + else + { + qDebug("HackRFInputThread::run: failed to start HackRF Rx: %s", hackrf_error_name(rc)); + } + } - if (rc == HACKRF_SUCCESS) - { - qDebug("HackRFThread::run: stopped HackRF Rx"); - } - else - { - qDebug("HackRFThread::run: failed to stop HackRF Rx: %s", hackrf_error_name(rc)); - } + while ((m_running) && (hackrf_is_streaming(m_dev) == HACKRF_TRUE)) + { + usleep(200000); + } + + if (hackrf_is_streaming(m_dev) == HACKRF_TRUE) + { + rc = (hackrf_error) hackrf_stop_rx(m_dev); + + if (rc == HACKRF_SUCCESS) + { + qDebug("HackRFInputThread::run: stopped HackRF Rx"); + } + else + { + qDebug("HackRFInputThread::run: failed to stop HackRF Rx: %s", hackrf_error_name(rc)); + } + } m_running = false; }