"Rohde&Schwarz",
};
-static const uint32_t drvopts[] = {
- SR_CONF_OSCILLOSCOPE,
-};
-
static const uint32_t scanopts[] = {
SR_CONF_CONN,
SR_CONF_SERIALCOMM,
};
+static const uint32_t drvopts[] = {
+ SR_CONF_OSCILLOSCOPE,
+};
+
enum {
CG_INVALID = -1,
CG_NONE,
return sr_scpi_scan(di->context, options, hmo_probe_serial_device);
}
-static void clear_helper(void *priv)
+static void clear_helper(struct dev_context *devc)
{
- struct dev_context *devc;
-
- devc = priv;
-
hmo_scope_state_free(devc->model_state);
-
g_free(devc->analog_groups);
g_free(devc->digital_groups);
-
- g_free(devc);
}
static int dev_clear(const struct sr_dev_driver *di)
{
- return std_dev_clear_with_callback(di, clear_helper);
+ return std_dev_clear_with_callback(di, (std_dev_clear_callback)clear_helper);
}
static int dev_open(struct sr_dev_inst *sdi)
return ret;
}
-static GVariant *build_tuples(const uint64_t (*array)[][2], unsigned int n)
-{
- unsigned int i;
- GVariant *rational[2];
- GVariantBuilder gvb;
-
- g_variant_builder_init(&gvb, G_VARIANT_TYPE_ARRAY);
-
- for (i = 0; i < n; i++) {
- rational[0] = g_variant_new_uint64((*array)[i][0]);
- rational[1] = g_variant_new_uint64((*array)[i][1]);
-
- /* FIXME: Valgrind reports a memory leak here. */
- g_variant_builder_add_value(&gvb, g_variant_new_tuple(rational, 2));
- }
-
- return g_variant_builder_end(&gvb);
-}
-
static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sdi,
const struct sr_channel_group *cg)
{
switch (key) {
case SR_CONF_SCAN_OPTIONS:
- *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
- scanopts, ARRAY_SIZE(scanopts), sizeof(uint32_t));
+ *data = std_gvar_array_u32(scanopts, ARRAY_SIZE(scanopts));
break;
case SR_CONF_DEVICE_OPTIONS:
if (cg_type == CG_NONE) {
if (model)
- *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
- model->devopts, model->num_devopts, sizeof(uint32_t));
+ *data = std_gvar_array_u32((const uint32_t *)model->devopts, model->num_devopts);
else
- *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
- drvopts, ARRAY_SIZE(drvopts), sizeof(uint32_t));
+ *data = std_gvar_array_u32(drvopts, ARRAY_SIZE(drvopts));
} else if (cg_type == CG_ANALOG) {
- *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
- model->analog_devopts, model->num_analog_devopts,
- sizeof(uint32_t));
+ *data = std_gvar_array_u32((const uint32_t *)model->devopts_cg_analog, model->num_devopts_cg_analog);
} else {
- *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
- NULL, 0, sizeof(uint32_t));
+ *data = std_gvar_array_u32(NULL, 0);
}
break;
case SR_CONF_COUPLING:
case SR_CONF_TIMEBASE:
if (!model)
return SR_ERR_ARG;
- *data = build_tuples(model->timebases, model->num_timebases);
+ *data = std_gvar_tuple_array(model->timebases, model->num_timebases);
break;
case SR_CONF_VDIV:
if (cg_type == CG_NONE)
return SR_ERR_CHANNEL_GROUP;
- *data = build_tuples(model->vdivs, model->num_vdivs);
+ *data = std_gvar_tuple_array(model->vdivs, model->num_vdivs);
break;
default:
return SR_ERR_NA;