diff --git a/sdrbase/commands/command.cpp b/sdrbase/commands/command.cpp index 097bb42da..d1d52c2d9 100644 --- a/sdrbase/commands/command.cpp +++ b/sdrbase/commands/command.cpp @@ -14,12 +14,14 @@ // along with this program. If not, see . // /////////////////////////////////////////////////////////////////////////////////// -#include "command.h" -#include "util/simpleserializer.h" +#include #include #include +#include "command.h" +#include "util/simpleserializer.h" + Command::Command() : m_currentProcess(nullptr), m_currentProcessState(QProcess::NotRunning), @@ -30,8 +32,8 @@ Command::Command() : m_currentProcessExitStatus(QProcess::NormalExit), m_currentProcessPid(0) { - m_currentProcessStartTimeStamp = 0; - m_currentProcessFinishTimeStamp = 0; + m_currentProcessStartTimeStampms = 0; + m_currentProcessFinishTimeStampms = 0; resetToDefaults(); } @@ -55,8 +57,8 @@ Command::Command(const Command& command) : m_currentProcessExitStatus(QProcess::NormalExit), m_currentProcessPid(0) { - m_currentProcessStartTimeStamp = 0; - m_currentProcessFinishTimeStamp = 0; + m_currentProcessStartTimeStampms = 0; + m_currentProcessFinishTimeStampms = 0; } Command::~Command() @@ -198,7 +200,7 @@ void Command::run(const QString& apiAddress, int apiPort, int deviceSetIndex) connect(m_currentProcess, SIGNAL(stateChanged(QProcess::ProcessState)), this, SLOT(processStateChanged(QProcess::ProcessState))); m_currentProcess->setProcessChannelMode(QProcess::MergedChannels); - m_currentProcessStartTimeStamp = clock(); + m_currentProcessStartTimeStampms = nowms(); m_currentProcess->start(m_currentProcessCommandLine); } @@ -254,7 +256,7 @@ void Command::processStateChanged(QProcess::ProcessState newState) void Command::processError(QProcess::ProcessError error) { //qDebug("Command::processError: %d state: %d", error, m_currentProcessState); - m_currentProcessFinishTimeStamp = clock(); + m_currentProcessFinishTimeStampms = nowms(); m_currentProcessError = error; m_isInError = true; @@ -278,7 +280,7 @@ void Command::processError(QProcess::ProcessError error) void Command::processFinished(int exitCode, QProcess::ExitStatus exitStatus) { //qDebug("Command::processFinished: (%d) %d", exitCode, exitStatus); - m_currentProcessFinishTimeStamp = clock(); + m_currentProcessFinishTimeStampms = nowms(); m_currentProcessExitCode = exitCode; m_currentProcessExitStatus = exitStatus; m_hasExited = true; @@ -295,3 +297,13 @@ void Command::processFinished(int exitCode, QProcess::ExitStatus exitStatus) m_currentProcess->deleteLater(); // make sure other threads can still access it until all events have been processed m_currentProcess = nullptr; // for this thread it can assume it was deleted } + +uint64_t Command::nowms() +{ + auto now = std::chrono::system_clock::now(); + auto now_ms = std::chrono::time_point_cast(now); + auto epoch = now_ms.time_since_epoch(); + auto value = std::chrono::duration_cast(epoch); + + return value.count(); +} \ No newline at end of file diff --git a/sdrbase/commands/command.h b/sdrbase/commands/command.h index b61442ad1..92e628ead 100644 --- a/sdrbase/commands/command.h +++ b/sdrbase/commands/command.h @@ -63,8 +63,8 @@ public: bool getLastProcessError(QProcess::ProcessError& error) const; bool getLastProcessExit(int& exitCode, QProcess::ExitStatus& exitStatus) const; const QString& getLastProcessLog() const; - clock_t getLastProcessStartTimestamp() const { return m_currentProcessStartTimeStamp; } - clock_t getLastProcessFinishTimestamp() const { return m_currentProcessFinishTimeStamp; } + uint64_t getLastProcessStartTimestampms() const { return m_currentProcessStartTimeStampms; } + uint64_t getLastProcessFinishTimestampms() const { return m_currentProcessFinishTimeStampms; } const QString& getLastProcessCommandLine() const { return m_currentProcessCommandLine; } qint64 getLastProcessPid() const { return m_currentProcessPid; } @@ -91,6 +91,8 @@ public: } private: + uint64_t nowms(); //!< Get now time in milliseconds + QString m_group; QString m_description; QString m_command; @@ -107,8 +109,8 @@ private: int m_currentProcessExitCode; QProcess::ExitStatus m_currentProcessExitStatus; QString m_log; - clock_t m_currentProcessStartTimeStamp; - clock_t m_currentProcessFinishTimeStamp; + uint64_t m_currentProcessStartTimeStampms; + uint64_t m_currentProcessFinishTimeStampms; QString m_currentProcessCommandLine; qint64 m_currentProcessPid; diff --git a/sdrbase/dsp/nullsink.cpp b/sdrbase/dsp/nullsink.cpp index 5f1b7a3fa..b244dc15e 100644 --- a/sdrbase/dsp/nullsink.cpp +++ b/sdrbase/dsp/nullsink.cpp @@ -13,7 +13,7 @@ NullSink::~NullSink() bool NullSink::init(const Message& message) { - (void) message + (void) message; return false; } diff --git a/sdrgui/gui/commandoutputdialog.cpp b/sdrgui/gui/commandoutputdialog.cpp index 01bd3e2e7..0c9d2adf9 100644 --- a/sdrgui/gui/commandoutputdialog.cpp +++ b/sdrgui/gui/commandoutputdialog.cpp @@ -39,24 +39,22 @@ void CommandOutputDialog::refresh() ui->commandText->setText(m_command.getLastProcessCommandLine()); ui->processPid->setText(QString("%1").arg(m_command.getLastProcessPid())); - if (m_command.getLastProcessStartTimestamp() == 0) { + if (m_command.getLastProcessStartTimestampms() == 0) { ui->startTime->setText(("...")); } else { - clock_t tv = m_command.getLastProcessStartTimestamp(); - QDateTime dt = QDateTime::fromMSecsSinceEpoch((tv * 1000LL) / CLOCKS_PER_SEC); + QDateTime dt = QDateTime::fromMSecsSinceEpoch(m_command.getLastProcessStartTimestampms()); QString dateStr = dt.toString("yyyy-MM-dd HH:mm:ss.zzz"); ui->startTime->setText(dateStr); } - if (m_command.getLastProcessFinishTimestamp() == 0) { + if (m_command.getLastProcessFinishTimestampms() == 0) { ui->endTime->setText(("...")); } else { - clock_t tv = m_command.getLastProcessFinishTimestamp(); - QDateTime dt = QDateTime::fromMSecsSinceEpoch((tv * 1000LL) / CLOCKS_PER_SEC); + QDateTime dt = QDateTime::fromMSecsSinceEpoch(m_command.getLastProcessFinishTimestampms()); QString dateStr = dt.toString("yyyy-MM-dd HH:mm:ss.zzz"); ui->endTime->setText(dateStr); } @@ -64,7 +62,7 @@ void CommandOutputDialog::refresh() ui->runningState->setChecked(m_command.getLastProcessState() == QProcess::Running); QProcess::ProcessError processError; - if (m_command.getLastProcessStartTimestamp() == 0) // not started + if (m_command.getLastProcessStartTimestampms() == 0) // not started { ui->errorText->setText("..."); ui->exitCode->setText("-");