MCPcopy Index your code
hub / github.com/DreamSourceLab/DSView / gen_config_json

Method gen_config_json

DSView/pv/mainwindow.cpp:682–808  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

680 }
681
682 bool MainWindow::gen_config_json(QJsonObject &sessionVar)
683 {
684 AppConfig &app = AppConfig::Instance();
685
686 GVariant *gvar_opts;
687 GVariant *gvar;
688 gsize num_opts;
689
690 QString title = QApplication::applicationName() + " v" + QApplication::applicationVersion();
691
692 QJsonArray channelVar;
693 sessionVar["Version"] = QJsonValue::fromVariant(SESSION_FORMAT_VERSION);
694 sessionVar["Device"] = QJsonValue::fromVariant(_device_agent->driver_name());
695 sessionVar["DeviceMode"] = QJsonValue::fromVariant(_device_agent->get_work_mode());
696 sessionVar["Language"] = QJsonValue::fromVariant(app.frameOptions.language);
697 sessionVar["Title"] = QJsonValue::fromVariant(title);
698
699 if (_device_agent->is_hardware() && _device_agent->get_work_mode() == LOGIC)
700 {
701 sessionVar["CollectMode"] = _session->get_collect_mode();
702 }
703
704 gvar_opts = _device_agent->get_config_list(NULL, SR_CONF_DEVICE_SESSIONS);
705 if (gvar_opts == NULL)
706 {
707 dsv_warn("Device config list is empty. id:SR_CONF_DEVICE_SESSIONS");
708 /* Driver supports no device instance sessions. */
709 return false;
710 }
711
712 const int *const options = (const int32_t *)g_variant_get_fixed_array(
713 gvar_opts, &num_opts, sizeof(int32_t));
714
715 for (unsigned int i = 0; i < num_opts; i++)
716 {
717 const struct sr_config_info *const info = _device_agent->get_config_info(options[i]);
718 gvar = _device_agent->get_config(info->key);
719 if (gvar != NULL)
720 {
721 if (info->datatype == SR_T_BOOL)
722 sessionVar[info->name] = QJsonValue::fromVariant(g_variant_get_boolean(gvar));
723 else if (info->datatype == SR_T_UINT64)
724 sessionVar[info->name] = QJsonValue::fromVariant(QString::number(g_variant_get_uint64(gvar)));
725 else if (info->datatype == SR_T_UINT8)
726 sessionVar[info->name] = QJsonValue::fromVariant(g_variant_get_byte(gvar));
727 else if (info->datatype == SR_T_INT16)
728 sessionVar[info->name] = QJsonValue::fromVariant(g_variant_get_int16(gvar));
729 else if (info->datatype == SR_T_FLOAT) //save as string format
730 sessionVar[info->name] = QJsonValue::fromVariant(QString::number(g_variant_get_double(gvar)));
731 else if (info->datatype == SR_T_CHAR)
732 sessionVar[info->name] = QJsonValue::fromVariant(g_variant_get_string(gvar, NULL));
733 else if (info->datatype == SR_T_LIST)
734 sessionVar[info->name] = QJsonValue::fromVariant(g_variant_get_int16(gvar));
735 else{
736 dsv_err("Unkown config info type:%d", info->datatype);
737 assert(false);
738 }
739 g_variant_unref(gvar);

Callers

nothing calls this directly

Calls 15

driver_nameMethod · 0.80
get_work_modeMethod · 0.80
is_hardwareMethod · 0.80
get_collect_modeMethod · 0.80
get_config_listMethod · 0.80
get_config_infoMethod · 0.80
get_configMethod · 0.80
get_view_indexMethod · 0.80
get_nameMethod · 0.80
get_colourMethod · 0.80
get_trigMethod · 0.80
signal_typeMethod · 0.80

Tested by

no test coverage detected