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:
+23
-21
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user