1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-05 23:45:00 -04:00

New FileSink channel plugin

This commit is contained in:
f4exb
2020-08-06 10:46:49 +02:00
parent d80d050992
commit 6bfc6bacee
26 changed files with 3752 additions and 30 deletions
+23 -21
View File
@@ -28,20 +28,21 @@
#include "filerecord.h"
FileRecord::FileRecord() :
BasebandSampleSink(),
m_fileName("test.sdriq"),
FileRecordInterface(),
m_fileBase("test"),
m_sampleRate(0),
m_centerFrequency(0),
m_recordOn(false),
m_recordStart(false),
m_byteCount(0)
m_byteCount(0),
m_msShift(0)
{
setObjectName("FileRecord");
}
FileRecord::FileRecord(const QString& filename) :
BasebandSampleSink(),
m_fileName(filename),
FileRecord::FileRecord(const QString& fileBase) :
FileRecordInterface(),
m_fileBase(fileBase),
m_sampleRate(0),
m_centerFrequency(0),
m_recordOn(false),
@@ -56,11 +57,11 @@ FileRecord::~FileRecord()
stopRecording();
}
void FileRecord::setFileName(const QString& filename)
void FileRecord::setFileName(const QString& fileBase)
{
if (!m_recordOn)
{
m_fileName = filename;
m_fileBase = fileBase;
}
}
@@ -104,13 +105,19 @@ void FileRecord::stop()
void FileRecord::startRecording()
{
if (m_recordOn) {
stopRecording();
}
if (!m_sampleFile.is_open())
{
qDebug() << "FileRecord::startRecording";
m_sampleFile.open(m_fileName.toStdString().c_str(), std::ios::binary);
m_curentFileName = QString("%1.%2.sdriq").arg(m_fileBase).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddTHH_mm_ss_zzz"));
m_sampleFile.open(m_curentFileName.toStdString().c_str(), std::ios::binary);
m_recordOn = true;
m_recordStart = true;
m_byteCount = 0;
writeHeader();
}
}
@@ -134,7 +141,12 @@ bool FileRecord::handleMessage(const Message& message)
m_centerFrequency = notif.getCenterFrequency();
qDebug() << "FileRecord::handleMessage: DSPSignalNotification: m_inputSampleRate: " << m_sampleRate
<< " m_centerFrequency: " << m_centerFrequency;
return true;
if (m_recordOn) {
startRecording();
}
return true;
}
else
{
@@ -142,23 +154,13 @@ bool FileRecord::handleMessage(const Message& message)
}
}
void FileRecord::handleConfigure(const QString& fileName)
{
if (fileName != m_fileName)
{
stopRecording();
}
m_fileName = fileName;
}
void FileRecord::writeHeader()
{
Header header;
header.sampleRate = m_sampleRate;
header.centerFrequency = m_centerFrequency;
std::time_t ts = time(0);
header.startTimeStamp = ts;
header.startTimeStamp = ts + (m_msShift / 1000);
header.sampleSize = SDR_RX_SAMP_SZ;
header.filler = 0;