diff --git a/plugins/samplesource/filesource/filesourceinput.h b/plugins/samplesource/filesource/filesourceinput.h
index b5683d65a..42e074672 100644
--- a/plugins/samplesource/filesource/filesourceinput.h
+++ b/plugins/samplesource/filesource/filesourceinput.h
@@ -1,327 +1,327 @@
-///////////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 2015 Edouard Griffiths, F4EXB //
-// //
-// This program is free software; you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation as version 3 of the License, or //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License V3 for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see . //
-///////////////////////////////////////////////////////////////////////////////////
-
-#ifndef INCLUDE_FILESOURCEINPUT_H
-#define INCLUDE_FILESOURCEINPUT_H
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include "filesourcesettings.h"
-
-class FileSourceThread;
-class DeviceSourceAPI;
-
-class FileSourceInput : public DeviceSampleSource {
-public:
- class MsgConfigureFileSource : public Message {
- MESSAGE_CLASS_DECLARATION
-
- public:
- const FileSourceSettings& getSettings() const { return m_settings; }
-
- static MsgConfigureFileSource* create(const FileSourceSettings& settings)
- {
- return new MsgConfigureFileSource(settings);
- }
-
- private:
- FileSourceSettings m_settings;
-
- MsgConfigureFileSource(const FileSourceSettings& settings) :
- Message(),
- m_settings(settings)
- { }
- };
-
- class MsgConfigureFileSourceName : public Message {
- MESSAGE_CLASS_DECLARATION
-
- public:
- const QString& getFileName() const { return m_fileName; }
-
- static MsgConfigureFileSourceName* create(const QString& fileName)
- {
- return new MsgConfigureFileSourceName(fileName);
- }
-
- private:
- QString m_fileName;
-
- MsgConfigureFileSourceName(const QString& fileName) :
- Message(),
- m_fileName(fileName)
- { }
- };
-
- class MsgConfigureFileSourceWork : public Message {
- MESSAGE_CLASS_DECLARATION
-
- public:
- bool isWorking() const { return m_working; }
-
- static MsgConfigureFileSourceWork* create(bool working)
- {
- return new MsgConfigureFileSourceWork(working);
- }
-
- private:
- bool m_working;
-
- MsgConfigureFileSourceWork(bool working) :
- Message(),
- m_working(working)
- { }
- };
-
- class MsgConfigureFileSourceStreamTiming : public Message {
- MESSAGE_CLASS_DECLARATION
-
- public:
-
- static MsgConfigureFileSourceStreamTiming* create()
- {
- return new MsgConfigureFileSourceStreamTiming();
- }
-
- private:
-
- MsgConfigureFileSourceStreamTiming() :
- Message()
- { }
- };
-
- class MsgConfigureFileSourceSeek : public Message {
- MESSAGE_CLASS_DECLARATION
-
- public:
- int getMillis() const { return m_seekMillis; }
-
- static MsgConfigureFileSourceSeek* create(int seekMillis)
- {
- return new MsgConfigureFileSourceSeek(seekMillis);
- }
-
- protected:
- int m_seekMillis; //!< millis of seek position from the beginning 0..1000
-
- MsgConfigureFileSourceSeek(int seekMillis) :
- Message(),
- m_seekMillis(seekMillis)
- { }
- };
-
- class MsgReportFileSourceAcquisition : public Message {
- MESSAGE_CLASS_DECLARATION
-
- public:
- bool getAcquisition() const { return m_acquisition; }
-
- static MsgReportFileSourceAcquisition* create(bool acquisition)
- {
- return new MsgReportFileSourceAcquisition(acquisition);
- }
-
- protected:
- bool m_acquisition;
-
- MsgReportFileSourceAcquisition(bool acquisition) :
- Message(),
- m_acquisition(acquisition)
- { }
- };
-
- class MsgStartStop : public Message {
- MESSAGE_CLASS_DECLARATION
-
- public:
- bool getStartStop() const { return m_startStop; }
-
- static MsgStartStop* create(bool startStop) {
- return new MsgStartStop(startStop);
- }
-
- protected:
- bool m_startStop;
-
- MsgStartStop(bool startStop) :
- Message(),
- m_startStop(startStop)
- { }
- };
-
- class MsgPlayPause : public Message {
- MESSAGE_CLASS_DECLARATION
-
- public:
- bool getPlayPause() const { return m_playPause; }
-
- static MsgPlayPause* create(bool playPause) {
- return new MsgPlayPause(playPause);
- }
-
- protected:
- bool m_playPause;
-
- MsgPlayPause(bool playPause) :
- Message(),
- m_playPause(playPause)
- { }
- };
-
- class MsgReportFileSourceStreamData : public Message {
- MESSAGE_CLASS_DECLARATION
-
- public:
- int getSampleRate() const { return m_sampleRate; }
- quint32 getSampleSize() const { return m_sampleSize; }
- quint64 getCenterFrequency() const { return m_centerFrequency; }
- quint64 getStartingTimeStamp() const { return m_startingTimeStamp; }
- quint64 getRecordLength() const { return m_recordLength; }
-
- static MsgReportFileSourceStreamData* create(int sampleRate,
- quint32 sampleSize,
- quint64 centerFrequency,
- quint64 startingTimeStamp,
- quint64 recordLength)
- {
- return new MsgReportFileSourceStreamData(sampleRate, sampleSize, centerFrequency, startingTimeStamp, recordLength);
- }
-
- protected:
- int m_sampleRate;
- quint32 m_sampleSize;
- quint64 m_centerFrequency;
- quint64 m_startingTimeStamp;
- quint64 m_recordLength;
-
- MsgReportFileSourceStreamData(int sampleRate,
- quint32 sampleSize,
- quint64 centerFrequency,
- quint64 startingTimeStamp,
- quint64 recordLength) :
- Message(),
- m_sampleRate(sampleRate),
- m_sampleSize(sampleSize),
- m_centerFrequency(centerFrequency),
- m_startingTimeStamp(startingTimeStamp),
- m_recordLength(recordLength)
- { }
- };
-
- class MsgReportFileSourceStreamTiming : public Message {
- MESSAGE_CLASS_DECLARATION
-
- public:
- quint64 getSamplesCount() const { return m_samplesCount; }
-
- static MsgReportFileSourceStreamTiming* create(quint64 samplesCount)
- {
- return new MsgReportFileSourceStreamTiming(samplesCount);
- }
-
- protected:
- quint64 m_samplesCount;
-
- MsgReportFileSourceStreamTiming(quint64 samplesCount) :
- Message(),
- m_samplesCount(samplesCount)
- { }
- };
-
- class MsgReportHeaderCRC : public Message {
- MESSAGE_CLASS_DECLARATION
-
- public:
- bool isOK() const { return m_ok; }
-
- static MsgReportHeaderCRC* create(bool ok) {
- return new MsgReportHeaderCRC(ok);
- }
-
- protected:
- bool m_ok;
-
- MsgReportHeaderCRC(bool ok) :
- Message(),
- m_ok(ok)
- { }
- };
-
- FileSourceInput(DeviceSourceAPI *deviceAPI);
- virtual ~FileSourceInput();
- virtual void destroy();
-
- virtual void init();
- virtual bool start();
- virtual void stop();
-
- virtual QByteArray serialize() const;
- virtual bool deserialize(const QByteArray& data);
-
- virtual void setMessageQueueToGUI(MessageQueue *queue) { m_guiMessageQueue = queue; }
- virtual const QString& getDeviceDescription() const;
- virtual int getSampleRate() const;
- virtual quint64 getCenterFrequency() const;
- virtual void setCenterFrequency(qint64 centerFrequency);
- quint64 getStartingTimeStamp() const;
-
- virtual bool handleMessage(const Message& message);
-
- virtual int webapiSettingsGet(
- SWGSDRangel::SWGDeviceSettings& response,
- QString& errorMessage);
-
- virtual int webapiRunGet(
- SWGSDRangel::SWGDeviceState& response,
- QString& errorMessage);
-
- virtual int webapiRun(
- bool run,
- SWGSDRangel::SWGDeviceState& response,
- QString& errorMessage);
-
- virtual int webapiReportGet(
- SWGSDRangel::SWGDeviceReport& response,
- QString& errorMessage);
-
- private:
- DeviceSourceAPI *m_deviceAPI;
- QMutex m_mutex;
- FileSourceSettings m_settings;
- std::ifstream m_ifstream;
- FileSourceThread* m_fileSourceThread;
- QString m_deviceDescription;
- QString m_fileName;
- int m_sampleRate;
- quint32 m_sampleSize;
- quint64 m_centerFrequency;
- quint64 m_recordLength; //!< record length in seconds computed from file size
- quint64 m_startingTimeStamp;
- const QTimer& m_masterTimer;
-
- void openFileStream();
- void seekFileStream(int seekMillis);
- bool applySettings(const FileSourceSettings& settings, bool force = false);
- void webapiFormatDeviceReport(SWGSDRangel::SWGDeviceReport& response);
-};
-
-#endif // INCLUDE_FILESOURCEINPUT_H
+///////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2015 Edouard Griffiths, F4EXB //
+// //
+// This program is free software; you can redistribute it and/or modify //
+// it under the terms of the GNU General Public License as published by //
+// the Free Software Foundation as version 3 of the License, or //
+// //
+// This program is distributed in the hope that it will be useful, //
+// but WITHOUT ANY WARRANTY; without even the implied warranty of //
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
+// GNU General Public License V3 for more details. //
+// //
+// You should have received a copy of the GNU General Public License //
+// along with this program. If not, see . //
+///////////////////////////////////////////////////////////////////////////////////
+
+#ifndef INCLUDE_FILESOURCEINPUT_H
+#define INCLUDE_FILESOURCEINPUT_H
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include "filesourcesettings.h"
+
+class FileSourceThread;
+class DeviceSourceAPI;
+
+class FileSourceInput : public DeviceSampleSource {
+public:
+ class MsgConfigureFileSource : public Message {
+ MESSAGE_CLASS_DECLARATION
+
+ public:
+ const FileSourceSettings& getSettings() const { return m_settings; }
+
+ static MsgConfigureFileSource* create(const FileSourceSettings& settings)
+ {
+ return new MsgConfigureFileSource(settings);
+ }
+
+ private:
+ FileSourceSettings m_settings;
+
+ MsgConfigureFileSource(const FileSourceSettings& settings) :
+ Message(),
+ m_settings(settings)
+ { }
+ };
+
+ class MsgConfigureFileSourceName : public Message {
+ MESSAGE_CLASS_DECLARATION
+
+ public:
+ const QString& getFileName() const { return m_fileName; }
+
+ static MsgConfigureFileSourceName* create(const QString& fileName)
+ {
+ return new MsgConfigureFileSourceName(fileName);
+ }
+
+ private:
+ QString m_fileName;
+
+ MsgConfigureFileSourceName(const QString& fileName) :
+ Message(),
+ m_fileName(fileName)
+ { }
+ };
+
+ class MsgConfigureFileSourceWork : public Message {
+ MESSAGE_CLASS_DECLARATION
+
+ public:
+ bool isWorking() const { return m_working; }
+
+ static MsgConfigureFileSourceWork* create(bool working)
+ {
+ return new MsgConfigureFileSourceWork(working);
+ }
+
+ private:
+ bool m_working;
+
+ MsgConfigureFileSourceWork(bool working) :
+ Message(),
+ m_working(working)
+ { }
+ };
+
+ class MsgConfigureFileSourceStreamTiming : public Message {
+ MESSAGE_CLASS_DECLARATION
+
+ public:
+
+ static MsgConfigureFileSourceStreamTiming* create()
+ {
+ return new MsgConfigureFileSourceStreamTiming();
+ }
+
+ private:
+
+ MsgConfigureFileSourceStreamTiming() :
+ Message()
+ { }
+ };
+
+ class MsgConfigureFileSourceSeek : public Message {
+ MESSAGE_CLASS_DECLARATION
+
+ public:
+ int getMillis() const { return m_seekMillis; }
+
+ static MsgConfigureFileSourceSeek* create(int seekMillis)
+ {
+ return new MsgConfigureFileSourceSeek(seekMillis);
+ }
+
+ protected:
+ int m_seekMillis; //!< millis of seek position from the beginning 0..1000
+
+ MsgConfigureFileSourceSeek(int seekMillis) :
+ Message(),
+ m_seekMillis(seekMillis)
+ { }
+ };
+
+ class MsgReportFileSourceAcquisition : public Message {
+ MESSAGE_CLASS_DECLARATION
+
+ public:
+ bool getAcquisition() const { return m_acquisition; }
+
+ static MsgReportFileSourceAcquisition* create(bool acquisition)
+ {
+ return new MsgReportFileSourceAcquisition(acquisition);
+ }
+
+ protected:
+ bool m_acquisition;
+
+ MsgReportFileSourceAcquisition(bool acquisition) :
+ Message(),
+ m_acquisition(acquisition)
+ { }
+ };
+
+ class MsgStartStop : public Message {
+ MESSAGE_CLASS_DECLARATION
+
+ public:
+ bool getStartStop() const { return m_startStop; }
+
+ static MsgStartStop* create(bool startStop) {
+ return new MsgStartStop(startStop);
+ }
+
+ protected:
+ bool m_startStop;
+
+ MsgStartStop(bool startStop) :
+ Message(),
+ m_startStop(startStop)
+ { }
+ };
+
+ class MsgPlayPause : public Message {
+ MESSAGE_CLASS_DECLARATION
+
+ public:
+ bool getPlayPause() const { return m_playPause; }
+
+ static MsgPlayPause* create(bool playPause) {
+ return new MsgPlayPause(playPause);
+ }
+
+ protected:
+ bool m_playPause;
+
+ MsgPlayPause(bool playPause) :
+ Message(),
+ m_playPause(playPause)
+ { }
+ };
+
+ class MsgReportFileSourceStreamData : public Message {
+ MESSAGE_CLASS_DECLARATION
+
+ public:
+ int getSampleRate() const { return m_sampleRate; }
+ quint32 getSampleSize() const { return m_sampleSize; }
+ quint64 getCenterFrequency() const { return m_centerFrequency; }
+ quint64 getStartingTimeStamp() const { return m_startingTimeStamp; }
+ quint64 getRecordLength() const { return m_recordLength; }
+
+ static MsgReportFileSourceStreamData* create(int sampleRate,
+ quint32 sampleSize,
+ quint64 centerFrequency,
+ quint64 startingTimeStamp,
+ quint64 recordLength)
+ {
+ return new MsgReportFileSourceStreamData(sampleRate, sampleSize, centerFrequency, startingTimeStamp, recordLength);
+ }
+
+ protected:
+ int m_sampleRate;
+ quint32 m_sampleSize;
+ quint64 m_centerFrequency;
+ quint64 m_startingTimeStamp;
+ quint64 m_recordLength;
+
+ MsgReportFileSourceStreamData(int sampleRate,
+ quint32 sampleSize,
+ quint64 centerFrequency,
+ quint64 startingTimeStamp,
+ quint64 recordLength) :
+ Message(),
+ m_sampleRate(sampleRate),
+ m_sampleSize(sampleSize),
+ m_centerFrequency(centerFrequency),
+ m_startingTimeStamp(startingTimeStamp),
+ m_recordLength(recordLength)
+ { }
+ };
+
+ class MsgReportFileSourceStreamTiming : public Message {
+ MESSAGE_CLASS_DECLARATION
+
+ public:
+ quint64 getSamplesCount() const { return m_samplesCount; }
+
+ static MsgReportFileSourceStreamTiming* create(quint64 samplesCount)
+ {
+ return new MsgReportFileSourceStreamTiming(samplesCount);
+ }
+
+ protected:
+ quint64 m_samplesCount;
+
+ MsgReportFileSourceStreamTiming(quint64 samplesCount) :
+ Message(),
+ m_samplesCount(samplesCount)
+ { }
+ };
+
+ class MsgReportHeaderCRC : public Message {
+ MESSAGE_CLASS_DECLARATION
+
+ public:
+ bool isOK() const { return m_ok; }
+
+ static MsgReportHeaderCRC* create(bool ok) {
+ return new MsgReportHeaderCRC(ok);
+ }
+
+ protected:
+ bool m_ok;
+
+ MsgReportHeaderCRC(bool ok) :
+ Message(),
+ m_ok(ok)
+ { }
+ };
+
+ FileSourceInput(DeviceSourceAPI *deviceAPI);
+ virtual ~FileSourceInput();
+ virtual void destroy();
+
+ virtual void init();
+ virtual bool start();
+ virtual void stop();
+
+ virtual QByteArray serialize() const;
+ virtual bool deserialize(const QByteArray& data);
+
+ virtual void setMessageQueueToGUI(MessageQueue *queue) { m_guiMessageQueue = queue; }
+ virtual const QString& getDeviceDescription() const;
+ virtual int getSampleRate() const;
+ virtual quint64 getCenterFrequency() const;
+ virtual void setCenterFrequency(qint64 centerFrequency);
+ quint64 getStartingTimeStamp() const;
+
+ virtual bool handleMessage(const Message& message);
+
+ virtual int webapiSettingsGet(
+ SWGSDRangel::SWGDeviceSettings& response,
+ QString& errorMessage);
+
+ virtual int webapiRunGet(
+ SWGSDRangel::SWGDeviceState& response,
+ QString& errorMessage);
+
+ virtual int webapiRun(
+ bool run,
+ SWGSDRangel::SWGDeviceState& response,
+ QString& errorMessage);
+
+ virtual int webapiReportGet(
+ SWGSDRangel::SWGDeviceReport& response,
+ QString& errorMessage);
+
+ private:
+ DeviceSourceAPI *m_deviceAPI;
+ QMutex m_mutex;
+ FileSourceSettings m_settings;
+ std::ifstream m_ifstream;
+ FileSourceThread* m_fileSourceThread;
+ QString m_deviceDescription;
+ QString m_fileName;
+ int m_sampleRate;
+ quint32 m_sampleSize;
+ quint64 m_centerFrequency;
+ quint64 m_recordLength; //!< record length in seconds computed from file size
+ quint64 m_startingTimeStamp;
+ const QTimer& m_masterTimer;
+
+ void openFileStream();
+ void seekFileStream(int seekMillis);
+ bool applySettings(const FileSourceSettings& settings, bool force = false);
+ void webapiFormatDeviceReport(SWGSDRangel::SWGDeviceReport& response);
+};
+
+#endif // INCLUDE_FILESOURCEINPUT_H