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

Method buildProject

app/src/IO/Drivers/Modbus.cpp:900–982  ·  view source on GitHub ↗

* @brief Assembles the complete project JSON object. */

Source from the content-addressed store, hash-verified

898 * @brief Assembles the complete project JSON object.
899 */
900QJsonObject IO::Drivers::Modbus::buildProject() const
901{
902 QJsonObject project;
903 project[Keys::Title] = tr("Modbus Project");
904 project[Keys::Actions] = QJsonArray();
905
906 QJsonObject source;
907 source[Keys::SourceId] = 0;
908 source[Keys::Title] = tr("Modbus");
909 source[Keys::BusType] = static_cast<int>(SerialStudio::BusType::ModBus);
910 source[Keys::FrameStart] = QString();
911 source[Keys::FrameEnd] = QString();
912 source[Keys::Checksum] = QString();
913 source[Keys::FrameDetection] = static_cast<int>(SerialStudio::NoDelimiters);
914 source[Keys::Decoder] = static_cast<int>(SerialStudio::Binary);
915 source[Keys::HexadecimalDelimiters] = false;
916 source[Keys::FrameParserCode] = buildFrameParser();
917 source[Keys::FrameParserLanguage] = static_cast<int>(SerialStudio::Lua);
918
919 QJsonObject conn_settings;
920 for (const auto& prop : driverProperties())
921 conn_settings.insert(prop.key, QJsonValue::fromVariant(prop.value));
922
923 source[Keys::SourceConn] = conn_settings;
924
925 project[Keys::Sources] = QJsonArray{source};
926
927 static const QStringList type_names = {
928 tr("Holding Registers"),
929 tr("Input Registers"),
930 tr("Coils"),
931 tr("Discrete Inputs"),
932 };
933
934 QJsonArray group_array;
935 int group_id = 0;
936 int dataset_index = 1;
937
938 for (const auto& reg_group : m_registerGroups) {
939 DataModel::Group group;
940 group.groupId = group_id;
941 group.widget = QStringLiteral("datagrid");
942
943 const QString type_name = (reg_group.registerType < type_names.count())
944 ? type_names[reg_group.registerType]
945 : tr("Unknown");
946 group.title = QStringLiteral("%1 @ %2").arg(type_name, QString::number(reg_group.startAddress));
947
948 const bool is_reg = (reg_group.registerType <= 1);
949
950 for (quint16 i = 0; i < reg_group.count; ++i) {
951 DataModel::Dataset dataset;
952 dataset.index = dataset_index++;
953 dataset.log = true;
954
955 const quint16 addr = reg_group.startAddress + i;
956
957 if (is_reg) {

Callers

nothing calls this directly

Calls 3

serializeFunction · 0.85
countMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected