+ if (!sdi)
+ return SR_ERR_ARG;
+
+ devc = sdi->priv;
+ model = devc->model_config;
+
+ /* If cg is NULL, only the SR_CONF_DEVICE_OPTIONS that are not
+ * specific to a probe group must be returned. */
+ if (!cg) {
+ switch (key) {
+ case SR_CONF_DEVICE_OPTIONS:
+ *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
+ dlm_devopts, ARRAY_SIZE(dlm_devopts), sizeof(uint32_t));
+ return SR_OK;
+ case SR_CONF_TIMEBASE:
+ *data = build_tuples(&dlm_timebases, ARRAY_SIZE(dlm_timebases));
+ return SR_OK;
+ case SR_CONF_TRIGGER_SOURCE:
+ if (!model)
+ return SR_ERR_ARG;
+ *data = g_variant_new_strv(*model->trigger_sources,
+ g_strv_length((char **)*model->trigger_sources));
+ return SR_OK;
+ case SR_CONF_TRIGGER_SLOPE:
+ *data = g_variant_new_strv(dlm_trigger_slopes,
+ g_strv_length((char **)dlm_trigger_slopes));
+ return SR_OK;
+ case SR_CONF_NUM_HDIV:
+ *data = g_variant_new_uint32(ARRAY_SIZE(dlm_timebases));
+ return SR_OK;
+ default:
+ return SR_ERR_NA;
+ }
+ }
+
+ if ((cg_type = check_channel_group(devc, cg)) == CG_INVALID)
+ return SR_ERR;
+