diff --git a/src/command.cpp b/src/command.cpp index e400e0ef95be0eebaa6eff52d5f22115af056a2b..84ace413e748245a7089605dce1a8e1b409d3e94 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -79,6 +79,8 @@ Command Command::fromString(const QString& source) return parseUpdateExperimentState(rootobj); case Action::setTargetState: return parseSetTargetState(rootobj); + case Action::fillHistogram: + return parseFillHistogram(rootobj); case Action::sendHistogramUpdate: case Action::moveTargetCloser: case Action::moveTargetFarther: @@ -93,7 +95,6 @@ Command Command::fromString(const QString& source) // Not yet implemented: case Action::queryServerInformation: case Action::updateHistogram: - case Action::fillHistogram: return Command(); default: return Command(); @@ -228,6 +229,20 @@ Protocol::Command Protocol::Command::parseSetTargetState(const QJsonObject& inpu ); } +Protocol::Command Protocol::Command::parseFillHistogram(const QJsonObject& input) +{ + if (!input.keys().contains(QStringLiteral("adcchannels")) || !input.value(QStringLiteral("adcchannels")).isString()) { + logError(QStringLiteral("fillHistogram command does not contain adcchannels.")); + return Command(); + } + + return Command( + Action::fillHistogram, + Arguments{std::make_pair(QStringLiteral("adcchannels"), input.value(QStringLiteral("adcchannels")).toString())}, + input.value(QStringLiteral("token")).toString() + ); +} + QString Command::toString() const { if (action == Action::invalid) diff --git a/src/command.h b/src/command.h index d6e9586d703d998d15ba6eaad457e9e5ca008529..e83a26606283ace8c0752585958da8df85c24d7a 100644 --- a/src/command.h +++ b/src/command.h @@ -74,6 +74,7 @@ private: static Command parseError(const QJsonObject& input); static Command parseUpdateExperimentState(const QJsonObject& input); static Command parseSetTargetState(const QJsonObject& input); + static Command parseFillHistogram(const QJsonObject& input); static QString getActionString(const Action action); };