- added Receiver Thread
git-svn-id: http://moon:8086/svn/software/trunk/projects/mpsk_rx_gui@110 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
@@ -35,6 +35,8 @@ MainComponent::MainComponent ()
|
||||
m_pTransmitter(new Transmitter()),
|
||||
m_ControlComponent(new ControlComponent(m_pReceiver, m_pTransmitter)), m_log(this),
|
||||
m_pReceiverControl(m_pReceiver)
|
||||
, Thread("Receiver")
|
||||
|
||||
{
|
||||
addAndMakeVisible (tabbedComponent = new TabbedComponent (TabbedButtonBar::TabsAtTop));
|
||||
tabbedComponent->setTabBarDepth (38);
|
||||
@@ -75,13 +77,14 @@ MainComponent::MainComponent ()
|
||||
|
||||
getSharedAudioDeviceManager().addChangeListener (this);
|
||||
getSharedAudioDeviceManager().addAudioCallback (this);
|
||||
startTimer (1000 / 30);
|
||||
startTimer (1000 / 20);
|
||||
//[/Constructor]
|
||||
}
|
||||
|
||||
MainComponent::~MainComponent()
|
||||
{
|
||||
//[Destructor_pre]. You can add your own custom destruction code here..
|
||||
stopThread(1000);
|
||||
stopTimer();
|
||||
getSharedAudioDeviceManager().removeAudioCallback (this);
|
||||
getSharedAudioDeviceManager().removeChangeListener (this);
|
||||
@@ -127,6 +130,17 @@ void MainComponent::changeListenerCallback (ChangeBroadcaster*)
|
||||
// dumpDeviceInfo();
|
||||
}
|
||||
|
||||
// Thread
|
||||
void MainComponent::run()
|
||||
{
|
||||
while(!threadShouldExit())
|
||||
{
|
||||
const RVec &data = m_rxBuf.read();
|
||||
|
||||
m_pReceiver->processPassband(data, data.size());
|
||||
}
|
||||
}
|
||||
|
||||
void MainComponent::audioDeviceIOCallback (const float** inputChannelData,
|
||||
int numInputChannels,
|
||||
float** outputChannelData,
|
||||
@@ -137,24 +151,25 @@ void MainComponent::audioDeviceIOCallback (const float** inputChannelData,
|
||||
(void) numInputChannels;
|
||||
(void) numOutputChannels;
|
||||
|
||||
// m_pReceiver->processBaseband((float*)inputChannelData[0], (float*)inputChannelData[1], numSamples);
|
||||
Map<RVec> rf((RealScalar*)inputChannelData[0], numSamples);
|
||||
m_pTransmitterControl->getData(outputChannelData[0], numSamples);
|
||||
m_pReceiver->processPassband((float*)inputChannelData[0], numSamples);
|
||||
// m_pReceiver->processPassband(rf, numSamples);
|
||||
m_rxBuf.write(rf, numSamples);
|
||||
|
||||
}
|
||||
|
||||
void MainComponent::audioDeviceAboutToStart (AudioIODevice* device)
|
||||
{
|
||||
int bufferSize;
|
||||
|
||||
int bufferSize = device->getCurrentBufferSizeSamples();
|
||||
m_rxBuf.resize(bufferSize);
|
||||
m_samplerate = (float)device->getCurrentSampleRate();
|
||||
bufferSize = device->getCurrentBufferSizeSamples();
|
||||
|
||||
m_pTransmitterControl->setBuffersize(bufferSize);
|
||||
m_pTransmitterControl->setSamplerate(m_samplerate);
|
||||
|
||||
m_pReceiver->setBufSize(bufferSize);
|
||||
m_pReceiverControl->setSamplerate(m_samplerate);
|
||||
startThread();
|
||||
}
|
||||
|
||||
void MainComponent::audioDeviceStopped()
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
#include "ControlComponent.h"
|
||||
#include "Receiver.h"
|
||||
#include "Transmitter.h"
|
||||
#include <radio/Vector.hpp>
|
||||
#include "RxBuffer.hpp"
|
||||
//[/Headers]
|
||||
|
||||
|
||||
@@ -45,7 +47,8 @@ class MainComponent : public Component,
|
||||
public AudioIODeviceCallback,
|
||||
public ReceiverDataListener,
|
||||
public LogHandler,
|
||||
public Timer
|
||||
public Timer,
|
||||
public Thread
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
@@ -74,10 +77,11 @@ private:
|
||||
ReceiverInterface *m_pReceiverControl;
|
||||
TransmitterInterface *m_pTransmitterControl;
|
||||
float m_samplerate;
|
||||
|
||||
RxBuffer<2> m_rxBuf;
|
||||
void timerCallback() override;
|
||||
AudioDeviceManager& getSharedAudioDeviceManager();
|
||||
void changeListenerCallback (ChangeBroadcaster*) override;
|
||||
void run();
|
||||
AudioDeviceManager& getSharedAudioDeviceManager();
|
||||
void audioDeviceIOCallback (const float** inputChannelData,
|
||||
int numInputChannels,
|
||||
float** outputChannelData,
|
||||
|
||||
Reference in New Issue
Block a user