| 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); |
nothing calls this directly
no test coverage detected