- added test button
- added sample slip for performance investigation
This commit is contained in:
@@ -270,6 +270,11 @@ ControlComponent::ControlComponent (ReceiverInterface *pReceiverControlListener,
|
|||||||
m_buttonResetReset->setButtonText (TRANS("Reset"));
|
m_buttonResetReset->setButtonText (TRANS("Reset"));
|
||||||
m_buttonResetReset->addListener (this);
|
m_buttonResetReset->addListener (this);
|
||||||
|
|
||||||
|
addAndMakeVisible (m_buttonTest = new TextButton ("Test"));
|
||||||
|
m_buttonTest->setTooltip (TRANS("Test button"));
|
||||||
|
m_buttonTest->setButtonText (TRANS("Test"));
|
||||||
|
m_buttonTest->addListener (this);
|
||||||
|
|
||||||
addAndMakeVisible (m_entryAgcMu_0 = new TextEditor ("AGC Adaption Rate 0"));
|
addAndMakeVisible (m_entryAgcMu_0 = new TextEditor ("AGC Adaption Rate 0"));
|
||||||
m_entryAgcMu_0->setTooltip (TRANS("AGC Adaption Rate 0"));
|
m_entryAgcMu_0->setTooltip (TRANS("AGC Adaption Rate 0"));
|
||||||
m_entryAgcMu_0->setMultiLine (false);
|
m_entryAgcMu_0->setMultiLine (false);
|
||||||
@@ -782,6 +787,7 @@ ControlComponent::~ControlComponent()
|
|||||||
m_labelNoiseStr = nullptr;
|
m_labelNoiseStr = nullptr;
|
||||||
m_labelSymbolReceivedCount = nullptr;
|
m_labelSymbolReceivedCount = nullptr;
|
||||||
m_buttonResetReset = nullptr;
|
m_buttonResetReset = nullptr;
|
||||||
|
m_buttonTest = nullptr;
|
||||||
m_entryAgcMu_0 = nullptr;
|
m_entryAgcMu_0 = nullptr;
|
||||||
toggleButtonCmaTrainingEnable = nullptr;
|
toggleButtonCmaTrainingEnable = nullptr;
|
||||||
toggleButtonDfeTrainingEnable = nullptr;
|
toggleButtonDfeTrainingEnable = nullptr;
|
||||||
@@ -1200,6 +1206,7 @@ void ControlComponent::resized()
|
|||||||
m_labelNoiseStr->setBounds (576, 624, 58, 24);
|
m_labelNoiseStr->setBounds (576, 624, 58, 24);
|
||||||
m_labelSymbolReceivedCount->setBounds (544, 288, 90, 24);
|
m_labelSymbolReceivedCount->setBounds (544, 288, 90, 24);
|
||||||
m_buttonResetReset->setBounds (512, 792, 64, 24);
|
m_buttonResetReset->setBounds (512, 792, 64, 24);
|
||||||
|
m_buttonTest->setBounds (512, 692, 64, 24);
|
||||||
m_entryAgcMu_0->setBounds (560, 104, 64, 24);
|
m_entryAgcMu_0->setBounds (560, 104, 64, 24);
|
||||||
toggleButtonCmaTrainingEnable->setBounds (24, 320, 64, 24);
|
toggleButtonCmaTrainingEnable->setBounds (24, 320, 64, 24);
|
||||||
toggleButtonDfeTrainingEnable->setBounds (280, 320, 64, 24);
|
toggleButtonDfeTrainingEnable->setBounds (280, 320, 64, 24);
|
||||||
@@ -1329,6 +1336,12 @@ void ControlComponent::buttonClicked (Button* buttonThatWasClicked)
|
|||||||
m_pReceiverControlListener->reset();
|
m_pReceiverControlListener->reset();
|
||||||
//[/UserButtonCode_m_buttonResetReset]
|
//[/UserButtonCode_m_buttonResetReset]
|
||||||
}
|
}
|
||||||
|
else if (buttonThatWasClicked == m_buttonTest)
|
||||||
|
{
|
||||||
|
//[UserButtonCode_m_buttonResetReset] -- add your button handler code here..
|
||||||
|
m_pReceiverControlListener->test();
|
||||||
|
//[/UserButtonCode_m_buttonResetReset]
|
||||||
|
}
|
||||||
else if (buttonThatWasClicked == toggleButtonCmaTrainingEnable)
|
else if (buttonThatWasClicked == toggleButtonCmaTrainingEnable)
|
||||||
{
|
{
|
||||||
//[UserButtonCode_toggleButtonCmaTrainingEnable] -- add your button handler code here..
|
//[UserButtonCode_toggleButtonCmaTrainingEnable] -- add your button handler code here..
|
||||||
|
|||||||
@@ -115,6 +115,7 @@ private:
|
|||||||
ScopedPointer<Label> m_labelNoiseStr;
|
ScopedPointer<Label> m_labelNoiseStr;
|
||||||
ScopedPointer<Label> m_labelSymbolReceivedCount;
|
ScopedPointer<Label> m_labelSymbolReceivedCount;
|
||||||
ScopedPointer<TextButton> m_buttonResetReset;
|
ScopedPointer<TextButton> m_buttonResetReset;
|
||||||
|
ScopedPointer<TextButton> m_buttonTest;
|
||||||
ScopedPointer<TextEditor> m_entryAgcMu_0;
|
ScopedPointer<TextEditor> m_entryAgcMu_0;
|
||||||
ScopedPointer<ToggleButton> toggleButtonCmaTrainingEnable;
|
ScopedPointer<ToggleButton> toggleButtonCmaTrainingEnable;
|
||||||
ScopedPointer<ToggleButton> toggleButtonDfeTrainingEnable;
|
ScopedPointer<ToggleButton> toggleButtonDfeTrainingEnable;
|
||||||
|
|||||||
+35
-9
@@ -51,6 +51,7 @@ Receiver::Receiver(LogHandler *pLogHandler)
|
|||||||
, m_frameReceiver()
|
, m_frameReceiver()
|
||||||
, m_pSymMapper(0)
|
, m_pSymMapper(0)
|
||||||
, m_tracker(1.0 - 5.0/EQ_UPD_INTERVAL)
|
, m_tracker(1.0 - 5.0/EQ_UPD_INTERVAL)
|
||||||
|
, m_is_slip(0)
|
||||||
{
|
{
|
||||||
m_params.numBitsPerSymbol = 2;
|
m_params.numBitsPerSymbol = 2;
|
||||||
m_params.samplerate = 48000;
|
m_params.samplerate = 48000;
|
||||||
@@ -344,12 +345,6 @@ void Receiver::timerCallback()
|
|||||||
m_statusListeners.call(&ReceiverStatusListener::receiverStatusChanged, this);
|
m_statusListeners.call(&ReceiverStatusListener::receiverStatusChanged, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
// printf("CMA\n");
|
|
||||||
// cout << m_cma2.getWeights() << endl;
|
|
||||||
|
|
||||||
printf("m_timingGenerator\n");
|
|
||||||
cout << m_timingGenerator.getMu() << endl;
|
|
||||||
cout << m_timingGenerator.getMuVar() << endl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Receiver::processPassband(RVec const &rf, size_t len)
|
void Receiver::processPassband(RVec const &rf, size_t len)
|
||||||
@@ -391,15 +386,30 @@ void Receiver::processPassband(RVec const &rf, size_t len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef DISABLE_UNUSED_STATISTICS
|
#ifndef DISABLE_UNUSED_STATISTICS
|
||||||
SlidingVarProcessV(&m_statistics.RF, rf_noise.data(), len);
|
SlidingVarProcessV(&m_statistics.RF, rf_noise.data(), rf_noise.size());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Digital Down Converter
|
// Digital Down Converter
|
||||||
// @samplerate
|
// @samplerate
|
||||||
m_nco_ddc.mixRealComplexV(m_passbandBuffer, rf_noise, RealScalar(2)/*m_params.agcGain[0]*/, len);
|
m_nco_ddc.mixRealComplexV(m_passbandBuffer, rf_noise, RealScalar(2)/*m_params.agcGain[0]*/, rf_noise.size());
|
||||||
|
|
||||||
|
CVec rf_duc;
|
||||||
|
rf_duc.reserve(m_passbandBuffer.size());
|
||||||
|
|
||||||
|
size_t len_eff = 0;
|
||||||
|
for (auto sample : m_passbandBuffer)
|
||||||
|
{
|
||||||
|
if (is_slip())
|
||||||
|
{
|
||||||
|
printf("isSlip()\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
rf_duc.resize(len_eff+1);
|
||||||
|
rf_duc[len_eff++] = sample;
|
||||||
|
}
|
||||||
|
|
||||||
// Arm Filtering and downsampling
|
// Arm Filtering and downsampling
|
||||||
len_down = m_firArmDown.process(m_basebandBuffer, m_passbandBuffer, len);
|
len_down = m_firArmDown.process(m_basebandBuffer, rf_duc, rf_duc.size());
|
||||||
processBaseband(m_basebandBuffer, len_down);
|
processBaseband(m_basebandBuffer, len_down);
|
||||||
|
|
||||||
|
|
||||||
@@ -878,6 +888,22 @@ void Receiver::reset()
|
|||||||
m_statusListeners.call(&ReceiverStatusListener::receiverStatusChanged, this);
|
m_statusListeners.call(&ReceiverStatusListener::receiverStatusChanged, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Receiver::test()
|
||||||
|
{
|
||||||
|
const ScopedLock sl (m_lock);
|
||||||
|
|
||||||
|
printf("CMA\n");
|
||||||
|
cout << m_cma2.getWeights() << endl;
|
||||||
|
|
||||||
|
printf("m_timingGenerator\n");
|
||||||
|
cout << "MU: " << m_timingGenerator.getMu() << endl;
|
||||||
|
cout << "Var: " << m_timingGenerator.getMuVar() << endl;
|
||||||
|
|
||||||
|
m_ReceiverEnable = false;
|
||||||
|
m_is_slip = 1;
|
||||||
|
m_ReceiverEnable = true;
|
||||||
|
}
|
||||||
|
|
||||||
void Receiver::statisticsReset()
|
void Receiver::statisticsReset()
|
||||||
{
|
{
|
||||||
m_frameReceiver.resetStats();
|
m_frameReceiver.resetStats();
|
||||||
|
|||||||
@@ -246,6 +246,7 @@ public:
|
|||||||
virtual const status_t& getStatus() = 0;
|
virtual const status_t& getStatus() = 0;
|
||||||
virtual cpx_t getTracker(uint32 index) = 0;
|
virtual cpx_t getTracker(uint32 index) = 0;
|
||||||
virtual void reset() = 0;
|
virtual void reset() = 0;
|
||||||
|
virtual void test() = 0;
|
||||||
virtual void statisticsReset() = 0;
|
virtual void statisticsReset() = 0;
|
||||||
virtual void strReset() = 0;
|
virtual void strReset() = 0;
|
||||||
virtual void cprReset() = 0;
|
virtual void cprReset() = 0;
|
||||||
@@ -412,6 +413,7 @@ private:
|
|||||||
params_t& getParams() override;
|
params_t& getParams() override;
|
||||||
status_t& getStatus() override;
|
status_t& getStatus() override;
|
||||||
void reset() override;
|
void reset() override;
|
||||||
|
void test() override;
|
||||||
void strReset() override;
|
void strReset() override;
|
||||||
void cprReset() override;
|
void cprReset() override;
|
||||||
void dfeReset() override;
|
void dfeReset() override;
|
||||||
@@ -430,6 +432,19 @@ private:
|
|||||||
{
|
{
|
||||||
return m_dfe_off2.getWeights();
|
return m_dfe_off2.getWeights();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t m_is_slip;
|
||||||
|
|
||||||
|
bool is_slip()
|
||||||
|
{
|
||||||
|
bool result = m_is_slip;
|
||||||
|
if (m_is_slip)
|
||||||
|
{
|
||||||
|
m_is_slip--;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _RECEIVER_H_
|
#endif // _RECEIVER_H_
|
||||||
|
|||||||
Reference in New Issue
Block a user