return sr_scpi_scan(di->context, options, probe_usbtmc_device);
}
-static void clear_helper(void *priv)
+static void clear_helper(struct dev_context *devc)
{
- struct dev_context *devc;
-
- devc = priv;
-
dlm_scope_state_destroy(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(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)
const struct sr_channel_group *cg)
{
int cg_type = CG_NONE;
- struct dev_context *devc = NULL;
- const struct scope_config *model = NULL;
-
- /* SR_CONF_SCAN_OPTIONS is always valid, regardless of sdi or channel group. */
- if (key == SR_CONF_SCAN_OPTIONS) {
- *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
- dlm_scanopts, ARRAY_SIZE(dlm_scanopts), sizeof(uint32_t));
- return SR_OK;
- }
-
- /* If sdi is NULL, nothing except SR_CONF_DEVICE_OPTIONS can be provided. */
- if (key == SR_CONF_DEVICE_OPTIONS && !sdi) {
- *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
- dlm_drvopts, ARRAY_SIZE(dlm_drvopts), sizeof(uint32_t));
- return SR_OK;
- }
-
- if (!sdi)
- return SR_ERR_ARG;
+ struct dev_context *devc;
+ const struct scope_config *model;
- devc = sdi->priv;
- model = devc->model_config;
+ devc = (sdi) ? sdi->priv : NULL;
+ model = (devc) ? devc->model_config : NULL;
/*
* If cg is NULL, only the SR_CONF_DEVICE_OPTIONS that are not
*/
if (!cg) {
switch (key) {
+ case SR_CONF_SCAN_OPTIONS:
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;
+ return STD_CONFIG_LIST(key, data, sdi, cg, dlm_scanopts, dlm_drvopts, dlm_devopts);
case SR_CONF_TIMEBASE:
*data = build_tuples(&dlm_timebases, ARRAY_SIZE(dlm_timebases));
return SR_OK;