MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / registerUpdate

Method registerUpdate

app/src/API/Handlers/DataTablesHandler.cpp:588–640  ·  view source on GitHub ↗

* @brief Updates an existing register. Unspecified fields retain their value. */

Source from the content-addressed store, hash-verified

586 * @brief Updates an existing register. Unspecified fields retain their value.
587 */
588API::CommandResponse API::Handlers::DataTablesHandler::registerUpdate(const QString& id,
589 const QJsonObject& params)
590{
591 QString table;
592 QString name;
593 if (!requireString(params, QStringLiteral("table"), table))
594 return CommandResponse::makeError(
595 id, ErrorCode::MissingParam, QStringLiteral("Missing required parameter: table"));
596
597 if (!requireString(params, QStringLiteral("name"), name))
598 return CommandResponse::makeError(
599 id, ErrorCode::MissingParam, QStringLiteral("Missing required parameter: name"));
600
601 const auto& tables = DataModel::ProjectModel::instance().tables();
602 const auto tit =
603 std::find_if(tables.begin(), tables.end(), [&table](const auto& t) { return t.name == table; });
604
605 if (tit == tables.end())
606 return CommandResponse::makeError(
607 id, ErrorCode::InvalidParam, QStringLiteral("Table not found: %1").arg(table));
608
609 const auto rit = std::find_if(tit->registers.begin(),
610 tit->registers.end(),
611 [&name](const auto& r) { return r.name == name; });
612
613 if (rit == tit->registers.end())
614 return CommandResponse::makeError(
615 id, ErrorCode::InvalidParam, QStringLiteral("Register not found: %1/%2").arg(table, name));
616
617 const QString newName = params.contains(QStringLiteral("newName"))
618 ? params.value(QStringLiteral("newName")).toString()
619 : rit->name;
620
621 const bool computed = params.contains(QStringLiteral("computed"))
622 ? params.value(QStringLiteral("computed")).toBool()
623 : (rit->type == DataModel::RegisterType::Computed);
624
625 QVariant defaultValue = rit->defaultValue;
626 if (params.contains(QStringLiteral("defaultValue")))
627 defaultValue = jsonToVariant(params.value(QStringLiteral("defaultValue")));
628 else if (params.contains(QStringLiteral("value")))
629 defaultValue = jsonToVariant(params.value(QStringLiteral("value")));
630
631 (void)DataModel::ProjectModel::instance().updateRegister(
632 table, name, newName, computed, defaultValue);
633
634 QJsonObject result;
635 result[QStringLiteral("table")] = table;
636 result[QStringLiteral("name")] = newName;
637 result[QStringLiteral("computed")] = computed;
638 result[QStringLiteral("updated")] = true;
639 return CommandResponse::makeSuccess(id, result);
640}
641
642//--------------------------------------------------------------------------------------------------
643// Runtime register values (FrameBuilder data-table store)

Callers

nothing calls this directly

Calls 6

requireStringFunction · 0.85
jsonToVariantFunction · 0.85
beginMethod · 0.80
updateRegisterMethod · 0.80
containsMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected