diff --git a/firmware/baseband/baseband_dma.cpp b/firmware/baseband/baseband_dma.cpp index d86bef72..4fc1fdd8 100644 --- a/firmware/baseband/baseband_dma.cpp +++ b/firmware/baseband/baseband_dma.cpp @@ -156,12 +156,15 @@ void disable() { gpdma_channel_sgpio.disable(); } -baseband::buffer_t wait_for_rx_buffer() { +baseband::buffer_t wait_for_buffer() { const auto next_index = thread_wait.sleep(); if( next_index >= 0 ) { const size_t free_index = (next_index + transfers_per_buffer - 2) & transfers_mask; - return { reinterpret_cast(lli_loop[free_index].destaddr), transfer_samples }; + const auto src = lli_loop[free_index].srcaddr; + const auto dst = lli_loop[free_index].destaddr; + const auto p = (src == reinterpret_cast(&LPC_SGPIO->REG_SS[0])) ? dst : src; + return { reinterpret_cast(p), transfer_samples }; } else { return { }; } diff --git a/firmware/baseband/baseband_dma.hpp b/firmware/baseband/baseband_dma.hpp index 94827d4b..56752ddc 100644 --- a/firmware/baseband/baseband_dma.hpp +++ b/firmware/baseband/baseband_dma.hpp @@ -42,7 +42,7 @@ bool is_enabled(); void disable(); -baseband::buffer_t wait_for_rx_buffer(); +baseband::buffer_t wait_for_buffer(); } /* namespace dma */ } /* namespace baseband */ diff --git a/firmware/baseband/baseband_thread.cpp b/firmware/baseband/baseband_thread.cpp index 0784d9bd..926e4fb0 100644 --- a/firmware/baseband/baseband_thread.cpp +++ b/firmware/baseband/baseband_thread.cpp @@ -77,7 +77,7 @@ void BasebandThread::run() { while( !chThdShouldTerminate() ) { // TODO: Place correct sampling rate into buffer returned here: - const auto buffer_tmp = baseband::dma::wait_for_rx_buffer(); + const auto buffer_tmp = baseband::dma::wait_for_buffer(); if( buffer_tmp ) { buffer_c8_t buffer { buffer_tmp.p, buffer_tmp.count, sampling_rate