1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-08-14 15:33:34 -04:00

MIMO: test MI source: implemented file record

This commit is contained in:
f4exb
2019-05-28 08:56:36 +02:00
parent f9a8523714
commit bb8366bfde
8 changed files with 70 additions and 25 deletions
+8 -4
View File
@@ -86,22 +86,26 @@ void DeviceAPI::removeLastSinkStream()
}
}
void DeviceAPI::addAncillarySink(BasebandSampleSink *sink)
void DeviceAPI::addAncillarySink(BasebandSampleSink *sink, unsigned int index)
{
if (m_deviceSourceEngine) {
m_deviceSourceEngine->addSink(sink);
} else if (m_deviceSinkEngine) {
m_deviceSinkEngine->addSpectrumSink(sink);
} // TODO: MIMO
} else if (m_deviceMIMOEngine) {
m_deviceMIMOEngine->addAncillarySink(sink, index);
}
}
void DeviceAPI::removeAncillarySink(BasebandSampleSink* sink)
void DeviceAPI::removeAncillarySink(BasebandSampleSink* sink, unsigned int index)
{
if (m_deviceSourceEngine) {
m_deviceSourceEngine->removeSink(sink);
} else if (m_deviceSinkEngine) {
m_deviceSinkEngine->removeSpectrumSink(sink);
} // TODO: MIMO
} else if (m_deviceMIMOEngine) {
m_deviceMIMOEngine->removeAncillarySink(sink, index);
}
}
void DeviceAPI::setSpectrumSinkInput(bool sourceElseSink, unsigned int index)
+2 -2
View File
@@ -72,8 +72,8 @@ public:
void addSinkStream(bool connect);
void removeLastSinkStream();
void addAncillarySink(BasebandSampleSink* sink); //!< Adds a sink to receive full baseband and that is not a channel (e.g. spectrum)
void removeAncillarySink(BasebandSampleSink* sink); //!< Removes it
void addAncillarySink(BasebandSampleSink* sink, unsigned int index = 0); //!< Adds a sink to receive full baseband and that is not a channel (e.g. spectrum)
void removeAncillarySink(BasebandSampleSink* sink, unsigned int index = 0); //!< Removes it
void setSpectrumSinkInput(bool sourceElseSink = true, unsigned int index = 0); //!< Used in the MIMO case to select which stream is used as input to main spectrum
void addChannelSink(ThreadedBasebandSampleSink* sink, int streamIndex = 0); //!< Add a channel sink (Rx)
+6 -2
View File
@@ -64,9 +64,13 @@ void FileRecord::setFileName(const QString& filename)
}
}
void FileRecord::genUniqueFileName(uint deviceUID)
void FileRecord::genUniqueFileName(uint deviceUID, int istream)
{
setFileName(QString("rec%1_%2.sdriq").arg(deviceUID).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddTHH_mm_ss_zzz")));
if (istream < 0) {
setFileName(QString("rec%1_%2.sdriq").arg(deviceUID).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddTHH_mm_ss_zzz")));
} else {
setFileName(QString("rec%1_%2_%3.sdriq").arg(deviceUID).arg(istream).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddTHH_mm_ss_zzz")));
}
}
void FileRecord::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly)
+2 -1
View File
@@ -50,7 +50,7 @@ public:
quint64 getByteCount() const { return m_byteCount; }
void setFileName(const QString& filename);
void genUniqueFileName(uint deviceUID);
void genUniqueFileName(uint deviceUID, int istream = -1);
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly);
virtual void start();
@@ -58,6 +58,7 @@ public:
virtual bool handleMessage(const Message& message);
void startRecording();
void stopRecording();
bool isRecording() const { return m_recordOn; }
static bool readHeader(std::ifstream& samplefile, Header& header); //!< returns true if CRC checksum is correct else false
static void writeHeader(std::ofstream& samplefile, Header& header);