1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-01 21:54:55 -04:00

Deep redesign: phase #4. Compiles

This commit is contained in:
f4exb
2015-08-17 08:29:34 +02:00
parent b5f2475fbf
commit a6a7145f3d
77 changed files with 1816 additions and 1429 deletions
@@ -69,8 +69,7 @@ bool FileSourceInput::Settings::deserialize(const QByteArray& data)
}
}
FileSourceInput::FileSourceInput(MessageQueue* msgQueueToGUI, const QTimer& masterTimer) :
SampleSource(msgQueueToGUI),
FileSourceInput::FileSourceInput(const QTimer& masterTimer) :
m_settings(),
m_fileSourceThread(NULL),
m_deviceDescription(),
@@ -84,7 +83,7 @@ FileSourceInput::FileSourceInput(MessageQueue* msgQueueToGUI, const QTimer& mast
FileSourceInput::~FileSourceInput()
{
stopInput();
stop();
}
void FileSourceInput::openFileStream()
@@ -105,19 +104,15 @@ void FileSourceInput::openFileStream()
m_centerFrequency = header.centerFrequency;
m_startingTimeStamp = header.startTimeStamp;
MsgReportFileSourceStreamData::create(m_sampleRate, m_centerFrequency, m_startingTimeStamp)->submit(m_guiMessageQueue); // file stream data
MsgReportFileSourceStreamData *report = MsgReportFileSourceStreamData::create(m_sampleRate, m_centerFrequency, m_startingTimeStamp); // file stream data
getOutputMessageQueue()->push(report);
}
bool FileSourceInput::startInput(int device)
bool FileSourceInput::start(int device)
{
QMutexLocker mutexLocker(&m_mutex);
qDebug() << "FileSourceInput::startInput";
/*
if (!m_ifstream.is_open()) {
openFileStream();
}*/
if (m_ifstream.tellg() != 0) {
m_ifstream.clear();
m_ifstream.seekg(0, std::ios::beg);
@@ -132,7 +127,8 @@ bool FileSourceInput::startInput(int device)
if((m_fileSourceThread = new FileSourceThread(&m_ifstream, &m_sampleFifo)) == NULL) {
qFatal("out of memory");
goto failed;
stop();
return false;
}
m_fileSourceThread->setSamplerate(m_sampleRate);
@@ -144,29 +140,28 @@ bool FileSourceInput::startInput(int device)
//applySettings(m_generalSettings, m_settings, true);
qDebug("FileSourceInput::startInput: started");
MsgReportFileSourceAcquisition::create(true)->submit(m_guiMessageQueue); // acquisition on
MsgReportFileSourceAcquisition *report = MsgReportFileSourceAcquisition::create(true); // acquisition on
getOutputMessageQueue()->push(report);
return true;
failed:
stopInput();
return false;
}
void FileSourceInput::stopInput()
void FileSourceInput::stop()
{
qDebug() << "FileSourceInput::stopInput";
qDebug() << "FileSourceInput::stop";
QMutexLocker mutexLocker(&m_mutex);
if(m_fileSourceThread != NULL) {
if(m_fileSourceThread != 0)
{
m_fileSourceThread->stopWork();
delete m_fileSourceThread;
m_fileSourceThread = NULL;
m_fileSourceThread = 0;
}
m_deviceDescription.clear();
MsgReportFileSourceAcquisition::create(false)->submit(m_guiMessageQueue); // acquisition off
MsgReportFileSourceAcquisition *report = MsgReportFileSourceAcquisition::create(false); // acquisition off
getOutputMessageQueue()->push(report);
}
const QString& FileSourceInput::getDeviceDescription() const
@@ -189,40 +184,52 @@ std::time_t FileSourceInput::getStartingTimeStamp() const
return m_startingTimeStamp;
}
bool FileSourceInput::handleMessage(Message* message)
bool FileSourceInput::handleMessage(const Message& message)
{
if (MsgConfigureFileSourceName::match(message))
{
MsgConfigureFileSourceName* conf = (MsgConfigureFileSourceName*) message;
m_fileName = conf->getFileName();
MsgConfigureFileSourceName& conf = (MsgConfigureFileSourceName&) message;
m_fileName = conf.getFileName();
openFileStream();
message->completed();
return true;
}
else if (MsgConfigureFileSourceWork::match(message))
{
MsgConfigureFileSourceWork* conf = (MsgConfigureFileSourceWork*) message;
bool working = conf->isWorking();
MsgConfigureFileSourceWork& conf = (MsgConfigureFileSourceWork&) message;
bool working = conf.isWorking();
if (m_fileSourceThread != 0)
{
if (working) {
if (working)
{
m_fileSourceThread->startWork();
} else {
}
else
{
m_fileSourceThread->stopWork();
}
MsgReportFileSourceStreamTiming::create(m_fileSourceThread->getSamplesCount())->submit(m_guiMessageQueue);
MsgReportFileSourceStreamTiming *report =
MsgReportFileSourceStreamTiming::create(m_fileSourceThread->getSamplesCount());
getOutputMessageQueue()->push(report);
}
message->completed();
return true;
}
else if (MsgConfigureFileSourceStreamTiming::match(message))
{
if (m_fileSourceThread != 0) {
MsgReportFileSourceStreamTiming::create(m_fileSourceThread->getSamplesCount())->submit(m_guiMessageQueue);
}else {
MsgReportFileSourceStreamTiming::create(0)->submit(m_guiMessageQueue);
MsgReportFileSourceStreamTiming *report;
if (m_fileSourceThread != 0)
{
report = MsgReportFileSourceStreamTiming::create(m_fileSourceThread->getSamplesCount());
}
else
{
report = MsgReportFileSourceStreamTiming::create(0);
}
getOutputMessageQueue()->push(report);
}
else
{
@@ -230,30 +237,38 @@ bool FileSourceInput::handleMessage(Message* message)
}
}
bool FileSourceInput::applySettings(const GeneralSettings& generalSettings, const Settings& settings, bool force)
bool FileSourceInput::applySettings(const Settings& settings, bool force)
{
QMutexLocker mutexLocker(&m_mutex);
bool wasRunning = false;
if((m_settings.m_fileName != settings.m_fileName) || force) {
if((m_settings.m_fileName != settings.m_fileName) || force)
{
m_settings.m_fileName = settings.m_fileName;
if (m_fileSourceThread != 0) {
if (m_fileSourceThread != 0)
{
wasRunning = m_fileSourceThread->isRunning();
if (wasRunning) {
if (wasRunning)
{
m_fileSourceThread->stopWork();
}
}
if (m_ifstream.is_open()) {
if (m_ifstream.is_open())
{
m_ifstream.close();
}
openFileStream();
if (m_fileSourceThread != 0) {
if (m_fileSourceThread != 0)
{
m_fileSourceThread->setSamplerate(m_sampleRate);
if (wasRunning) {
if (wasRunning)
{
m_fileSourceThread->startWork();
}
}