mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-04 05:30:32 -05:00 
			
		
		
		
	SDRdaemon plugin. Debug core dump
This commit is contained in:
		
							parent
							
								
									9213cee156
								
							
						
					
					
						commit
						31ef841a99
					
				@ -240,14 +240,14 @@ uint8_t *SDRdaemonBuffer::readData(uint32_t length)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if (m_readCount + length < m_rawSize)
 | 
						if (m_readCount + length < m_rawSize)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		m_readCount += length;
 | 
					 | 
				
			||||||
		return &m_rawBuffer[readCount];
 | 
							return &m_rawBuffer[readCount];
 | 
				
			||||||
 | 
							m_readCount += length;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		std::memcpy((void *) m_frameBuffer, (const void *) &m_rawBuffer[readCount], m_rawSize - m_rawCount);
 | 
							std::memcpy((void *) m_frameBuffer, (const void *) &m_rawBuffer[readCount], m_rawSize - m_readCount); // read last bit from raw buffer
 | 
				
			||||||
		m_readCount = length - (m_rawSize - m_rawCount);
 | 
							m_readCount = length - (m_rawSize - m_readCount);
 | 
				
			||||||
		std::memcpy((void *) m_frameBuffer, (const void *) &m_frameBuffer[m_rawSize - m_rawCount], m_readCount);
 | 
							std::memcpy((void *) &m_frameBuffer[m_rawSize - m_readCount], (const void *) m_frameBuffer, m_readCount); // read the rest at start of raw buffer
 | 
				
			||||||
		return m_frameBuffer;
 | 
							return m_frameBuffer;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -29,6 +29,42 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
MESSAGE_CLASS_DEFINITION(SDRdaemonInput::MsgConfigureSDRdaemonUDPLink, Message)
 | 
					MESSAGE_CLASS_DEFINITION(SDRdaemonInput::MsgConfigureSDRdaemonUDPLink, Message)
 | 
				
			||||||
MESSAGE_CLASS_DEFINITION(SDRdaemonInput::MsgConfigureSDRdaemonWork, Message)
 | 
					MESSAGE_CLASS_DEFINITION(SDRdaemonInput::MsgConfigureSDRdaemonWork, Message)
 | 
				
			||||||
 | 
					void SDRdaemonInput::updateLink(const QString& address, quint16 port)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						QMutexLocker mutexLocker(&m_mutex);
 | 
				
			||||||
 | 
						bool wasRunning = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ((m_address != address) || (m_port != port))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if (m_SDRdaemonThread != 0)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								wasRunning = m_SDRdaemonThread->isRunning();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (wasRunning)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									m_SDRdaemonThread->stopWork();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (m_SDRdaemonThread != 0)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								m_SDRdaemonThread->updateLink(address, port);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (wasRunning)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									m_SDRdaemonThread->startWork();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							m_address = address;
 | 
				
			||||||
 | 
							m_port = port;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							qDebug() << "SDRdaemonInput::updateLink:"
 | 
				
			||||||
 | 
									<< " address: " << m_address.toStdString().c_str()
 | 
				
			||||||
 | 
									<< "port: " << m_port;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MESSAGE_CLASS_DEFINITION(SDRdaemonInput::MsgConfigureSDRdaemonStreamTiming, Message)
 | 
					MESSAGE_CLASS_DEFINITION(SDRdaemonInput::MsgConfigureSDRdaemonStreamTiming, Message)
 | 
				
			||||||
MESSAGE_CLASS_DEFINITION(SDRdaemonInput::MsgReportSDRdaemonAcquisition, Message)
 | 
					MESSAGE_CLASS_DEFINITION(SDRdaemonInput::MsgReportSDRdaemonAcquisition, Message)
 | 
				
			||||||
MESSAGE_CLASS_DEFINITION(SDRdaemonInput::MsgReportSDRdaemonStreamData, Message)
 | 
					MESSAGE_CLASS_DEFINITION(SDRdaemonInput::MsgReportSDRdaemonStreamData, Message)
 | 
				
			||||||
@ -72,7 +108,6 @@ bool SDRdaemonInput::start(int device)
 | 
				
			|||||||
		return false;
 | 
							return false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	m_SDRdaemonThread->setSamplerate(m_sampleRate);
 | 
					 | 
				
			||||||
	m_SDRdaemonThread->connectTimer(m_masterTimer);
 | 
						m_SDRdaemonThread->connectTimer(m_masterTimer);
 | 
				
			||||||
	m_SDRdaemonThread->startWork();
 | 
						m_SDRdaemonThread->startWork();
 | 
				
			||||||
	m_deviceDescription = "SDRdaemon";
 | 
						m_deviceDescription = "SDRdaemon";
 | 
				
			||||||
@ -173,75 +208,3 @@ bool SDRdaemonInput::handleMessage(const Message& message)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SDRdaemonInput::updateLink(const QString& address, quint16 port)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	QMutexLocker mutexLocker(&m_mutex);
 | 
					 | 
				
			||||||
	bool wasRunning = false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if ((m_address != address) || (m_port != port))
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		if (m_SDRdaemonThread != 0)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			wasRunning = m_SDRdaemonThread->isRunning();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			if (wasRunning)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				m_SDRdaemonThread->stopWork();
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (m_SDRdaemonThread != 0)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			m_SDRdaemonThread->updateLink(address, port);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			if (wasRunning)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				m_SDRdaemonThread->startWork();
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		m_address = address;
 | 
					 | 
				
			||||||
		m_port = port;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		qDebug() << "SDRdaemonInput::updateLink:"
 | 
					 | 
				
			||||||
				<< " address: " << m_address.toStdString().c_str()
 | 
					 | 
				
			||||||
				<< "port: " << m_port;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void SDRdaemonInput:: updateSampleRate(int sampleRate)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	QMutexLocker mutexLocker(&m_mutex);
 | 
					 | 
				
			||||||
	bool wasRunning = false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (m_sampleRate != sampleRate)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		m_sampleRate = sampleRate;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (m_SDRdaemonThread != 0)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			wasRunning = m_SDRdaemonThread->isRunning();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			if (wasRunning)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				m_SDRdaemonThread->stopWork();
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (m_SDRdaemonThread != 0)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			m_SDRdaemonThread->setSamplerate(m_sampleRate);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			if (wasRunning)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				m_SDRdaemonThread->startWork();
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
		DSPSignalNotification *notif = new DSPSignalNotification(m_sampleRate, m_centerFrequency);
 | 
					 | 
				
			||||||
		DSPEngine::instance()->getInputMessageQueue()->push(notif);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		qDebug() << "SDRdaemonInput::updateSampleRate:"
 | 
					 | 
				
			||||||
				<< " sample rate: " << m_sampleRate;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -179,7 +179,6 @@ private:
 | 
				
			|||||||
	const QTimer& m_masterTimer;
 | 
						const QTimer& m_masterTimer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void updateLink(const QString& address, quint16 port);
 | 
						void updateLink(const QString& address, quint16 port);
 | 
				
			||||||
	void updateSampleRate(int sampleRate);
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // INCLUDE_SDRDAEMONINPUT_H
 | 
					#endif // INCLUDE_SDRDAEMONINPUT_H
 | 
				
			||||||
 | 
				
			|||||||
@ -43,6 +43,19 @@ SDRdaemonThread::SDRdaemonThread(SampleFifo* sampleFifo, QObject* parent) :
 | 
				
			|||||||
	m_samplerate(0)
 | 
						m_samplerate(0)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    m_udpBuf = new char[m_udpPayloadSize];
 | 
					    m_udpBuf = new char[m_udpPayloadSize];
 | 
				
			||||||
 | 
					    m_dataSocket = new QUdpSocket(this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (m_dataSocket->bind(m_dataAddress, m_dataPort))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							qDebug("SDRdaemonThread::SDRdaemonThread: bind data socket to port %d", m_dataPort);
 | 
				
			||||||
 | 
							connect(m_dataSocket, SIGNAL(readyRead()), this, SLOT(dataReadyRead()));
 | 
				
			||||||
 | 
							m_dataConnected = true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    	qWarning("SDRdaemonThread::SDRdaemonThread: cannot bind data port %d", m_dataPort);
 | 
				
			||||||
 | 
					    	m_dataConnected = false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SDRdaemonThread::~SDRdaemonThread()
 | 
					SDRdaemonThread::~SDRdaemonThread()
 | 
				
			||||||
@ -64,27 +77,17 @@ void SDRdaemonThread::startWork()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	qDebug() << "SDRdaemonThread::startWork: ";
 | 
						qDebug() << "SDRdaemonThread::startWork: ";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!m_dataSocket) {
 | 
						if (!m_dataConnected)
 | 
				
			||||||
		m_dataSocket = new QUdpSocket(this);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
	if (m_dataSocket->bind(m_dataAddress, m_dataPort))
 | 
					 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		qDebug("SDRdaemonThread::startWork: bind data socket to port %d", m_dataPort);
 | 
					 | 
				
			||||||
		connect(m_dataSocket, SIGNAL(readyRead()), this, SLOT(dataReadyRead()));
 | 
							connect(m_dataSocket, SIGNAL(readyRead()), this, SLOT(dataReadyRead()));
 | 
				
			||||||
 | 
							m_dataConnected = true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	m_startWaitMutex.lock();
 | 
						m_startWaitMutex.lock();
 | 
				
			||||||
	start();
 | 
						start();
 | 
				
			||||||
	while(!m_running)
 | 
						while(!m_running)
 | 
				
			||||||
		m_startWaiter.wait(&m_startWaitMutex, 100);
 | 
							m_startWaiter.wait(&m_startWaitMutex, 100);
 | 
				
			||||||
	m_startWaitMutex.unlock();
 | 
						m_startWaitMutex.unlock();
 | 
				
			||||||
		m_dataConnected = true;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    	qWarning("SDRdaemonThread::startWork: cannot bind data port %d", m_dataPort);
 | 
					 | 
				
			||||||
    	m_dataConnected = false;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SDRdaemonThread::stopWork()
 | 
					void SDRdaemonThread::stopWork()
 | 
				
			||||||
@ -93,11 +96,7 @@ void SDRdaemonThread::stopWork()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if (m_dataConnected) {
 | 
						if (m_dataConnected) {
 | 
				
			||||||
		disconnect(m_dataSocket, SIGNAL(readyRead()), this, SLOT(dataReadyRead()));
 | 
							disconnect(m_dataSocket, SIGNAL(readyRead()), this, SLOT(dataReadyRead()));
 | 
				
			||||||
	}
 | 
							m_dataConnected = false;
 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (m_dataSocket) {
 | 
					 | 
				
			||||||
		delete m_dataSocket;
 | 
					 | 
				
			||||||
		m_dataSocket = 0;
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	m_running = false;
 | 
						m_running = false;
 | 
				
			||||||
@ -106,14 +105,16 @@ void SDRdaemonThread::stopWork()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void SDRdaemonThread::setSamplerate(uint32_t samplerate)
 | 
					void SDRdaemonThread::setSamplerate(uint32_t samplerate)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						bool wasRunning = m_running;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	qDebug() << "SDRdaemonThread::setSamplerate:"
 | 
						qDebug() << "SDRdaemonThread::setSamplerate:"
 | 
				
			||||||
			<< " new:" << samplerate
 | 
								<< " new:" << samplerate
 | 
				
			||||||
			<< " old:" << m_samplerate;
 | 
								<< " old:" << m_samplerate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (samplerate != m_samplerate)
 | 
						if (m_running)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		if (m_running) {
 | 
					 | 
				
			||||||
		stopWork();
 | 
							stopWork();
 | 
				
			||||||
 | 
							m_running = false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	m_samplerate = samplerate;
 | 
						m_samplerate = samplerate;
 | 
				
			||||||
@ -130,9 +131,43 @@ void SDRdaemonThread::setSamplerate(uint32_t samplerate)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	qDebug() << "  - size: " << m_bufsize
 | 
						qDebug() << "  - size: " << m_bufsize
 | 
				
			||||||
			<< " #samples: " << (m_bufsize/4);
 | 
								<< " #samples: " << (m_bufsize/4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (wasRunning)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							startWork();
 | 
				
			||||||
 | 
							m_running = true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void SDRdaemonThread::updateLink(const QString& address, quint16 port)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (m_dataSocket) {
 | 
				
			||||||
 | 
							delete m_dataSocket;
 | 
				
			||||||
 | 
							m_dataSocket = 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//m_samplerate = samplerate;
 | 
						m_dataSocket = new QUdpSocket(this);
 | 
				
			||||||
 | 
						m_dataPort = port;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (m_dataAddress.setAddress(address))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if (m_dataSocket->bind(m_dataAddress, m_dataPort))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								qDebug("SDRdaemonThread::startWork: bind data socket to port %d", m_dataPort);
 | 
				
			||||||
 | 
								connect(m_dataSocket, SIGNAL(readyRead()), this, SLOT(dataReadyRead()));
 | 
				
			||||||
 | 
								m_dataConnected = true;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								qWarning("SDRdaemonThread::updateLink: cannot bind data port %d", m_dataPort);
 | 
				
			||||||
 | 
								m_dataConnected = false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							qWarning("SDRdaemonThread::updateLink: cannot set data address: %s", qPrintable(address));
 | 
				
			||||||
 | 
							m_dataConnected = false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SDRdaemonThread::run()
 | 
					void SDRdaemonThread::run()
 | 
				
			||||||
@ -183,7 +218,13 @@ void SDRdaemonThread::dataReadyRead()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			if (m_sdrDaemonBuffer.readMeta(m_udpBuf, readBytes))
 | 
								if (m_sdrDaemonBuffer.readMeta(m_udpBuf, readBytes))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				setSamplerate(m_sdrDaemonBuffer.getCurrentMeta().m_sampleRate);
 | 
									uint32_t sampleRate = m_sdrDaemonBuffer.getCurrentMeta().m_sampleRate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if (m_samplerate != sampleRate)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										setSamplerate(sampleRate);
 | 
				
			||||||
 | 
										m_samplerate = sampleRate;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else if (m_sdrDaemonBuffer.isSync())
 | 
								else if (m_sdrDaemonBuffer.isSync())
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
 | 
				
			|||||||
@ -42,7 +42,6 @@ public:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	void startWork();
 | 
						void startWork();
 | 
				
			||||||
	void stopWork();
 | 
						void stopWork();
 | 
				
			||||||
	void setSamplerate(uint32_t samplerate);
 | 
					 | 
				
			||||||
	void updateLink(const QString& address, quint16 port);
 | 
						void updateLink(const QString& address, quint16 port);
 | 
				
			||||||
	bool isRunning() const { return m_running; }
 | 
						bool isRunning() const { return m_running; }
 | 
				
			||||||
	std::size_t getSamplesCount() const { return m_samplesCount; }
 | 
						std::size_t getSamplesCount() const { return m_samplesCount; }
 | 
				
			||||||
@ -59,7 +58,7 @@ private:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	QUdpSocket *m_dataSocket;
 | 
						QUdpSocket *m_dataSocket;
 | 
				
			||||||
	QHostAddress m_dataAddress;
 | 
						QHostAddress m_dataAddress;
 | 
				
			||||||
	int m_dataPort;
 | 
						quint16 m_dataPort;
 | 
				
			||||||
	bool m_dataConnected;
 | 
						bool m_dataConnected;
 | 
				
			||||||
	quint8 *m_buf;
 | 
						quint8 *m_buf;
 | 
				
			||||||
	char *m_udpBuf;
 | 
						char *m_udpBuf;
 | 
				
			||||||
@ -74,6 +73,7 @@ private:
 | 
				
			|||||||
	static const int m_rateDivider;
 | 
						static const int m_rateDivider;
 | 
				
			||||||
	static const int m_udpPayloadSize;
 | 
						static const int m_udpPayloadSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void setSamplerate(uint32_t samplerate);
 | 
				
			||||||
	void run();
 | 
						void run();
 | 
				
			||||||
private slots:
 | 
					private slots:
 | 
				
			||||||
	void tick();
 | 
						void tick();
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user