From 8e190472e1871a1b512ad113472fb335c26eefb1 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Fri, 4 Mar 2016 06:58:27 +0000 Subject: [PATCH] - fixed crash git-svn-id: http://moon:8086/svn/software/trunk/projects/mpsk_rx_gui@282 b431acfa-c32f-4a4a-93f1-934dc6c82436 --- Source/IQPlaneComponent.cpp | 2 +- Source/MainComponent.cpp | 3 +++ Source/Receiver.cpp | 13 +++++++------ 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Source/IQPlaneComponent.cpp b/Source/IQPlaneComponent.cpp index 34535f1..4d06dbf 100644 --- a/Source/IQPlaneComponent.cpp +++ b/Source/IQPlaneComponent.cpp @@ -132,7 +132,7 @@ void IQPlaneComponent::trackerPointEnable(uint32_t id, juce::Colour color, cpx_t m_trackerPoints[id].point.setX(pos.real); m_trackerPoints[id].point.setY(pos.imag); m_trackerPoints[id].size = size; - + } void IQPlaneComponent::trackerPointDisable(uint32_t id) diff --git a/Source/MainComponent.cpp b/Source/MainComponent.cpp index be16890..80fb869 100644 --- a/Source/MainComponent.cpp +++ b/Source/MainComponent.cpp @@ -136,7 +136,9 @@ void MainComponent::run() { const RVec &data = m_rxBuf.read(); + m_lock.enter(); m_pReceiver->processPassband(data, data.size()); + m_lock.exit(); } } @@ -168,6 +170,7 @@ void MainComponent::audioDeviceAboutToStart (AudioIODevice* device) m_pReceiver->setBufSize(bufferSize); m_pReceiverControl->setSamplerate(m_samplerate); + m_rxBuf.resize(bufferSize); startThread(); } diff --git a/Source/Receiver.cpp b/Source/Receiver.cpp index 4d2d89c..bf66fa5 100644 --- a/Source/Receiver.cpp +++ b/Source/Receiver.cpp @@ -39,7 +39,7 @@ const uint32_t EQ_GROUP_DELAY = 16; // 16 const radio_float_t DFE_MU = (radio_float_t)1E-3; // 1E-3 const radio_float_t CMA_MU = (radio_float_t)8E-2; // 8E-2 -const radio_float_t TRACKER_MU = (radio_float_t)2E-2; +const radio_float_t TRACKER_MU = (radio_float_t)1E-2; const radio_float_t TRACKER_EPS = (radio_float_t)1E-3; /***************************************************************/ @@ -363,7 +363,6 @@ void Receiver::timerCallback() void Receiver::processPassband(RVec const &rf, uint32_t len) { - Eigen::internal::set_is_malloc_allowed(false); const ScopedLock sl (m_lock); uint32_t len_down; @@ -400,7 +399,6 @@ void Receiver::processPassband(RVec const &rf, uint32_t len) len_down = m_firArmDown.process(m_basebandBuffer, m_passbandBuffer, len); processBaseband(m_basebandBuffer, len_down); - Eigen::internal::set_is_malloc_allowed(true); } @@ -517,11 +515,14 @@ void Receiver::processBaseband(CVec const &iq, uint32_t len) { if (m_params.agcMu_index == agc_state_acquisition) { - AGC_Process(&agcBlind, CpxMagS(IQ_cpr), m_params.agcMu[m_params.agcMu_index], 1.0); +// AGC_Process(&agcBlind, CpxMagS(IQ_cpr), m_params.agcMu[m_params.agcMu_index], 1.0); + e_agc = m_pSymMapper->R2_cma - CpxMagS(m_trackers[0]); + AGC_Train(&agcBlind, e_agc, m_params.agcMu[m_params.agcMu_index]); } if (m_params.agcMu_index == agc_state_track) { - e_agc = CpxMagS(IQ_hard_last) - CpxMagS(IQ_cpr); + e_agc = m_pSymMapper->R2_cma - CpxMagS(m_trackers[0]); +// e_agc = CpxMagS(IQ_hard_last) - CpxMagS(IQ_cpr); AGC_Train(&agcBlind, e_agc, m_params.agcMu[m_params.agcMu_index]); } } @@ -645,7 +646,7 @@ void Receiver::processBaseband(CVec const &iq, uint32_t len) m_trackers_[winner_i] = CpxAddS(m_trackers_[winner_i], CpxScaleRealS(winner_diff, winner_d*TRACKER_MU+TRACKER_EPS)); for (int i=0; i < 4; i++) { - m_trackers[i] = CpxAddS(CpxScaleRealS(m_trackers[i], 0.995f), CpxScaleRealS(m_trackers_[i], 0.005f)); + m_trackers[i] = CpxAddS(CpxScaleRealS(m_trackers[i], 0.998f), CpxScaleRealS(m_trackers_[i], 0.002f)); } // Statistics