SDRDaemon input: use timestamps in milliseconds directly

This commit is contained in:
f4exb 2018-11-13 13:45:55 +01:00
parent ec2bf7a57d
commit 5167aecb6a
7 changed files with 26 additions and 48 deletions

View File

@ -45,6 +45,7 @@ public:
// samples timestamp // samples timestamp
uint32_t getTVOutSec() const { return m_tvOut_sec; } uint32_t getTVOutSec() const { return m_tvOut_sec; }
uint32_t getTVOutUsec() const { return m_tvOut_usec; } uint32_t getTVOutUsec() const { return m_tvOut_usec; }
uint64_t getTVOutMSec() const { return (m_tvOut_sec * 1000LL) + (m_tvOut_usec/ 1000LL); }
// stats // stats

View File

@ -71,8 +71,7 @@ SDRdaemonSourceGui::SDRdaemonSourceGui(DeviceUISet *deviceUISet, QWidget* parent
m_paletteGreenText.setColor(QPalette::WindowText, Qt::green); m_paletteGreenText.setColor(QPalette::WindowText, Qt::green);
m_paletteWhiteText.setColor(QPalette::WindowText, Qt::white); m_paletteWhiteText.setColor(QPalette::WindowText, Qt::white);
m_startingTimeStamp.tv_sec = 0; m_startingTimeStampms = 0;
m_startingTimeStamp.tv_usec = 0;
ui->setupUi(this); ui->setupUi(this);
ui->centerFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold)); ui->centerFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold));
@ -187,20 +186,17 @@ bool SDRdaemonSourceGui::handleMessage(const Message& message)
} }
else if (SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData::match(message)) else if (SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData::match(message))
{ {
m_startingTimeStamp.tv_sec = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData&)message).get_tv_sec(); m_startingTimeStampms = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData&)message).get_tv_msec();
m_startingTimeStamp.tv_usec = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData&)message).get_tv_usec();
qDebug() << "SDRdaemonSourceGui::handleMessage: SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData: " qDebug() << "SDRdaemonSourceGui::handleMessage: SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData: "
<< " : " << m_startingTimeStamp.tv_sec << " : " << m_startingTimeStampms << " ms";
<< " : " << m_startingTimeStamp.tv_usec;
updateWithStreamTime(); updateWithStreamTime();
return true; return true;
} }
else if (SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming::match(message)) else if (SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming::match(message))
{ {
m_startingTimeStamp.tv_sec = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).get_tv_sec(); m_startingTimeStampms = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).get_tv_msec();
m_startingTimeStamp.tv_usec = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).get_tv_usec();
m_framesDecodingStatus = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getFramesDecodingStatus(); m_framesDecodingStatus = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getFramesDecodingStatus();
m_allBlocksReceived = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).allBlocksReceived(); m_allBlocksReceived = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).allBlocksReceived();
m_bufferLengthInSecs = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getBufferLengthInSecs(); m_bufferLengthInSecs = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getBufferLengthInSecs();
@ -464,8 +460,7 @@ void SDRdaemonSourceGui::updateWithAcquisition()
void SDRdaemonSourceGui::updateWithStreamTime() void SDRdaemonSourceGui::updateWithStreamTime()
{ {
bool updateEventCounts = false; bool updateEventCounts = false;
quint64 startingTimeStampMsec = ((quint64) m_startingTimeStamp.tv_sec * 1000LL) + ((quint64) m_startingTimeStamp.tv_usec / 1000LL); QDateTime dt = QDateTime::fromMSecsSinceEpoch(m_startingTimeStampms);
QDateTime dt = QDateTime::fromMSecsSinceEpoch(startingTimeStampMsec);
QString s_date = dt.toString("yyyy-MM-dd HH:mm:ss.zzz"); QString s_date = dt.toString("yyyy-MM-dd HH:mm:ss.zzz");
ui->absTimeText->setText(s_date); ui->absTimeText->setText(s_date);

View File

@ -17,8 +17,6 @@
#ifndef INCLUDE_SDRDAEMONSOURCEGUI_H #ifndef INCLUDE_SDRDAEMONSOURCEGUI_H
#define INCLUDE_SDRDAEMONSOURCEGUI_H #define INCLUDE_SDRDAEMONSOURCEGUI_H
#include <sys/time.h>
#include <QTimer> #include <QTimer>
#include <QWidget> #include <QWidget>
#include <QNetworkRequest> #include <QNetworkRequest>
@ -72,7 +70,7 @@ private:
// int m_sampleRate; // int m_sampleRate;
// quint64 m_centerFrequency; // quint64 m_centerFrequency;
struct timeval m_startingTimeStamp; uint64_t m_startingTimeStampms;
int m_framesDecodingStatus; int m_framesDecodingStatus;
bool m_allBlocksReceived; bool m_allBlocksReceived;
float m_bufferLengthInSecs; float m_bufferLengthInSecs;

View File

@ -355,8 +355,7 @@ void SDRdaemonSourceInput::webapiFormatDeviceReport(SWGSDRangel::SWGDeviceReport
response.getSdrDaemonSourceReport()->setSampleRate(m_SDRdaemonUDPHandler->getSampleRate()); response.getSdrDaemonSourceReport()->setSampleRate(m_SDRdaemonUDPHandler->getSampleRate());
response.getSdrDaemonSourceReport()->setBufferRwBalance(m_SDRdaemonUDPHandler->getBufferGauge()); response.getSdrDaemonSourceReport()->setBufferRwBalance(m_SDRdaemonUDPHandler->getBufferGauge());
quint64 startingTimeStampMsec = ((quint64) m_SDRdaemonUDPHandler->getTVSec() * 1000LL) + ((quint64) m_SDRdaemonUDPHandler->getTVuSec() / 1000LL); QDateTime dt = QDateTime::fromMSecsSinceEpoch(m_SDRdaemonUDPHandler->getTVmSec());
QDateTime dt = QDateTime::fromMSecsSinceEpoch(startingTimeStampMsec);
response.getSdrDaemonSourceReport()->setDaemonTimestamp(new QString(dt.toString("yyyy-MM-dd HH:mm:ss.zzz"))); response.getSdrDaemonSourceReport()->setDaemonTimestamp(new QString(dt.toString("yyyy-MM-dd HH:mm:ss.zzz")));
response.getSdrDaemonSourceReport()->setMinNbBlocks(m_SDRdaemonUDPHandler->getMinNbBlocks()); response.getSdrDaemonSourceReport()->setMinNbBlocks(m_SDRdaemonUDPHandler->getMinNbBlocks());

View File

@ -99,26 +99,23 @@ public:
public: public:
int getSampleRate() const { return m_sampleRate; } int getSampleRate() const { return m_sampleRate; }
quint64 getCenterFrequency() const { return m_centerFrequency; } quint64 getCenterFrequency() const { return m_centerFrequency; }
uint32_t get_tv_sec() const { return m_tv_sec; } uint32_t get_tv_msec() const { return m_tv_msec; }
uint32_t get_tv_usec() const { return m_tv_usec; }
static MsgReportSDRdaemonSourceStreamData* create(int sampleRate, quint64 centerFrequency, uint32_t tv_sec, uint32_t tv_usec) static MsgReportSDRdaemonSourceStreamData* create(int sampleRate, quint64 centerFrequency, uint64_t tv_msec)
{ {
return new MsgReportSDRdaemonSourceStreamData(sampleRate, centerFrequency, tv_sec, tv_usec); return new MsgReportSDRdaemonSourceStreamData(sampleRate, centerFrequency, tv_msec);
} }
protected: protected:
int m_sampleRate; int m_sampleRate;
quint64 m_centerFrequency; quint64 m_centerFrequency;
uint32_t m_tv_sec; uint64_t m_tv_msec;
uint32_t m_tv_usec;
MsgReportSDRdaemonSourceStreamData(int sampleRate, quint64 centerFrequency, uint32_t tv_sec, uint32_t tv_usec) : MsgReportSDRdaemonSourceStreamData(int sampleRate, quint64 centerFrequency, uint64_t tv_msec) :
Message(), Message(),
m_sampleRate(sampleRate), m_sampleRate(sampleRate),
m_centerFrequency(centerFrequency), m_centerFrequency(centerFrequency),
m_tv_sec(tv_sec), m_tv_msec(tv_msec)
m_tv_usec(tv_usec)
{ } { }
}; };
@ -126,8 +123,7 @@ public:
MESSAGE_CLASS_DECLARATION MESSAGE_CLASS_DECLARATION
public: public:
uint32_t get_tv_sec() const { return m_tv_sec; } uint64_t get_tv_msec() const { return m_tv_msec; }
uint32_t get_tv_usec() const { return m_tv_usec; }
int getFramesDecodingStatus() const { return m_framesDecodingStatus; } int getFramesDecodingStatus() const { return m_framesDecodingStatus; }
bool allBlocksReceived() const { return m_allBlocksReceived; } bool allBlocksReceived() const { return m_allBlocksReceived; }
float getBufferLengthInSecs() const { return m_bufferLenSec; } float getBufferLengthInSecs() const { return m_bufferLenSec; }
@ -143,8 +139,7 @@ public:
int getSampleBits() const { return m_sampleBits; } int getSampleBits() const { return m_sampleBits; }
int getSampleBytes() const { return m_sampleBytes; } int getSampleBytes() const { return m_sampleBytes; }
static MsgReportSDRdaemonSourceStreamTiming* create(uint32_t tv_sec, static MsgReportSDRdaemonSourceStreamTiming* create(uint64_t tv_msec,
uint32_t tv_usec,
float bufferLenSec, float bufferLenSec,
int32_t bufferGauge, int32_t bufferGauge,
int framesDecodingStatus, int framesDecodingStatus,
@ -160,8 +155,7 @@ public:
int sampleBits, int sampleBits,
int sampleBytes) int sampleBytes)
{ {
return new MsgReportSDRdaemonSourceStreamTiming(tv_sec, return new MsgReportSDRdaemonSourceStreamTiming(tv_msec,
tv_usec,
bufferLenSec, bufferLenSec,
bufferGauge, bufferGauge,
framesDecodingStatus, framesDecodingStatus,
@ -179,8 +173,7 @@ public:
} }
protected: protected:
uint32_t m_tv_sec; uint64_t m_tv_msec;
uint32_t m_tv_usec;
int m_framesDecodingStatus; int m_framesDecodingStatus;
bool m_allBlocksReceived; bool m_allBlocksReceived;
float m_bufferLenSec; float m_bufferLenSec;
@ -196,8 +189,7 @@ public:
int m_sampleBits; int m_sampleBits;
int m_sampleBytes; int m_sampleBytes;
MsgReportSDRdaemonSourceStreamTiming(uint32_t tv_sec, MsgReportSDRdaemonSourceStreamTiming(uint64_t tv_msec,
uint32_t tv_usec,
float bufferLenSec, float bufferLenSec,
int32_t bufferGauge, int32_t bufferGauge,
int framesDecodingStatus, int framesDecodingStatus,
@ -213,8 +205,7 @@ public:
int sampleBits, int sampleBits,
int sampleBytes) : int sampleBytes) :
Message(), Message(),
m_tv_sec(tv_sec), m_tv_msec(tv_msec),
m_tv_usec(tv_usec),
m_framesDecodingStatus(framesDecodingStatus), m_framesDecodingStatus(framesDecodingStatus),
m_allBlocksReceived(allBlocksReceived), m_allBlocksReceived(allBlocksReceived),
m_bufferLenSec(bufferLenSec), m_bufferLenSec(bufferLenSec),

View File

@ -41,8 +41,7 @@ SDRdaemonSourceUDPHandler::SDRdaemonSourceUDPHandler(SampleSinkFifo *sampleFifo,
m_sampleFifo(sampleFifo), m_sampleFifo(sampleFifo),
m_samplerate(0), m_samplerate(0),
m_centerFrequency(0), m_centerFrequency(0),
m_tv_sec(0), m_tv_msec(0),
m_tv_usec(0),
m_outputMessageQueueToGUI(0), m_outputMessageQueueToGUI(0),
m_tickCount(0), m_tickCount(0),
m_samplesCount(0), m_samplesCount(0),
@ -179,8 +178,7 @@ void SDRdaemonSourceUDPHandler::processData()
const SDRDaemonMetaDataFEC& metaData = m_sdrDaemonBuffer.getCurrentMeta(); const SDRDaemonMetaDataFEC& metaData = m_sdrDaemonBuffer.getCurrentMeta();
bool change = false; bool change = false;
m_tv_sec = m_sdrDaemonBuffer.getTVOutSec(); m_tv_msec = m_sdrDaemonBuffer.getTVOutMSec();
m_tv_usec = m_sdrDaemonBuffer.getTVOutUsec();
if (m_centerFrequency != metaData.m_centerFrequency) if (m_centerFrequency != metaData.m_centerFrequency)
{ {
@ -206,8 +204,7 @@ void SDRdaemonSourceUDPHandler::processData()
SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData *report = SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData::create( SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData *report = SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamData::create(
m_samplerate, m_samplerate,
m_centerFrequency * 1000, // Frequency in Hz for the GUI m_centerFrequency * 1000, // Frequency in Hz for the GUI
m_tv_sec, m_tv_msec);
m_tv_usec);
m_outputMessageQueueToGUI->push(report); m_outputMessageQueueToGUI->push(report);
} }
@ -343,8 +340,7 @@ void SDRdaemonSourceUDPHandler::tick()
} }
SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming *report = SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming::create( SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming *report = SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming::create(
m_tv_sec, m_tv_msec,
m_tv_usec,
m_sdrDaemonBuffer.getBufferLengthInSecs(), m_sdrDaemonBuffer.getBufferLengthInSecs(),
m_sdrDaemonBuffer.getBufferGauge(), m_sdrDaemonBuffer.getBufferGauge(),
framesDecodingStatus, framesDecodingStatus,

View File

@ -48,8 +48,7 @@ public:
int getSampleRate() const { return m_samplerate; } int getSampleRate() const { return m_samplerate; }
int getCenterFrequency() const { return m_centerFrequency * 1000; } int getCenterFrequency() const { return m_centerFrequency * 1000; }
int getBufferGauge() const { return m_sdrDaemonBuffer.getBufferGauge(); } int getBufferGauge() const { return m_sdrDaemonBuffer.getBufferGauge(); }
uint32_t getTVSec() const { return m_tv_sec; } uint64_t getTVmSec() const { return m_tv_msec; }
uint32_t getTVuSec() const { return m_tv_usec; }
int getMinNbBlocks() { return m_sdrDaemonBuffer.getMinNbBlocks(); } int getMinNbBlocks() { return m_sdrDaemonBuffer.getMinNbBlocks(); }
int getMaxNbRecovery() { return m_sdrDaemonBuffer.getMaxNbRecovery(); } int getMaxNbRecovery() { return m_sdrDaemonBuffer.getMaxNbRecovery(); }
public slots: public slots:
@ -72,8 +71,7 @@ private:
SampleSinkFifo *m_sampleFifo; SampleSinkFifo *m_sampleFifo;
uint32_t m_samplerate; uint32_t m_samplerate;
uint32_t m_centerFrequency; uint32_t m_centerFrequency;
uint32_t m_tv_sec; uint64_t m_tv_msec;
uint32_t m_tv_usec;
MessageQueue *m_outputMessageQueueToGUI; MessageQueue *m_outputMessageQueueToGUI;
uint32_t m_tickCount; uint32_t m_tickCount;
std::size_t m_samplesCount; std::size_t m_samplesCount;